<?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>145995</bug_id>
          
          <creation_ts>2015-06-15 17:26:00 -0700</creation_ts>
          <short_desc>Function parameters should be parsed in the same parser arena as the function body</short_desc>
          <delta_ts>2015-07-17 11:50:23 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>basile_clement</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1102095</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-06-15 17:26:00 -0700</bug_when>
    <thetext>This will allow destructuring nodes with default values in a function parameter to work.
Also, this will help simplify default function parameter values.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109000</commentid>
    <comment_count>1</comment_count>
      <attachid>256671</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-07-11 18:29:31 -0700</bug_when>
    <thetext>Created attachment 256671
it begins</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109006</commentid>
    <comment_count>2</comment_count>
      <attachid>256675</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-07-11 20:23:12 -0700</bug_when>
    <thetext>Created attachment 256675
patch

More work is done.
I need to make some things clearer and also find all the places we assume SourceCode starts with &quot;{&quot;, and find other assumptions we make about a SourceCode representing
a function body.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109188</commentid>
    <comment_count>3</comment_count>
      <attachid>256716</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-07-13 13:13:57 -0700</bug_when>
    <thetext>Created attachment 256716
patch

getting closer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109335</commentid>
    <comment_count>4</comment_count>
      <attachid>256762</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-07-14 00:03:16 -0700</bug_when>
    <thetext>Created attachment 256762
patch

almost there, just need to do some cleanup work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109529</commentid>
    <comment_count>5</comment_count>
      <attachid>256813</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-07-14 17:21:34 -0700</bug_when>
    <thetext>Created attachment 256813
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109531</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-14 17:24:06 -0700</bug_when>
    <thetext>Attachment 256813 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/FunctionPrototype.cpp:94:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/parser/Parser.cpp:629:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/parser/Parser.cpp:1466:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/parser/Parser.cpp:1468:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 4 in 65 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>1109533</commentid>
    <comment_count>7</comment_count>
      <attachid>256814</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-07-14 17:28:16 -0700</bug_when>
    <thetext>Created attachment 256814
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109534</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-14 17:31:19 -0700</bug_when>
    <thetext>Attachment 256814 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/FunctionPrototype.cpp:94:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/parser/Parser.cpp:629:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/parser/Parser.cpp:1466:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/parser/Parser.cpp:1468:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 4 in 65 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>1109535</commentid>
    <comment_count>9</comment_count>
      <attachid>256815</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-07-14 18:19:55 -0700</bug_when>
    <thetext>Created attachment 256815
patch

fix style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109574</commentid>
    <comment_count>10</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-07-14 23:10:27 -0700</bug_when>
    <thetext>Looks like a win for Octane&apos;s jquery/closure

VMs tested:
&quot;original&quot; at /Volumes/Data/WK/c/OpenSource/WebKitBuild/Release/jsc (r186808)
&quot;parserArena&quot; at /Volumes/Data/WK/a/OpenSource/WebKitBuild/Release/jsc (r186808)

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

                                                         original                parserArena                                    
SunSpider:
   3d-cube                                            4.0566+-0.1041     ?      4.1190+-0.0549        ? might be 1.0154x slower
   3d-morph                                           5.0283+-0.2384            4.9284+-0.1246          might be 1.0203x faster
   3d-raytrace                                        4.9236+-0.1528            4.8785+-0.1876        
   access-binary-trees                                2.0665+-0.2026            1.9825+-0.0652          might be 1.0424x faster
   access-fannkuch                                    4.9886+-0.0823            4.9330+-0.0327          might be 1.0113x faster
   access-nbody                                       2.3308+-0.0945            2.3128+-0.0790        
   access-nsieve                                      3.0926+-0.0659            3.0914+-0.1209        
   bitops-3bit-bits-in-byte                           1.3527+-0.0412            1.3420+-0.0227        
   bitops-bits-in-byte                                3.0561+-0.0586     ?      3.0905+-0.0356        ? might be 1.0112x slower
   bitops-bitwise-and                                 1.9004+-0.0647            1.8739+-0.0310          might be 1.0141x faster
   bitops-nsieve-bits                                 2.7601+-0.0475            2.7473+-0.0262        
   controlflow-recursive                              1.9079+-0.0988            1.8944+-0.1164        
   crypto-aes                                         3.5603+-0.1074     ?      3.6525+-0.1513        ? might be 1.0259x slower
   crypto-md5                                         2.3054+-0.0584     ?      2.4748+-0.1810        ? might be 1.0735x slower
   crypto-sha1                                        2.3412+-0.1412     ?      2.3564+-0.1662        ?
   date-format-tofte                                  6.3396+-0.2528     ?      6.3408+-0.2156        ?
   date-format-xparb                                  4.6555+-0.4075            4.4728+-0.1608          might be 1.0409x faster
   math-cordic                                        2.6022+-0.0583            2.5785+-0.0596        
   math-partial-sums                                  4.2284+-0.0596     ?      4.2563+-0.0805        ?
   math-spectral-norm                                 1.7198+-0.0353            1.6850+-0.0297          might be 1.0206x faster
   regexp-dna                                         6.3488+-0.3446     ?      6.3596+-0.3710        ?
   string-base64                                      4.2674+-0.1844            4.2332+-0.1612        
   string-fasta                                       5.6248+-0.2156     ?      5.7251+-0.1470        ? might be 1.0178x slower
   string-tagcloud                                    7.8296+-0.2894            7.7648+-0.1495        
   string-unpack-code                                18.9322+-0.4571           18.7162+-0.2444          might be 1.0115x faster
   string-validate-input                              4.3131+-0.0942     ?      4.3279+-0.0936        ?

   &lt;arithmetic&gt;                                       4.3282+-0.0281            4.3130+-0.0240          might be 1.0035x faster

                                                         original                parserArena                                    
LongSpider:
   3d-cube                                          748.5720+-4.5781          746.6973+-2.5905        
   3d-morph                                        1427.6650+-3.7510     ?   1433.4964+-6.0359        ?
   3d-raytrace                                      591.9726+-5.8679          590.4996+-5.6967        
   access-binary-trees                              775.5763+-10.8665    ?    818.2841+-100.9616      ? might be 1.0551x slower
   access-fannkuch                                  263.1493+-2.4986     ?    263.3152+-1.6356        ?
   access-nbody                                     488.0519+-5.1511          486.3771+-4.5767        
   access-nsieve                                    351.8096+-7.5674     ?    353.7068+-8.0424        ?
   bitops-3bit-bits-in-byte                          38.8309+-1.0788           38.5149+-0.9129        
   bitops-bits-in-byte                               76.5209+-2.0781     ?     78.8891+-1.5606        ? might be 1.0309x slower
   bitops-nsieve-bits                               393.7701+-4.7512     ?    394.0207+-4.0610        ?
   controlflow-recursive                            411.9420+-20.2079         409.2651+-7.7972        
   crypto-aes                                       555.0009+-8.5518     ?    556.1525+-6.9283        ?
   crypto-md5                                       445.7911+-3.2292          445.1364+-2.4506        
   crypto-sha1                                      603.7799+-3.4355     ?    604.8678+-6.0550        ?
   date-format-tofte                                485.6542+-12.9571         483.1949+-14.1721       
   date-format-xparb                                639.4885+-12.7862    ?    651.5853+-11.2405       ? might be 1.0189x slower
   hash-map                                         145.2804+-1.2656     ?    146.1568+-2.1473        ?
   math-cordic                                      477.8722+-15.5550         476.3781+-20.2708       
   math-partial-sums                                394.2970+-4.0859          391.0750+-2.0822        
   math-spectral-norm                               524.6047+-1.9298     ?    526.6829+-3.2963        ?
   string-base64                                    329.3938+-3.0386     ?    332.9461+-5.5650        ? might be 1.0108x slower
   string-fasta                                     343.8171+-3.0897          343.1503+-3.9150        
   string-tagcloud                                  171.6422+-1.0676     ?    172.7533+-2.3961        ?

   &lt;geometric&gt;                                      372.5883+-1.1834     ?    374.0938+-2.0383        ? might be 1.0040x slower

                                                         original                parserArena                                    
V8Spider:
   crypto                                            47.0468+-1.1781     ?     47.5657+-0.7732        ? might be 1.0110x slower
   deltablue                                         70.3542+-2.0757     ?     72.2536+-2.1230        ? might be 1.0270x slower
   earley-boyer                                      37.4238+-0.8364           37.2653+-0.7720        
   raytrace                                          27.9650+-0.9724     ?     27.9977+-0.8601        ?
   regexp                                            59.1407+-1.5173           58.4058+-0.2362          might be 1.0126x faster
   richards                                          64.1301+-1.7435     ?     65.9872+-1.6044        ? might be 1.0290x slower
   splay                                             32.5140+-1.1838           32.3408+-1.0002        

   &lt;geometric&gt;                                       45.8395+-0.5232     ?     46.1449+-0.3697        ? might be 1.0067x slower

                                                         original                parserArena                                    
Octane:
   encrypt                                           0.19537+-0.00440    ?     0.19578+-0.00098       ?
   decrypt                                           3.22690+-0.04501          3.21874+-0.04187       
   deltablue                                x2       0.14691+-0.00117    ?     0.14820+-0.00266       ?
   earley                                            0.26578+-0.00194    ?     0.26620+-0.00167       ?
   boyer                                             3.96423+-0.02669          3.94717+-0.02673       
   navier-stokes                            x2       4.72862+-0.01753    ?     4.75172+-0.02210       ?
   raytrace                                 x2       0.94449+-0.02937    ?     0.98266+-0.01986       ? might be 1.0404x slower
   richards                                 x2       0.09789+-0.00065          0.09729+-0.00103       
   splay                                    x2       0.32604+-0.00277    ?     0.32969+-0.00200       ? might be 1.0112x slower
   regexp                                   x2      24.05858+-0.34172         23.89150+-0.33594       
   pdfjs                                    x2      35.62041+-0.62453    ?    35.79472+-0.50881       ?
   mandreel                                 x2      41.95899+-0.24553    ?    46.19874+-8.60987       ? might be 1.1010x slower
   gbemu                                    x2      33.63284+-1.34343         32.44587+-0.39006         might be 1.0366x faster
   closure                                           0.51189+-0.00361    ^     0.50253+-0.00293       ^ definitely 1.0186x faster
   jquery                                            6.59774+-0.03488    ^     6.52435+-0.02778       ^ definitely 1.0112x faster
   box2d                                    x2       9.47209+-0.08205          9.43057+-0.04648       
   zlib                                     x2     354.21082+-10.90381   ?   362.08746+-4.00420       ? might be 1.0222x slower
   typescript                               x2     619.52705+-10.66928       617.57588+-8.79139       

   &lt;geometric&gt;                                       5.32512+-0.02146    ?     5.35934+-0.04898       ? might be 1.0064x slower

                                                         original                parserArena                                    
Kraken:
   ai-astar                                          212.457+-3.624      ?     216.583+-6.814         ? might be 1.0194x slower
   audio-beat-detection                               70.231+-1.146             69.713+-0.862         
   audio-dft                                         104.248+-2.320      ?     105.430+-2.173         ? might be 1.0113x slower
   audio-fft                                          59.877+-0.091      ?      60.049+-0.184         ?
   audio-oscillator                                   58.341+-0.200      ?      58.987+-0.947         ? might be 1.0111x slower
   imaging-darkroom                                   88.540+-0.914             88.394+-1.374         
   imaging-desaturate                                 52.388+-2.224             51.487+-3.138           might be 1.0175x faster
   imaging-gaussian-blur                              80.839+-1.584             80.613+-1.455         
   json-parse-financial                               36.972+-2.081             35.193+-0.343           might be 1.0505x faster
   json-stringify-tinderbox                           26.183+-0.402             25.710+-0.475           might be 1.0184x faster
   stanford-crypto-aes                                50.193+-0.361             49.898+-0.233         
   stanford-crypto-ccm                                37.195+-1.116             36.910+-1.365         
   stanford-crypto-pbkdf2                             91.993+-4.449             91.388+-1.830         
   stanford-crypto-sha256-iterative                   34.846+-0.609      ?      34.901+-0.321         ?

   &lt;arithmetic&gt;                                       71.736+-0.542      ?      71.804+-0.530         ? might be 1.0009x slower

                                                         original                parserArena                                    
JSRegress:
   abc-forward-loop-equal                            28.2504+-0.7628     ?     28.5449+-1.1769        ? might be 1.0104x slower
   abc-postfix-backward-loop                         27.9740+-0.5299     ?     28.2337+-1.0800        ?
   abc-simple-backward-loop                          29.3584+-2.9488           27.8823+-0.8474          might be 1.0529x faster
   abc-simple-forward-loop                           27.9806+-0.9275     ?     28.0172+-0.5514        ?
   abc-skippy-loop                                   20.7948+-0.8707     ?     21.1445+-1.2724        ? might be 1.0168x slower
   abs-boolean                                        2.2619+-0.0490     ?      2.2952+-0.0525        ? might be 1.0147x slower
   adapt-to-double-divide                            15.3046+-0.3206     !     16.2585+-0.6312        ! definitely 1.0623x slower
   aliased-arguments-getbyval                         1.1120+-0.0545     ?      1.1469+-0.0865        ? might be 1.0313x slower
   allocate-big-object                                2.3657+-0.1036     ?      2.5035+-0.1194        ? might be 1.0582x slower
   arguments-named-and-reflective                    10.4029+-0.2268     ?     10.6197+-0.4598        ? might be 1.0208x slower
   arguments-out-of-bounds                            9.3481+-0.3061     ?      9.5527+-0.3002        ? might be 1.0219x slower
   arguments-strict-mode                              9.0991+-0.4123            9.0334+-0.2580        
   arguments                                          8.0334+-0.3045            8.0054+-0.1385        
   arity-mismatch-inlining                            0.7460+-0.0097            0.7278+-0.0246          might be 1.0250x faster
   array-access-polymorphic-structure                 5.4756+-0.1210     ?      5.7168+-0.2938        ? might be 1.0440x slower
   array-nonarray-polymorhpic-access                 23.4629+-0.4444           23.3675+-0.4516        
   array-prototype-every                             76.0206+-1.9847           72.9562+-1.8086          might be 1.0420x faster
   array-prototype-forEach                           73.4281+-1.4709     ^     70.0372+-0.2095        ^ definitely 1.0484x faster
   array-prototype-map                               78.5586+-0.7656           78.3777+-1.5337        
   array-prototype-reduce                            67.0933+-0.2143           67.0624+-0.5810        
   array-prototype-reduceRight                       68.6675+-1.5384           67.6617+-1.0059          might be 1.0149x faster
   array-prototype-some                              75.3539+-1.6476     ^     72.3977+-0.7687        ^ definitely 1.0408x faster
   array-splice-contiguous                           19.5671+-0.4430           19.3347+-0.3994          might be 1.0120x faster
   array-with-double-add                              3.2628+-0.0993            3.1261+-0.0508          might be 1.0437x faster
   array-with-double-increment                        2.9321+-0.1311            2.9036+-0.1724        
   array-with-double-mul-add                          3.9039+-0.0304     ?      3.9382+-0.1502        ?
   array-with-double-sum                              3.0231+-0.0757     ?      3.0415+-0.1221        ?
   array-with-int32-add-sub                           5.3918+-0.1423            5.3627+-0.0861        
   array-with-int32-or-double-sum                     3.1855+-0.1830            3.0322+-0.0579          might be 1.0506x faster
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     25.6499+-1.0183           25.6038+-1.1116        
   ArrayBuffer-DataView-alloc-long-lived             11.7049+-0.6586           11.6969+-0.2959        
   ArrayBuffer-Int32Array-byteOffset                  3.4437+-0.0941            3.4079+-0.1059          might be 1.0105x faster
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     25.1471+-0.2456     ?     25.2796+-0.1722        ?
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     18.9575+-0.5122     ?     19.7909+-1.3674        ? might be 1.0440x slower
   ArrayBuffer-Int8Array-alloc-long-lived            11.5741+-0.9685           10.9811+-0.4140          might be 1.0540x faster
   ArrayBuffer-Int8Array-alloc                        9.3788+-0.5428            9.2822+-0.3494          might be 1.0104x faster
   asmjs_bool_bug                                    15.3720+-0.1736     ?     15.3957+-0.2268        ?
   assign-custom-setter-polymorphic                   2.4228+-0.1134     ?      2.4976+-0.1095        ? might be 1.0309x slower
   assign-custom-setter                               3.1357+-0.0880     ?      3.2191+-0.0891        ? might be 1.0266x slower
   basic-set                                          7.3530+-0.2171     ?      7.6046+-0.2961        ? might be 1.0342x slower
   big-int-mul                                        3.4695+-0.0369     ?      3.5238+-0.0687        ? might be 1.0157x slower
   boolean-test                                       2.7039+-0.0470            2.6869+-0.0499        
   branch-fold                                        3.4358+-0.0818     ?      3.4417+-0.1071        ?
   branch-on-string-as-boolean                       15.3260+-0.3956     ?     15.8961+-0.6797        ? might be 1.0372x slower
   by-val-generic                                     6.6744+-0.1622            6.6075+-0.1058          might be 1.0101x faster
   call-spread-apply                                 25.2201+-0.6602           25.0700+-0.4996        
   call-spread-call                                  20.6206+-0.9027     ?     20.7403+-0.3753        ?
   captured-assignments                               0.3419+-0.0090     ?      0.3422+-0.0165        ?
   cast-int-to-double                                 4.7456+-0.0961     ?      4.7996+-0.1476        ? might be 1.0114x slower
   cell-argument                                      6.0943+-0.1808            5.9579+-0.1928          might be 1.0229x faster
   cfg-simplify                                       2.5928+-0.0859     ?      2.6271+-0.0796        ? might be 1.0132x slower
   chain-getter-access                                7.6756+-0.2153     ?      7.7881+-0.2325        ? might be 1.0147x slower
   cmpeq-obj-to-obj-other                            10.8312+-0.8802     ?     11.3740+-0.5417        ? might be 1.0501x slower
   constant-test                                      4.5040+-0.0526     ?      4.6375+-0.2298        ? might be 1.0296x slower
   create-lots-of-functions                           9.0361+-0.3184            8.9270+-0.2931          might be 1.0122x faster
   cse-new-array-buffer                               2.2055+-0.0728            2.1454+-0.0870          might be 1.0280x faster
   cse-new-array                                      2.2425+-0.1361            2.2395+-0.1289        
   DataView-custom-properties                        29.7905+-0.8924           29.7473+-0.7282        
   delay-tear-off-arguments-strictmode               11.2224+-0.1464     !     12.1765+-0.3552        ! definitely 1.0850x slower
   deltablue-varargs                                143.7879+-2.7115     ?    144.8324+-3.5357        ?
   destructuring-arguments                          156.0806+-3.7434     ?    156.5025+-0.8516        ?
   destructuring-parameters-overridden-by-function   
                                                      0.4269+-0.0203     ^      0.3919+-0.0063        ^ definitely 1.0891x faster
   destructuring-swap                                 4.4591+-0.1276            4.4462+-0.0566        
   direct-arguments-getbyval                          1.1023+-0.0581            1.0809+-0.0351          might be 1.0198x faster
   div-boolean-double                                 4.9172+-0.0844     ?      5.0284+-0.0847        ? might be 1.0226x slower
   div-boolean                                        7.7483+-0.0851     ?      7.8088+-0.1433        ?
   double-get-by-val-out-of-bounds                    4.0844+-0.1237     ?      4.0984+-0.1554        ?
   double-pollution-getbyval                          8.2120+-0.0729     ?      8.2151+-0.1713        ?
   double-pollution-putbyoffset                       3.6035+-0.1011            3.5994+-0.1173        
   double-real-use                                   24.8062+-2.3664     ?     25.5277+-1.4764        ? might be 1.0291x slower
   double-to-int32-typed-array-no-inline              1.9218+-0.0205     ?      1.9282+-0.0585        ?
   double-to-int32-typed-array                        1.6265+-0.0386     ?      1.6864+-0.0913        ? might be 1.0368x slower
   double-to-uint32-typed-array-no-inline             2.0136+-0.1051            1.9543+-0.0294          might be 1.0303x faster
   double-to-uint32-typed-array                       1.6867+-0.0421     ?      1.8144+-0.1234        ? might be 1.0757x slower
   elidable-new-object-dag                           31.9121+-0.2561     ?     32.1786+-0.7192        ?
   elidable-new-object-roflcopter                    31.3835+-0.2917     ?     32.2628+-0.8835        ? might be 1.0280x slower
   elidable-new-object-then-call                     29.7952+-0.3773     ?     30.0837+-0.8608        ?
   elidable-new-object-tree                          34.1771+-0.2393           34.0107+-0.2609        
   empty-string-plus-int                              4.4986+-0.1401     ?      4.5334+-0.1037        ?
   emscripten-cube2hash                              25.4675+-0.9270           25.3688+-0.8807        
   exit-length-on-plain-object                       12.0290+-0.6278           11.5928+-0.3761          might be 1.0376x faster
   external-arguments-getbyval                        1.1166+-0.0571     ?      1.1197+-0.0865        ?
   external-arguments-putbyval                        2.0276+-0.1033            2.0270+-0.0509        
   fixed-typed-array-storage-var-index                1.0972+-0.0451            1.0894+-0.0107        
   fixed-typed-array-storage                          0.7963+-0.0459            0.7840+-0.0336          might be 1.0157x faster
   Float32Array-matrix-mult                           3.6462+-0.0798            3.5752+-0.0384          might be 1.0199x faster
   Float32Array-to-Float64Array-set                  44.4099+-0.3462     ?     44.8114+-1.0309        ?
   Float64Array-alloc-long-lived                     52.7114+-1.5950           51.9784+-0.2419          might be 1.0141x faster
   Float64Array-to-Int16Array-set                    52.2746+-0.9648     ?     52.8050+-1.3095        ? might be 1.0101x slower
   fold-double-to-int                                19.4076+-0.4691     ?     19.9835+-1.1955        ? might be 1.0297x slower
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                      9.5385+-0.2561     ?      9.5887+-0.2803        ?
   fold-get-by-id-to-multi-get-by-offset              7.7135+-0.2279     ?      7.8618+-0.2339        ? might be 1.0192x slower
   fold-multi-get-by-offset-to-get-by-offset   
                                                      7.6499+-0.5975            7.4430+-0.3240          might be 1.0278x faster
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                      6.6320+-0.3491     ?      7.1871+-0.6617        ? might be 1.0837x slower
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                      7.0200+-0.6528            6.9383+-0.2388          might be 1.0118x faster
   fold-multi-put-by-offset-to-put-by-offset   
                                                      4.0224+-0.3820     ?      4.5000+-0.6853        ? might be 1.1188x slower
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                      7.7408+-0.1751     ?      7.9979+-0.3906        ? might be 1.0332x slower
   fold-put-by-id-to-multi-put-by-offset              7.9412+-0.2382     ?      8.2751+-0.2299        ? might be 1.0420x slower
   fold-put-structure                                 4.2796+-0.3859     ?      4.7431+-0.3987        ? might be 1.1083x slower
   for-of-iterate-array-entries                      11.1050+-0.1975           10.8292+-0.1452          might be 1.0255x faster
   for-of-iterate-array-keys                          3.2159+-0.0619     ?      3.2491+-0.1036        ? might be 1.0103x slower
   for-of-iterate-array-values                        3.2989+-0.1438            3.2061+-0.2023          might be 1.0289x faster
   fround                                            18.9278+-1.1859     ^     17.4016+-0.3201        ^ definitely 1.0877x faster
   ftl-library-inlining-dataview                     53.7096+-0.7184     ?     54.8235+-1.4205        ? might be 1.0207x slower
   ftl-library-inlining                             104.0228+-1.1870          102.9541+-0.3944          might be 1.0104x faster
   function-dot-apply                                 1.8850+-0.0759     ?      1.8881+-0.1569        ?
   function-test                                      2.5228+-0.0458            2.5142+-0.0778        
   function-with-eval                                87.4093+-1.6226           85.1866+-1.7126          might be 1.0261x faster
   gcse-poly-get-less-obvious                        13.5730+-0.1742     ?     13.7465+-0.5948        ? might be 1.0128x slower
   gcse-poly-get                                     13.7531+-0.3727           13.5186+-0.4450          might be 1.0173x faster
   gcse                                               3.6690+-0.1597            3.6675+-0.1003        
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      2.4629+-0.0643            2.4396+-0.0491        
   get-by-id-bimorphic-check-structure-elimination   
                                                      5.3833+-0.0577     ?      5.4314+-0.1505        ?
   get-by-id-chain-from-try-block                     6.3027+-0.3266            6.0492+-0.1997          might be 1.0419x faster
   get-by-id-check-structure-elimination              4.1562+-0.0722            4.1379+-0.0553        
   get-by-id-proto-or-self                           13.9608+-0.8253           13.2905+-0.2100          might be 1.0504x faster
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      2.6948+-0.0346            2.6828+-0.0215        
   get-by-id-self-or-proto                           13.9100+-0.6750     ?     14.0182+-0.7036        ?
   get-by-val-out-of-bounds                           3.8725+-0.1457            3.7717+-0.0649          might be 1.0267x faster
   get_callee_monomorphic                             2.3720+-0.2284            2.2519+-0.1628          might be 1.0533x faster
   get_callee_polymorphic                             3.9401+-0.2725            3.7106+-0.0572          might be 1.0619x faster
   getter-no-activation                               4.5501+-0.0637            4.5364+-0.0950        
   getter-prototype                                   9.3271+-0.2278            9.0378+-0.1219          might be 1.0320x faster
   getter-richards                                  106.0860+-1.9237          104.2881+-4.4519          might be 1.0172x faster
   getter                                             5.1779+-0.2837            5.0543+-0.1556          might be 1.0245x faster
   global-var-const-infer-fire-from-opt               0.8246+-0.0962            0.8125+-0.0842          might be 1.0149x faster
   global-var-const-infer                             0.6722+-0.0391     ?      0.6812+-0.0457        ? might be 1.0133x slower
   HashMap-put-get-iterate-keys                      24.9050+-0.9865           24.4224+-1.3898          might be 1.0198x faster
   HashMap-put-get-iterate                           24.6137+-1.2691           24.1630+-0.8201          might be 1.0187x faster
   HashMap-string-put-get-iterate                    22.7581+-0.4710     ?     23.3426+-0.7567        ? might be 1.0257x slower
   hoist-make-rope                                    7.6134+-0.3354            7.4577+-0.3370          might be 1.0209x faster
   hoist-poly-check-structure-effectful-loop   
                                                      3.9302+-0.1042            3.9200+-0.0510        
   hoist-poly-check-structure                         3.1684+-0.0906            3.0981+-0.0506          might be 1.0227x faster
   imul-double-only                                   6.8110+-0.2410            6.6515+-0.1164          might be 1.0240x faster
   imul-int-only                                      7.8208+-0.3828            7.6623+-0.3378          might be 1.0207x faster
   imul-mixed                                         6.3596+-0.3020            6.2808+-0.1662          might be 1.0126x faster
   in-four-cases                                     16.1493+-0.1529     ?     16.4708+-0.4466        ? might be 1.0199x slower
   in-one-case-false                                  8.8856+-0.2229     ?      8.9788+-0.4127        ? might be 1.0105x slower
   in-one-case-true                                   9.1656+-0.3083            8.9155+-0.1388          might be 1.0281x faster
   in-two-cases                                       9.2873+-0.1856            9.2504+-0.2071        
   indexed-properties-in-objects                      2.7336+-0.0647            2.7183+-0.0704        
   infer-closure-const-then-mov-no-inline             2.9819+-0.0537     ?      3.0334+-0.1165        ? might be 1.0173x slower
   infer-closure-const-then-mov                      16.1705+-0.3592     ?     16.3406+-0.3710        ? might be 1.0105x slower
   infer-closure-const-then-put-to-scope-no-inline   
                                                     10.9036+-0.1894     ?     11.1868+-0.6000        ? might be 1.0260x slower
   infer-closure-const-then-put-to-scope             20.6441+-0.6037     ?     21.2551+-1.5158        ? might be 1.0296x slower
   infer-closure-const-then-reenter-no-inline   
                                                     45.4363+-1.4481           44.6562+-0.1823          might be 1.0175x faster
   infer-closure-const-then-reenter                  21.7841+-1.3167           21.4429+-0.9043          might be 1.0159x faster
   infer-constant-global-property                     3.1558+-0.0280            3.1511+-0.0289        
   infer-constant-property                            2.4310+-0.0317     ?      2.4576+-0.0313        ? might be 1.0109x slower
   infer-one-time-closure-ten-vars                    8.0728+-0.3249            7.9593+-0.0902          might be 1.0143x faster
   infer-one-time-closure-two-vars                    7.7070+-0.3659     ?      7.8138+-0.3457        ? might be 1.0139x slower
   infer-one-time-closure                             7.5615+-0.2326            7.4978+-0.1354        
   infer-one-time-deep-closure                       12.3926+-0.6456     ?     12.5406+-0.7255        ? might be 1.0119x slower
   inline-arguments-access                            3.4753+-0.0879     ?      3.5667+-0.2174        ? might be 1.0263x slower
   inline-arguments-aliased-access                    3.5586+-0.1470     ?      3.5924+-0.1049        ?
   inline-arguments-local-escape                      3.5157+-0.1246            3.4753+-0.1410          might be 1.0116x faster
   inline-get-scoped-var                              4.3585+-0.1286     ?      4.4393+-0.1392        ? might be 1.0185x slower
   inlined-put-by-id-transition                       9.9165+-0.6071     ?     10.2650+-0.6724        ? might be 1.0351x slower
   int-or-other-abs-then-get-by-val                   4.4766+-0.0592     ?      4.6467+-0.1928        ? might be 1.0380x slower
   int-or-other-abs-zero-then-get-by-val             15.5130+-0.4482     ?     15.9235+-1.0637        ? might be 1.0265x slower
   int-or-other-add-then-get-by-val                   3.8248+-0.1295            3.8165+-0.1575        
   int-or-other-add                                   4.6427+-0.1177            4.6247+-0.0898        
   int-or-other-div-then-get-by-val                   3.4355+-0.0380     ?      3.5041+-0.0966        ? might be 1.0200x slower
   int-or-other-max-then-get-by-val                   3.7200+-0.1215            3.6776+-0.0677          might be 1.0115x faster
   int-or-other-min-then-get-by-val                   3.6519+-0.0417     ?      3.7865+-0.1115        ? might be 1.0369x slower
   int-or-other-mod-then-get-by-val                   3.2424+-0.0628     ?      3.2990+-0.0930        ? might be 1.0174x slower
   int-or-other-mul-then-get-by-val                   3.3764+-0.0644     ?      3.4224+-0.0609        ? might be 1.0136x slower
   int-or-other-neg-then-get-by-val                   4.1869+-0.1109     ?      4.2315+-0.1018        ? might be 1.0106x slower
   int-or-other-neg-zero-then-get-by-val             16.0900+-1.1669           15.4801+-0.3736          might be 1.0394x faster
   int-or-other-sub-then-get-by-val                   3.7776+-0.0912     ?      3.7852+-0.0889        ?
   int-or-other-sub                                   3.2137+-0.0943            3.1792+-0.1135          might be 1.0109x faster
   int-overflow-local                                 3.9905+-0.1134     ?      4.0494+-0.1378        ? might be 1.0148x slower
   Int16Array-alloc-long-lived                       38.8562+-0.4175     ?     39.4758+-0.5136        ? might be 1.0159x slower
   Int16Array-bubble-sort-with-byteLength            12.6253+-0.6598           12.5402+-0.1760        
   Int16Array-bubble-sort                            13.1909+-0.4563     ?     13.3396+-0.1541        ? might be 1.0113x slower
   Int16Array-load-int-mul                            1.3390+-0.0739            1.2978+-0.0261          might be 1.0317x faster
   Int16Array-to-Int32Array-set                      44.0984+-1.2963     ?     44.3643+-1.3508        ?
   Int32Array-alloc-large                            11.6330+-0.4335     ?     11.6844+-0.2912        ?
   Int32Array-alloc-long-lived                       43.0925+-0.2252     ?     43.1112+-0.1656        ?
   Int32Array-alloc                                   2.8386+-0.1729            2.7534+-0.1867          might be 1.0310x faster
   Int32Array-Int8Array-view-alloc                    5.8328+-0.3343            5.6897+-0.0508          might be 1.0251x faster
   int52-spill                                        4.1516+-0.0706     ?      4.2850+-0.1654        ? might be 1.0321x slower
   Int8Array-alloc-long-lived                        35.1940+-0.8592     ?     35.4916+-0.9425        ?
   Int8Array-load-with-byteLength                     3.1806+-0.0747            3.1523+-0.1018        
   Int8Array-load                                     3.2236+-0.0729            3.2167+-0.0836        
   integer-divide                                     9.6103+-0.1478            9.5874+-0.1070        
   integer-modulo                                     1.6004+-0.0592            1.5314+-0.0378          might be 1.0451x faster
   is-boolean-fold-tricky                             3.5363+-0.0723            3.5049+-0.0422        
   is-boolean-fold                                    2.4418+-0.0290     ?      2.4803+-0.0985        ? might be 1.0158x slower
   is-function-fold-tricky-internal-function   
                                                      9.4880+-0.3123            9.4101+-0.2251        
   is-function-fold-tricky                            3.8958+-0.0634            3.8523+-0.0672          might be 1.0113x faster
   is-function-fold                                   2.5059+-0.0522            2.5005+-0.0557        
   is-number-fold-tricky                              3.8673+-0.1170            3.8113+-0.1069          might be 1.0147x faster
   is-number-fold                                     2.4636+-0.0486     ?      2.4709+-0.0715        ?
   is-object-or-null-fold-functions                   2.4478+-0.0158     ?      2.4840+-0.0416        ? might be 1.0148x slower
   is-object-or-null-fold-less-tricky                 3.9550+-0.1326            3.9001+-0.1194          might be 1.0141x faster
   is-object-or-null-fold-tricky                      4.9478+-0.1928            4.8405+-0.0772          might be 1.0222x faster
   is-object-or-null-fold                             2.4995+-0.0494     ?      2.5102+-0.0716        ?
   is-object-or-null-trickier-function                3.9152+-0.1112            3.8962+-0.0825        
   is-object-or-null-trickier-internal-function   
                                                      9.7822+-0.1215            9.7771+-0.1813        
   is-object-or-null-tricky-function                  3.8814+-0.0603     ?      3.9297+-0.0905        ? might be 1.0124x slower
   is-object-or-null-tricky-internal-function   
                                                      7.2475+-0.0891     ?      7.2634+-0.0711        ?
   is-string-fold-tricky                              3.8490+-0.0953            3.7628+-0.0781          might be 1.0229x faster
   is-string-fold                                     2.4457+-0.0463            2.4338+-0.0361        
   is-undefined-fold-tricky                           3.1038+-0.0496     ?      3.1040+-0.0731        ?
   is-undefined-fold                                  2.4679+-0.0390     ?      2.5038+-0.1093        ? might be 1.0146x slower
   large-int-captured                                 3.9005+-0.4411            3.7467+-0.1541          might be 1.0411x faster
   large-int-neg                                     14.0356+-1.0626           13.5870+-0.6084          might be 1.0330x faster
   large-int                                         12.8647+-0.3981     ?     13.2704+-0.5586        ? might be 1.0315x slower
   load-varargs-elimination                          21.0016+-1.3447           20.9260+-1.4064        
   logical-not-weird-types                            2.7782+-0.1234            2.7679+-0.1667        
   logical-not                                        3.9521+-0.1183     ?      4.0017+-0.0835        ? might be 1.0125x slower
   lots-of-fields                                     9.1310+-0.2798     ?      9.3500+-0.6451        ? might be 1.0240x slower
   make-indexed-storage                               2.7593+-0.0832     ?      2.8587+-0.1489        ? might be 1.0360x slower
   make-rope-cse                                      3.5595+-0.2175            3.4999+-0.1405          might be 1.0170x faster
   marsaglia-larger-ints                             31.0507+-0.4912           30.7564+-0.5214        
   marsaglia-osr-entry                               20.4985+-0.5801           20.2469+-0.7824          might be 1.0124x faster
   math-with-out-of-bounds-array-values              21.3819+-1.0235           20.9876+-0.6219          might be 1.0188x faster
   max-boolean                                        2.7181+-0.4780            2.5003+-0.0243          might be 1.0871x faster
   method-on-number                                  15.4664+-0.5795           15.1864+-0.3510          might be 1.0184x faster
   min-boolean                                        2.4875+-0.0536            2.4522+-0.0786          might be 1.0144x faster
   minus-boolean-double                               2.8423+-0.0241     ?      2.8876+-0.0513        ? might be 1.0159x slower
   minus-boolean                                      2.1365+-0.0298     ?      2.1373+-0.0255        ?
   misc-strict-eq                                    32.0874+-4.9902           30.1268+-1.3471          might be 1.0651x faster
   mod-boolean-double                                10.7597+-0.4058     ?     11.0651+-1.0016        ? might be 1.0284x slower
   mod-boolean                                        7.8020+-0.0269     ?      7.9874+-0.2923        ? might be 1.0238x slower
   mul-boolean-double                                 3.3384+-0.0342     ?      3.4144+-0.1110        ? might be 1.0228x slower
   mul-boolean                                        2.6726+-0.1321            2.6609+-0.0950        
   neg-boolean                                        2.9368+-0.1088            2.8659+-0.0498          might be 1.0247x faster
   negative-zero-divide                               0.2923+-0.0088     ?      0.2943+-0.0110        ?
   negative-zero-modulo                               0.2805+-0.0065     ?      0.2868+-0.0127        ? might be 1.0224x slower
   negative-zero-negate                               0.2654+-0.0049     ?      0.2860+-0.0213        ? might be 1.0776x slower
   nested-function-parsing                           32.0344+-0.5384           31.7899+-0.2100        
   new-array-buffer-dead                             81.8406+-0.4507           81.7421+-0.4154        
   new-array-buffer-push                              5.7042+-0.2596     ?      5.7751+-0.3738        ? might be 1.0124x slower
   new-array-dead                                    13.8606+-0.7376           13.5938+-0.4362          might be 1.0196x faster
   new-array-push                                     3.2369+-0.1287     ?      3.3186+-0.1153        ? might be 1.0252x slower
   no-inline-constructor                             29.4399+-0.4838     ?     29.4824+-0.1999        ?
   number-test                                        2.6629+-0.0435            2.6480+-0.0560        
   object-closure-call                                4.6566+-0.1262            4.5739+-0.0595          might be 1.0181x faster
   object-test                                        2.6268+-0.1858            2.4430+-0.0322          might be 1.0752x faster
   obvious-sink-pathology-taken                      96.5558+-2.0696           95.7297+-0.8182        
   obvious-sink-pathology                            91.4477+-0.8966           91.2404+-0.5022        
   obviously-elidable-new-object                     27.0715+-0.7062     ?     28.0129+-1.8852        ? might be 1.0348x slower
   plus-boolean-arith                                 2.2553+-0.1132            2.1962+-0.0161          might be 1.0269x faster
   plus-boolean-double                                2.8784+-0.0546     ?      2.9033+-0.0418        ?
   plus-boolean                                       2.4026+-0.0334            2.3808+-0.0495        
   poly-chain-access-different-prototypes-simple   
                                                      2.5393+-0.0310            2.5283+-0.0383        
   poly-chain-access-different-prototypes             2.3354+-0.0318     ?      2.3648+-0.0493        ? might be 1.0126x slower
   poly-chain-access-simpler                          2.5293+-0.0527            2.5236+-0.0537        
   poly-chain-access                                  2.3475+-0.1003     ?      2.3835+-0.0888        ? might be 1.0153x slower
   poly-stricteq                                     48.0337+-0.6912           47.9050+-0.3827        
   polymorphic-array-call                             1.1768+-0.0594     ?      1.2326+-0.1089        ? might be 1.0474x slower
   polymorphic-get-by-id                              2.6318+-0.0469     ?      2.7004+-0.1964        ? might be 1.0261x slower
   polymorphic-put-by-id                             23.7823+-0.5992     ?     25.2384+-1.5058        ? might be 1.0612x slower
   polymorphic-structure                             12.4732+-0.1975     ?     12.5477+-0.1568        ?
   polyvariant-monomorphic-get-by-id                  6.5062+-0.6804            6.4700+-0.5994        
   proto-getter-access                                7.6879+-0.1762            7.5668+-0.1022          might be 1.0160x faster
   put-by-id-replace-and-transition                   7.3965+-0.2579     ?      7.6620+-0.6962        ? might be 1.0359x slower
   put-by-id-slightly-polymorphic                     2.4477+-0.0266            2.4373+-0.0564        
   put-by-id                                          9.2785+-0.2808            9.0425+-0.1701          might be 1.0261x faster
   put-by-val-direct                                  0.2881+-0.0165     ?      0.2958+-0.0146        ? might be 1.0269x slower
   put-by-val-large-index-blank-indexing-type   
                                                      5.0684+-0.2012            4.8580+-0.1932          might be 1.0433x faster
   put-by-val-machine-int                             2.3437+-0.0842     ?      2.3620+-0.1021        ?
   rare-osr-exit-on-local                            13.8973+-0.2263           13.8562+-0.1470        
   register-pressure-from-osr                        15.5884+-0.4809           15.4825+-0.3356        
   repeat-multi-get-by-offset                        20.8234+-0.3612           20.5940+-0.5045          might be 1.0111x faster
   setter-prototype                                   6.9636+-0.2377     ?      6.9648+-0.1512        ?
   setter                                             5.3108+-0.2341            5.2591+-0.2412        
   simple-activation-demo                            23.1988+-0.8628     ?     23.7177+-1.0096        ? might be 1.0224x slower
   simple-getter-access                               9.8091+-0.1530     ?      9.8374+-0.2227        ?
   simple-poly-call-nested                            8.6343+-0.3000            8.2127+-0.2750          might be 1.0513x faster
   simple-poly-call                                   1.1569+-0.0298            1.1438+-0.0399          might be 1.0114x faster
   sin-boolean                                       17.0823+-0.7675     ?     17.5911+-0.7439        ? might be 1.0298x slower
   singleton-scope                                   52.8921+-1.3741           52.0327+-0.2441          might be 1.0165x faster
   sink-function                                      8.9333+-0.2722     ?      9.1427+-0.3963        ? might be 1.0234x slower
   sink-huge-activation                              16.1269+-1.0241           15.5290+-0.3713          might be 1.0385x faster
   sinkable-new-object-dag                           52.8076+-0.6964           52.7316+-0.8070        
   sinkable-new-object-taken                         39.5755+-0.2863     ?     40.1165+-0.4844        ? might be 1.0137x slower
   sinkable-new-object                               27.8725+-0.3973     ?     28.0398+-0.4516        ?
   slow-array-profile-convergence                     2.3346+-0.0861     ?      2.3367+-0.0917        ?
   slow-convergence                                   2.3163+-0.1642            2.2709+-0.0712          might be 1.0200x faster
   slow-ternaries                                    16.6730+-0.4791     ?     16.7771+-0.7267        ?
   sorting-benchmark                                 16.3418+-0.5591           16.0468+-0.3669          might be 1.0184x faster
   sparse-conditional                                 1.0290+-0.0226            1.0165+-0.0091          might be 1.0123x faster
   splice-to-remove                                  12.3030+-0.6376           11.7798+-0.3862          might be 1.0444x faster
   string-char-code-at                               13.8394+-0.5221     ?     13.8540+-0.6211        ?
   string-concat-object                               2.0907+-0.1124     ?      2.1969+-0.1290        ? might be 1.0508x slower
   string-concat-pair-object                          2.0799+-0.1726            2.0705+-0.0860        
   string-concat-pair-simple                          8.6248+-0.2199     ?      8.6748+-0.2071        ?
   string-concat-simple                               8.9347+-0.2665            8.7485+-0.1768          might be 1.0213x faster
   string-cons-repeat                                 6.4200+-0.3514            6.3395+-0.2810          might be 1.0127x faster
   string-cons-tower                                  6.4532+-0.2476            6.4343+-0.3062        
   string-equality                                   14.9037+-0.4841           14.7778+-0.6684        
   string-get-by-val-big-char                         6.3250+-0.2370            6.1933+-0.0632          might be 1.0213x faster
   string-get-by-val-out-of-bounds-insane             3.1514+-0.2208            3.0291+-0.0752          might be 1.0404x faster
   string-get-by-val-out-of-bounds                    3.7928+-0.0620     ?      3.8303+-0.0885        ?
   string-get-by-val                                  2.6256+-0.0377            2.6017+-0.0794        
   string-hash                                        1.7857+-0.0257     ?      1.8461+-0.0930        ? might be 1.0338x slower
   string-long-ident-equality                        12.7156+-0.9956           11.9256+-0.2140          might be 1.0662x faster
   string-out-of-bounds                              10.0142+-0.3745            9.9667+-0.4368        
   string-repeat-arith                               27.8690+-1.3275           26.4352+-0.3507          might be 1.0542x faster
   string-sub                                        52.5240+-1.0007           51.2790+-1.4446          might be 1.0243x faster
   string-test                                        2.5973+-0.0401     ?      2.6065+-0.1167        ?
   string-var-equality                               24.1212+-1.1670           23.7657+-0.5575          might be 1.0150x faster
   structure-hoist-over-transitions                   2.3979+-0.0794            2.3760+-0.1324        
   substring-concat-weird                            34.4271+-1.0257     ?     34.4271+-0.4789        ?
   substring-concat                                  37.3927+-0.6594     ?     38.1896+-1.2511        ? might be 1.0213x slower
   substring                                         43.4680+-1.0314     ?     43.8188+-1.2349        ?
   switch-char-constant                               2.4887+-0.0724     ?      2.5577+-0.0602        ? might be 1.0277x slower
   switch-char                                        5.2818+-0.4419     ?      5.5391+-0.3525        ? might be 1.0487x slower
   switch-constant                                    7.2539+-0.4399     ?      7.8980+-0.4124        ? might be 1.0888x slower
   switch-string-basic-big-var                       15.2092+-0.4912           14.8630+-0.2282          might be 1.0233x faster
   switch-string-basic-big                           14.4555+-0.5976           14.3282+-0.3116        
   switch-string-basic-var                           13.0675+-0.6565           12.6406+-0.2418          might be 1.0338x faster
   switch-string-basic                               12.4610+-0.3702     ?     12.6622+-0.3443        ? might be 1.0161x slower
   switch-string-big-length-tower-var                16.7197+-0.3332     ?     16.9590+-0.6697        ? might be 1.0143x slower
   switch-string-length-tower-var                    12.3011+-0.1137     ?     12.7136+-0.5397        ? might be 1.0335x slower
   switch-string-length-tower                        11.0867+-0.2633     ?     11.2022+-0.2949        ? might be 1.0104x slower
   switch-string-short                               11.6457+-0.9076           11.3466+-0.3611          might be 1.0264x faster
   switch                                            11.3470+-0.4237     ?     11.8271+-0.4514        ? might be 1.0423x slower
   tear-off-arguments-simple                          3.0356+-0.0351     ?      3.0902+-0.1837        ? might be 1.0180x slower
   tear-off-arguments                                 4.0306+-0.1561            3.9394+-0.1220          might be 1.0232x faster
   temporal-structure                                11.4191+-0.3413     ?     11.5953+-0.5771        ? might be 1.0154x slower
   to-int32-boolean                                  12.5781+-0.3048     ?     12.9288+-0.5553        ? might be 1.0279x slower
   try-catch-get-by-val-cloned-arguments             12.3413+-0.2885           12.3379+-0.2036        
   try-catch-get-by-val-direct-arguments              5.3222+-0.1339            5.2272+-0.0749          might be 1.0182x faster
   try-catch-get-by-val-scoped-arguments              6.4214+-0.1298     ?      6.5427+-0.3385        ? might be 1.0189x slower
   typed-array-get-set-by-val-profiling              26.2111+-0.5454     ?     26.4745+-0.5180        ? might be 1.0101x slower
   undefined-property-access                        206.5062+-1.7041          205.3543+-1.7557        
   undefined-test                                     2.7469+-0.1000            2.6805+-0.0637          might be 1.0248x faster
   unprofiled-licm                                   13.3362+-0.2756     ?     13.6115+-0.6631        ? might be 1.0206x slower
   varargs-call                                      12.7104+-0.1916           12.6732+-0.1002        
   varargs-construct-inline                          21.1562+-0.5941           21.0561+-0.2504        
   varargs-construct                                 19.0471+-0.1752     ?     19.1121+-0.2337        ?
   varargs-inline                                     8.0146+-0.1746            7.9000+-0.1511          might be 1.0145x faster
   varargs-strict-mode                                8.6206+-0.1624     ?      8.6341+-0.1600        ?
   varargs                                            8.5776+-0.1134            8.4848+-0.0934          might be 1.0109x faster
   weird-inlining-const-prop                          2.0860+-0.0978            1.9870+-0.0734          might be 1.0498x faster

   &lt;geometric&gt;                                        7.3161+-0.0182     ?      7.3166+-0.0177        ? might be 1.0001x slower

                                                         original                parserArena                                    
CompressionBench:
   huffman                                           53.4638+-1.8968           51.5905+-0.9192          might be 1.0363x faster
   arithmetic-simple                                253.4769+-1.7748     ?    254.5241+-1.7776        ?
   arithmetic-precise                               233.6371+-1.8197          233.4102+-2.7945        
   arithmetic-complex-precise                       231.6261+-1.5858     ?    232.9466+-1.8545        ?
   arithmetic-precise-order-0                       259.9308+-0.9009     ?    260.7111+-2.3049        ?
   arithmetic-precise-order-1                       287.1697+-3.3540     ?    288.1502+-2.7861        ?
   arithmetic-precise-order-2                       331.3731+-3.8605     ?    334.7061+-8.0980        ? might be 1.0101x slower
   arithmetic-simple-order-1                        305.3245+-3.2707     ?    306.0601+-2.8427        ?
   arithmetic-simple-order-2                        359.7890+-3.3459          357.8897+-4.3257        
   lz-string                                        321.5365+-6.5752          313.2104+-2.9259          might be 1.0266x faster

   &lt;geometric&gt;                                      240.2076+-0.8022          239.2735+-0.9243          might be 1.0039x faster

                                                         original                parserArena                                    
Geomean of preferred means:
   &lt;scaled-result&gt;                                   33.7245+-0.0867     ?     33.7760+-0.0898        ? might be 1.0015x slower</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109917</commentid>
    <comment_count>11</comment_count>
      <attachid>256815</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-07-16 11:06:36 -0700</bug_when>
    <thetext>Comment on attachment 256815
patch

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

The logic itself looks nice. Few nits.

&gt; Source/JavaScriptCore/ChangeLog:34
&gt; +       to make things clearer and more deliberate.

Maybe, these messages are mis indented.

&gt; Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.cpp:64
&gt; +        strictMode, JSParserCodeType::Function, error, 0, executable-&gt;parseMode());

Use nullptr instead of `0`.

&gt; Source/JavaScriptCore/parser/ASTBuilder.h:349
&gt; +        functionInfo.body-&gt;setLoc(functionInfo.startLine, functionInfo.endLine, location.startOffset, location.lineStartOffset);

OK, now, parameters are reparsed.

&gt; Source/JavaScriptCore/parser/Nodes.h:1630
&gt; +        Vector&lt;DestructuringPatternNode*, 3&gt; m_patterns;

I think this vector leaks memory since ParserArenaFreeable&apos;s destructor is not called.
Use intrusive lists (like the other nodes such as ArgumentListNode).

&gt; Source/JavaScriptCore/parser/Parser.cpp:-370
&gt; -#endif

Looks fine.

&gt; Source/JavaScriptCore/parser/Parser.cpp:1390
&gt; +        failIfFalse(parseSourceElements(syntaxChecker, CheckForStrictMode), bodyType == StandardFunctionBodyBlock ? &quot;Cannot parse body of this function&quot; : &quot;Cannot parse body of this arrow function&quot;);

OK, here, we always use SyntaxChecker.

&gt; Source/JavaScriptCore/parser/Parser.cpp:1628
&gt; +        RELEASE_ASSERT(mode == NormalFunctionMode || mode == MethodMode || mode == ArrowFunctionMode);

Is there any case in which ArrowFunctionMode has valid `name`?

&gt; Source/JavaScriptCore/runtime/CodeCache.cpp:98
&gt; +        JSParserCodeType::Program, error, 0, FunctionParseMode::NotAFunctionMode, ConstructorKind::None, thisTDZMode);

Let&apos;s use nullptr instead of 0.

&gt; Source/JavaScriptCore/tests/controlFlowProfiler/conditional-expression.js:37
&gt; +checkBasicBlock(testConditionalFunctionCall, &quot;y ?&quot;, ShouldHaveExecuted);

Why are they changed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109972</commentid>
    <comment_count>12</comment_count>
      <attachid>256815</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-07-16 14:29:15 -0700</bug_when>
    <thetext>Comment on attachment 256815
patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:34
&gt;&gt; +       to make things clearer and more deliberate.
&gt; 
&gt; Maybe, these messages are mis indented.

Will fix.

&gt;&gt; Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.cpp:64
&gt;&gt; +        strictMode, JSParserCodeType::Function, error, 0, executable-&gt;parseMode());
&gt; 
&gt; Use nullptr instead of `0`.

will do.

&gt;&gt; Source/JavaScriptCore/parser/Nodes.h:1630
&gt;&gt; +        Vector&lt;DestructuringPatternNode*, 3&gt; m_patterns;
&gt; 
&gt; I think this vector leaks memory since ParserArenaFreeable&apos;s destructor is not called.
&gt; Use intrusive lists (like the other nodes such as ArgumentListNode).

Good catch.

&gt;&gt; Source/JavaScriptCore/parser/Parser.cpp:1390
&gt;&gt; +        failIfFalse(parseSourceElements(syntaxChecker, CheckForStrictMode), bodyType == StandardFunctionBodyBlock ? &quot;Cannot parse body of this function&quot; : &quot;Cannot parse body of this arrow function&quot;);
&gt; 
&gt; OK, here, we always use SyntaxChecker.

Yes. I removed the ::FunctionBodyBuilder from SyntaxChecker and ASTBuilder because it&apos;s always SyntaxChecker. This to me is just more clear.

&gt;&gt; Source/JavaScriptCore/parser/Parser.cpp:1628
&gt;&gt; +        RELEASE_ASSERT(mode == NormalFunctionMode || mode == MethodMode || mode == ArrowFunctionMode);
&gt; 
&gt; Is there any case in which ArrowFunctionMode has valid `name`?

I believe we hit this path with:
var f = (x) =&gt; x;

I will double check though, this seems a bit weird.

&gt;&gt; Source/JavaScriptCore/runtime/CodeCache.cpp:98
&gt;&gt; +        JSParserCodeType::Program, error, 0, FunctionParseMode::NotAFunctionMode, ConstructorKind::None, thisTDZMode);
&gt; 
&gt; Let&apos;s use nullptr instead of 0.

will do.

&gt;&gt; Source/JavaScriptCore/tests/controlFlowProfiler/conditional-expression.js:37
&gt;&gt; +checkBasicBlock(testConditionalFunctionCall, &quot;y ?&quot;, ShouldHaveExecuted);
&gt; 
&gt; Why are they changed?

These tests work by looking up string indices inside the function. If there are multiple occurrences of a string
inside the function, it will find the first occurrence. Because the function&apos;s source text now includes the parameters, these
texts were resolving to the wrong index inside the function. &quot;y ?&quot; is a unique string inside the function and therefore is not ambiguous
in terms of it&apos;s substring index.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109995</commentid>
    <comment_count>13</comment_count>
      <attachid>256815</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-07-16 15:12:25 -0700</bug_when>
    <thetext>Comment on attachment 256815
patch

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

&gt;&gt;&gt; Source/JavaScriptCore/parser/Nodes.h:1630
&gt;&gt;&gt; +        Vector&lt;DestructuringPatternNode*, 3&gt; m_patterns;
&gt;&gt; 
&gt;&gt; I think this vector leaks memory since ParserArenaFreeable&apos;s destructor is not called.
&gt;&gt; Use intrusive lists (like the other nodes such as ArgumentListNode).
&gt; 
&gt; Good catch.

I&apos;m going to make this inherit from ParserArenaDeletable.

&gt; Source/JavaScriptCore/parser/Nodes.h:1747
&gt; +    class DestructuringPatternNode : public ParserArenaFreeable {

This also needs to inherit from ParserArenaDeletable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109999</commentid>
    <comment_count>14</comment_count>
      <attachid>256933</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-07-16 15:18:02 -0700</bug_when>
    <thetext>Created attachment 256933
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110033</commentid>
    <comment_count>15</comment_count>
      <attachid>256939</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-07-16 17:05:27 -0700</bug_when>
    <thetext>Created attachment 256939
patch

rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110126</commentid>
    <comment_count>16</comment_count>
      <attachid>256815</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-07-17 07:59:00 -0700</bug_when>
    <thetext>Comment on attachment 256815
patch

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

&gt;&gt; Source/JavaScriptCore/parser/Nodes.h:1747
&gt;&gt; +    class DestructuringPatternNode : public ParserArenaFreeable {
&gt; 
&gt; This also needs to inherit from ParserArenaDeletable.

OK, ObjectPattern / ArrayPattern has a Vector. So DestructuringPatternNode should be ParserArenaDeletable.

&gt;&gt;&gt; Source/JavaScriptCore/parser/Parser.cpp:1628
&gt;&gt;&gt; +        RELEASE_ASSERT(mode == NormalFunctionMode || mode == MethodMode || mode == ArrowFunctionMode);
&gt;&gt; 
&gt;&gt; Is there any case in which ArrowFunctionMode has valid `name`?
&gt; 
&gt; I believe we hit this path with:
&gt; var f = (x) =&gt; x;
&gt; 
&gt; I will double check though, this seems a bit weird.

Ah, OK. name is transfered from the variable name.

&gt;&gt;&gt; Source/JavaScriptCore/tests/controlFlowProfiler/conditional-expression.js:37
&gt;&gt;&gt; +checkBasicBlock(testConditionalFunctionCall, &quot;y ?&quot;, ShouldHaveExecuted);
&gt;&gt; 
&gt;&gt; Why are they changed?
&gt; 
&gt; These tests work by looking up string indices inside the function. If there are multiple occurrences of a string
&gt; inside the function, it will find the first occurrence. Because the function&apos;s source text now includes the parameters, these
&gt; texts were resolving to the wrong index inside the function. &quot;y ?&quot; is a unique string inside the function and therefore is not ambiguous
&gt; in terms of it&apos;s substring index.

OK, make sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110127</commentid>
    <comment_count>17</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-07-17 08:07:37 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Comment on attachment 256815 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=256815&amp;action=review
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/parser/Nodes.h:1747
&gt; &gt;&gt; +    class DestructuringPatternNode : public ParserArenaFreeable {
&gt; &gt; 
&gt; &gt; This also needs to inherit from ParserArenaDeletable.
&gt; 
&gt; OK, ObjectPattern / ArrayPattern has a Vector. So DestructuringPatternNode
&gt; should be ParserArenaDeletable.
&gt; 
&gt; &gt;&gt;&gt; Source/JavaScriptCore/parser/Parser.cpp:1628
&gt; &gt;&gt;&gt; +        RELEASE_ASSERT(mode == NormalFunctionMode || mode == MethodMode || mode == ArrowFunctionMode);
&gt; &gt;&gt; 
&gt; &gt;&gt; Is there any case in which ArrowFunctionMode has valid `name`?
&gt; &gt; 
&gt; &gt; I believe we hit this path with:
&gt; &gt; var f = (x) =&gt; x;
&gt; &gt; 
&gt; &gt; I will double check though, this seems a bit weird.
&gt; 
&gt; Ah, OK. name is transfered from the variable name.
&gt;
I was wrong about this. It doesn&apos;t get the name
from the variable name. (I think there is some
machinery that does something similar but it&apos;s
not in this part of the parser.) I removed the
assertion that it could also be an arrow function.  


&gt; &gt;&gt;&gt; Source/JavaScriptCore/tests/controlFlowProfiler/conditional-expression.js:37
&gt; &gt;&gt;&gt; +checkBasicBlock(testConditionalFunctionCall, &quot;y ?&quot;, ShouldHaveExecuted);
&gt; &gt;&gt; 
&gt; &gt;&gt; Why are they changed?
&gt; &gt; 
&gt; &gt; These tests work by looking up string indices inside the function. If there are multiple occurrences of a string
&gt; &gt; inside the function, it will find the first occurrence. Because the function&apos;s source text now includes the parameters, these
&gt; &gt; texts were resolving to the wrong index inside the function. &quot;y ?&quot; is a unique string inside the function and therefore is not ambiguous
&gt; &gt; in terms of it&apos;s substring index.
&gt; 
&gt; OK, make sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110135</commentid>
    <comment_count>18</comment_count>
      <attachid>256939</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-07-17 08:56:23 -0700</bug_when>
    <thetext>Comment on attachment 256939
patch

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

&gt; Source/JavaScriptCore/parser/ASTBuilder.h:367
&gt; +        SourceCode source = m_sourceCode-&gt;subExpression(functionInfo.startOffset, functionInfo.endOffset, functionInfo.startLine, functionInfo.bodyStartColumn);

Dropping subArrowFunction is OK.

&gt; Source/JavaScriptCore/parser/Parser.cpp:248
&gt; +        m_parameters = functionInfo.parameters;

This branch (parsing function parameters) is not executed under arrowfunction = OFF, is it correct?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110157</commentid>
    <comment_count>19</comment_count>
      <attachid>256977</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-07-17 10:53:18 -0700</bug_when>
    <thetext>Created attachment 256977
patch

Fixed #ifdef bug. It should not surround the entire isReparsingFunction() but just surround
reprising of arrow functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110159</commentid>
    <comment_count>20</comment_count>
      <attachid>256977</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-07-17 11:22:56 -0700</bug_when>
    <thetext>Comment on attachment 256977
patch

Great, r+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110165</commentid>
    <comment_count>21</comment_count>
      <attachid>256977</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-17 11:29:39 -0700</bug_when>
    <thetext>Comment on attachment 256977
patch

Rejecting attachment 256977 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.appspot.com&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 256977, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in LayoutTests/ChangeLog contains OOPS!.

Full output: http://webkit-queues.appspot.com/results/6690290693832704</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110175</commentid>
    <comment_count>22</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-07-17 11:50:23 -0700</bug_when>
    <thetext>landed in:
https://trac.webkit.org/r186959</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256671</attachid>
            <date>2015-07-11 18:29:31 -0700</date>
            <delta_ts>2015-07-11 20:23:12 -0700</delta_ts>
            <desc>it begins</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>15064</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTg2NzE5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgsNyAr
NjgsNyBAQCBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGZ1bmN0aW9uLT5maW5pc2hQYXJzaW5nKGV4
ZWN1dGFibGUtPnBhcmFtZXRlcnMoKSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBleGVjdXRhYmxlLT5m
dW5jdGlvbk1vZGUoKSk7CisgICAgZnVuY3Rpb24tPmZpbmlzaFBhcnNpbmcoZXhlY3V0YWJsZS0+
bmFtZSgpLCBleGVjdXRhYmxlLT5mdW5jdGlvbk1vZGUoKSk7CiAgICAgZXhlY3V0YWJsZS0+cmVj
b3JkUGFyc2UoZnVuY3Rpb24tPmZlYXR1cmVzKCksIGZ1bmN0aW9uLT5oYXNDYXB0dXJlZFZhcmlh
YmxlcygpKTsKICAgICAKICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBV
bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVhdGUoJnZtLCBGdW5jdGlvbkNvZGUsCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAkocmV2aXNpb24gMTg2
NzE5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTkzLDggKzkzLDYgQEAgcHVibGljOgogICAgIH07CiAKIAotICAgIHR5cGVk
ZWYgU3ludGF4Q2hlY2tlciBGdW5jdGlvbkJvZHlCdWlsZGVyOwotCiAgICAgdHlwZWRlZiBFeHBy
ZXNzaW9uTm9kZSogRXhwcmVzc2lvbjsKICAgICB0eXBlZGVmIEpTQzo6U291cmNlRWxlbWVudHMq
IFNvdXJjZUVsZW1lbnRzOwogICAgIHR5cGVkZWYgQXJndW1lbnRzTm9kZSogQXJndW1lbnRzOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAJKHJldmlzaW9uIDE4Njcx
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTcsNyArMTE3LDcgQEAgU3RhdGVtZW50Tm9kZSogU2NvcGVOb2RlOjpzaW5nbGVT
dGF0ZW1lbgogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJvZ3JhbU5vZGUg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUHJvZ3JhbU5vZGU6OlByb2dyYW1Ob2Rl
KFBhcnNlckFyZW5hJiBwYXJzZXJBcmVuYSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExv
Y2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBzdGFy
dENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZh
clN0YWNrJiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayYgZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0
JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlRmVhdHVy
ZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCitQcm9ncmFtTm9kZTo6UHJvZ3JhbU5vZGUo
UGFyc2VyQXJlbmEmIHBhcnNlckFyZW5hLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9j
YXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVkIHN0YXJ0
Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFy
U3RhY2smIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrJiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQm
IGNhcHR1cmVkVmFyaWFibGVzLCBQYXJhbWV0ZXJOb2RlKiwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCiAgICAgOiBTY29w
ZU5vZGUocGFyc2VyQXJlbmEsIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBzb3VyY2UsIGNo
aWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgZmVhdHVyZXMs
IG51bUNvbnN0YW50cykKICAgICAsIG1fc3RhcnRDb2x1bW4oc3RhcnRDb2x1bW4pCiAgICAgLCBt
X2VuZENvbHVtbihlbmRDb2x1bW4pCkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBQcm9ncmFtTm9k
ZTo6c2V0Q2xvc2VkVmFyaWFibGVzKFZlYwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gRXZhbE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotRXZhbE5vZGU6
OkV2YWxOb2RlKFBhcnNlckFyZW5hJiBwYXJzZXJBcmVuYSwgY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNp
Z25lZCwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0
YWNrJiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayYgZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBj
YXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlRmVhdHVyZXMg
ZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCitFdmFsTm9kZTo6RXZhbE5vZGUoUGFyc2VyQXJl
bmEmIHBhcnNlckFyZW5hLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVkLCB1bnNpZ25lZCBlbmRD
b2x1bW4sIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2smIHZhclN0YWNrLCBGdW5j
dGlvblN0YWNrJiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBQ
YXJhbWV0ZXJOb2RlKiwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlRmVhdHVyZXMgZmVh
dHVyZXMsIGludCBudW1Db25zdGFudHMpCiAgICAgOiBTY29wZU5vZGUocGFyc2VyQXJlbmEsIHN0
YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBzb3VyY2UsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVu
Y1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgZmVhdHVyZXMsIG51bUNvbnN0YW50cykKICAgICAs
IG1fZW5kQ29sdW1uKGVuZENvbHVtbikKIHsKQEAgLTIwMSwxNyArMjAxLDE3IEBAIHZvaWQgRnVu
Y3Rpb25Cb2R5Tm9kZTo6c2V0RW5kUG9zaXRpb24oSlMKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tIEZ1bmN0aW9uTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
Ci1GdW5jdGlvbk5vZGU6OkZ1bmN0aW9uTm9kZShQYXJzZXJBcmVuYSYgcGFyc2VyQXJlbmEsIGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBlbmRMb2NhdGlvbiwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwg
U291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayYgdmFyU3RhY2ssIEZ1bmN0aW9uU3Rh
Y2smIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZUNvZGUsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0
YW50cykKK0Z1bmN0aW9uTm9kZTo6RnVuY3Rpb25Ob2RlKFBhcnNlckFyZW5hJiBwYXJzZXJBcmVu
YSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29s
dW1uLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrJiB2YXJTdGFjaywgRnVuY3Rp
b25TdGFjayYgZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgUGFy
YW1ldGVyTm9kZSogZmlyc3RQYXJhbWV0ZXIsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUs
IENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKICAgICA6IFNjb3BlTm9k
ZShwYXJzZXJBcmVuYSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIHNvdXJjZUNvZGUsIGNo
aWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgZmVhdHVyZXMs
IG51bUNvbnN0YW50cykKKyAgICAsIG1fcGFyYW1ldGVycyhGdW5jdGlvblBhcmFtZXRlcnM6OmNy
ZWF0ZShmaXJzdFBhcmFtZXRlcikpCiAgICAgLCBtX3N0YXJ0Q29sdW1uKHN0YXJ0Q29sdW1uKQog
ICAgICwgbV9lbmRDb2x1bW4oZW5kQ29sdW1uKQogewogfQogCi12b2lkIEZ1bmN0aW9uTm9kZTo6
ZmluaXNoUGFyc2luZyhQYXNzUmVmUHRyPEZ1bmN0aW9uUGFyYW1ldGVycz4gcGFyYW1ldGVycywg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGVudW0gRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSkK
K3ZvaWQgRnVuY3Rpb25Ob2RlOjpmaW5pc2hQYXJzaW5nKGNvbnN0IElkZW50aWZpZXImIGlkZW50
LCBlbnVtIEZ1bmN0aW9uTW9kZSBmdW5jdGlvbk1vZGUpCiB7CiAgICAgQVNTRVJUKCFzb3VyY2Uo
KS5pc051bGwoKSk7Ci0gICAgbV9wYXJhbWV0ZXJzID0gcGFyYW1ldGVyczsKICAgICBtX2lkZW50
ID0gaWRlbnQ7CiAgICAgbV9mdW5jdGlvbk1vZGUgPSBmdW5jdGlvbk1vZGU7CiB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCShyZXZpc2lvbiAxODY3MTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1OTgs
NyArMTU5OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUHJvZ3JhbU5vZGUgOiBw
dWJsaWMgU2NvcGVOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFByb2dyYW1Ob2RlKFBhcnNl
ckFyZW5hJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBlbmQsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJj
ZUVsZW1lbnRzKiwgVmFyU3RhY2smLCBGdW5jdGlvblN0YWNrJiwgSWRlbnRpZmllclNldCYsIGNv
bnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOworICAgICAg
ICBQcm9ncmFtTm9kZShQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQs
IGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWdu
ZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrJiwgRnVuY3Rpb25TdGFjayYs
IElkZW50aWZpZXJTZXQmLCBQYXJhbWV0ZXJOb2RlKiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVG
ZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CiAKICAgICAgICAgdW5zaWduZWQgc3RhcnRDb2x1
bW4oKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0Q29sdW1uOyB9CiAgICAgICAgIHVuc2lnbmVkIGVu
ZENvbHVtbigpIGNvbnN0IHsgcmV0dXJuIG1fZW5kQ29sdW1uOyB9CkBAIC0xNjE3LDcgKzE2MTcs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEV2YWxOb2RlIDogcHVibGljIFNjb3Bl
Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBFdmFsTm9kZShQYXJzZXJBcmVuYSYsIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCB1bnNp
Z25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyosIFZh
clN0YWNrJiwgRnVuY3Rpb25TdGFjayYsIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2Rl
JiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKKyAgICAgICAgRXZhbE5vZGUoUGFy
c2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGVuZCwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291
cmNlRWxlbWVudHMqLCBWYXJTdGFjayYsIEZ1bmN0aW9uU3RhY2smLCBJZGVudGlmaWVyU2V0Jiwg
UGFyYW1ldGVyTm9kZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1D
b25zdGFudHMpOwogCiAgICAgICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgc3RhcnRDb2x1bW4o
KSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAgICAgIHVuc2lnbmVkIGVuZENvbHVtbigpIGNvbnN0
IHsgcmV0dXJuIG1fZW5kQ29sdW1uOyB9CkBAIC0xNzA0LDEzICsxNzA0LDEzIEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgY2xhc3MgRnVuY3Rpb25Ob2RlIGZpbmFsIDogcHVibGljIFNjb3BlTm9k
ZSB7CiAgICAgcHVibGljOgotICAgICAgICBGdW5jdGlvbk5vZGUoUGFyc2VyQXJlbmEmLCBjb25z
dCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgdW5z
aWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMqLCBW
YXJTdGFjayYsIEZ1bmN0aW9uU3RhY2smLCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29k
ZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CisgICAgICAgIEZ1bmN0aW9uTm9k
ZShQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgZW5kLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1u
LCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrJiwgRnVuY3Rpb25TdGFjayYsIElkZW50aWZpZXJT
ZXQmLCBQYXJhbWV0ZXJOb2RlKiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50
IG51bUNvbnN0YW50cyk7CiAKICAgICAgICAgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJz
KCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLmdldCgpOyB9CiAKICAgICAgICAgdmlydHVh
bCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkg
b3ZlcnJpZGU7CiAKLSAgICAgICAgdm9pZCBmaW5pc2hQYXJzaW5nKFBhc3NSZWZQdHI8RnVuY3Rp
b25QYXJhbWV0ZXJzPiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uTW9kZSk7CisgICAgICAg
IHZvaWQgZmluaXNoUGFyc2luZyhjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25Nb2RlKTsKICAg
ICAgICAgCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50KCkgeyByZXR1cm4gbV9pZGVu
dDsgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCShyZXZp
c2lvbiAxODY3MTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIFBhcnNlcjxMZXhlclR5cGU+
Ojpsb2dFcnJvcihib29sIHNoCiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiBQYXJz
ZXI8TGV4ZXJUeXBlPjo6UGFyc2VyKAotICAgIFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIAorICAgIFZNKiB2bSwgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvblBhcmFtZXRlcnMqIC8qcGFyYW1ldGVycyovLCAK
ICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5N
b2RlLCAKICAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgSlNQYXJzZXJDb2RlVHlw
ZSBjb2RlVHlwZSwgCiAgICAgQ29uc3RydWN0b3JLaW5kIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQs
IFRoaXNURFpNb2RlIHRoaXNURFpNb2RlKQpAQCAtMjIzLDI4ICsyMjMsMjggQEAgUGFyc2VyPExl
eGVyVHlwZT46OlBhcnNlcigKICAgICAgICAgc2NvcGUtPnNldElzRnVuY3Rpb24oKTsKICAgICBp
ZiAoc3RyaWN0TW9kZSA9PSBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCkKICAgICAgICAgc2Nv
cGUtPnNldFN0cmljdE1vZGUoKTsKLSAgICBpZiAocGFyYW1ldGVycykgewotICAgICAgICBib29s
IGhhZEJpbmRpbmdQYXJhbWV0ZXJzID0gZmFsc2U7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBwYXJhbWV0ZXJzLT5zaXplKCk7IGkrKykgewotICAgICAgICAgICAgYXV0byBwYXJh
bWV0ZXIgPSBwYXJhbWV0ZXJzLT5hdChpKTsKLSAgICAgICAgICAgIGlmICghcGFyYW1ldGVyLT5p
c0JpbmRpbmdOb2RlKCkpIHsKLSAgICAgICAgICAgICAgICBoYWRCaW5kaW5nUGFyYW1ldGVycyA9
IHRydWU7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBzY29wZS0+ZGVjbGFyZVBhcmFtZXRlcigmc3RhdGljX2Nhc3Q8QmluZGluZ05vZGUqPihw
YXJhbWV0ZXIpLT5ib3VuZFByb3BlcnR5KCkpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChoYWRC
aW5kaW5nUGFyYW1ldGVycykgewotICAgICAgICAgICAgVmVjdG9yPElkZW50aWZpZXI+IGJvdW5k
UGFyYW1ldGVyTmFtZXM7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFy
YW1ldGVycy0+c2l6ZSgpOyBpKyspIHsKLSAgICAgICAgICAgICAgICBhdXRvIHBhcmFtZXRlciA9
IHBhcmFtZXRlcnMtPmF0KGkpOwotICAgICAgICAgICAgICAgIGlmIChwYXJhbWV0ZXItPmlzQmlu
ZGluZ05vZGUoKSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAg
ICAgcGFyYW1ldGVyLT5jb2xsZWN0Qm91bmRJZGVudGlmaWVycyhib3VuZFBhcmFtZXRlck5hbWVz
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZvciAoYXV0byYgYm91bmRQYXJhbWV0ZXJO
YW1lIDogYm91bmRQYXJhbWV0ZXJOYW1lcykKLSAgICAgICAgICAgICAgICBzY29wZS0+ZGVjbGFy
ZVZhcmlhYmxlKCZib3VuZFBhcmFtZXRlck5hbWUpOwotICAgICAgICB9Ci0gICAgfQorICAgIC8v
aWYgKHBhcmFtZXRlcnMpIHsKKyAgICAvLyAgICBib29sIGhhZEJpbmRpbmdQYXJhbWV0ZXJzID0g
ZmFsc2U7CisgICAgLy8gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhcmFtZXRlcnMtPnNp
emUoKTsgaSsrKSB7CisgICAgLy8gICAgICAgIGF1dG8gcGFyYW1ldGVyID0gcGFyYW1ldGVycy0+
YXQoaSk7CisgICAgLy8gICAgICAgIGlmICghcGFyYW1ldGVyLT5pc0JpbmRpbmdOb2RlKCkpIHsK
KyAgICAvLyAgICAgICAgICAgIGhhZEJpbmRpbmdQYXJhbWV0ZXJzID0gdHJ1ZTsKKyAgICAvLyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgIC8vICAgICAgICB9CisgICAgLy8gICAgICAgIHNjb3Bl
LT5kZWNsYXJlUGFyYW1ldGVyKCZzdGF0aWNfY2FzdDxCaW5kaW5nTm9kZSo+KHBhcmFtZXRlcikt
PmJvdW5kUHJvcGVydHkoKSk7CisgICAgLy8gICAgfQorICAgIC8vICAgIGlmIChoYWRCaW5kaW5n
UGFyYW1ldGVycykgeworICAgIC8vICAgICAgICBWZWN0b3I8SWRlbnRpZmllcj4gYm91bmRQYXJh
bWV0ZXJOYW1lczsKKyAgICAvLyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhcmFt
ZXRlcnMtPnNpemUoKTsgaSsrKSB7CisgICAgLy8gICAgICAgICAgICBhdXRvIHBhcmFtZXRlciA9
IHBhcmFtZXRlcnMtPmF0KGkpOworICAgIC8vICAgICAgICAgICAgaWYgKHBhcmFtZXRlci0+aXNC
aW5kaW5nTm9kZSgpKQorICAgIC8vICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgIC8vICAg
ICAgICAgICAgcGFyYW1ldGVyLT5jb2xsZWN0Qm91bmRJZGVudGlmaWVycyhib3VuZFBhcmFtZXRl
ck5hbWVzKTsKKyAgICAvLyAgICAgICAgfQorICAgIC8vICAgICAgICBmb3IgKGF1dG8mIGJvdW5k
UGFyYW1ldGVyTmFtZSA6IGJvdW5kUGFyYW1ldGVyTmFtZXMpCisgICAgLy8gICAgICAgICAgICBz
Y29wZS0+ZGVjbGFyZVZhcmlhYmxlKCZib3VuZFBhcmFtZXRlck5hbWUpOworICAgIC8vICAgIH0K
KyAgICAvL30KICAgICBpZiAoIW5hbWUuaXNOdWxsKCkpCiAgICAgICAgIHNjb3BlLT5kZWNsYXJl
Q2FsbGVlKCZuYW1lKTsKICAgICBuZXh0KCk7CkBAIC0yNjEsNiArMjYxLDEyIEBAIFN0cmluZyBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcigpCiAgICAgU3RyaW5nIHBhcnNlRXJyb3IgPSBT
dHJpbmcoKTsKICAgICAKICAgICBBU1RCdWlsZGVyIGNvbnRleHQoY29uc3RfY2FzdDxWTSo+KG1f
dm0pLCBtX3BhcnNlckFyZW5hLCBjb25zdF9jYXN0PFNvdXJjZUNvZGUqPihtX3NvdXJjZSkpOwor
ICAgIGlmIChtX2xleGVyLT5pc1JlcGFyc2luZygpKSB7CisgICAgICAgIFBhcnNlckZ1bmN0aW9u
SW5mbzxBU1RCdWlsZGVyPiBpbmZvOworICAgICAgICBwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhj
b250ZXh0LCBGdW5jdGlvbk1vZGUsIGluZm8pOworICAgICAgICBtX3BhcmFtZXRlcnMgPSBpbmZv
LnBhcmFtZXRlcnM7CisgICAgfQorCiAgICAgaWYgKG1fbGV4ZXItPmlzUmVwYXJzaW5nKCkpCiAg
ICAgICAgIG1fc3RhdGVtZW50RGVwdGgtLTsKICAgICBTY29wZVJlZiBzY29wZSA9IGN1cnJlbnRT
Y29wZSgpOwpAQCAtMTM5NCwxMSArMTQwMCwxMSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVGdW5jdGlvCiAKICAgICBEZXB0aE1hbmFnZXIgc3RhdGVtZW50RGVwdGgoJm1fc3Rh
dGVtZW50RGVwdGgpOwogICAgIG1fc3RhdGVtZW50RGVwdGggPSAwOwotICAgIHR5cGVuYW1lIFRy
ZWVCdWlsZGVyOjpGdW5jdGlvbkJvZHlCdWlsZGVyIGJvZHlCdWlsZGVyKGNvbnN0X2Nhc3Q8Vk0q
PihtX3ZtKSwgbV9sZXhlci5nZXQoKSk7CisgICAgU3ludGF4Q2hlY2tlciBzeW50YXhDaGVja2Vy
KGNvbnN0X2Nhc3Q8Vk0qPihtX3ZtKSwgbV9sZXhlci5nZXQoKSk7CiAjaWYgRU5BQkxFKEVTNl9B
UlJPV0ZVTkNUSU9OX1NZTlRBWCkKLSAgICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVsZW1lbnRz
KGJvZHlCdWlsZGVyLCBDaGVja0ZvclN0cmljdE1vZGUsIHBhcnNlVHlwZSksIHBhcnNlVHlwZSA9
PSBTdGFuZGFyZEZ1bmN0aW9uUGFyc2VUeXBlID8gIkNhbm5vdCBwYXJzZSBib2R5IG9mIHRoaXMg
ZnVuY3Rpb24iIDogIkNhbm5vdCBwYXJzZSBib2R5IG9mIHRoaXMgYXJyb3cgZnVuY3Rpb24iKTsK
KyAgICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVsZW1lbnRzKHN5bnRheENoZWNrZXIsIENoZWNr
Rm9yU3RyaWN0TW9kZSwgcGFyc2VUeXBlKSwgcGFyc2VUeXBlID09IFN0YW5kYXJkRnVuY3Rpb25Q
YXJzZVR5cGUgPyAiQ2Fubm90IHBhcnNlIGJvZHkgb2YgdGhpcyBmdW5jdGlvbiIgOiAiQ2Fubm90
IHBhcnNlIGJvZHkgb2YgdGhpcyBhcnJvdyBmdW5jdGlvbiIpOwogI2Vsc2UKLSAgICBmYWlsSWZG
YWxzZShwYXJzZVNvdXJjZUVsZW1lbnRzKGJvZHlCdWlsZGVyLCBDaGVja0ZvclN0cmljdE1vZGUs
IFN0YW5kYXJkRnVuY3Rpb25QYXJzZVR5cGUpLCAiQ2Fubm90IHBhcnNlIGJvZHkgb2YgdGhpcyBm
dW5jdGlvbiIpOworICAgIGZhaWxJZkZhbHNlKHBhcnNlU291cmNlRWxlbWVudHMoc3ludGF4Q2hl
Y2tlciwgQ2hlY2tGb3JTdHJpY3RNb2RlLCBTdGFuZGFyZEZ1bmN0aW9uUGFyc2VUeXBlKSwgIkNh
bm5vdCBwYXJzZSBib2R5IG9mIHRoaXMgZnVuY3Rpb24iKTsKICNlbmRpZgogICAgIHVuc2lnbmVk
IGVuZENvbHVtbiA9IHRva2VuQ29sdW1uKCk7CiAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVu
Y3Rpb25Cb2R5KHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVu
ZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0
ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kKTsKQEAgLTE0NTQsMTEgKzE0
NjAsMTEgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4gdGVtcGxhdGUgPAogICAgICAg
ICByZXR1cm4gcGFyYW1ldGVyc1N0YXJ0OwogICAgIH0KICNlbmRpZgotICAgIAogICAgIGlmICgh
Y29uc3VtZShPUEVOUEFSRU4pKSB7CiAgICAgICAgIHNlbWFudGljRmFpbHVyZUR1ZVRvS2V5d29y
ZChzdHJpbmdGb3JGdW5jdGlvbk1vZGUobW9kZSksICIgbmFtZSIpOwogICAgICAgICBmYWlsV2l0
aE1lc3NhZ2UoIkV4cGVjdGVkIGFuIG9wZW5pbmcgJygnIGJlZm9yZSBhICIsIHN0cmluZ0ZvckZ1
bmN0aW9uTW9kZShtb2RlKSwgIidzIHBhcmFtZXRlciBsaXN0Iik7CiAgICAgfQorICAgIGluZm8u
c3RhcnRGdW5jdGlvbk9mZnNldCA9IHBhcmFtZXRlcnNTdGFydDsKIAogICAgIGlmIChtb2RlID09
IEdldHRlck1vZGUpCiAgICAgICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VQQVJFTiwgImdldHRlciBm
dW5jdGlvbnMgbXVzdCBoYXZlIG5vIHBhcmFtZXRlcnMiKTsKQEAgLTE1MTksNyArMTUyNSw3IEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXIKICAgICAgICAgICAgIGV4
cGVjdGVkU3VwZXJCaW5kaW5nID0gbV9kZWZhdWx0Q29uc3RydWN0b3JLaW5kID09IENvbnN0cnVj
dG9yS2luZDo6RGVyaXZlZCA/IFN1cGVyQmluZGluZzo6TmVlZGVkIDogU3VwZXJCaW5kaW5nOjpO
b3ROZWVkZWQ7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGluZm8uc3RhcnRGdW5jdGlv
bk9mZnNldCA9IG1fdG9rZW4ubV9kYXRhLm9mZnNldDsKKyAgICAgICAgLy9pbmZvLnN0YXJ0RnVu
Y3Rpb25PZmZzZXQgPSBtX3Rva2VuLm1fZGF0YS5vZmZzZXQ7CiAgICAgICAgIAogICAgICAgICBi
cmVhazsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgJKHJl
dmlzaW9uIDE4NjcxOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTkyOCw2ICs5MjgsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IFNv
dXJjZUNvZGUqIG1fc291cmNlOwogICAgIFBhcnNlckFyZW5hIG1fcGFyc2VyQXJlbmE7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPExleGVyVHlwZT4gbV9sZXhlcjsKKyAgICBQYXJhbWV0ZXJOb2RlKiBt
X3BhcmFtZXRlcnMgeyBudWxscHRyIH07CiAgICAgCiAgICAgYm9vbCBtX2hhc1N0YWNrT3ZlcmZs
b3c7CiAgICAgU3RyaW5nIG1fZXJyb3JNZXNzYWdlOwpAQCAtMTAyMSw2ICsxMDIyLDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxMZXhlcgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV92YXJEZWNsYXJhdGlvbnMsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX2Z1bmNEZWNsYXJhdGlvbnMsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX2NhcHR1cmVkVmFyaWFibGVzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV9wYXJhbWV0ZXJzLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKm1fc291cmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbV9mZWF0dXJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbnVt
Q29uc3RhbnRzKTsKQEAgLTEwNjEsNiArMTA2Myw4IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWRO
b2RlPiBwYXJzZSgKICAgICBDb25zdHJ1Y3RvcktpbmQgZGVmYXVsdENvbnN0cnVjdG9yS2luZCA9
IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUgPSBUaGlzVERa
TW9kZTo6Q2hlY2tJZk5lZWRlZCkKIHsKICAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lv
bigiUGFyc2luZyIpOworICAgIGlmIChjb2RlVHlwZSA9PSBKU1BhcnNlckNvZGVUeXBlOjpGdW5j
dGlvbikKKyAgICAgICAgcHJpbnRmKCJQYXJzaW5nIGZ1bmN0aW9uICclcydcbiIsIHNvdXJjZS50
b1N0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKIAogICAgIEFTU0VSVCghc291cmNlLnByb3ZpZGVy
KCktPnNvdXJjZSgpLmlzTnVsbCgpKTsKICAgICBpZiAoc291cmNlLnByb3ZpZGVyKCktPnNvdXJj
ZSgpLmlzOEJpdCgpKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRh
eENoZWNrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5
bnRheENoZWNrZXIuaAkocmV2aXNpb24gMTg2NzE5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9TeW50YXhDaGVja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDYgQEAg
cHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB0eXBlZGVmIFN5bnRheENoZWNrZXIgRnVuY3Rp
b25Cb2R5QnVpbGRlcjsKICAgICBlbnVtIHsgTm9uZUV4cHIgPSAwLAogICAgICAgICBSZXNvbHZl
RXZhbEV4cHIsIFJlc29sdmVFeHByLCBJbnRlZ2VyRXhwciwgRG91YmxlRXhwciwgU3RyaW5nRXhw
ciwKICAgICAgICAgVGhpc0V4cHIsIE51bGxFeHByLCBCb29sRXhwciwgUmVnRXhwRXhwciwgT2Jq
ZWN0TGl0ZXJhbEV4cHIsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256675</attachid>
            <date>2015-07-11 20:23:12 -0700</date>
            <delta_ts>2015-07-13 13:13:57 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>65940</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHRSZWYuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHRSZWYuY3BwCShyZXZpc2lv
biAxODY3MTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBwcml2YXRlOgogc3RhdGljIGJvb2wgcGFy
c2VTY3JpcHQoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9yJiBl
cnJvcikKIHsKICAgICByZXR1cm4gISFKU0M6OnBhcnNlPEpTQzo6UHJvZ3JhbU5vZGU+KAotICAg
ICAgICB2bSwgc291cmNlLCAwLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5v
dEJ1aWx0aW4sIAorICAgICAgICB2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVp
bHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIAogICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0
cmljdCwgSlNQYXJzZXJDb2RlVHlwZTo6UHJvZ3JhbSwgCiAgICAgICAgIGVycm9yKTsKIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhl
Y3V0YWJsZXMuY3BwCShyZXZpc2lvbiAxODY3MTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNyAr
NjksNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1CiAgICAgVW5s
aW5rZWRGdW5jdGlvbktpbmQga2luZCA9IGlzUGFyc2luZ0RlZmF1bHRDb25zdHJ1Y3RvciA/IFVu
bGlua2VkTm9ybWFsRnVuY3Rpb24gOiBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbjsKICAgICBSZWZQ
dHI8U291cmNlUHJvdmlkZXI+IHNvdXJjZU92ZXJyaWRlID0gaXNQYXJzaW5nRGVmYXVsdENvbnN0
cnVjdG9yID8gc291cmNlLnByb3ZpZGVyKCkgOiBudWxscHRyOwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxQcm9ncmFtTm9kZT4gcHJvZ3JhbSA9IHBhcnNlPFByb2dyYW1Ob2RlPigKLSAgICAgICAgJm1f
dm0sIHNvdXJjZSwgMCwgSWRlbnRpZmllcigpLCBidWlsdGluTW9kZSwgCisgICAgICAgICZtX3Zt
LCBzb3VyY2UsIElkZW50aWZpZXIoKSwgYnVpbHRpbk1vZGUsIAogICAgICAgICBKU1BhcnNlclN0
cmljdE1vZGU6Ok5vdFN0cmljdCwgCiAgICAgICAgIEpTUGFyc2VyQ29kZVR5cGU6OlByb2dyYW0s
CiAgICAgICAgIGVycm9yLCAmcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSwgY29uc3RydWN0b3JL
aW5kKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTg2NzE5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjAsNyArNjAsNyBAQCBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhCiAg
ICAgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSA9IGV4ZWN1dGFibGUtPmlzQnVpbHRp
bkZ1bmN0aW9uKCkgPyBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpCdWlsdGluIDogSlNQYXJzZXJCdWls
dGluTW9kZTo6Tm90QnVpbHRpbjsKICAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSA9
IGV4ZWN1dGFibGUtPmlzSW5TdHJpY3RDb250ZXh0KCkgPyBKU1BhcnNlclN0cmljdE1vZGU6OlN0
cmljdCA6IEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0OwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxGdW5jdGlvbk5vZGU+IGZ1bmN0aW9uID0gcGFyc2U8RnVuY3Rpb25Ob2RlPigKLSAgICAgICAg
JnZtLCBzb3VyY2UsIGV4ZWN1dGFibGUtPnBhcmFtZXRlcnMoKSwgZXhlY3V0YWJsZS0+bmFtZSgp
LCBidWlsdGluTW9kZSwKKyAgICAgICAgJnZtLCBzb3VyY2UsIGV4ZWN1dGFibGUtPm5hbWUoKSwg
YnVpbHRpbk1vZGUsCiAgICAgICAgIHN0cmljdE1vZGUsIEpTUGFyc2VyQ29kZVR5cGU6OkZ1bmN0
aW9uLCBlcnJvciwgMCk7CiAKICAgICBpZiAoIWZ1bmN0aW9uKSB7CkBAIC02OCw3ICs2OCw3IEBA
IHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmEKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogCi0gICAgZnVuY3Rpb24tPmZpbmlzaFBhcnNpbmcoZXhlY3V0YWJs
ZS0+cGFyYW1ldGVycygpLCBleGVjdXRhYmxlLT5uYW1lKCksIGV4ZWN1dGFibGUtPmZ1bmN0aW9u
TW9kZSgpKTsKKyAgICBmdW5jdGlvbi0+ZmluaXNoUGFyc2luZyhleGVjdXRhYmxlLT5uYW1lKCks
IGV4ZWN1dGFibGUtPmZ1bmN0aW9uTW9kZSgpKTsKICAgICBleGVjdXRhYmxlLT5yZWNvcmRQYXJz
ZShmdW5jdGlvbi0+ZmVhdHVyZXMoKSwgZnVuY3Rpb24tPmhhc0NhcHR1cmVkVmFyaWFibGVzKCkp
OwogICAgIAogICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IFVubGlua2Vk
RnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSgmdm0sIEZ1bmN0aW9uQ29kZSwKQEAgLTg0LDcgKzg0
LDYgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuYwogICAgIDogQmFz
ZSgqdm0sIHN0cnVjdHVyZSkKICAgICAsIG1fbmFtZShub2RlLT5pZGVudCgpKQogICAgICwgbV9p
bmZlcnJlZE5hbWUobm9kZS0+aW5mZXJyZWROYW1lKCkpCi0gICAgLCBtX3BhcmFtZXRlcnMobm9k
ZS0+cGFyYW1ldGVycygpKQogICAgICwgbV9zb3VyY2VPdmVycmlkZShXVEY6Om1vdmUoc291cmNl
T3ZlcnJpZGUpKQogICAgICwgbV9maXJzdExpbmVPZmZzZXQobm9kZS0+Zmlyc3RMaW5lKCkgLSBz
b3VyY2UuZmlyc3RMaW5lKCkpCiAgICAgLCBtX2xpbmVDb3VudChub2RlLT5sYXN0TGluZSgpIC0g
bm9kZS0+Zmlyc3RMaW5lKCkpCkBAIC05Niw2ICs5NSw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlOjpVbmxpbmtlZEZ1bmMKICAgICAsIG1fcGFyYW1ldGVyc1N0YXJ0T2Zmc2V0KG5vZGUt
PnBhcmFtZXRlcnNTdGFydCgpKQogICAgICwgbV90eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQobm9k
ZS0+ZnVuY3Rpb25LZXl3b3JkU3RhcnQoKSkKICAgICAsIG1fdHlwZVByb2ZpbGluZ0VuZE9mZnNl
dChub2RlLT5zdGFydFN0YXJ0T2Zmc2V0KCkgKyBub2RlLT5zb3VyY2UoKS5sZW5ndGgoKSAtIDEp
CisgICAgLCBtX3BhcmFtZXRlckNvdW50KG5vZGUtPnBhcmFtZXRlckNvdW50KCkpCiAgICAgLCBt
X2ZlYXR1cmVzKDApCiAgICAgLCBtX2lzSW5TdHJpY3RDb250ZXh0KG5vZGUtPmlzSW5TdHJpY3RD
b250ZXh0KCkpCiAgICAgLCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzKGZhbHNlKQpAQCAtMTA2LDEx
ICsxMDYsNiBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jCiAgICAg
QVNTRVJUKG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihub2RlLT5j
b25zdHJ1Y3RvcktpbmQoKSkpOwogfQogCi1zaXplX3QgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU6OnBhcmFtZXRlckNvdW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wYXJhbWV0ZXJzLT5z
aXplKCk7Ci19Ci0KIHZvaWQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSogdGhpc09iamVjdCA9IGpzQ2FzdDxVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSo+KGNlbGwpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgJKHJldmlzaW9uIDE4NjcxOSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkp
CkBAIC00OCw3ICs0OCw2IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgRGVidWdnZXI7CiBjbGFz
cyBGdW5jdGlvbkJvZHlOb2RlOwogY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwotY2xhc3MgRnVu
Y3Rpb25QYXJhbWV0ZXJzOwogY2xhc3MgSlNTY29wZTsKIGNsYXNzIFBhcnNlckVycm9yOwogY2xh
c3MgU2NyaXB0RXhlY3V0YWJsZTsKQEAgLTEyMiw3ICsxMjEsNyBAQCBwdWJsaWM6CiAgICAgewog
ICAgICAgICByZXR1cm4gKGtpbmQgPT0gQ29kZUZvckNhbGwpID8gbV9zeW1ib2xUYWJsZUZvckNh
bGwuZ2V0KCkgOiBtX3N5bWJvbFRhYmxlRm9yQ29uc3RydWN0LmdldCgpOwogICAgIH0KLSAgICBz
aXplX3QgcGFyYW1ldGVyQ291bnQoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBwYXJhbWV0ZXJDb3Vu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVyQ291bnQ7IH07CiAgICAgYm9vbCBpc0luU3Ry
aWN0Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJblN0cmljdENvbnRleHQ7IH0KICAgICBG
dW5jdGlvbk1vZGUgZnVuY3Rpb25Nb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RnVu
Y3Rpb25Nb2RlPihtX2Z1bmN0aW9uTW9kZSk7IH0KICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3Ry
dWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5kPiht
X2NvbnN0cnVjdG9yS2luZCk7IH0KQEAgLTE1NCw4ICsxNTMsNiBAQCBwdWJsaWM6CiAgICAgICAg
IG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LmNsZWFyKCk7CiAgICAgfQogCi0gICAgRnVuY3Rpb25Q
YXJhbWV0ZXJzKiBwYXJhbWV0ZXJzKCkgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLmdldCgpOyB9Ci0K
ICAgICB2b2lkIHJlY29yZFBhcnNlKENvZGVGZWF0dXJlcyBmZWF0dXJlcywgYm9vbCBoYXNDYXB0
dXJlZFZhcmlhYmxlcykKICAgICB7CiAgICAgICAgIG1fZmVhdHVyZXMgPSBmZWF0dXJlczsKQEAg
LTE4MSw3ICsxNzgsNiBAQCBwcml2YXRlOgogICAgIFdyaXRlQmFycmllcjxKU1N0cmluZz4gbV9u
YW1lVmFsdWU7CiAgICAgV3JpdGVCYXJyaWVyPFN5bWJvbFRhYmxlPiBtX3N5bWJvbFRhYmxlRm9y
Q2FsbDsKICAgICBXcml0ZUJhcnJpZXI8U3ltYm9sVGFibGU+IG1fc3ltYm9sVGFibGVGb3JDb25z
dHJ1Y3Q7Ci0gICAgUmVmUHRyPEZ1bmN0aW9uUGFyYW1ldGVycz4gbV9wYXJhbWV0ZXJzOwogICAg
IFJlZlB0cjxTb3VyY2VQcm92aWRlcj4gbV9zb3VyY2VPdmVycmlkZTsKICAgICB1bnNpZ25lZCBt
X2ZpcnN0TGluZU9mZnNldDsKICAgICB1bnNpZ25lZCBtX2xpbmVDb3VudDsKQEAgLTE5Myw2ICsx
ODksNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fcGFyYW1ldGVyc1N0YXJ0T2Zmc2V0Owog
ICAgIHVuc2lnbmVkIG1fdHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0OwogICAgIHVuc2lnbmVkIG1f
dHlwZVByb2ZpbGluZ0VuZE9mZnNldDsKKyAgICB1bnNpZ25lZCBtX3BhcmFtZXRlckNvdW50Owog
CiAgICAgQ29kZUZlYXR1cmVzIG1fZmVhdHVyZXM7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHJldmlzaW9uIDE4
NjcxOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2Vu
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzExNiwxMCArMzExNiw2IEBAIFJlZ2lzdGVySUQqIERl
c3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZToKICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rl
c3RpbmF0aW9uSWZOZWVkZWQoZHN0LCBpbml0aWFsaXplci5nZXQoKSk7CiB9CiAKLURlc3RydWN0
dXJpbmdQYXR0ZXJuTm9kZTo6fkRlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSgpCi17Ci19Ci0KIHN0
YXRpYyB2b2lkIGFzc2lnbkRlZmF1bHRWYWx1ZUlmVW5kZWZpbmVkKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIG1heWJlVW5kZWZpbmVkLCBFeHByZXNzaW9uTm9kZSog
ZGVmYXVsdFZhbHVlKQogewogICAgIEFTU0VSVChkZWZhdWx0VmFsdWUpOwpAQCAtMzI3Nyw3ICsz
MjczLDcgQEAgdm9pZCBBcnJheVBhdHRlcm5Ob2RlOjp0b1N0cmluZyhTdHJpbmdCdQogdm9pZCBB
cnJheVBhdHRlcm5Ob2RlOjpjb2xsZWN0Qm91bmRJZGVudGlmaWVycyhWZWN0b3I8SWRlbnRpZmll
cj4mIGlkZW50aWZpZXJzKSBjb25zdAogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90
YXJnZXRQYXR0ZXJucy5zaXplKCk7IGkrKykgewotICAgICAgICBpZiAoRGVzdHJ1Y3R1cmluZ1Bh
dHRlcm5Ob2RlKiBub2RlID0gbV90YXJnZXRQYXR0ZXJuc1tpXS5wYXR0ZXJuLmdldCgpKQorICAg
ICAgICBpZiAoRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiBub2RlID0gbV90YXJnZXRQYXR0ZXJu
c1tpXS5wYXR0ZXJuKQogICAgICAgICAgICAgbm9kZS0+Y29sbGVjdEJvdW5kSWRlbnRpZmllcnMo
aWRlbnRpZmllcnMpOwogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvQVNUQnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvQVNUQnVpbGRlci5oCShyZXZpc2lvbiAxODY3MTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtOTMsOCArOTMsNiBAQCBw
dWJsaWM6CiAgICAgfTsKIAogCi0gICAgdHlwZWRlZiBTeW50YXhDaGVja2VyIEZ1bmN0aW9uQm9k
eUJ1aWxkZXI7Ci0KICAgICB0eXBlZGVmIEV4cHJlc3Npb25Ob2RlKiBFeHByZXNzaW9uOwogICAg
IHR5cGVkZWYgSlNDOjpTb3VyY2VFbGVtZW50cyogU291cmNlRWxlbWVudHM7CiAgICAgdHlwZWRl
ZiBBcmd1bWVudHNOb2RlKiBBcmd1bWVudHM7CkBAIC0xMDksNyArMTA3LDcgQEAgcHVibGljOgog
ICAgIHR5cGVkZWYgVGVtcGxhdGVTdHJpbmdMaXN0Tm9kZSogVGVtcGxhdGVTdHJpbmdMaXN0Owog
ICAgIHR5cGVkZWYgVGVtcGxhdGVMaXRlcmFsTm9kZSogVGVtcGxhdGVMaXRlcmFsOwogI2VuZGlm
Ci0gICAgdHlwZWRlZiBQYXJhbWV0ZXJOb2RlKiBGb3JtYWxQYXJhbWV0ZXJMaXN0OworICAgIHR5
cGVkZWYgRnVuY3Rpb25QYXJhbWV0ZXJzKiBGb3JtYWxQYXJhbWV0ZXJMaXN0OwogICAgIHR5cGVk
ZWYgRnVuY3Rpb25Cb2R5Tm9kZSogRnVuY3Rpb25Cb2R5OwogI2lmIEVOQUJMRShFUzZfQ0xBU1Nf
U1lOVEFYKQogICAgIHR5cGVkZWYgQ2xhc3NFeHByTm9kZSogQ2xhc3NFeHByZXNzaW9uOwpAQCAt
MTE5LDEwICsxMTcsMTAgQEAgcHVibGljOgogICAgIHR5cGVkZWYgQ2FzZUNsYXVzZU5vZGUqIENs
YXVzZTsKICAgICB0eXBlZGVmIENvbnN0RGVjbE5vZGUqIENvbnN0RGVjbExpc3Q7CiAgICAgdHlw
ZWRlZiBzdGQ6OnBhaXI8RXhwcmVzc2lvbk5vZGUqLCBCaW5hcnlPcEluZm8+IEJpbmFyeU9wZXJh
bmQ7Ci0gICAgdHlwZWRlZiBSZWZQdHI8RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlPiBEZXN0cnVj
dHVyaW5nUGF0dGVybjsKLSAgICB0eXBlZGVmIFJlZlB0cjxBcnJheVBhdHRlcm5Ob2RlPiBBcnJh
eVBhdHRlcm47Ci0gICAgdHlwZWRlZiBSZWZQdHI8T2JqZWN0UGF0dGVybk5vZGU+IE9iamVjdFBh
dHRlcm47Ci0gICAgdHlwZWRlZiBSZWZQdHI8QmluZGluZ05vZGU+IEJpbmRpbmdQYXR0ZXJuOwor
ICAgIHR5cGVkZWYgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiBEZXN0cnVjdHVyaW5nUGF0dGVy
bjsKKyAgICB0eXBlZGVmIEFycmF5UGF0dGVybk5vZGUqIEFycmF5UGF0dGVybjsKKyAgICB0eXBl
ZGVmIE9iamVjdFBhdHRlcm5Ob2RlKiBPYmplY3RQYXR0ZXJuOworICAgIHR5cGVkZWYgQmluZGlu
Z05vZGUqIEJpbmRpbmdQYXR0ZXJuOwogICAgIHN0YXRpYyBjb25zdCBib29sIENyZWF0ZXNBU1Qg
PSB0cnVlOwogICAgIHN0YXRpYyBjb25zdCBib29sIE5lZWRzRnJlZVZhcmlhYmxlSW5mbyA9IHRy
dWU7CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgQ2FuVXNlRnVuY3Rpb25DYWNoZSA9IHRydWU7CkBA
IC0zNDcsNyArMzQ1LDcgQEAgcHVibGljOgogICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVGdW5j
dGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgUGFyc2VyRnVu
Y3Rpb25JbmZvPEFTVEJ1aWxkZXI+JiBpbmZvKQogICAgIHsKICAgICAgICAgRnVuY0V4cHJOb2Rl
KiByZXN1bHQgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIEZ1bmNFeHByTm9kZShsb2NhdGlvbiwgKmlu
Zm8ubmFtZSwgaW5mby5ib2R5LAotICAgICAgICAgICAgbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNz
aW9uKGluZm8uc3RhcnRGdW5jdGlvbk9mZnNldCwgaW5mby5lbmRGdW5jdGlvbk9mZnNldCwgaW5m
by5ib2R5U3RhcnRMaW5lLCBpbmZvLmJvZHlTdGFydENvbHVtbiksIGluZm8ucGFyYW1ldGVycyk7
CisgICAgICAgICAgICBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24oaW5mby5zdGFydEZ1bmN0
aW9uT2Zmc2V0LCBpbmZvLmVuZEZ1bmN0aW9uT2Zmc2V0LCBpbmZvLmJvZHlTdGFydExpbmUsIGlu
Zm8uYm9keVN0YXJ0Q29sdW1uKSk7CiAgICAgICAgIGluZm8uYm9keS0+c2V0TG9jKGluZm8uYm9k
eVN0YXJ0TGluZSwgaW5mby5ib2R5RW5kTGluZSwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0
aW9uLmxpbmVTdGFydE9mZnNldCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAt
MzU2LDEyICszNTQsMTIgQEAgcHVibGljOgogICAgICAgICBjb25zdCBKU1Rva2VuTG9jYXRpb24m
IHN0YXJ0TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIAogICAg
ICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBpbnQgZnVuY3Rp
b25LZXl3b3JkU3RhcnQsIAogICAgICAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJh
bWV0ZXJzU3RhcnQsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCAKLSAgICAgICAgQ29uc3RydWN0b3JL
aW5kIGNvbnN0cnVjdG9yS2luZCkKKyAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9y
S2luZCwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQpCiAgICAgewogICAgICAgICByZXR1cm4gbmV3
IChtX3BhcnNlckFyZW5hKSBGdW5jdGlvbkJvZHlOb2RlKAogICAgICAgICAgICAgbV9wYXJzZXJB
cmVuYSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4s
IAogICAgICAgICAgICAgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBw
YXJhbWV0ZXJzU3RhcnQsIAotICAgICAgICAgICAgaW5TdHJpY3RDb250ZXh0LCBjb25zdHJ1Y3Rv
cktpbmQpOworICAgICAgICAgICAgaW5TdHJpY3RDb250ZXh0LCBjb25zdHJ1Y3RvcktpbmQsIHBh
cmFtZXRlckNvdW50KTsKICAgICB9CiAKICNpZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lO
VEFYKQpAQCAtMzcxLDcgKzM2OSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgID8gbV9zb3VyY2VD
b2RlLT5zdWJBcnJvd0V4cHJlc3Npb24oaW5mby5hcnJvd0Z1bmN0aW9uT2Zmc2V0LCBpbmZvLmVu
ZEZ1bmN0aW9uT2Zmc2V0LCBpbmZvLmJvZHlTdGFydExpbmUsIGluZm8uYm9keVN0YXJ0Q29sdW1u
KQogICAgICAgICAgICAgOiBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24oaW5mby5zdGFydEZ1
bmN0aW9uT2Zmc2V0LCBpbmZvLmVuZEZ1bmN0aW9uT2Zmc2V0LCBpbmZvLmJvZHlTdGFydExpbmUs
IGluZm8uYm9keVN0YXJ0Q29sdW1uKTsKIAotICAgICAgICBGdW5jRXhwck5vZGUqIHJlc3VsdCA9
IG5ldyAobV9wYXJzZXJBcmVuYSkgRnVuY0V4cHJOb2RlKGxvY2F0aW9uLCAqaW5mby5uYW1lLCBp
bmZvLmJvZHksIHNvdXJjZSwgaW5mby5wYXJhbWV0ZXJzKTsKKyAgICAgICAgRnVuY0V4cHJOb2Rl
KiByZXN1bHQgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIEZ1bmNFeHByTm9kZShsb2NhdGlvbiwgKmlu
Zm8ubmFtZSwgaW5mby5ib2R5LCBzb3VyY2UpOwogICAgICAgICBpbmZvLmJvZHktPnNldExvYyhp
bmZvLmJvZHlTdGFydExpbmUsIGluZm8uYm9keUVuZExpbmUsIGxvY2F0aW9uLnN0YXJ0T2Zmc2V0
LCBsb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
IH0KQEAgLTM4NCw3ICszODIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGluZm8uYm9keS0+c2V0TG9j
KGluZm8uYm9keVN0YXJ0TGluZSwgaW5mby5ib2R5RW5kTGluZSwgbG9jYXRpb24uc3RhcnRPZmZz
ZXQsIGxvY2F0aW9uLmxpbmVTdGFydE9mZnNldCk7CiAgICAgICAgIGluZm8uYm9keS0+c2V0SW5m
ZXJyZWROYW1lKCpuYW1lKTsKICAgICAgICAgU291cmNlQ29kZSBzb3VyY2UgPSBtX3NvdXJjZUNv
ZGUtPnN1YkV4cHJlc3Npb24oaW5mby5zdGFydEZ1bmN0aW9uT2Zmc2V0LCBpbmZvLmVuZEZ1bmN0
aW9uT2Zmc2V0LCBpbmZvLmJvZHlTdGFydExpbmUsIGluZm8uYm9keVN0YXJ0Q29sdW1uKTsKLSAg
ICAgICAgRnVuY0V4cHJOb2RlKiBmdW5jRXhwciA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRnVuY0V4
cHJOb2RlKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllciwgaW5m
by5ib2R5LCBzb3VyY2UsIGluZm8ucGFyYW1ldGVycyk7CisgICAgICAgIEZ1bmNFeHByTm9kZSog
ZnVuY0V4cHIgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIEZ1bmNFeHByTm9kZShsb2NhdGlvbiwgbV92
bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIsIGluZm8uYm9keSwgc291cmNlKTsKICAg
ICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgUHJvcGVydHlOb2RlKCpuYW1lLCBmdW5j
RXhwciwgdHlwZSwgUHJvcGVydHlOb2RlOjpVbmtub3duLCBzdXBlckJpbmRpbmcpOwogICAgIH0K
ICAgICAKQEAgLTM5NCw3ICszOTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGluZm8uYm9keS0+c2V0
TG9jKGluZm8uYm9keVN0YXJ0TGluZSwgaW5mby5ib2R5RW5kTGluZSwgbG9jYXRpb24uc3RhcnRP
ZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFydE9mZnNldCk7CiAgICAgICAgIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50ID0gcGFyc2VyQXJlbmEuaWRlbnRpZmllckFyZW5hKCkubWFrZU51bWVyaWNJZGVu
dGlmaWVyKHZtLCBuYW1lKTsKICAgICAgICAgU291cmNlQ29kZSBzb3VyY2UgPSBtX3NvdXJjZUNv
ZGUtPnN1YkV4cHJlc3Npb24oaW5mby5zdGFydEZ1bmN0aW9uT2Zmc2V0LCBpbmZvLmVuZEZ1bmN0
aW9uT2Zmc2V0LCBpbmZvLmJvZHlTdGFydExpbmUsIGluZm8uYm9keVN0YXJ0Q29sdW1uKTsKLSAg
ICAgICAgRnVuY0V4cHJOb2RlKiBmdW5jRXhwciA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRnVuY0V4
cHJOb2RlKGxvY2F0aW9uLCB2bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIsIGluZm8u
Ym9keSwgc291cmNlLCBpbmZvLnBhcmFtZXRlcnMpOworICAgICAgICBGdW5jRXhwck5vZGUqIGZ1
bmNFeHByID0gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5jRXhwck5vZGUobG9jYXRpb24sIHZtLT5w
cm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllciwgaW5mby5ib2R5LCBzb3VyY2UpOwogICAgICAg
ICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBQcm9wZXJ0eU5vZGUoaWRlbnQsIGZ1bmNFeHBy
LCB0eXBlLCBQcm9wZXJ0eU5vZGU6OlVua25vd24sIHN1cGVyQmluZGluZyk7CiAgICAgfQogCkBA
IC00MjAsOCArNDE4LDggQEAgcHVibGljOgogICAgIEVsZW1lbnROb2RlKiBjcmVhdGVFbGVtZW50
TGlzdChpbnQgZWxpc2lvbnMsIEV4cHJlc3Npb25Ob2RlKiBleHByKSB7IHJldHVybiBuZXcgKG1f
cGFyc2VyQXJlbmEpIEVsZW1lbnROb2RlKGVsaXNpb25zLCBleHByKTsgfQogICAgIEVsZW1lbnRO
b2RlKiBjcmVhdGVFbGVtZW50TGlzdChFbGVtZW50Tm9kZSogZWxlbXMsIGludCBlbGlzaW9ucywg
RXhwcmVzc2lvbk5vZGUqIGV4cHIpIHsgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgRWxlbWVu
dE5vZGUoZWxlbXMsIGVsaXNpb25zLCBleHByKTsgfQogCi0gICAgUGFyYW1ldGVyTm9kZSogY3Jl
YXRlRm9ybWFsUGFyYW1ldGVyTGlzdChEZXN0cnVjdHVyaW5nUGF0dGVybiBwYXR0ZXJuKSB7IHJl
dHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFBhcmFtZXRlck5vZGUocGF0dGVybik7IH0KLSAgICBQ
YXJhbWV0ZXJOb2RlKiBjcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KFBhcmFtZXRlck5vZGUqIGxp
c3QsIERlc3RydWN0dXJpbmdQYXR0ZXJuIHBhdHRlcm4pIHsgcmV0dXJuIG5ldyAobV9wYXJzZXJB
cmVuYSkgUGFyYW1ldGVyTm9kZShsaXN0LCBwYXR0ZXJuKTsgfQorICAgIEZvcm1hbFBhcmFtZXRl
ckxpc3QgY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdCgpIHsgcmV0dXJuIG5ldyAobV9wYXJzZXJB
cmVuYSkgRnVuY3Rpb25QYXJhbWV0ZXJzKCk7IH0KKyAgICB2b2lkIGFwcGVuZFBhcmFtZXRlcihG
b3JtYWxQYXJhbWV0ZXJMaXN0IGxpc3QsIERlc3RydWN0dXJpbmdQYXR0ZXJuIHBhdHRlcm4pIHsg
bGlzdC0+YXBwZW5kKHBhdHRlcm4pOyB9CiAKICAgICBDYXNlQ2xhdXNlTm9kZSogY3JlYXRlQ2xh
dXNlKEV4cHJlc3Npb25Ob2RlKiBleHByLCBKU0M6OlNvdXJjZUVsZW1lbnRzKiBzdGF0ZW1lbnRz
KSB7IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIENhc2VDbGF1c2VOb2RlKGV4cHIsIHN0YXRl
bWVudHMpOyB9CiAgICAgQ2xhdXNlTGlzdE5vZGUqIGNyZWF0ZUNsYXVzZUxpc3QoQ2FzZUNsYXVz
ZU5vZGUqIGNsYXVzZSkgeyByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBDbGF1c2VMaXN0Tm9k
ZShjbGF1c2UpOyB9CkBAIC00MzAsNyArNDI4LDcgQEAgcHVibGljOgogICAgIFN0YXRlbWVudE5v
ZGUqIGNyZWF0ZUZ1bmNEZWNsU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgaW5mbykKICAgICB7CiAg
ICAgICAgIEZ1bmNEZWNsTm9kZSogZGVjbCA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRnVuY0RlY2xO
b2RlKGxvY2F0aW9uLCAqaW5mby5uYW1lLCBpbmZvLmJvZHksCi0gICAgICAgICAgICBtX3NvdXJj
ZUNvZGUtPnN1YkV4cHJlc3Npb24oaW5mby5zdGFydEZ1bmN0aW9uT2Zmc2V0LCBpbmZvLmVuZEZ1
bmN0aW9uT2Zmc2V0LCBpbmZvLmJvZHlTdGFydExpbmUsIGluZm8uYm9keVN0YXJ0Q29sdW1uKSwg
aW5mby5wYXJhbWV0ZXJzKTsKKyAgICAgICAgICAgIG1fc291cmNlQ29kZS0+c3ViRXhwcmVzc2lv
bihpbmZvLnN0YXJ0RnVuY3Rpb25PZmZzZXQsIGluZm8uZW5kRnVuY3Rpb25PZmZzZXQsIGluZm8u
Ym9keVN0YXJ0TGluZSwgaW5mby5ib2R5U3RhcnRDb2x1bW4pKTsKICAgICAgICAgaWYgKCppbmZv
Lm5hbWUgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzKQogICAgICAgICAgICAgdXNl
c0FyZ3VtZW50cygpOwogICAgICAgICBtX3Njb3BlLm1fZnVuY0RlY2xhcmF0aW9ucy5hcHBlbmQo
ZGVjbC0+Ym9keSgpKTsKQEAgLTQ4Niw5ICs0ODQsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZvckluTG9v
cChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQYXNzUmVmUHRyPERlc3RydWN0dXJp
bmdQYXR0ZXJuTm9kZT4gcGF0dGVybiwgRXhwcmVzc2lvbk5vZGUqIGl0ZXIsIFN0YXRlbWVudE5v
ZGUqIHN0YXRlbWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlU3RhcnQsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBlRGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlRW5kLCBpbnQgc3RhcnQs
IGludCBlbmQpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRm9ySW5Mb29wKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIERlc3RydWN0dXJpbmdQYXR0ZXJuIHBhdHRlcm4sIEV4cHJl
c3Npb25Ob2RlKiBpdGVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnRzLCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZVN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZURpdm90LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZUVuZCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogICAgIHsKLSAgICAgICAgYXV0
byBsZXhwciA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2Rl
KGxvY2F0aW9uLCBwYXR0ZXJuLmdldCgpLCAwKTsKKyAgICAgICAgYXV0byBsZXhwciA9IG5ldyAo
bV9wYXJzZXJBcmVuYSkgRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlKGxvY2F0aW9uLCBwYXR0
ZXJuLCAwKTsKICAgICAgICAgcmV0dXJuIGNyZWF0ZUZvckluTG9vcChsb2NhdGlvbiwgbGV4cHIs
IGl0ZXIsIHN0YXRlbWVudHMsIGVTdGFydCwgZURpdm90LCBlRW5kLCBzdGFydCwgZW5kKTsKICAg
ICB9CiAgICAgCkBAIC01MDAsOSArNDk4LDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0KICAgICAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVGb3JPZkxvb3AoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUGFzc1JlZlB0cjxEZXN0cnVjdHVyaW5nUGF0
dGVybk5vZGU+IHBhdHRlcm4sIEV4cHJlc3Npb25Ob2RlKiBpdGVyLCBTdGF0ZW1lbnROb2RlKiBz
dGF0ZW1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZVN0YXJ0LCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZURpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZUVuZCwgaW50IHN0YXJ0LCBpbnQg
ZW5kKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZvck9mTG9vcChjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBEZXN0cnVjdHVyaW5nUGF0dGVybiBwYXR0ZXJuLCBFeHByZXNzaW9u
Tm9kZSogaXRlciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50cywgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGVTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVEaXZvdCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGVFbmQsIGludCBzdGFydCwgaW50IGVuZCkKICAgICB7Ci0gICAgICAgIGF1dG8gbGV4
cHIgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIERlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZShsb2Nh
dGlvbiwgcGF0dGVybi5nZXQoKSwgMCk7CisgICAgICAgIGF1dG8gbGV4cHIgPSBuZXcgKG1fcGFy
c2VyQXJlbmEpIERlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZShsb2NhdGlvbiwgcGF0dGVybiwg
MCk7CiAgICAgICAgIHJldHVybiBjcmVhdGVGb3JPZkxvb3AobG9jYXRpb24sIGxleHByLCBpdGVy
LCBzdGF0ZW1lbnRzLCBlU3RhcnQsIGVEaXZvdCwgZUVuZCwgc3RhcnQsIGVuZCk7CiAgICAgfQog
CkBAIC03MzgsMTQgKzczNiwxNCBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzUmVzb2x2ZShFeHBy
ZXNzaW9uTm9kZSogZXhwcikgY29uc3QgeyByZXR1cm4gZXhwci0+aXNSZXNvbHZlTm9kZSgpOyB9
CiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnQoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUGFzc1JlZlB0cjxEZXN0cnVjdHVyaW5nUGF0
dGVybk5vZGU+IHBhdHRlcm4sIEV4cHJlc3Npb25Ob2RlKiBpbml0aWFsaXplcikKKyAgICBFeHBy
ZXNzaW9uTm9kZSogY3JlYXRlRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnQoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gcGF0dGVybiwgRXhwcmVzc2lv
bk5vZGUqIGluaXRpYWxpemVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJB
cmVuYSkgRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlKGxvY2F0aW9uLCBwYXR0ZXJuLmdldCgp
LCBpbml0aWFsaXplcik7CisgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIERlc3Ry
dWN0dXJpbmdBc3NpZ25tZW50Tm9kZShsb2NhdGlvbiwgcGF0dGVybiwgaW5pdGlhbGl6ZXIpOwog
ICAgIH0KICAgICAKICAgICBBcnJheVBhdHRlcm4gY3JlYXRlQXJyYXlQYXR0ZXJuKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYpCiAgICAgewotICAgICAgICByZXR1cm4gQXJyYXlQYXR0ZXJuTm9kZTo6
Y3JlYXRlKCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEFycmF5UGF0dGVy
bk5vZGUoKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBhcHBlbmRBcnJheVBhdHRlcm5Ta2lwRW50
cnkoQXJyYXlQYXR0ZXJuIG5vZGUsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24pCkBA
IC03NTUsMzIgKzc1MywzMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGVuZEFycmF5UGF0dGVy
bkVudHJ5KEFycmF5UGF0dGVybiBub2RlLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9u
LCBEZXN0cnVjdHVyaW5nUGF0dGVybiBwYXR0ZXJuLCBFeHByZXNzaW9uTm9kZSogZGVmYXVsdFZh
bHVlKQogICAgIHsKLSAgICAgICAgbm9kZS0+YXBwZW5kSW5kZXgoQXJyYXlQYXR0ZXJuTm9kZTo6
QmluZGluZ1R5cGU6OkVsZW1lbnQsIGxvY2F0aW9uLCBwYXR0ZXJuLmdldCgpLCBkZWZhdWx0VmFs
dWUpOworICAgICAgICBub2RlLT5hcHBlbmRJbmRleChBcnJheVBhdHRlcm5Ob2RlOjpCaW5kaW5n
VHlwZTo6RWxlbWVudCwgbG9jYXRpb24sIHBhdHRlcm4sIGRlZmF1bHRWYWx1ZSk7CiAgICAgfQog
CiAgICAgdm9pZCBhcHBlbmRBcnJheVBhdHRlcm5SZXN0RW50cnkoQXJyYXlQYXR0ZXJuIG5vZGUs
IGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIERlc3RydWN0dXJpbmdQYXR0ZXJuIHBh
dHRlcm4pCiAgICAgewotICAgICAgICBub2RlLT5hcHBlbmRJbmRleChBcnJheVBhdHRlcm5Ob2Rl
OjpCaW5kaW5nVHlwZTo6UmVzdEVsZW1lbnQsIGxvY2F0aW9uLCBwYXR0ZXJuLmdldCgpLCBudWxs
cHRyKTsKKyAgICAgICAgbm9kZS0+YXBwZW5kSW5kZXgoQXJyYXlQYXR0ZXJuTm9kZTo6QmluZGlu
Z1R5cGU6OlJlc3RFbGVtZW50LCBsb2NhdGlvbiwgcGF0dGVybiwgbnVsbHB0cik7CiAgICAgfQog
CiAgICAgdm9pZCBmaW5pc2hBcnJheVBhdHRlcm4oQXJyYXlQYXR0ZXJuIG5vZGUsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKICAgICB7Ci0gICAgICAgIHNldEV4Y2VwdGlv
bkxvY2F0aW9uKG5vZGUuZ2V0KCksIGRpdm90U3RhcnQsIGRpdm90LCBkaXZvdEVuZCk7CisgICAg
ICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIGRpdm90U3RhcnQsIGRpdm90LCBkaXZvdEVu
ZCk7CiAgICAgfQogICAgIAogICAgIE9iamVjdFBhdHRlcm4gY3JlYXRlT2JqZWN0UGF0dGVybihj
b25zdCBKU1Rva2VuTG9jYXRpb24mKQogICAgIHsKLSAgICAgICAgcmV0dXJuIE9iamVjdFBhdHRl
cm5Ob2RlOjpjcmVhdGUoKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgT2Jq
ZWN0UGF0dGVybk5vZGUoKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBhcHBlbmRPYmplY3RQYXR0
ZXJuRW50cnkoT2JqZWN0UGF0dGVybiBub2RlLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBib29sIHdhc1N0cmluZywgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgRGVzdHJ1
Y3R1cmluZ1BhdHRlcm4gcGF0dGVybiwgRXhwcmVzc2lvbk5vZGUqIGRlZmF1bHRWYWx1ZSkKICAg
ICB7Ci0gICAgICAgIG5vZGUtPmFwcGVuZEVudHJ5KGxvY2F0aW9uLCBpZGVudGlmaWVyLCB3YXNT
dHJpbmcsIHBhdHRlcm4uZ2V0KCksIGRlZmF1bHRWYWx1ZSk7CisgICAgICAgIG5vZGUtPmFwcGVu
ZEVudHJ5KGxvY2F0aW9uLCBpZGVudGlmaWVyLCB3YXNTdHJpbmcsIHBhdHRlcm4sIGRlZmF1bHRW
YWx1ZSk7CiAgICAgfQogICAgIAogICAgIEJpbmRpbmdQYXR0ZXJuIGNyZWF0ZUJpbmRpbmdMb2Nh
dGlvbihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiBib3VuZFByb3Bl
cnR5LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBl
bmQpCiAgICAgewotICAgICAgICByZXR1cm4gQmluZGluZ05vZGU6OmNyZWF0ZShib3VuZFByb3Bl
cnR5LCBzdGFydCwgZW5kKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgQmlu
ZGluZ05vZGUoYm91bmRQcm9wZXJ0eSwgc3RhcnQsIGVuZCk7CiAgICAgfQogCiAgICAgdm9pZCBz
ZXRFbmRPZmZzZXQoTm9kZSogbm9kZSwgaW50IG9mZnNldCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCShyZXZpc2lvbiAxODY3MTkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAkod29y
a2luZyBjb3B5KQpAQCAtODIwLDM0ICs4MjAsMjIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewog
ICAgIH0KIAotICAgIGlubGluZSBQYXJhbWV0ZXJOb2RlOjpQYXJhbWV0ZXJOb2RlKFBhc3NSZWZQ
dHI8RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlPiBwYXR0ZXJuKQotICAgICAgICA6IG1fcGF0dGVy
bihwYXR0ZXJuKQotICAgICAgICAsIG1fbmV4dCgwKQorICAgIGlubGluZSBGdW5jdGlvblBhcmFt
ZXRlcnM6OkZ1bmN0aW9uUGFyYW1ldGVycygpCiAgICAgewotICAgICAgICBBU1NFUlQobV9wYXR0
ZXJuKTsKICAgICB9CiAKLSAgICBpbmxpbmUgUGFyYW1ldGVyTm9kZTo6UGFyYW1ldGVyTm9kZShQ
YXJhbWV0ZXJOb2RlKiBwcmV2aW91cywgUGFzc1JlZlB0cjxEZXN0cnVjdHVyaW5nUGF0dGVybk5v
ZGU+IHBhdHRlcm4pCi0gICAgICAgIDogbV9wYXR0ZXJuKHBhdHRlcm4pCi0gICAgICAgICwgbV9u
ZXh0KDApCi0gICAgewotICAgICAgICBwcmV2aW91cy0+bV9uZXh0ID0gdGhpczsKLSAgICAgICAg
QVNTRVJUKG1fcGF0dGVybik7Ci0gICAgICAgIEFTU0VSVChwcmV2aW91cy0+bV9wYXR0ZXJuKTsK
LSAgICB9Ci0KLSAgICBpbmxpbmUgRnVuY0V4cHJOb2RlOjpGdW5jRXhwck5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEZ1bmN0aW9u
Qm9keU5vZGUqIGJvZHksIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyYW1ldGVyTm9kZSog
cGFyYW1ldGVyKQorICAgIGlubGluZSBGdW5jRXhwck5vZGU6OkZ1bmNFeHByTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRnVuY3Rp
b25Cb2R5Tm9kZSogYm9keSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQogICAgICAgICA6IEV4
cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fYm9keShib2R5KQogICAgIHsKLSAg
ICAgICAgbV9ib2R5LT5maW5pc2hQYXJzaW5nKHNvdXJjZSwgcGFyYW1ldGVyLCBpZGVudCwgRnVu
Y3Rpb25FeHByZXNzaW9uKTsKKyAgICAgICAgbV9ib2R5LT5maW5pc2hQYXJzaW5nKHNvdXJjZSwg
aWRlbnQsIEZ1bmN0aW9uRXhwcmVzc2lvbik7CiAgICAgfQogCi0gICAgaW5saW5lIEZ1bmNEZWNs
Tm9kZTo6RnVuY0RlY2xOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0
IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIFBhcmFtZXRlck5vZGUqIHBhcmFtZXRlcikKKyAgICBpbmxpbmUgRnVuY0Rl
Y2xOb2RlOjpGdW5jRGVjbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSkKICAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgICAg
ICAsIG1fYm9keShib2R5KQogICAgIHsKLSAgICAgICAgbV9ib2R5LT5maW5pc2hQYXJzaW5nKHNv
dXJjZSwgcGFyYW1ldGVyLCBpZGVudCwgRnVuY3Rpb25EZWNsYXJhdGlvbik7CisgICAgICAgIG1f
Ym9keS0+ZmluaXNoUGFyc2luZyhzb3VyY2UsIGlkZW50LCBGdW5jdGlvbkRlY2xhcmF0aW9uKTsK
ICAgICB9CiAKICNpZiBFTkFCTEUoRVM2X0NMQVNTX1NZTlRBWCkKQEAgLTk0MywyNiArOTMxLDEx
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAgICAgCi0gICAgaW5saW5lIFJlZjxB
cnJheVBhdHRlcm5Ob2RlPiBBcnJheVBhdHRlcm5Ob2RlOjpjcmVhdGUoKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXJyYXlQYXR0ZXJuTm9kZSk7Ci0gICAgfQotICAgIAog
ICAgIGlubGluZSBPYmplY3RQYXR0ZXJuTm9kZTo6T2JqZWN0UGF0dGVybk5vZGUoKQogICAgICAg
ICA6IERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSgpCiAgICAgewogICAgIH0KICAgICAKLSAgICBp
bmxpbmUgUmVmPE9iamVjdFBhdHRlcm5Ob2RlPiBPYmplY3RQYXR0ZXJuTm9kZTo6Y3JlYXRlKCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE9iamVjdFBhdHRlcm5Ob2RlKTsK
LSAgICB9Ci0KLSAgICBpbmxpbmUgUmVmPEJpbmRpbmdOb2RlPiBCaW5kaW5nTm9kZTo6Y3JlYXRl
KGNvbnN0IElkZW50aWZpZXImIGJvdW5kUHJvcGVydHksIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBz
dGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVuZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEJpbmRpbmdOb2RlKGJvdW5kUHJvcGVydHksIHN0YXJ0LCBlbmQpKTsKLSAg
ICB9Ci0gICAgCiAgICAgaW5saW5lIEJpbmRpbmdOb2RlOjpCaW5kaW5nTm9kZShjb25zdCBJZGVu
dGlmaWVyJiBib3VuZFByb3BlcnR5LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBlbmQpCiAgICAgICAgIDogRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2Rl
KCkKICAgICAgICAgLCBtX2Rpdm90U3RhcnQoc3RhcnQpCkBAIC05NzEsNyArOTQ0LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KICAgICAKLSAgICBpbmxpbmUgRGVzdHJ1Y3R1cmlu
Z0Fzc2lnbm1lbnROb2RlOjpEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBsb2NhdGlvbiwgUGFzc1JlZlB0cjxEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU+
IGJpbmRpbmdzLCBFeHByZXNzaW9uTm9kZSogaW5pdGlhbGl6ZXIpCisgICAgaW5saW5lIERlc3Ry
dWN0dXJpbmdBc3NpZ25tZW50Tm9kZTo6RGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogYmlu
ZGluZ3MsIEV4cHJlc3Npb25Ob2RlKiBpbml0aWFsaXplcikKICAgICAgICAgOiBFeHByZXNzaW9u
Tm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2JpbmRpbmdzKGJpbmRpbmdzKQogICAgICAgICAs
IG1faW5pdGlhbGl6ZXIoaW5pdGlhbGl6ZXIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL05vZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL05vZGVzLmNwcAkocmV2aXNpb24gMTg2NzE5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNyw3ICsxMTcsNyBAQCBTdGF0
ZW1lbnROb2RlKiBTY29wZU5vZGU6OnNpbmdsZVN0YXRlbWVuCiAKIC8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSBQcm9ncmFtTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCi1Qcm9ncmFtTm9kZTo6UHJvZ3JhbU5vZGUoUGFyc2VyQXJlbmEmIHBhcnNlckFyZW5hLCBj
b25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgZW5kTG9jYXRpb24sIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4s
IFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2smIHZhclN0YWNrLCBGdW5jdGlvblN0
YWNrJiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50
cykKK1Byb2dyYW1Ob2RlOjpQcm9ncmFtTm9kZShQYXJzZXJBcmVuYSYgcGFyc2VyQXJlbmEsIGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBlbmRMb2NhdGlvbiwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwg
U291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayYgdmFyU3RhY2ssIEZ1bmN0aW9uU3Rh
Y2smIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIEZ1bmN0aW9u
UGFyYW1ldGVycyosIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1
cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQogICAgIDogU2NvcGVOb2RlKHBhcnNlckFyZW5hLCBzdGFy
dExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgc291cmNlLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNT
dGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpCiAgICAgLCBt
X3N0YXJ0Q29sdW1uKHN0YXJ0Q29sdW1uKQogICAgICwgbV9lbmRDb2x1bW4oZW5kQ29sdW1uKQpA
QCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgUHJvZ3JhbU5vZGU6OnNldENsb3NlZFZhcmlhYmxlcyhW
ZWMKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEV2YWxOb2RlIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUV2YWxOb2RlOjpFdmFsTm9kZShQYXJzZXJBcmVuYSYg
cGFyc2VyQXJlbmEsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5zaWduZWQsIHVuc2lnbmVkIGVuZENvbHVt
biwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayYgdmFyU3RhY2ssIEZ1bmN0aW9u
U3RhY2smIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3Rh
bnRzKQorRXZhbE5vZGU6OkV2YWxOb2RlKFBhcnNlckFyZW5hJiBwYXJzZXJBcmVuYSwgY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVu
ZExvY2F0aW9uLCB1bnNpZ25lZCwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyog
Y2hpbGRyZW4sIFZhclN0YWNrJiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayYgZnVuY1N0YWNrLCBJ
ZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgRnVuY3Rpb25QYXJhbWV0ZXJzKiwgY29u
c3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25z
dGFudHMpCiAgICAgOiBTY29wZU5vZGUocGFyc2VyQXJlbmEsIHN0YXJ0TG9jYXRpb24sIGVuZExv
Y2F0aW9uLCBzb3VyY2UsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZh
cmlhYmxlcywgZmVhdHVyZXMsIG51bUNvbnN0YW50cykKICAgICAsIG1fZW5kQ29sdW1uKGVuZENv
bHVtbikKIHsKQEAgLTEzOSwzOSArMTM5LDExIEBAIEV2YWxOb2RlOjpFdmFsTm9kZShQYXJzZXJB
cmVuYSYgcGFyc2VyQXIKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0
aW9uQm9keU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVmPEZ1bmN0aW9u
UGFyYW1ldGVycz4gRnVuY3Rpb25QYXJhbWV0ZXJzOjpjcmVhdGUoUGFyYW1ldGVyTm9kZSogZmly
c3RQYXJhbWV0ZXIpCi17Ci0gICAgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQgPSAwOwotICAgIGZv
ciAoUGFyYW1ldGVyTm9kZSogcGFyYW1ldGVyID0gZmlyc3RQYXJhbWV0ZXI7IHBhcmFtZXRlcjsg
cGFyYW1ldGVyID0gcGFyYW1ldGVyLT5uZXh0UGFyYW0oKSkKLSAgICAgICAgKytwYXJhbWV0ZXJD
b3VudDsKLQotICAgIHNpemVfdCBvYmplY3RTaXplID0gc2l6ZW9mKEZ1bmN0aW9uUGFyYW1ldGVy
cykgLSBzaXplb2Yodm9pZCopICsgc2l6ZW9mKERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSopICog
cGFyYW1ldGVyQ291bnQ7Ci0gICAgdm9pZCogc2xvdCA9IGZhc3RNYWxsb2Mob2JqZWN0U2l6ZSk7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgKHNsb3QpIEZ1bmN0aW9uUGFyYW1ldGVycyhmaXJz
dFBhcmFtZXRlciwgcGFyYW1ldGVyQ291bnQpKTsKLX0KLQotRnVuY3Rpb25QYXJhbWV0ZXJzOjpG
dW5jdGlvblBhcmFtZXRlcnMoUGFyYW1ldGVyTm9kZSogZmlyc3RQYXJhbWV0ZXIsIHVuc2lnbmVk
IHNpemUpCi0gICAgOiBtX3NpemUoc2l6ZSkKLXsKLSAgICB1bnNpZ25lZCBpID0gMDsKLSAgICBm
b3IgKFBhcmFtZXRlck5vZGUqIHBhcmFtZXRlciA9IGZpcnN0UGFyYW1ldGVyOyBwYXJhbWV0ZXI7
IHBhcmFtZXRlciA9IHBhcmFtZXRlci0+bmV4dFBhcmFtKCkpIHsKLSAgICAgICAgYXV0byBwYXR0
ZXJuID0gcGFyYW1ldGVyLT5wYXR0ZXJuKCk7Ci0gICAgICAgIHBhdHRlcm4tPnJlZigpOwotICAg
ICAgICBwYXR0ZXJucygpW2krK10gPSBwYXR0ZXJuOwotICAgIH0KLX0KLQotRnVuY3Rpb25QYXJh
bWV0ZXJzOjp+RnVuY3Rpb25QYXJhbWV0ZXJzKCkKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbV9zaXplOyArK2kpCi0gICAgICAgIHBhdHRlcm5zKClbaV0tPmRlcmVmKCk7Ci19Ci0K
IEZ1bmN0aW9uQm9keU5vZGU6OkZ1bmN0aW9uQm9keU5vZGUoCiAgICAgUGFyc2VyQXJlbmEmLCBj
b25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIAogICAgIGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRD
b2x1bW4sIAogICAgIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0
YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LAotICAgIGJvb2wgaXNJblN0cmljdENvbnRleHQsIENv
bnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQpCisgICAgYm9vbCBpc0luU3RyaWN0Q29udGV4
dCwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQgcGFyYW1ldGVyQ291
bnQpCiAgICAgICAgIDogU3RhdGVtZW50Tm9kZShlbmRMb2NhdGlvbikKICAgICAgICAgLCBtX3N0
YXJ0Q29sdW1uKHN0YXJ0Q29sdW1uKQogICAgICAgICAsIG1fZW5kQ29sdW1uKGVuZENvbHVtbikK
QEAgLTE3OSwxNiArMTUxLDE2IEBAIEZ1bmN0aW9uQm9keU5vZGU6OkZ1bmN0aW9uQm9keU5vZGUo
CiAgICAgICAgICwgbV9mdW5jdGlvbk5hbWVTdGFydChmdW5jdGlvbk5hbWVTdGFydCkKICAgICAg
ICAgLCBtX3BhcmFtZXRlcnNTdGFydChwYXJhbWV0ZXJzU3RhcnQpCiAgICAgICAgICwgbV9zdGFy
dFN0YXJ0T2Zmc2V0KHN0YXJ0TG9jYXRpb24uc3RhcnRPZmZzZXQpCisgICAgICAgICwgbV9wYXJh
bWV0ZXJDb3VudChwYXJhbWV0ZXJDb3VudCkKICAgICAgICAgLCBtX2lzSW5TdHJpY3RDb250ZXh0
KGlzSW5TdHJpY3RDb250ZXh0KQogICAgICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19j
YXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKQogewogICAgIEFTU0VSVChtX2NvbnN0cnVj
dG9yS2luZCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSk7CiB9CiAK
LXZvaWQgRnVuY3Rpb25Cb2R5Tm9kZTo6ZmluaXNoUGFyc2luZyhjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsIFBhcmFtZXRlck5vZGUqIGZpcnN0UGFyYW1ldGVyLCBjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCwgZW51bSBGdW5jdGlvbk1vZGUgZnVuY3Rpb25Nb2RlKQordm9pZCBGdW5jdGlvbkJvZHlO
b2RlOjpmaW5pc2hQYXJzaW5nKGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQsIGVudW0gRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSkKIHsKICAgICBtX3Nv
dXJjZSA9IHNvdXJjZTsKLSAgICBtX3BhcmFtZXRlcnMgPSBGdW5jdGlvblBhcmFtZXRlcnM6OmNy
ZWF0ZShmaXJzdFBhcmFtZXRlcik7CiAgICAgbV9pZGVudCA9IGlkZW50OwogICAgIG1fZnVuY3Rp
b25Nb2RlID0gZnVuY3Rpb25Nb2RlOwogfQpAQCAtMjAxLDE3ICsxNzMsMTcgQEAgdm9pZCBGdW5j
dGlvbkJvZHlOb2RlOjpzZXRFbmRQb3NpdGlvbihKUwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gRnVuY3Rpb25Ob2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAK
LUZ1bmN0aW9uTm9kZTo6RnVuY3Rpb25Ob2RlKFBhcnNlckFyZW5hJiBwYXJzZXJBcmVuYSwgY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGVuZExvY2F0aW9uLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBT
b3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrJiB2YXJTdGFjaywgRnVuY3Rpb25TdGFj
ayYgZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291
cmNlQ29kZSYgc291cmNlQ29kZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3Rh
bnRzKQorRnVuY3Rpb25Ob2RlOjpGdW5jdGlvbk5vZGUoUGFyc2VyQXJlbmEmIHBhcnNlckFyZW5h
LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1
bW4sIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2smIHZhclN0YWNrLCBGdW5jdGlv
blN0YWNrJiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBGdW5j
dGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUs
IENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKICAgICA6IFNjb3BlTm9k
ZShwYXJzZXJBcmVuYSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIHNvdXJjZUNvZGUsIGNo
aWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgZmVhdHVyZXMs
IG51bUNvbnN0YW50cykKKyAgICAsIG1fcGFyYW1ldGVycyhwYXJhbWV0ZXJzKQogICAgICwgbV9z
dGFydENvbHVtbihzdGFydENvbHVtbikKICAgICAsIG1fZW5kQ29sdW1uKGVuZENvbHVtbikKIHsK
IH0KIAotdm9pZCBGdW5jdGlvbk5vZGU6OmZpbmlzaFBhcnNpbmcoUGFzc1JlZlB0cjxGdW5jdGlv
blBhcmFtZXRlcnM+IHBhcmFtZXRlcnMsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBlbnVtIEZ1
bmN0aW9uTW9kZSBmdW5jdGlvbk1vZGUpCit2b2lkIEZ1bmN0aW9uTm9kZTo6ZmluaXNoUGFyc2lu
Zyhjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgZW51bSBGdW5jdGlvbk1vZGUgZnVuY3Rpb25Nb2Rl
KQogewogICAgIEFTU0VSVCghc291cmNlKCkuaXNOdWxsKCkpOwotICAgIG1fcGFyYW1ldGVycyA9
IHBhcmFtZXRlcnM7CiAgICAgbV9pZGVudCA9IGlkZW50OwogICAgIG1fZnVuY3Rpb25Nb2RlID0g
ZnVuY3Rpb25Nb2RlOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAko
cmV2aXNpb24gMTg2NzE5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNs
YXNzIEFyZ3VtZW50TGlzdE5vZGU7CiAgICAgY2xhc3MgQnl0ZWNvZGVHZW5lcmF0b3I7CiAgICAg
Y2xhc3MgRnVuY3Rpb25Cb2R5Tm9kZTsKKyAgICBjbGFzcyBGdW5jdGlvblBhcmFtZXRlcnM7CiAg
ICAgY2xhc3MgTGFiZWw7CiAgICAgY2xhc3MgUHJvcGVydHlMaXN0Tm9kZTsKICAgICBjbGFzcyBS
ZWFkTW9kaWZ5UmVzb2x2ZU5vZGU7CkBAIC0xNTE2LDE5ICsxNTE3LDYgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIFN0YXRlbWVudE5vZGUqIG1fZmluYWxseUJsb2NrOwogICAgIH07CiAKLSAg
ICBjbGFzcyBQYXJhbWV0ZXJOb2RlIDogcHVibGljIFBhcnNlckFyZW5hRGVsZXRhYmxlIHsKLSAg
ICBwdWJsaWM6Ci0gICAgICAgIFBhcmFtZXRlck5vZGUoUGFzc1JlZlB0cjxEZXN0cnVjdHVyaW5n
UGF0dGVybk5vZGU+KTsKLSAgICAgICAgUGFyYW1ldGVyTm9kZShQYXJhbWV0ZXJOb2RlKiwgUGFz
c1JlZlB0cjxEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU+KTsKLQotICAgICAgICBEZXN0cnVjdHVy
aW5nUGF0dGVybk5vZGUqIHBhdHRlcm4oKSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm4uZ2V0KCk7
IH0KLSAgICAgICAgUGFyYW1ldGVyTm9kZSogbmV4dFBhcmFtKCkgY29uc3QgeyByZXR1cm4gbV9u
ZXh0OyB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBSZWZQdHI8RGVzdHJ1Y3R1cmluZ1BhdHRl
cm5Ob2RlPiBtX3BhdHRlcm47Ci0gICAgICAgIFBhcmFtZXRlck5vZGUqIG1fbmV4dDsKLSAgICB9
OwotCiAgICAgY2xhc3MgU2NvcGVOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUsIHB1YmxpYyBQ
YXJzZXJBcmVuYVJvb3QgewogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBEZWNsYXJhdGlv
blN0YWNrczo6VmFyU3RhY2sgVmFyU3RhY2s7CkBAIC0xNTk4LDcgKzE1ODYsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgIGNsYXNzIFByb2dyYW1Ob2RlIDogcHVibGljIFNjb3BlTm9kZSB7CiAg
ICAgcHVibGljOgotICAgICAgICBQcm9ncmFtTm9kZShQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCB1bnNpZ25lZCBz
dGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNr
JiwgRnVuY3Rpb25TdGFjayYsIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29k
ZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKKyAgICAgICAgUHJvZ3JhbU5vZGUoUGFyc2Vy
QXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGVuZCwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNl
RWxlbWVudHMqLCBWYXJTdGFjayYsIEZ1bmN0aW9uU3RhY2smLCBJZGVudGlmaWVyU2V0JiwgRnVu
Y3Rpb25QYXJhbWV0ZXJzKiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51
bUNvbnN0YW50cyk7CiAKICAgICAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4oKSBjb25zdCB7IHJl
dHVybiBtX3N0YXJ0Q29sdW1uOyB9CiAgICAgICAgIHVuc2lnbmVkIGVuZENvbHVtbigpIGNvbnN0
IHsgcmV0dXJuIG1fZW5kQ29sdW1uOyB9CkBAIC0xNjE3LDcgKzE2MDUsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIGNsYXNzIEV2YWxOb2RlIDogcHVibGljIFNjb3BlTm9kZSB7CiAgICAgcHVi
bGljOgotICAgICAgICBFdmFsTm9kZShQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCB1bnNpZ25lZCBzdGFydENvbHVt
biwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrJiwgRnVuY3Rp
b25TdGFjayYsIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVz
LCBpbnQgbnVtQ29uc3RhbnRzKTsKKyAgICAgICAgRXZhbE5vZGUoUGFyc2VyQXJlbmEmLCBjb25z
dCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgdW5z
aWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMqLCBW
YXJTdGFjayYsIEZ1bmN0aW9uU3RhY2smLCBJZGVudGlmaWVyU2V0JiwgRnVuY3Rpb25QYXJhbWV0
ZXJzKiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7
CiAKICAgICAgICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBzdGFydENvbHVtbigpIGNvbnN0IHsg
cmV0dXJuIDA7IH0KICAgICAgICAgdW5zaWduZWQgZW5kQ29sdW1uKCkgY29uc3QgeyByZXR1cm4g
bV9lbmRDb2x1bW47IH0KQEAgLTE2MzAsMjMgKzE2MTgsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHVuc2lnbmVkIG1fZW5kQ29sdW1uOwogICAgIH07CiAKLSAgICBjbGFzcyBGdW5jdGlv
blBhcmFtZXRlcnMgOiBwdWJsaWMgUmVmQ291bnRlZDxGdW5jdGlvblBhcmFtZXRlcnM+IHsKLSAg
ICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEZ1bmN0aW9uUGFyYW1ldGVycyk7CisgICAgY2xhc3MgRnVuY3Rpb25QYXJhbWV0ZXJzIDog
cHVibGljIFBhcnNlckFyZW5hRnJlZWFibGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGlj
IFJlZjxGdW5jdGlvblBhcmFtZXRlcnM+IGNyZWF0ZShQYXJhbWV0ZXJOb2RlKik7Ci0gICAgICAg
IH5GdW5jdGlvblBhcmFtZXRlcnMoKTsKLQotICAgICAgICB1bnNpZ25lZCBzaXplKCkgY29uc3Qg
eyByZXR1cm4gbV9zaXplOyB9Ci0gICAgICAgIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogYXQo
dW5zaWduZWQgaW5kZXgpIHsgQVNTRVJUKGluZGV4IDwgbV9zaXplKTsgcmV0dXJuIHBhdHRlcm5z
KClbaW5kZXhdOyB9CisgICAgICAgIEZ1bmN0aW9uUGFyYW1ldGVycygpOworICAgICAgICBBTFdB
WVNfSU5MSU5FIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm5zLnNpemUo
KTsgfQorICAgICAgICBBTFdBWVNfSU5MSU5FIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogYXQo
dW5zaWduZWQgaW5kZXgpIHsgcmV0dXJuIG1fcGF0dGVybnNbaW5kZXhdOyB9CisgICAgICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBhcHBlbmQoRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiBwYXR0ZXJu
KSB7IEFTU0VSVChwYXR0ZXJuKTsgbV9wYXR0ZXJucy5hcHBlbmQocGF0dGVybik7IH0KIAogICAg
IHByaXZhdGU6Ci0gICAgICAgIEZ1bmN0aW9uUGFyYW1ldGVycyhQYXJhbWV0ZXJOb2RlKiwgdW5z
aWduZWQgc2l6ZSk7Ci0KLSAgICAgICAgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiogcGF0dGVy
bnMoKSB7IHJldHVybiAmbV9zdG9yYWdlOyB9CiAKLSAgICAgICAgdW5zaWduZWQgbV9zaXplOwot
ICAgICAgICBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUqIG1fc3RvcmFnZTsKKyAgICAgICAgVmVj
dG9yPERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSosIDM+IG1fcGF0dGVybnM7CiAgICAgfTsKIAog
ICAgIGNsYXNzIEZ1bmN0aW9uQm9keU5vZGUgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSwg
cHVibGljIFBhcnNlckFyZW5hRGVsZXRhYmxlIHsKQEAgLTE2NTcsMTMgKzE2MzgsMTEgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCAKICAgICAgICAgICAgIHVu
c2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIGludCBmdW5jdGlvbktleXdv
cmRTdGFydCwgCiAgICAgICAgICAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0
ZXJzU3RhcnQsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIAotICAgICAgICAgICAgQ29uc3RydWN0
b3JLaW5kKTsKLQotICAgICAgICBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMoKSBjb25z
dCB7IHJldHVybiBtX3BhcmFtZXRlcnMuZ2V0KCk7IH0KKyAgICAgICAgICAgIENvbnN0cnVjdG9y
S2luZCwgdW5zaWduZWQpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwogCi0gICAgICAgIHZv
aWQgZmluaXNoUGFyc2luZyhjb25zdCBTb3VyY2VDb2RlJiwgUGFyYW1ldGVyTm9kZSosIGNvbnN0
IElkZW50aWZpZXImLCBGdW5jdGlvbk1vZGUpOworICAgICAgICB2b2lkIGZpbmlzaFBhcnNpbmco
Y29uc3QgU291cmNlQ29kZSYsIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlvbk1vZGUpOwogICAg
ICAgICAKICAgICAgICAgdm9pZCBvdmVycmlkZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQp
IHsgbV9pZGVudCA9IGlkZW50OyB9CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50KCkg
eyByZXR1cm4gbV9pZGVudDsgfQpAQCAtMTY3Nyw2ICsxNjU2LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIGludCBwYXJhbWV0ZXJzU3RhcnQoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRl
cnNTdGFydDsgfQogICAgICAgICB1bnNpZ25lZCBzdGFydENvbHVtbigpIGNvbnN0IHsgcmV0dXJu
IG1fc3RhcnRDb2x1bW47IH0KICAgICAgICAgdW5zaWduZWQgZW5kQ29sdW1uKCkgY29uc3QgeyBy
ZXR1cm4gbV9lbmRDb2x1bW47IH0KKyAgICAgICAgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQoKSBj
b25zdCB7IHJldHVybiBtX3BhcmFtZXRlckNvdW50OyB9CiAKICAgICAgICAgdm9pZCBzZXRFbmRQ
b3NpdGlvbihKU1RleHRQb3NpdGlvbik7CiAKQEAgLTE2OTAsNyArMTY3MCw2IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBJZGVudGlmaWVyIG1faWRlbnQ7CiAgICAgICAgIElkZW50aWZpZXIg
bV9pbmZlcnJlZE5hbWU7CiAgICAgICAgIEZ1bmN0aW9uTW9kZSBtX2Z1bmN0aW9uTW9kZTsKLSAg
ICAgICAgUmVmUHRyPEZ1bmN0aW9uUGFyYW1ldGVycz4gbV9wYXJhbWV0ZXJzOwogICAgICAgICB1
bnNpZ25lZCBtX3N0YXJ0Q29sdW1uOwogICAgICAgICB1bnNpZ25lZCBtX2VuZENvbHVtbjsKICAg
ICAgICAgaW50IG1fZnVuY3Rpb25LZXl3b3JkU3RhcnQ7CkBAIC0xNjk4LDE5ICsxNjc3LDIwIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBpbnQgbV9wYXJhbWV0ZXJzU3RhcnQ7CiAgICAgICAg
IFNvdXJjZUNvZGUgbV9zb3VyY2U7CiAgICAgICAgIGludCBtX3N0YXJ0U3RhcnRPZmZzZXQ7Cisg
ICAgICAgIHVuc2lnbmVkIG1fcGFyYW1ldGVyQ291bnQ7CiAgICAgICAgIHVuc2lnbmVkIG1faXNJ
blN0cmljdENvbnRleHQgOiAxOwogICAgICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6
IDI7CiAgICAgfTsKIAogICAgIGNsYXNzIEZ1bmN0aW9uTm9kZSBmaW5hbCA6IHB1YmxpYyBTY29w
ZU5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRnVuY3Rpb25Ob2RlKFBhcnNlckFyZW5hJiwg
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQs
IHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRz
KiwgVmFyU3RhY2smLCBGdW5jdGlvblN0YWNrJiwgSWRlbnRpZmllclNldCYsIGNvbnN0IFNvdXJj
ZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOworICAgICAgICBGdW5jdGlv
bk5vZGUoUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGVuZCwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENv
bHVtbiwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayYsIEZ1bmN0aW9uU3RhY2smLCBJZGVudGlm
aWVyU2V0JiwgRnVuY3Rpb25QYXJhbWV0ZXJzKiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0
dXJlcywgaW50IG51bUNvbnN0YW50cyk7CiAKLSAgICAgICAgRnVuY3Rpb25QYXJhbWV0ZXJzKiBw
YXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLmdldCgpOyB9CisgICAgICAg
IEZ1bmN0aW9uUGFyYW1ldGVycyogcGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1l
dGVyczsgfQogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwogCi0gICAgICAgIHZvaWQgZmluaXNo
UGFyc2luZyhQYXNzUmVmUHRyPEZ1bmN0aW9uUGFyYW1ldGVycz4sIGNvbnN0IElkZW50aWZpZXIm
LCBGdW5jdGlvbk1vZGUpOworICAgICAgICB2b2lkIGZpbmlzaFBhcnNpbmcoY29uc3QgSWRlbnRp
ZmllciYsIEZ1bmN0aW9uTW9kZSk7CiAgICAgICAgIAogICAgICAgICBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCgpIHsgcmV0dXJuIG1faWRlbnQ7IH0KIApAQCAtMTcyNCwxNCArMTcwNCwxNCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBwcml2YXRlOgogICAgICAgICBJZGVudGlmaWVyIG1faWRlbnQ7
CiAgICAgICAgIEZ1bmN0aW9uTW9kZSBtX2Z1bmN0aW9uTW9kZTsKLSAgICAgICAgUmVmUHRyPEZ1
bmN0aW9uUGFyYW1ldGVycz4gbV9wYXJhbWV0ZXJzOworICAgICAgICBGdW5jdGlvblBhcmFtZXRl
cnMqIG1fcGFyYW1ldGVyczsKICAgICAgICAgdW5zaWduZWQgbV9zdGFydENvbHVtbjsKICAgICAg
ICAgdW5zaWduZWQgbV9lbmRDb2x1bW47CiAgICAgfTsKIAogICAgIGNsYXNzIEZ1bmNFeHByTm9k
ZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBGdW5jRXhw
ck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9u
Qm9keU5vZGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgUGFyYW1ldGVyTm9kZSogPSAwKTsKKyAgICAg
ICAgRnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXIm
LCBGdW5jdGlvbkJvZHlOb2RlKiwgY29uc3QgU291cmNlQ29kZSYpOwogCiAgICAgICAgIEZ1bmN0
aW9uQm9keU5vZGUqIGJvZHkoKSB7IHJldHVybiBtX2JvZHk7IH0KIApAQCAtMTc2MiwxMSArMTc0
Miw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAjZW5kaWYKIAotICAgIGNsYXNzIERlc3Ry
dWN0dXJpbmdQYXR0ZXJuTm9kZSA6IHB1YmxpYyBSZWZDb3VudGVkPERlc3RydWN0dXJpbmdQYXR0
ZXJuTm9kZT4gewotICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEZXN0cnVjdHVyaW5nUGF0
dGVybk5vZGUpOwotICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLQorICAgIGNsYXNz
IERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSA6IHB1YmxpYyBQYXJzZXJBcmVuYUZyZWVhYmxlIHsK
ICAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgfkRlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSgp
IHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdEJvdW5kSWRlbnRpZmllcnMoVmVjdG9y
PElkZW50aWZpZXI+JikgY29uc3QgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgYmluZFZhbHVl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogc291cmNlKSBjb25zdCA9IDA7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCB0b1N0cmluZyhTdHJpbmdCdWlsZGVyJikgY29uc3QgPSAwOwpAQCAt
MTc3NCwyMSArMTc1MiwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCBib29s
IGlzQmluZGluZ05vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFs
IFJlZ2lzdGVySUQqIGVtaXREaXJlY3RCaW5kaW5nKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCosIEV4cHJlc3Npb25Ob2RlKikgeyByZXR1cm4gMDsgfQogICAgICAgICAKLSAgICAgICAg
dmlydHVhbCB+RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKCkgPSAwOwotICAgICAgICAKICAgICBw
cm90ZWN0ZWQ6CiAgICAgICAgIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSgpOwogICAgIH07CiAK
ICAgICBjbGFzcyBBcnJheVBhdHRlcm5Ob2RlIDogcHVibGljIERlc3RydWN0dXJpbmdQYXR0ZXJu
Tm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6CisgICAg
ICAgIEFycmF5UGF0dGVybk5vZGUoKTsKICAgICAgICAgZW51bSBjbGFzcyBCaW5kaW5nVHlwZSB7
CiAgICAgICAgICAgICBFbGlzaW9uLAogICAgICAgICAgICAgRWxlbWVudCwKICAgICAgICAgICAg
IFJlc3RFbGVtZW50CiAgICAgICAgIH07CiAKLSAgICAgICAgc3RhdGljIFJlZjxBcnJheVBhdHRl
cm5Ob2RlPiBjcmVhdGUoKTsKICAgICAgICAgdm9pZCBhcHBlbmRJbmRleChCaW5kaW5nVHlwZSBi
aW5kaW5nVHlwZSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5O
b2RlKiBub2RlLCBFeHByZXNzaW9uTm9kZSogZGVmYXVsdFZhbHVlKQogICAgICAgICB7CiAgICAg
ICAgICAgICBtX3RhcmdldFBhdHRlcm5zLmFwcGVuZCh7IGJpbmRpbmdUeXBlLCBub2RlLCBkZWZh
dWx0VmFsdWUgfSk7CkBAIC0xNzk3LDEwICsxNzczLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
cHJpdmF0ZToKICAgICAgICAgc3RydWN0IEVudHJ5IHsKICAgICAgICAgICAgIEJpbmRpbmdUeXBl
IGJpbmRpbmdUeXBlOwotICAgICAgICAgICAgUmVmUHRyPERlc3RydWN0dXJpbmdQYXR0ZXJuTm9k
ZT4gcGF0dGVybjsKKyAgICAgICAgICAgIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogcGF0dGVy
bjsKICAgICAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBkZWZhdWx0VmFsdWU7CiAgICAgICAgIH07
Ci0gICAgICAgIEFycmF5UGF0dGVybk5vZGUoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGNvbGxl
Y3RCb3VuZElkZW50aWZpZXJzKFZlY3RvcjxJZGVudGlmaWVyPiYpIGNvbnN0IG92ZXJyaWRlOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgYmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCopIGNvbnN0IG92ZXJyaWRlOwogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRE
aXJlY3RCaW5kaW5nKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogZHN0LCBFeHByZXNz
aW9uTm9kZSopIG92ZXJyaWRlOwpAQCAtMTgxMSwyMSArMTc4NiwyMCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAKICAgICBjbGFzcyBPYmplY3RQYXR0ZXJuTm9kZSA6IHB1YmxpYyBEZXN0cnVjdHVy
aW5nUGF0dGVybk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFJlZjxPYmplY3RQ
YXR0ZXJuTm9kZT4gY3JlYXRlKCk7CisgICAgICAgIE9iamVjdFBhdHRlcm5Ob2RlKCk7CiAgICAg
ICAgIHZvaWQgYXBwZW5kRW50cnkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnRpZmllciwgYm9vbCB3YXNTdHJpbmcsIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9k
ZSogcGF0dGVybiwgRXhwcmVzc2lvbk5vZGUqIGRlZmF1bHRWYWx1ZSkKICAgICAgICAgewogICAg
ICAgICAgICAgbV90YXJnZXRQYXR0ZXJucy5hcHBlbmQoRW50cnl7IGlkZW50aWZpZXIsIHdhc1N0
cmluZywgcGF0dGVybiwgZGVmYXVsdFZhbHVlIH0pOwogICAgICAgICB9CiAgICAgICAgIAogICAg
IHByaXZhdGU6Ci0gICAgICAgIE9iamVjdFBhdHRlcm5Ob2RlKCk7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBjb2xsZWN0Qm91bmRJZGVudGlmaWVycyhWZWN0b3I8SWRlbnRpZmllcj4mKSBjb25zdCBv
dmVycmlkZTsKICAgICAgICAgdmlydHVhbCB2b2lkIGJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqKSBjb25zdCBvdmVycmlkZTsKICAgICAgICAgdmlydHVhbCB2b2lkIHRv
U3RyaW5nKFN0cmluZ0J1aWxkZXImKSBjb25zdCBvdmVycmlkZTsKICAgICAgICAgc3RydWN0IEVu
dHJ5IHsKICAgICAgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lOwogICAgICAgICAgICAg
Ym9vbCB3YXNTdHJpbmc7Ci0gICAgICAgICAgICBSZWZQdHI8RGVzdHJ1Y3R1cmluZ1BhdHRlcm5O
b2RlPiBwYXR0ZXJuOworICAgICAgICAgICAgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiBwYXR0
ZXJuOwogICAgICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGRlZmF1bHRWYWx1ZTsKICAgICAgICAg
fTsKICAgICAgICAgVmVjdG9yPEVudHJ5PiBtX3RhcmdldFBhdHRlcm5zOwpAQCAtMTgzMywxNCAr
MTgwNywxMyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEJpbmRpbmdOb2RlIDogcHVi
bGljIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0
aWMgUmVmPEJpbmRpbmdOb2RlPiBjcmVhdGUoY29uc3QgSWRlbnRpZmllciYgYm91bmRQcm9wZXJ0
eSwgY29uc3QgSlNUZXh0UG9zaXRpb24mIHN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZW5k
KTsKKyAgICAgICAgQmluZGluZ05vZGUoY29uc3QgSWRlbnRpZmllciYgYm91bmRQcm9wZXJ0eSwg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIHN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZW5kKTsK
ICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgYm91bmRQcm9wZXJ0eSgpIGNvbnN0IHsgcmV0dXJu
IG1fYm91bmRQcm9wZXJ0eTsgfQogCiAgICAgICAgIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dFN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9kaXZvdFN0YXJ0OyB9CiAgICAgICAgIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdEVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGl2b3RFbmQ7IH0KICAg
ICAgICAgCiAgICAgcHJpdmF0ZToKLSAgICAgICAgQmluZGluZ05vZGUoY29uc3QgSWRlbnRpZmll
ciYgYm91bmRQcm9wZXJ0eSwgY29uc3QgSlNUZXh0UG9zaXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZW5kKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdEJvdW5kSWRl
bnRpZmllcnMoVmVjdG9yPElkZW50aWZpZXI+JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBiaW5kVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKikgY29u
c3Qgb3ZlcnJpZGU7CkBAIC0xODU1LDggKzE4MjgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
IGNsYXNzIERlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9k
ZSwgcHVibGljIFBhcnNlckFyZW5hRGVsZXRhYmxlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIERl
c3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBQYXNzUmVm
UHRyPERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZT4sIEV4cHJlc3Npb25Ob2RlKik7Ci0gICAgICAg
IERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogYmluZGluZ3MoKSB7IHJldHVybiBtX2JpbmRpbmdz
LmdldCgpOyB9CisgICAgICAgIERlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUqLCBFeHByZXNzaW9uTm9kZSop
OworICAgICAgICBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUqIGJpbmRpbmdzKCkgeyByZXR1cm4g
bV9iaW5kaW5nczsgfQogICAgICAgICAKICAgICAgICAgdXNpbmcgUGFyc2VyQXJlbmFEZWxldGFi
bGU6Om9wZXJhdG9yIG5ldzsKIApAQCAtMTg2NSwxMyArMTgzOCwxMyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgdmlydHVhbCBib29sIGlzRGVzdHJ1Y3R1cmluZ05vZGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKIAot
ICAgICAgICBSZWZQdHI8RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlPiBtX2JpbmRpbmdzOworICAg
ICAgICBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUqIG1fYmluZGluZ3M7CiAgICAgICAgIEV4cHJl
c3Npb25Ob2RlKiBtX2luaXRpYWxpemVyOwogICAgIH07CiAKICAgICBjbGFzcyBGdW5jRGVjbE5v
ZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBGdW5jRGVj
bE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9u
Qm9keU5vZGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgUGFyYW1ldGVyTm9kZSogPSAwKTsKKyAgICAg
ICAgRnVuY0RlY2xOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXIm
LCBGdW5jdGlvbkJvZHlOb2RlKiwgY29uc3QgU291cmNlQ29kZSYpOwogCiAgICAgICAgIHZpcnR1
YWwgYm9vbCBpc0Z1bmNEZWNsTm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
ICAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSgpIHsgcmV0dXJuIG1fYm9keTsgfQpAQCAt
MTk2NywxMSArMTk0MCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBDb25zdERlY2xOb2Rl
KiB0YWlsOwogICAgIH07CiAKLSAgICBzdHJ1Y3QgUGFyYW1ldGVyTGlzdCB7Ci0gICAgICAgIFBh
cmFtZXRlck5vZGUqIGhlYWQ7Ci0gICAgICAgIFBhcmFtZXRlck5vZGUqIHRhaWw7Ci0gICAgfTsK
LQogICAgIHN0cnVjdCBDbGF1c2VMaXN0IHsKICAgICAgICAgQ2xhdXNlTGlzdE5vZGUqIGhlYWQ7
CiAgICAgICAgIENsYXVzZUxpc3ROb2RlKiB0YWlsOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmNwcAkocmV2aXNpb24gMTg2NzE5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTEsNyArMTkxLDcg
QEAgdm9pZCBQYXJzZXI8TGV4ZXJUeXBlPjo6bG9nRXJyb3IoYm9vbCBzaAogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgTGV4ZXJUeXBlPgogUGFyc2VyPExleGVyVHlwZT46OlBhcnNlcigKLSAgICBWTSog
dm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0
ZXJzLCAKKyAgICBWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwKICAgICBjb25zdCBJ
ZGVudGlmaWVyJiBuYW1lLCBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLCAKICAgICBK
U1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgSlNQYXJzZXJDb2RlVHlwZSBjb2RlVHlwZSwg
CiAgICAgQ29uc3RydWN0b3JLaW5kIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIFRoaXNURFpNb2Rl
IHRoaXNURFpNb2RlKQpAQCAtMjIzLDI4ICsyMjMsMjggQEAgUGFyc2VyPExleGVyVHlwZT46OlBh
cnNlcigKICAgICAgICAgc2NvcGUtPnNldElzRnVuY3Rpb24oKTsKICAgICBpZiAoc3RyaWN0TW9k
ZSA9PSBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCkKICAgICAgICAgc2NvcGUtPnNldFN0cmlj
dE1vZGUoKTsKLSAgICBpZiAocGFyYW1ldGVycykgewotICAgICAgICBib29sIGhhZEJpbmRpbmdQ
YXJhbWV0ZXJzID0gZmFsc2U7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXJh
bWV0ZXJzLT5zaXplKCk7IGkrKykgewotICAgICAgICAgICAgYXV0byBwYXJhbWV0ZXIgPSBwYXJh
bWV0ZXJzLT5hdChpKTsKLSAgICAgICAgICAgIGlmICghcGFyYW1ldGVyLT5pc0JpbmRpbmdOb2Rl
KCkpIHsKLSAgICAgICAgICAgICAgICBoYWRCaW5kaW5nUGFyYW1ldGVycyA9IHRydWU7Ci0gICAg
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzY29wZS0+
ZGVjbGFyZVBhcmFtZXRlcigmc3RhdGljX2Nhc3Q8QmluZGluZ05vZGUqPihwYXJhbWV0ZXIpLT5i
b3VuZFByb3BlcnR5KCkpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChoYWRCaW5kaW5nUGFyYW1l
dGVycykgewotICAgICAgICAgICAgVmVjdG9yPElkZW50aWZpZXI+IGJvdW5kUGFyYW1ldGVyTmFt
ZXM7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFyYW1ldGVycy0+c2l6
ZSgpOyBpKyspIHsKLSAgICAgICAgICAgICAgICBhdXRvIHBhcmFtZXRlciA9IHBhcmFtZXRlcnMt
PmF0KGkpOwotICAgICAgICAgICAgICAgIGlmIChwYXJhbWV0ZXItPmlzQmluZGluZ05vZGUoKSkK
LSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgcGFyYW1ldGVy
LT5jb2xsZWN0Qm91bmRJZGVudGlmaWVycyhib3VuZFBhcmFtZXRlck5hbWVzKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGZvciAoYXV0byYgYm91bmRQYXJhbWV0ZXJOYW1lIDogYm91bmRQ
YXJhbWV0ZXJOYW1lcykKLSAgICAgICAgICAgICAgICBzY29wZS0+ZGVjbGFyZVZhcmlhYmxlKCZi
b3VuZFBhcmFtZXRlck5hbWUpOwotICAgICAgICB9Ci0gICAgfQorICAgIC8vaWYgKHBhcmFtZXRl
cnMpIHsKKyAgICAvLyAgICBib29sIGhhZEJpbmRpbmdQYXJhbWV0ZXJzID0gZmFsc2U7CisgICAg
Ly8gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhcmFtZXRlcnMtPnNpemUoKTsgaSsrKSB7
CisgICAgLy8gICAgICAgIGF1dG8gcGFyYW1ldGVyID0gcGFyYW1ldGVycy0+YXQoaSk7CisgICAg
Ly8gICAgICAgIGlmICghcGFyYW1ldGVyLT5pc0JpbmRpbmdOb2RlKCkpIHsKKyAgICAvLyAgICAg
ICAgICAgIGhhZEJpbmRpbmdQYXJhbWV0ZXJzID0gdHJ1ZTsKKyAgICAvLyAgICAgICAgICAgIGNv
bnRpbnVlOworICAgIC8vICAgICAgICB9CisgICAgLy8gICAgICAgIHNjb3BlLT5kZWNsYXJlUGFy
YW1ldGVyKCZzdGF0aWNfY2FzdDxCaW5kaW5nTm9kZSo+KHBhcmFtZXRlciktPmJvdW5kUHJvcGVy
dHkoKSk7CisgICAgLy8gICAgfQorICAgIC8vICAgIGlmIChoYWRCaW5kaW5nUGFyYW1ldGVycykg
eworICAgIC8vICAgICAgICBWZWN0b3I8SWRlbnRpZmllcj4gYm91bmRQYXJhbWV0ZXJOYW1lczsK
KyAgICAvLyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhcmFtZXRlcnMtPnNpemUo
KTsgaSsrKSB7CisgICAgLy8gICAgICAgICAgICBhdXRvIHBhcmFtZXRlciA9IHBhcmFtZXRlcnMt
PmF0KGkpOworICAgIC8vICAgICAgICAgICAgaWYgKHBhcmFtZXRlci0+aXNCaW5kaW5nTm9kZSgp
KQorICAgIC8vICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgIC8vICAgICAgICAgICAgcGFy
YW1ldGVyLT5jb2xsZWN0Qm91bmRJZGVudGlmaWVycyhib3VuZFBhcmFtZXRlck5hbWVzKTsKKyAg
ICAvLyAgICAgICAgfQorICAgIC8vICAgICAgICBmb3IgKGF1dG8mIGJvdW5kUGFyYW1ldGVyTmFt
ZSA6IGJvdW5kUGFyYW1ldGVyTmFtZXMpCisgICAgLy8gICAgICAgICAgICBzY29wZS0+ZGVjbGFy
ZVZhcmlhYmxlKCZib3VuZFBhcmFtZXRlck5hbWUpOworICAgIC8vICAgIH0KKyAgICAvL30KICAg
ICBpZiAoIW5hbWUuaXNOdWxsKCkpCiAgICAgICAgIHNjb3BlLT5kZWNsYXJlQ2FsbGVlKCZuYW1l
KTsKICAgICBuZXh0KCk7CkBAIC0yNjEsNiArMjYxLDEzIEBAIFN0cmluZyBQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VJbm5lcigpCiAgICAgU3RyaW5nIHBhcnNlRXJyb3IgPSBTdHJpbmcoKTsKICAg
ICAKICAgICBBU1RCdWlsZGVyIGNvbnRleHQoY29uc3RfY2FzdDxWTSo+KG1fdm0pLCBtX3BhcnNl
ckFyZW5hLCBjb25zdF9jYXN0PFNvdXJjZUNvZGUqPihtX3NvdXJjZSkpOworICAgIGlmIChtX2xl
eGVyLT5pc1JlcGFyc2luZygpKSB7CisgICAgICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWls
ZGVyPiBpbmZvOworICAgICAgICBwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhjb250ZXh0LCBGdW5j
dGlvbk1vZGUsIGluZm8pOworICAgICAgICBSRUxFQVNFX0FTU0VSVCghaGFzRXJyb3IoKSk7IC8v
IFdlIHNob3VsZCBoYXZlIGZhaWxlZCBiZWZvcmUgcmVwYXJzaW5nLgorICAgICAgICBtX3BhcmFt
ZXRlcnMgPSBpbmZvLnBhcmFtZXRlcnM7CisgICAgfQorCiAgICAgaWYgKG1fbGV4ZXItPmlzUmVw
YXJzaW5nKCkpCiAgICAgICAgIG1fc3RhdGVtZW50RGVwdGgtLTsKICAgICBTY29wZVJlZiBzY29w
ZSA9IGN1cnJlbnRTY29wZSgpOwpAQCAtMTM2MiwyNCArMTM2OSwyNSBAQCB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhl
clR5cGU+Ci10ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVGb3JtYWxQYXJhbWV0ZXJM
aXN0IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZvcm1hbFBhcmFtZXRlcnMoVHJlZUJ1aWxkZXIm
IGNvbnRleHQpCit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyPExleGVy
VHlwZT46OnBhcnNlRm9ybWFsUGFyYW1ldGVycyhUcmVlQnVpbGRlciYgY29udGV4dCwgVHJlZUZv
cm1hbFBhcmFtZXRlckxpc3QgbGlzdCwgdW5zaWduZWQmIHBhcmFtZXRlckNvdW50KQogewogICAg
IGF1dG8gcGFyYW1ldGVyID0gcGFyc2VEZXN0cnVjdHVyaW5nUGF0dGVybihjb250ZXh0LCBEZXN0
cnVjdHVyZVRvUGFyYW1ldGVycyk7CiAgICAgZmFpbElmRmFsc2UocGFyYW1ldGVyLCAiQ2Fubm90
IHBhcnNlIHBhcmFtZXRlciBwYXR0ZXJuIik7Ci0gICAgVHJlZUZvcm1hbFBhcmFtZXRlckxpc3Qg
bGlzdCA9IGNvbnRleHQuY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdChwYXJhbWV0ZXIpOwotICAg
IFRyZWVGb3JtYWxQYXJhbWV0ZXJMaXN0IHRhaWwgPSBsaXN0OworICAgIGNvbnRleHQuYXBwZW5k
UGFyYW1ldGVyKGxpc3QsIHBhcmFtZXRlcik7CisgICAgcGFyYW1ldGVyQ291bnQrKzsKICAgICB3
aGlsZSAoY29uc3VtZShDT01NQSkpIHsKICAgICAgICAgcGFyYW1ldGVyID0gcGFyc2VEZXN0cnVj
dHVyaW5nUGF0dGVybihjb250ZXh0LCBEZXN0cnVjdHVyZVRvUGFyYW1ldGVycyk7CiAgICAgICAg
IGZhaWxJZkZhbHNlKHBhcmFtZXRlciwgIkNhbm5vdCBwYXJzZSBwYXJhbWV0ZXIgcGF0dGVybiIp
OwotICAgICAgICB0YWlsID0gY29udGV4dC5jcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KHRhaWws
IHBhcmFtZXRlcik7CisgICAgICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKGxpc3QsIHBhcmFt
ZXRlcik7CisgICAgICAgIHBhcmFtZXRlckNvdW50Kys7CiAgICAgfQotICAgIHJldHVybiBsaXN0
OworICAgIHJldHVybiB0cnVlOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgog
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRnVuY3Rpb25Cb2R5IFBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSgKICAgICBUcmVlQnVpbGRlciYgY29udGV4dCwgaW50
IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIAotICAgIGludCBw
YXJhbWV0ZXJzU3RhcnQsIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIEZ1bmN0aW9u
UGFyc2VUeXBlIHBhcnNlVHlwZSkKKyAgICBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBDb25zdHJ1Y3Rv
cktpbmQgY29uc3RydWN0b3JLaW5kLCBGdW5jdGlvblBhcnNlVHlwZSBwYXJzZVR5cGUsIHVuc2ln
bmVkIHBhcmFtZXRlckNvdW50KQogewogICAgIEpTVG9rZW5Mb2NhdGlvbiBzdGFydExvY2F0aW9u
KHRva2VuTG9jYXRpb24oKSk7CiAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4gPSB0b2tlbkNvbHVt
bigpOwpAQCAtMTM4OCwyMCArMTM5NiwyMCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVGdW5jdGlvCiAgICAgICAgIG5leHQoKTsKICAgICAgICAgaWYgKG1hdGNoKENMT1NFQlJB
Q0UpKSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBlbmRDb2x1bW4gPSB0b2tlbkNvbHVtbigpOwot
ICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25Cb2R5KHN0YXJ0TG9jYXRp
b24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3
b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUo
KSwgY29uc3RydWN0b3JLaW5kKTsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1
bmN0aW9uQm9keShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBl
bmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1l
dGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQp
OwogICAgICAgICB9CiAgICAgfQogCiAgICAgRGVwdGhNYW5hZ2VyIHN0YXRlbWVudERlcHRoKCZt
X3N0YXRlbWVudERlcHRoKTsKICAgICBtX3N0YXRlbWVudERlcHRoID0gMDsKLSAgICB0eXBlbmFt
ZSBUcmVlQnVpbGRlcjo6RnVuY3Rpb25Cb2R5QnVpbGRlciBib2R5QnVpbGRlcihjb25zdF9jYXN0
PFZNKj4obV92bSksIG1fbGV4ZXIuZ2V0KCkpOworICAgIFN5bnRheENoZWNrZXIgc3ludGF4Q2hl
Y2tlcihjb25zdF9jYXN0PFZNKj4obV92bSksIG1fbGV4ZXIuZ2V0KCkpOwogI2lmIEVOQUJMRShF
UzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCi0gICAgZmFpbElmRmFsc2UocGFyc2VTb3VyY2VFbGVt
ZW50cyhib2R5QnVpbGRlciwgQ2hlY2tGb3JTdHJpY3RNb2RlLCBwYXJzZVR5cGUpLCBwYXJzZVR5
cGUgPT0gU3RhbmRhcmRGdW5jdGlvblBhcnNlVHlwZSA/ICJDYW5ub3QgcGFyc2UgYm9keSBvZiB0
aGlzIGZ1bmN0aW9uIiA6ICJDYW5ub3QgcGFyc2UgYm9keSBvZiB0aGlzIGFycm93IGZ1bmN0aW9u
Iik7CisgICAgZmFpbElmRmFsc2UocGFyc2VTb3VyY2VFbGVtZW50cyhzeW50YXhDaGVja2VyLCBD
aGVja0ZvclN0cmljdE1vZGUsIHBhcnNlVHlwZSksIHBhcnNlVHlwZSA9PSBTdGFuZGFyZEZ1bmN0
aW9uUGFyc2VUeXBlID8gIkNhbm5vdCBwYXJzZSBib2R5IG9mIHRoaXMgZnVuY3Rpb24iIDogIkNh
bm5vdCBwYXJzZSBib2R5IG9mIHRoaXMgYXJyb3cgZnVuY3Rpb24iKTsKICNlbHNlCi0gICAgZmFp
bElmRmFsc2UocGFyc2VTb3VyY2VFbGVtZW50cyhib2R5QnVpbGRlciwgQ2hlY2tGb3JTdHJpY3RN
b2RlLCBTdGFuZGFyZEZ1bmN0aW9uUGFyc2VUeXBlKSwgIkNhbm5vdCBwYXJzZSBib2R5IG9mIHRo
aXMgZnVuY3Rpb24iKTsKKyAgICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVsZW1lbnRzKHN5bnRh
eENoZWNrZXIsIENoZWNrRm9yU3RyaWN0TW9kZSwgU3RhbmRhcmRGdW5jdGlvblBhcnNlVHlwZSks
ICJDYW5ub3QgcGFyc2UgYm9keSBvZiB0aGlzIGZ1bmN0aW9uIik7CiAjZW5kaWYKICAgICB1bnNp
Z25lZCBlbmRDb2x1bW4gPSB0b2tlbkNvbHVtbigpOwotICAgIHJldHVybiBjb250ZXh0LmNyZWF0
ZUZ1bmN0aW9uQm9keShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1u
LCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFy
YW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCk7CisgICAgcmV0dXJu
IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25Cb2R5KHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24o
KSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9u
TmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5k
LCBwYXJhbWV0ZXJDb3VudCk7CiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5j
dGlvbk1vZGUoRnVuY3Rpb25QYXJzZU1vZGUgbW9kZSkKQEAgLTE0MjcsNiArMTQzNSw4IEBAIHN0
YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBMZXhlclR5cGU+IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gaW50IFBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhUcmVlQnVpbGRlciYgY29udGV4dCwgRnVu
Y3Rpb25QYXJzZU1vZGUgbW9kZSwgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiYgaW5m
bykKIHsKICAgICBpbnQgcGFyYW1ldGVyc1N0YXJ0ID0gbV90b2tlbi5tX2xvY2F0aW9uLnN0YXJ0
T2Zmc2V0OworICAgIFRyZWVGb3JtYWxQYXJhbWV0ZXJMaXN0IHBhcmFtZXRlckxpc3QgPSBjb250
ZXh0LmNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QoKTsKKyAgICBpbmZvLnBhcmFtZXRlcnMgPSBw
YXJhbWV0ZXJMaXN0OwogICAgIAogI2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgp
CiAgICAgaWYgKG1vZGUgPT0gQXJyb3dGdW5jdGlvbk1vZGUpIHsKQEAgLTE0MzcsNDYgKzE0NDcs
NDggQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4gdGVtcGxhdGUgPAogICAgICAgICAg
ICAgaWYgKG1hdGNoKE9QRU5QQVJFTikpIHsKICAgICAgICAgICAgICAgICBuZXh0KCk7CiAgICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKCFtYXRjaChDTE9TRVBBUkVOKSkgewot
ICAgICAgICAgICAgICAgICAgICBpbmZvLnBhcmFtZXRlcnMgPSBwYXJzZUZvcm1hbFBhcmFtZXRl
cnMoY29udGV4dCk7Ci0gICAgICAgICAgICAgICAgICAgIGZhaWxJZkZhbHNlKGluZm8ucGFyYW1l
dGVycywgIkNhbm5vdCBwYXJzZSBwYXJhbWV0ZXJzIGZvciB0aGlzICIsIHN0cmluZ0ZvckZ1bmN0
aW9uTW9kZShtb2RlKSk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICht
YXRjaChDTE9TRVBBUkVOKSkKKyAgICAgICAgICAgICAgICAgICAgaW5mby5wYXJhbWV0ZXJDb3Vu
dCA9IDA7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBmYWlsSWZG
YWxzZShwYXJzZUZvcm1hbFBhcmFtZXRlcnMoY29udGV4dCwgcGFyYW1ldGVyTGlzdCwgaW5mby5w
YXJhbWV0ZXJDb3VudCksICJDYW5ub3QgcGFyc2UgcGFyYW1ldGVycyBmb3IgdGhpcyAiLCBzdHJp
bmdGb3JGdW5jdGlvbk1vZGUobW9kZSkpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VQQVJFTiwgIkV4cGVjdGVkIGEgJyknIG9yIGEgJywnIGFm
dGVyIGEgcGFyYW1ldGVyIGRlY2xhcmF0aW9uIik7CiAgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIGluZm8ucGFyYW1ldGVyQ291bnQgPSAxOwogICAgICAgICAgICAgICAgIGF1
dG8gcGFyYW1ldGVyID0gcGFyc2VEZXN0cnVjdHVyaW5nUGF0dGVybihjb250ZXh0LCBEZXN0cnVj
dHVyZVRvUGFyYW1ldGVycyk7CiAgICAgICAgICAgICAgICAgZmFpbElmRmFsc2UocGFyYW1ldGVy
LCAiQ2Fubm90IHBhcnNlIHBhcmFtZXRlciBwYXR0ZXJuIik7Ci0gICAgICAgICAgICAgICAgaW5m
by5wYXJhbWV0ZXJzID0gY29udGV4dC5jcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KHBhcmFtZXRl
cik7Ci0gICAgICAgICAgICAgICAgZmFpbElmRmFsc2UoaW5mby5wYXJhbWV0ZXJzLCAiQ2Fubm90
IHBhcnNlIHBhcmFtZXRlcnMgZm9yIHRoaXMgIiwgc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKG1vZGUp
KTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJMaXN0
LCBwYXJhbWV0ZXIpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAg
ICAgIHJldHVybiBwYXJhbWV0ZXJzU3RhcnQ7CiAgICAgfQogI2VuZGlmCi0gICAgCiAgICAgaWYg
KCFjb25zdW1lKE9QRU5QQVJFTikpIHsKICAgICAgICAgc2VtYW50aWNGYWlsdXJlRHVlVG9LZXl3
b3JkKHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShtb2RlKSwgIiBuYW1lIik7CiAgICAgICAgIGZhaWxX
aXRoTWVzc2FnZSgiRXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgIiwgc3RyaW5nRm9y
RnVuY3Rpb25Nb2RlKG1vZGUpLCAiJ3MgcGFyYW1ldGVyIGxpc3QiKTsKICAgICB9CisgICAgaW5m
by5zdGFydEZ1bmN0aW9uT2Zmc2V0ID0gcGFyYW1ldGVyc1N0YXJ0OwogCi0gICAgaWYgKG1vZGUg
PT0gR2V0dGVyTW9kZSkKKyAgICBpZiAobW9kZSA9PSBHZXR0ZXJNb2RlKSB7CiAgICAgICAgIGNv
bnN1bWVPckZhaWwoQ0xPU0VQQVJFTiwgImdldHRlciBmdW5jdGlvbnMgbXVzdCBoYXZlIG5vIHBh
cmFtZXRlcnMiKTsKLSAgICBlbHNlIGlmIChtb2RlID09IFNldHRlck1vZGUpIHsKKyAgICAgICAg
aW5mby5wYXJhbWV0ZXJDb3VudCA9IDA7CisgICAgfSBlbHNlIGlmIChtb2RlID09IFNldHRlck1v
ZGUpIHsKICAgICAgICAgZmFpbElmVHJ1ZShtYXRjaChDTE9TRVBBUkVOKSwgInNldHRlciBmdW5j
dGlvbnMgbXVzdCBoYXZlIG9uZSBwYXJhbWV0ZXIiKTsKICAgICAgICAgYXV0byBwYXJhbWV0ZXIg
PSBwYXJzZURlc3RydWN0dXJpbmdQYXR0ZXJuKGNvbnRleHQsIERlc3RydWN0dXJlVG9QYXJhbWV0
ZXJzKTsKICAgICAgICAgZmFpbElmRmFsc2UocGFyYW1ldGVyLCAic2V0dGVyIGZ1bmN0aW9ucyBt
dXN0IGhhdmUgb25lIHBhcmFtZXRlciIpOwotICAgICAgICBpbmZvLnBhcmFtZXRlcnMgPSBjb250
ZXh0LmNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QocGFyYW1ldGVyKTsKKyAgICAgICAgY29udGV4
dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVyTGlzdCwgcGFyYW1ldGVyKTsKKyAgICAgICAgaW5m
by5wYXJhbWV0ZXJDb3VudCA9IDE7CiAgICAgICAgIGZhaWxJZlRydWUobWF0Y2goQ09NTUEpLCAi
c2V0dGVyIGZ1bmN0aW9ucyBtdXN0IGhhdmUgb25lIHBhcmFtZXRlciIpOwogICAgICAgICBjb25z
dW1lT3JGYWlsKENMT1NFUEFSRU4sICJFeHBlY3RlZCBhICcpJyBhZnRlciBhIHBhcmFtZXRlciBk
ZWNsYXJhdGlvbiIpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmICghbWF0Y2goQ0xPU0VQQVJF
TikpIHsKLSAgICAgICAgICAgIGluZm8ucGFyYW1ldGVycyA9IHBhcnNlRm9ybWFsUGFyYW1ldGVy
cyhjb250ZXh0KTsKLSAgICAgICAgICAgIGZhaWxJZkZhbHNlKGluZm8ucGFyYW1ldGVycywgIkNh
bm5vdCBwYXJzZSBwYXJhbWV0ZXJzIGZvciB0aGlzICIsIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZSht
b2RlKSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKG1hdGNoKENMT1NFUEFSRU4pKQorICAgICAg
ICAgICAgaW5mby5wYXJhbWV0ZXJDb3VudCA9IDA7CisgICAgICAgICBlbHNlCisgICAgICAgICAg
ICBmYWlsSWZGYWxzZShwYXJzZUZvcm1hbFBhcmFtZXRlcnMoY29udGV4dCwgcGFyYW1ldGVyTGlz
dCwgaW5mby5wYXJhbWV0ZXJDb3VudCksICJDYW5ub3QgcGFyc2UgcGFyYW1ldGVycyBmb3IgdGhp
cyAiLCBzdHJpbmdGb3JGdW5jdGlvbk1vZGUobW9kZSkpOwogICAgICAgICBjb25zdW1lT3JGYWls
KENMT1NFUEFSRU4sICJFeHBlY3RlZCBhICcpJyBvciBhICcsJyBhZnRlciBhIHBhcmFtZXRlciBk
ZWNsYXJhdGlvbiIpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBwYXJhbWV0ZXJzU3RhcnQ7
CiB9CiAKQEAgLTE1MTksNyArMTUzMSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
Ym9vbCBQYXJzZXIKICAgICAgICAgICAgIGV4cGVjdGVkU3VwZXJCaW5kaW5nID0gbV9kZWZhdWx0
Q29uc3RydWN0b3JLaW5kID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCA/IFN1cGVyQmluZGlu
Zzo6TmVlZGVkIDogU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQ7CiAgICAgICAgIH0KICAgICAgICAg
Ci0gICAgICAgIGluZm8uc3RhcnRGdW5jdGlvbk9mZnNldCA9IG1fdG9rZW4ubV9kYXRhLm9mZnNl
dDsKKyAgICAgICAgLy9pbmZvLnN0YXJ0RnVuY3Rpb25PZmZzZXQgPSBtX3Rva2VuLm1fZGF0YS5v
ZmZzZXQ7CiAgICAgICAgIAogICAgICAgICBicmVhazsKICAgICB9CkBAIC0xNTc3LDcgKzE1ODks
NyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyCiAgICAgICAgIGlu
Zm8uYm9keSA9IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25Cb2R5KAogICAgICAgICAgICAgc3RhcnRM
b2NhdGlvbiwgZW5kTG9jYXRpb24sIGluZm8uYm9keVN0YXJ0Q29sdW1uLCBib2R5RW5kQ29sdW1u
LCAKICAgICAgICAgICAgIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwg
cGFyYW1ldGVyc1N0YXJ0LCAKLSAgICAgICAgICAgIGNhY2hlZEluZm8tPnN0cmljdE1vZGUsIGNv
bnN0cnVjdG9yS2luZCk7CisgICAgICAgICAgICBjYWNoZWRJbmZvLT5zdHJpY3RNb2RlLCBjb25z
dHJ1Y3RvcktpbmQsIGNhY2hlZEluZm8tPnBhcmFtZXRlckNvdW50KTsKICAgICAgICAgCiAgICAg
ICAgIGZ1bmN0aW9uU2NvcGUtPnJlc3RvcmVGcm9tU291cmNlUHJvdmlkZXJDYWNoZShjYWNoZWRJ
bmZvKTsKICAgICAgICAgZmFpbElmRmFsc2UocG9wU2NvcGUoZnVuY3Rpb25TY29wZSwgVHJlZUJ1
aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbyksICJQYXJzZXIgZXJyb3IiKTsKQEAgLTE2Mjcs
MTcgKzE2MzksMTcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcgog
ICAgICAgICBpbmZvLmJvZHlTdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICAgICAgaW5mby5i
b2R5U3RhcnRDb2x1bW4gPSBtX3Rva2VuLm1fZGF0YS5vZmZzZXQgLSBtX3Rva2VuLm1fZGF0YS5s
aW5lU3RhcnRPZmZzZXQ7CiAgICAgICAgICAgICAKLSAgICAgICAgaW5mby5ib2R5ID0gcGFyc2VG
dW5jdGlvbkJvZHkoY29udGV4dCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0
YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIGNvbnN0cnVjdG9yS2luZCwgU3RhbmRhcmRGdW5jdGlvblBh
cnNlVHlwZSk7CisgICAgICAgIGluZm8uYm9keSA9IHBhcnNlRnVuY3Rpb25Cb2R5KGNvbnRleHQs
IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0
LCBjb25zdHJ1Y3RvcktpbmQsIFN0YW5kYXJkRnVuY3Rpb25QYXJzZVR5cGUsIGluZm8ucGFyYW1l
dGVyQ291bnQpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBTdGFuZGFyZEZ1bmN0
aW9uQm9keUJsb2NrOgogICAgIGNhc2UgQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uIDogewot
ICAgICAgICBpbmZvLmJvZHkgPSBwYXJzZUZ1bmN0aW9uQm9keShjb250ZXh0LCBmdW5jdGlvbktl
eXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgY29uc3RydWN0
b3JLaW5kLCBwYXJzZVR5cGUpOworICAgICAgICBpbmZvLmJvZHkgPSBwYXJzZUZ1bmN0aW9uQm9k
eShjb250ZXh0LCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFt
ZXRlcnNTdGFydCwgY29uc3RydWN0b3JLaW5kLCBwYXJzZVR5cGUsIGluZm8ucGFyYW1ldGVyQ291
bnQpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgfQogI2Vsc2UKLSAgICBpbmZvLmJvZHkg
PSBwYXJzZUZ1bmN0aW9uQm9keShjb250ZXh0LCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rp
b25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgY29uc3RydWN0b3JLaW5kLCBTdGFuZGFyZEZ1
bmN0aW9uUGFyc2VUeXBlKTsKKyAgICBpbmZvLmJvZHkgPSBwYXJzZUZ1bmN0aW9uQm9keShjb250
ZXh0LCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNT
dGFydCwgY29uc3RydWN0b3JLaW5kLCBTdGFuZGFyZEZ1bmN0aW9uUGFyc2VUeXBlLCBpbmZvLnBh
cmFtZXRlckNvdW50KTsKICNlbmRpZgogICAgIAogICAgIHJlc3RvcmVTdGF0ZShvbGRTdGF0ZSk7
CkBAIC0xNjc4LDYgKzE2OTAsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wg
UGFyc2VyCiAgICAgICAgIHBhcmFtZXRlcnMubGFzdFRvY2tlblN0YXJ0T2Zmc2V0ID0gbG9jYXRp
b24uc3RhcnRPZmZzZXQ7CiAgICAgICAgIHBhcmFtZXRlcnMubGFzdFRvY2tlbkVuZE9mZnNldCA9
IGxvY2F0aW9uLmVuZE9mZnNldDsKICAgICAgICAgcGFyYW1ldGVycy5sYXN0VG9ja2VuTGluZVN0
YXJ0T2Zmc2V0ID0gbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0OworICAgICAgICBwYXJhbWV0ZXJz
LnBhcmFtZXRlckNvdW50ID0gaW5mby5wYXJhbWV0ZXJDb3VudDsKICNpZiBFTkFCTEUoRVM2X0FS
Uk9XRlVOQ1RJT05fU1lOVEFYKQogICAgICAgICBpZiAoaW5mby5mdW5jdGlvbkJvZHlUeXBlID09
IEFycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikgewogICAgICAgICAgICAgcGFyYW1ldGVycy5p
c0JvZHlBcnJvd0V4cHJlc3Npb24gPSB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5oCShyZXZpc2lvbiAxODY3MTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MjksOCArNDI5LDcgQEAgY2xhc3Mg
UGFyc2VyIHsKIAogcHVibGljOgogICAgIFBhcnNlcigKLSAgICAgICAgVk0qLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgRnVuY3Rpb25QYXJhbWV0ZXJzKiwgY29uc3QgSWRlbnRpZmllciYsIAotICAgICAg
ICBKU1BhcnNlckJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGUsIEpTUGFyc2VyQ29kZVR5
cGUsCisgICAgICAgIFZNKiwgY29uc3QgU291cmNlQ29kZSYsIGNvbnN0IElkZW50aWZpZXImLCBK
U1BhcnNlckJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGUsIEpTUGFyc2VyQ29kZVR5cGUs
IAogICAgICAgICBDb25zdHJ1Y3RvcktpbmQgZGVmYXVsdENvbnN0cnVjdG9yS2luZCA9IENvbnN0
cnVjdG9yS2luZDo6Tm9uZSwgVGhpc1REWk1vZGUgPSBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRl
ZCk7CiAgICAgflBhcnNlcigpOwogCkBAIC04MDcsOCArODA2LDggQEAgcHJpdmF0ZToKICAgICB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVQcm9wZXJ0eSBwYXJzZVByb3BlcnR5KFRy
ZWVCdWlsZGVyJiwgYm9vbCBzdHJpY3QpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZUV4cHJlc3Npb24gcGFyc2VQcm9wZXJ0eU1ldGhvZChUcmVlQnVpbGRlciYgY29udGV4
dCwgY29uc3QgSWRlbnRpZmllciogbWV0aG9kTmFtZSk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlUHJvcGVydHkgcGFyc2VHZXR0ZXJTZXR0ZXIoVHJlZUJ1aWxkZXImLCBi
b29sIHN0cmljdCwgUHJvcGVydHlOb2RlOjpUeXBlLCB1bnNpZ25lZCBnZXR0ZXJPclNldHRlclN0
YXJ0T2Zmc2V0LCBDb25zdHJ1Y3RvcktpbmQgPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVy
QmluZGluZyA9IFN1cGVyQmluZGluZzo6Tm90TmVlZGVkKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgVHJlZUZ1bmN0aW9uQm9keSBwYXJzZUZ1bmN0aW9u
Qm9keShUcmVlQnVpbGRlciYsIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9u
TmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBDb25zdHJ1Y3RvcktpbmQsIEZ1bmN0aW9u
UGFyc2VUeXBlKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJ
TkUgVHJlZUZvcm1hbFBhcmFtZXRlckxpc3QgcGFyc2VGb3JtYWxQYXJhbWV0ZXJzKFRyZWVCdWls
ZGVyJik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdBWVNfSU5MSU5FIFRy
ZWVGdW5jdGlvbkJvZHkgcGFyc2VGdW5jdGlvbkJvZHkoVHJlZUJ1aWxkZXImLCBpbnQgZnVuY3Rp
b25LZXl3b3JkU3RhcnQsIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFy
dCwgQ29uc3RydWN0b3JLaW5kLCBGdW5jdGlvblBhcnNlVHlwZSwgdW5zaWduZWQpOworICAgIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBib29sIHBhcnNlRm9ybWFs
UGFyYW1ldGVycyhUcmVlQnVpbGRlciYsIFRyZWVGb3JtYWxQYXJhbWV0ZXJMaXN0LCB1bnNpZ25l
ZCYpOwogICAgIGVudW0gVmFyRGVjbGFyYXRpb25MaXN0Q29udGV4dCB7IEZvckxvb3BDb250ZXh0
LCBWYXJEZWNsYXJhdGlvbkNvbnRleHQgfTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVFeHByZXNzaW9uIHBhcnNlVmFyRGVjbGFyYXRpb25MaXN0KFRyZWVCdWlsZGVyJiwg
aW50JiBkZWNsYXJhdGlvbnMsIFRyZWVEZXN0cnVjdHVyaW5nUGF0dGVybiYgbGFzdFBhdHRlcm4s
IFRyZWVFeHByZXNzaW9uJiBsYXN0SW5pdGlhbGl6ZXIsIEpTVGV4dFBvc2l0aW9uJiBpZGVudFN0
YXJ0LCBKU1RleHRQb3NpdGlvbiYgaW5pdFN0YXJ0LCBKU1RleHRQb3NpdGlvbiYgaW5pdEVuZCwg
VmFyRGVjbGFyYXRpb25MaXN0Q29udGV4dCk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBORVZFUl9JTkxJTkUgVHJlZUNvbnN0RGVjbExpc3QgcGFyc2VDb25zdERlY2xhcmF0aW9u
TGlzdChUcmVlQnVpbGRlciYpOwpAQCAtOTI4LDYgKzkyNyw3IEBAIHByaXZhdGU6CiAgICAgY29u
c3QgU291cmNlQ29kZSogbV9zb3VyY2U7CiAgICAgUGFyc2VyQXJlbmEgbV9wYXJzZXJBcmVuYTsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGV4ZXJUeXBlPiBtX2xleGVyOworICAgIEZ1bmN0aW9uUGFy
YW1ldGVycyogbV9wYXJhbWV0ZXJzIHsgbnVsbHB0ciB9OwogICAgIAogICAgIGJvb2wgbV9oYXNT
dGFja092ZXJmbG93OwogICAgIFN0cmluZyBtX2Vycm9yTWVzc2FnZTsKQEAgLTEwMjEsNiArMTAy
MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4ZXIKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdmFyRGVjbGFyYXRpb25zLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9mdW5jRGVjbGFyYXRpb25zLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jYXB0dXJlZFZhcmlhYmxlcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyYW1ldGVycywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICptX3NvdXJjZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fZmVhdHVyZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX251bUNvbnN0YW50cyk7CkBAIC0xMDU0LDE3ICsxMDU1LDE5IEBAIHN0ZDo6dW5pcXVl
X3B0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4ZXIKIAogdGVtcGxhdGUgPGNsYXNzIFBhcnNlZE5v
ZGU+CiBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoCi0gICAgVk0qIHZtLCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uUGFyYW1ldGVycyogcGFyYW1ldGVycywKKyAg
ICBWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwKICAgICBjb25zdCBJZGVudGlmaWVy
JiBuYW1lLCBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLAogICAgIEpTUGFyc2VyU3Ry
aWN0TW9kZSBzdHJpY3RNb2RlLCBKU1BhcnNlckNvZGVUeXBlIGNvZGVUeXBlLAogICAgIFBhcnNl
ckVycm9yJiBlcnJvciwgSlNUZXh0UG9zaXRpb24qIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUg
PSAwLAogICAgIENvbnN0cnVjdG9yS2luZCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kID0gQ29uc3Ry
dWN0b3JLaW5kOjpOb25lLCBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSA9IFRoaXNURFpNb2RlOjpD
aGVja0lmTmVlZGVkKQogewogICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJQYXJz
aW5nIik7CisgICAgaWYgKGNvZGVUeXBlID09IEpTUGFyc2VyQ29kZVR5cGU6OkZ1bmN0aW9uKQor
ICAgICAgICBwcmludGYoIlBhcnNpbmcgZnVuY3Rpb24gJyVzJ1xuIiwgc291cmNlLnRvU3RyaW5n
KCkuYXNjaWkoKS5kYXRhKCkpOwogCiAgICAgQVNTRVJUKCFzb3VyY2UucHJvdmlkZXIoKS0+c291
cmNlKCkuaXNOdWxsKCkpOwogICAgIGlmIChzb3VyY2UucHJvdmlkZXIoKS0+c291cmNlKCkuaXM4
Qml0KCkpIHsKLSAgICAgICAgUGFyc2VyPExleGVyPExDaGFyPj4gcGFyc2VyKHZtLCBzb3VyY2Us
IHBhcmFtZXRlcnMsIG5hbWUsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBjb2RlVHlwZSwgZGVm
YXVsdENvbnN0cnVjdG9yS2luZCwgdGhpc1REWk1vZGUpOworICAgICAgICBQYXJzZXI8TGV4ZXI8
TENoYXI+PiBwYXJzZXIodm0sIHNvdXJjZSwgbmFtZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUs
IGNvZGVUeXBlLCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kLCB0aGlzVERaTW9kZSk7CiAgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiByZXN1bHQgPSBwYXJzZXIucGFyc2U8UGFyc2Vk
Tm9kZT4oZXJyb3IpOwogICAgICAgICBpZiAocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSkKICAg
ICAgICAgICAgICpwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lID0gcGFyc2VyLnBvc2l0aW9uQmVm
b3JlTGFzdE5ld2xpbmUoKTsKQEAgLTEwNzcsNyArMTA4MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQ
YXJzZWROb2RlPiBwYXJzZSgKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgQVNT
RVJUX1dJVEhfTUVTU0FHRShkZWZhdWx0Q29uc3RydWN0b3JLaW5kID09IENvbnN0cnVjdG9yS2lu
ZDo6Tm9uZSwgIkJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRGVmYXVsdENvbnN0cnVjdG9yIHNo
b3VsZCBhbHdheXMgdXNlIGEgOC1iaXQgc3RyaW5nIik7Ci0gICAgUGFyc2VyPExleGVyPFVDaGFy
Pj4gcGFyc2VyKHZtLCBzb3VyY2UsIHBhcmFtZXRlcnMsIG5hbWUsIGJ1aWx0aW5Nb2RlLCBzdHJp
Y3RNb2RlLCBjb2RlVHlwZSwgZGVmYXVsdENvbnN0cnVjdG9yS2luZCwgdGhpc1REWk1vZGUpOwor
ICAgIFBhcnNlcjxMZXhlcjxVQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBuYW1lLCBidWlsdGlu
TW9kZSwgc3RyaWN0TW9kZSwgY29kZVR5cGUsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIHRoaXNU
RFpNb2RlKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcmVzdWx0ID0gcGFyc2Vy
LnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yKTsKICAgICBpZiAocG9zaXRpb25CZWZvcmVMYXN0TmV3
bGluZSkKICAgICAgICAgKnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUgPSBwYXJzZXIucG9zaXRp
b25CZWZvcmVMYXN0TmV3bGluZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXJGdW5jdGlvbkluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlckZ1bmN0aW9uSW5mby5oCShyZXZpc2lvbiAxODY3MTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckZ1bmN0aW9uSW5mby5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNyw2ICszNyw3IEBAIHN0cnVjdCBQYXJzZXJGdW5jdGlvbkluZm8gewogICAgIGNv
bnN0IElkZW50aWZpZXIqIG5hbWUgPSAwOwogICAgIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3Jt
YWxQYXJhbWV0ZXJMaXN0IHBhcmFtZXRlcnMgPSAwOwogICAgIHR5cGVuYW1lIFRyZWVCdWlsZGVy
OjpGdW5jdGlvbkJvZHkgYm9keSA9IDA7CisgICAgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQ7CiAg
ICAgdW5zaWduZWQgc3RhcnRGdW5jdGlvbk9mZnNldCA9IDA7CiAgICAgdW5zaWduZWQgZW5kRnVu
Y3Rpb25PZmZzZXQgPSAwOwogICAgIGludCBib2R5U3RhcnRMaW5lID0gMDsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyQ2FjaGVJ
dGVtLmgJKHJldmlzaW9uIDE4NjcxOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
U291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBA
QCBzdHJ1Y3QgU291cmNlUHJvdmlkZXJDYWNoZUl0ZW1DcmVhdGlvblBhCiAgICAgdW5zaWduZWQg
bGFzdFRvY2tlbkVuZE9mZnNldDsKICAgICB1bnNpZ25lZCBsYXN0VG9ja2VuTGluZVN0YXJ0T2Zm
c2V0OwogICAgIHVuc2lnbmVkIGVuZEZ1bmN0aW9uT2Zmc2V0OworICAgIHVuc2lnbmVkIHBhcmFt
ZXRlckNvdW50OwogICAgIGJvb2wgbmVlZHNGdWxsQWN0aXZhdGlvbjsKICAgICBib29sIHVzZXNF
dmFsOwogICAgIGJvb2wgc3RyaWN0TW9kZTsKQEAgLTg3LDYgKzg4LDcgQEAgcHVibGljOgogICAg
IHVuc2lnbmVkIGxhc3RUb2NrZW5MaW5lIDogMzE7CiAgICAgdW5zaWduZWQgbGFzdFRvY2tlblN0
YXJ0T2Zmc2V0IDogMzE7CiAgICAgdW5zaWduZWQgbGFzdFRvY2tlbkVuZE9mZnNldDogMzE7Cisg
ICAgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQ7CiAgICAgCiAgICAgYm9vbCB1c2VzRXZhbCA6IDE7
CiAKQEAgLTEzMCw2ICsxMzIsNyBAQCBpbmxpbmUgU291cmNlUHJvdmlkZXJDYWNoZUl0ZW06OlNv
dXJjZVByCiAgICAgLCBsYXN0VG9ja2VuTGluZShwYXJhbWV0ZXJzLmxhc3RUb2NrZW5MaW5lKQog
ICAgICwgbGFzdFRvY2tlblN0YXJ0T2Zmc2V0KHBhcmFtZXRlcnMubGFzdFRvY2tlblN0YXJ0T2Zm
c2V0KQogICAgICwgbGFzdFRvY2tlbkVuZE9mZnNldChwYXJhbWV0ZXJzLmxhc3RUb2NrZW5FbmRP
ZmZzZXQpCisgICAgLCBwYXJhbWV0ZXJDb3VudChwYXJhbWV0ZXJzLnBhcmFtZXRlckNvdW50KQog
ICAgICwgdXNlc0V2YWwocGFyYW1ldGVycy51c2VzRXZhbCkKICAgICAsIHN0cmljdE1vZGUocGFy
YW1ldGVycy5zdHJpY3RNb2RlKQogICAgICwgbGFzdFRvY2tlbkxpbmVTdGFydE9mZnNldChwYXJh
bWV0ZXJzLmxhc3RUb2NrZW5MaW5lU3RhcnRPZmZzZXQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAkocmV2aXNpb24gMTg2NzE5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTY5LDcgKzY5LDYgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB0eXBlZGVmIFN5
bnRheENoZWNrZXIgRnVuY3Rpb25Cb2R5QnVpbGRlcjsKICAgICBlbnVtIHsgTm9uZUV4cHIgPSAw
LAogICAgICAgICBSZXNvbHZlRXZhbEV4cHIsIFJlc29sdmVFeHByLCBJbnRlZ2VyRXhwciwgRG91
YmxlRXhwciwgU3RyaW5nRXhwciwKICAgICAgICAgVGhpc0V4cHIsIE51bGxFeHByLCBCb29sRXhw
ciwgUmVnRXhwRXhwciwgT2JqZWN0TGl0ZXJhbEV4cHIsCkBAIC0xNzgsNyArMTc3LDcgQEAgcHVi
bGljOgogICAgIENsYXNzRXhwcmVzc2lvbiBjcmVhdGVDbGFzc0V4cHIoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlw
ZSwgUHJvcGVydHlMaXN0LCBQcm9wZXJ0eUxpc3QpIHsgcmV0dXJuIENsYXNzRXhwcjsgfQogI2Vu
ZGlmCiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYpIHsgcmV0
dXJuIEZ1bmN0aW9uRXhwcjsgfQotICAgIGludCBjcmVhdGVGdW5jdGlvbkJvZHkoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGJvb2wsIGlu
dCwgaW50LCBpbnQsIENvbnN0cnVjdG9yS2luZCkgeyByZXR1cm4gRnVuY3Rpb25Cb2R5UmVzdWx0
OyB9CisgICAgaW50IGNyZWF0ZUZ1bmN0aW9uQm9keShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQsIGludCwgQ29u
c3RydWN0b3JLaW5kLCB1bnNpZ25lZCkgeyByZXR1cm4gRnVuY3Rpb25Cb2R5UmVzdWx0OyB9CiAj
aWYgRU5BQkxFKEVTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCkKICAgICBFeHByZXNzaW9uVHlwZSBj
cmVhdGVBcnJvd0Z1bmN0aW9uRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBQYXJz
ZXJGdW5jdGlvbkluZm88U3ludGF4Q2hlY2tlcj4mKSB7IHJldHVybiBGdW5jdGlvbkV4cHI7IH0K
ICNlbmRpZiAKQEAgLTIyMCw4ICsyMTksOCBAQCBwdWJsaWM6CiAgICAgaW50IGNyZWF0ZVByb3Bl
cnR5TGlzdChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBQcm9wZXJ0eSwgaW50KSB7IHJldHVybiBQ
cm9wZXJ0eUxpc3RSZXN1bHQ7IH0KICAgICBpbnQgY3JlYXRlRWxlbWVudExpc3QoaW50LCBpbnQp
IHsgcmV0dXJuIEVsZW1lbnRzTGlzdFJlc3VsdDsgfQogICAgIGludCBjcmVhdGVFbGVtZW50TGlz
dChpbnQsIGludCwgaW50KSB7IHJldHVybiBFbGVtZW50c0xpc3RSZXN1bHQ7IH0KLSAgICBpbnQg
Y3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdChEZXN0cnVjdHVyaW5nUGF0dGVybikgeyByZXR1cm4g
Rm9ybWFsUGFyYW1ldGVyTGlzdFJlc3VsdDsgfQotICAgIGludCBjcmVhdGVGb3JtYWxQYXJhbWV0
ZXJMaXN0KGludCwgRGVzdHJ1Y3R1cmluZ1BhdHRlcm4pIHsgcmV0dXJuIEZvcm1hbFBhcmFtZXRl
ckxpc3RSZXN1bHQ7IH0KKyAgICBpbnQgY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdCgpIHsgcmV0
dXJuIEZvcm1hbFBhcmFtZXRlckxpc3RSZXN1bHQ7IH0KKyAgICB2b2lkIGFwcGVuZFBhcmFtZXRl
cihpbnQsIERlc3RydWN0dXJpbmdQYXR0ZXJuKSB7IH0KICAgICBpbnQgY3JlYXRlQ2xhdXNlKGlu
dCwgaW50KSB7IHJldHVybiBDbGF1c2VSZXN1bHQ7IH0KICAgICBpbnQgY3JlYXRlQ2xhdXNlTGlz
dChpbnQpIHsgcmV0dXJuIENsYXVzZUxpc3RSZXN1bHQ7IH0KICAgICBpbnQgY3JlYXRlQ2xhdXNl
TGlzdChpbnQsIGludCkgeyByZXR1cm4gQ2xhdXNlTGlzdFJlc3VsdDsgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCShyZXZpc2lvbiAxODY3MTkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05NCw3ICs5NCw3IEBAIFVubGlua2VkQ29kZUJsb2NrVHlwZSogQ29kZUNhY2hl
OjpnZXRHbG8KIAogICAgIHR5cGVkZWYgdHlwZW5hbWUgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVC
bG9ja1R5cGU+OjpSb290Tm9kZSBSb290Tm9kZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Um9vdE5v
ZGU+IHJvb3ROb2RlID0gcGFyc2U8Um9vdE5vZGU+KAotICAgICAgICAmdm0sIHNvdXJjZSwgMCwg
SWRlbnRpZmllcigpLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgCisgICAgICAgICZ2bSwgc291
cmNlLCBJZGVudGlmaWVyKCksIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCAKICAgICAgICAgSlNQ
YXJzZXJDb2RlVHlwZTo6UHJvZ3JhbSwgZXJyb3IsIDAsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwg
dGhpc1REWk1vZGUpOwogICAgIGlmICghcm9vdE5vZGUpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwpAQCAtMTQ0LDcgKzE0NCw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBDb2RlQ2Fj
aGU6OmcKIAogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmU7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFByb2dyYW1Ob2RlPiBwcm9ncmFtID0gcGFyc2U8UHJvZ3JhbU5v
ZGU+KAotICAgICAgICAmdm0sIHNvdXJjZSwgMCwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0
aW5Nb2RlOjpOb3RCdWlsdGluLCAKKyAgICAgICAgJnZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwg
SlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgCiAgICAgICAgIEpTUGFyc2VyU3RyaWN0
TW9kZTo6Tm90U3RyaWN0LCBKU1BhcnNlckNvZGVUeXBlOjpQcm9ncmFtLCAKICAgICAgICAgZXJy
b3IsICZwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsKICAgICBpZiAoIXByb2dyYW0pIHsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCShyZXZp
c2lvbiAxODY3MTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQCBib29sIGNoZWNrU3ludGF4KFZN
JiB2bSwgY29uc3QgU291cmNlQ29kCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIFJF
TEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0
b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIHJldHVybiAhIXBhcnNlPFByb2dyYW1Ob2RlPigKLSAg
ICAgICAgJnZtLCBzb3VyY2UsIDAsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6
Tm90QnVpbHRpbiwgCisgICAgICAgICZ2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIEpTUGFyc2Vy
QnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIAogICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5v
dFN0cmljdCwgSlNQYXJzZXJDb2RlVHlwZTo6UHJvZ3JhbSwgZXJyb3IpOwogfQogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAkocmV2aXNpb24g
MTg2NzE5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ3NSw3ICs0NzUsNyBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1
dGFibGU6OmNoZWNrU3ludGF4CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFByb2dyYW1Ob2RlPiBwcm9ncmFtTm9kZSA9IHBhcnNl
PFByb2dyYW1Ob2RlPigKLSAgICAgICAgdm0sIG1fc291cmNlLCAwLCBJZGVudGlmaWVyKCksIEpT
UGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIAorICAgICAgICB2bSwgbV9zb3VyY2UsIElk
ZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgCiAgICAgICAgIEpT
UGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBKU1BhcnNlckNvZGVUeXBlOjpQcm9ncmFtLCBl
cnJvcik7CiAgICAgaWYgKHByb2dyYW1Ob2RlKQogICAgICAgICByZXR1cm4gMDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256716</attachid>
            <date>2015-07-13 13:13:57 -0700</date>
            <delta_ts>2015-07-14 00:03:16 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>82454</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHRSZWYuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHRSZWYuY3BwCShyZXZpc2lv
biAxODY3MTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBwcml2YXRlOgogc3RhdGljIGJvb2wgcGFy
c2VTY3JpcHQoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9yJiBl
cnJvcikKIHsKICAgICByZXR1cm4gISFKU0M6OnBhcnNlPEpTQzo6UHJvZ3JhbU5vZGU+KAotICAg
ICAgICB2bSwgc291cmNlLCAwLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5v
dEJ1aWx0aW4sIAorICAgICAgICB2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVp
bHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIAogICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0
cmljdCwgSlNQYXJzZXJDb2RlVHlwZTo6UHJvZ3JhbSwgCiAgICAgICAgIGVycm9yKTsKIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhl
Y3V0YWJsZXMuY3BwCShyZXZpc2lvbiAxODY3MTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksMTAg
KzY5LDkgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdQogICAgIFVu
bGlua2VkRnVuY3Rpb25LaW5kIGtpbmQgPSBpc1BhcnNpbmdEZWZhdWx0Q29uc3RydWN0b3IgPyBV
bmxpbmtlZE5vcm1hbEZ1bmN0aW9uIDogVW5saW5rZWRCdWlsdGluRnVuY3Rpb247CiAgICAgUmVm
UHRyPFNvdXJjZVByb3ZpZGVyPiBzb3VyY2VPdmVycmlkZSA9IGlzUGFyc2luZ0RlZmF1bHRDb25z
dHJ1Y3RvciA/IHNvdXJjZS5wcm92aWRlcigpIDogbnVsbHB0cjsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UHJvZ3JhbU5vZGU+IHByb2dyYW0gPSBwYXJzZTxQcm9ncmFtTm9kZT4oCi0gICAgICAgICZt
X3ZtLCBzb3VyY2UsIDAsIElkZW50aWZpZXIoKSwgYnVpbHRpbk1vZGUsIAotICAgICAgICBKU1Bh
cnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgCi0gICAgICAgIEpTUGFyc2VyQ29kZVR5cGU6OlBy
b2dyYW0sCi0gICAgICAgIGVycm9yLCAmcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSwgY29uc3Ry
dWN0b3JLaW5kKTsKKyAgICAgICAgJm1fdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBidWlsdGlu
TW9kZSwgCisgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBKU1BhcnNlckNv
ZGVUeXBlOjpQcm9ncmFtLCBlcnJvciwgCisgICAgICAgICZwb3NpdGlvbkJlZm9yZUxhc3ROZXds
aW5lLCBGdW5jdGlvblBhcnNlTW9kZTo6Tm90QUZ1bmN0aW9uTW9kZSwgY29uc3RydWN0b3JLaW5k
KTsKIAogICAgIGlmICghcHJvZ3JhbSkgewogICAgICAgICBkYXRhTG9nKCJGYXRhbCBlcnJvciBj
b21waWxpbmcgYnVpbHRpbiBmdW5jdGlvbiAnIiwgbmFtZS5zdHJpbmcoKSwgIic6ICIsIGVycm9y
Lm1lc3NhZ2UoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAJKHJldmlzaW9uIDE4NjcxOSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTYwLDE1ICs2MCwxNSBAQCBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayog
Z2VuZXJhCiAgICAgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSA9IGV4ZWN1dGFibGUt
PmlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpCdWlsdGluIDogSlNQ
YXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbjsKICAgICBKU1BhcnNlclN0cmljdE1vZGUgc3Ry
aWN0TW9kZSA9IGV4ZWN1dGFibGUtPmlzSW5TdHJpY3RDb250ZXh0KCkgPyBKU1BhcnNlclN0cmlj
dE1vZGU6OlN0cmljdCA6IEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0OwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxGdW5jdGlvbk5vZGU+IGZ1bmN0aW9uID0gcGFyc2U8RnVuY3Rpb25Ob2RlPigK
LSAgICAgICAgJnZtLCBzb3VyY2UsIGV4ZWN1dGFibGUtPnBhcmFtZXRlcnMoKSwgZXhlY3V0YWJs
ZS0+bmFtZSgpLCBidWlsdGluTW9kZSwKLSAgICAgICAgc3RyaWN0TW9kZSwgSlNQYXJzZXJDb2Rl
VHlwZTo6RnVuY3Rpb24sIGVycm9yLCAwKTsKKyAgICAgICAgJnZtLCBzb3VyY2UsIGV4ZWN1dGFi
bGUtPm5hbWUoKSwgYnVpbHRpbk1vZGUsCisgICAgICAgIHN0cmljdE1vZGUsIEpTUGFyc2VyQ29k
ZVR5cGU6OkZ1bmN0aW9uLCBlcnJvciwgMCwgZXhlY3V0YWJsZS0+cGFyc2VNb2RlKCkpOwogCiAg
ICAgaWYgKCFmdW5jdGlvbikgewogICAgICAgICBBU1NFUlQoZXJyb3IuaXNWYWxpZCgpKTsKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgZnVuY3Rpb24tPmZpbmlzaFBhcnNp
bmcoZXhlY3V0YWJsZS0+cGFyYW1ldGVycygpLCBleGVjdXRhYmxlLT5uYW1lKCksIGV4ZWN1dGFi
bGUtPmZ1bmN0aW9uTW9kZSgpKTsKKyAgICBmdW5jdGlvbi0+ZmluaXNoUGFyc2luZyhleGVjdXRh
YmxlLT5uYW1lKCksIGV4ZWN1dGFibGUtPmZ1bmN0aW9uTW9kZSgpKTsKICAgICBleGVjdXRhYmxl
LT5yZWNvcmRQYXJzZShmdW5jdGlvbi0+ZmVhdHVyZXMoKSwgZnVuY3Rpb24tPmhhc0NhcHR1cmVk
VmFyaWFibGVzKCkpOwogICAgIAogICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3Vs
dCA9IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSgmdm0sIEZ1bmN0aW9uQ29kZSwK
QEAgLTg0LDcgKzg0LDYgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVu
YwogICAgIDogQmFzZSgqdm0sIHN0cnVjdHVyZSkKICAgICAsIG1fbmFtZShub2RlLT5pZGVudCgp
KQogICAgICwgbV9pbmZlcnJlZE5hbWUobm9kZS0+aW5mZXJyZWROYW1lKCkpCi0gICAgLCBtX3Bh
cmFtZXRlcnMobm9kZS0+cGFyYW1ldGVycygpKQogICAgICwgbV9zb3VyY2VPdmVycmlkZShXVEY6
Om1vdmUoc291cmNlT3ZlcnJpZGUpKQogICAgICwgbV9maXJzdExpbmVPZmZzZXQobm9kZS0+Zmly
c3RMaW5lKCkgLSBzb3VyY2UuZmlyc3RMaW5lKCkpCiAgICAgLCBtX2xpbmVDb3VudChub2RlLT5s
YXN0TGluZSgpIC0gbm9kZS0+Zmlyc3RMaW5lKCkpCkBAIC05NSw3ICs5NCwxMCBAQCBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jCiAgICAgLCBtX3NvdXJjZUxlbmd0aChu
b2RlLT5zb3VyY2UoKS5sZW5ndGgoKSkKICAgICAsIG1fcGFyYW1ldGVyc1N0YXJ0T2Zmc2V0KG5v
ZGUtPnBhcmFtZXRlcnNTdGFydCgpKQogICAgICwgbV90eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQo
bm9kZS0+ZnVuY3Rpb25LZXl3b3JkU3RhcnQoKSkKLSAgICAsIG1fdHlwZVByb2ZpbGluZ0VuZE9m
ZnNldChub2RlLT5zdGFydFN0YXJ0T2Zmc2V0KCkgKyBub2RlLT5zb3VyY2UoKS5sZW5ndGgoKSAt
IDEpCisgICAgLy8sIG1fdHlwZVByb2ZpbGluZ0VuZE9mZnNldChub2RlLT5zdGFydFN0YXJ0T2Zm
c2V0KCkgKyBub2RlLT5zb3VyY2UoKS5sZW5ndGgoKSAtIDEpCisgICAgLCBtX3R5cGVQcm9maWxp
bmdFbmRPZmZzZXQobm9kZS0+cGFyYW1ldGVyc1N0YXJ0KCkgKyBub2RlLT5zb3VyY2UoKS5sZW5n
dGgoKSAtIDEpCisgICAgLCBtX3BhcmFtZXRlckNvdW50KG5vZGUtPnBhcmFtZXRlckNvdW50KCkp
CisgICAgLCBtX3BhcnNlTW9kZShub2RlLT5wYXJzZU1vZGUoKSkKICAgICAsIG1fZmVhdHVyZXMo
MCkKICAgICAsIG1faXNJblN0cmljdENvbnRleHQobm9kZS0+aXNJblN0cmljdENvbnRleHQoKSkK
ICAgICAsIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMoZmFsc2UpCkBAIC0xMDYsMTEgKzEwOCw2IEBA
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmMKICAgICBBU1NFUlQobV9j
b25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPmNvbnN0cnVjdG9y
S2luZCgpKSk7CiB9CiAKLXNpemVfdCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6cGFyYW1l
dGVyQ291bnQoKSBjb25zdAotewotICAgIHJldHVybiBtX3BhcmFtZXRlcnMtPnNpemUoKTsKLX0K
LQogdm9pZCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwq
IGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKiB0aGlzT2JqZWN0ID0ganNDYXN0PFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKj4o
Y2VsbCk7CkBAIC0xMzcsNiArMTM0LDcgQEAgRnVuY3Rpb25FeGVjdXRhYmxlKiBVbmxpbmtlZEZ1
bmN0aW9uRXhlYwogICAgIHVuc2lnbmVkIGVuZENvbHVtbiA9IG1fdW5saW5rZWRCb2R5RW5kQ29s
dW1uICsgKGVuZENvbHVtbklzT25TdGFydExpbmUgPyBzdGFydENvbHVtbiA6IDEpOwogCiAgICAg
U291cmNlQ29kZSBjb2RlKHNvdXJjZS5wcm92aWRlcigpLCBzdGFydE9mZnNldCwgc3RhcnRPZmZz
ZXQgKyBtX3NvdXJjZUxlbmd0aCwgZmlyc3RMaW5lLCBzdGFydENvbHVtbik7CisgICAgLy9wcmlu
dGYoIj09PT09PT09PT09PVxuXG4lc1xuXG49PT09PT09PT09PT1cblxuIiwgY29kZS50b1N0cmlu
ZygpLmFzY2lpKCkuZGF0YSgpKTsKICAgICBGdW5jdGlvbk92ZXJyaWRlczo6T3ZlcnJpZGVJbmZv
IG92ZXJyaWRlSW5mbzsKICAgICBib29sIGhhc0Z1bmN0aW9uT3ZlcnJpZGUgPSBmYWxzZTsKIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmgJKHJldmlzaW9uIDE4NjcxOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw2IEBA
IG5hbWVzcGFjZSBKU0MgewogY2xhc3MgRGVidWdnZXI7CiBjbGFzcyBGdW5jdGlvbkJvZHlOb2Rl
OwogY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwotY2xhc3MgRnVuY3Rpb25QYXJhbWV0ZXJzOwog
Y2xhc3MgSlNTY29wZTsKIGNsYXNzIFBhcnNlckVycm9yOwogY2xhc3MgU2NyaXB0RXhlY3V0YWJs
ZTsKQEAgLTEyMiw3ICsxMjEsOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gKGtp
bmQgPT0gQ29kZUZvckNhbGwpID8gbV9zeW1ib2xUYWJsZUZvckNhbGwuZ2V0KCkgOiBtX3N5bWJv
bFRhYmxlRm9yQ29uc3RydWN0LmdldCgpOwogICAgIH0KLSAgICBzaXplX3QgcGFyYW1ldGVyQ291
bnQoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCgpIGNvbnN0IHsgcmV0dXJu
IG1fcGFyYW1ldGVyQ291bnQ7IH07CisgICAgRnVuY3Rpb25QYXJzZU1vZGUgcGFyc2VNb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV9wYXJzZU1vZGU7IH07CiAgICAgYm9vbCBpc0luU3RyaWN0Q29udGV4
dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJblN0cmljdENvbnRleHQ7IH0KICAgICBGdW5jdGlvbk1v
ZGUgZnVuY3Rpb25Nb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RnVuY3Rpb25Nb2Rl
PihtX2Z1bmN0aW9uTW9kZSk7IH0KICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5k
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5kPihtX2NvbnN0cnVj
dG9yS2luZCk7IH0KQEAgLTE1NCw4ICsxNTQsNiBAQCBwdWJsaWM6CiAgICAgICAgIG1fY29kZUJs
b2NrRm9yQ29uc3RydWN0LmNsZWFyKCk7CiAgICAgfQogCi0gICAgRnVuY3Rpb25QYXJhbWV0ZXJz
KiBwYXJhbWV0ZXJzKCkgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLmdldCgpOyB9Ci0KICAgICB2b2lk
IHJlY29yZFBhcnNlKENvZGVGZWF0dXJlcyBmZWF0dXJlcywgYm9vbCBoYXNDYXB0dXJlZFZhcmlh
YmxlcykKICAgICB7CiAgICAgICAgIG1fZmVhdHVyZXMgPSBmZWF0dXJlczsKQEAgLTE4MSw3ICsx
NzksNiBAQCBwcml2YXRlOgogICAgIFdyaXRlQmFycmllcjxKU1N0cmluZz4gbV9uYW1lVmFsdWU7
CiAgICAgV3JpdGVCYXJyaWVyPFN5bWJvbFRhYmxlPiBtX3N5bWJvbFRhYmxlRm9yQ2FsbDsKICAg
ICBXcml0ZUJhcnJpZXI8U3ltYm9sVGFibGU+IG1fc3ltYm9sVGFibGVGb3JDb25zdHJ1Y3Q7Ci0g
ICAgUmVmUHRyPEZ1bmN0aW9uUGFyYW1ldGVycz4gbV9wYXJhbWV0ZXJzOwogICAgIFJlZlB0cjxT
b3VyY2VQcm92aWRlcj4gbV9zb3VyY2VPdmVycmlkZTsKICAgICB1bnNpZ25lZCBtX2ZpcnN0TGlu
ZU9mZnNldDsKICAgICB1bnNpZ25lZCBtX2xpbmVDb3VudDsKQEAgLTE5Myw2ICsxOTAsOCBAQCBw
cml2YXRlOgogICAgIHVuc2lnbmVkIG1fcGFyYW1ldGVyc1N0YXJ0T2Zmc2V0OwogICAgIHVuc2ln
bmVkIG1fdHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0OwogICAgIHVuc2lnbmVkIG1fdHlwZVByb2Zp
bGluZ0VuZE9mZnNldDsKKyAgICB1bnNpZ25lZCBtX3BhcmFtZXRlckNvdW50OworICAgIEZ1bmN0
aW9uUGFyc2VNb2RlIG1fcGFyc2VNb2RlOwogCiAgICAgQ29kZUZlYXR1cmVzIG1fZmVhdHVyZXM7
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2Vu
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHAJKHJldmlzaW9uIDE4NjcxOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzExNiwx
MCArMzExNiw2IEBAIFJlZ2lzdGVySUQqIERlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZToKICAg
ICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZHN0LCBpbml0aWFs
aXplci5nZXQoKSk7CiB9CiAKLURlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZTo6fkRlc3RydWN0dXJp
bmdQYXR0ZXJuTm9kZSgpCi17Ci19Ci0KIHN0YXRpYyB2b2lkIGFzc2lnbkRlZmF1bHRWYWx1ZUlm
VW5kZWZpbmVkKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIG1heWJl
VW5kZWZpbmVkLCBFeHByZXNzaW9uTm9kZSogZGVmYXVsdFZhbHVlKQogewogICAgIEFTU0VSVChk
ZWZhdWx0VmFsdWUpOwpAQCAtMzI3Nyw3ICszMjczLDcgQEAgdm9pZCBBcnJheVBhdHRlcm5Ob2Rl
Ojp0b1N0cmluZyhTdHJpbmdCdQogdm9pZCBBcnJheVBhdHRlcm5Ob2RlOjpjb2xsZWN0Qm91bmRJ
ZGVudGlmaWVycyhWZWN0b3I8SWRlbnRpZmllcj4mIGlkZW50aWZpZXJzKSBjb25zdAogewogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90YXJnZXRQYXR0ZXJucy5zaXplKCk7IGkrKykgewot
ICAgICAgICBpZiAoRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiBub2RlID0gbV90YXJnZXRQYXR0
ZXJuc1tpXS5wYXR0ZXJuLmdldCgpKQorICAgICAgICBpZiAoRGVzdHJ1Y3R1cmluZ1BhdHRlcm5O
b2RlKiBub2RlID0gbV90YXJnZXRQYXR0ZXJuc1tpXS5wYXR0ZXJuKQogICAgICAgICAgICAgbm9k
ZS0+Y29sbGVjdEJvdW5kSWRlbnRpZmllcnMoaWRlbnRpZmllcnMpOwogICAgIH0KIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCShyZXZpc2lvbiAxODY3
MTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtOTMsOCArOTMsNiBAQCBwdWJsaWM6CiAgICAgfTsKIAogCi0gICAgdHlwZWRl
ZiBTeW50YXhDaGVja2VyIEZ1bmN0aW9uQm9keUJ1aWxkZXI7Ci0KICAgICB0eXBlZGVmIEV4cHJl
c3Npb25Ob2RlKiBFeHByZXNzaW9uOwogICAgIHR5cGVkZWYgSlNDOjpTb3VyY2VFbGVtZW50cyog
U291cmNlRWxlbWVudHM7CiAgICAgdHlwZWRlZiBBcmd1bWVudHNOb2RlKiBBcmd1bWVudHM7CkBA
IC0xMDksNyArMTA3LDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYgVGVtcGxhdGVTdHJpbmdMaXN0
Tm9kZSogVGVtcGxhdGVTdHJpbmdMaXN0OwogICAgIHR5cGVkZWYgVGVtcGxhdGVMaXRlcmFsTm9k
ZSogVGVtcGxhdGVMaXRlcmFsOwogI2VuZGlmCi0gICAgdHlwZWRlZiBQYXJhbWV0ZXJOb2RlKiBG
b3JtYWxQYXJhbWV0ZXJMaXN0OworICAgIHR5cGVkZWYgRnVuY3Rpb25QYXJhbWV0ZXJzKiBGb3Jt
YWxQYXJhbWV0ZXJMaXN0OwogICAgIHR5cGVkZWYgRnVuY3Rpb25Cb2R5Tm9kZSogRnVuY3Rpb25C
b2R5OwogI2lmIEVOQUJMRShFUzZfQ0xBU1NfU1lOVEFYKQogICAgIHR5cGVkZWYgQ2xhc3NFeHBy
Tm9kZSogQ2xhc3NFeHByZXNzaW9uOwpAQCAtMTE5LDEwICsxMTcsMTAgQEAgcHVibGljOgogICAg
IHR5cGVkZWYgQ2FzZUNsYXVzZU5vZGUqIENsYXVzZTsKICAgICB0eXBlZGVmIENvbnN0RGVjbE5v
ZGUqIENvbnN0RGVjbExpc3Q7CiAgICAgdHlwZWRlZiBzdGQ6OnBhaXI8RXhwcmVzc2lvbk5vZGUq
LCBCaW5hcnlPcEluZm8+IEJpbmFyeU9wZXJhbmQ7Ci0gICAgdHlwZWRlZiBSZWZQdHI8RGVzdHJ1
Y3R1cmluZ1BhdHRlcm5Ob2RlPiBEZXN0cnVjdHVyaW5nUGF0dGVybjsKLSAgICB0eXBlZGVmIFJl
ZlB0cjxBcnJheVBhdHRlcm5Ob2RlPiBBcnJheVBhdHRlcm47Ci0gICAgdHlwZWRlZiBSZWZQdHI8
T2JqZWN0UGF0dGVybk5vZGU+IE9iamVjdFBhdHRlcm47Ci0gICAgdHlwZWRlZiBSZWZQdHI8Qmlu
ZGluZ05vZGU+IEJpbmRpbmdQYXR0ZXJuOworICAgIHR5cGVkZWYgRGVzdHJ1Y3R1cmluZ1BhdHRl
cm5Ob2RlKiBEZXN0cnVjdHVyaW5nUGF0dGVybjsKKyAgICB0eXBlZGVmIEFycmF5UGF0dGVybk5v
ZGUqIEFycmF5UGF0dGVybjsKKyAgICB0eXBlZGVmIE9iamVjdFBhdHRlcm5Ob2RlKiBPYmplY3RQ
YXR0ZXJuOworICAgIHR5cGVkZWYgQmluZGluZ05vZGUqIEJpbmRpbmdQYXR0ZXJuOwogICAgIHN0
YXRpYyBjb25zdCBib29sIENyZWF0ZXNBU1QgPSB0cnVlOwogICAgIHN0YXRpYyBjb25zdCBib29s
IE5lZWRzRnJlZVZhcmlhYmxlSW5mbyA9IHRydWU7CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgQ2Fu
VXNlRnVuY3Rpb25DYWNoZSA9IHRydWU7CkBAIC0zNDcsNyArMzQ1LDcgQEAgcHVibGljOgogICAg
IEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+JiBpbmZvKQog
ICAgIHsKICAgICAgICAgRnVuY0V4cHJOb2RlKiByZXN1bHQgPSBuZXcgKG1fcGFyc2VyQXJlbmEp
IEZ1bmNFeHByTm9kZShsb2NhdGlvbiwgKmluZm8ubmFtZSwgaW5mby5ib2R5LAotICAgICAgICAg
ICAgbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKGluZm8uc3RhcnRGdW5jdGlvbk9mZnNldCwg
aW5mby5lbmRGdW5jdGlvbk9mZnNldCwgaW5mby5ib2R5U3RhcnRMaW5lLCBpbmZvLmJvZHlTdGFy
dENvbHVtbiksIGluZm8ucGFyYW1ldGVycyk7CisgICAgICAgICAgICBtX3NvdXJjZUNvZGUtPnN1
YkV4cHJlc3Npb24oaW5mby5zdGFydEZ1bmN0aW9uT2Zmc2V0LCBpbmZvLmVuZEZ1bmN0aW9uT2Zm
c2V0LCBpbmZvLmJvZHlTdGFydExpbmUsIGluZm8uYm9keVN0YXJ0Q29sdW1uKSk7CiAgICAgICAg
IGluZm8uYm9keS0+c2V0TG9jKGluZm8uYm9keVN0YXJ0TGluZSwgaW5mby5ib2R5RW5kTGluZSwg
bG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFydE9mZnNldCk7CiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtMzU2LDIyICszNTQsMjMgQEAgcHVibGljOgogICAg
ICAgICBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgZW5kTG9jYXRpb24sIAogICAgICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5z
aWduZWQgZW5kQ29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIAogICAgICAgICBpbnQg
ZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIGJvb2wgaW5TdHJpY3RDb250
ZXh0LCAKLSAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCkKKyAgICAgICAg
Q29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQs
IEZ1bmN0aW9uUGFyc2VNb2RlIG1vZGUpCiAgICAgewogICAgICAgICByZXR1cm4gbmV3IChtX3Bh
cnNlckFyZW5hKSBGdW5jdGlvbkJvZHlOb2RlKAogICAgICAgICAgICAgbV9wYXJzZXJBcmVuYSwg
c3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIAogICAg
ICAgICAgICAgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0
ZXJzU3RhcnQsIAotICAgICAgICAgICAgaW5TdHJpY3RDb250ZXh0LCBjb25zdHJ1Y3RvcktpbmQp
OworICAgICAgICAgICAgaW5TdHJpY3RDb250ZXh0LCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRl
ckNvdW50LCBtb2RlKTsKICAgICB9CiAKICNpZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lO
VEFYKQogICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVBcnJvd0Z1bmN0aW9uRXhwcihjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88QVNUQnVp
bGRlcj4mIGluZm8pCiAgICAgewotICAgICAgICBTb3VyY2VDb2RlIHNvdXJjZSA9IGluZm8uZnVu
Y3Rpb25Cb2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24KLSAgICAgICAgICAg
ID8gbV9zb3VyY2VDb2RlLT5zdWJBcnJvd0V4cHJlc3Npb24oaW5mby5hcnJvd0Z1bmN0aW9uT2Zm
c2V0LCBpbmZvLmVuZEZ1bmN0aW9uT2Zmc2V0LCBpbmZvLmJvZHlTdGFydExpbmUsIGluZm8uYm9k
eVN0YXJ0Q29sdW1uKQotICAgICAgICAgICAgOiBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24o
aW5mby5zdGFydEZ1bmN0aW9uT2Zmc2V0LCBpbmZvLmVuZEZ1bmN0aW9uT2Zmc2V0LCBpbmZvLmJv
ZHlTdGFydExpbmUsIGluZm8uYm9keVN0YXJ0Q29sdW1uKTsKKyAgICAgICAgLy9Tb3VyY2VDb2Rl
IHNvdXJjZSA9IGluZm8uZnVuY3Rpb25Cb2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUV4cHJl
c3Npb24KKyAgICAgICAgLy8gICAgPyBtX3NvdXJjZUNvZGUtPnN1YkFycm93RXhwcmVzc2lvbihp
bmZvLmFycm93RnVuY3Rpb25PZmZzZXQsIGluZm8uZW5kRnVuY3Rpb25PZmZzZXQsIGluZm8uYm9k
eVN0YXJ0TGluZSwgaW5mby5ib2R5U3RhcnRDb2x1bW4pCisgICAgICAgIC8vICAgIDogbV9zb3Vy
Y2VDb2RlLT5zdWJFeHByZXNzaW9uKGluZm8uc3RhcnRGdW5jdGlvbk9mZnNldCwgaW5mby5lbmRG
dW5jdGlvbk9mZnNldCwgaW5mby5ib2R5U3RhcnRMaW5lLCBpbmZvLmJvZHlTdGFydENvbHVtbik7
CisgICAgICAgIFNvdXJjZUNvZGUgc291cmNlID0gbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9u
KGluZm8uc3RhcnRGdW5jdGlvbk9mZnNldCwgaW5mby5lbmRGdW5jdGlvbk9mZnNldCwgaW5mby5i
b2R5U3RhcnRMaW5lLCBpbmZvLmJvZHlTdGFydENvbHVtbik7CiAKLSAgICAgICAgRnVuY0V4cHJO
b2RlKiByZXN1bHQgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIEZ1bmNFeHByTm9kZShsb2NhdGlvbiwg
KmluZm8ubmFtZSwgaW5mby5ib2R5LCBzb3VyY2UsIGluZm8ucGFyYW1ldGVycyk7CisgICAgICAg
IEZ1bmNFeHByTm9kZSogcmVzdWx0ID0gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5jRXhwck5vZGUo
bG9jYXRpb24sICppbmZvLm5hbWUsIGluZm8uYm9keSwgc291cmNlKTsKICAgICAgICAgaW5mby5i
b2R5LT5zZXRMb2MoaW5mby5ib2R5U3RhcnRMaW5lLCBpbmZvLmJvZHlFbmRMaW5lLCBsb2NhdGlv
bi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CkBAIC0zODQsNyArMzgzLDcgQEAgcHVibGljOgogICAgICAgICBpbmZv
LmJvZHktPnNldExvYyhpbmZvLmJvZHlTdGFydExpbmUsIGluZm8uYm9keUVuZExpbmUsIGxvY2F0
aW9uLnN0YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOwogICAgICAgICBpbmZv
LmJvZHktPnNldEluZmVycmVkTmFtZSgqbmFtZSk7CiAgICAgICAgIFNvdXJjZUNvZGUgc291cmNl
ID0gbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKGluZm8uc3RhcnRGdW5jdGlvbk9mZnNldCwg
aW5mby5lbmRGdW5jdGlvbk9mZnNldCwgaW5mby5ib2R5U3RhcnRMaW5lLCBpbmZvLmJvZHlTdGFy
dENvbHVtbik7Ci0gICAgICAgIEZ1bmNFeHByTm9kZSogZnVuY0V4cHIgPSBuZXcgKG1fcGFyc2Vy
QXJlbmEpIEZ1bmNFeHByTm9kZShsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+bnVsbElk
ZW50aWZpZXIsIGluZm8uYm9keSwgc291cmNlLCBpbmZvLnBhcmFtZXRlcnMpOworICAgICAgICBG
dW5jRXhwck5vZGUqIGZ1bmNFeHByID0gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5jRXhwck5vZGUo
bG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyLCBpbmZvLmJvZHks
IHNvdXJjZSk7CiAgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFByb3BlcnR5Tm9k
ZSgqbmFtZSwgZnVuY0V4cHIsIHR5cGUsIFByb3BlcnR5Tm9kZTo6VW5rbm93biwgc3VwZXJCaW5k
aW5nKTsKICAgICB9CiAgICAgCkBAIC0zOTQsNyArMzkzLDcgQEAgcHVibGljOgogICAgICAgICBp
bmZvLmJvZHktPnNldExvYyhpbmZvLmJvZHlTdGFydExpbmUsIGluZm8uYm9keUVuZExpbmUsIGxv
Y2F0aW9uLnN0YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOwogICAgICAgICBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCA9IHBhcnNlckFyZW5hLmlkZW50aWZpZXJBcmVuYSgpLm1h
a2VOdW1lcmljSWRlbnRpZmllcih2bSwgbmFtZSk7CiAgICAgICAgIFNvdXJjZUNvZGUgc291cmNl
ID0gbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKGluZm8uc3RhcnRGdW5jdGlvbk9mZnNldCwg
aW5mby5lbmRGdW5jdGlvbk9mZnNldCwgaW5mby5ib2R5U3RhcnRMaW5lLCBpbmZvLmJvZHlTdGFy
dENvbHVtbik7Ci0gICAgICAgIEZ1bmNFeHByTm9kZSogZnVuY0V4cHIgPSBuZXcgKG1fcGFyc2Vy
QXJlbmEpIEZ1bmNFeHByTm9kZShsb2NhdGlvbiwgdm0tPnByb3BlcnR5TmFtZXMtPm51bGxJZGVu
dGlmaWVyLCBpbmZvLmJvZHksIHNvdXJjZSwgaW5mby5wYXJhbWV0ZXJzKTsKKyAgICAgICAgRnVu
Y0V4cHJOb2RlKiBmdW5jRXhwciA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRnVuY0V4cHJOb2RlKGxv
Y2F0aW9uLCB2bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIsIGluZm8uYm9keSwgc291
cmNlKTsKICAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgUHJvcGVydHlOb2RlKGlk
ZW50LCBmdW5jRXhwciwgdHlwZSwgUHJvcGVydHlOb2RlOjpVbmtub3duLCBzdXBlckJpbmRpbmcp
OwogICAgIH0KIApAQCAtNDIwLDggKzQxOSw4IEBAIHB1YmxpYzoKICAgICBFbGVtZW50Tm9kZSog
Y3JlYXRlRWxlbWVudExpc3QoaW50IGVsaXNpb25zLCBFeHByZXNzaW9uTm9kZSogZXhwcikgeyBy
ZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBFbGVtZW50Tm9kZShlbGlzaW9ucywgZXhwcik7IH0K
ICAgICBFbGVtZW50Tm9kZSogY3JlYXRlRWxlbWVudExpc3QoRWxlbWVudE5vZGUqIGVsZW1zLCBp
bnQgZWxpc2lvbnMsIEV4cHJlc3Npb25Ob2RlKiBleHByKSB7IHJldHVybiBuZXcgKG1fcGFyc2Vy
QXJlbmEpIEVsZW1lbnROb2RlKGVsZW1zLCBlbGlzaW9ucywgZXhwcik7IH0KIAotICAgIFBhcmFt
ZXRlck5vZGUqIGNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QoRGVzdHJ1Y3R1cmluZ1BhdHRlcm4g
cGF0dGVybikgeyByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBQYXJhbWV0ZXJOb2RlKHBhdHRl
cm4pOyB9Ci0gICAgUGFyYW1ldGVyTm9kZSogY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdChQYXJh
bWV0ZXJOb2RlKiBsaXN0LCBEZXN0cnVjdHVyaW5nUGF0dGVybiBwYXR0ZXJuKSB7IHJldHVybiBu
ZXcgKG1fcGFyc2VyQXJlbmEpIFBhcmFtZXRlck5vZGUobGlzdCwgcGF0dGVybik7IH0KKyAgICBG
b3JtYWxQYXJhbWV0ZXJMaXN0IGNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QoKSB7IHJldHVybiBu
ZXcgKG1fcGFyc2VyQXJlbmEpIEZ1bmN0aW9uUGFyYW1ldGVycygpOyB9CisgICAgdm9pZCBhcHBl
bmRQYXJhbWV0ZXIoRm9ybWFsUGFyYW1ldGVyTGlzdCBsaXN0LCBEZXN0cnVjdHVyaW5nUGF0dGVy
biBwYXR0ZXJuKSB7IGxpc3QtPmFwcGVuZChwYXR0ZXJuKTsgfQogCiAgICAgQ2FzZUNsYXVzZU5v
ZGUqIGNyZWF0ZUNsYXVzZShFeHByZXNzaW9uTm9kZSogZXhwciwgSlNDOjpTb3VyY2VFbGVtZW50
cyogc3RhdGVtZW50cykgeyByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBDYXNlQ2xhdXNlTm9k
ZShleHByLCBzdGF0ZW1lbnRzKTsgfQogICAgIENsYXVzZUxpc3ROb2RlKiBjcmVhdGVDbGF1c2VM
aXN0KENhc2VDbGF1c2VOb2RlKiBjbGF1c2UpIHsgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkg
Q2xhdXNlTGlzdE5vZGUoY2xhdXNlKTsgfQpAQCAtNDMwLDcgKzQyOSw3IEBAIHB1YmxpYzoKICAg
ICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVGdW5jRGVjbFN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4mIGlu
Zm8pCiAgICAgewogICAgICAgICBGdW5jRGVjbE5vZGUqIGRlY2wgPSBuZXcgKG1fcGFyc2VyQXJl
bmEpIEZ1bmNEZWNsTm9kZShsb2NhdGlvbiwgKmluZm8ubmFtZSwgaW5mby5ib2R5LAotICAgICAg
ICAgICAgbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKGluZm8uc3RhcnRGdW5jdGlvbk9mZnNl
dCwgaW5mby5lbmRGdW5jdGlvbk9mZnNldCwgaW5mby5ib2R5U3RhcnRMaW5lLCBpbmZvLmJvZHlT
dGFydENvbHVtbiksIGluZm8ucGFyYW1ldGVycyk7CisgICAgICAgICAgICBtX3NvdXJjZUNvZGUt
PnN1YkV4cHJlc3Npb24oaW5mby5zdGFydEZ1bmN0aW9uT2Zmc2V0LCBpbmZvLmVuZEZ1bmN0aW9u
T2Zmc2V0LCBpbmZvLmJvZHlTdGFydExpbmUsIGluZm8uYm9keVN0YXJ0Q29sdW1uKSk7CiAgICAg
ICAgIGlmICgqaW5mby5uYW1lID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cykKICAg
ICAgICAgICAgIHVzZXNBcmd1bWVudHMoKTsKICAgICAgICAgbV9zY29wZS5tX2Z1bmNEZWNsYXJh
dGlvbnMuYXBwZW5kKGRlY2wtPmJvZHkoKSk7CkBAIC00ODYsOSArNDg1LDkgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKLSAgICBTdGF0ZW1lbnROb2RlKiBj
cmVhdGVGb3JJbkxvb3AoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUGFzc1JlZlB0
cjxEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU+IHBhdHRlcm4sIEV4cHJlc3Npb25Ob2RlKiBpdGVy
LCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZVN0YXJ0
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZURpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZUVu
ZCwgaW50IHN0YXJ0LCBpbnQgZW5kKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZvckluTG9v
cChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBEZXN0cnVjdHVyaW5nUGF0dGVybiBw
YXR0ZXJuLCBFeHByZXNzaW9uTm9kZSogaXRlciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50cywg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGVTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVEaXZv
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVFbmQsIGludCBzdGFydCwgaW50IGVuZCkKICAgICB7
Ci0gICAgICAgIGF1dG8gbGV4cHIgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIERlc3RydWN0dXJpbmdB
c3NpZ25tZW50Tm9kZShsb2NhdGlvbiwgcGF0dGVybi5nZXQoKSwgMCk7CisgICAgICAgIGF1dG8g
bGV4cHIgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIERlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZShs
b2NhdGlvbiwgcGF0dGVybiwgMCk7CiAgICAgICAgIHJldHVybiBjcmVhdGVGb3JJbkxvb3AobG9j
YXRpb24sIGxleHByLCBpdGVyLCBzdGF0ZW1lbnRzLCBlU3RhcnQsIGVEaXZvdCwgZUVuZCwgc3Rh
cnQsIGVuZCk7CiAgICAgfQogICAgIApAQCAtNTAwLDkgKzQ5OSw5IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRl
Rm9yT2ZMb29wKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFBhc3NSZWZQdHI8RGVz
dHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlPiBwYXR0ZXJuLCBFeHByZXNzaW9uTm9kZSogaXRlciwgU3Rh
dGVtZW50Tm9kZSogc3RhdGVtZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVTdGFydCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGVEaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVFbmQsIGlu
dCBzdGFydCwgaW50IGVuZCkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVGb3JPZkxvb3AoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gcGF0dGVy
biwgRXhwcmVzc2lvbk5vZGUqIGl0ZXIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudHMsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBlU3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlRGl2b3QsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBlRW5kLCBpbnQgc3RhcnQsIGludCBlbmQpCiAgICAgewotICAg
ICAgICBhdXRvIGxleHByID0gbmV3IChtX3BhcnNlckFyZW5hKSBEZXN0cnVjdHVyaW5nQXNzaWdu
bWVudE5vZGUobG9jYXRpb24sIHBhdHRlcm4uZ2V0KCksIDApOworICAgICAgICBhdXRvIGxleHBy
ID0gbmV3IChtX3BhcnNlckFyZW5hKSBEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5vZGUobG9jYXRp
b24sIHBhdHRlcm4sIDApOwogICAgICAgICByZXR1cm4gY3JlYXRlRm9yT2ZMb29wKGxvY2F0aW9u
LCBsZXhwciwgaXRlciwgc3RhdGVtZW50cywgZVN0YXJ0LCBlRGl2b3QsIGVFbmQsIHN0YXJ0LCBl
bmQpOwogICAgIH0KIApAQCAtNzM4LDE0ICs3MzcsMTQgQEAgcHVibGljOgogCiAgICAgYm9vbCBp
c1Jlc29sdmUoRXhwcmVzc2lvbk5vZGUqIGV4cHIpIGNvbnN0IHsgcmV0dXJuIGV4cHItPmlzUmVz
b2x2ZU5vZGUoKTsgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZURlc3RydWN0dXJpbmdB
c3NpZ25tZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFBhc3NSZWZQdHI8RGVz
dHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlPiBwYXR0ZXJuLCBFeHByZXNzaW9uTm9kZSogaW5pdGlhbGl6
ZXIpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZURlc3RydWN0dXJpbmdBc3NpZ25tZW50KGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIERlc3RydWN0dXJpbmdQYXR0ZXJuIHBhdHRl
cm4sIEV4cHJlc3Npb25Ob2RlKiBpbml0aWFsaXplcikKICAgICB7Ci0gICAgICAgIHJldHVybiBu
ZXcgKG1fcGFyc2VyQXJlbmEpIERlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZShsb2NhdGlvbiwg
cGF0dGVybi5nZXQoKSwgaW5pdGlhbGl6ZXIpOworICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNl
ckFyZW5hKSBEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5vZGUobG9jYXRpb24sIHBhdHRlcm4sIGlu
aXRpYWxpemVyKTsKICAgICB9CiAgICAgCiAgICAgQXJyYXlQYXR0ZXJuIGNyZWF0ZUFycmF5UGF0
dGVybihjb25zdCBKU1Rva2VuTG9jYXRpb24mKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEFycmF5
UGF0dGVybk5vZGU6OmNyZWF0ZSgpOworICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5h
KSBBcnJheVBhdHRlcm5Ob2RlKCk7CiAgICAgfQogICAgIAogICAgIHZvaWQgYXBwZW5kQXJyYXlQ
YXR0ZXJuU2tpcEVudHJ5KEFycmF5UGF0dGVybiBub2RlLCBjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uKQpAQCAtNzU1LDMyICs3NTQsMzIgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBl
bmRBcnJheVBhdHRlcm5FbnRyeShBcnJheVBhdHRlcm4gbm9kZSwgY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbiwgRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gcGF0dGVybiwgRXhwcmVzc2lvbk5v
ZGUqIGRlZmF1bHRWYWx1ZSkKICAgICB7Ci0gICAgICAgIG5vZGUtPmFwcGVuZEluZGV4KEFycmF5
UGF0dGVybk5vZGU6OkJpbmRpbmdUeXBlOjpFbGVtZW50LCBsb2NhdGlvbiwgcGF0dGVybi5nZXQo
KSwgZGVmYXVsdFZhbHVlKTsKKyAgICAgICAgbm9kZS0+YXBwZW5kSW5kZXgoQXJyYXlQYXR0ZXJu
Tm9kZTo6QmluZGluZ1R5cGU6OkVsZW1lbnQsIGxvY2F0aW9uLCBwYXR0ZXJuLCBkZWZhdWx0VmFs
dWUpOwogICAgIH0KIAogICAgIHZvaWQgYXBwZW5kQXJyYXlQYXR0ZXJuUmVzdEVudHJ5KEFycmF5
UGF0dGVybiBub2RlLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBEZXN0cnVjdHVy
aW5nUGF0dGVybiBwYXR0ZXJuKQogICAgIHsKLSAgICAgICAgbm9kZS0+YXBwZW5kSW5kZXgoQXJy
YXlQYXR0ZXJuTm9kZTo6QmluZGluZ1R5cGU6OlJlc3RFbGVtZW50LCBsb2NhdGlvbiwgcGF0dGVy
bi5nZXQoKSwgbnVsbHB0cik7CisgICAgICAgIG5vZGUtPmFwcGVuZEluZGV4KEFycmF5UGF0dGVy
bk5vZGU6OkJpbmRpbmdUeXBlOjpSZXN0RWxlbWVudCwgbG9jYXRpb24sIHBhdHRlcm4sIG51bGxw
dHIpOwogICAgIH0KIAogICAgIHZvaWQgZmluaXNoQXJyYXlQYXR0ZXJuKEFycmF5UGF0dGVybiBu
b2RlLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCiAgICAgewotICAgICAg
ICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLmdldCgpLCBkaXZvdFN0YXJ0LCBkaXZvdCwgZGl2
b3RFbmQpOworICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBkaXZvdFN0YXJ0LCBk
aXZvdCwgZGl2b3RFbmQpOwogICAgIH0KICAgICAKICAgICBPYmplY3RQYXR0ZXJuIGNyZWF0ZU9i
amVjdFBhdHRlcm4oY29uc3QgSlNUb2tlbkxvY2F0aW9uJikKICAgICB7Ci0gICAgICAgIHJldHVy
biBPYmplY3RQYXR0ZXJuTm9kZTo6Y3JlYXRlKCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fcGFy
c2VyQXJlbmEpIE9iamVjdFBhdHRlcm5Ob2RlKCk7CiAgICAgfQogICAgIAogICAgIHZvaWQgYXBw
ZW5kT2JqZWN0UGF0dGVybkVudHJ5KE9iamVjdFBhdHRlcm4gbm9kZSwgY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgYm9vbCB3YXNTdHJpbmcsIGNvbnN0IElkZW50aWZpZXImIGlkZW50
aWZpZXIsIERlc3RydWN0dXJpbmdQYXR0ZXJuIHBhdHRlcm4sIEV4cHJlc3Npb25Ob2RlKiBkZWZh
dWx0VmFsdWUpCiAgICAgewotICAgICAgICBub2RlLT5hcHBlbmRFbnRyeShsb2NhdGlvbiwgaWRl
bnRpZmllciwgd2FzU3RyaW5nLCBwYXR0ZXJuLmdldCgpLCBkZWZhdWx0VmFsdWUpOworICAgICAg
ICBub2RlLT5hcHBlbmRFbnRyeShsb2NhdGlvbiwgaWRlbnRpZmllciwgd2FzU3RyaW5nLCBwYXR0
ZXJuLCBkZWZhdWx0VmFsdWUpOwogICAgIH0KICAgICAKICAgICBCaW5kaW5nUGF0dGVybiBjcmVh
dGVCaW5kaW5nTG9jYXRpb24oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmll
ciYgYm91bmRQcm9wZXJ0eSwgY29uc3QgSlNUZXh0UG9zaXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZW5kKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEJpbmRpbmdOb2RlOjpjcmVh
dGUoYm91bmRQcm9wZXJ0eSwgc3RhcnQsIGVuZCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fcGFy
c2VyQXJlbmEpIEJpbmRpbmdOb2RlKGJvdW5kUHJvcGVydHksIHN0YXJ0LCBlbmQpOwogICAgIH0K
IAogICAgIHZvaWQgc2V0RW5kT2Zmc2V0KE5vZGUqIG5vZGUsIGludCBvZmZzZXQpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAkocmV2aXNpb24gMTg2NzE5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ5NCw3ICs0OTQsNyBAQCBzdGF0aWMgY29uc3QgTENoYXIgc2luZ2xlQ2hhcmFjdGVyRXNjYXBl
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogTGV4ZXI8VD46OkxleGVyKFZNKiB2bSwgSlNQYXJz
ZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSkKLSAgICA6IG1faXNSZXBhcnNpbmcoZmFsc2UpCisg
ICAgOiBtX2lzUmVwYXJzaW5nRnVuY3Rpb24oZmFsc2UpCiAgICAgLCBtX3ZtKHZtKQogICAgICwg
bV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKGJ1aWx0aW5Nb2RlID09IEpTUGFyc2VyQnVpbHRpbk1v
ZGU6OkJ1aWx0aW4pCiB7CkBAIC0yNDExLDcgKzI0MTEsNyBAQCB2b2lkIExleGVyPFQ+OjpjbGVh
cigpCiAgICAgVmVjdG9yPFVDaGFyPiBuZXdCdWZmZXJGb3JSYXdUZW1wbGF0ZVN0cmluZzE2Owog
ICAgIG1fYnVmZmVyRm9yUmF3VGVtcGxhdGVTdHJpbmcxNi5zd2FwKG5ld0J1ZmZlckZvclJhd1Rl
bXBsYXRlU3RyaW5nMTYpOwogCi0gICAgbV9pc1JlcGFyc2luZyA9IGZhbHNlOworICAgIG1faXNS
ZXBhcnNpbmdGdW5jdGlvbiA9IGZhbHNlOwogfQogCiAvLyBJbnN0YW50aWF0ZSB0aGUgdHdvIGZs
YXZvcnMgb2YgTGV4ZXIgd2UgbmVlZCBpbnN0ZWFkIG9mIHB1dHRpbmcgbW9zdCBvZiB0aGlzIGZp
bGUgaW4gTGV4ZXIuaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAkocmV2
aXNpb24gMTg2NzE5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC04NCw4ICs4NCw4IEBAIHB1YmxpYzoKIAogICAgIC8vIEZ1bmN0aW9u
cyB0byBzZXQgdXAgcGFyc2luZy4KICAgICB2b2lkIHNldENvZGUoY29uc3QgU291cmNlQ29kZSYs
IFBhcnNlckFyZW5hKik7Ci0gICAgdm9pZCBzZXRJc1JlcGFyc2luZygpIHsgbV9pc1JlcGFyc2lu
ZyA9IHRydWU7IH0KLSAgICBib29sIGlzUmVwYXJzaW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc1Jl
cGFyc2luZzsgfQorICAgIHZvaWQgc2V0SXNSZXBhcnNpbmdGdW5jdGlvbigpIHsgbV9pc1JlcGFy
c2luZ0Z1bmN0aW9uID0gdHJ1ZTsgfQorICAgIGJvb2wgaXNSZXBhcnNpbmdGdW5jdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1faXNSZXBhcnNpbmdGdW5jdGlvbjsgfQogCiAjaWYgRU5BQkxFKEVTNl9B
UlJPV0ZVTkNUSU9OX1NZTlRBWCkKICAgICB2b2lkIHNldFRva2VuUG9zaXRpb24oSlNUb2tlbiog
dG9rZW5SZWNvcmQpOwpAQCAtMjI0LDcgKzIyNCw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgVCog
bV9saW5lU3RhcnQ7CiAgICAgSlNUZXh0UG9zaXRpb24gbV9wb3NpdGlvbkJlZm9yZUxhc3ROZXds
aW5lOwogICAgIEpTVG9rZW5Mb2NhdGlvbiBtX2xhc3RUb2NrZW5Mb2NhdGlvbjsKLSAgICBib29s
IG1faXNSZXBhcnNpbmc7CisgICAgYm9vbCBtX2lzUmVwYXJzaW5nRnVuY3Rpb247CiAgICAgYm9v
bCBtX2F0TGluZVN0YXJ0OwogICAgIGJvb2wgbV9lcnJvcjsKICAgICBTdHJpbmcgbV9sZXhFcnJv
ck1lc3NhZ2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1
Y3RvcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVD
b25zdHJ1Y3RvcnMuaAkocmV2aXNpb24gMTg2NzE5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyMCwzNCArODIw
LDIyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUGFyYW1l
dGVyTm9kZTo6UGFyYW1ldGVyTm9kZShQYXNzUmVmUHRyPERlc3RydWN0dXJpbmdQYXR0ZXJuTm9k
ZT4gcGF0dGVybikKLSAgICAgICAgOiBtX3BhdHRlcm4ocGF0dGVybikKLSAgICAgICAgLCBtX25l
eHQoMCkKKyAgICBpbmxpbmUgRnVuY3Rpb25QYXJhbWV0ZXJzOjpGdW5jdGlvblBhcmFtZXRlcnMo
KQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fcGF0dGVybik7CiAgICAgfQogCi0gICAgaW5saW5l
IFBhcmFtZXRlck5vZGU6OlBhcmFtZXRlck5vZGUoUGFyYW1ldGVyTm9kZSogcHJldmlvdXMsIFBh
c3NSZWZQdHI8RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlPiBwYXR0ZXJuKQotICAgICAgICA6IG1f
cGF0dGVybihwYXR0ZXJuKQotICAgICAgICAsIG1fbmV4dCgwKQotICAgIHsKLSAgICAgICAgcHJl
dmlvdXMtPm1fbmV4dCA9IHRoaXM7Ci0gICAgICAgIEFTU0VSVChtX3BhdHRlcm4pOwotICAgICAg
ICBBU1NFUlQocHJldmlvdXMtPm1fcGF0dGVybik7Ci0gICAgfQotCi0gICAgaW5saW5lIEZ1bmNF
eHByTm9kZTo6RnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIFBhcmFtZXRlck5vZGUqIHBhcmFtZXRlcikKKyAgICBpbmxpbmUgRnVu
Y0V4cHJOb2RlOjpGdW5jRXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSkKICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAg
ICAgICAgLCBtX2JvZHkoYm9keSkKICAgICB7Ci0gICAgICAgIG1fYm9keS0+ZmluaXNoUGFyc2lu
Zyhzb3VyY2UsIHBhcmFtZXRlciwgaWRlbnQsIEZ1bmN0aW9uRXhwcmVzc2lvbik7CisgICAgICAg
IG1fYm9keS0+ZmluaXNoUGFyc2luZyhzb3VyY2UsIGlkZW50LCBGdW5jdGlvbkV4cHJlc3Npb24p
OwogICAgIH0KIAotICAgIGlubGluZSBGdW5jRGVjbE5vZGU6OkZ1bmNEZWNsTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRnVuY3Rp
b25Cb2R5Tm9kZSogYm9keSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJhbWV0ZXJOb2Rl
KiBwYXJhbWV0ZXIpCisgICAgaW5saW5lIEZ1bmNEZWNsTm9kZTo6RnVuY0RlY2xOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5j
dGlvbkJvZHlOb2RlKiBib2R5LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCiAgICAgICAgIDog
U3RhdGVtZW50Tm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2JvZHkoYm9keSkKICAgICB7Ci0g
ICAgICAgIG1fYm9keS0+ZmluaXNoUGFyc2luZyhzb3VyY2UsIHBhcmFtZXRlciwgaWRlbnQsIEZ1
bmN0aW9uRGVjbGFyYXRpb24pOworICAgICAgICBtX2JvZHktPmZpbmlzaFBhcnNpbmcoc291cmNl
LCBpZGVudCwgRnVuY3Rpb25EZWNsYXJhdGlvbik7CiAgICAgfQogCiAjaWYgRU5BQkxFKEVTNl9D
TEFTU19TWU5UQVgpCkBAIC05NDMsMjYgKzkzMSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7
CiAgICAgfQogICAgIAotICAgIGlubGluZSBSZWY8QXJyYXlQYXR0ZXJuTm9kZT4gQXJyYXlQYXR0
ZXJuTm9kZTo6Y3JlYXRlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFy
cmF5UGF0dGVybk5vZGUpOwotICAgIH0KLSAgICAKICAgICBpbmxpbmUgT2JqZWN0UGF0dGVybk5v
ZGU6Ok9iamVjdFBhdHRlcm5Ob2RlKCkKICAgICAgICAgOiBEZXN0cnVjdHVyaW5nUGF0dGVybk5v
ZGUoKQogICAgIHsKICAgICB9CiAgICAgCi0gICAgaW5saW5lIFJlZjxPYmplY3RQYXR0ZXJuTm9k
ZT4gT2JqZWN0UGF0dGVybk5vZGU6OmNyZWF0ZSgpCi0gICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBPYmplY3RQYXR0ZXJuTm9kZSk7Ci0gICAgfQotCi0gICAgaW5saW5lIFJlZjxC
aW5kaW5nTm9kZT4gQmluZGluZ05vZGU6OmNyZWF0ZShjb25zdCBJZGVudGlmaWVyJiBib3VuZFBy
b3BlcnR5LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBlbmQpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCaW5kaW5nTm9kZShi
b3VuZFByb3BlcnR5LCBzdGFydCwgZW5kKSk7Ci0gICAgfQotICAgIAogICAgIGlubGluZSBCaW5k
aW5nTm9kZTo6QmluZGluZ05vZGUoY29uc3QgSWRlbnRpZmllciYgYm91bmRQcm9wZXJ0eSwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIHN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZW5kKQogICAg
ICAgICA6IERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSgpCiAgICAgICAgICwgbV9kaXZvdFN0YXJ0
KHN0YXJ0KQpAQCAtOTcxLDcgKzk0NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9
CiAgICAgCi0gICAgaW5saW5lIERlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZTo6RGVzdHJ1Y3R1
cmluZ0Fzc2lnbm1lbnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFBhc3NS
ZWZQdHI8RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlPiBiaW5kaW5ncywgRXhwcmVzc2lvbk5vZGUq
IGluaXRpYWxpemVyKQorICAgIGlubGluZSBEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5vZGU6OkRl
c3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9u
LCBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUqIGJpbmRpbmdzLCBFeHByZXNzaW9uTm9kZSogaW5p
dGlhbGl6ZXIpCiAgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwg
bV9iaW5kaW5ncyhiaW5kaW5ncykKICAgICAgICAgLCBtX2luaXRpYWxpemVyKGluaXRpYWxpemVy
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAJKHJldmlzaW9uIDE4
NjcxOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTcsNyArMTE3LDcgQEAgU3RhdGVtZW50Tm9kZSogU2NvcGVOb2RlOjpzaW5n
bGVTdGF0ZW1lbgogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJvZ3JhbU5v
ZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUHJvZ3JhbU5vZGU6OlByb2dyYW1O
b2RlKFBhcnNlckFyZW5hJiBwYXJzZXJBcmVuYSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFy
dExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBz
dGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4s
IFZhclN0YWNrJiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayYgZnVuY1N0YWNrLCBJZGVudGlmaWVy
U2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlRmVh
dHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCitQcm9ncmFtTm9kZTo6UHJvZ3JhbU5v
ZGUoUGFyc2VyQXJlbmEmIHBhcnNlckFyZW5hLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0
TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVkIHN0
YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwg
VmFyU3RhY2smIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrJiBmdW5jU3RhY2ssIElkZW50aWZpZXJT
ZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBGdW5jdGlvblBhcmFtZXRlcnMqLCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKICAg
ICA6IFNjb3BlTm9kZShwYXJzZXJBcmVuYSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIHNv
dXJjZSwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIGNhcHR1cmVkVmFyaWFibGVzLCBm
ZWF0dXJlcywgbnVtQ29uc3RhbnRzKQogICAgICwgbV9zdGFydENvbHVtbihzdGFydENvbHVtbikK
ICAgICAsIG1fZW5kQ29sdW1uKGVuZENvbHVtbikKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIFBy
b2dyYW1Ob2RlOjpzZXRDbG9zZWRWYXJpYWJsZXMoVmVjCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSBFdmFsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1F
dmFsTm9kZTo6RXZhbE5vZGUoUGFyc2VyQXJlbmEmIHBhcnNlckFyZW5hLCBjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRp
b24sIHVuc2lnbmVkLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJl
biwgVmFyU3RhY2smIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrJiBmdW5jU3RhY2ssIElkZW50aWZp
ZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVG
ZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKK0V2YWxOb2RlOjpFdmFsTm9kZShQ
YXJzZXJBcmVuYSYgcGFyc2VyQXJlbmEsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2Nh
dGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5zaWduZWQsIHVuc2ln
bmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayYgdmFyU3Rh
Y2ssIEZ1bmN0aW9uU3RhY2smIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJp
YWJsZXMsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29k
ZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQogICAgIDogU2NvcGVOb2RlKHBh
cnNlckFyZW5hLCBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgc291cmNlLCBjaGlsZHJlbiwg
dmFyU3RhY2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIGZlYXR1cmVzLCBudW1Db25z
dGFudHMpCiAgICAgLCBtX2VuZENvbHVtbihlbmRDb2x1bW4pCiB7CkBAIC0xMzksMzkgKzEzOSwx
MSBAQCBFdmFsTm9kZTo6RXZhbE5vZGUoUGFyc2VyQXJlbmEmIHBhcnNlckFyCiAKIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbkJvZHlOb2RlIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAKLVJlZjxGdW5jdGlvblBhcmFtZXRlcnM+IEZ1bmN0aW9uUGFyYW1l
dGVyczo6Y3JlYXRlKFBhcmFtZXRlck5vZGUqIGZpcnN0UGFyYW1ldGVyKQotewotICAgIHVuc2ln
bmVkIHBhcmFtZXRlckNvdW50ID0gMDsKLSAgICBmb3IgKFBhcmFtZXRlck5vZGUqIHBhcmFtZXRl
ciA9IGZpcnN0UGFyYW1ldGVyOyBwYXJhbWV0ZXI7IHBhcmFtZXRlciA9IHBhcmFtZXRlci0+bmV4
dFBhcmFtKCkpCi0gICAgICAgICsrcGFyYW1ldGVyQ291bnQ7Ci0KLSAgICBzaXplX3Qgb2JqZWN0
U2l6ZSA9IHNpemVvZihGdW5jdGlvblBhcmFtZXRlcnMpIC0gc2l6ZW9mKHZvaWQqKSArIHNpemVv
ZihEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUqKSAqIHBhcmFtZXRlckNvdW50OwotICAgIHZvaWQq
IHNsb3QgPSBmYXN0TWFsbG9jKG9iamVjdFNpemUpOwotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IChzbG90KSBGdW5jdGlvblBhcmFtZXRlcnMoZmlyc3RQYXJhbWV0ZXIsIHBhcmFtZXRlckNvdW50
KSk7Ci19Ci0KLUZ1bmN0aW9uUGFyYW1ldGVyczo6RnVuY3Rpb25QYXJhbWV0ZXJzKFBhcmFtZXRl
ck5vZGUqIGZpcnN0UGFyYW1ldGVyLCB1bnNpZ25lZCBzaXplKQotICAgIDogbV9zaXplKHNpemUp
Ci17Ci0gICAgdW5zaWduZWQgaSA9IDA7Ci0gICAgZm9yIChQYXJhbWV0ZXJOb2RlKiBwYXJhbWV0
ZXIgPSBmaXJzdFBhcmFtZXRlcjsgcGFyYW1ldGVyOyBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXItPm5l
eHRQYXJhbSgpKSB7Ci0gICAgICAgIGF1dG8gcGF0dGVybiA9IHBhcmFtZXRlci0+cGF0dGVybigp
OwotICAgICAgICBwYXR0ZXJuLT5yZWYoKTsKLSAgICAgICAgcGF0dGVybnMoKVtpKytdID0gcGF0
dGVybjsKLSAgICB9Ci19Ci0KLUZ1bmN0aW9uUGFyYW1ldGVyczo6fkZ1bmN0aW9uUGFyYW1ldGVy
cygpCi17Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytpKQotICAgICAg
ICBwYXR0ZXJucygpW2ldLT5kZXJlZigpOwotfQotCiBGdW5jdGlvbkJvZHlOb2RlOjpGdW5jdGlv
bkJvZHlOb2RlKAogICAgIFBhcnNlckFyZW5hJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFy
dExvY2F0aW9uLCAKICAgICBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNp
Z25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCAKLSAgICBpbnQgZnVuY3Rpb25L
ZXl3b3JkU3RhcnQsIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwK
LSAgICBib29sIGlzSW5TdHJpY3RDb250ZXh0LCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JL
aW5kKQorICAgIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0
LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCAKKyAgICBDb25z
dHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgRnVu
Y3Rpb25QYXJzZU1vZGUgbW9kZSkKICAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGVuZExvY2F0aW9u
KQogICAgICAgICAsIG1fc3RhcnRDb2x1bW4oc3RhcnRDb2x1bW4pCiAgICAgICAgICwgbV9lbmRD
b2x1bW4oZW5kQ29sdW1uKQpAQCAtMTc5LDE2ICsxNTEsMTggQEAgRnVuY3Rpb25Cb2R5Tm9kZTo6
RnVuY3Rpb25Cb2R5Tm9kZSgKICAgICAgICAgLCBtX2Z1bmN0aW9uTmFtZVN0YXJ0KGZ1bmN0aW9u
TmFtZVN0YXJ0KQogICAgICAgICAsIG1fcGFyYW1ldGVyc1N0YXJ0KHBhcmFtZXRlcnNTdGFydCkK
ICAgICAgICAgLCBtX3N0YXJ0U3RhcnRPZmZzZXQoc3RhcnRMb2NhdGlvbi5zdGFydE9mZnNldCkK
KyAgICAgICAgLCBtX3BhcmFtZXRlckNvdW50KHBhcmFtZXRlckNvdW50KQorICAgICAgICAsIG1f
cGFyc2VNb2RlKG1vZGUpCiAgICAgICAgICwgbV9pc0luU3RyaWN0Q29udGV4dChpc0luU3RyaWN0
Q29udGV4dCkKICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oY29uc3RydWN0b3JLaW5kKSkKKwogewogICAgIEFTU0VSVChtX2NvbnN0cnVjdG9yS2luZCA9
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSk7CiB9CiAKLXZvaWQgRnVu
Y3Rpb25Cb2R5Tm9kZTo6ZmluaXNoUGFyc2luZyhjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBh
cmFtZXRlck5vZGUqIGZpcnN0UGFyYW1ldGVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgZW51
bSBGdW5jdGlvbk1vZGUgZnVuY3Rpb25Nb2RlKQordm9pZCBGdW5jdGlvbkJvZHlOb2RlOjpmaW5p
c2hQYXJzaW5nKGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgY29uc3QgSWRlbnRpZmllciYgaWRl
bnQsIGVudW0gRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSkKIHsKICAgICBtX3NvdXJjZSA9IHNv
dXJjZTsKLSAgICBtX3BhcmFtZXRlcnMgPSBGdW5jdGlvblBhcmFtZXRlcnM6OmNyZWF0ZShmaXJz
dFBhcmFtZXRlcik7CiAgICAgbV9pZGVudCA9IGlkZW50OwogICAgIG1fZnVuY3Rpb25Nb2RlID0g
ZnVuY3Rpb25Nb2RlOwogfQpAQCAtMjAxLDE3ICsxNzUsMTcgQEAgdm9pZCBGdW5jdGlvbkJvZHlO
b2RlOjpzZXRFbmRQb3NpdGlvbihKUwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0gRnVuY3Rpb25Ob2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUZ1bmN0aW9u
Tm9kZTo6RnVuY3Rpb25Ob2RlKFBhcnNlckFyZW5hJiBwYXJzZXJBcmVuYSwgY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0
aW9uLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVt
ZW50cyogY2hpbGRyZW4sIFZhclN0YWNrJiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayYgZnVuY1N0
YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYg
c291cmNlQ29kZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQorRnVu
Y3Rpb25Ob2RlOjpGdW5jdGlvbk5vZGUoUGFyc2VyQXJlbmEmIHBhcnNlckFyZW5hLCBjb25zdCBK
U1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5k
TG9jYXRpb24sIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJj
ZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2smIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrJiBm
dW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBGdW5jdGlvblBhcmFt
ZXRlcnMqIHBhcmFtZXRlcnMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIENvZGVGZWF0
dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKICAgICA6IFNjb3BlTm9kZShwYXJzZXJB
cmVuYSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIHNvdXJjZUNvZGUsIGNoaWxkcmVuLCB2
YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgZmVhdHVyZXMsIG51bUNvbnN0
YW50cykKKyAgICAsIG1fcGFyYW1ldGVycyhwYXJhbWV0ZXJzKQogICAgICwgbV9zdGFydENvbHVt
bihzdGFydENvbHVtbikKICAgICAsIG1fZW5kQ29sdW1uKGVuZENvbHVtbikKIHsKIH0KIAotdm9p
ZCBGdW5jdGlvbk5vZGU6OmZpbmlzaFBhcnNpbmcoUGFzc1JlZlB0cjxGdW5jdGlvblBhcmFtZXRl
cnM+IHBhcmFtZXRlcnMsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBlbnVtIEZ1bmN0aW9uTW9k
ZSBmdW5jdGlvbk1vZGUpCit2b2lkIEZ1bmN0aW9uTm9kZTo6ZmluaXNoUGFyc2luZyhjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCwgZW51bSBGdW5jdGlvbk1vZGUgZnVuY3Rpb25Nb2RlKQogewogICAg
IEFTU0VSVCghc291cmNlKCkuaXNOdWxsKCkpOwotICAgIG1fcGFyYW1ldGVycyA9IHBhcmFtZXRl
cnM7CiAgICAgbV9pZGVudCA9IGlkZW50OwogICAgIG1fZnVuY3Rpb25Nb2RlID0gZnVuY3Rpb25N
b2RlOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAkocmV2aXNpb24g
MTg2NzE5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MSw2ICs0MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEFyZ3Vt
ZW50TGlzdE5vZGU7CiAgICAgY2xhc3MgQnl0ZWNvZGVHZW5lcmF0b3I7CiAgICAgY2xhc3MgRnVu
Y3Rpb25Cb2R5Tm9kZTsKKyAgICBjbGFzcyBGdW5jdGlvblBhcmFtZXRlcnM7CiAgICAgY2xhc3Mg
TGFiZWw7CiAgICAgY2xhc3MgUHJvcGVydHlMaXN0Tm9kZTsKICAgICBjbGFzcyBSZWFkTW9kaWZ5
UmVzb2x2ZU5vZGU7CkBAIC0xNTE2LDE5ICsxNTE3LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIFN0YXRlbWVudE5vZGUqIG1fZmluYWxseUJsb2NrOwogICAgIH07CiAKLSAgICBjbGFzcyBQ
YXJhbWV0ZXJOb2RlIDogcHVibGljIFBhcnNlckFyZW5hRGVsZXRhYmxlIHsKLSAgICBwdWJsaWM6
Ci0gICAgICAgIFBhcmFtZXRlck5vZGUoUGFzc1JlZlB0cjxEZXN0cnVjdHVyaW5nUGF0dGVybk5v
ZGU+KTsKLSAgICAgICAgUGFyYW1ldGVyTm9kZShQYXJhbWV0ZXJOb2RlKiwgUGFzc1JlZlB0cjxE
ZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU+KTsKLQotICAgICAgICBEZXN0cnVjdHVyaW5nUGF0dGVy
bk5vZGUqIHBhdHRlcm4oKSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm4uZ2V0KCk7IH0KLSAgICAg
ICAgUGFyYW1ldGVyTm9kZSogbmV4dFBhcmFtKCkgY29uc3QgeyByZXR1cm4gbV9uZXh0OyB9Ci0K
LSAgICBwcml2YXRlOgotICAgICAgICBSZWZQdHI8RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlPiBt
X3BhdHRlcm47Ci0gICAgICAgIFBhcmFtZXRlck5vZGUqIG1fbmV4dDsKLSAgICB9OwotCiAgICAg
Y2xhc3MgU2NvcGVOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUsIHB1YmxpYyBQYXJzZXJBcmVu
YVJvb3QgewogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBEZWNsYXJhdGlvblN0YWNrczo6
VmFyU3RhY2sgVmFyU3RhY2s7CkBAIC0xNTk4LDcgKzE1ODYsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIGNsYXNzIFByb2dyYW1Ob2RlIDogcHVibGljIFNjb3BlTm9kZSB7CiAgICAgcHVibGlj
OgotICAgICAgICBQcm9ncmFtTm9kZShQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCB1bnNpZ25lZCBzdGFydENvbHVt
biwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrJiwgRnVuY3Rp
b25TdGFjayYsIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVz
LCBpbnQgbnVtQ29uc3RhbnRzKTsKKyAgICAgICAgUHJvZ3JhbU5vZGUoUGFyc2VyQXJlbmEmLCBj
b25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwg
dW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMq
LCBWYXJTdGFjayYsIEZ1bmN0aW9uU3RhY2smLCBJZGVudGlmaWVyU2V0JiwgRnVuY3Rpb25QYXJh
bWV0ZXJzKiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50
cyk7CiAKICAgICAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4oKSBjb25zdCB7IHJldHVybiBtX3N0
YXJ0Q29sdW1uOyB9CiAgICAgICAgIHVuc2lnbmVkIGVuZENvbHVtbigpIGNvbnN0IHsgcmV0dXJu
IG1fZW5kQ29sdW1uOyB9CkBAIC0xNjE3LDcgKzE2MDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgIGNsYXNzIEV2YWxOb2RlIDogcHVibGljIFNjb3BlTm9kZSB7CiAgICAgcHVibGljOgotICAg
ICAgICBFdmFsTm9kZShQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQs
IGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWdu
ZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrJiwgRnVuY3Rpb25TdGFjayYs
IElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVt
Q29uc3RhbnRzKTsKKyAgICAgICAgRXZhbE5vZGUoUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgdW5zaWduZWQgc3Rh
cnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayYs
IEZ1bmN0aW9uU3RhY2smLCBJZGVudGlmaWVyU2V0JiwgRnVuY3Rpb25QYXJhbWV0ZXJzKiwgY29u
c3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CiAKICAgICAg
ICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBzdGFydENvbHVtbigpIGNvbnN0IHsgcmV0dXJuIDA7
IH0KICAgICAgICAgdW5zaWduZWQgZW5kQ29sdW1uKCkgY29uc3QgeyByZXR1cm4gbV9lbmRDb2x1
bW47IH0KQEAgLTE2MzAsMjMgKzE2MTgsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVu
c2lnbmVkIG1fZW5kQ29sdW1uOwogICAgIH07CiAKLSAgICBjbGFzcyBGdW5jdGlvblBhcmFtZXRl
cnMgOiBwdWJsaWMgUmVmQ291bnRlZDxGdW5jdGlvblBhcmFtZXRlcnM+IHsKLSAgICAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZ1bmN0
aW9uUGFyYW1ldGVycyk7CisgICAgY2xhc3MgRnVuY3Rpb25QYXJhbWV0ZXJzIDogcHVibGljIFBh
cnNlckFyZW5hRnJlZWFibGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFJlZjxGdW5j
dGlvblBhcmFtZXRlcnM+IGNyZWF0ZShQYXJhbWV0ZXJOb2RlKik7Ci0gICAgICAgIH5GdW5jdGlv
blBhcmFtZXRlcnMoKTsKLQotICAgICAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4g
bV9zaXplOyB9Ci0gICAgICAgIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogYXQodW5zaWduZWQg
aW5kZXgpIHsgQVNTRVJUKGluZGV4IDwgbV9zaXplKTsgcmV0dXJuIHBhdHRlcm5zKClbaW5kZXhd
OyB9CisgICAgICAgIEZ1bmN0aW9uUGFyYW1ldGVycygpOworICAgICAgICBBTFdBWVNfSU5MSU5F
IHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm5zLnNpemUoKTsgfQorICAg
ICAgICBBTFdBWVNfSU5MSU5FIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogYXQodW5zaWduZWQg
aW5kZXgpIHsgcmV0dXJuIG1fcGF0dGVybnNbaW5kZXhdOyB9CisgICAgICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBhcHBlbmQoRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiBwYXR0ZXJuKSB7IEFTU0VS
VChwYXR0ZXJuKTsgbV9wYXR0ZXJucy5hcHBlbmQocGF0dGVybik7IH0KIAogICAgIHByaXZhdGU6
Ci0gICAgICAgIEZ1bmN0aW9uUGFyYW1ldGVycyhQYXJhbWV0ZXJOb2RlKiwgdW5zaWduZWQgc2l6
ZSk7Ci0KLSAgICAgICAgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiogcGF0dGVybnMoKSB7IHJl
dHVybiAmbV9zdG9yYWdlOyB9CiAKLSAgICAgICAgdW5zaWduZWQgbV9zaXplOwotICAgICAgICBE
ZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUqIG1fc3RvcmFnZTsKKyAgICAgICAgVmVjdG9yPERlc3Ry
dWN0dXJpbmdQYXR0ZXJuTm9kZSosIDM+IG1fcGF0dGVybnM7CiAgICAgfTsKIAogICAgIGNsYXNz
IEZ1bmN0aW9uQm9keU5vZGUgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSwgcHVibGljIFBh
cnNlckFyZW5hRGVsZXRhYmxlIHsKQEAgLTE2NTcsMTMgKzE2MzgsMTEgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgICAgICBQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3Rh
cnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCAKICAgICAgICAgICAgIHVuc2lnbmVkIHN0
YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwg
CiAgICAgICAgICAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQs
IGJvb2wgaXNJblN0cmljdENvbnRleHQsIAotICAgICAgICAgICAgQ29uc3RydWN0b3JLaW5kKTsK
LQotICAgICAgICBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVy
biBtX3BhcmFtZXRlcnMuZ2V0KCk7IH0KKyAgICAgICAgICAgIENvbnN0cnVjdG9yS2luZCwgdW5z
aWduZWQsIEZ1bmN0aW9uUGFyc2VNb2RlKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKIAot
ICAgICAgICB2b2lkIGZpbmlzaFBhcnNpbmcoY29uc3QgU291cmNlQ29kZSYsIFBhcmFtZXRlck5v
ZGUqLCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25Nb2RlKTsKKyAgICAgICAgdm9pZCBmaW5p
c2hQYXJzaW5nKGNvbnN0IFNvdXJjZUNvZGUmLCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25N
b2RlKTsKICAgICAgICAgCiAgICAgICAgIHZvaWQgb3ZlcnJpZGVOYW1lKGNvbnN0IElkZW50aWZp
ZXImIGlkZW50KSB7IG1faWRlbnQgPSBpZGVudDsgfQogICAgICAgICBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCgpIHsgcmV0dXJuIG1faWRlbnQ7IH0KQEAgLTE2NzcsNiArMTY1Niw4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBpbnQgcGFyYW1ldGVyc1N0YXJ0KCkgY29uc3QgeyByZXR1cm4g
bV9wYXJhbWV0ZXJzU3RhcnQ7IH0KICAgICAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4oKSBjb25z
dCB7IHJldHVybiBtX3N0YXJ0Q29sdW1uOyB9CiAgICAgICAgIHVuc2lnbmVkIGVuZENvbHVtbigp
IGNvbnN0IHsgcmV0dXJuIG1fZW5kQ29sdW1uOyB9CisgICAgICAgIHVuc2lnbmVkIHBhcmFtZXRl
ckNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJDb3VudDsgfQorICAgICAgICBGdW5j
dGlvblBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3BhcnNlTW9kZTsgfQog
CiAgICAgICAgIHZvaWQgc2V0RW5kUG9zaXRpb24oSlNUZXh0UG9zaXRpb24pOwogCkBAIC0xNjkw
LDcgKzE2NzEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSWRlbnRpZmllciBtX2lkZW50
OwogICAgICAgICBJZGVudGlmaWVyIG1faW5mZXJyZWROYW1lOwogICAgICAgICBGdW5jdGlvbk1v
ZGUgbV9mdW5jdGlvbk1vZGU7Ci0gICAgICAgIFJlZlB0cjxGdW5jdGlvblBhcmFtZXRlcnM+IG1f
cGFyYW1ldGVyczsKICAgICAgICAgdW5zaWduZWQgbV9zdGFydENvbHVtbjsKICAgICAgICAgdW5z
aWduZWQgbV9lbmRDb2x1bW47CiAgICAgICAgIGludCBtX2Z1bmN0aW9uS2V5d29yZFN0YXJ0OwpA
QCAtMTY5OCwxOSArMTY3OCwyMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaW50IG1fcGFy
YW1ldGVyc1N0YXJ0OwogICAgICAgICBTb3VyY2VDb2RlIG1fc291cmNlOwogICAgICAgICBpbnQg
bV9zdGFydFN0YXJ0T2Zmc2V0OworICAgICAgICB1bnNpZ25lZCBtX3BhcmFtZXRlckNvdW50Owor
ICAgICAgICBGdW5jdGlvblBhcnNlTW9kZSBtX3BhcnNlTW9kZTsKICAgICAgICAgdW5zaWduZWQg
bV9pc0luU3RyaWN0Q29udGV4dCA6IDE7CiAgICAgICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JL
aW5kIDogMjsKICAgICB9OwogCiAgICAgY2xhc3MgRnVuY3Rpb25Ob2RlIGZpbmFsIDogcHVibGlj
IFNjb3BlTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBGdW5jdGlvbk5vZGUoUGFyc2VyQXJl
bmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGVuZCwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxl
bWVudHMqLCBWYXJTdGFjayYsIEZ1bmN0aW9uU3RhY2smLCBJZGVudGlmaWVyU2V0JiwgY29uc3Qg
U291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CisgICAgICAgIEZ1
bmN0aW9uTm9kZShQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQg
ZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrJiwgRnVuY3Rpb25TdGFjayYsIElk
ZW50aWZpZXJTZXQmLCBGdW5jdGlvblBhcmFtZXRlcnMqLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29k
ZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKIAotICAgICAgICBGdW5jdGlvblBhcmFtZXRl
cnMqIHBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMuZ2V0KCk7IH0KKyAg
ICAgICAgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9w
YXJhbWV0ZXJzOyB9CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CiAKLSAgICAgICAgdm9pZCBm
aW5pc2hQYXJzaW5nKFBhc3NSZWZQdHI8RnVuY3Rpb25QYXJhbWV0ZXJzPiwgY29uc3QgSWRlbnRp
ZmllciYsIEZ1bmN0aW9uTW9kZSk7CisgICAgICAgIHZvaWQgZmluaXNoUGFyc2luZyhjb25zdCBJ
ZGVudGlmaWVyJiwgRnVuY3Rpb25Nb2RlKTsKICAgICAgICAgCiAgICAgICAgIGNvbnN0IElkZW50
aWZpZXImIGlkZW50KCkgeyByZXR1cm4gbV9pZGVudDsgfQogCkBAIC0xNzI0LDE0ICsxNzA2LDE0
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByaXZhdGU6CiAgICAgICAgIElkZW50aWZpZXIgbV9p
ZGVudDsKICAgICAgICAgRnVuY3Rpb25Nb2RlIG1fZnVuY3Rpb25Nb2RlOwotICAgICAgICBSZWZQ
dHI8RnVuY3Rpb25QYXJhbWV0ZXJzPiBtX3BhcmFtZXRlcnM7CisgICAgICAgIEZ1bmN0aW9uUGFy
YW1ldGVycyogbV9wYXJhbWV0ZXJzOwogICAgICAgICB1bnNpZ25lZCBtX3N0YXJ0Q29sdW1uOwog
ICAgICAgICB1bnNpZ25lZCBtX2VuZENvbHVtbjsKICAgICB9OwogCiAgICAgY2xhc3MgRnVuY0V4
cHJOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEZ1
bmNFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRnVu
Y3Rpb25Cb2R5Tm9kZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJhbWV0ZXJOb2RlKiA9IDApOwor
ICAgICAgICBGdW5jRXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRp
ZmllciYsIEZ1bmN0aW9uQm9keU5vZGUqLCBjb25zdCBTb3VyY2VDb2RlJik7CiAKICAgICAgICAg
RnVuY3Rpb25Cb2R5Tm9kZSogYm9keSgpIHsgcmV0dXJuIG1fYm9keTsgfQogCkBAIC0xNzYyLDEx
ICsxNzQ0LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKICNlbmRpZgogCi0gICAgY2xhc3Mg
RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlIDogcHVibGljIFJlZkNvdW50ZWQ8RGVzdHJ1Y3R1cmlu
Z1BhdHRlcm5Ob2RlPiB7Ci0gICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERlc3RydWN0dXJp
bmdQYXR0ZXJuTm9kZSk7Ci0gICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotCisgICAg
Y2xhc3MgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlIDogcHVibGljIFBhcnNlckFyZW5hRnJlZWFi
bGUgewogICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+RGVzdHJ1Y3R1cmluZ1BhdHRlcm5O
b2RlKCkgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0Qm91bmRJZGVudGlmaWVycyhW
ZWN0b3I8SWRlbnRpZmllcj4mKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBiaW5k
VmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBzb3VyY2UpIGNvbnN0ID0gMDsK
ICAgICAgICAgdmlydHVhbCB2b2lkIHRvU3RyaW5nKFN0cmluZ0J1aWxkZXImKSBjb25zdCA9IDA7
CkBAIC0xNzc0LDIxICsxNzU0LDE5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFs
IGJvb2wgaXNCaW5kaW5nTm9kZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZp
cnR1YWwgUmVnaXN0ZXJJRCogZW1pdERpcmVjdEJpbmRpbmcoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiwgRXhwcmVzc2lvbk5vZGUqKSB7IHJldHVybiAwOyB9CiAgICAgICAgIAotICAg
ICAgICB2aXJ0dWFsIH5EZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUoKSA9IDA7Ci0gICAgICAgIAog
ICAgIHByb3RlY3RlZDoKICAgICAgICAgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKCk7CiAgICAg
fTsKIAogICAgIGNsYXNzIEFycmF5UGF0dGVybk5vZGUgOiBwdWJsaWMgRGVzdHJ1Y3R1cmluZ1Bh
dHRlcm5Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoK
KyAgICAgICAgQXJyYXlQYXR0ZXJuTm9kZSgpOwogICAgICAgICBlbnVtIGNsYXNzIEJpbmRpbmdU
eXBlIHsKICAgICAgICAgICAgIEVsaXNpb24sCiAgICAgICAgICAgICBFbGVtZW50LAogICAgICAg
ICAgICAgUmVzdEVsZW1lbnQKICAgICAgICAgfTsKIAotICAgICAgICBzdGF0aWMgUmVmPEFycmF5
UGF0dGVybk5vZGU+IGNyZWF0ZSgpOwogICAgICAgICB2b2lkIGFwcGVuZEluZGV4KEJpbmRpbmdU
eXBlIGJpbmRpbmdUeXBlLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBEZXN0cnVjdHVyaW5nUGF0
dGVybk5vZGUqIG5vZGUsIEV4cHJlc3Npb25Ob2RlKiBkZWZhdWx0VmFsdWUpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIG1fdGFyZ2V0UGF0dGVybnMuYXBwZW5kKHsgYmluZGluZ1R5cGUsIG5vZGUs
IGRlZmF1bHRWYWx1ZSB9KTsKQEAgLTE3OTcsMTAgKzE3NzUsOSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICBwcml2YXRlOgogICAgICAgICBzdHJ1Y3QgRW50cnkgewogICAgICAgICAgICAgQmluZGlu
Z1R5cGUgYmluZGluZ1R5cGU7Ci0gICAgICAgICAgICBSZWZQdHI8RGVzdHJ1Y3R1cmluZ1BhdHRl
cm5Ob2RlPiBwYXR0ZXJuOworICAgICAgICAgICAgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiBw
YXR0ZXJuOwogICAgICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGRlZmF1bHRWYWx1ZTsKICAgICAg
ICAgfTsKLSAgICAgICAgQXJyYXlQYXR0ZXJuTm9kZSgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
Y29sbGVjdEJvdW5kSWRlbnRpZmllcnMoVmVjdG9yPElkZW50aWZpZXI+JikgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBiaW5kVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCog
ZW1pdERpcmVjdEJpbmRpbmcoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkc3QsIEV4
cHJlc3Npb25Ob2RlKikgb3ZlcnJpZGU7CkBAIC0xODExLDIxICsxNzg4LDIwIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIAogICAgIGNsYXNzIE9iamVjdFBhdHRlcm5Ob2RlIDogcHVibGljIERlc3Ry
dWN0dXJpbmdQYXR0ZXJuTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUmVmPE9i
amVjdFBhdHRlcm5Ob2RlPiBjcmVhdGUoKTsKKyAgICAgICAgT2JqZWN0UGF0dGVybk5vZGUoKTsK
ICAgICAgICAgdm9pZCBhcHBlbmRFbnRyeShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudGlmaWVyLCBib29sIHdhc1N0cmluZywgRGVzdHJ1Y3R1cmluZ1BhdHRl
cm5Ob2RlKiBwYXR0ZXJuLCBFeHByZXNzaW9uTm9kZSogZGVmYXVsdFZhbHVlKQogICAgICAgICB7
CiAgICAgICAgICAgICBtX3RhcmdldFBhdHRlcm5zLmFwcGVuZChFbnRyeXsgaWRlbnRpZmllciwg
d2FzU3RyaW5nLCBwYXR0ZXJuLCBkZWZhdWx0VmFsdWUgfSk7CiAgICAgICAgIH0KICAgICAgICAg
CiAgICAgcHJpdmF0ZToKLSAgICAgICAgT2JqZWN0UGF0dGVybk5vZGUoKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIGNvbGxlY3RCb3VuZElkZW50aWZpZXJzKFZlY3RvcjxJZGVudGlmaWVyPiYpIGNv
bnN0IG92ZXJyaWRlOwogICAgICAgICB2aXJ0dWFsIHZvaWQgYmluZFZhbHVlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCopIGNvbnN0IG92ZXJyaWRlOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgdG9TdHJpbmcoU3RyaW5nQnVpbGRlciYpIGNvbnN0IG92ZXJyaWRlOwogICAgICAgICBzdHJ1
Y3QgRW50cnkgewogICAgICAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWU7CiAgICAgICAg
ICAgICBib29sIHdhc1N0cmluZzsKLSAgICAgICAgICAgIFJlZlB0cjxEZXN0cnVjdHVyaW5nUGF0
dGVybk5vZGU+IHBhdHRlcm47CisgICAgICAgICAgICBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUq
IHBhdHRlcm47CiAgICAgICAgICAgICBFeHByZXNzaW9uTm9kZSogZGVmYXVsdFZhbHVlOwogICAg
ICAgICB9OwogICAgICAgICBWZWN0b3I8RW50cnk+IG1fdGFyZ2V0UGF0dGVybnM7CkBAIC0xODMz
LDE0ICsxODA5LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQmluZGluZ05vZGUg
OiBwdWJsaWMgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IHN0YXRpYyBSZWY8QmluZGluZ05vZGU+IGNyZWF0ZShjb25zdCBJZGVudGlmaWVyJiBib3VuZFBy
b3BlcnR5LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBlbmQpOworICAgICAgICBCaW5kaW5nTm9kZShjb25zdCBJZGVudGlmaWVyJiBib3VuZFByb3Bl
cnR5LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBl
bmQpOwogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBib3VuZFByb3BlcnR5KCkgY29uc3QgeyBy
ZXR1cm4gbV9ib3VuZFByb3BlcnR5OyB9CiAKICAgICAgICAgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90U3RhcnQoKSBjb25zdCB7IHJldHVybiBtX2Rpdm90U3RhcnQ7IH0KICAgICAgICAgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKCkgY29uc3QgeyByZXR1cm4gbV9kaXZvdEVuZDsg
fQogICAgICAgICAKICAgICBwcml2YXRlOgotICAgICAgICBCaW5kaW5nTm9kZShjb25zdCBJZGVu
dGlmaWVyJiBib3VuZFByb3BlcnR5LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBlbmQpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0Qm91
bmRJZGVudGlmaWVycyhWZWN0b3I8SWRlbnRpZmllcj4mKSBjb25zdCBvdmVycmlkZTsKICAgICAg
ICAgdmlydHVhbCB2b2lkIGJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
KSBjb25zdCBvdmVycmlkZTsKQEAgLTE4NTUsOCArMTgzMCw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgY2xhc3MgRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlIDogcHVibGljIEV4cHJlc3Np
b25Ob2RlLCBwdWJsaWMgUGFyc2VyQXJlbmFEZWxldGFibGUgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFBh
c3NSZWZQdHI8RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlPiwgRXhwcmVzc2lvbk5vZGUqKTsKLSAg
ICAgICAgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiBiaW5kaW5ncygpIHsgcmV0dXJuIG1fYmlu
ZGluZ3MuZ2V0KCk7IH0KKyAgICAgICAgRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSosIEV4cHJlc3Npb25O
b2RlKik7CisgICAgICAgIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogYmluZGluZ3MoKSB7IHJl
dHVybiBtX2JpbmRpbmdzOyB9CiAgICAgICAgIAogICAgICAgICB1c2luZyBQYXJzZXJBcmVuYURl
bGV0YWJsZTo6b3BlcmF0b3IgbmV3OwogCkBAIC0xODY1LDEzICsxODQwLDEzIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNEZXN0cnVjdHVyaW5nTm9kZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRl
OwogCi0gICAgICAgIFJlZlB0cjxEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU+IG1fYmluZGluZ3M7
CisgICAgICAgIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogbV9iaW5kaW5nczsKICAgICAgICAg
RXhwcmVzc2lvbk5vZGUqIG1faW5pdGlhbGl6ZXI7CiAgICAgfTsKIAogICAgIGNsYXNzIEZ1bmNE
ZWNsTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEZ1
bmNEZWNsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRnVu
Y3Rpb25Cb2R5Tm9kZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJhbWV0ZXJOb2RlKiA9IDApOwor
ICAgICAgICBGdW5jRGVjbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRp
ZmllciYsIEZ1bmN0aW9uQm9keU5vZGUqLCBjb25zdCBTb3VyY2VDb2RlJik7CiAKICAgICAgICAg
dmlydHVhbCBib29sIGlzRnVuY0RlY2xOb2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQogICAgICAgICBGdW5jdGlvbkJvZHlOb2RlKiBib2R5KCkgeyByZXR1cm4gbV9ib2R5OyB9
CkBAIC0xOTY3LDExICsxOTQyLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIENvbnN0RGVj
bE5vZGUqIHRhaWw7CiAgICAgfTsKIAotICAgIHN0cnVjdCBQYXJhbWV0ZXJMaXN0IHsKLSAgICAg
ICAgUGFyYW1ldGVyTm9kZSogaGVhZDsKLSAgICAgICAgUGFyYW1ldGVyTm9kZSogdGFpbDsKLSAg
ICB9OwotCiAgICAgc3RydWN0IENsYXVzZUxpc3QgewogICAgICAgICBDbGF1c2VMaXN0Tm9kZSog
aGVhZDsKICAgICAgICAgQ2xhdXNlTGlzdE5vZGUqIHRhaWw7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCShyZXZpc2lvbiAxODY3MTkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MSw4ICsx
OTEsNyBAQCB2b2lkIFBhcnNlcjxMZXhlclR5cGU+Ojpsb2dFcnJvcihib29sIHNoCiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiBQYXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2VyKAotICAg
IFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvblBhcmFtZXRlcnMqIHBh
cmFtZXRlcnMsIAotICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIEpTUGFyc2VyQnVpbHRpbk1v
ZGUgYnVpbHRpbk1vZGUsIAorICAgIFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBK
U1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLCAKICAgICBKU1BhcnNlclN0cmljdE1vZGUg
c3RyaWN0TW9kZSwgSlNQYXJzZXJDb2RlVHlwZSBjb2RlVHlwZSwgCiAgICAgQ29uc3RydWN0b3JL
aW5kIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlKQogICAg
IDogbV92bSh2bSkKQEAgLTIyMywzMCArMjIyLDcgQEAgUGFyc2VyPExleGVyVHlwZT46OlBhcnNl
cigKICAgICAgICAgc2NvcGUtPnNldElzRnVuY3Rpb24oKTsKICAgICBpZiAoc3RyaWN0TW9kZSA9
PSBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCkKICAgICAgICAgc2NvcGUtPnNldFN0cmljdE1v
ZGUoKTsKLSAgICBpZiAocGFyYW1ldGVycykgewotICAgICAgICBib29sIGhhZEJpbmRpbmdQYXJh
bWV0ZXJzID0gZmFsc2U7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXJhbWV0
ZXJzLT5zaXplKCk7IGkrKykgewotICAgICAgICAgICAgYXV0byBwYXJhbWV0ZXIgPSBwYXJhbWV0
ZXJzLT5hdChpKTsKLSAgICAgICAgICAgIGlmICghcGFyYW1ldGVyLT5pc0JpbmRpbmdOb2RlKCkp
IHsKLSAgICAgICAgICAgICAgICBoYWRCaW5kaW5nUGFyYW1ldGVycyA9IHRydWU7Ci0gICAgICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzY29wZS0+ZGVj
bGFyZVBhcmFtZXRlcigmc3RhdGljX2Nhc3Q8QmluZGluZ05vZGUqPihwYXJhbWV0ZXIpLT5ib3Vu
ZFByb3BlcnR5KCkpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChoYWRCaW5kaW5nUGFyYW1ldGVy
cykgewotICAgICAgICAgICAgVmVjdG9yPElkZW50aWZpZXI+IGJvdW5kUGFyYW1ldGVyTmFtZXM7
Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFyYW1ldGVycy0+c2l6ZSgp
OyBpKyspIHsKLSAgICAgICAgICAgICAgICBhdXRvIHBhcmFtZXRlciA9IHBhcmFtZXRlcnMtPmF0
KGkpOwotICAgICAgICAgICAgICAgIGlmIChwYXJhbWV0ZXItPmlzQmluZGluZ05vZGUoKSkKLSAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgcGFyYW1ldGVyLT5j
b2xsZWN0Qm91bmRJZGVudGlmaWVycyhib3VuZFBhcmFtZXRlck5hbWVzKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGZvciAoYXV0byYgYm91bmRQYXJhbWV0ZXJOYW1lIDogYm91bmRQYXJh
bWV0ZXJOYW1lcykKLSAgICAgICAgICAgICAgICBzY29wZS0+ZGVjbGFyZVZhcmlhYmxlKCZib3Vu
ZFBhcmFtZXRlck5hbWUpOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmICghbmFtZS5pc051bGwo
KSkKLSAgICAgICAgc2NvcGUtPmRlY2xhcmVDYWxsZWUoJm5hbWUpOworCiAgICAgbmV4dCgpOwog
fQogCkBAIC0yNTYsMTYgKzIzMiw1NCBAQCBQYXJzZXI8TGV4ZXJUeXBlPjo6flBhcnNlcigpCiB9
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci1TdHJpbmcgUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlSW5uZXIoKQorU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKGNv
bnN0IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIEZ1bmN0aW9uUGFyc2VNb2RlIHBhcnNlTW9kZSkK
IHsKICAgICBTdHJpbmcgcGFyc2VFcnJvciA9IFN0cmluZygpOwogICAgIAogICAgIEFTVEJ1aWxk
ZXIgY29udGV4dChjb25zdF9jYXN0PFZNKj4obV92bSksIG1fcGFyc2VyQXJlbmEsIGNvbnN0X2Nh
c3Q8U291cmNlQ29kZSo+KG1fc291cmNlKSk7Ci0gICAgaWYgKG1fbGV4ZXItPmlzUmVwYXJzaW5n
KCkpCi0gICAgICAgIG1fc3RhdGVtZW50RGVwdGgtLTsKICAgICBTY29wZVJlZiBzY29wZSA9IGN1
cnJlbnRTY29wZSgpOwotICAgIFNvdXJjZUVsZW1lbnRzKiBzb3VyY2VFbGVtZW50cyA9IHBhcnNl
U291cmNlRWxlbWVudHMoY29udGV4dCwgQ2hlY2tGb3JTdHJpY3RNb2RlLCBTdGFuZGFyZEZ1bmN0
aW9uUGFyc2VUeXBlKTsKLSAgICBpZiAoIXNvdXJjZUVsZW1lbnRzIHx8ICFjb25zdW1lKEVPRlRP
SykpIHsKKworICAgIEZ1bmN0aW9uUGFyc2VUeXBlIHBhcnNlVHlwZSA9IFN0YW5kYXJkRnVuY3Rp
b25QYXJzZVR5cGU7CisKKyAgICBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uID0g
ZmFsc2U7CisgICAgaWYgKG1fbGV4ZXItPmlzUmVwYXJzaW5nRnVuY3Rpb24oKSkgeworICAgICAg
ICBQYXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4gaW5mbzsKKyAgICAgICAgcGFyc2VGdW5j
dGlvblBhcmFtZXRlcnMoY29udGV4dCwgcGFyc2VNb2RlLCBpbmZvKTsKKyNpZiBFTkFCTEUoRVM2
X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQorICAgICAgICBpZiAocGFyc2VNb2RlID09IEFycm93RnVu
Y3Rpb25Nb2RlKSB7CisgICAgICAgICAgICBhdXRvIHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQb2lu
dCgpOworICAgICAgICAgICAgYm9vbCB3YXNBcnJvd1Rva2VuID0gY29uc3VtZShBUlJPV0ZVTkNU
SU9OKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHdhc0Fycm93VG9rZW4pOworICAgICAg
ICAgICAgaWYgKCFtYXRjaChPUEVOQlJBQ0UpKSB7CisgICAgICAgICAgICAgICAgcGFyc2VUeXBl
ID0gQXJyb3dGdW5jdGlvblBhcnNlVHlwZTsKKyAgICAgICAgICAgICAgICBpc0Fycm93RnVuY3Rp
b25Cb2R5RXhwcmVzc2lvbiA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXN0
b3JlU2F2ZVBvaW50KHNhdmVQb2ludCk7CisgICAgICAgICAgICAvLyBwYXJzZVNvdXJjZUVsZW1l
bnRzIGhhbmRsZXMgdGhlICc9Picgc28gd2UgbXVzdCByZXN0b3JlIHRvIHRoYXQgdG9rZW4gZm9y
IGFycm93IGZ1bmN0aW9uIGJvZHkgZXhwcmVzc2lvbi4KKyAgICAgICAgICAgIC8vIEZvciBhcnJv
dyBmdW5jdGlvbnMgd2l0aCBibG9jayBzdGF0ZW1lbnRzIGFzIHRoZSBib2R5LCB3ZSBtdXN0IHNr
aXAgb3ZlciB0aGUgJz0+JyB0b2tlbi4KKyAgICAgICAgICAgIGlmICghaXNBcnJvd0Z1bmN0aW9u
Qm9keUV4cHJlc3Npb24pCisgICAgICAgICAgICAgICAgY29uc3VtZShBUlJPV0ZVTkNUSU9OKTsK
KyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIC8vUkVMRUFTRV9BU1NFUlQoIWhhc0Vycm9yKCkp
OyAvLyBXZSBzaG91bGQgaGF2ZSBmYWlsZWQgYmVmb3JlIHJlcGFyc2luZy4KKyAgICAgICAgaWYg
KGhhc0Vycm9yKCkpIHsKKyAgICAgICAgICAgIHBhcnNlRXJyb3IgPSBtX2Vycm9yTWVzc2FnZTsK
KyAgICAgICAgICAgIHJldHVybiBwYXJzZUVycm9yOworICAgICAgICB9CisgICAgICAgIG1fcGFy
YW1ldGVycyA9IGluZm8ucGFyYW1ldGVyczsKKyAgICB9CisKKyAgICBpZiAoIWNhbGxlZU5hbWUu
aXNOdWxsKCkpCisgICAgICAgIHNjb3BlLT5kZWNsYXJlQ2FsbGVlKCZjYWxsZWVOYW1lKTsKKwor
ICAgIGlmIChtX2xleGVyLT5pc1JlcGFyc2luZ0Z1bmN0aW9uKCkpCisgICAgICAgIG1fc3RhdGVt
ZW50RGVwdGgtLTsKKworICAgIFNvdXJjZUVsZW1lbnRzKiBzb3VyY2VFbGVtZW50cyA9IHBhcnNl
U291cmNlRWxlbWVudHMoY29udGV4dCwgQ2hlY2tGb3JTdHJpY3RNb2RlLCBwYXJzZVR5cGUpOwor
ICAgIGlmIChpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikgeworICAgICAgICBpZiAoIWlz
RW5kT2ZBcnJvd0Z1bmN0aW9uKCkpCisgICAgICAgICAgICBwYXJzZUVycm9yID0gQVNDSUlMaXRl
cmFsKCJFeHBlY3RlZCBhICc7JywgJ10nLCAnfScsICcpJywgJywnLCBsaW5lIHRlcm1pbmF0b3Ig
b3IgRU9GIGZvbGxvd2luZyBhIGFycm93IGZ1bmN0aW9uIHN0YXRlbWVudCIpOworICAgIH0gZWxz
ZSBpZiAoIXNvdXJjZUVsZW1lbnRzIHx8ICFjb25zdW1lKEVPRlRPSykpIHsKICAgICAgICAgaWYg
KGhhc0Vycm9yKCkpCiAgICAgICAgICAgICBwYXJzZUVycm9yID0gbV9lcnJvck1lc3NhZ2U7CiAg
ICAgICAgIGVsc2UKQEAgLTYzNCw3ICs2NDgsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVTdGF0ZW1lCiAgICAgLy8gVGhpcyBjb25kaXRpb24gY29uc2lkZXJzIHRoZSBmb2xs
b3dpbmcgc2l0dWF0aW9ucy4KICAgICAvLyAoMSk6IElmIHdlIGFyZSBpbiB0aGUgcmVwYXJzaW5n
IHBoYXNlLCB0aGlzIGFycm93IGZ1bmN0aW9uIGlzIGFscmVhZHkgcGFyc2VkIG9uY2UsIHNvIHRo
ZXJlIGlzIG5vIHN5bnRheCBlcnJvci4KICAgICAvLyAoMik6IEJ1dCBpZiB3ZSBhcmUgbm90IGlu
IHRoZSByZXBhcnNpbmcgcGhhc2UsIHdlIHNob3VsZCBjaGVjayB0aGlzIGZ1bmN0aW9uIGlzIGNh
bGxlZCBpbiB0aGUgY29udGV4dCBvZiB0aGUgYXJyb3cgZnVuY3Rpb24uCi0gICAgaWYgKCFtX2xl
eGVyLT5pc1JlcGFyc2luZygpICYmIHBhcnNlVHlwZSAhPSBBcnJvd0Z1bmN0aW9uUGFyc2VUeXBl
KQorICAgIGlmICghbV9sZXhlci0+aXNSZXBhcnNpbmdGdW5jdGlvbigpICYmIHBhcnNlVHlwZSAh
PSBBcnJvd0Z1bmN0aW9uUGFyc2VUeXBlKQogICAgICAgICBmYWlsRHVlVG9VbmV4cGVjdGVkVG9r
ZW4oKTsKICAgICAKICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigp
KTsKQEAgLTEzNjIsMjQgKzEzNzYsMjUgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlU3RhdGVtZQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgotdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCBQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VGb3JtYWxQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiBjb250ZXh0KQordGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZvcm1h
bFBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImIGNvbnRleHQsIFRyZWVGb3JtYWxQYXJhbWV0ZXJMaXN0
IGxpc3QsIHVuc2lnbmVkJiBwYXJhbWV0ZXJDb3VudCkKIHsKICAgICBhdXRvIHBhcmFtZXRlciA9
IHBhcnNlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4oY29udGV4dCwgRGVzdHJ1Y3R1cmVUb1BhcmFtZXRl
cnMpOwogICAgIGZhaWxJZkZhbHNlKHBhcmFtZXRlciwgIkNhbm5vdCBwYXJzZSBwYXJhbWV0ZXIg
cGF0dGVybiIpOwotICAgIFRyZWVGb3JtYWxQYXJhbWV0ZXJMaXN0IGxpc3QgPSBjb250ZXh0LmNy
ZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QocGFyYW1ldGVyKTsKLSAgICBUcmVlRm9ybWFsUGFyYW1l
dGVyTGlzdCB0YWlsID0gbGlzdDsKKyAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihsaXN0LCBw
YXJhbWV0ZXIpOworICAgIHBhcmFtZXRlckNvdW50Kys7CiAgICAgd2hpbGUgKGNvbnN1bWUoQ09N
TUEpKSB7CiAgICAgICAgIHBhcmFtZXRlciA9IHBhcnNlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4oY29u
dGV4dCwgRGVzdHJ1Y3R1cmVUb1BhcmFtZXRlcnMpOwogICAgICAgICBmYWlsSWZGYWxzZShwYXJh
bWV0ZXIsICJDYW5ub3QgcGFyc2UgcGFyYW1ldGVyIHBhdHRlcm4iKTsKLSAgICAgICAgdGFpbCA9
IGNvbnRleHQuY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdCh0YWlsLCBwYXJhbWV0ZXIpOworICAg
ICAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihsaXN0LCBwYXJhbWV0ZXIpOworICAgICAgICBw
YXJhbWV0ZXJDb3VudCsrOwogICAgIH0KLSAgICByZXR1cm4gbGlzdDsKKyAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZUZ1bmN0aW9uQm9keSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5j
dGlvbkJvZHkoCi0gICAgVHJlZUJ1aWxkZXImIGNvbnRleHQsIGludCBmdW5jdGlvbktleXdvcmRT
dGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCAKLSAgICBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBD
b25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBGdW5jdGlvblBhcnNlVHlwZSBwYXJzZVR5
cGUpCisgICAgVHJlZUJ1aWxkZXImIGNvbnRleHQsIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwg
aW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCAKKyAgICBDb25zdHJ1
Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBGdW5jdGlvblBhcnNlVHlwZSBwYXJzZVR5cGUsIHVu
c2lnbmVkIHBhcmFtZXRlckNvdW50LCBGdW5jdGlvblBhcnNlTW9kZSBwYXJzZU1vZGUpCiB7CiAg
ICAgSlNUb2tlbkxvY2F0aW9uIHN0YXJ0TG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICB1
bnNpZ25lZCBzdGFydENvbHVtbiA9IHRva2VuQ29sdW1uKCk7CkBAIC0xMzg4LDIwICsxNDAzLDIw
IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUZ1bmN0aW8KICAgICAgICAgbmV4
dCgpOwogICAgICAgICBpZiAobWF0Y2goQ0xPU0VCUkFDRSkpIHsKICAgICAgICAgICAgIHVuc2ln
bmVkIGVuZENvbHVtbiA9IHRva2VuQ29sdW1uKCk7Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4
dC5jcmVhdGVGdW5jdGlvbkJvZHkoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFy
dENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3Rh
cnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBjb25zdHJ1Y3RvcktpbmQpOworICAg
ICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25Cb2R5KHN0YXJ0TG9jYXRpb24s
IHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3Jk
U3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwg
Y29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgcGFyc2VNb2RlKTsKICAgICAgICAgfQog
ICAgIH0KIAogICAgIERlcHRoTWFuYWdlciBzdGF0ZW1lbnREZXB0aCgmbV9zdGF0ZW1lbnREZXB0
aCk7CiAgICAgbV9zdGF0ZW1lbnREZXB0aCA9IDA7Ci0gICAgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6
OkZ1bmN0aW9uQm9keUJ1aWxkZXIgYm9keUJ1aWxkZXIoY29uc3RfY2FzdDxWTSo+KG1fdm0pLCBt
X2xleGVyLmdldCgpKTsKKyAgICBTeW50YXhDaGVja2VyIHN5bnRheENoZWNrZXIoY29uc3RfY2Fz
dDxWTSo+KG1fdm0pLCBtX2xleGVyLmdldCgpKTsKICNpZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJ
T05fU1lOVEFYKQotICAgIGZhaWxJZkZhbHNlKHBhcnNlU291cmNlRWxlbWVudHMoYm9keUJ1aWxk
ZXIsIENoZWNrRm9yU3RyaWN0TW9kZSwgcGFyc2VUeXBlKSwgcGFyc2VUeXBlID09IFN0YW5kYXJk
RnVuY3Rpb25QYXJzZVR5cGUgPyAiQ2Fubm90IHBhcnNlIGJvZHkgb2YgdGhpcyBmdW5jdGlvbiIg
OiAiQ2Fubm90IHBhcnNlIGJvZHkgb2YgdGhpcyBhcnJvdyBmdW5jdGlvbiIpOworICAgIGZhaWxJ
ZkZhbHNlKHBhcnNlU291cmNlRWxlbWVudHMoc3ludGF4Q2hlY2tlciwgQ2hlY2tGb3JTdHJpY3RN
b2RlLCBwYXJzZVR5cGUpLCBwYXJzZVR5cGUgPT0gU3RhbmRhcmRGdW5jdGlvblBhcnNlVHlwZSA/
ICJDYW5ub3QgcGFyc2UgYm9keSBvZiB0aGlzIGZ1bmN0aW9uIiA6ICJDYW5ub3QgcGFyc2UgYm9k
eSBvZiB0aGlzIGFycm93IGZ1bmN0aW9uIik7CiAjZWxzZQotICAgIGZhaWxJZkZhbHNlKHBhcnNl
U291cmNlRWxlbWVudHMoYm9keUJ1aWxkZXIsIENoZWNrRm9yU3RyaWN0TW9kZSwgU3RhbmRhcmRG
dW5jdGlvblBhcnNlVHlwZSksICJDYW5ub3QgcGFyc2UgYm9keSBvZiB0aGlzIGZ1bmN0aW9uIik7
CisgICAgZmFpbElmRmFsc2UocGFyc2VTb3VyY2VFbGVtZW50cyhzeW50YXhDaGVja2VyLCBDaGVj
a0ZvclN0cmljdE1vZGUsIFN0YW5kYXJkRnVuY3Rpb25QYXJzZVR5cGUpLCAiQ2Fubm90IHBhcnNl
IGJvZHkgb2YgdGhpcyBmdW5jdGlvbiIpOwogI2VuZGlmCiAgICAgdW5zaWduZWQgZW5kQ29sdW1u
ID0gdG9rZW5Db2x1bW4oKTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkJvZHko
c3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBm
dW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwg
c3RyaWN0TW9kZSgpLCBjb25zdHJ1Y3RvcktpbmQpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0
ZUZ1bmN0aW9uQm9keShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1u
LCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFy
YW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291
bnQsIHBhcnNlTW9kZSk7CiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlv
bk1vZGUoRnVuY3Rpb25QYXJzZU1vZGUgbW9kZSkKQEAgLTE0MTEsNyArMTQyNiw3IEBAIHN0YXRp
YyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUKICAgICAgICAgcmV0dXJuICJnZXR0
ZXIiOwogICAgIGNhc2UgU2V0dGVyTW9kZToKICAgICAgICAgcmV0dXJuICJzZXR0ZXIiOwotICAg
IGNhc2UgRnVuY3Rpb25Nb2RlOgorICAgIGNhc2UgTm9ybWFsRnVuY3Rpb25Nb2RlOgogICAgICAg
ICByZXR1cm4gImZ1bmN0aW9uIjsKICAgICBjYXNlIE1ldGhvZE1vZGU6CiAgICAgICAgIHJldHVy
biAibWV0aG9kIjsKQEAgLTE0MTksNiArMTQzNCw5IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJp
bmdGb3JGdW5jdGlvbk1vZGUKICAgICBjYXNlIEFycm93RnVuY3Rpb25Nb2RlOgogICAgICAgICBy
ZXR1cm4gImFycm93IGZ1bmN0aW9uIjsKICNlbmRpZgorICAgIGNhc2UgTm90QUZ1bmN0aW9uTW9k
ZToKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJu
ICIiOwogICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVy
biBudWxscHRyOwpAQCAtMTQyNiw3ICsxNDQ0LDExIEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJp
bmdGb3JGdW5jdGlvbk1vZGUKIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4gdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBpbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rp
b25QYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBGdW5jdGlvblBhcnNlTW9kZSBtb2Rl
LCBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+JiBpbmZvKQogeworICAgIFJFTEVBU0Vf
QVNTRVJUKG1vZGUgIT0gTm90QUZ1bmN0aW9uTW9kZSk7CiAgICAgaW50IHBhcmFtZXRlcnNTdGFy
dCA9IG1fdG9rZW4ubV9sb2NhdGlvbi5zdGFydE9mZnNldDsKKyAgICBUcmVlRm9ybWFsUGFyYW1l
dGVyTGlzdCBwYXJhbWV0ZXJMaXN0ID0gY29udGV4dC5jcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0
KCk7CisgICAgaW5mby5wYXJhbWV0ZXJzID0gcGFyYW1ldGVyTGlzdDsKKyAgICBpbmZvLnN0YXJ0
RnVuY3Rpb25PZmZzZXQgPSBwYXJhbWV0ZXJzU3RhcnQ7CiAgICAgCiAjaWYgRU5BQkxFKEVTNl9B
UlJPV0ZVTkNUSU9OX1NZTlRBWCkKICAgICBpZiAobW9kZSA9PSBBcnJvd0Z1bmN0aW9uTW9kZSkg
ewpAQCAtMTQzNyw1MiArMTQ1OSw1NSBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPiB0
ZW1wbGF0ZSA8CiAgICAgICAgICAgICBpZiAobWF0Y2goT1BFTlBBUkVOKSkgewogICAgICAgICAg
ICAgICAgIG5leHQoKTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAoIW1h
dGNoKENMT1NFUEFSRU4pKSB7Ci0gICAgICAgICAgICAgICAgICAgIGluZm8ucGFyYW1ldGVycyA9
IHBhcnNlRm9ybWFsUGFyYW1ldGVycyhjb250ZXh0KTsKLSAgICAgICAgICAgICAgICAgICAgZmFp
bElmRmFsc2UoaW5mby5wYXJhbWV0ZXJzLCAiQ2Fubm90IHBhcnNlIHBhcmFtZXRlcnMgZm9yIHRo
aXMgIiwgc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKG1vZGUpKTsKLSAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgaWYgKG1hdGNoKENMT1NFUEFSRU4pKQorICAgICAgICAgICAgICAgICAg
ICBpbmZvLnBhcmFtZXRlckNvdW50ID0gMDsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgIGZhaWxJZkZhbHNlKHBhcnNlRm9ybWFsUGFyYW1ldGVycyhjb250ZXh0LCBw
YXJhbWV0ZXJMaXN0LCBpbmZvLnBhcmFtZXRlckNvdW50KSwgIkNhbm5vdCBwYXJzZSBwYXJhbWV0
ZXJzIGZvciB0aGlzICIsIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShtb2RlKSk7CiAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgY29uc3VtZU9yRmFpbChDTE9TRVBBUkVOLCAiRXhwZWN0
ZWQgYSAnKScgb3IgYSAnLCcgYWZ0ZXIgYSBwYXJhbWV0ZXIgZGVjbGFyYXRpb24iKTsKICAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaW5mby5wYXJhbWV0ZXJDb3VudCA9IDE7
CiAgICAgICAgICAgICAgICAgYXV0byBwYXJhbWV0ZXIgPSBwYXJzZURlc3RydWN0dXJpbmdQYXR0
ZXJuKGNvbnRleHQsIERlc3RydWN0dXJlVG9QYXJhbWV0ZXJzKTsKICAgICAgICAgICAgICAgICBm
YWlsSWZGYWxzZShwYXJhbWV0ZXIsICJDYW5ub3QgcGFyc2UgcGFyYW1ldGVyIHBhdHRlcm4iKTsK
LSAgICAgICAgICAgICAgICBpbmZvLnBhcmFtZXRlcnMgPSBjb250ZXh0LmNyZWF0ZUZvcm1hbFBh
cmFtZXRlckxpc3QocGFyYW1ldGVyKTsKLSAgICAgICAgICAgICAgICBmYWlsSWZGYWxzZShpbmZv
LnBhcmFtZXRlcnMsICJDYW5ub3QgcGFyc2UgcGFyYW1ldGVycyBmb3IgdGhpcyAiLCBzdHJpbmdG
b3JGdW5jdGlvbk1vZGUobW9kZSkpOworICAgICAgICAgICAgICAgIGNvbnRleHQuYXBwZW5kUGFy
YW1ldGVyKHBhcmFtZXRlckxpc3QsIHBhcmFtZXRlcik7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KLSAgICAgICAgCisKICAgICAgICAgcmV0dXJuIHBhcmFtZXRlcnNTdGFydDsKICAgICB9CiAj
ZW5kaWYKLSAgICAKICAgICBpZiAoIWNvbnN1bWUoT1BFTlBBUkVOKSkgewogICAgICAgICBzZW1h
bnRpY0ZhaWx1cmVEdWVUb0tleXdvcmQoc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKG1vZGUpLCAiIG5h
bWUiKTsKICAgICAgICAgZmFpbFdpdGhNZXNzYWdlKCJFeHBlY3RlZCBhbiBvcGVuaW5nICcoJyBi
ZWZvcmUgYSAiLCBzdHJpbmdGb3JGdW5jdGlvbk1vZGUobW9kZSksICIncyBwYXJhbWV0ZXIgbGlz
dCIpOwogICAgIH0KIAotICAgIGlmIChtb2RlID09IEdldHRlck1vZGUpCisgICAgaWYgKG1vZGUg
PT0gR2V0dGVyTW9kZSkgewogICAgICAgICBjb25zdW1lT3JGYWlsKENMT1NFUEFSRU4sICJnZXR0
ZXIgZnVuY3Rpb25zIG11c3QgaGF2ZSBubyBwYXJhbWV0ZXJzIik7Ci0gICAgZWxzZSBpZiAobW9k
ZSA9PSBTZXR0ZXJNb2RlKSB7CisgICAgICAgIGluZm8ucGFyYW1ldGVyQ291bnQgPSAwOworICAg
IH0gZWxzZSBpZiAobW9kZSA9PSBTZXR0ZXJNb2RlKSB7CiAgICAgICAgIGZhaWxJZlRydWUobWF0
Y2goQ0xPU0VQQVJFTiksICJzZXR0ZXIgZnVuY3Rpb25zIG11c3QgaGF2ZSBvbmUgcGFyYW1ldGVy
Iik7CiAgICAgICAgIGF1dG8gcGFyYW1ldGVyID0gcGFyc2VEZXN0cnVjdHVyaW5nUGF0dGVybihj
b250ZXh0LCBEZXN0cnVjdHVyZVRvUGFyYW1ldGVycyk7CiAgICAgICAgIGZhaWxJZkZhbHNlKHBh
cmFtZXRlciwgInNldHRlciBmdW5jdGlvbnMgbXVzdCBoYXZlIG9uZSBwYXJhbWV0ZXIiKTsKLSAg
ICAgICAgaW5mby5wYXJhbWV0ZXJzID0gY29udGV4dC5jcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0
KHBhcmFtZXRlcik7CisgICAgICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlckxp
c3QsIHBhcmFtZXRlcik7CisgICAgICAgIGluZm8ucGFyYW1ldGVyQ291bnQgPSAxOwogICAgICAg
ICBmYWlsSWZUcnVlKG1hdGNoKENPTU1BKSwgInNldHRlciBmdW5jdGlvbnMgbXVzdCBoYXZlIG9u
ZSBwYXJhbWV0ZXIiKTsKICAgICAgICAgY29uc3VtZU9yRmFpbChDTE9TRVBBUkVOLCAiRXhwZWN0
ZWQgYSAnKScgYWZ0ZXIgYSBwYXJhbWV0ZXIgZGVjbGFyYXRpb24iKTsKICAgICB9IGVsc2Ugewot
ICAgICAgICBpZiAoIW1hdGNoKENMT1NFUEFSRU4pKSB7Ci0gICAgICAgICAgICBpbmZvLnBhcmFt
ZXRlcnMgPSBwYXJzZUZvcm1hbFBhcmFtZXRlcnMoY29udGV4dCk7Ci0gICAgICAgICAgICBmYWls
SWZGYWxzZShpbmZvLnBhcmFtZXRlcnMsICJDYW5ub3QgcGFyc2UgcGFyYW1ldGVycyBmb3IgdGhp
cyAiLCBzdHJpbmdGb3JGdW5jdGlvbk1vZGUobW9kZSkpOwotICAgICAgICB9CisgICAgICAgIGlm
IChtYXRjaChDTE9TRVBBUkVOKSkKKyAgICAgICAgICAgIGluZm8ucGFyYW1ldGVyQ291bnQgPSAw
OworICAgICAgICAgZWxzZQorICAgICAgICAgICAgZmFpbElmRmFsc2UocGFyc2VGb3JtYWxQYXJh
bWV0ZXJzKGNvbnRleHQsIHBhcmFtZXRlckxpc3QsIGluZm8ucGFyYW1ldGVyQ291bnQpLCAiQ2Fu
bm90IHBhcnNlIHBhcmFtZXRlcnMgZm9yIHRoaXMgIiwgc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKG1v
ZGUpKTsKICAgICAgICAgY29uc3VtZU9yRmFpbChDTE9TRVBBUkVOLCAiRXhwZWN0ZWQgYSAnKScg
b3IgYSAnLCcgYWZ0ZXIgYSBwYXJhbWV0ZXIgZGVjbGFyYXRpb24iKTsKICAgICB9Ci0gICAgCisK
ICAgICByZXR1cm4gcGFyYW1ldGVyc1N0YXJ0OwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4
ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRlciYgY29udGV4dCwgRnVuY3Rpb25SZXF1
aXJlbWVudHMgcmVxdWlyZW1lbnRzLCBGdW5jdGlvblBhcnNlTW9kZSBtb2RlLCBib29sIG5hbWVJ
c0luQ29udGFpbmluZ1Njb3BlLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBTdXBl
ckJpbmRpbmcgZXhwZWN0ZWRTdXBlckJpbmRpbmcsIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwg
UGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiYgaW5mbywgRnVuY3Rpb25QYXJzZVR5cGUg
cGFyc2VUeXBlKQogeworICAgIFJFTEVBU0VfQVNTRVJUKG1vZGUgIT0gTm90QUZ1bmN0aW9uTW9k
ZSk7CisKICAgICBBdXRvUG9wU2NvcGVSZWYgZnVuY3Rpb25TY29wZSh0aGlzLCBwdXNoU2NvcGUo
KSk7CiAgICAgZnVuY3Rpb25TY29wZS0+c2V0SXNGdW5jdGlvbigpOwogICAgIGludCBmdW5jdGlv
bk5hbWVTdGFydCA9IG1fdG9rZW4ubV9sb2NhdGlvbi5zdGFydE9mZnNldDsKQEAgLTE0OTksNyAr
MTUyNCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXIKICAgICAg
ICAgICAgIGlmICghbmFtZUlzSW5Db250YWluaW5nU2NvcGUpCiAgICAgICAgICAgICAgICAgZmFp
bElmRmFsc2VJZlN0cmljdChmdW5jdGlvblNjb3BlLT5kZWNsYXJlVmFyaWFibGUoaW5mby5uYW1l
KSwgIiciLCBpbmZvLm5hbWUtPmltcGwoKSwgIicgaXMgbm90IGEgdmFsaWQgIiwgc3RyaW5nRm9y
RnVuY3Rpb25Nb2RlKG1vZGUpLCAiIG5hbWUgaW4gc3RyaWN0IG1vZGUiKTsKICAgICAgICAgfSBl
bHNlIGlmIChyZXF1aXJlbWVudHMgPT0gRnVuY3Rpb25OZWVkc05hbWUpIHsKLSAgICAgICAgICAg
IGlmIChtYXRjaChPUEVOUEFSRU4pICYmIG1vZGUgPT0gRnVuY3Rpb25Nb2RlKQorICAgICAgICAg
ICAgaWYgKG1hdGNoKE9QRU5QQVJFTikgJiYgbW9kZSA9PSBOb3JtYWxGdW5jdGlvbk1vZGUpCiAg
ICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsKCJGdW5jdGlvbiBzdGF0ZW1lbnRzIG11c3QgaGF2
ZSBhIG5hbWUiKTsKICAgICAgICAgICAgIHNlbWFudGljRmFpbHVyZUR1ZVRvS2V5d29yZChzdHJp
bmdGb3JGdW5jdGlvbk1vZGUobW9kZSksICIgbmFtZSIpOwogICAgICAgICAgICAgZmFpbER1ZVRv
VW5leHBlY3RlZFRva2VuKCk7CkBAIC0xNTE5LDEzICsxNTQ0LDE0IEBAIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXIKICAgICAgICAgICAgIGV4cGVjdGVkU3VwZXJCaW5k
aW5nID0gbV9kZWZhdWx0Q29uc3RydWN0b3JLaW5kID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZl
ZCA/IFN1cGVyQmluZGluZzo6TmVlZGVkIDogU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQ7CiAgICAg
ICAgIH0KICAgICAgICAgCi0gICAgICAgIGluZm8uc3RhcnRGdW5jdGlvbk9mZnNldCA9IG1fdG9r
ZW4ubV9kYXRhLm9mZnNldDsKKyAgICAgICAgLy9pbmZvLnN0YXJ0RnVuY3Rpb25PZmZzZXQgPSBt
X3Rva2VuLm1fZGF0YS5vZmZzZXQ7CiAgICAgICAgIAogICAgICAgICBicmVhazsKICAgICB9CiAj
aWYgRU5BQkxFKEVTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCkKICAgICBjYXNlIEFycm93RnVuY3Rp
b25QYXJzZVR5cGU6IHsKLSAgICAgICAgcGFyYW1ldGVyc1N0YXJ0ID0gcGFyc2VGdW5jdGlvblBh
cmFtZXRlcnMoY29udGV4dCwgQXJyb3dGdW5jdGlvbk1vZGUsIGluZm8pOworICAgICAgICBSRUxF
QVNFX0FTU0VSVChtb2RlID09IEFycm93RnVuY3Rpb25Nb2RlKTsKKyAgICAgICAgcGFyYW1ldGVy
c1N0YXJ0ID0gcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoY29udGV4dCwgbW9kZSwgaW5mbyk7CiAg
ICAgICAgIHByb3BhZ2F0ZUVycm9yKCk7CiAgICAgICAgIAogICAgICAgICBtYXRjaE9yRmFpbChB
UlJPV0ZVTkNUSU9OLCAiRXhwZWN0ZWQgYSAnPT4nIGFmdGVyIGFycm93IGZ1bmN0aW9uIHBhcmFt
ZXRlciBkZWNsYXJhdGlvbiIpOwpAQCAtMTU0Miw3ICsxNTY4LDcgQEAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcgogICAgICAgICAKICAgICAgICAgbmV4dCgpOwogICAg
ICAgICBpbmZvLmZ1bmN0aW9uQm9keVR5cGUgPSBtYXRjaChPUEVOQlJBQ0UpID8gQXJyb3dGdW5j
dGlvbkJvZHlCbG9jayA6IEFycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbjsKLSAgICAgICAgaW5m
by5zdGFydEZ1bmN0aW9uT2Zmc2V0ID0gKGluZm8uZnVuY3Rpb25Cb2R5VHlwZSA9PSBBcnJvd0Z1
bmN0aW9uQm9keUJsb2NrKSA/IG1fdG9rZW4ubV9kYXRhLm9mZnNldCA6IGluZm8uYXJyb3dGdW5j
dGlvbk9mZnNldDsKKyAgICAgICAgLy9pbmZvLnN0YXJ0RnVuY3Rpb25PZmZzZXQgPSAoaW5mby5m
dW5jdGlvbkJvZHlUeXBlID09IEFycm93RnVuY3Rpb25Cb2R5QmxvY2spID8gbV90b2tlbi5tX2Rh
dGEub2Zmc2V0IDogaW5mby5hcnJvd0Z1bmN0aW9uT2Zmc2V0OwogICAgICAgICAKICAgICAgICAg
cmVzdG9yZVNhdmVQb2ludChzYXZlUG9pbnQpOwogCkBAIC0xNTc3LDcgKzE2MDMsNyBAQCB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyCiAgICAgICAgIGluZm8uYm9keSA9
IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25Cb2R5KAogICAgICAgICAgICAgc3RhcnRMb2NhdGlvbiwg
ZW5kTG9jYXRpb24sIGluZm8uYm9keVN0YXJ0Q29sdW1uLCBib2R5RW5kQ29sdW1uLCAKICAgICAg
ICAgICAgIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVy
c1N0YXJ0LCAKLSAgICAgICAgICAgIGNhY2hlZEluZm8tPnN0cmljdE1vZGUsIGNvbnN0cnVjdG9y
S2luZCk7CisgICAgICAgICAgICBjYWNoZWRJbmZvLT5zdHJpY3RNb2RlLCBjb25zdHJ1Y3Rvcktp
bmQsIGNhY2hlZEluZm8tPnBhcmFtZXRlckNvdW50LCBtb2RlKTsKICAgICAgICAgCiAgICAgICAg
IGZ1bmN0aW9uU2NvcGUtPnJlc3RvcmVGcm9tU291cmNlUHJvdmlkZXJDYWNoZShjYWNoZWRJbmZv
KTsKICAgICAgICAgZmFpbElmRmFsc2UocG9wU2NvcGUoZnVuY3Rpb25TY29wZSwgVHJlZUJ1aWxk
ZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbyksICJQYXJzZXIgZXJyb3IiKTsKQEAgLTE2MjcsMjQg
KzE2NTMsMjQgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcgogICAg
ICAgICBpbmZvLmJvZHlTdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICAgICAgaW5mby5ib2R5
U3RhcnRDb2x1bW4gPSBtX3Rva2VuLm1fZGF0YS5vZmZzZXQgLSBtX3Rva2VuLm1fZGF0YS5saW5l
U3RhcnRPZmZzZXQ7CiAgICAgICAgICAgICAKLSAgICAgICAgaW5mby5ib2R5ID0gcGFyc2VGdW5j
dGlvbkJvZHkoY29udGV4dCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0
LCBwYXJhbWV0ZXJzU3RhcnQsIGNvbnN0cnVjdG9yS2luZCwgU3RhbmRhcmRGdW5jdGlvblBhcnNl
VHlwZSk7CisgICAgICAgIGluZm8uYm9keSA9IHBhcnNlRnVuY3Rpb25Cb2R5KGNvbnRleHQsIGZ1
bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBj
b25zdHJ1Y3RvcktpbmQsIFN0YW5kYXJkRnVuY3Rpb25QYXJzZVR5cGUsIGluZm8ucGFyYW1ldGVy
Q291bnQsIG1vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBTdGFuZGFyZEZ1
bmN0aW9uQm9keUJsb2NrOgogICAgIGNhc2UgQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uIDog
ewotICAgICAgICBpbmZvLmJvZHkgPSBwYXJzZUZ1bmN0aW9uQm9keShjb250ZXh0LCBmdW5jdGlv
bktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgY29uc3Ry
dWN0b3JLaW5kLCBwYXJzZVR5cGUpOworICAgICAgICBpbmZvLmJvZHkgPSBwYXJzZUZ1bmN0aW9u
Qm9keShjb250ZXh0LCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBh
cmFtZXRlcnNTdGFydCwgY29uc3RydWN0b3JLaW5kLCBwYXJzZVR5cGUsIGluZm8ucGFyYW1ldGVy
Q291bnQsIG1vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgfQogI2Vsc2UKLSAgICBp
bmZvLmJvZHkgPSBwYXJzZUZ1bmN0aW9uQm9keShjb250ZXh0LCBmdW5jdGlvbktleXdvcmRTdGFy
dCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgY29uc3RydWN0b3JLaW5kLCBT
dGFuZGFyZEZ1bmN0aW9uUGFyc2VUeXBlKTsKKyAgICBpbmZvLmJvZHkgPSBwYXJzZUZ1bmN0aW9u
Qm9keShjb250ZXh0LCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBh
cmFtZXRlcnNTdGFydCwgY29uc3RydWN0b3JLaW5kLCBTdGFuZGFyZEZ1bmN0aW9uUGFyc2VUeXBl
LCBpbmZvLnBhcmFtZXRlckNvdW50LCBtb2RlKTsKICNlbmRpZgogICAgIAogICAgIHJlc3RvcmVT
dGF0ZShvbGRTdGF0ZSk7CiAgICAgZmFpbElmRmFsc2UoaW5mby5ib2R5LCAiQ2Fubm90IHBhcnNl
IHRoZSBib2R5IG9mIHRoaXMgIiwgc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKG1vZGUpKTsKICAgICBj
b250ZXh0LnNldEVuZE9mZnNldChpbmZvLmJvZHksIG1fbGV4ZXItPmN1cnJlbnRPZmZzZXQoKSk7
CiAgICAgaWYgKGZ1bmN0aW9uU2NvcGUtPnN0cmljdE1vZGUoKSAmJiBpbmZvLm5hbWUpIHsKLSAg
ICAgICAgUkVMRUFTRV9BU1NFUlQobW9kZSA9PSBGdW5jdGlvbk1vZGUgfHwgbW9kZSA9PSBNZXRo
b2RNb2RlKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobW9kZSA9PSBOb3JtYWxGdW5jdGlvbk1v
ZGUgfHwgbW9kZSA9PSBNZXRob2RNb2RlIHx8IG1vZGUgPT0gQXJyb3dGdW5jdGlvbk1vZGUpOwog
ICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUobV92bS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRz
ID09ICppbmZvLm5hbWUsICInIiwgaW5mby5uYW1lLT5pbXBsKCksICInIGlzIG5vdCBhIHZhbGlk
IGZ1bmN0aW9uIG5hbWUgaW4gc3RyaWN0IG1vZGUiKTsKICAgICAgICAgc2VtYW50aWNGYWlsSWZU
cnVlKG1fdm0tPnByb3BlcnR5TmFtZXMtPmV2YWwgPT0gKmluZm8ubmFtZSwgIiciLCBpbmZvLm5h
bWUtPmltcGwoKSwgIicgaXMgbm90IGEgdmFsaWQgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgbW9k
ZSIpOwogICAgIH0KQEAgLTE2NzgsNiArMTcwNCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gYm9vbCBQYXJzZXIKICAgICAgICAgcGFyYW1ldGVycy5sYXN0VG9ja2VuU3RhcnRPZmZz
ZXQgPSBsb2NhdGlvbi5zdGFydE9mZnNldDsKICAgICAgICAgcGFyYW1ldGVycy5sYXN0VG9ja2Vu
RW5kT2Zmc2V0ID0gbG9jYXRpb24uZW5kT2Zmc2V0OwogICAgICAgICBwYXJhbWV0ZXJzLmxhc3RU
b2NrZW5MaW5lU3RhcnRPZmZzZXQgPSBsb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQ7CisgICAgICAg
IHBhcmFtZXRlcnMucGFyYW1ldGVyQ291bnQgPSBpbmZvLnBhcmFtZXRlckNvdW50OwogI2lmIEVO
QUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCiAgICAgICAgIGlmIChpbmZvLmZ1bmN0aW9u
Qm9keVR5cGUgPT0gQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKSB7CiAgICAgICAgICAgICBw
YXJhbWV0ZXJzLmlzQm9keUFycm93RXhwcmVzc2lvbiA9IHRydWU7CkBAIC0xNzE3LDcgKzE3NDQs
NyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lCiAgICAgdW5zaWdu
ZWQgZnVuY3Rpb25LZXl3b3JkU3RhcnQgPSB0b2tlblN0YXJ0KCk7CiAgICAgbmV4dCgpOwogICAg
IFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4gaW5mbzsKLSAgICBmYWlsSWZGYWxzZSgo
cGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25OZWVkc05hbWUsIEZ1bmN0aW9uTW9k
ZSwgdHJ1ZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwK
KyAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25OZWVk
c05hbWUsIE5vcm1hbEZ1bmN0aW9uTW9kZSwgdHJ1ZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBT
dXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwKICAgICAgICAgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGlu
Zm8sIFN0YW5kYXJkRnVuY3Rpb25QYXJzZVR5cGUpKSwgIkNhbm5vdCBwYXJzZSB0aGlzIGZ1bmN0
aW9uIik7CiAgICAgZmFpbElmRmFsc2UoaW5mby5uYW1lLCAiRnVuY3Rpb24gc3RhdGVtZW50cyBt
dXN0IGhhdmUgYSBuYW1lIik7CiAgICAgZmFpbElmRmFsc2VJZlN0cmljdChkZWNsYXJlVmFyaWFi
bGUoaW5mby5uYW1lKSwgIkNhbm5vdCBkZWNsYXJlIGEgZnVuY3Rpb24gbmFtZWQgJyIsIGluZm8u
bmFtZS0+aW1wbCgpLCAiJyBpbiBzdHJpY3QgbW9kZSIpOwpAQCAtMTgzNyw3ICsxODY0LDcgQEAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlQ2xhc3NFeAogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiBtZXRob2RJbmZv
OwogICAgICAgICAgICAgYm9vbCBpc0NvbnN0cnVjdG9yID0gIWlzU3RhdGljTWV0aG9kICYmICpp
ZGVudCA9PSBwcm9wZXJ0eU5hbWVzLmNvbnN0cnVjdG9yOwotICAgICAgICAgICAgZmFpbElmRmFs
c2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTm9SZXF1aXJlbWVudHMsIGlz
U3RhdGljTWV0aG9kID8gRnVuY3Rpb25Nb2RlIDogTWV0aG9kTW9kZSwgZmFsc2UsIGlzQ29uc3Ry
dWN0b3IgPyBjb25zdHJ1Y3RvcktpbmQgOiBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmlu
ZGluZzo6TmVlZGVkLCBtZXRob2RTdGFydCwgbWV0aG9kSW5mbywgU3RhbmRhcmRGdW5jdGlvblBh
cnNlVHlwZSkpLCAiQ2Fubm90IHBhcnNlIHRoaXMgbWV0aG9kIik7CisgICAgICAgICAgICBmYWls
SWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25Ob1JlcXVpcmVtZW50
cywgaXNTdGF0aWNNZXRob2QgPyBOb3JtYWxGdW5jdGlvbk1vZGUgOiBNZXRob2RNb2RlLCBmYWxz
ZSwgaXNDb25zdHJ1Y3RvciA/IGNvbnN0cnVjdG9yS2luZCA6IENvbnN0cnVjdG9yS2luZDo6Tm9u
ZSwgU3VwZXJCaW5kaW5nOjpOZWVkZWQsIG1ldGhvZFN0YXJ0LCBtZXRob2RJbmZvLCBTdGFuZGFy
ZEZ1bmN0aW9uUGFyc2VUeXBlKSksICJDYW5ub3QgcGFyc2UgdGhpcyBtZXRob2QiKTsKICAgICAg
ICAgICAgIGZhaWxJZkZhbHNlKGlkZW50ICYmIGRlY2xhcmVWYXJpYWJsZShpZGVudCksICJDYW5u
b3QgZGVjbGFyZSBhIG1ldGhvZCBuYW1lZCAnIiwgbWV0aG9kSW5mby5uYW1lLT5pbXBsKCksICIn
Iik7CiAgICAgICAgICAgICBtZXRob2RJbmZvLm5hbWUgPSBpc0NvbnN0cnVjdG9yID8gY2xhc3NO
YW1lIDogaWRlbnQ7CiAKQEAgLTI2NTQsNyArMjY4MSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZUV4cHJlc3MKICAgICAgICAgbmV4dCgpOwogICAgICAgICBQYXJzZXJGdW5j
dGlvbkluZm88VHJlZUJ1aWxkZXI+IGluZm87CiAgICAgICAgIGluZm8ubmFtZSA9ICZtX3ZtLT5w
cm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllcjsKLSAgICAgICAgZmFpbElmRmFsc2UoKHBhcnNl
RnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTm9SZXF1aXJlbWVudHMsIEZ1bmN0aW9uTW9k
ZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQs
IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbmZvLCBTdGFuZGFyZEZ1bmN0aW9uUGFyc2VUeXBlKSks
ICJDYW5ub3QgcGFyc2UgZnVuY3Rpb24gZXhwcmVzc2lvbiIpOworICAgICAgICBmYWlsSWZGYWxz
ZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25Ob1JlcXVpcmVtZW50cywgTm9y
bWFsRnVuY3Rpb25Nb2RlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRp
bmc6Ok5vdE5lZWRlZCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGluZm8sIFN0YW5kYXJkRnVuY3Rp
b25QYXJzZVR5cGUpKSwgIkNhbm5vdCBwYXJzZSBmdW5jdGlvbiBleHByZXNzaW9uIik7CiAgICAg
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uRXhwcihsb2NhdGlvbiwgaW5mbyk7CiAg
ICAgfQogI2lmIEVOQUJMRShFUzZfQ0xBU1NfU1lOVEFYKQpAQCAtMjkwNCw3ICsyOTMxLDcgQEAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzcwogICAgIGxvY2F0aW9uID0g
dG9rZW5Mb2NhdGlvbigpOwogICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4gaW5m
bzsKICAgICBpbmZvLm5hbWUgPSAmbV92bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXI7
Ci0gICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTm9S
ZXF1aXJlbWVudHMsIEZ1bmN0aW9uTW9kZSwgdHJ1ZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBT
dXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGluZm8sIEFycm93
RnVuY3Rpb25QYXJzZVR5cGUpKSwgIkNhbm5vdCBwYXJzZSBhcnJvdyBmdW5jdGlvbiBleHByZXNz
aW9uIik7CisgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0
aW9uTm9SZXF1aXJlbWVudHMsIEFycm93RnVuY3Rpb25Nb2RlLCB0cnVlLCBDb25zdHJ1Y3Rvcktp
bmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBmdW5jdGlvbktleXdvcmRTdGFydCwg
aW5mbywgQXJyb3dGdW5jdGlvblBhcnNlVHlwZSkpLCAiQ2Fubm90IHBhcnNlIGFycm93IGZ1bmN0
aW9uIGV4cHJlc3Npb24iKTsKIAogICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUFycm93RnVuY3Rp
b25FeHByKGxvY2F0aW9uLCBpbmZvKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuaAkocmV2aXNpb24gMTg2NzE5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODYsMTUgKzg2LDYgQEAgZW51bSBGdW5j
dGlvblBhcnNlVHlwZSB7IFN0YW5kYXJkRnVuY3RpbwogZW51bSBGdW5jdGlvblBhcnNlVHlwZSB7
IFN0YW5kYXJkRnVuY3Rpb25QYXJzZVR5cGV9OwogI2VuZGlmCiBlbnVtIEZ1bmN0aW9uUmVxdWly
ZW1lbnRzIHsgRnVuY3Rpb25Ob1JlcXVpcmVtZW50cywgRnVuY3Rpb25OZWVkc05hbWUgfTsKLWVu
dW0gRnVuY3Rpb25QYXJzZU1vZGUgewotICAgIEZ1bmN0aW9uTW9kZSwKLSAgICBHZXR0ZXJNb2Rl
LAotICAgIFNldHRlck1vZGUsCi0gICAgTWV0aG9kTW9kZSwKLSNpZiBFTkFCTEUoRVM2X0FSUk9X
RlVOQ1RJT05fU1lOVEFYKQotICAgIEFycm93RnVuY3Rpb25Nb2RlCi0jZW5kaWYKLX07CiBlbnVt
IERlc3RydWN0dXJpbmdLaW5kIHsKICAgICBEZXN0cnVjdHVyZVRvVmFyaWFibGVzLAogICAgIERl
c3RydWN0dXJlVG9QYXJhbWV0ZXJzLApAQCAtNDI5LDEzICs0MjAsMTIgQEAgY2xhc3MgUGFyc2Vy
IHsKIAogcHVibGljOgogICAgIFBhcnNlcigKLSAgICAgICAgVk0qLCBjb25zdCBTb3VyY2VDb2Rl
JiwgRnVuY3Rpb25QYXJhbWV0ZXJzKiwgY29uc3QgSWRlbnRpZmllciYsIAotICAgICAgICBKU1Bh
cnNlckJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGUsIEpTUGFyc2VyQ29kZVR5cGUsCisg
ICAgICAgIFZNKiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFyc2VyQnVpbHRpbk1vZGUsIEpTUGFy
c2VyU3RyaWN0TW9kZSwgSlNQYXJzZXJDb2RlVHlwZSwgCiAgICAgICAgIENvbnN0cnVjdG9yS2lu
ZCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kID0gQ29uc3RydWN0b3JLaW5kOjpOb25lLCBUaGlzVERa
TW9kZSA9IFRoaXNURFpNb2RlOjpDaGVja0lmTmVlZGVkKTsKICAgICB+UGFyc2VyKCk7CiAKICAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgUGFyc2VkTm9kZT4KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2Vk
Tm9kZT4gcGFyc2UoUGFyc2VyRXJyb3ImKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9k
ZT4gcGFyc2UoUGFyc2VyRXJyb3ImLCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25QYXJzZU1v
ZGUpOwogCiAgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbGV4ZXItPnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsgfQogICAg
IEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbkJlZm9yZUxhc3RUb2tlbigpIGNvbnN0IHsgcmV0dXJu
IG1fbGV4ZXItPmxhc3RUb2tlbkxvY2F0aW9uKCk7IH0KQEAgLTU2Myw3ICs1NTMsNyBAQCBwcml2
YXRlOgogICAgIH0KIAogICAgIFBhcnNlcigpOwotICAgIFN0cmluZyBwYXJzZUlubmVyKCk7Cisg
ICAgU3RyaW5nIHBhcnNlSW5uZXIoY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uUGFyc2VNb2Rl
KTsKIAogICAgIHZvaWQgZGlkRmluaXNoUGFyc2luZyhTb3VyY2VFbGVtZW50cyosIERlY2xhcmF0
aW9uU3RhY2tzOjpWYXJTdGFjayYsIAogICAgICAgICBEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rp
b25TdGFjayYsIENvZGVGZWF0dXJlcywgaW50LCBJZGVudGlmaWVyU2V0JiwgY29uc3QgVmVjdG9y
PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+JiYpOwpAQCAtODA3LDggKzc5Nyw4IEBAIHByaXZh
dGU6CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlUHJvcGVydHkgcGFyc2VQ
cm9wZXJ0eShUcmVlQnVpbGRlciYsIGJvb2wgc3RyaWN0KTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIHBhcnNlUHJvcGVydHlNZXRob2QoVHJlZUJ1aWxk
ZXImIGNvbnRleHQsIGNvbnN0IElkZW50aWZpZXIqIG1ldGhvZE5hbWUpOwogICAgIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVByb3BlcnR5IHBhcnNlR2V0dGVyU2V0dGVyKFRyZWVC
dWlsZGVyJiwgYm9vbCBzdHJpY3QsIFByb3BlcnR5Tm9kZTo6VHlwZSwgdW5zaWduZWQgZ2V0dGVy
T3JTZXR0ZXJTdGFydE9mZnNldCwgQ29uc3RydWN0b3JLaW5kID0gQ29uc3RydWN0b3JLaW5kOjpO
b25lLCBTdXBlckJpbmRpbmcgPSBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCk7Ci0gICAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdBWVNfSU5MSU5FIFRyZWVGdW5jdGlvbkJvZHkgcGFy
c2VGdW5jdGlvbkJvZHkoVHJlZUJ1aWxkZXImLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGlu
dCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgQ29uc3RydWN0b3JLaW5k
LCBGdW5jdGlvblBhcnNlVHlwZSk7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBB
TFdBWVNfSU5MSU5FIFRyZWVGb3JtYWxQYXJhbWV0ZXJMaXN0IHBhcnNlRm9ybWFsUGFyYW1ldGVy
cyhUcmVlQnVpbGRlciYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlT
X0lOTElORSBUcmVlRnVuY3Rpb25Cb2R5IHBhcnNlRnVuY3Rpb25Cb2R5KFRyZWVCdWlsZGVyJiwg
aW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJh
bWV0ZXJzU3RhcnQsIENvbnN0cnVjdG9yS2luZCwgRnVuY3Rpb25QYXJzZVR5cGUsIHVuc2lnbmVk
LCBGdW5jdGlvblBhcnNlTW9kZSk7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBB
TFdBWVNfSU5MSU5FIGJvb2wgcGFyc2VGb3JtYWxQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiwgVHJl
ZUZvcm1hbFBhcmFtZXRlckxpc3QsIHVuc2lnbmVkJik7CiAgICAgZW51bSBWYXJEZWNsYXJhdGlv
bkxpc3RDb250ZXh0IHsgRm9yTG9vcENvbnRleHQsIFZhckRlY2xhcmF0aW9uQ29udGV4dCB9Owog
ICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gcGFyc2VWYXJE
ZWNsYXJhdGlvbkxpc3QoVHJlZUJ1aWxkZXImLCBpbnQmIGRlY2xhcmF0aW9ucywgVHJlZURlc3Ry
dWN0dXJpbmdQYXR0ZXJuJiBsYXN0UGF0dGVybiwgVHJlZUV4cHJlc3Npb24mIGxhc3RJbml0aWFs
aXplciwgSlNUZXh0UG9zaXRpb24mIGlkZW50U3RhcnQsIEpTVGV4dFBvc2l0aW9uJiBpbml0U3Rh
cnQsIEpTVGV4dFBvc2l0aW9uJiBpbml0RW5kLCBWYXJEZWNsYXJhdGlvbkxpc3RDb250ZXh0KTsK
ICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBUcmVlQ29uc3RE
ZWNsTGlzdCBwYXJzZUNvbnN0RGVjbGFyYXRpb25MaXN0KFRyZWVCdWlsZGVyJik7CkBAIC05Mjgs
NiArOTE4LDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBTb3VyY2VDb2RlKiBtX3NvdXJjZTsKICAg
ICBQYXJzZXJBcmVuYSBtX3BhcnNlckFyZW5hOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxMZXhlclR5
cGU+IG1fbGV4ZXI7CisgICAgRnVuY3Rpb25QYXJhbWV0ZXJzKiBtX3BhcmFtZXRlcnMgeyBudWxs
cHRyIH07CiAgICAgCiAgICAgYm9vbCBtX2hhc1N0YWNrT3ZlcmZsb3c7CiAgICAgU3RyaW5nIG1f
ZXJyb3JNZXNzYWdlOwpAQCAtOTc0LDEzICs5NjUsMTMgQEAgcHJpdmF0ZToKIAogdGVtcGxhdGUg
PHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBQYXJzZWROb2RlPgotc3RkOjp1
bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZShQYXJzZXJFcnJv
ciYgZXJyb3IpCitzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyVHlwZT46
OnBhcnNlKFBhcnNlckVycm9yJiBlcnJvciwgY29uc3QgSWRlbnRpZmllciYgY2FsbGVlTmFtZSwg
RnVuY3Rpb25QYXJzZU1vZGUgcGFyc2VNb2RlKQogewogICAgIGludCBlcnJMaW5lOwogICAgIFN0
cmluZyBlcnJNc2c7CiAKICAgICBpZiAoUGFyc2VkTm9kZTo6c2NvcGVJc0Z1bmN0aW9uKQotICAg
ICAgICBtX2xleGVyLT5zZXRJc1JlcGFyc2luZygpOworICAgICAgICBtX2xleGVyLT5zZXRJc1Jl
cGFyc2luZ0Z1bmN0aW9uKCk7CiAKICAgICBtX3NvdXJjZUVsZW1lbnRzID0gMDsKIApAQCAtOTkx
LDcgKzk4Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4ZXIKICAg
ICBBU1NFUlQobV9zb3VyY2UtPnN0YXJ0Q29sdW1uKCkgPiAwKTsKICAgICB1bnNpZ25lZCBzdGFy
dENvbHVtbiA9IG1fc291cmNlLT5zdGFydENvbHVtbigpIC0gMTsKIAotICAgIFN0cmluZyBwYXJz
ZUVycm9yID0gcGFyc2VJbm5lcigpOworICAgIFN0cmluZyBwYXJzZUVycm9yID0gcGFyc2VJbm5l
cihjYWxsZWVOYW1lLCBwYXJzZU1vZGUpOwogCiAgICAgaW50IGxpbmVOdW1iZXIgPSBtX2xleGVy
LT5saW5lTnVtYmVyKCk7CiAgICAgYm9vbCBsZXhFcnJvciA9IG1fbGV4ZXItPnNhd0Vycm9yKCk7
CkBAIC0xMDIxLDYgKzEwMTIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2Vy
PExleGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3ZhckRlY2xhcmF0
aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZnVuY0RlY2xhcmF0
aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY2FwdHVyZWRWYXJp
YWJsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcmFtZXRlcnMs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbV9zb3VyY2UsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2ZlYXR1cmVzLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbV9udW1Db25zdGFudHMpOwpAQCAtMTA1NCwxOCArMTA0Niwy
MSBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyCiAKIHRlbXBsYXRl
IDxjbGFzcyBQYXJzZWROb2RlPgogc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKAot
ICAgIFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvblBhcmFtZXRlcnMq
IHBhcmFtZXRlcnMsCisgICAgVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsCiAgICAg
Y29uc3QgSWRlbnRpZmllciYgbmFtZSwgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSwK
ICAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgSlNQYXJzZXJDb2RlVHlwZSBjb2Rl
VHlwZSwKICAgICBQYXJzZXJFcnJvciYgZXJyb3IsIEpTVGV4dFBvc2l0aW9uKiBwb3NpdGlvbkJl
Zm9yZUxhc3ROZXdsaW5lID0gMCwKLSAgICBDb25zdHJ1Y3RvcktpbmQgZGVmYXVsdENvbnN0cnVj
dG9yS2luZCA9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUg
PSBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRlZCkKKyAgICBGdW5jdGlvblBhcnNlTW9kZSBwYXJz
ZU1vZGUgPSBOb3RBRnVuY3Rpb25Nb2RlLCBDb25zdHJ1Y3RvcktpbmQgZGVmYXVsdENvbnN0cnVj
dG9yS2luZCA9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgCisgICAgVGhpc1REWk1vZGUgdGhpc1RE
Wk1vZGUgPSBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRlZCkKIHsKICAgICBTYW1wbGluZ1JlZ2lv
biBzYW1wbGluZ1JlZ2lvbigiUGFyc2luZyIpOworICAgIC8vaWYgKGNvZGVUeXBlID09IEpTUGFy
c2VyQ29kZVR5cGU6OkZ1bmN0aW9uKQorICAgIC8vICAgIHByaW50ZigiUGFyc2luZyBmdW5jdGlv
biAnJXMnXG4iLCBzb3VyY2UudG9TdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAKICAgICBBU1NF
UlQoIXNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2UoKS5pc051bGwoKSk7CiAgICAgaWYgKHNvdXJj
ZS5wcm92aWRlcigpLT5zb3VyY2UoKS5pczhCaXQoKSkgewotICAgICAgICBQYXJzZXI8TGV4ZXI8
TENoYXI+PiBwYXJzZXIodm0sIHNvdXJjZSwgcGFyYW1ldGVycywgbmFtZSwgYnVpbHRpbk1vZGUs
IHN0cmljdE1vZGUsIGNvZGVUeXBlLCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kLCB0aGlzVERaTW9k
ZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiByZXN1bHQgPSBwYXJzZXIu
cGFyc2U8UGFyc2VkTm9kZT4oZXJyb3IpOworICAgICAgICBQYXJzZXI8TGV4ZXI8TENoYXI+PiBw
YXJzZXIodm0sIHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIGNvZGVUeXBlLCBkZWZh
dWx0Q29uc3RydWN0b3JLaW5kLCB0aGlzVERaTW9kZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxQYXJzZWROb2RlPiByZXN1bHQgPSBwYXJzZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3IsIG5h
bWUsIHBhcnNlTW9kZSk7CiAgICAgICAgIGlmIChwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKQog
ICAgICAgICAgICAgKnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUgPSBwYXJzZXIucG9zaXRpb25C
ZWZvcmVMYXN0TmV3bGluZSgpOwogICAgICAgICBpZiAoYnVpbHRpbk1vZGUgPT0gSlNQYXJzZXJC
dWlsdGluTW9kZTo6QnVpbHRpbikgewpAQCAtMTA3Nyw4ICsxMDcyLDggQEAgc3RkOjp1bmlxdWVf
cHRyPFBhcnNlZE5vZGU+IHBhcnNlKAogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQgPT0gQ29uc3RydWN0
b3JLaW5kOjpOb25lLCAiQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVEZWZhdWx0Q29uc3RydWN0
b3Igc2hvdWxkIGFsd2F5cyB1c2UgYSA4LWJpdCBzdHJpbmciKTsKLSAgICBQYXJzZXI8TGV4ZXI8
VUNoYXI+PiBwYXJzZXIodm0sIHNvdXJjZSwgcGFyYW1ldGVycywgbmFtZSwgYnVpbHRpbk1vZGUs
IHN0cmljdE1vZGUsIGNvZGVUeXBlLCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kLCB0aGlzVERaTW9k
ZSk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHJlc3VsdCA9IHBhcnNlci5wYXJz
ZTxQYXJzZWROb2RlPihlcnJvcik7CisgICAgUGFyc2VyPExleGVyPFVDaGFyPj4gcGFyc2VyKHZt
LCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBjb2RlVHlwZSwgZGVmYXVsdENvbnN0
cnVjdG9yS2luZCwgdGhpc1REWk1vZGUpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2Rl
PiByZXN1bHQgPSBwYXJzZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3IsIG5hbWUsIHBhcnNlTW9k
ZSk7CiAgICAgaWYgKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpCiAgICAgICAgICpwb3NpdGlv
bkJlZm9yZUxhc3ROZXdsaW5lID0gcGFyc2VyLnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsK
ICAgICByZXR1cm4gcmVzdWx0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXJGdW5jdGlvbkluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlckZ1bmN0aW9uSW5mby5oCShyZXZpc2lvbiAxODY3MTkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckZ1bmN0aW9uSW5mby5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNyw2ICszNyw3IEBAIHN0cnVjdCBQYXJzZXJGdW5jdGlvbkluZm8gewogICAgIGNvbnN0
IElkZW50aWZpZXIqIG5hbWUgPSAwOwogICAgIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQ
YXJhbWV0ZXJMaXN0IHBhcmFtZXRlcnMgPSAwOwogICAgIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpG
dW5jdGlvbkJvZHkgYm9keSA9IDA7CisgICAgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQgeyAwIH07
CiAgICAgdW5zaWduZWQgc3RhcnRGdW5jdGlvbk9mZnNldCA9IDA7CiAgICAgdW5zaWduZWQgZW5k
RnVuY3Rpb25PZmZzZXQgPSAwOwogICAgIGludCBib2R5U3RhcnRMaW5lID0gMDsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgJKHJldmlzaW9uIDE4Njcx
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDQsNiArNDQsMTcgQEAgZW51bSBEZWJ1Z2dlck1vZGUgeyBEZWJ1Z2dlck9m
ZiwgRGVidWdnZQogCiBlbnVtIEZ1bmN0aW9uTW9kZSB7IEZ1bmN0aW9uRXhwcmVzc2lvbiwgRnVu
Y3Rpb25EZWNsYXJhdGlvbiB9OwogCitlbnVtIEZ1bmN0aW9uUGFyc2VNb2RlIHsKKyAgICBOb3Jt
YWxGdW5jdGlvbk1vZGUsCisgICAgR2V0dGVyTW9kZSwKKyAgICBTZXR0ZXJNb2RlLAorICAgIE1l
dGhvZE1vZGUsCisgICAgTm90QUZ1bmN0aW9uTW9kZSwKKyNpZiBFTkFCTEUoRVM2X0FSUk9XRlVO
Q1RJT05fU1lOVEFYKQorICAgIEFycm93RnVuY3Rpb25Nb2RlCisjZW5kaWYKK307CisKIGlubGlu
ZSBib29sIGZ1bmN0aW9uTmFtZUlzSW5TY29wZShjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBGdW5j
dGlvbk1vZGUgZnVuY3Rpb25Nb2RlKQogewogICAgIGlmIChuYW1lLmlzTnVsbCgpKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXJD
YWNoZUl0ZW0uaAkocmV2aXNpb24gMTg2NzE5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Tb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0
MCw3IEBAIHN0cnVjdCBTb3VyY2VQcm92aWRlckNhY2hlSXRlbUNyZWF0aW9uUGEKICAgICB1bnNp
Z25lZCBsYXN0VG9ja2VuRW5kT2Zmc2V0OwogICAgIHVuc2lnbmVkIGxhc3RUb2NrZW5MaW5lU3Rh
cnRPZmZzZXQ7CiAgICAgdW5zaWduZWQgZW5kRnVuY3Rpb25PZmZzZXQ7CisgICAgdW5zaWduZWQg
cGFyYW1ldGVyQ291bnQ7CiAgICAgYm9vbCBuZWVkc0Z1bGxBY3RpdmF0aW9uOwogICAgIGJvb2wg
dXNlc0V2YWw7CiAgICAgYm9vbCBzdHJpY3RNb2RlOwpAQCAtODcsNiArODgsNyBAQCBwdWJsaWM6
CiAgICAgdW5zaWduZWQgbGFzdFRvY2tlbkxpbmUgOiAzMTsKICAgICB1bnNpZ25lZCBsYXN0VG9j
a2VuU3RhcnRPZmZzZXQgOiAzMTsKICAgICB1bnNpZ25lZCBsYXN0VG9ja2VuRW5kT2Zmc2V0OiAz
MTsKKyAgICB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudDsKICAgICAKICAgICBib29sIHVzZXNFdmFs
IDogMTsKIApAQCAtMTMwLDYgKzEzMiw3IEBAIGlubGluZSBTb3VyY2VQcm92aWRlckNhY2hlSXRl
bTo6U291cmNlUHIKICAgICAsIGxhc3RUb2NrZW5MaW5lKHBhcmFtZXRlcnMubGFzdFRvY2tlbkxp
bmUpCiAgICAgLCBsYXN0VG9ja2VuU3RhcnRPZmZzZXQocGFyYW1ldGVycy5sYXN0VG9ja2VuU3Rh
cnRPZmZzZXQpCiAgICAgLCBsYXN0VG9ja2VuRW5kT2Zmc2V0KHBhcmFtZXRlcnMubGFzdFRvY2tl
bkVuZE9mZnNldCkKKyAgICAsIHBhcmFtZXRlckNvdW50KHBhcmFtZXRlcnMucGFyYW1ldGVyQ291
bnQpCiAgICAgLCB1c2VzRXZhbChwYXJhbWV0ZXJzLnVzZXNFdmFsKQogICAgICwgc3RyaWN0TW9k
ZShwYXJhbWV0ZXJzLnN0cmljdE1vZGUpCiAgICAgLCBsYXN0VG9ja2VuTGluZVN0YXJ0T2Zmc2V0
KHBhcmFtZXRlcnMubGFzdFRvY2tlbkxpbmVTdGFydE9mZnNldCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCShyZXZpc2lvbiAxODY3MTkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtNjksNyArNjksNiBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHR5cGVk
ZWYgU3ludGF4Q2hlY2tlciBGdW5jdGlvbkJvZHlCdWlsZGVyOwogICAgIGVudW0geyBOb25lRXhw
ciA9IDAsCiAgICAgICAgIFJlc29sdmVFdmFsRXhwciwgUmVzb2x2ZUV4cHIsIEludGVnZXJFeHBy
LCBEb3VibGVFeHByLCBTdHJpbmdFeHByLAogICAgICAgICBUaGlzRXhwciwgTnVsbEV4cHIsIEJv
b2xFeHByLCBSZWdFeHBFeHByLCBPYmplY3RMaXRlcmFsRXhwciwKQEAgLTE3OCw3ICsxNzcsNyBA
QCBwdWJsaWM6CiAgICAgQ2xhc3NFeHByZXNzaW9uIGNyZWF0ZUNsYXNzRXhwcihjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Np
b25UeXBlLCBQcm9wZXJ0eUxpc3QsIFByb3BlcnR5TGlzdCkgeyByZXR1cm4gQ2xhc3NFeHByOyB9
CiAjZW5kaWYKICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVGdW5jdGlvbkV4cHIoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPFN5bnRheENoZWNrZXI+Jikg
eyByZXR1cm4gRnVuY3Rpb25FeHByOyB9Ci0gICAgaW50IGNyZWF0ZUZ1bmN0aW9uQm9keShjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgYm9v
bCwgaW50LCBpbnQsIGludCwgQ29uc3RydWN0b3JLaW5kKSB7IHJldHVybiBGdW5jdGlvbkJvZHlS
ZXN1bHQ7IH0KKyAgICBpbnQgY3JlYXRlRnVuY3Rpb25Cb2R5KGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBib29sLCBpbnQsIGludCwgaW50
LCBDb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkLCBpbnQpIHsgcmV0dXJuIEZ1bmN0aW9uQm9keVJl
c3VsdDsgfQogI2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCiAgICAgRXhwcmVz
c2lvblR5cGUgY3JlYXRlQXJyb3dGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
Y29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPFN5bnRheENoZWNrZXI+JikgeyByZXR1cm4gRnVuY3Rp
b25FeHByOyB9CiAjZW5kaWYgCkBAIC0yMjAsOCArMjE5LDggQEAgcHVibGljOgogICAgIGludCBj
cmVhdGVQcm9wZXJ0eUxpc3QoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgUHJvcGVydHksIGludCkg
eyByZXR1cm4gUHJvcGVydHlMaXN0UmVzdWx0OyB9CiAgICAgaW50IGNyZWF0ZUVsZW1lbnRMaXN0
KGludCwgaW50KSB7IHJldHVybiBFbGVtZW50c0xpc3RSZXN1bHQ7IH0KICAgICBpbnQgY3JlYXRl
RWxlbWVudExpc3QoaW50LCBpbnQsIGludCkgeyByZXR1cm4gRWxlbWVudHNMaXN0UmVzdWx0OyB9
Ci0gICAgaW50IGNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QoRGVzdHJ1Y3R1cmluZ1BhdHRlcm4p
IHsgcmV0dXJuIEZvcm1hbFBhcmFtZXRlckxpc3RSZXN1bHQ7IH0KLSAgICBpbnQgY3JlYXRlRm9y
bWFsUGFyYW1ldGVyTGlzdChpbnQsIERlc3RydWN0dXJpbmdQYXR0ZXJuKSB7IHJldHVybiBGb3Jt
YWxQYXJhbWV0ZXJMaXN0UmVzdWx0OyB9CisgICAgaW50IGNyZWF0ZUZvcm1hbFBhcmFtZXRlckxp
c3QoKSB7IHJldHVybiBGb3JtYWxQYXJhbWV0ZXJMaXN0UmVzdWx0OyB9CisgICAgdm9pZCBhcHBl
bmRQYXJhbWV0ZXIoaW50LCBEZXN0cnVjdHVyaW5nUGF0dGVybikgeyB9CiAgICAgaW50IGNyZWF0
ZUNsYXVzZShpbnQsIGludCkgeyByZXR1cm4gQ2xhdXNlUmVzdWx0OyB9CiAgICAgaW50IGNyZWF0
ZUNsYXVzZUxpc3QoaW50KSB7IHJldHVybiBDbGF1c2VMaXN0UmVzdWx0OyB9CiAgICAgaW50IGNy
ZWF0ZUNsYXVzZUxpc3QoaW50LCBpbnQpIHsgcmV0dXJuIENsYXVzZUxpc3RSZXN1bHQ7IH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAkocmV2aXNp
b24gMTg2NzE5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTQsOCArOTQsOCBAQCBVbmxpbmtlZENvZGVCbG9ja1R5cGUq
IENvZGVDYWNoZTo6Z2V0R2xvCiAKICAgICB0eXBlZGVmIHR5cGVuYW1lIENhY2hlVHlwZXM8VW5s
aW5rZWRDb2RlQmxvY2tUeXBlPjo6Um9vdE5vZGUgUm9vdE5vZGU7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPFJvb3ROb2RlPiByb290Tm9kZSA9IHBhcnNlPFJvb3ROb2RlPigKLSAgICAgICAgJnZtLCBz
b3VyY2UsIDAsIElkZW50aWZpZXIoKSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIAotICAgICAg
ICBKU1BhcnNlckNvZGVUeXBlOjpQcm9ncmFtLCBlcnJvciwgMCwgQ29uc3RydWN0b3JLaW5kOjpO
b25lLCB0aGlzVERaTW9kZSk7CisgICAgICAgICZ2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIGJ1
aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCAKKyAgICAgICAgSlNQYXJzZXJDb2RlVHlwZTo6UHJvZ3Jh
bSwgZXJyb3IsIDAsIEZ1bmN0aW9uUGFyc2VNb2RlOjpOb3RBRnVuY3Rpb25Nb2RlLCBDb25zdHJ1
Y3RvcktpbmQ6Ok5vbmUsIHRoaXNURFpNb2RlKTsKICAgICBpZiAoIXJvb3ROb2RlKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMTQ0LDcgKzE0NCw3IEBAIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiBDb2RlQ2FjaGU6OmcKIAogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVm
b3JlTGFzdE5ld2xpbmU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFByb2dyYW1Ob2RlPiBwcm9ncmFt
ID0gcGFyc2U8UHJvZ3JhbU5vZGU+KAotICAgICAgICAmdm0sIHNvdXJjZSwgMCwgSWRlbnRpZmll
cigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCAKKyAgICAgICAgJnZtLCBzb3Vy
Y2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgCiAgICAg
ICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBKU1BhcnNlckNvZGVUeXBlOjpQcm9n
cmFtLCAKICAgICAgICAgZXJyb3IsICZwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsKICAgICBp
ZiAoIXByb2dyYW0pIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBs
ZXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bXBsZXRpb24uY3BwCShyZXZpc2lvbiAxODY3MTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21wbGV0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQCBi
b29sIGNoZWNrU3ludGF4KFZNJiB2bSwgY29uc3QgU291cmNlQ29kCiAgICAgSlNMb2NrSG9sZGVy
IGxvY2sodm0pOwogICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0g
d3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIHJldHVybiAhIXBhcnNl
PFByb2dyYW1Ob2RlPigKLSAgICAgICAgJnZtLCBzb3VyY2UsIDAsIElkZW50aWZpZXIoKSwgSlNQ
YXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgCisgICAgICAgICZ2bSwgc291cmNlLCBJZGVu
dGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIAogICAgICAgICBKU1Bh
cnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgSlNQYXJzZXJDb2RlVHlwZTo6UHJvZ3JhbSwgZXJy
b3IpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmNwcAkocmV2aXNpb24gMTg2NzE5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3NSw3ICs0NzUsNyBAQCBKU09i
amVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmNoZWNrU3ludGF4CiAgICAgVk0qIHZtID0gJmV4ZWMt
PnZtKCk7CiAgICAgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QgPSBleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFByb2dyYW1Ob2RlPiBw
cm9ncmFtTm9kZSA9IHBhcnNlPFByb2dyYW1Ob2RlPigKLSAgICAgICAgdm0sIG1fc291cmNlLCAw
LCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIAorICAgICAg
ICB2bSwgbV9zb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVp
bHRpbiwgCiAgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBKU1BhcnNlckNv
ZGVUeXBlOjpQcm9ncmFtLCBlcnJvcik7CiAgICAgaWYgKHByb2dyYW1Ob2RlKQogICAgICAgICBy
ZXR1cm4gMDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJv
dG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
dW5jdGlvblByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDE4NjcxOSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTEsNiArOTEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvCiAg
ICAgICAgIFN0cmluZyBzb3VyY2UgPSBleGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92aWRlcigpLT5n
ZXRSYW5nZSgKICAgICAgICAgICAgIGV4ZWN1dGFibGUtPnBhcmFtZXRlcnNTdGFydE9mZnNldCgp
LAogICAgICAgICAgICAgZXhlY3V0YWJsZS0+dHlwZVByb2ZpbGluZ0VuZE9mZnNldCgpICsgMSk7
IC8vIFR5cGUgcHJvZmlsaW5nIGVuZCBvZmZzZXQgaXMgdGhlIGNoYXJhY3RlciBiZWZvcmUgdGhl
ICd9Jy4KKyAgICAgICAgICAgIC8vZXhlY3V0YWJsZS0+cGFyYW1ldGVyc1N0YXJ0T2Zmc2V0KCkg
KyBleGVjdXRhYmxlLT5zb3VyY2VMZW5ndGgoKSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiZnVuY3Rpb24gIiwgZnVuY3Rpb24t
Pm5hbWUoZXhlYyksIHNvdXJjZSkpOwogICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256762</attachid>
            <date>2015-07-14 00:03:16 -0700</date>
            <delta_ts>2015-07-14 17:21:34 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>84332</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHRSZWYuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHRSZWYuY3BwCShyZXZpc2lv
biAxODY3OTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBwcml2YXRlOgogc3RhdGljIGJvb2wgcGFy
c2VTY3JpcHQoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9yJiBl
cnJvcikKIHsKICAgICByZXR1cm4gISFKU0M6OnBhcnNlPEpTQzo6UHJvZ3JhbU5vZGU+KAotICAg
ICAgICB2bSwgc291cmNlLCAwLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5v
dEJ1aWx0aW4sIAorICAgICAgICB2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVp
bHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIAogICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0
cmljdCwgSlNQYXJzZXJDb2RlVHlwZTo6UHJvZ3JhbSwgCiAgICAgICAgIGVycm9yKTsKIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhl
Y3V0YWJsZXMuY3BwCShyZXZpc2lvbiAxODY3OTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksMTAg
KzY5LDkgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdQogICAgIFVu
bGlua2VkRnVuY3Rpb25LaW5kIGtpbmQgPSBpc1BhcnNpbmdEZWZhdWx0Q29uc3RydWN0b3IgPyBV
bmxpbmtlZE5vcm1hbEZ1bmN0aW9uIDogVW5saW5rZWRCdWlsdGluRnVuY3Rpb247CiAgICAgUmVm
UHRyPFNvdXJjZVByb3ZpZGVyPiBzb3VyY2VPdmVycmlkZSA9IGlzUGFyc2luZ0RlZmF1bHRDb25z
dHJ1Y3RvciA/IHNvdXJjZS5wcm92aWRlcigpIDogbnVsbHB0cjsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UHJvZ3JhbU5vZGU+IHByb2dyYW0gPSBwYXJzZTxQcm9ncmFtTm9kZT4oCi0gICAgICAgICZt
X3ZtLCBzb3VyY2UsIDAsIElkZW50aWZpZXIoKSwgYnVpbHRpbk1vZGUsIAotICAgICAgICBKU1Bh
cnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgCi0gICAgICAgIEpTUGFyc2VyQ29kZVR5cGU6OlBy
b2dyYW0sCi0gICAgICAgIGVycm9yLCAmcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSwgY29uc3Ry
dWN0b3JLaW5kKTsKKyAgICAgICAgJm1fdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBidWlsdGlu
TW9kZSwgCisgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBKU1BhcnNlckNv
ZGVUeXBlOjpQcm9ncmFtLCBlcnJvciwgCisgICAgICAgICZwb3NpdGlvbkJlZm9yZUxhc3ROZXds
aW5lLCBGdW5jdGlvblBhcnNlTW9kZTo6Tm90QUZ1bmN0aW9uTW9kZSwgY29uc3RydWN0b3JLaW5k
KTsKIAogICAgIGlmICghcHJvZ3JhbSkgewogICAgICAgICBkYXRhTG9nKCJGYXRhbCBlcnJvciBj
b21waWxpbmcgYnVpbHRpbiBmdW5jdGlvbiAnIiwgbmFtZS5zdHJpbmcoKSwgIic6ICIsIGVycm9y
Lm1lc3NhZ2UoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAJKHJldmlzaW9uIDE4Njc5OCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTYwLDE1ICs2MCwxNSBAQCBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayog
Z2VuZXJhCiAgICAgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSA9IGV4ZWN1dGFibGUt
PmlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpCdWlsdGluIDogSlNQ
YXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbjsKICAgICBKU1BhcnNlclN0cmljdE1vZGUgc3Ry
aWN0TW9kZSA9IGV4ZWN1dGFibGUtPmlzSW5TdHJpY3RDb250ZXh0KCkgPyBKU1BhcnNlclN0cmlj
dE1vZGU6OlN0cmljdCA6IEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0OwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxGdW5jdGlvbk5vZGU+IGZ1bmN0aW9uID0gcGFyc2U8RnVuY3Rpb25Ob2RlPigK
LSAgICAgICAgJnZtLCBzb3VyY2UsIGV4ZWN1dGFibGUtPnBhcmFtZXRlcnMoKSwgZXhlY3V0YWJs
ZS0+bmFtZSgpLCBidWlsdGluTW9kZSwKLSAgICAgICAgc3RyaWN0TW9kZSwgSlNQYXJzZXJDb2Rl
VHlwZTo6RnVuY3Rpb24sIGVycm9yLCAwKTsKKyAgICAgICAgJnZtLCBzb3VyY2UsIGV4ZWN1dGFi
bGUtPm5hbWUoKSwgYnVpbHRpbk1vZGUsCisgICAgICAgIHN0cmljdE1vZGUsIEpTUGFyc2VyQ29k
ZVR5cGU6OkZ1bmN0aW9uLCBlcnJvciwgMCwgZXhlY3V0YWJsZS0+cGFyc2VNb2RlKCkpOwogCiAg
ICAgaWYgKCFmdW5jdGlvbikgewogICAgICAgICBBU1NFUlQoZXJyb3IuaXNWYWxpZCgpKTsKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgZnVuY3Rpb24tPmZpbmlzaFBhcnNp
bmcoZXhlY3V0YWJsZS0+cGFyYW1ldGVycygpLCBleGVjdXRhYmxlLT5uYW1lKCksIGV4ZWN1dGFi
bGUtPmZ1bmN0aW9uTW9kZSgpKTsKKyAgICBmdW5jdGlvbi0+ZmluaXNoUGFyc2luZyhleGVjdXRh
YmxlLT5uYW1lKCksIGV4ZWN1dGFibGUtPmZ1bmN0aW9uTW9kZSgpKTsKICAgICBleGVjdXRhYmxl
LT5yZWNvcmRQYXJzZShmdW5jdGlvbi0+ZmVhdHVyZXMoKSwgZnVuY3Rpb24tPmhhc0NhcHR1cmVk
VmFyaWFibGVzKCkpOwogICAgIAogICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3Vs
dCA9IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSgmdm0sIEZ1bmN0aW9uQ29kZSwK
QEAgLTg0LDcgKzg0LDYgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVu
YwogICAgIDogQmFzZSgqdm0sIHN0cnVjdHVyZSkKICAgICAsIG1fbmFtZShub2RlLT5pZGVudCgp
KQogICAgICwgbV9pbmZlcnJlZE5hbWUobm9kZS0+aW5mZXJyZWROYW1lKCkpCi0gICAgLCBtX3Bh
cmFtZXRlcnMobm9kZS0+cGFyYW1ldGVycygpKQogICAgICwgbV9zb3VyY2VPdmVycmlkZShXVEY6
Om1vdmUoc291cmNlT3ZlcnJpZGUpKQogICAgICwgbV9maXJzdExpbmVPZmZzZXQobm9kZS0+Zmly
c3RMaW5lKCkgLSBzb3VyY2UuZmlyc3RMaW5lKCkpCiAgICAgLCBtX2xpbmVDb3VudChub2RlLT5s
YXN0TGluZSgpIC0gbm9kZS0+Zmlyc3RMaW5lKCkpCkBAIC05Niw2ICs5NSw5IEBAIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmMKICAgICAsIG1fcGFyYW1ldGVyc1N0YXJ0
T2Zmc2V0KG5vZGUtPnBhcmFtZXRlcnNTdGFydCgpKQogICAgICwgbV90eXBlUHJvZmlsaW5nU3Rh
cnRPZmZzZXQobm9kZS0+ZnVuY3Rpb25LZXl3b3JkU3RhcnQoKSkKICAgICAsIG1fdHlwZVByb2Zp
bGluZ0VuZE9mZnNldChub2RlLT5zdGFydFN0YXJ0T2Zmc2V0KCkgKyBub2RlLT5zb3VyY2UoKS5s
ZW5ndGgoKSAtIDEpCisgICAgLy8sIG1fdHlwZVByb2ZpbGluZ0VuZE9mZnNldChub2RlLT5wYXJh
bWV0ZXJzU3RhcnQoKSArIG5vZGUtPnNvdXJjZSgpLmxlbmd0aCgpIC0gMSkKKyAgICAsIG1fcGFy
YW1ldGVyQ291bnQobm9kZS0+cGFyYW1ldGVyQ291bnQoKSkKKyAgICAsIG1fcGFyc2VNb2RlKG5v
ZGUtPnBhcnNlTW9kZSgpKQogICAgICwgbV9mZWF0dXJlcygwKQogICAgICwgbV9pc0luU3RyaWN0
Q29udGV4dChub2RlLT5pc0luU3RyaWN0Q29udGV4dCgpKQogICAgICwgbV9oYXNDYXB0dXJlZFZh
cmlhYmxlcyhmYWxzZSkKQEAgLTEwNiwxMSArMTA4LDYgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGU6OlVubGlua2VkRnVuYwogICAgIEFTU0VSVChtX2NvbnN0cnVjdG9yS2luZCA9PSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+Y29uc3RydWN0b3JLaW5kKCkpKTsKIH0KIAotc2l6ZV90
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpwYXJhbWV0ZXJDb3VudCgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIG1fcGFyYW1ldGVycy0+c2l6ZSgpOwotfQotCiB2b2lkIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCiB7CiAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqPihjZWxsKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCShyZXZp
c2lvbiAxODY3OTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNiBAQCBuYW1lc3BhY2UgSlND
IHsKIGNsYXNzIERlYnVnZ2VyOwogY2xhc3MgRnVuY3Rpb25Cb2R5Tm9kZTsKIGNsYXNzIEZ1bmN0
aW9uRXhlY3V0YWJsZTsKLWNsYXNzIEZ1bmN0aW9uUGFyYW1ldGVyczsKIGNsYXNzIEpTU2NvcGU7
CiBjbGFzcyBQYXJzZXJFcnJvcjsKIGNsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CkBAIC0xMjIsNyAr
MTIxLDggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIChraW5kID09IENvZGVGb3JD
YWxsKSA/IG1fc3ltYm9sVGFibGVGb3JDYWxsLmdldCgpIDogbV9zeW1ib2xUYWJsZUZvckNvbnN0
cnVjdC5nZXQoKTsKICAgICB9Ci0gICAgc2l6ZV90IHBhcmFtZXRlckNvdW50KCkgY29uc3Q7Cisg
ICAgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlckNv
dW50OyB9OworICAgIEZ1bmN0aW9uUGFyc2VNb2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcGFyc2VNb2RlOyB9OwogICAgIGJvb2wgaXNJblN0cmljdENvbnRleHQoKSBjb25zdCB7IHJl
dHVybiBtX2lzSW5TdHJpY3RDb250ZXh0OyB9CiAgICAgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9k
ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEZ1bmN0aW9uTW9kZT4obV9mdW5jdGlvbk1v
ZGUpOyB9CiAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9CkBA
IC0xNTQsOCArMTU0LDYgQEAgcHVibGljOgogICAgICAgICBtX2NvZGVCbG9ja0ZvckNvbnN0cnVj
dC5jbGVhcigpOwogICAgIH0KIAotICAgIEZ1bmN0aW9uUGFyYW1ldGVycyogcGFyYW1ldGVycygp
IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5nZXQoKTsgfQotCiAgICAgdm9pZCByZWNvcmRQYXJzZShD
b2RlRmVhdHVyZXMgZmVhdHVyZXMsIGJvb2wgaGFzQ2FwdHVyZWRWYXJpYWJsZXMpCiAgICAgewog
ICAgICAgICBtX2ZlYXR1cmVzID0gZmVhdHVyZXM7CkBAIC0xODEsNyArMTc5LDYgQEAgcHJpdmF0
ZToKICAgICBXcml0ZUJhcnJpZXI8SlNTdHJpbmc+IG1fbmFtZVZhbHVlOwogICAgIFdyaXRlQmFy
cmllcjxTeW1ib2xUYWJsZT4gbV9zeW1ib2xUYWJsZUZvckNhbGw7CiAgICAgV3JpdGVCYXJyaWVy
PFN5bWJvbFRhYmxlPiBtX3N5bWJvbFRhYmxlRm9yQ29uc3RydWN0OwotICAgIFJlZlB0cjxGdW5j
dGlvblBhcmFtZXRlcnM+IG1fcGFyYW1ldGVyczsKICAgICBSZWZQdHI8U291cmNlUHJvdmlkZXI+
IG1fc291cmNlT3ZlcnJpZGU7CiAgICAgdW5zaWduZWQgbV9maXJzdExpbmVPZmZzZXQ7CiAgICAg
dW5zaWduZWQgbV9saW5lQ291bnQ7CkBAIC0xOTMsNiArMTkwLDggQEAgcHJpdmF0ZToKICAgICB1
bnNpZ25lZCBtX3BhcmFtZXRlcnNTdGFydE9mZnNldDsKICAgICB1bnNpZ25lZCBtX3R5cGVQcm9m
aWxpbmdTdGFydE9mZnNldDsKICAgICB1bnNpZ25lZCBtX3R5cGVQcm9maWxpbmdFbmRPZmZzZXQ7
CisgICAgdW5zaWduZWQgbV9wYXJhbWV0ZXJDb3VudDsKKyAgICBGdW5jdGlvblBhcnNlTW9kZSBt
X3BhcnNlTW9kZTsKIAogICAgIENvZGVGZWF0dXJlcyBtX2ZlYXR1cmVzOwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
CShyZXZpc2lvbiAxODY3OTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxMTYsMTAgKzMxMTYsNiBAQCBS
ZWdpc3RlcklEKiBEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5vZGU6CiAgICAgcmV0dXJuIGdlbmVy
YXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgaW5pdGlhbGl6ZXIuZ2V0KCkpOwog
fQogCi1EZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU6On5EZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUo
KQotewotfQotCiBzdGF0aWMgdm9pZCBhc3NpZ25EZWZhdWx0VmFsdWVJZlVuZGVmaW5lZChCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBtYXliZVVuZGVmaW5lZCwgRXhw
cmVzc2lvbk5vZGUqIGRlZmF1bHRWYWx1ZSkKIHsKICAgICBBU1NFUlQoZGVmYXVsdFZhbHVlKTsK
QEAgLTMyNzcsNyArMzI3Myw3IEBAIHZvaWQgQXJyYXlQYXR0ZXJuTm9kZTo6dG9TdHJpbmcoU3Ry
aW5nQnUKIHZvaWQgQXJyYXlQYXR0ZXJuTm9kZTo6Y29sbGVjdEJvdW5kSWRlbnRpZmllcnMoVmVj
dG9yPElkZW50aWZpZXI+JiBpZGVudGlmaWVycykgY29uc3QKIHsKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1fdGFyZ2V0UGF0dGVybnMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgaWYgKERl
c3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogbm9kZSA9IG1fdGFyZ2V0UGF0dGVybnNbaV0ucGF0dGVy
bi5nZXQoKSkKKyAgICAgICAgaWYgKERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogbm9kZSA9IG1f
dGFyZ2V0UGF0dGVybnNbaV0ucGF0dGVybikKICAgICAgICAgICAgIG5vZGUtPmNvbGxlY3RCb3Vu
ZElkZW50aWZpZXJzKGlkZW50aWZpZXJzKTsKICAgICB9CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAkocmV2aXNpb24gMTg2Nzk4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTkz
LDggKzkzLDYgQEAgcHVibGljOgogICAgIH07CiAKIAotICAgIHR5cGVkZWYgU3ludGF4Q2hlY2tl
ciBGdW5jdGlvbkJvZHlCdWlsZGVyOwotCiAgICAgdHlwZWRlZiBFeHByZXNzaW9uTm9kZSogRXhw
cmVzc2lvbjsKICAgICB0eXBlZGVmIEpTQzo6U291cmNlRWxlbWVudHMqIFNvdXJjZUVsZW1lbnRz
OwogICAgIHR5cGVkZWYgQXJndW1lbnRzTm9kZSogQXJndW1lbnRzOwpAQCAtMTA5LDcgKzEwNyw3
IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIFRlbXBsYXRlU3RyaW5nTGlzdE5vZGUqIFRlbXBsYXRl
U3RyaW5nTGlzdDsKICAgICB0eXBlZGVmIFRlbXBsYXRlTGl0ZXJhbE5vZGUqIFRlbXBsYXRlTGl0
ZXJhbDsKICNlbmRpZgotICAgIHR5cGVkZWYgUGFyYW1ldGVyTm9kZSogRm9ybWFsUGFyYW1ldGVy
TGlzdDsKKyAgICB0eXBlZGVmIEZ1bmN0aW9uUGFyYW1ldGVycyogRm9ybWFsUGFyYW1ldGVyTGlz
dDsKICAgICB0eXBlZGVmIEZ1bmN0aW9uQm9keU5vZGUqIEZ1bmN0aW9uQm9keTsKICNpZiBFTkFC
TEUoRVM2X0NMQVNTX1NZTlRBWCkKICAgICB0eXBlZGVmIENsYXNzRXhwck5vZGUqIENsYXNzRXhw
cmVzc2lvbjsKQEAgLTExOSwxMCArMTE3LDEwIEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIENhc2VD
bGF1c2VOb2RlKiBDbGF1c2U7CiAgICAgdHlwZWRlZiBDb25zdERlY2xOb2RlKiBDb25zdERlY2xM
aXN0OwogICAgIHR5cGVkZWYgc3RkOjpwYWlyPEV4cHJlc3Npb25Ob2RlKiwgQmluYXJ5T3BJbmZv
PiBCaW5hcnlPcGVyYW5kOwotICAgIHR5cGVkZWYgUmVmUHRyPERlc3RydWN0dXJpbmdQYXR0ZXJu
Tm9kZT4gRGVzdHJ1Y3R1cmluZ1BhdHRlcm47Ci0gICAgdHlwZWRlZiBSZWZQdHI8QXJyYXlQYXR0
ZXJuTm9kZT4gQXJyYXlQYXR0ZXJuOwotICAgIHR5cGVkZWYgUmVmUHRyPE9iamVjdFBhdHRlcm5O
b2RlPiBPYmplY3RQYXR0ZXJuOwotICAgIHR5cGVkZWYgUmVmUHRyPEJpbmRpbmdOb2RlPiBCaW5k
aW5nUGF0dGVybjsKKyAgICB0eXBlZGVmIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogRGVzdHJ1
Y3R1cmluZ1BhdHRlcm47CisgICAgdHlwZWRlZiBBcnJheVBhdHRlcm5Ob2RlKiBBcnJheVBhdHRl
cm47CisgICAgdHlwZWRlZiBPYmplY3RQYXR0ZXJuTm9kZSogT2JqZWN0UGF0dGVybjsKKyAgICB0
eXBlZGVmIEJpbmRpbmdOb2RlKiBCaW5kaW5nUGF0dGVybjsKICAgICBzdGF0aWMgY29uc3QgYm9v
bCBDcmVhdGVzQVNUID0gdHJ1ZTsKICAgICBzdGF0aWMgY29uc3QgYm9vbCBOZWVkc0ZyZWVWYXJp
YWJsZUluZm8gPSB0cnVlOwogICAgIHN0YXRpYyBjb25zdCBib29sIENhblVzZUZ1bmN0aW9uQ2Fj
aGUgPSB0cnVlOwpAQCAtMzQ3LDcgKzM0NSw3IEBAIHB1YmxpYzoKICAgICBFeHByZXNzaW9uTm9k
ZSogY3JlYXRlRnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNv
bnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgaW5mbykKICAgICB7CiAgICAgICAg
IEZ1bmNFeHByTm9kZSogcmVzdWx0ID0gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5jRXhwck5vZGUo
bG9jYXRpb24sICppbmZvLm5hbWUsIGluZm8uYm9keSwKLSAgICAgICAgICAgIG1fc291cmNlQ29k
ZS0+c3ViRXhwcmVzc2lvbihpbmZvLnN0YXJ0RnVuY3Rpb25PZmZzZXQsIGluZm8uZW5kRnVuY3Rp
b25PZmZzZXQsIGluZm8uYm9keVN0YXJ0TGluZSwgaW5mby5ib2R5U3RhcnRDb2x1bW4pLCBpbmZv
LnBhcmFtZXRlcnMpOworICAgICAgICAgICAgbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKGlu
Zm8uc3RhcnRGdW5jdGlvbk9mZnNldCwgaW5mby5lbmRGdW5jdGlvbk9mZnNldCwgaW5mby5ib2R5
U3RhcnRMaW5lLCBpbmZvLmJvZHlTdGFydENvbHVtbikpOwogICAgICAgICBpbmZvLmJvZHktPnNl
dExvYyhpbmZvLmJvZHlTdGFydExpbmUsIGluZm8uYm9keUVuZExpbmUsIGxvY2F0aW9uLnN0YXJ0
T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOwogICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgIH0KQEAgLTM1NiwyMiArMzU0LDIzIEBAIHB1YmxpYzoKICAgICAgICAgY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExv
Y2F0aW9uLCAKICAgICAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVt
biwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCAKICAgICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0
YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBib29sIGluU3RyaWN0Q29udGV4dCwgCi0gICAgICAg
IENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQpCisgICAgICAgIENvbnN0cnVjdG9yS2lu
ZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBGdW5jdGlvblBhcnNl
TW9kZSBtb2RlKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgRnVu
Y3Rpb25Cb2R5Tm9kZSgKICAgICAgICAgICAgIG1fcGFyc2VyQXJlbmEsIHN0YXJ0TG9jYXRpb24s
IGVuZExvY2F0aW9uLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCAKICAgICAgICAgICAgIGZ1bmN0
aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCAKLSAg
ICAgICAgICAgIGluU3RyaWN0Q29udGV4dCwgY29uc3RydWN0b3JLaW5kKTsKKyAgICAgICAgICAg
IGluU3RyaWN0Q29udGV4dCwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgbW9kZSk7
CiAgICAgfQogCiAjaWYgRU5BQkxFKEVTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCkKICAgICBFeHBy
ZXNzaW9uTm9kZSogY3JlYXRlQXJyb3dGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+JiBpbmZvKQog
ICAgIHsKLSAgICAgICAgU291cmNlQ29kZSBzb3VyY2UgPSBpbmZvLmZ1bmN0aW9uQm9keVR5cGUg
PT0gQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uCi0gICAgICAgICAgICA/IG1fc291cmNlQ29k
ZS0+c3ViQXJyb3dFeHByZXNzaW9uKGluZm8uYXJyb3dGdW5jdGlvbk9mZnNldCwgaW5mby5lbmRG
dW5jdGlvbk9mZnNldCwgaW5mby5ib2R5U3RhcnRMaW5lLCBpbmZvLmJvZHlTdGFydENvbHVtbikK
LSAgICAgICAgICAgIDogbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKGluZm8uc3RhcnRGdW5j
dGlvbk9mZnNldCwgaW5mby5lbmRGdW5jdGlvbk9mZnNldCwgaW5mby5ib2R5U3RhcnRMaW5lLCBp
bmZvLmJvZHlTdGFydENvbHVtbik7CisgICAgICAgIC8vU291cmNlQ29kZSBzb3VyY2UgPSBpbmZv
LmZ1bmN0aW9uQm9keVR5cGUgPT0gQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uCisgICAgICAg
IC8vICAgID8gbV9zb3VyY2VDb2RlLT5zdWJBcnJvd0V4cHJlc3Npb24oaW5mby5hcnJvd0Z1bmN0
aW9uT2Zmc2V0LCBpbmZvLmVuZEZ1bmN0aW9uT2Zmc2V0LCBpbmZvLmJvZHlTdGFydExpbmUsIGlu
Zm8uYm9keVN0YXJ0Q29sdW1uKQorICAgICAgICAvLyAgICA6IG1fc291cmNlQ29kZS0+c3ViRXhw
cmVzc2lvbihpbmZvLnN0YXJ0RnVuY3Rpb25PZmZzZXQsIGluZm8uZW5kRnVuY3Rpb25PZmZzZXQs
IGluZm8uYm9keVN0YXJ0TGluZSwgaW5mby5ib2R5U3RhcnRDb2x1bW4pOworICAgICAgICBTb3Vy
Y2VDb2RlIHNvdXJjZSA9IG1fc291cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihpbmZvLnN0YXJ0RnVu
Y3Rpb25PZmZzZXQsIGluZm8uZW5kRnVuY3Rpb25PZmZzZXQsIGluZm8uYm9keVN0YXJ0TGluZSwg
aW5mby5ib2R5U3RhcnRDb2x1bW4pOwogCi0gICAgICAgIEZ1bmNFeHByTm9kZSogcmVzdWx0ID0g
bmV3IChtX3BhcnNlckFyZW5hKSBGdW5jRXhwck5vZGUobG9jYXRpb24sICppbmZvLm5hbWUsIGlu
Zm8uYm9keSwgc291cmNlLCBpbmZvLnBhcmFtZXRlcnMpOworICAgICAgICBGdW5jRXhwck5vZGUq
IHJlc3VsdCA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRnVuY0V4cHJOb2RlKGxvY2F0aW9uLCAqaW5m
by5uYW1lLCBpbmZvLmJvZHksIHNvdXJjZSk7CiAgICAgICAgIGluZm8uYm9keS0+c2V0TG9jKGlu
Zm8uYm9keVN0YXJ0TGluZSwgaW5mby5ib2R5RW5kTGluZSwgbG9jYXRpb24uc3RhcnRPZmZzZXQs
IGxvY2F0aW9uLmxpbmVTdGFydE9mZnNldCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
fQpAQCAtMzg0LDcgKzM4Myw3IEBAIHB1YmxpYzoKICAgICAgICAgaW5mby5ib2R5LT5zZXRMb2Mo
aW5mby5ib2R5U3RhcnRMaW5lLCBpbmZvLmJvZHlFbmRMaW5lLCBsb2NhdGlvbi5zdGFydE9mZnNl
dCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKICAgICAgICAgaW5mby5ib2R5LT5zZXRJbmZl
cnJlZE5hbWUoKm5hbWUpOwogICAgICAgICBTb3VyY2VDb2RlIHNvdXJjZSA9IG1fc291cmNlQ29k
ZS0+c3ViRXhwcmVzc2lvbihpbmZvLnN0YXJ0RnVuY3Rpb25PZmZzZXQsIGluZm8uZW5kRnVuY3Rp
b25PZmZzZXQsIGluZm8uYm9keVN0YXJ0TGluZSwgaW5mby5ib2R5U3RhcnRDb2x1bW4pOwotICAg
ICAgICBGdW5jRXhwck5vZGUqIGZ1bmNFeHByID0gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5jRXhw
ck5vZGUobG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyLCBpbmZv
LmJvZHksIHNvdXJjZSwgaW5mby5wYXJhbWV0ZXJzKTsKKyAgICAgICAgRnVuY0V4cHJOb2RlKiBm
dW5jRXhwciA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRnVuY0V4cHJOb2RlKGxvY2F0aW9uLCBtX3Zt
LT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllciwgaW5mby5ib2R5LCBzb3VyY2UpOwogICAg
ICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBQcm9wZXJ0eU5vZGUoKm5hbWUsIGZ1bmNF
eHByLCB0eXBlLCBQcm9wZXJ0eU5vZGU6OlVua25vd24sIHN1cGVyQmluZGluZyk7CiAgICAgfQog
ICAgIApAQCAtMzk0LDcgKzM5Myw3IEBAIHB1YmxpYzoKICAgICAgICAgaW5mby5ib2R5LT5zZXRM
b2MoaW5mby5ib2R5U3RhcnRMaW5lLCBpbmZvLmJvZHlFbmRMaW5lLCBsb2NhdGlvbi5zdGFydE9m
ZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKICAgICAgICAgY29uc3QgSWRlbnRpZmll
ciYgaWRlbnQgPSBwYXJzZXJBcmVuYS5pZGVudGlmaWVyQXJlbmEoKS5tYWtlTnVtZXJpY0lkZW50
aWZpZXIodm0sIG5hbWUpOwogICAgICAgICBTb3VyY2VDb2RlIHNvdXJjZSA9IG1fc291cmNlQ29k
ZS0+c3ViRXhwcmVzc2lvbihpbmZvLnN0YXJ0RnVuY3Rpb25PZmZzZXQsIGluZm8uZW5kRnVuY3Rp
b25PZmZzZXQsIGluZm8uYm9keVN0YXJ0TGluZSwgaW5mby5ib2R5U3RhcnRDb2x1bW4pOwotICAg
ICAgICBGdW5jRXhwck5vZGUqIGZ1bmNFeHByID0gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5jRXhw
ck5vZGUobG9jYXRpb24sIHZtLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllciwgaW5mby5i
b2R5LCBzb3VyY2UsIGluZm8ucGFyYW1ldGVycyk7CisgICAgICAgIEZ1bmNFeHByTm9kZSogZnVu
Y0V4cHIgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIEZ1bmNFeHByTm9kZShsb2NhdGlvbiwgdm0tPnBy
b3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyLCBpbmZvLmJvZHksIHNvdXJjZSk7CiAgICAgICAg
IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFByb3BlcnR5Tm9kZShpZGVudCwgZnVuY0V4cHIs
IHR5cGUsIFByb3BlcnR5Tm9kZTo6VW5rbm93biwgc3VwZXJCaW5kaW5nKTsKICAgICB9CiAKQEAg
LTQyMCw4ICs0MTksOCBAQCBwdWJsaWM6CiAgICAgRWxlbWVudE5vZGUqIGNyZWF0ZUVsZW1lbnRM
aXN0KGludCBlbGlzaW9ucywgRXhwcmVzc2lvbk5vZGUqIGV4cHIpIHsgcmV0dXJuIG5ldyAobV9w
YXJzZXJBcmVuYSkgRWxlbWVudE5vZGUoZWxpc2lvbnMsIGV4cHIpOyB9CiAgICAgRWxlbWVudE5v
ZGUqIGNyZWF0ZUVsZW1lbnRMaXN0KEVsZW1lbnROb2RlKiBlbGVtcywgaW50IGVsaXNpb25zLCBF
eHByZXNzaW9uTm9kZSogZXhwcikgeyByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBFbGVtZW50
Tm9kZShlbGVtcywgZWxpc2lvbnMsIGV4cHIpOyB9CiAKLSAgICBQYXJhbWV0ZXJOb2RlKiBjcmVh
dGVGb3JtYWxQYXJhbWV0ZXJMaXN0KERlc3RydWN0dXJpbmdQYXR0ZXJuIHBhdHRlcm4pIHsgcmV0
dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgUGFyYW1ldGVyTm9kZShwYXR0ZXJuKTsgfQotICAgIFBh
cmFtZXRlck5vZGUqIGNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QoUGFyYW1ldGVyTm9kZSogbGlz
dCwgRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gcGF0dGVybikgeyByZXR1cm4gbmV3IChtX3BhcnNlckFy
ZW5hKSBQYXJhbWV0ZXJOb2RlKGxpc3QsIHBhdHRlcm4pOyB9CisgICAgRm9ybWFsUGFyYW1ldGVy
TGlzdCBjcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KCkgeyByZXR1cm4gbmV3IChtX3BhcnNlckFy
ZW5hKSBGdW5jdGlvblBhcmFtZXRlcnMoKTsgfQorICAgIHZvaWQgYXBwZW5kUGFyYW1ldGVyKEZv
cm1hbFBhcmFtZXRlckxpc3QgbGlzdCwgRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gcGF0dGVybikgeyBs
aXN0LT5hcHBlbmQocGF0dGVybik7IH0KIAogICAgIENhc2VDbGF1c2VOb2RlKiBjcmVhdGVDbGF1
c2UoRXhwcmVzc2lvbk5vZGUqIGV4cHIsIEpTQzo6U291cmNlRWxlbWVudHMqIHN0YXRlbWVudHMp
IHsgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgQ2FzZUNsYXVzZU5vZGUoZXhwciwgc3RhdGVt
ZW50cyk7IH0KICAgICBDbGF1c2VMaXN0Tm9kZSogY3JlYXRlQ2xhdXNlTGlzdChDYXNlQ2xhdXNl
Tm9kZSogY2xhdXNlKSB7IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIENsYXVzZUxpc3ROb2Rl
KGNsYXVzZSk7IH0KQEAgLTQzMCw3ICs0MjksNyBAQCBwdWJsaWM6CiAgICAgU3RhdGVtZW50Tm9k
ZSogY3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+JiBpbmZvKQogICAgIHsKICAg
ICAgICAgRnVuY0RlY2xOb2RlKiBkZWNsID0gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5jRGVjbE5v
ZGUobG9jYXRpb24sICppbmZvLm5hbWUsIGluZm8uYm9keSwKLSAgICAgICAgICAgIG1fc291cmNl
Q29kZS0+c3ViRXhwcmVzc2lvbihpbmZvLnN0YXJ0RnVuY3Rpb25PZmZzZXQsIGluZm8uZW5kRnVu
Y3Rpb25PZmZzZXQsIGluZm8uYm9keVN0YXJ0TGluZSwgaW5mby5ib2R5U3RhcnRDb2x1bW4pLCBp
bmZvLnBhcmFtZXRlcnMpOworICAgICAgICAgICAgbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9u
KGluZm8uc3RhcnRGdW5jdGlvbk9mZnNldCwgaW5mby5lbmRGdW5jdGlvbk9mZnNldCwgaW5mby5i
b2R5U3RhcnRMaW5lLCBpbmZvLmJvZHlTdGFydENvbHVtbikpOwogICAgICAgICBpZiAoKmluZm8u
bmFtZSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMpCiAgICAgICAgICAgICB1c2Vz
QXJndW1lbnRzKCk7CiAgICAgICAgIG1fc2NvcGUubV9mdW5jRGVjbGFyYXRpb25zLmFwcGVuZChk
ZWNsLT5ib2R5KCkpOwpAQCAtNDg2LDkgKzQ4NSw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CiAgICAgCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRm9ySW5Mb29w
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFBhc3NSZWZQdHI8RGVzdHJ1Y3R1cmlu
Z1BhdHRlcm5Ob2RlPiBwYXR0ZXJuLCBFeHByZXNzaW9uTm9kZSogaXRlciwgU3RhdGVtZW50Tm9k
ZSogc3RhdGVtZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVTdGFydCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGVEaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVFbmQsIGludCBzdGFydCwg
aW50IGVuZCkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVGb3JJbkxvb3AoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBsb2NhdGlvbiwgRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gcGF0dGVybiwgRXhwcmVz
c2lvbk5vZGUqIGl0ZXIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudHMsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBlU3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlRGl2b3QsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBlRW5kLCBpbnQgc3RhcnQsIGludCBlbmQpCiAgICAgewotICAgICAgICBhdXRv
IGxleHByID0gbmV3IChtX3BhcnNlckFyZW5hKSBEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5vZGUo
bG9jYXRpb24sIHBhdHRlcm4uZ2V0KCksIDApOworICAgICAgICBhdXRvIGxleHByID0gbmV3ICht
X3BhcnNlckFyZW5hKSBEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5vZGUobG9jYXRpb24sIHBhdHRl
cm4sIDApOwogICAgICAgICByZXR1cm4gY3JlYXRlRm9ySW5Mb29wKGxvY2F0aW9uLCBsZXhwciwg
aXRlciwgc3RhdGVtZW50cywgZVN0YXJ0LCBlRGl2b3QsIGVFbmQsIHN0YXJ0LCBlbmQpOwogICAg
IH0KICAgICAKQEAgLTUwMCw5ICs0OTksOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQogICAgIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZvck9mTG9vcChjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQYXNzUmVmUHRyPERlc3RydWN0dXJpbmdQYXR0
ZXJuTm9kZT4gcGF0dGVybiwgRXhwcmVzc2lvbk5vZGUqIGl0ZXIsIFN0YXRlbWVudE5vZGUqIHN0
YXRlbWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlU3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBlRGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlRW5kLCBpbnQgc3RhcnQsIGludCBl
bmQpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRm9yT2ZMb29wKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIERlc3RydWN0dXJpbmdQYXR0ZXJuIHBhdHRlcm4sIEV4cHJlc3Npb25O
b2RlKiBpdGVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZVN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZURpdm90LCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZUVuZCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogICAgIHsKLSAgICAgICAgYXV0byBsZXhw
ciA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlKGxvY2F0
aW9uLCBwYXR0ZXJuLmdldCgpLCAwKTsKKyAgICAgICAgYXV0byBsZXhwciA9IG5ldyAobV9wYXJz
ZXJBcmVuYSkgRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlKGxvY2F0aW9uLCBwYXR0ZXJuLCAw
KTsKICAgICAgICAgcmV0dXJuIGNyZWF0ZUZvck9mTG9vcChsb2NhdGlvbiwgbGV4cHIsIGl0ZXIs
IHN0YXRlbWVudHMsIGVTdGFydCwgZURpdm90LCBlRW5kLCBzdGFydCwgZW5kKTsKICAgICB9CiAK
QEAgLTczOCwxNCArNzM3LDE0IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNSZXNvbHZlKEV4cHJl
c3Npb25Ob2RlKiBleHByKSBjb25zdCB7IHJldHVybiBleHByLT5pc1Jlc29sdmVOb2RlKCk7IH0K
IAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVEZXN0cnVjdHVyaW5nQXNzaWdubWVudChjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQYXNzUmVmUHRyPERlc3RydWN0dXJpbmdQYXR0
ZXJuTm9kZT4gcGF0dGVybiwgRXhwcmVzc2lvbk5vZGUqIGluaXRpYWxpemVyKQorICAgIEV4cHJl
c3Npb25Ob2RlKiBjcmVhdGVEZXN0cnVjdHVyaW5nQXNzaWdubWVudChjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBEZXN0cnVjdHVyaW5nUGF0dGVybiBwYXR0ZXJuLCBFeHByZXNzaW9u
Tm9kZSogaW5pdGlhbGl6ZXIpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFy
ZW5hKSBEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5vZGUobG9jYXRpb24sIHBhdHRlcm4uZ2V0KCks
IGluaXRpYWxpemVyKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgRGVzdHJ1
Y3R1cmluZ0Fzc2lnbm1lbnROb2RlKGxvY2F0aW9uLCBwYXR0ZXJuLCBpbml0aWFsaXplcik7CiAg
ICAgfQogICAgIAogICAgIEFycmF5UGF0dGVybiBjcmVhdGVBcnJheVBhdHRlcm4oY29uc3QgSlNU
b2tlbkxvY2F0aW9uJikKICAgICB7Ci0gICAgICAgIHJldHVybiBBcnJheVBhdHRlcm5Ob2RlOjpj
cmVhdGUoKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgQXJyYXlQYXR0ZXJu
Tm9kZSgpOwogICAgIH0KICAgICAKICAgICB2b2lkIGFwcGVuZEFycmF5UGF0dGVyblNraXBFbnRy
eShBcnJheVBhdHRlcm4gbm9kZSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbikKQEAg
LTc1NSwzMiArNzU0LDMyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXBwZW5kQXJyYXlQYXR0ZXJu
RW50cnkoQXJyYXlQYXR0ZXJuIG5vZGUsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IERlc3RydWN0dXJpbmdQYXR0ZXJuIHBhdHRlcm4sIEV4cHJlc3Npb25Ob2RlKiBkZWZhdWx0VmFs
dWUpCiAgICAgewotICAgICAgICBub2RlLT5hcHBlbmRJbmRleChBcnJheVBhdHRlcm5Ob2RlOjpC
aW5kaW5nVHlwZTo6RWxlbWVudCwgbG9jYXRpb24sIHBhdHRlcm4uZ2V0KCksIGRlZmF1bHRWYWx1
ZSk7CisgICAgICAgIG5vZGUtPmFwcGVuZEluZGV4KEFycmF5UGF0dGVybk5vZGU6OkJpbmRpbmdU
eXBlOjpFbGVtZW50LCBsb2NhdGlvbiwgcGF0dGVybiwgZGVmYXVsdFZhbHVlKTsKICAgICB9CiAK
ICAgICB2b2lkIGFwcGVuZEFycmF5UGF0dGVyblJlc3RFbnRyeShBcnJheVBhdHRlcm4gbm9kZSwg
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gcGF0
dGVybikKICAgICB7Ci0gICAgICAgIG5vZGUtPmFwcGVuZEluZGV4KEFycmF5UGF0dGVybk5vZGU6
OkJpbmRpbmdUeXBlOjpSZXN0RWxlbWVudCwgbG9jYXRpb24sIHBhdHRlcm4uZ2V0KCksIG51bGxw
dHIpOworICAgICAgICBub2RlLT5hcHBlbmRJbmRleChBcnJheVBhdHRlcm5Ob2RlOjpCaW5kaW5n
VHlwZTo6UmVzdEVsZW1lbnQsIGxvY2F0aW9uLCBwYXR0ZXJuLCBudWxscHRyKTsKICAgICB9CiAK
ICAgICB2b2lkIGZpbmlzaEFycmF5UGF0dGVybihBcnJheVBhdHRlcm4gbm9kZSwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQogICAgIHsKLSAgICAgICAgc2V0RXhjZXB0aW9u
TG9jYXRpb24obm9kZS5nZXQoKSwgZGl2b3RTdGFydCwgZGl2b3QsIGRpdm90RW5kKTsKKyAgICAg
ICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgZGl2b3RTdGFydCwgZGl2b3QsIGRpdm90RW5k
KTsKICAgICB9CiAgICAgCiAgICAgT2JqZWN0UGF0dGVybiBjcmVhdGVPYmplY3RQYXR0ZXJuKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYpCiAgICAgewotICAgICAgICByZXR1cm4gT2JqZWN0UGF0dGVy
bk5vZGU6OmNyZWF0ZSgpOworICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBPYmpl
Y3RQYXR0ZXJuTm9kZSgpOwogICAgIH0KICAgICAKICAgICB2b2lkIGFwcGVuZE9iamVjdFBhdHRl
cm5FbnRyeShPYmplY3RQYXR0ZXJuIG5vZGUsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIGJvb2wgd2FzU3RyaW5nLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBEZXN0cnVj
dHVyaW5nUGF0dGVybiBwYXR0ZXJuLCBFeHByZXNzaW9uTm9kZSogZGVmYXVsdFZhbHVlKQogICAg
IHsKLSAgICAgICAgbm9kZS0+YXBwZW5kRW50cnkobG9jYXRpb24sIGlkZW50aWZpZXIsIHdhc1N0
cmluZywgcGF0dGVybi5nZXQoKSwgZGVmYXVsdFZhbHVlKTsKKyAgICAgICAgbm9kZS0+YXBwZW5k
RW50cnkobG9jYXRpb24sIGlkZW50aWZpZXIsIHdhc1N0cmluZywgcGF0dGVybiwgZGVmYXVsdFZh
bHVlKTsKICAgICB9CiAgICAgCiAgICAgQmluZGluZ1BhdHRlcm4gY3JlYXRlQmluZGluZ0xvY2F0
aW9uKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImIGJvdW5kUHJvcGVy
dHksIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBzdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVu
ZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBCaW5kaW5nTm9kZTo6Y3JlYXRlKGJvdW5kUHJvcGVy
dHksIHN0YXJ0LCBlbmQpOworICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBCaW5k
aW5nTm9kZShib3VuZFByb3BlcnR5LCBzdGFydCwgZW5kKTsKICAgICB9CiAKICAgICB2b2lkIHNl
dEVuZE9mZnNldChOb2RlKiBub2RlLCBpbnQgb2Zmc2V0KQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9MZXhlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9MZXhlci5jcHAJKHJldmlzaW9uIDE4Njc5OCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OTQsNyArNDk0LDcg
QEAgc3RhdGljIGNvbnN0IExDaGFyIHNpbmdsZUNoYXJhY3RlckVzY2FwZQogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KIExleGVyPFQ+OjpMZXhlcihWTSogdm0sIEpTUGFyc2VyQnVpbHRpbk1vZGUg
YnVpbHRpbk1vZGUpCi0gICAgOiBtX2lzUmVwYXJzaW5nKGZhbHNlKQorICAgIDogbV9pc1JlcGFy
c2luZ0Z1bmN0aW9uKGZhbHNlKQogICAgICwgbV92bSh2bSkKICAgICAsIG1fcGFyc2luZ0J1aWx0
aW5GdW5jdGlvbihidWlsdGluTW9kZSA9PSBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpCdWlsdGluKQog
ewpAQCAtMjQxMSw3ICsyNDExLDcgQEAgdm9pZCBMZXhlcjxUPjo6Y2xlYXIoKQogICAgIFZlY3Rv
cjxVQ2hhcj4gbmV3QnVmZmVyRm9yUmF3VGVtcGxhdGVTdHJpbmcxNjsKICAgICBtX2J1ZmZlckZv
clJhd1RlbXBsYXRlU3RyaW5nMTYuc3dhcChuZXdCdWZmZXJGb3JSYXdUZW1wbGF0ZVN0cmluZzE2
KTsKIAotICAgIG1faXNSZXBhcnNpbmcgPSBmYWxzZTsKKyAgICBtX2lzUmVwYXJzaW5nRnVuY3Rp
b24gPSBmYWxzZTsKIH0KIAogLy8gSW5zdGFudGlhdGUgdGhlIHR3byBmbGF2b3JzIG9mIExleGVy
IHdlIG5lZWQgaW5zdGVhZCBvZiBwdXR0aW5nIG1vc3Qgb2YgdGhpcyBmaWxlIGluIExleGVyLmgK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgJKHJldmlzaW9uIDE4Njc5OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtODQsOCArODQsOCBAQCBwdWJsaWM6CiAKICAgICAvLyBGdW5jdGlvbnMgdG8gc2V0IHVwIHBh
cnNpbmcuCiAgICAgdm9pZCBzZXRDb2RlKGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJzZXJBcmVuYSop
OwotICAgIHZvaWQgc2V0SXNSZXBhcnNpbmcoKSB7IG1faXNSZXBhcnNpbmcgPSB0cnVlOyB9Ci0g
ICAgYm9vbCBpc1JlcGFyc2luZygpIGNvbnN0IHsgcmV0dXJuIG1faXNSZXBhcnNpbmc7IH0KKyAg
ICB2b2lkIHNldElzUmVwYXJzaW5nRnVuY3Rpb24oKSB7IG1faXNSZXBhcnNpbmdGdW5jdGlvbiA9
IHRydWU7IH0KKyAgICBib29sIGlzUmVwYXJzaW5nRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBt
X2lzUmVwYXJzaW5nRnVuY3Rpb247IH0KIAogI2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9T
WU5UQVgpCiAgICAgdm9pZCBzZXRUb2tlblBvc2l0aW9uKEpTVG9rZW4qIHRva2VuUmVjb3JkKTsK
QEAgLTIyNCw3ICsyMjQsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IFQqIG1fbGluZVN0YXJ0Owog
ICAgIEpTVGV4dFBvc2l0aW9uIG1fcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZTsKICAgICBKU1Rv
a2VuTG9jYXRpb24gbV9sYXN0VG9ja2VuTG9jYXRpb247Ci0gICAgYm9vbCBtX2lzUmVwYXJzaW5n
OworICAgIGJvb2wgbV9pc1JlcGFyc2luZ0Z1bmN0aW9uOwogICAgIGJvb2wgbV9hdExpbmVTdGFy
dDsKICAgICBib29sIG1fZXJyb3I7CiAgICAgU3RyaW5nIG1fbGV4RXJyb3JNZXNzYWdlOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgJ
KHJldmlzaW9uIDE4Njc5OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNv
bnN0cnVjdG9ycy5oCSh3b3JraW5nIGNvcHkpCkBAIC04MjAsMzQgKzgyMCwyMiBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFBhcmFtZXRlck5vZGU6OlBhcmFt
ZXRlck5vZGUoUGFzc1JlZlB0cjxEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU+IHBhdHRlcm4pCi0g
ICAgICAgIDogbV9wYXR0ZXJuKHBhdHRlcm4pCi0gICAgICAgICwgbV9uZXh0KDApCisgICAgaW5s
aW5lIEZ1bmN0aW9uUGFyYW1ldGVyczo6RnVuY3Rpb25QYXJhbWV0ZXJzKCkKICAgICB7Ci0gICAg
ICAgIEFTU0VSVChtX3BhdHRlcm4pOwogICAgIH0KIAotICAgIGlubGluZSBQYXJhbWV0ZXJOb2Rl
OjpQYXJhbWV0ZXJOb2RlKFBhcmFtZXRlck5vZGUqIHByZXZpb3VzLCBQYXNzUmVmUHRyPERlc3Ry
dWN0dXJpbmdQYXR0ZXJuTm9kZT4gcGF0dGVybikKLSAgICAgICAgOiBtX3BhdHRlcm4ocGF0dGVy
bikKLSAgICAgICAgLCBtX25leHQoMCkKLSAgICB7Ci0gICAgICAgIHByZXZpb3VzLT5tX25leHQg
PSB0aGlzOwotICAgICAgICBBU1NFUlQobV9wYXR0ZXJuKTsKLSAgICAgICAgQVNTRVJUKHByZXZp
b3VzLT5tX3BhdHRlcm4pOwotICAgIH0KLQotICAgIGlubGluZSBGdW5jRXhwck5vZGU6OkZ1bmNF
eHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCwgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgY29uc3QgU291cmNlQ29kZSYgc291cmNl
LCBQYXJhbWV0ZXJOb2RlKiBwYXJhbWV0ZXIpCisgICAgaW5saW5lIEZ1bmNFeHByTm9kZTo6RnVu
Y0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50LCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UpCiAgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9ib2R5
KGJvZHkpCiAgICAgewotICAgICAgICBtX2JvZHktPmZpbmlzaFBhcnNpbmcoc291cmNlLCBwYXJh
bWV0ZXIsIGlkZW50LCBGdW5jdGlvbkV4cHJlc3Npb24pOworICAgICAgICBtX2JvZHktPmZpbmlz
aFBhcnNpbmcoc291cmNlLCBpZGVudCwgRnVuY3Rpb25FeHByZXNzaW9uKTsKICAgICB9CiAKLSAg
ICBpbmxpbmUgRnVuY0RlY2xOb2RlOjpGdW5jRGVjbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEZ1bmN0aW9uQm9keU5vZGUqIGJv
ZHksIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyYW1ldGVyTm9kZSogcGFyYW1ldGVyKQor
ICAgIGlubGluZSBGdW5jRGVjbE5vZGU6OkZ1bmNEZWNsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRnVuY3Rpb25Cb2R5Tm9kZSog
Ym9keSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQogICAgICAgICA6IFN0YXRlbWVudE5vZGUo
bG9jYXRpb24pCiAgICAgICAgICwgbV9ib2R5KGJvZHkpCiAgICAgewotICAgICAgICBtX2JvZHkt
PmZpbmlzaFBhcnNpbmcoc291cmNlLCBwYXJhbWV0ZXIsIGlkZW50LCBGdW5jdGlvbkRlY2xhcmF0
aW9uKTsKKyAgICAgICAgbV9ib2R5LT5maW5pc2hQYXJzaW5nKHNvdXJjZSwgaWRlbnQsIEZ1bmN0
aW9uRGVjbGFyYXRpb24pOwogICAgIH0KIAogI2lmIEVOQUJMRShFUzZfQ0xBU1NfU1lOVEFYKQpA
QCAtOTQzLDI2ICs5MzEsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KICAgICAK
LSAgICBpbmxpbmUgUmVmPEFycmF5UGF0dGVybk5vZGU+IEFycmF5UGF0dGVybk5vZGU6OmNyZWF0
ZSgpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBcnJheVBhdHRlcm5Ob2Rl
KTsKLSAgICB9Ci0gICAgCiAgICAgaW5saW5lIE9iamVjdFBhdHRlcm5Ob2RlOjpPYmplY3RQYXR0
ZXJuTm9kZSgpCiAgICAgICAgIDogRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKCkKICAgICB7CiAg
ICAgfQogICAgIAotICAgIGlubGluZSBSZWY8T2JqZWN0UGF0dGVybk5vZGU+IE9iamVjdFBhdHRl
cm5Ob2RlOjpjcmVhdGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgT2Jq
ZWN0UGF0dGVybk5vZGUpOwotICAgIH0KLQotICAgIGlubGluZSBSZWY8QmluZGluZ05vZGU+IEJp
bmRpbmdOb2RlOjpjcmVhdGUoY29uc3QgSWRlbnRpZmllciYgYm91bmRQcm9wZXJ0eSwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIHN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZW5kKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmluZGluZ05vZGUoYm91bmRQcm9wZXJ0eSwg
c3RhcnQsIGVuZCkpOwotICAgIH0KLSAgICAKICAgICBpbmxpbmUgQmluZGluZ05vZGU6OkJpbmRp
bmdOb2RlKGNvbnN0IElkZW50aWZpZXImIGJvdW5kUHJvcGVydHksIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBzdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVuZCkKICAgICAgICAgOiBEZXN0cnVj
dHVyaW5nUGF0dGVybk5vZGUoKQogICAgICAgICAsIG1fZGl2b3RTdGFydChzdGFydCkKQEAgLTk3
MSw3ICs5NDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogICAgIAotICAgIGlu
bGluZSBEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5vZGU6OkRlc3RydWN0dXJpbmdBc3NpZ25tZW50
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQYXNzUmVmUHRyPERlc3RydWN0
dXJpbmdQYXR0ZXJuTm9kZT4gYmluZGluZ3MsIEV4cHJlc3Npb25Ob2RlKiBpbml0aWFsaXplcikK
KyAgICBpbmxpbmUgRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlOjpEZXN0cnVjdHVyaW5nQXNz
aWdubWVudE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRGVzdHJ1Y3R1cmlu
Z1BhdHRlcm5Ob2RlKiBiaW5kaW5ncywgRXhwcmVzc2lvbk5vZGUqIGluaXRpYWxpemVyKQogICAg
ICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fYmluZGluZ3MoYmlu
ZGluZ3MpCiAgICAgICAgICwgbV9pbml0aWFsaXplcihpbml0aWFsaXplcikKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCShyZXZpc2lvbiAxODY3OTgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE3
LDcgKzExNyw3IEBAIFN0YXRlbWVudE5vZGUqIFNjb3BlTm9kZTo6c2luZ2xlU3RhdGVtZW4KIAog
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb2dyYW1Ob2RlIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAKLVByb2dyYW1Ob2RlOjpQcm9ncmFtTm9kZShQYXJzZXJBcmVu
YSYgcGFyc2VyQXJlbmEsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVu
c2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayYgdmFy
U3RhY2ssIEZ1bmN0aW9uU3RhY2smIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRW
YXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVz
LCBpbnQgbnVtQ29uc3RhbnRzKQorUHJvZ3JhbU5vZGU6OlByb2dyYW1Ob2RlKFBhcnNlckFyZW5h
JiBwYXJzZXJBcmVuYSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5z
aWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrJiB2YXJT
dGFjaywgRnVuY3Rpb25TdGFjayYgZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZh
cmlhYmxlcywgRnVuY3Rpb25QYXJhbWV0ZXJzKiwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBD
b2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCiAgICAgOiBTY29wZU5vZGUo
cGFyc2VyQXJlbmEsIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBzb3VyY2UsIGNoaWxkcmVu
LCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgZmVhdHVyZXMsIG51bUNv
bnN0YW50cykKICAgICAsIG1fc3RhcnRDb2x1bW4oc3RhcnRDb2x1bW4pCiAgICAgLCBtX2VuZENv
bHVtbihlbmRDb2x1bW4pCkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBQcm9ncmFtTm9kZTo6c2V0
Q2xvc2VkVmFyaWFibGVzKFZlYwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
RXZhbE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotRXZhbE5vZGU6OkV2YWxO
b2RlKFBhcnNlckFyZW5hJiBwYXJzZXJBcmVuYSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFy
dExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCwg
dW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrJiB2
YXJTdGFjaywgRnVuY3Rpb25TdGFjayYgZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJl
ZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVy
ZXMsIGludCBudW1Db25zdGFudHMpCitFdmFsTm9kZTo6RXZhbE5vZGUoUGFyc2VyQXJlbmEmIHBh
cnNlckFyZW5hLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVkLCB1bnNpZ25lZCBlbmRDb2x1bW4s
IFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2smIHZhclN0YWNrLCBGdW5jdGlvblN0
YWNrJiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBGdW5jdGlv
blBhcmFtZXRlcnMqLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0
dXJlcywgaW50IG51bUNvbnN0YW50cykKICAgICA6IFNjb3BlTm9kZShwYXJzZXJBcmVuYSwgc3Rh
cnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIHNvdXJjZSwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5j
U3RhY2ssIGNhcHR1cmVkVmFyaWFibGVzLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKQogICAgICwg
bV9lbmRDb2x1bW4oZW5kQ29sdW1uKQogewpAQCAtMTM5LDM5ICsxMzksMTEgQEAgRXZhbE5vZGU6
OkV2YWxOb2RlKFBhcnNlckFyZW5hJiBwYXJzZXJBcgogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gRnVuY3Rpb25Cb2R5Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCi1SZWY8RnVuY3Rpb25QYXJhbWV0ZXJzPiBGdW5jdGlvblBhcmFtZXRlcnM6OmNyZWF0ZShQ
YXJhbWV0ZXJOb2RlKiBmaXJzdFBhcmFtZXRlcikKLXsKLSAgICB1bnNpZ25lZCBwYXJhbWV0ZXJD
b3VudCA9IDA7Ci0gICAgZm9yIChQYXJhbWV0ZXJOb2RlKiBwYXJhbWV0ZXIgPSBmaXJzdFBhcmFt
ZXRlcjsgcGFyYW1ldGVyOyBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXItPm5leHRQYXJhbSgpKQotICAg
ICAgICArK3BhcmFtZXRlckNvdW50OwotCi0gICAgc2l6ZV90IG9iamVjdFNpemUgPSBzaXplb2Yo
RnVuY3Rpb25QYXJhbWV0ZXJzKSAtIHNpemVvZih2b2lkKikgKyBzaXplb2YoRGVzdHJ1Y3R1cmlu
Z1BhdHRlcm5Ob2RlKikgKiBwYXJhbWV0ZXJDb3VudDsKLSAgICB2b2lkKiBzbG90ID0gZmFzdE1h
bGxvYyhvYmplY3RTaXplKTsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyAoc2xvdCkgRnVuY3Rp
b25QYXJhbWV0ZXJzKGZpcnN0UGFyYW1ldGVyLCBwYXJhbWV0ZXJDb3VudCkpOwotfQotCi1GdW5j
dGlvblBhcmFtZXRlcnM6OkZ1bmN0aW9uUGFyYW1ldGVycyhQYXJhbWV0ZXJOb2RlKiBmaXJzdFBh
cmFtZXRlciwgdW5zaWduZWQgc2l6ZSkKLSAgICA6IG1fc2l6ZShzaXplKQotewotICAgIHVuc2ln
bmVkIGkgPSAwOwotICAgIGZvciAoUGFyYW1ldGVyTm9kZSogcGFyYW1ldGVyID0gZmlyc3RQYXJh
bWV0ZXI7IHBhcmFtZXRlcjsgcGFyYW1ldGVyID0gcGFyYW1ldGVyLT5uZXh0UGFyYW0oKSkgewot
ICAgICAgICBhdXRvIHBhdHRlcm4gPSBwYXJhbWV0ZXItPnBhdHRlcm4oKTsKLSAgICAgICAgcGF0
dGVybi0+cmVmKCk7Ci0gICAgICAgIHBhdHRlcm5zKClbaSsrXSA9IHBhdHRlcm47Ci0gICAgfQot
fQotCi1GdW5jdGlvblBhcmFtZXRlcnM6On5GdW5jdGlvblBhcmFtZXRlcnMoKQotewotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3NpemU7ICsraSkKLSAgICAgICAgcGF0dGVybnMoKVtp
XS0+ZGVyZWYoKTsKLX0KLQogRnVuY3Rpb25Cb2R5Tm9kZTo6RnVuY3Rpb25Cb2R5Tm9kZSgKICAg
ICBQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgCiAg
ICAgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5zaWduZWQgc3RhcnRDb2x1
bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgCi0gICAgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBp
bnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsCi0gICAgYm9vbCBpc0lu
U3RyaWN0Q29udGV4dCwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCkKKyAgICBpbnQg
ZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRl
cnNTdGFydCwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgCisgICAgQ29uc3RydWN0b3JLaW5kIGNv
bnN0cnVjdG9yS2luZCwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIEZ1bmN0aW9uUGFyc2VNb2Rl
IG1vZGUpCiAgICAgICAgIDogU3RhdGVtZW50Tm9kZShlbmRMb2NhdGlvbikKICAgICAgICAgLCBt
X3N0YXJ0Q29sdW1uKHN0YXJ0Q29sdW1uKQogICAgICAgICAsIG1fZW5kQ29sdW1uKGVuZENvbHVt
bikKQEAgLTE3OSwxNiArMTUxLDE4IEBAIEZ1bmN0aW9uQm9keU5vZGU6OkZ1bmN0aW9uQm9keU5v
ZGUoCiAgICAgICAgICwgbV9mdW5jdGlvbk5hbWVTdGFydChmdW5jdGlvbk5hbWVTdGFydCkKICAg
ICAgICAgLCBtX3BhcmFtZXRlcnNTdGFydChwYXJhbWV0ZXJzU3RhcnQpCiAgICAgICAgICwgbV9z
dGFydFN0YXJ0T2Zmc2V0KHN0YXJ0TG9jYXRpb24uc3RhcnRPZmZzZXQpCisgICAgICAgICwgbV9w
YXJhbWV0ZXJDb3VudChwYXJhbWV0ZXJDb3VudCkKKyAgICAgICAgLCBtX3BhcnNlTW9kZShtb2Rl
KQogICAgICAgICAsIG1faXNJblN0cmljdENvbnRleHQoaXNJblN0cmljdENvbnRleHQpCiAgICAg
ICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9y
S2luZCkpCisKIHsKICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpOwogfQogCi12b2lkIEZ1bmN0aW9uQm9keU5vZGU6
OmZpbmlzaFBhcnNpbmcoY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJhbWV0ZXJOb2RlKiBm
aXJzdFBhcmFtZXRlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGVudW0gRnVuY3Rpb25Nb2Rl
IGZ1bmN0aW9uTW9kZSkKK3ZvaWQgRnVuY3Rpb25Cb2R5Tm9kZTo6ZmluaXNoUGFyc2luZyhjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBlbnVtIEZ1bmN0
aW9uTW9kZSBmdW5jdGlvbk1vZGUpCiB7CiAgICAgbV9zb3VyY2UgPSBzb3VyY2U7Ci0gICAgbV9w
YXJhbWV0ZXJzID0gRnVuY3Rpb25QYXJhbWV0ZXJzOjpjcmVhdGUoZmlyc3RQYXJhbWV0ZXIpOwog
ICAgIG1faWRlbnQgPSBpZGVudDsKICAgICBtX2Z1bmN0aW9uTW9kZSA9IGZ1bmN0aW9uTW9kZTsK
IH0KQEAgLTIwMSwxNyArMTc1LDE3IEBAIHZvaWQgRnVuY3Rpb25Cb2R5Tm9kZTo6c2V0RW5kUG9z
aXRpb24oSlMKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9uTm9k
ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1GdW5jdGlvbk5vZGU6OkZ1bmN0aW9u
Tm9kZShQYXJzZXJBcmVuYSYgcGFyc2VyQXJlbmEsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3Rh
cnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5zaWduZWQg
c3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVu
LCBWYXJTdGFjayYgdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2smIGZ1bmNTdGFjaywgSWRlbnRpZmll
clNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIENv
ZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKK0Z1bmN0aW9uTm9kZTo6RnVu
Y3Rpb25Ob2RlKFBhcnNlckFyZW5hJiBwYXJzZXJBcmVuYSwgY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNp
Z25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyogY2hp
bGRyZW4sIFZhclN0YWNrJiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayYgZnVuY1N0YWNrLCBJZGVu
dGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0
ZXJzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMs
IGludCBudW1Db25zdGFudHMpCiAgICAgOiBTY29wZU5vZGUocGFyc2VyQXJlbmEsIHN0YXJ0TG9j
YXRpb24sIGVuZExvY2F0aW9uLCBzb3VyY2VDb2RlLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNT
dGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpCisgICAgLCBt
X3BhcmFtZXRlcnMocGFyYW1ldGVycykKICAgICAsIG1fc3RhcnRDb2x1bW4oc3RhcnRDb2x1bW4p
CiAgICAgLCBtX2VuZENvbHVtbihlbmRDb2x1bW4pCiB7CiB9CiAKLXZvaWQgRnVuY3Rpb25Ob2Rl
OjpmaW5pc2hQYXJzaW5nKFBhc3NSZWZQdHI8RnVuY3Rpb25QYXJhbWV0ZXJzPiBwYXJhbWV0ZXJz
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgZW51bSBGdW5jdGlvbk1vZGUgZnVuY3Rpb25Nb2Rl
KQordm9pZCBGdW5jdGlvbk5vZGU6OmZpbmlzaFBhcnNpbmcoY29uc3QgSWRlbnRpZmllciYgaWRl
bnQsIGVudW0gRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSkKIHsKICAgICBBU1NFUlQoIXNvdXJj
ZSgpLmlzTnVsbCgpKTsKLSAgICBtX3BhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzOwogICAgIG1faWRl
bnQgPSBpZGVudDsKICAgICBtX2Z1bmN0aW9uTW9kZSA9IGZ1bmN0aW9uTW9kZTsKIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgJKHJldmlzaW9uIDE4Njc5OCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDEs
NiArNDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBBcmd1bWVudExpc3ROb2RlOwog
ICAgIGNsYXNzIEJ5dGVjb2RlR2VuZXJhdG9yOwogICAgIGNsYXNzIEZ1bmN0aW9uQm9keU5vZGU7
CisgICAgY2xhc3MgRnVuY3Rpb25QYXJhbWV0ZXJzOwogICAgIGNsYXNzIExhYmVsOwogICAgIGNs
YXNzIFByb3BlcnR5TGlzdE5vZGU7CiAgICAgY2xhc3MgUmVhZE1vZGlmeVJlc29sdmVOb2RlOwpA
QCAtMTUxNiwxOSArMTUxNyw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTdGF0ZW1lbnRO
b2RlKiBtX2ZpbmFsbHlCbG9jazsKICAgICB9OwogCi0gICAgY2xhc3MgUGFyYW1ldGVyTm9kZSA6
IHB1YmxpYyBQYXJzZXJBcmVuYURlbGV0YWJsZSB7Ci0gICAgcHVibGljOgotICAgICAgICBQYXJh
bWV0ZXJOb2RlKFBhc3NSZWZQdHI8RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlPik7Ci0gICAgICAg
IFBhcmFtZXRlck5vZGUoUGFyYW1ldGVyTm9kZSosIFBhc3NSZWZQdHI8RGVzdHJ1Y3R1cmluZ1Bh
dHRlcm5Ob2RlPik7Ci0KLSAgICAgICAgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiBwYXR0ZXJu
KCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuLmdldCgpOyB9Ci0gICAgICAgIFBhcmFtZXRlck5v
ZGUqIG5leHRQYXJhbSgpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dDsgfQotCi0gICAgcHJpdmF0ZToK
LSAgICAgICAgUmVmUHRyPERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZT4gbV9wYXR0ZXJuOwotICAg
ICAgICBQYXJhbWV0ZXJOb2RlKiBtX25leHQ7Ci0gICAgfTsKLQogICAgIGNsYXNzIFNjb3BlTm9k
ZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlLCBwdWJsaWMgUGFyc2VyQXJlbmFSb290IHsKICAgICBw
dWJsaWM6CiAgICAgICAgIHR5cGVkZWYgRGVjbGFyYXRpb25TdGFja3M6OlZhclN0YWNrIFZhclN0
YWNrOwpAQCAtMTU5OCw3ICsxNTg2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBQ
cm9ncmFtTm9kZSA6IHB1YmxpYyBTY29wZU5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgUHJv
Z3JhbU5vZGUoUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVu
ZENvbHVtbiwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayYsIEZ1bmN0aW9uU3RhY2smLCBJZGVu
dGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0
YW50cyk7CisgICAgICAgIFByb2dyYW1Ob2RlKFBhcnNlckFyZW5hJiwgY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIHVuc2lnbmVkIHN0YXJ0
Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2smLCBG
dW5jdGlvblN0YWNrJiwgSWRlbnRpZmllclNldCYsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGNvbnN0
IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOwogCiAgICAgICAg
IHVuc2lnbmVkIHN0YXJ0Q29sdW1uKCkgY29uc3QgeyByZXR1cm4gbV9zdGFydENvbHVtbjsgfQog
ICAgICAgICB1bnNpZ25lZCBlbmRDb2x1bW4oKSBjb25zdCB7IHJldHVybiBtX2VuZENvbHVtbjsg
fQpAQCAtMTYxNyw3ICsxNjA1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBFdmFs
Tm9kZSA6IHB1YmxpYyBTY29wZU5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRXZhbE5vZGUo
UGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGVuZCwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwg
U291cmNlRWxlbWVudHMqLCBWYXJTdGFjayYsIEZ1bmN0aW9uU3RhY2smLCBJZGVudGlmaWVyU2V0
JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7Cisg
ICAgICAgIEV2YWxOb2RlKFBhcnNlckFyZW5hJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFy
dCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNp
Z25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2smLCBGdW5jdGlvblN0YWNr
JiwgSWRlbnRpZmllclNldCYsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGNvbnN0IFNvdXJjZUNvZGUm
LCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOwogCiAgICAgICAgIEFMV0FZU19JTkxJ
TkUgdW5zaWduZWQgc3RhcnRDb2x1bW4oKSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAgICAgIHVu
c2lnbmVkIGVuZENvbHVtbigpIGNvbnN0IHsgcmV0dXJuIG1fZW5kQ29sdW1uOyB9CkBAIC0xNjMw
LDIzICsxNjE4LDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1bnNpZ25lZCBtX2VuZENv
bHVtbjsKICAgICB9OwogCi0gICAgY2xhc3MgRnVuY3Rpb25QYXJhbWV0ZXJzIDogcHVibGljIFJl
ZkNvdW50ZWQ8RnVuY3Rpb25QYXJhbWV0ZXJzPiB7Ci0gICAgICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwotICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGdW5jdGlvblBhcmFtZXRlcnMp
OworICAgIGNsYXNzIEZ1bmN0aW9uUGFyYW1ldGVycyA6IHB1YmxpYyBQYXJzZXJBcmVuYUZyZWVh
YmxlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBSZWY8RnVuY3Rpb25QYXJhbWV0ZXJz
PiBjcmVhdGUoUGFyYW1ldGVyTm9kZSopOwotICAgICAgICB+RnVuY3Rpb25QYXJhbWV0ZXJzKCk7
Ci0KLSAgICAgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQotICAg
ICAgICBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUqIGF0KHVuc2lnbmVkIGluZGV4KSB7IEFTU0VS
VChpbmRleCA8IG1fc2l6ZSk7IHJldHVybiBwYXR0ZXJucygpW2luZGV4XTsgfQorICAgICAgICBG
dW5jdGlvblBhcmFtZXRlcnMoKTsKKyAgICAgICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBzaXpl
KCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJucy5zaXplKCk7IH0KKyAgICAgICAgQUxXQVlTX0lO
TElORSBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUqIGF0KHVuc2lnbmVkIGluZGV4KSB7IHJldHVy
biBtX3BhdHRlcm5zW2luZGV4XTsgfQorICAgICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgYXBwZW5k
KERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogcGF0dGVybikgeyBBU1NFUlQocGF0dGVybik7IG1f
cGF0dGVybnMuYXBwZW5kKHBhdHRlcm4pOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBGdW5j
dGlvblBhcmFtZXRlcnMoUGFyYW1ldGVyTm9kZSosIHVuc2lnbmVkIHNpemUpOwotCi0gICAgICAg
IERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSoqIHBhdHRlcm5zKCkgeyByZXR1cm4gJm1fc3RvcmFn
ZTsgfQogCi0gICAgICAgIHVuc2lnbmVkIG1fc2l6ZTsKLSAgICAgICAgRGVzdHJ1Y3R1cmluZ1Bh
dHRlcm5Ob2RlKiBtX3N0b3JhZ2U7CisgICAgICAgIFZlY3RvcjxEZXN0cnVjdHVyaW5nUGF0dGVy
bk5vZGUqLCAzPiBtX3BhdHRlcm5zOwogICAgIH07CiAKICAgICBjbGFzcyBGdW5jdGlvbkJvZHlO
b2RlIGZpbmFsIDogcHVibGljIFN0YXRlbWVudE5vZGUsIHB1YmxpYyBQYXJzZXJBcmVuYURlbGV0
YWJsZSB7CkBAIC0xNjU3LDEzICsxNjM4LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAg
ICAgUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGVuZCwgCiAgICAgICAgICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5z
aWduZWQgZW5kQ29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIAogICAgICAgICAgICAg
aW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBib29sIGlzSW5TdHJp
Y3RDb250ZXh0LCAKLSAgICAgICAgICAgIENvbnN0cnVjdG9yS2luZCk7Ci0KLSAgICAgICAgRnVu
Y3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJz
LmdldCgpOyB9CisgICAgICAgICAgICBDb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkLCBGdW5jdGlv
blBhcnNlTW9kZSk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CiAKLSAgICAgICAgdm9pZCBm
aW5pc2hQYXJzaW5nKGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJhbWV0ZXJOb2RlKiwgY29uc3QgSWRl
bnRpZmllciYsIEZ1bmN0aW9uTW9kZSk7CisgICAgICAgIHZvaWQgZmluaXNoUGFyc2luZyhjb25z
dCBTb3VyY2VDb2RlJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uTW9kZSk7CiAgICAgICAg
IAogICAgICAgICB2b2lkIG92ZXJyaWRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgeyBt
X2lkZW50ID0gaWRlbnQ7IH0KICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQoKSB7IHJl
dHVybiBtX2lkZW50OyB9CkBAIC0xNjc3LDYgKzE2NTYsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgaW50IHBhcmFtZXRlcnNTdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVyc1N0
YXJ0OyB9CiAgICAgICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uKCkgY29uc3QgeyByZXR1cm4gbV9z
dGFydENvbHVtbjsgfQogICAgICAgICB1bnNpZ25lZCBlbmRDb2x1bW4oKSBjb25zdCB7IHJldHVy
biBtX2VuZENvbHVtbjsgfQorICAgICAgICB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCgpIGNvbnN0
IHsgcmV0dXJuIG1fcGFyYW1ldGVyQ291bnQ7IH0KKyAgICAgICAgRnVuY3Rpb25QYXJzZU1vZGUg
cGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZU1vZGU7IH0KIAogICAgICAgICB2b2lk
IHNldEVuZFBvc2l0aW9uKEpTVGV4dFBvc2l0aW9uKTsKIApAQCAtMTY5MCw3ICsxNjcxLDYgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIElkZW50aWZpZXIgbV9pZGVudDsKICAgICAgICAgSWRl
bnRpZmllciBtX2luZmVycmVkTmFtZTsKICAgICAgICAgRnVuY3Rpb25Nb2RlIG1fZnVuY3Rpb25N
b2RlOwotICAgICAgICBSZWZQdHI8RnVuY3Rpb25QYXJhbWV0ZXJzPiBtX3BhcmFtZXRlcnM7CiAg
ICAgICAgIHVuc2lnbmVkIG1fc3RhcnRDb2x1bW47CiAgICAgICAgIHVuc2lnbmVkIG1fZW5kQ29s
dW1uOwogICAgICAgICBpbnQgbV9mdW5jdGlvbktleXdvcmRTdGFydDsKQEAgLTE2OTgsMTkgKzE2
NzgsMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGludCBtX3BhcmFtZXRlcnNTdGFydDsK
ICAgICAgICAgU291cmNlQ29kZSBtX3NvdXJjZTsKICAgICAgICAgaW50IG1fc3RhcnRTdGFydE9m
ZnNldDsKKyAgICAgICAgdW5zaWduZWQgbV9wYXJhbWV0ZXJDb3VudDsKKyAgICAgICAgRnVuY3Rp
b25QYXJzZU1vZGUgbV9wYXJzZU1vZGU7CiAgICAgICAgIHVuc2lnbmVkIG1faXNJblN0cmljdENv
bnRleHQgOiAxOwogICAgICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CiAgICAg
fTsKIAogICAgIGNsYXNzIEZ1bmN0aW9uTm9kZSBmaW5hbCA6IHB1YmxpYyBTY29wZU5vZGUgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgRnVuY3Rpb25Ob2RlKFBhcnNlckFyZW5hJiwgY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIHVuc2lnbmVk
IHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3Rh
Y2smLCBGdW5jdGlvblN0YWNrJiwgSWRlbnRpZmllclNldCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBD
b2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOworICAgICAgICBGdW5jdGlvbk5vZGUoUGFy
c2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGVuZCwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291
cmNlRWxlbWVudHMqLCBWYXJTdGFjayYsIEZ1bmN0aW9uU3RhY2smLCBJZGVudGlmaWVyU2V0Jiwg
RnVuY3Rpb25QYXJhbWV0ZXJzKiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50
IG51bUNvbnN0YW50cyk7CiAKLSAgICAgICAgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJz
KCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLmdldCgpOyB9CisgICAgICAgIEZ1bmN0aW9u
UGFyYW1ldGVycyogcGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVyczsgfQog
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwogCi0gICAgICAgIHZvaWQgZmluaXNoUGFyc2luZyhQ
YXNzUmVmUHRyPEZ1bmN0aW9uUGFyYW1ldGVycz4sIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlv
bk1vZGUpOworICAgICAgICB2b2lkIGZpbmlzaFBhcnNpbmcoY29uc3QgSWRlbnRpZmllciYsIEZ1
bmN0aW9uTW9kZSk7CiAgICAgICAgIAogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCgp
IHsgcmV0dXJuIG1faWRlbnQ7IH0KIApAQCAtMTcyNCwxNCArMTcwNiwxNCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBwcml2YXRlOgogICAgICAgICBJZGVudGlmaWVyIG1faWRlbnQ7CiAgICAgICAg
IEZ1bmN0aW9uTW9kZSBtX2Z1bmN0aW9uTW9kZTsKLSAgICAgICAgUmVmUHRyPEZ1bmN0aW9uUGFy
YW1ldGVycz4gbV9wYXJhbWV0ZXJzOworICAgICAgICBGdW5jdGlvblBhcmFtZXRlcnMqIG1fcGFy
YW1ldGVyczsKICAgICAgICAgdW5zaWduZWQgbV9zdGFydENvbHVtbjsKICAgICAgICAgdW5zaWdu
ZWQgbV9lbmRDb2x1bW47CiAgICAgfTsKIAogICAgIGNsYXNzIEZ1bmNFeHByTm9kZSA6IHB1Ymxp
YyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBGdW5jRXhwck5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uQm9keU5vZGUq
LCBjb25zdCBTb3VyY2VDb2RlJiwgUGFyYW1ldGVyTm9kZSogPSAwKTsKKyAgICAgICAgRnVuY0V4
cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlv
bkJvZHlOb2RlKiwgY29uc3QgU291cmNlQ29kZSYpOwogCiAgICAgICAgIEZ1bmN0aW9uQm9keU5v
ZGUqIGJvZHkoKSB7IHJldHVybiBtX2JvZHk7IH0KIApAQCAtMTc2MiwxMSArMTc0NCw5IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIH07CiAjZW5kaWYKIAotICAgIGNsYXNzIERlc3RydWN0dXJpbmdQ
YXR0ZXJuTm9kZSA6IHB1YmxpYyBSZWZDb3VudGVkPERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZT4g
ewotICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUp
OwotICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLQorICAgIGNsYXNzIERlc3RydWN0
dXJpbmdQYXR0ZXJuTm9kZSA6IHB1YmxpYyBQYXJzZXJBcmVuYUZyZWVhYmxlIHsKICAgICBwdWJs
aWM6CisgICAgICAgIHZpcnR1YWwgfkRlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSgpIHsgfQogICAg
ICAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdEJvdW5kSWRlbnRpZmllcnMoVmVjdG9yPElkZW50aWZp
ZXI+JikgY29uc3QgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgYmluZFZhbHVlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogc291cmNlKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCB0b1N0cmluZyhTdHJpbmdCdWlsZGVyJikgY29uc3QgPSAwOwpAQCAtMTc3NCwyMSAr
MTc1NCwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCBib29sIGlzQmluZGlu
Z05vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVy
SUQqIGVtaXREaXJlY3RCaW5kaW5nKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCosIEV4
cHJlc3Npb25Ob2RlKikgeyByZXR1cm4gMDsgfQogICAgICAgICAKLSAgICAgICAgdmlydHVhbCB+
RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKCkgPSAwOwotICAgICAgICAKICAgICBwcm90ZWN0ZWQ6
CiAgICAgICAgIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSgpOwogICAgIH07CiAKICAgICBjbGFz
cyBBcnJheVBhdHRlcm5Ob2RlIDogcHVibGljIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSwgcHVi
bGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6CisgICAgICAgIEFycmF5
UGF0dGVybk5vZGUoKTsKICAgICAgICAgZW51bSBjbGFzcyBCaW5kaW5nVHlwZSB7CiAgICAgICAg
ICAgICBFbGlzaW9uLAogICAgICAgICAgICAgRWxlbWVudCwKICAgICAgICAgICAgIFJlc3RFbGVt
ZW50CiAgICAgICAgIH07CiAKLSAgICAgICAgc3RhdGljIFJlZjxBcnJheVBhdHRlcm5Ob2RlPiBj
cmVhdGUoKTsKICAgICAgICAgdm9pZCBhcHBlbmRJbmRleChCaW5kaW5nVHlwZSBiaW5kaW5nVHlw
ZSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiBub2Rl
LCBFeHByZXNzaW9uTm9kZSogZGVmYXVsdFZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBt
X3RhcmdldFBhdHRlcm5zLmFwcGVuZCh7IGJpbmRpbmdUeXBlLCBub2RlLCBkZWZhdWx0VmFsdWUg
fSk7CkBAIC0xNzk3LDEwICsxNzc1LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0ZToK
ICAgICAgICAgc3RydWN0IEVudHJ5IHsKICAgICAgICAgICAgIEJpbmRpbmdUeXBlIGJpbmRpbmdU
eXBlOwotICAgICAgICAgICAgUmVmUHRyPERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZT4gcGF0dGVy
bjsKKyAgICAgICAgICAgIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogcGF0dGVybjsKICAgICAg
ICAgICAgIEV4cHJlc3Npb25Ob2RlKiBkZWZhdWx0VmFsdWU7CiAgICAgICAgIH07Ci0gICAgICAg
IEFycmF5UGF0dGVybk5vZGUoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RCb3VuZElk
ZW50aWZpZXJzKFZlY3RvcjxJZGVudGlmaWVyPiYpIGNvbnN0IG92ZXJyaWRlOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgYmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopIGNv
bnN0IG92ZXJyaWRlOwogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXREaXJlY3RCaW5k
aW5nKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogZHN0LCBFeHByZXNzaW9uTm9kZSop
IG92ZXJyaWRlOwpAQCAtMTgxMSwyMSArMTc4OCwyMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAK
ICAgICBjbGFzcyBPYmplY3RQYXR0ZXJuTm9kZSA6IHB1YmxpYyBEZXN0cnVjdHVyaW5nUGF0dGVy
bk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFJlZjxPYmplY3RQYXR0ZXJuTm9k
ZT4gY3JlYXRlKCk7CisgICAgICAgIE9iamVjdFBhdHRlcm5Ob2RlKCk7CiAgICAgICAgIHZvaWQg
YXBwZW5kRW50cnkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYgaWRl
bnRpZmllciwgYm9vbCB3YXNTdHJpbmcsIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogcGF0dGVy
biwgRXhwcmVzc2lvbk5vZGUqIGRlZmF1bHRWYWx1ZSkKICAgICAgICAgewogICAgICAgICAgICAg
bV90YXJnZXRQYXR0ZXJucy5hcHBlbmQoRW50cnl7IGlkZW50aWZpZXIsIHdhc1N0cmluZywgcGF0
dGVybiwgZGVmYXVsdFZhbHVlIH0pOwogICAgICAgICB9CiAgICAgICAgIAogICAgIHByaXZhdGU6
Ci0gICAgICAgIE9iamVjdFBhdHRlcm5Ob2RlKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjb2xs
ZWN0Qm91bmRJZGVudGlmaWVycyhWZWN0b3I8SWRlbnRpZmllcj4mKSBjb25zdCBvdmVycmlkZTsK
ICAgICAgICAgdmlydHVhbCB2b2lkIGJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqKSBjb25zdCBvdmVycmlkZTsKICAgICAgICAgdmlydHVhbCB2b2lkIHRvU3RyaW5nKFN0
cmluZ0J1aWxkZXImKSBjb25zdCBvdmVycmlkZTsKICAgICAgICAgc3RydWN0IEVudHJ5IHsKICAg
ICAgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lOwogICAgICAgICAgICAgYm9vbCB3YXNT
dHJpbmc7Ci0gICAgICAgICAgICBSZWZQdHI8RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlPiBwYXR0
ZXJuOworICAgICAgICAgICAgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiBwYXR0ZXJuOwogICAg
ICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGRlZmF1bHRWYWx1ZTsKICAgICAgICAgfTsKICAgICAg
ICAgVmVjdG9yPEVudHJ5PiBtX3RhcmdldFBhdHRlcm5zOwpAQCAtMTgzMywxNCArMTgwOSwxMyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEJpbmRpbmdOb2RlIDogcHVibGljIERlc3Ry
dWN0dXJpbmdQYXR0ZXJuTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUmVmPEJp
bmRpbmdOb2RlPiBjcmVhdGUoY29uc3QgSWRlbnRpZmllciYgYm91bmRQcm9wZXJ0eSwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIHN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZW5kKTsKKyAgICAg
ICAgQmluZGluZ05vZGUoY29uc3QgSWRlbnRpZmllciYgYm91bmRQcm9wZXJ0eSwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIHN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZW5kKTsKICAgICAgICAg
Y29uc3QgSWRlbnRpZmllciYgYm91bmRQcm9wZXJ0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRQ
cm9wZXJ0eTsgfQogCiAgICAgICAgIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0KCkg
Y29uc3QgeyByZXR1cm4gbV9kaXZvdFN0YXJ0OyB9CiAgICAgICAgIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdEVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGl2b3RFbmQ7IH0KICAgICAgICAgCiAg
ICAgcHJpdmF0ZToKLSAgICAgICAgQmluZGluZ05vZGUoY29uc3QgSWRlbnRpZmllciYgYm91bmRQ
cm9wZXJ0eSwgY29uc3QgSlNUZXh0UG9zaXRpb24mIHN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZW5kKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdEJvdW5kSWRlbnRpZmllcnMo
VmVjdG9yPElkZW50aWZpZXI+JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBiaW5kVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKikgY29uc3Qgb3ZlcnJp
ZGU7CkBAIC0xODU1LDggKzE4MzAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIERl
c3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGlj
IFBhcnNlckFyZW5hRGVsZXRhYmxlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIERlc3RydWN0dXJp
bmdBc3NpZ25tZW50Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBQYXNzUmVmUHRyPERlc3Ry
dWN0dXJpbmdQYXR0ZXJuTm9kZT4sIEV4cHJlc3Npb25Ob2RlKik7Ci0gICAgICAgIERlc3RydWN0
dXJpbmdQYXR0ZXJuTm9kZSogYmluZGluZ3MoKSB7IHJldHVybiBtX2JpbmRpbmdzLmdldCgpOyB9
CisgICAgICAgIERlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUqLCBFeHByZXNzaW9uTm9kZSopOworICAgICAg
ICBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUqIGJpbmRpbmdzKCkgeyByZXR1cm4gbV9iaW5kaW5n
czsgfQogICAgICAgICAKICAgICAgICAgdXNpbmcgUGFyc2VyQXJlbmFEZWxldGFibGU6Om9wZXJh
dG9yIG5ldzsKIApAQCAtMTg2NSwxMyArMTg0MCwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgdmlydHVhbCBib29sIGlzRGVzdHJ1Y3R1cmluZ05vZGUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKIAotICAgICAgICBS
ZWZQdHI8RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlPiBtX2JpbmRpbmdzOworICAgICAgICBEZXN0
cnVjdHVyaW5nUGF0dGVybk5vZGUqIG1fYmluZGluZ3M7CiAgICAgICAgIEV4cHJlc3Npb25Ob2Rl
KiBtX2luaXRpYWxpemVyOwogICAgIH07CiAKICAgICBjbGFzcyBGdW5jRGVjbE5vZGUgOiBwdWJs
aWMgU3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBGdW5jRGVjbE5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uQm9keU5vZGUq
LCBjb25zdCBTb3VyY2VDb2RlJiwgUGFyYW1ldGVyTm9kZSogPSAwKTsKKyAgICAgICAgRnVuY0Rl
Y2xOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlv
bkJvZHlOb2RlKiwgY29uc3QgU291cmNlQ29kZSYpOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBp
c0Z1bmNEZWNsTm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAg
RnVuY3Rpb25Cb2R5Tm9kZSogYm9keSgpIHsgcmV0dXJuIG1fYm9keTsgfQpAQCAtMTk2NywxMSAr
MTk0Miw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBDb25zdERlY2xOb2RlKiB0YWlsOwog
ICAgIH07CiAKLSAgICBzdHJ1Y3QgUGFyYW1ldGVyTGlzdCB7Ci0gICAgICAgIFBhcmFtZXRlck5v
ZGUqIGhlYWQ7Ci0gICAgICAgIFBhcmFtZXRlck5vZGUqIHRhaWw7Ci0gICAgfTsKLQogICAgIHN0
cnVjdCBDbGF1c2VMaXN0IHsKICAgICAgICAgQ2xhdXNlTGlzdE5vZGUqIGhlYWQ7CiAgICAgICAg
IENsYXVzZUxpc3ROb2RlKiB0YWlsOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmNwcAkocmV2aXNpb24gMTg2Nzk4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTEsOCArMTkxLDcgQEAgdm9pZCBQ
YXJzZXI8TGV4ZXJUeXBlPjo6bG9nRXJyb3IoYm9vbCBzaAogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
TGV4ZXJUeXBlPgogUGFyc2VyPExleGVyVHlwZT46OlBhcnNlcigKLSAgICBWTSogdm0sIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzLCAKLSAg
ICBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2Rl
LCAKKyAgICBWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJCdWlsdGlu
TW9kZSBidWlsdGluTW9kZSwgCiAgICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIEpT
UGFyc2VyQ29kZVR5cGUgY29kZVR5cGUsIAogICAgIENvbnN0cnVjdG9yS2luZCBkZWZhdWx0Q29u
c3RydWN0b3JLaW5kLCBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSkKICAgICA6IG1fdm0odm0pCkBA
IC0yMjMsMzAgKzIyMiw3IEBAIFBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZXIoCiAgICAgICAgIHNj
b3BlLT5zZXRJc0Z1bmN0aW9uKCk7CiAgICAgaWYgKHN0cmljdE1vZGUgPT0gSlNQYXJzZXJTdHJp
Y3RNb2RlOjpTdHJpY3QpCiAgICAgICAgIHNjb3BlLT5zZXRTdHJpY3RNb2RlKCk7Ci0gICAgaWYg
KHBhcmFtZXRlcnMpIHsKLSAgICAgICAgYm9vbCBoYWRCaW5kaW5nUGFyYW1ldGVycyA9IGZhbHNl
OwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFyYW1ldGVycy0+c2l6ZSgpOyBp
KyspIHsKLSAgICAgICAgICAgIGF1dG8gcGFyYW1ldGVyID0gcGFyYW1ldGVycy0+YXQoaSk7Ci0g
ICAgICAgICAgICBpZiAoIXBhcmFtZXRlci0+aXNCaW5kaW5nTm9kZSgpKSB7Ci0gICAgICAgICAg
ICAgICAgaGFkQmluZGluZ1BhcmFtZXRlcnMgPSB0cnVlOwotICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc2NvcGUtPmRlY2xhcmVQYXJhbWV0ZXIo
JnN0YXRpY19jYXN0PEJpbmRpbmdOb2RlKj4ocGFyYW1ldGVyKS0+Ym91bmRQcm9wZXJ0eSgpKTsK
LSAgICAgICAgfQotICAgICAgICBpZiAoaGFkQmluZGluZ1BhcmFtZXRlcnMpIHsKLSAgICAgICAg
ICAgIFZlY3RvcjxJZGVudGlmaWVyPiBib3VuZFBhcmFtZXRlck5hbWVzOwotICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhcmFtZXRlcnMtPnNpemUoKTsgaSsrKSB7Ci0gICAg
ICAgICAgICAgICAgYXV0byBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXJzLT5hdChpKTsKLSAgICAgICAg
ICAgICAgICBpZiAocGFyYW1ldGVyLT5pc0JpbmRpbmdOb2RlKCkpCi0gICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIHBhcmFtZXRlci0+Y29sbGVjdEJvdW5kSWRl
bnRpZmllcnMoYm91bmRQYXJhbWV0ZXJOYW1lcyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBmb3IgKGF1dG8mIGJvdW5kUGFyYW1ldGVyTmFtZSA6IGJvdW5kUGFyYW1ldGVyTmFtZXMpCi0g
ICAgICAgICAgICAgICAgc2NvcGUtPmRlY2xhcmVWYXJpYWJsZSgmYm91bmRQYXJhbWV0ZXJOYW1l
KTsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAoIW5hbWUuaXNOdWxsKCkpCi0gICAgICAgIHNj
b3BlLT5kZWNsYXJlQ2FsbGVlKCZuYW1lKTsKKwogICAgIG5leHQoKTsKIH0KIApAQCAtMjU2LDE2
ICsyMzIsNjQgQEAgUGFyc2VyPExleGVyVHlwZT46On5QYXJzZXIoKQogfQogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgTGV4ZXJUeXBlPgotU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVy
KCkKK1N0cmluZyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcihjb25zdCBJZGVudGlmaWVy
JiBjYWxsZWVOYW1lLCBGdW5jdGlvblBhcnNlTW9kZSBwYXJzZU1vZGUpCiB7CiAgICAgU3RyaW5n
IHBhcnNlRXJyb3IgPSBTdHJpbmcoKTsKICAgICAKICAgICBBU1RCdWlsZGVyIGNvbnRleHQoY29u
c3RfY2FzdDxWTSo+KG1fdm0pLCBtX3BhcnNlckFyZW5hLCBjb25zdF9jYXN0PFNvdXJjZUNvZGUq
PihtX3NvdXJjZSkpOwotICAgIGlmIChtX2xleGVyLT5pc1JlcGFyc2luZygpKQotICAgICAgICBt
X3N0YXRlbWVudERlcHRoLS07CiAgICAgU2NvcGVSZWYgc2NvcGUgPSBjdXJyZW50U2NvcGUoKTsK
LSAgICBTb3VyY2VFbGVtZW50cyogc291cmNlRWxlbWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRz
KGNvbnRleHQsIENoZWNrRm9yU3RyaWN0TW9kZSwgU3RhbmRhcmRGdW5jdGlvblBhcnNlVHlwZSk7
Ci0gICAgaWYgKCFzb3VyY2VFbGVtZW50cyB8fCAhY29uc3VtZShFT0ZUT0spKSB7CisKKyAgICBG
dW5jdGlvblBhcnNlVHlwZSBwYXJzZVR5cGUgPSBTdGFuZGFyZEZ1bmN0aW9uUGFyc2VUeXBlOwor
CisgICAgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA9IGZhbHNlOworICAgIGlm
IChtX2xleGVyLT5pc1JlcGFyc2luZ0Z1bmN0aW9uKCkpIHsKKyAgICAgICAgUGFyc2VyRnVuY3Rp
b25JbmZvPEFTVEJ1aWxkZXI+IGluZm87CisgICAgICAgIHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJz
KGNvbnRleHQsIHBhcnNlTW9kZSwgaW5mbyk7CisjaWYgRU5BQkxFKEVTNl9BUlJPV0ZVTkNUSU9O
X1NZTlRBWCkKKyAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBBcnJvd0Z1bmN0aW9uTW9kZSkgewor
ICAgICAgICAgICAgYXV0byBzYXZlUG9pbnQgPSBjcmVhdGVTYXZlUG9pbnQoKTsKKyAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKG1hdGNoKEFSUk9XRlVOQ1RJT04pKTsKKyAgICAgICAgICAgIG5l
eHQoKTsKKyAgICAgICAgICAgIGlmICghbWF0Y2goT1BFTkJSQUNFKSkgeworICAgICAgICAgICAg
ICAgIHBhcnNlVHlwZSA9IEFycm93RnVuY3Rpb25QYXJzZVR5cGU7CisgICAgICAgICAgICAgICAg
aXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gPSB0cnVlOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgcmVzdG9yZVNhdmVQb2ludChzYXZlUG9pbnQpOworICAgICAgICAgICAgLy8gRm9y
IGFycm93IGZ1bmN0aW9uIGJvZHkgZXhwcmVzc2lvbiwgcGFyc2VTb3VyY2VFbGVtZW50cyBoYW5k
bGVzIHRoZSAnPT4nIHNvIHdlIG11c3QgcmVzdG9yZSB0byB0aGF0IHRva2VuLgorICAgICAgICAg
ICAgLy8gRm9yIGFycm93IGZ1bmN0aW9ucyB3aXRoIGJsb2NrIHN0YXRlbWVudHMgYXMgdGhlIGJv
ZHksIHdlIG11c3Qgc2tpcCBvdmVyIHRoZSAnPT4nIHRva2VuLgorICAgICAgICAgICAgLy8gRklY
TUU6IHRoaXMgaXMgcHJldHR5IHVnbHkgYW5kIHVubmVjZXNzYXJ5LCB3ZSBzaG91bGQgY2hhbmdl
IHRoaXMgYnkgbWFraW5nIDo6cGFyc2VGdW5jdGlvbkJvZHkgbm90IHVuY29uZGl0aW9uYWxseQor
ICAgICAgICAgICAgLy8gY2FsbCBpbnRvIHBhcnNlU291cmNlRWxlbWVudHMgc28gdGhhdCBwYXJz
ZVNvdXJjZUVsZW1lbnRzIGRvZXNuJ3QgY2hlY2sgbWF0Y2goQVJST1dGVU5DVElPTikKKyAgICAg
ICAgICAgIGlmICghaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCisgICAgICAgICAgICAg
ICAgbmV4dCgpOworICAgICAgICB9CisjZW5kaWYKKworICAgICAgICAvLyBXZSByZWFsbHkgc2hv
dWxkbid0IGhhdmUgYSBwYXJzZXIgZXJyb3IgaGVyZS4gSWYgd2Ugc2VlIG9uZSwgd2UgYXNzdW1l
IHdlIHJhbiBvdXQgb2Ygc3RhY2sgc3BhY2UuCisgICAgICAgIGlmIChoYXNFcnJvcigpKQorICAg
ICAgICAgICAgcGFyc2VFcnJvciA9IG1fZXJyb3JNZXNzYWdlOworCisgICAgICAgIG1fcGFyYW1l
dGVycyA9IGluZm8ucGFyYW1ldGVyczsKKyAgICB9CisKKyAgICBpZiAoIWNhbGxlZU5hbWUuaXNO
dWxsKCkpCisgICAgICAgIHNjb3BlLT5kZWNsYXJlQ2FsbGVlKCZjYWxsZWVOYW1lKTsKKworICAg
IGlmIChtX2xleGVyLT5pc1JlcGFyc2luZ0Z1bmN0aW9uKCkpCisgICAgICAgIG1fc3RhdGVtZW50
RGVwdGgtLTsKKworICAgIFNvdXJjZUVsZW1lbnRzKiBzb3VyY2VFbGVtZW50cyA9IHBhcnNlU291
cmNlRWxlbWVudHMoY29udGV4dCwgQ2hlY2tGb3JTdHJpY3RNb2RlLCBwYXJzZVR5cGUpOworCisg
ICAgYm9vbCB2YWxpZEVuZGluZzsKKyAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Np
b24pIHsKKyAgICAgICAgQVNTRVJUKG1fbGV4ZXItPmlzUmVwYXJzaW5nRnVuY3Rpb24oKSk7Cisg
ICAgICAgIC8vIFdoZW4gd2UgcmVwYXJzZSBhbmQgc3RhY2sgb3ZlcmZsb3csIHdlJ3JlIG5vdCBn
dWFyYW50ZWVkIGEgdmFsaWQgZW5kaW5nLiBJZiB3ZSBkb24ndCBydW4gb3V0IG9mIHN0YWNrIHNw
YWNlLAorICAgICAgICAvLyB0aGVuIG9mIGNvdXJzZSB0aGlzIHdpbGwgYWx3YXlzIGJlIHZhbGlk
IGJlY2F1c2Ugd2UgYWxyZWFkeSBwYXJzZWQgZm9yIHN5bnRheCBlcnJvcnMuIEJ1dCB3ZSBtdXN0
CisgICAgICAgIC8vIGJlIGNhdXRpb3VzIGluIGNhc2Ugd2UgcnVuIG91dCBvZiBzdGFjayBzcGFj
ZS4KKyAgICAgICAgdmFsaWRFbmRpbmcgPSBpc0VuZE9mQXJyb3dGdW5jdGlvbigpOyAKKyAgICB9
IGVsc2UKKyAgICAgICAgdmFsaWRFbmRpbmcgPSBjb25zdW1lKEVPRlRPSyk7CisKKyAgICBpZiAo
IXNvdXJjZUVsZW1lbnRzIHx8ICF2YWxpZEVuZGluZykgewogICAgICAgICBpZiAoaGFzRXJyb3Io
KSkKICAgICAgICAgICAgIHBhcnNlRXJyb3IgPSBtX2Vycm9yTWVzc2FnZTsKICAgICAgICAgZWxz
ZQpAQCAtNjM0LDcgKzY1OCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0
YXRlbWUKICAgICAvLyBUaGlzIGNvbmRpdGlvbiBjb25zaWRlcnMgdGhlIGZvbGxvd2luZyBzaXR1
YXRpb25zLgogICAgIC8vICgxKTogSWYgd2UgYXJlIGluIHRoZSByZXBhcnNpbmcgcGhhc2UsIHRo
aXMgYXJyb3cgZnVuY3Rpb24gaXMgYWxyZWFkeSBwYXJzZWQgb25jZSwgc28gdGhlcmUgaXMgbm8g
c3ludGF4IGVycm9yLgogICAgIC8vICgyKTogQnV0IGlmIHdlIGFyZSBub3QgaW4gdGhlIHJlcGFy
c2luZyBwaGFzZSwgd2Ugc2hvdWxkIGNoZWNrIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGluIHRo
ZSBjb250ZXh0IG9mIHRoZSBhcnJvdyBmdW5jdGlvbi4KLSAgICBpZiAoIW1fbGV4ZXItPmlzUmVw
YXJzaW5nKCkgJiYgcGFyc2VUeXBlICE9IEFycm93RnVuY3Rpb25QYXJzZVR5cGUpCisgICAgaWYg
KCFtX2xleGVyLT5pc1JlcGFyc2luZ0Z1bmN0aW9uKCkgJiYgcGFyc2VUeXBlICE9IEFycm93RnVu
Y3Rpb25QYXJzZVR5cGUpCiAgICAgICAgIGZhaWxEdWVUb1VuZXhwZWN0ZWRUb2tlbigpOwogICAg
IAogICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwpAQCAtMTM2
Miw0NiArMTM4Niw0NyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1l
CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVGb3JtYWxQYXJhbWV0ZXJMaXN0IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZUZvcm1hbFBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImIGNvbnRleHQpCit0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRm9ybWFsUGFyYW1ldGVy
cyhUcmVlQnVpbGRlciYgY29udGV4dCwgVHJlZUZvcm1hbFBhcmFtZXRlckxpc3QgbGlzdCwgdW5z
aWduZWQmIHBhcmFtZXRlckNvdW50KQogewogICAgIGF1dG8gcGFyYW1ldGVyID0gcGFyc2VEZXN0
cnVjdHVyaW5nUGF0dGVybihjb250ZXh0LCBEZXN0cnVjdHVyZVRvUGFyYW1ldGVycyk7CiAgICAg
ZmFpbElmRmFsc2UocGFyYW1ldGVyLCAiQ2Fubm90IHBhcnNlIHBhcmFtZXRlciBwYXR0ZXJuIik7
Ci0gICAgVHJlZUZvcm1hbFBhcmFtZXRlckxpc3QgbGlzdCA9IGNvbnRleHQuY3JlYXRlRm9ybWFs
UGFyYW1ldGVyTGlzdChwYXJhbWV0ZXIpOwotICAgIFRyZWVGb3JtYWxQYXJhbWV0ZXJMaXN0IHRh
aWwgPSBsaXN0OworICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKGxpc3QsIHBhcmFtZXRlcik7
CisgICAgcGFyYW1ldGVyQ291bnQrKzsKICAgICB3aGlsZSAoY29uc3VtZShDT01NQSkpIHsKICAg
ICAgICAgcGFyYW1ldGVyID0gcGFyc2VEZXN0cnVjdHVyaW5nUGF0dGVybihjb250ZXh0LCBEZXN0
cnVjdHVyZVRvUGFyYW1ldGVycyk7CiAgICAgICAgIGZhaWxJZkZhbHNlKHBhcmFtZXRlciwgIkNh
bm5vdCBwYXJzZSBwYXJhbWV0ZXIgcGF0dGVybiIpOwotICAgICAgICB0YWlsID0gY29udGV4dC5j
cmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KHRhaWwsIHBhcmFtZXRlcik7CisgICAgICAgIGNvbnRl
eHQuYXBwZW5kUGFyYW1ldGVyKGxpc3QsIHBhcmFtZXRlcik7CisgICAgICAgIHBhcmFtZXRlckNv
dW50Kys7CiAgICAgfQotICAgIHJldHVybiBsaXN0OworICAgIHJldHVybiB0cnVlOwogfQogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlRnVuY3Rpb25Cb2R5IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSgK
LSAgICBUcmVlQnVpbGRlciYgY29udGV4dCwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQg
ZnVuY3Rpb25OYW1lU3RhcnQsIAotICAgIGludCBwYXJhbWV0ZXJzU3RhcnQsIENvbnN0cnVjdG9y
S2luZCBjb25zdHJ1Y3RvcktpbmQsIEZ1bmN0aW9uUGFyc2VUeXBlIHBhcnNlVHlwZSkKKyAgICBU
cmVlQnVpbGRlciYgY29udGV4dCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9u
LCBpbnQgc3RhcnRDb2x1bW4sIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9u
TmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCAKKyAgICBDb25zdHJ1Y3RvcktpbmQgY29u
c3RydWN0b3JLaW5kLCBGdW5jdGlvblBhcnNlVHlwZSBwYXJzZVR5cGUsIHVuc2lnbmVkIHBhcmFt
ZXRlckNvdW50LCBGdW5jdGlvblBhcnNlTW9kZSBwYXJzZU1vZGUpCiB7Ci0gICAgSlNUb2tlbkxv
Y2F0aW9uIHN0YXJ0TG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKLSAgICB1bnNpZ25lZCBzdGFy
dENvbHVtbiA9IHRva2VuQ29sdW1uKCk7CisgICAgLy9KU1Rva2VuTG9jYXRpb24gc3RhcnRMb2Nh
dGlvbih0b2tlbkxvY2F0aW9uKCkpOworICAgIC8vdW5zaWduZWQgc3RhcnRDb2x1bW4gPSB0b2tl
bkNvbHVtbigpOwogCiAgICAgaWYgKHBhcnNlVHlwZSA9PSBTdGFuZGFyZEZ1bmN0aW9uUGFyc2VU
eXBlKSB7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgaWYgKG1hdGNoKENMT1NFQlJBQ0UpKSB7
CiAgICAgICAgICAgICB1bnNpZ25lZCBlbmRDb2x1bW4gPSB0b2tlbkNvbHVtbigpOwotICAgICAg
ICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25Cb2R5KHN0YXJ0TG9jYXRpb24sIHRv
a2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3Rh
cnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29u
c3RydWN0b3JLaW5kKTsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9u
Qm9keShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1
bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0
YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNl
TW9kZSk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBEZXB0aE1hbmFnZXIgc3RhdGVtZW50RGVw
dGgoJm1fc3RhdGVtZW50RGVwdGgpOwogICAgIG1fc3RhdGVtZW50RGVwdGggPSAwOwotICAgIHR5
cGVuYW1lIFRyZWVCdWlsZGVyOjpGdW5jdGlvbkJvZHlCdWlsZGVyIGJvZHlCdWlsZGVyKGNvbnN0
X2Nhc3Q8Vk0qPihtX3ZtKSwgbV9sZXhlci5nZXQoKSk7CisgICAgU3ludGF4Q2hlY2tlciBzeW50
YXhDaGVja2VyKGNvbnN0X2Nhc3Q8Vk0qPihtX3ZtKSwgbV9sZXhlci5nZXQoKSk7CiAjaWYgRU5B
QkxFKEVTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCkKLSAgICBmYWlsSWZGYWxzZShwYXJzZVNvdXJj
ZUVsZW1lbnRzKGJvZHlCdWlsZGVyLCBDaGVja0ZvclN0cmljdE1vZGUsIHBhcnNlVHlwZSksIHBh
cnNlVHlwZSA9PSBTdGFuZGFyZEZ1bmN0aW9uUGFyc2VUeXBlID8gIkNhbm5vdCBwYXJzZSBib2R5
IG9mIHRoaXMgZnVuY3Rpb24iIDogIkNhbm5vdCBwYXJzZSBib2R5IG9mIHRoaXMgYXJyb3cgZnVu
Y3Rpb24iKTsKKyAgICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVsZW1lbnRzKHN5bnRheENoZWNr
ZXIsIENoZWNrRm9yU3RyaWN0TW9kZSwgcGFyc2VUeXBlKSwgcGFyc2VUeXBlID09IFN0YW5kYXJk
RnVuY3Rpb25QYXJzZVR5cGUgPyAiQ2Fubm90IHBhcnNlIGJvZHkgb2YgdGhpcyBmdW5jdGlvbiIg
OiAiQ2Fubm90IHBhcnNlIGJvZHkgb2YgdGhpcyBhcnJvdyBmdW5jdGlvbiIpOwogI2Vsc2UKLSAg
ICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVsZW1lbnRzKGJvZHlCdWlsZGVyLCBDaGVja0ZvclN0
cmljdE1vZGUsIFN0YW5kYXJkRnVuY3Rpb25QYXJzZVR5cGUpLCAiQ2Fubm90IHBhcnNlIGJvZHkg
b2YgdGhpcyBmdW5jdGlvbiIpOworICAgIGZhaWxJZkZhbHNlKHBhcnNlU291cmNlRWxlbWVudHMo
c3ludGF4Q2hlY2tlciwgQ2hlY2tGb3JTdHJpY3RNb2RlLCBTdGFuZGFyZEZ1bmN0aW9uUGFyc2VU
eXBlKSwgIkNhbm5vdCBwYXJzZSBib2R5IG9mIHRoaXMgZnVuY3Rpb24iKTsKICNlbmRpZgogICAg
IHVuc2lnbmVkIGVuZENvbHVtbiA9IHRva2VuQ29sdW1uKCk7Ci0gICAgcmV0dXJuIGNvbnRleHQu
Y3JlYXRlRnVuY3Rpb25Cb2R5KHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRD
b2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0
LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kKTsKKyAgICBy
ZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkJvZHkoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2Nh
dGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVu
Y3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBjb25zdHJ1Y3Rv
cktpbmQsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUpOwogfQogCiBzdGF0aWMgY29uc3QgY2hh
ciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKEZ1bmN0aW9uUGFyc2VNb2RlIG1vZGUpCkBAIC0xNDEx
LDcgKzE0MzYsNyBAQCBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlCiAg
ICAgICAgIHJldHVybiAiZ2V0dGVyIjsKICAgICBjYXNlIFNldHRlck1vZGU6CiAgICAgICAgIHJl
dHVybiAic2V0dGVyIjsKLSAgICBjYXNlIEZ1bmN0aW9uTW9kZToKKyAgICBjYXNlIE5vcm1hbEZ1
bmN0aW9uTW9kZToKICAgICAgICAgcmV0dXJuICJmdW5jdGlvbiI7CiAgICAgY2FzZSBNZXRob2RN
b2RlOgogICAgICAgICByZXR1cm4gIm1ldGhvZCI7CkBAIC0xNDE5LDYgKzE0NDQsOSBAQCBzdGF0
aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlCiAgICAgY2FzZSBBcnJvd0Z1bmN0
aW9uTW9kZToKICAgICAgICAgcmV0dXJuICJhcnJvdyBmdW5jdGlvbiI7CiAjZW5kaWYKKyAgICBj
YXNlIE5vdEFGdW5jdGlvbk1vZGU6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIHJldHVybiAiIjsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE0MjYsNyArMTQ1NCwxMSBAQCBzdGF0
aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlCiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBMZXhlclR5cGU+IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gaW50IFBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhUcmVlQnVpbGRlciYgY29udGV4dCwgRnVu
Y3Rpb25QYXJzZU1vZGUgbW9kZSwgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiYgaW5m
bykKIHsKKyAgICBSRUxFQVNFX0FTU0VSVChtb2RlICE9IE5vdEFGdW5jdGlvbk1vZGUpOwogICAg
IGludCBwYXJhbWV0ZXJzU3RhcnQgPSBtX3Rva2VuLm1fbG9jYXRpb24uc3RhcnRPZmZzZXQ7Cisg
ICAgVHJlZUZvcm1hbFBhcmFtZXRlckxpc3QgcGFyYW1ldGVyTGlzdCA9IGNvbnRleHQuY3JlYXRl
Rm9ybWFsUGFyYW1ldGVyTGlzdCgpOworICAgIGluZm8ucGFyYW1ldGVycyA9IHBhcmFtZXRlckxp
c3Q7CisgICAgaW5mby5zdGFydEZ1bmN0aW9uT2Zmc2V0ID0gcGFyYW1ldGVyc1N0YXJ0OwogICAg
IAogI2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCiAgICAgaWYgKG1vZGUgPT0g
QXJyb3dGdW5jdGlvbk1vZGUpIHsKQEAgLTE0MzcsNTggKzE0NjksNjMgQEAgdGVtcGxhdGUgPHR5
cGVuYW1lIExleGVyVHlwZT4gdGVtcGxhdGUgPAogICAgICAgICAgICAgaWYgKG1hdGNoKE9QRU5Q
QVJFTikpIHsKICAgICAgICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgaWYgKCFtYXRjaChDTE9TRVBBUkVOKSkgewotICAgICAgICAgICAgICAgICAg
ICBpbmZvLnBhcmFtZXRlcnMgPSBwYXJzZUZvcm1hbFBhcmFtZXRlcnMoY29udGV4dCk7Ci0gICAg
ICAgICAgICAgICAgICAgIGZhaWxJZkZhbHNlKGluZm8ucGFyYW1ldGVycywgIkNhbm5vdCBwYXJz
ZSBwYXJhbWV0ZXJzIGZvciB0aGlzICIsIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShtb2RlKSk7Ci0g
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChtYXRjaChDTE9TRVBBUkVOKSkK
KyAgICAgICAgICAgICAgICAgICAgaW5mby5wYXJhbWV0ZXJDb3VudCA9IDA7CisgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBmYWlsSWZGYWxzZShwYXJzZUZvcm1hbFBh
cmFtZXRlcnMoY29udGV4dCwgcGFyYW1ldGVyTGlzdCwgaW5mby5wYXJhbWV0ZXJDb3VudCksICJD
YW5ub3QgcGFyc2UgcGFyYW1ldGVycyBmb3IgdGhpcyAiLCBzdHJpbmdGb3JGdW5jdGlvbk1vZGUo
bW9kZSkpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGNvbnN1bWVPckZhaWwo
Q0xPU0VQQVJFTiwgIkV4cGVjdGVkIGEgJyknIG9yIGEgJywnIGFmdGVyIGEgcGFyYW1ldGVyIGRl
Y2xhcmF0aW9uIik7CiAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGluZm8u
cGFyYW1ldGVyQ291bnQgPSAxOwogICAgICAgICAgICAgICAgIGF1dG8gcGFyYW1ldGVyID0gcGFy
c2VEZXN0cnVjdHVyaW5nUGF0dGVybihjb250ZXh0LCBEZXN0cnVjdHVyZVRvUGFyYW1ldGVycyk7
CiAgICAgICAgICAgICAgICAgZmFpbElmRmFsc2UocGFyYW1ldGVyLCAiQ2Fubm90IHBhcnNlIHBh
cmFtZXRlciBwYXR0ZXJuIik7Ci0gICAgICAgICAgICAgICAgaW5mby5wYXJhbWV0ZXJzID0gY29u
dGV4dC5jcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KHBhcmFtZXRlcik7Ci0gICAgICAgICAgICAg
ICAgZmFpbElmRmFsc2UoaW5mby5wYXJhbWV0ZXJzLCAiQ2Fubm90IHBhcnNlIHBhcmFtZXRlcnMg
Zm9yIHRoaXMgIiwgc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKG1vZGUpKTsKKyAgICAgICAgICAgICAg
ICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJMaXN0LCBwYXJhbWV0ZXIpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIHJldHVybiBwYXJhbWV0
ZXJzU3RhcnQ7CiAgICAgfQogI2VuZGlmCi0gICAgCiAgICAgaWYgKCFjb25zdW1lKE9QRU5QQVJF
TikpIHsKICAgICAgICAgc2VtYW50aWNGYWlsdXJlRHVlVG9LZXl3b3JkKHN0cmluZ0ZvckZ1bmN0
aW9uTW9kZShtb2RlKSwgIiBuYW1lIik7CiAgICAgICAgIGZhaWxXaXRoTWVzc2FnZSgiRXhwZWN0
ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgIiwgc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKG1vZGUp
LCAiJ3MgcGFyYW1ldGVyIGxpc3QiKTsKICAgICB9CiAKLSAgICBpZiAobW9kZSA9PSBHZXR0ZXJN
b2RlKQorICAgIGlmIChtb2RlID09IEdldHRlck1vZGUpIHsKICAgICAgICAgY29uc3VtZU9yRmFp
bChDTE9TRVBBUkVOLCAiZ2V0dGVyIGZ1bmN0aW9ucyBtdXN0IGhhdmUgbm8gcGFyYW1ldGVycyIp
OwotICAgIGVsc2UgaWYgKG1vZGUgPT0gU2V0dGVyTW9kZSkgeworICAgICAgICBpbmZvLnBhcmFt
ZXRlckNvdW50ID0gMDsKKyAgICB9IGVsc2UgaWYgKG1vZGUgPT0gU2V0dGVyTW9kZSkgewogICAg
ICAgICBmYWlsSWZUcnVlKG1hdGNoKENMT1NFUEFSRU4pLCAic2V0dGVyIGZ1bmN0aW9ucyBtdXN0
IGhhdmUgb25lIHBhcmFtZXRlciIpOwogICAgICAgICBhdXRvIHBhcmFtZXRlciA9IHBhcnNlRGVz
dHJ1Y3R1cmluZ1BhdHRlcm4oY29udGV4dCwgRGVzdHJ1Y3R1cmVUb1BhcmFtZXRlcnMpOwogICAg
ICAgICBmYWlsSWZGYWxzZShwYXJhbWV0ZXIsICJzZXR0ZXIgZnVuY3Rpb25zIG11c3QgaGF2ZSBv
bmUgcGFyYW1ldGVyIik7Ci0gICAgICAgIGluZm8ucGFyYW1ldGVycyA9IGNvbnRleHQuY3JlYXRl
Rm9ybWFsUGFyYW1ldGVyTGlzdChwYXJhbWV0ZXIpOworICAgICAgICBjb250ZXh0LmFwcGVuZFBh
cmFtZXRlcihwYXJhbWV0ZXJMaXN0LCBwYXJhbWV0ZXIpOworICAgICAgICBpbmZvLnBhcmFtZXRl
ckNvdW50ID0gMTsKICAgICAgICAgZmFpbElmVHJ1ZShtYXRjaChDT01NQSksICJzZXR0ZXIgZnVu
Y3Rpb25zIG11c3QgaGF2ZSBvbmUgcGFyYW1ldGVyIik7CiAgICAgICAgIGNvbnN1bWVPckZhaWwo
Q0xPU0VQQVJFTiwgIkV4cGVjdGVkIGEgJyknIGFmdGVyIGEgcGFyYW1ldGVyIGRlY2xhcmF0aW9u
Iik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKCFtYXRjaChDTE9TRVBBUkVOKSkgewotICAg
ICAgICAgICAgaW5mby5wYXJhbWV0ZXJzID0gcGFyc2VGb3JtYWxQYXJhbWV0ZXJzKGNvbnRleHQp
OwotICAgICAgICAgICAgZmFpbElmRmFsc2UoaW5mby5wYXJhbWV0ZXJzLCAiQ2Fubm90IHBhcnNl
IHBhcmFtZXRlcnMgZm9yIHRoaXMgIiwgc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKG1vZGUpKTsKLSAg
ICAgICAgfQorICAgICAgICBpZiAobWF0Y2goQ0xPU0VQQVJFTikpCisgICAgICAgICAgICBpbmZv
LnBhcmFtZXRlckNvdW50ID0gMDsKKyAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZhaWxJZkZh
bHNlKHBhcnNlRm9ybWFsUGFyYW1ldGVycyhjb250ZXh0LCBwYXJhbWV0ZXJMaXN0LCBpbmZvLnBh
cmFtZXRlckNvdW50KSwgIkNhbm5vdCBwYXJzZSBwYXJhbWV0ZXJzIGZvciB0aGlzICIsIHN0cmlu
Z0ZvckZ1bmN0aW9uTW9kZShtb2RlKSk7CiAgICAgICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VQQVJF
TiwgIkV4cGVjdGVkIGEgJyknIG9yIGEgJywnIGFmdGVyIGEgcGFyYW1ldGVyIGRlY2xhcmF0aW9u
Iik7CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIHBhcmFtZXRlcnNTdGFydDsKIH0KIAogdGVt
cGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
Ym9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkZXImIGNv
bnRleHQsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzIHJlcXVpcmVtZW50cywgRnVuY3Rpb25QYXJzZU1v
ZGUgbW9kZSwgYm9vbCBuYW1lSXNJbkNvbnRhaW5pbmdTY29wZSwgQ29uc3RydWN0b3JLaW5kIGNv
bnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nIGV4cGVjdGVkU3VwZXJCaW5kaW5nLCBpbnQgZnVu
Y3Rpb25LZXl3b3JkU3RhcnQsIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4mIGluZm8s
IEZ1bmN0aW9uUGFyc2VUeXBlIHBhcnNlVHlwZSkKIHsKKyAgICBSRUxFQVNFX0FTU0VSVChtb2Rl
ICE9IE5vdEFGdW5jdGlvbk1vZGUpOworCiAgICAgQXV0b1BvcFNjb3BlUmVmIGZ1bmN0aW9uU2Nv
cGUodGhpcywgcHVzaFNjb3BlKCkpOwogICAgIGZ1bmN0aW9uU2NvcGUtPnNldElzRnVuY3Rpb24o
KTsKICAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQgPSBtX3Rva2VuLm1fbG9jYXRpb24uc3RhcnRP
ZmZzZXQ7CiAgICAgY29uc3QgSWRlbnRpZmllciogbGFzdEZ1bmN0aW9uTmFtZSA9IG1fbGFzdEZ1
bmN0aW9uTmFtZTsKICAgICBtX2xhc3RGdW5jdGlvbk5hbWUgPSBudWxscHRyOwogICAgIGludCBw
YXJhbWV0ZXJzU3RhcnQ7CisgICAgSlNUb2tlbkxvY2F0aW9uIHN0YXJ0TG9jYXRpb247CisgICAg
aW50IHN0YXJ0Q29sdW1uOwogICAgIAogICAgIHN3aXRjaCAocGFyc2VUeXBlKSB7CiAgICAgY2Fz
ZSBTdGFuZGFyZEZ1bmN0aW9uUGFyc2VUeXBlOiB7CkBAIC0xNDk5LDEzICsxNTM2LDE2IEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXIKICAgICAgICAgICAgIGlmICgh
bmFtZUlzSW5Db250YWluaW5nU2NvcGUpCiAgICAgICAgICAgICAgICAgZmFpbElmRmFsc2VJZlN0
cmljdChmdW5jdGlvblNjb3BlLT5kZWNsYXJlVmFyaWFibGUoaW5mby5uYW1lKSwgIiciLCBpbmZv
Lm5hbWUtPmltcGwoKSwgIicgaXMgbm90IGEgdmFsaWQgIiwgc3RyaW5nRm9yRnVuY3Rpb25Nb2Rl
KG1vZGUpLCAiIG5hbWUgaW4gc3RyaWN0IG1vZGUiKTsKICAgICAgICAgfSBlbHNlIGlmIChyZXF1
aXJlbWVudHMgPT0gRnVuY3Rpb25OZWVkc05hbWUpIHsKLSAgICAgICAgICAgIGlmIChtYXRjaChP
UEVOUEFSRU4pICYmIG1vZGUgPT0gRnVuY3Rpb25Nb2RlKQorICAgICAgICAgICAgaWYgKG1hdGNo
KE9QRU5QQVJFTikgJiYgbW9kZSA9PSBOb3JtYWxGdW5jdGlvbk1vZGUpCiAgICAgICAgICAgICAg
ICAgc2VtYW50aWNGYWlsKCJGdW5jdGlvbiBzdGF0ZW1lbnRzIG11c3QgaGF2ZSBhIG5hbWUiKTsK
ICAgICAgICAgICAgIHNlbWFudGljRmFpbHVyZUR1ZVRvS2V5d29yZChzdHJpbmdGb3JGdW5jdGlv
bk1vZGUobW9kZSksICIgbmFtZSIpOwogICAgICAgICAgICAgZmFpbER1ZVRvVW5leHBlY3RlZFRv
a2VuKCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAgCisg
ICAgICAgIHN0YXJ0TG9jYXRpb24gPSB0b2tlbkxvY2F0aW9uKCk7CisgICAgICAgIGluZm8uYm9k
eVN0YXJ0TGluZSA9IHRva2VuTGluZSgpOworICAgICAgICBzdGFydENvbHVtbiA9IHRva2VuQ29s
dW1uKCk7CisgICAgICAgIC8vaW5mby5ib2R5U3RhcnRDb2x1bW4gPSBtX3Rva2VuLm1fZGF0YS5v
ZmZzZXQgLSBtX3Rva2VuLm1fZGF0YS5saW5lU3RhcnRPZmZzZXQ7CiAgICAgICAgIHBhcmFtZXRl
cnNTdGFydCA9IHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKGNvbnRleHQsIG1vZGUsIGluZm8pOwog
ICAgICAgICBwcm9wYWdhdGVFcnJvcigpOwogICAgICAgICAKQEAgLTE1MTksMTMgKzE1NTksMTgg
QEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcgogICAgICAgICAgICAg
ZXhwZWN0ZWRTdXBlckJpbmRpbmcgPSBtX2RlZmF1bHRDb25zdHJ1Y3RvcktpbmQgPT0gQ29uc3Ry
dWN0b3JLaW5kOjpEZXJpdmVkID8gU3VwZXJCaW5kaW5nOjpOZWVkZWQgOiBTdXBlckJpbmRpbmc6
Ok5vdE5lZWRlZDsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaW5mby5zdGFydEZ1bmN0
aW9uT2Zmc2V0ID0gbV90b2tlbi5tX2RhdGEub2Zmc2V0OworICAgICAgICAvL2luZm8uc3RhcnRG
dW5jdGlvbk9mZnNldCA9IG1fdG9rZW4ubV9kYXRhLm9mZnNldDsKICAgICAgICAgCiAgICAgICAg
IGJyZWFrOwogICAgIH0KICNpZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQogICAg
IGNhc2UgQXJyb3dGdW5jdGlvblBhcnNlVHlwZTogewotICAgICAgICBwYXJhbWV0ZXJzU3RhcnQg
PSBwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhjb250ZXh0LCBBcnJvd0Z1bmN0aW9uTW9kZSwgaW5m
byk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1vZGUgPT0gQXJyb3dGdW5jdGlvbk1vZGUpOwor
ICAgICAgICBzdGFydExvY2F0aW9uID0gdG9rZW5Mb2NhdGlvbigpOworICAgICAgICBpbmZvLmJv
ZHlTdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKKyAgICAgICAgc3RhcnRDb2x1bW4gPSB0b2tlbkNv
bHVtbigpOworICAgICAgICAvL2luZm8uYm9keVN0YXJ0Q29sdW1uID0gbV90b2tlbi5tX2RhdGEu
b2Zmc2V0IC0gbV90b2tlbi5tX2RhdGEubGluZVN0YXJ0T2Zmc2V0OworICAgICAgICBwYXJhbWV0
ZXJzU3RhcnQgPSBwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhjb250ZXh0LCBtb2RlLCBpbmZvKTsK
ICAgICAgICAgcHJvcGFnYXRlRXJyb3IoKTsKICAgICAgICAgCiAgICAgICAgIG1hdGNoT3JGYWls
KEFSUk9XRlVOQ1RJT04sICJFeHBlY3RlZCBhICc9PicgYWZ0ZXIgYXJyb3cgZnVuY3Rpb24gcGFy
YW1ldGVyIGRlY2xhcmF0aW9uIik7CkBAIC0xNTQyLDcgKzE1ODcsNyBAQCB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyCiAgICAgICAgIAogICAgICAgICBuZXh0KCk7CiAg
ICAgICAgIGluZm8uZnVuY3Rpb25Cb2R5VHlwZSA9IG1hdGNoKE9QRU5CUkFDRSkgPyBBcnJvd0Z1
bmN0aW9uQm9keUJsb2NrIDogQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uOwotICAgICAgICBp
bmZvLnN0YXJ0RnVuY3Rpb25PZmZzZXQgPSAoaW5mby5mdW5jdGlvbkJvZHlUeXBlID09IEFycm93
RnVuY3Rpb25Cb2R5QmxvY2spID8gbV90b2tlbi5tX2RhdGEub2Zmc2V0IDogaW5mby5hcnJvd0Z1
bmN0aW9uT2Zmc2V0OworICAgICAgICAvL2luZm8uc3RhcnRGdW5jdGlvbk9mZnNldCA9IChpbmZv
LmZ1bmN0aW9uQm9keVR5cGUgPT0gQXJyb3dGdW5jdGlvbkJvZHlCbG9jaykgPyBtX3Rva2VuLm1f
ZGF0YS5vZmZzZXQgOiBpbmZvLmFycm93RnVuY3Rpb25PZmZzZXQ7CiAgICAgICAgIAogICAgICAg
ICByZXN0b3JlU2F2ZVBvaW50KHNhdmVQb2ludCk7CiAKQEAgLTE1NTMsOSArMTU5OCw5IEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXIKICAgICAKICAgICBib29sIGlz
Q2xhc3NDb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yS2luZCAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5v
bmU7CiAKLSAgICBpbmZvLmJvZHlTdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKLSAgICBpbmZvLmJv
ZHlTdGFydENvbHVtbiA9IG1fdG9rZW4ubV9kYXRhLm9mZnNldCAtIG1fdG9rZW4ubV9kYXRhLmxp
bmVTdGFydE9mZnNldDsKLSAgICBKU1Rva2VuTG9jYXRpb24gc3RhcnRMb2NhdGlvbih0b2tlbkxv
Y2F0aW9uKCkpOworICAgIC8vaW5mby5ib2R5U3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CisgICAg
Ly9pbmZvLmJvZHlTdGFydENvbHVtbiA9IG1fdG9rZW4ubV9kYXRhLm9mZnNldCAtIG1fdG9rZW4u
bV9kYXRhLmxpbmVTdGFydE9mZnNldDsKKyAgICBpbmZvLmJvZHlTdGFydENvbHVtbiA9IHN0YXJ0
Q29sdW1uOwogICAgIAogICAgIC8vIElmIHdlIGtub3cgYWJvdXQgdGhpcyBmdW5jdGlvbiBhbHJl
YWR5LCB3ZSBjYW4gdXNlIHRoZSBjYWNoZWQgaW5mbyBhbmQgc2tpcCB0aGUgcGFyc2VyIHRvIHRo
ZSBlbmQgb2YgdGhlIGZ1bmN0aW9uLgogICAgIGlmIChjb25zdCBTb3VyY2VQcm92aWRlckNhY2hl
SXRlbSogY2FjaGVkSW5mbyA9IFRyZWVCdWlsZGVyOjpDYW5Vc2VGdW5jdGlvbkNhY2hlID8gZmlu
ZENhY2hlZEZ1bmN0aW9uSW5mbyhpbmZvLnN0YXJ0RnVuY3Rpb25PZmZzZXQpIDogMCkgewpAQCAt
MTU3Nyw3ICsxNjIyLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNl
cgogICAgICAgICBpbmZvLmJvZHkgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uQm9keSgKICAgICAg
ICAgICAgIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBpbmZvLmJvZHlTdGFydENvbHVtbiwg
Ym9keUVuZENvbHVtbiwgCiAgICAgICAgICAgICBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rp
b25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgCi0gICAgICAgICAgICBjYWNoZWRJbmZvLT5z
dHJpY3RNb2RlLCBjb25zdHJ1Y3RvcktpbmQpOworICAgICAgICAgICAgY2FjaGVkSW5mby0+c3Ry
aWN0TW9kZSwgY29uc3RydWN0b3JLaW5kLCBjYWNoZWRJbmZvLT5wYXJhbWV0ZXJDb3VudCwgbW9k
ZSk7CiAgICAgICAgIAogICAgICAgICBmdW5jdGlvblNjb3BlLT5yZXN0b3JlRnJvbVNvdXJjZVBy
b3ZpZGVyQ2FjaGUoY2FjaGVkSW5mbyk7CiAgICAgICAgIGZhaWxJZkZhbHNlKHBvcFNjb3BlKGZ1
bmN0aW9uU2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVkc0ZyZWVWYXJpYWJsZUluZm8pLCAiUGFyc2Vy
IGVycm9yIik7CkBAIC0xNjI0LDI3ICsxNjY5LDI3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gYm9vbCBQYXJzZXIKICAgICAgICAgLy8gQ29uc3VtZSA9PiBpbiBjYXNlIG9mIGFycm93
IGZ1bmN0aW9uIGJsb2NrIGUuZy4geCA9PiB7IHJldHVybiB4OyB9CiAgICAgICAgIG5leHQoKTsK
ICAgICAKLSAgICAgICAgaW5mby5ib2R5U3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CisgICAgICAg
IC8vaW5mby5ib2R5U3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAgICAgIGluZm8uYm9keVN0
YXJ0Q29sdW1uID0gbV90b2tlbi5tX2RhdGEub2Zmc2V0IC0gbV90b2tlbi5tX2RhdGEubGluZVN0
YXJ0T2Zmc2V0OwogICAgICAgICAgICAgCi0gICAgICAgIGluZm8uYm9keSA9IHBhcnNlRnVuY3Rp
b25Cb2R5KGNvbnRleHQsIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwg
cGFyYW1ldGVyc1N0YXJ0LCBjb25zdHJ1Y3RvcktpbmQsIFN0YW5kYXJkRnVuY3Rpb25QYXJzZVR5
cGUpOworICAgICAgICBpbmZvLmJvZHkgPSBwYXJzZUZ1bmN0aW9uQm9keShjb250ZXh0LCBzdGFy
dExvY2F0aW9uLCBzdGFydENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFt
ZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIGNvbnN0cnVjdG9yS2luZCwgU3RhbmRhcmRGdW5jdGlv
blBhcnNlVHlwZSwgaW5mby5wYXJhbWV0ZXJDb3VudCwgbW9kZSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KICAgICBjYXNlIFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2s6CiAgICAgY2FzZSBBcnJv
d0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gOiB7Ci0gICAgICAgIGluZm8uYm9keSA9IHBhcnNlRnVu
Y3Rpb25Cb2R5KGNvbnRleHQsIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFy
dCwgcGFyYW1ldGVyc1N0YXJ0LCBjb25zdHJ1Y3RvcktpbmQsIHBhcnNlVHlwZSk7CisgICAgICAg
IGluZm8uYm9keSA9IHBhcnNlRnVuY3Rpb25Cb2R5KGNvbnRleHQsIHN0YXJ0TG9jYXRpb24sIHN0
YXJ0Q29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFt
ZXRlcnNTdGFydCwgY29uc3RydWN0b3JLaW5kLCBwYXJzZVR5cGUsIGluZm8ucGFyYW1ldGVyQ291
bnQsIG1vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgfQogI2Vsc2UKLSAgICBpbmZv
LmJvZHkgPSBwYXJzZUZ1bmN0aW9uQm9keShjb250ZXh0LCBmdW5jdGlvbktleXdvcmRTdGFydCwg
ZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgY29uc3RydWN0b3JLaW5kLCBTdGFu
ZGFyZEZ1bmN0aW9uUGFyc2VUeXBlKTsKKyAgICBpbmZvLmJvZHkgPSBwYXJzZUZ1bmN0aW9uQm9k
eShjb250ZXh0LCBzdGFydExvY2F0aW9uLCBzdGFydENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3Rh
cnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIGNvbnN0cnVjdG9yS2luZCwg
U3RhbmRhcmRGdW5jdGlvblBhcnNlVHlwZSwgaW5mby5wYXJhbWV0ZXJDb3VudCwgbW9kZSk7CiAj
ZW5kaWYKICAgICAKICAgICByZXN0b3JlU3RhdGUob2xkU3RhdGUpOwogICAgIGZhaWxJZkZhbHNl
KGluZm8uYm9keSwgIkNhbm5vdCBwYXJzZSB0aGUgYm9keSBvZiB0aGlzICIsIHN0cmluZ0ZvckZ1
bmN0aW9uTW9kZShtb2RlKSk7CiAgICAgY29udGV4dC5zZXRFbmRPZmZzZXQoaW5mby5ib2R5LCBt
X2xleGVyLT5jdXJyZW50T2Zmc2V0KCkpOwogICAgIGlmIChmdW5jdGlvblNjb3BlLT5zdHJpY3RN
b2RlKCkgJiYgaW5mby5uYW1lKSB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1vZGUgPT0gRnVu
Y3Rpb25Nb2RlIHx8IG1vZGUgPT0gTWV0aG9kTW9kZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KG1vZGUgPT0gTm9ybWFsRnVuY3Rpb25Nb2RlIHx8IG1vZGUgPT0gTWV0aG9kTW9kZSB8fCBtb2Rl
ID09IEFycm93RnVuY3Rpb25Nb2RlKTsKICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKG1fdm0t
PnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cyA9PSAqaW5mby5uYW1lLCAiJyIsIGluZm8ubmFtZS0+
aW1wbCgpLCAiJyBpcyBub3QgYSB2YWxpZCBmdW5jdGlvbiBuYW1lIGluIHN0cmljdCBtb2RlIik7
CiAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5ldmFsID09
ICppbmZvLm5hbWUsICInIiwgaW5mby5uYW1lLT5pbXBsKCksICInIGlzIG5vdCBhIHZhbGlkIGZ1
bmN0aW9uIG5hbWUgaW4gc3RyaWN0IG1vZGUiKTsKICAgICB9CkBAIC0xNjc4LDYgKzE3MjMsNyBA
QCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyCiAgICAgICAgIHBhcmFt
ZXRlcnMubGFzdFRvY2tlblN0YXJ0T2Zmc2V0ID0gbG9jYXRpb24uc3RhcnRPZmZzZXQ7CiAgICAg
ICAgIHBhcmFtZXRlcnMubGFzdFRvY2tlbkVuZE9mZnNldCA9IGxvY2F0aW9uLmVuZE9mZnNldDsK
ICAgICAgICAgcGFyYW1ldGVycy5sYXN0VG9ja2VuTGluZVN0YXJ0T2Zmc2V0ID0gbG9jYXRpb24u
bGluZVN0YXJ0T2Zmc2V0OworICAgICAgICBwYXJhbWV0ZXJzLnBhcmFtZXRlckNvdW50ID0gaW5m
by5wYXJhbWV0ZXJDb3VudDsKICNpZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQog
ICAgICAgICBpZiAoaW5mby5mdW5jdGlvbkJvZHlUeXBlID09IEFycm93RnVuY3Rpb25Cb2R5RXhw
cmVzc2lvbikgewogICAgICAgICAgICAgcGFyYW1ldGVycy5pc0JvZHlBcnJvd0V4cHJlc3Npb24g
PSB0cnVlOwpAQCAtMTcxNyw3ICsxNzYzLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlU3RhdGVtZQogICAgIHVuc2lnbmVkIGZ1bmN0aW9uS2V5d29yZFN0YXJ0ID0gdG9rZW5T
dGFydCgpOwogICAgIG5leHQoKTsKICAgICBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+
IGluZm87Ci0gICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0
aW9uTmVlZHNOYW1lLCBGdW5jdGlvbk1vZGUsIHRydWUsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwg
U3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsCisgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25J
bmZvKGNvbnRleHQsIEZ1bmN0aW9uTmVlZHNOYW1lLCBOb3JtYWxGdW5jdGlvbk1vZGUsIHRydWUs
IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsCiAgICAgICAg
IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbmZvLCBTdGFuZGFyZEZ1bmN0aW9uUGFyc2VUeXBlKSks
ICJDYW5ub3QgcGFyc2UgdGhpcyBmdW5jdGlvbiIpOwogICAgIGZhaWxJZkZhbHNlKGluZm8ubmFt
ZSwgIkZ1bmN0aW9uIHN0YXRlbWVudHMgbXVzdCBoYXZlIGEgbmFtZSIpOwogICAgIGZhaWxJZkZh
bHNlSWZTdHJpY3QoZGVjbGFyZVZhcmlhYmxlKGluZm8ubmFtZSksICJDYW5ub3QgZGVjbGFyZSBh
IGZ1bmN0aW9uIG5hbWVkICciLCBpbmZvLm5hbWUtPmltcGwoKSwgIicgaW4gc3RyaWN0IG1vZGUi
KTsKQEAgLTE4MzcsNyArMTg4Myw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZUNsYXNzRXgKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFBhcnNlckZ1bmN0aW9uSW5m
bzxUcmVlQnVpbGRlcj4gbWV0aG9kSW5mbzsKICAgICAgICAgICAgIGJvb2wgaXNDb25zdHJ1Y3Rv
ciA9ICFpc1N0YXRpY01ldGhvZCAmJiAqaWRlbnQgPT0gcHJvcGVydHlOYW1lcy5jb25zdHJ1Y3Rv
cjsKLSAgICAgICAgICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBG
dW5jdGlvbk5vUmVxdWlyZW1lbnRzLCBpc1N0YXRpY01ldGhvZCA/IEZ1bmN0aW9uTW9kZSA6IE1l
dGhvZE1vZGUsIGZhbHNlLCBpc0NvbnN0cnVjdG9yID8gY29uc3RydWN0b3JLaW5kIDogQ29uc3Ry
dWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgbWV0aG9kU3RhcnQsIG1ldGhv
ZEluZm8sIFN0YW5kYXJkRnVuY3Rpb25QYXJzZVR5cGUpKSwgIkNhbm5vdCBwYXJzZSB0aGlzIG1l
dGhvZCIpOworICAgICAgICAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRl
eHQsIEZ1bmN0aW9uTm9SZXF1aXJlbWVudHMsIGlzU3RhdGljTWV0aG9kID8gTm9ybWFsRnVuY3Rp
b25Nb2RlIDogTWV0aG9kTW9kZSwgZmFsc2UsIGlzQ29uc3RydWN0b3IgPyBjb25zdHJ1Y3Rvcktp
bmQgOiBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6TmVlZGVkLCBtZXRob2RT
dGFydCwgbWV0aG9kSW5mbywgU3RhbmRhcmRGdW5jdGlvblBhcnNlVHlwZSkpLCAiQ2Fubm90IHBh
cnNlIHRoaXMgbWV0aG9kIik7CiAgICAgICAgICAgICBmYWlsSWZGYWxzZShpZGVudCAmJiBkZWNs
YXJlVmFyaWFibGUoaWRlbnQpLCAiQ2Fubm90IGRlY2xhcmUgYSBtZXRob2QgbmFtZWQgJyIsIG1l
dGhvZEluZm8ubmFtZS0+aW1wbCgpLCAiJyIpOwogICAgICAgICAgICAgbWV0aG9kSW5mby5uYW1l
ID0gaXNDb25zdHJ1Y3RvciA/IGNsYXNzTmFtZSA6IGlkZW50OwogCkBAIC0yNjU0LDcgKzI3MDAs
NyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzCiAgICAgICAgIG5l
eHQoKTsKICAgICAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiBpbmZvOwogICAg
ICAgICBpbmZvLm5hbWUgPSAmbV92bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXI7Ci0g
ICAgICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5v
UmVxdWlyZW1lbnRzLCBGdW5jdGlvbk1vZGUsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUs
IFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW5mbywgU3Rh
bmRhcmRGdW5jdGlvblBhcnNlVHlwZSkpLCAiQ2Fubm90IHBhcnNlIGZ1bmN0aW9uIGV4cHJlc3Np
b24iKTsKKyAgICAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1
bmN0aW9uTm9SZXF1aXJlbWVudHMsIE5vcm1hbEZ1bmN0aW9uTW9kZSwgZmFsc2UsIENvbnN0cnVj
dG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGZ1bmN0aW9uS2V5d29yZFN0
YXJ0LCBpbmZvLCBTdGFuZGFyZEZ1bmN0aW9uUGFyc2VUeXBlKSksICJDYW5ub3QgcGFyc2UgZnVu
Y3Rpb24gZXhwcmVzc2lvbiIpOwogICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlv
bkV4cHIobG9jYXRpb24sIGluZm8pOwogICAgIH0KICNpZiBFTkFCTEUoRVM2X0NMQVNTX1NZTlRB
WCkKQEAgLTI5MDQsNyArMjk1MCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZUV4cHJlc3MKICAgICBsb2NhdGlvbiA9IHRva2VuTG9jYXRpb24oKTsKICAgICBQYXJzZXJGdW5j
dGlvbkluZm88VHJlZUJ1aWxkZXI+IGluZm87CiAgICAgaW5mby5uYW1lID0gJm1fdm0tPnByb3Bl
cnR5TmFtZXMtPm51bGxJZGVudGlmaWVyOwotICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9u
SW5mbyhjb250ZXh0LCBGdW5jdGlvbk5vUmVxdWlyZW1lbnRzLCBGdW5jdGlvbk1vZGUsIHRydWUs
IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGZ1bmN0aW9u
S2V5d29yZFN0YXJ0LCBpbmZvLCBBcnJvd0Z1bmN0aW9uUGFyc2VUeXBlKSksICJDYW5ub3QgcGFy
c2UgYXJyb3cgZnVuY3Rpb24gZXhwcmVzc2lvbiIpOworICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1
bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5vUmVxdWlyZW1lbnRzLCBBcnJvd0Z1bmN0aW9u
TW9kZSwgdHJ1ZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRl
ZCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGluZm8sIEFycm93RnVuY3Rpb25QYXJzZVR5cGUpKSwg
IkNhbm5vdCBwYXJzZSBhcnJvdyBmdW5jdGlvbiBleHByZXNzaW9uIik7CiAKICAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVBcnJvd0Z1bmN0aW9uRXhwcihsb2NhdGlvbiwgaW5mbyk7CiB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgJKHJldmlzaW9uIDE4Njc5OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTg2LDE1ICs4Niw2IEBAIGVudW0gRnVuY3Rpb25QYXJzZVR5cGUgeyBTdGFuZGFyZEZ1bmN0aW8K
IGVudW0gRnVuY3Rpb25QYXJzZVR5cGUgeyBTdGFuZGFyZEZ1bmN0aW9uUGFyc2VUeXBlfTsKICNl
bmRpZgogZW51bSBGdW5jdGlvblJlcXVpcmVtZW50cyB7IEZ1bmN0aW9uTm9SZXF1aXJlbWVudHMs
IEZ1bmN0aW9uTmVlZHNOYW1lIH07Ci1lbnVtIEZ1bmN0aW9uUGFyc2VNb2RlIHsKLSAgICBGdW5j
dGlvbk1vZGUsCi0gICAgR2V0dGVyTW9kZSwKLSAgICBTZXR0ZXJNb2RlLAotICAgIE1ldGhvZE1v
ZGUsCi0jaWYgRU5BQkxFKEVTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCkKLSAgICBBcnJvd0Z1bmN0
aW9uTW9kZQotI2VuZGlmCi19OwogZW51bSBEZXN0cnVjdHVyaW5nS2luZCB7CiAgICAgRGVzdHJ1
Y3R1cmVUb1ZhcmlhYmxlcywKICAgICBEZXN0cnVjdHVyZVRvUGFyYW1ldGVycywKQEAgLTQyOSwx
MyArNDIwLDEyIEBAIGNsYXNzIFBhcnNlciB7CiAKIHB1YmxpYzoKICAgICBQYXJzZXIoCi0gICAg
ICAgIFZNKiwgY29uc3QgU291cmNlQ29kZSYsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGNvbnN0IElk
ZW50aWZpZXImLCAKLSAgICAgICAgSlNQYXJzZXJCdWlsdGluTW9kZSwgSlNQYXJzZXJTdHJpY3RN
b2RlLCBKU1BhcnNlckNvZGVUeXBlLAorICAgICAgICBWTSosIGNvbnN0IFNvdXJjZUNvZGUmLCBK
U1BhcnNlckJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGUsIEpTUGFyc2VyQ29kZVR5cGUs
IAogICAgICAgICBDb25zdHJ1Y3RvcktpbmQgZGVmYXVsdENvbnN0cnVjdG9yS2luZCA9IENvbnN0
cnVjdG9yS2luZDo6Tm9uZSwgVGhpc1REWk1vZGUgPSBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRl
ZCk7CiAgICAgflBhcnNlcigpOwogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFBhcnNlZE5vZGU+Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKFBhcnNlckVycm9yJik7CisgICAg
c3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKFBhcnNlckVycm9yJiwgY29uc3QgSWRl
bnRpZmllciYsIEZ1bmN0aW9uUGFyc2VNb2RlKTsKIAogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0
aW9uQmVmb3JlTGFzdE5ld2xpbmUoKSBjb25zdCB7IHJldHVybiBtX2xleGVyLT5wb3NpdGlvbkJl
Zm9yZUxhc3ROZXdsaW5lKCk7IH0KICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb25CZWZvcmVM
YXN0VG9rZW4oKSBjb25zdCB7IHJldHVybiBtX2xleGVyLT5sYXN0VG9rZW5Mb2NhdGlvbigpOyB9
CkBAIC01NjMsNyArNTUzLDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBQYXJzZXIoKTsKLSAg
ICBTdHJpbmcgcGFyc2VJbm5lcigpOworICAgIFN0cmluZyBwYXJzZUlubmVyKGNvbnN0IElkZW50
aWZpZXImLCBGdW5jdGlvblBhcnNlTW9kZSk7CiAKICAgICB2b2lkIGRpZEZpbmlzaFBhcnNpbmco
U291cmNlRWxlbWVudHMqLCBEZWNsYXJhdGlvblN0YWNrczo6VmFyU3RhY2smLCAKICAgICAgICAg
RGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2smLCBDb2RlRmVhdHVyZXMsIGludCwgSWRl
bnRpZmllclNldCYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiYmKTsK
QEAgLTgwNyw4ICs3OTcsOCBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZVByb3BlcnR5IHBhcnNlUHJvcGVydHkoVHJlZUJ1aWxkZXImLCBib29sIHN0cmlj
dCk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBwYXJz
ZVByb3BlcnR5TWV0aG9kKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBJZGVudGlmaWVyKiBt
ZXRob2ROYW1lKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVQcm9wZXJ0
eSBwYXJzZUdldHRlclNldHRlcihUcmVlQnVpbGRlciYsIGJvb2wgc3RyaWN0LCBQcm9wZXJ0eU5v
ZGU6OlR5cGUsIHVuc2lnbmVkIGdldHRlck9yU2V0dGVyU3RhcnRPZmZzZXQsIENvbnN0cnVjdG9y
S2luZCA9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nID0gU3VwZXJCaW5kaW5n
OjpOb3ROZWVkZWQpOwotICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lO
TElORSBUcmVlRnVuY3Rpb25Cb2R5IHBhcnNlRnVuY3Rpb25Cb2R5KFRyZWVCdWlsZGVyJiwgaW50
IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0
ZXJzU3RhcnQsIENvbnN0cnVjdG9yS2luZCwgRnVuY3Rpb25QYXJzZVR5cGUpOwotICAgIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBUcmVlRm9ybWFsUGFyYW1ldGVy
TGlzdCBwYXJzZUZvcm1hbFBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImKTsKKyAgICB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgVHJlZUZ1bmN0aW9uQm9keSBwYXJzZUZ1
bmN0aW9uQm9keShUcmVlQnVpbGRlciYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50
IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0
ZXJzU3RhcnQsIENvbnN0cnVjdG9yS2luZCwgRnVuY3Rpb25QYXJzZVR5cGUsIHVuc2lnbmVkLCBG
dW5jdGlvblBhcnNlTW9kZSk7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdB
WVNfSU5MSU5FIGJvb2wgcGFyc2VGb3JtYWxQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiwgVHJlZUZv
cm1hbFBhcmFtZXRlckxpc3QsIHVuc2lnbmVkJik7CiAgICAgZW51bSBWYXJEZWNsYXJhdGlvbkxp
c3RDb250ZXh0IHsgRm9yTG9vcENvbnRleHQsIFZhckRlY2xhcmF0aW9uQ29udGV4dCB9OwogICAg
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gcGFyc2VWYXJEZWNs
YXJhdGlvbkxpc3QoVHJlZUJ1aWxkZXImLCBpbnQmIGRlY2xhcmF0aW9ucywgVHJlZURlc3RydWN0
dXJpbmdQYXR0ZXJuJiBsYXN0UGF0dGVybiwgVHJlZUV4cHJlc3Npb24mIGxhc3RJbml0aWFsaXpl
ciwgSlNUZXh0UG9zaXRpb24mIGlkZW50U3RhcnQsIEpTVGV4dFBvc2l0aW9uJiBpbml0U3RhcnQs
IEpTVGV4dFBvc2l0aW9uJiBpbml0RW5kLCBWYXJEZWNsYXJhdGlvbkxpc3RDb250ZXh0KTsKICAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBUcmVlQ29uc3REZWNs
TGlzdCBwYXJzZUNvbnN0RGVjbGFyYXRpb25MaXN0KFRyZWVCdWlsZGVyJik7CkBAIC05MjgsNiAr
OTE4LDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBTb3VyY2VDb2RlKiBtX3NvdXJjZTsKICAgICBQ
YXJzZXJBcmVuYSBtX3BhcnNlckFyZW5hOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxMZXhlclR5cGU+
IG1fbGV4ZXI7CisgICAgRnVuY3Rpb25QYXJhbWV0ZXJzKiBtX3BhcmFtZXRlcnMgeyBudWxscHRy
IH07CiAgICAgCiAgICAgYm9vbCBtX2hhc1N0YWNrT3ZlcmZsb3c7CiAgICAgU3RyaW5nIG1fZXJy
b3JNZXNzYWdlOwpAQCAtOTc0LDEzICs5NjUsMTMgQEAgcHJpdmF0ZToKIAogdGVtcGxhdGUgPHR5
cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBQYXJzZWROb2RlPgotc3RkOjp1bmlx
dWVfcHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZShQYXJzZXJFcnJvciYg
ZXJyb3IpCitzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlKFBhcnNlckVycm9yJiBlcnJvciwgY29uc3QgSWRlbnRpZmllciYgY2FsbGVlTmFtZSwgRnVu
Y3Rpb25QYXJzZU1vZGUgcGFyc2VNb2RlKQogewogICAgIGludCBlcnJMaW5lOwogICAgIFN0cmlu
ZyBlcnJNc2c7CiAKICAgICBpZiAoUGFyc2VkTm9kZTo6c2NvcGVJc0Z1bmN0aW9uKQotICAgICAg
ICBtX2xleGVyLT5zZXRJc1JlcGFyc2luZygpOworICAgICAgICBtX2xleGVyLT5zZXRJc1JlcGFy
c2luZ0Z1bmN0aW9uKCk7CiAKICAgICBtX3NvdXJjZUVsZW1lbnRzID0gMDsKIApAQCAtOTkxLDcg
Kzk4Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4ZXIKICAgICBB
U1NFUlQobV9zb3VyY2UtPnN0YXJ0Q29sdW1uKCkgPiAwKTsKICAgICB1bnNpZ25lZCBzdGFydENv
bHVtbiA9IG1fc291cmNlLT5zdGFydENvbHVtbigpIC0gMTsKIAotICAgIFN0cmluZyBwYXJzZUVy
cm9yID0gcGFyc2VJbm5lcigpOworICAgIFN0cmluZyBwYXJzZUVycm9yID0gcGFyc2VJbm5lcihj
YWxsZWVOYW1lLCBwYXJzZU1vZGUpOwogCiAgICAgaW50IGxpbmVOdW1iZXIgPSBtX2xleGVyLT5s
aW5lTnVtYmVyKCk7CiAgICAgYm9vbCBsZXhFcnJvciA9IG1fbGV4ZXItPnNhd0Vycm9yKCk7CkBA
IC0xMDIxLDYgKzEwMTIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExl
eGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3ZhckRlY2xhcmF0aW9u
cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZnVuY0RlY2xhcmF0aW9u
cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY2FwdHVyZWRWYXJpYWJs
ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcmFtZXRlcnMsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbV9zb3VyY2UsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtX2ZlYXR1cmVzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV9udW1Db25zdGFudHMpOwpAQCAtMTA1NCwxOCArMTA0NiwyMSBA
QCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyCiAKIHRlbXBsYXRlIDxj
bGFzcyBQYXJzZWROb2RlPgogc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKAotICAg
IFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvblBhcmFtZXRlcnMqIHBh
cmFtZXRlcnMsCisgICAgVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsCiAgICAgY29u
c3QgSWRlbnRpZmllciYgbmFtZSwgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSwKICAg
ICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgSlNQYXJzZXJDb2RlVHlwZSBjb2RlVHlw
ZSwKICAgICBQYXJzZXJFcnJvciYgZXJyb3IsIEpTVGV4dFBvc2l0aW9uKiBwb3NpdGlvbkJlZm9y
ZUxhc3ROZXdsaW5lID0gMCwKLSAgICBDb25zdHJ1Y3RvcktpbmQgZGVmYXVsdENvbnN0cnVjdG9y
S2luZCA9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUgPSBU
aGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRlZCkKKyAgICBGdW5jdGlvblBhcnNlTW9kZSBwYXJzZU1v
ZGUgPSBOb3RBRnVuY3Rpb25Nb2RlLCBDb25zdHJ1Y3RvcktpbmQgZGVmYXVsdENvbnN0cnVjdG9y
S2luZCA9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgCisgICAgVGhpc1REWk1vZGUgdGhpc1REWk1v
ZGUgPSBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRlZCkKIHsKICAgICBTYW1wbGluZ1JlZ2lvbiBz
YW1wbGluZ1JlZ2lvbigiUGFyc2luZyIpOworICAgIC8vaWYgKGNvZGVUeXBlID09IEpTUGFyc2Vy
Q29kZVR5cGU6OkZ1bmN0aW9uKQorICAgIC8vICAgIHByaW50ZigiUGFyc2luZyBmdW5jdGlvbiAn
JXMnXG4iLCBzb3VyY2UudG9TdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAKICAgICBBU1NFUlQo
IXNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2UoKS5pc051bGwoKSk7CiAgICAgaWYgKHNvdXJjZS5w
cm92aWRlcigpLT5zb3VyY2UoKS5pczhCaXQoKSkgewotICAgICAgICBQYXJzZXI8TGV4ZXI8TENo
YXI+PiBwYXJzZXIodm0sIHNvdXJjZSwgcGFyYW1ldGVycywgbmFtZSwgYnVpbHRpbk1vZGUsIHN0
cmljdE1vZGUsIGNvZGVUeXBlLCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kLCB0aGlzVERaTW9kZSk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiByZXN1bHQgPSBwYXJzZXIucGFy
c2U8UGFyc2VkTm9kZT4oZXJyb3IpOworICAgICAgICBQYXJzZXI8TGV4ZXI8TENoYXI+PiBwYXJz
ZXIodm0sIHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIGNvZGVUeXBlLCBkZWZhdWx0
Q29uc3RydWN0b3JLaW5kLCB0aGlzVERaTW9kZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQ
YXJzZWROb2RlPiByZXN1bHQgPSBwYXJzZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3IsIG5hbWUs
IHBhcnNlTW9kZSk7CiAgICAgICAgIGlmIChwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKQogICAg
ICAgICAgICAgKnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUgPSBwYXJzZXIucG9zaXRpb25CZWZv
cmVMYXN0TmV3bGluZSgpOwogICAgICAgICBpZiAoYnVpbHRpbk1vZGUgPT0gSlNQYXJzZXJCdWls
dGluTW9kZTo6QnVpbHRpbikgewpAQCAtMTA3Nyw4ICsxMDcyLDggQEAgc3RkOjp1bmlxdWVfcHRy
PFBhcnNlZE5vZGU+IHBhcnNlKAogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQgPT0gQ29uc3RydWN0b3JL
aW5kOjpOb25lLCAiQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVEZWZhdWx0Q29uc3RydWN0b3Ig
c2hvdWxkIGFsd2F5cyB1c2UgYSA4LWJpdCBzdHJpbmciKTsKLSAgICBQYXJzZXI8TGV4ZXI8VUNo
YXI+PiBwYXJzZXIodm0sIHNvdXJjZSwgcGFyYW1ldGVycywgbmFtZSwgYnVpbHRpbk1vZGUsIHN0
cmljdE1vZGUsIGNvZGVUeXBlLCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kLCB0aGlzVERaTW9kZSk7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQ
YXJzZWROb2RlPihlcnJvcik7CisgICAgUGFyc2VyPExleGVyPFVDaGFyPj4gcGFyc2VyKHZtLCBz
b3VyY2UsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBjb2RlVHlwZSwgZGVmYXVsdENvbnN0cnVj
dG9yS2luZCwgdGhpc1REWk1vZGUpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBy
ZXN1bHQgPSBwYXJzZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3IsIG5hbWUsIHBhcnNlTW9kZSk7
CiAgICAgaWYgKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpCiAgICAgICAgICpwb3NpdGlvbkJl
Zm9yZUxhc3ROZXdsaW5lID0gcGFyc2VyLnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsKICAg
ICByZXR1cm4gcmVzdWx0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXJGdW5jdGlvbkluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlckZ1bmN0aW9uSW5mby5oCShyZXZpc2lvbiAxODY3OTgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckZ1bmN0aW9uSW5mby5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNyw2ICszNyw3IEBAIHN0cnVjdCBQYXJzZXJGdW5jdGlvbkluZm8gewogICAgIGNvbnN0IElk
ZW50aWZpZXIqIG5hbWUgPSAwOwogICAgIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJh
bWV0ZXJMaXN0IHBhcmFtZXRlcnMgPSAwOwogICAgIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGdW5j
dGlvbkJvZHkgYm9keSA9IDA7CisgICAgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQgeyAwIH07CiAg
ICAgdW5zaWduZWQgc3RhcnRGdW5jdGlvbk9mZnNldCA9IDA7CiAgICAgdW5zaWduZWQgZW5kRnVu
Y3Rpb25PZmZzZXQgPSAwOwogICAgIGludCBib2R5U3RhcnRMaW5lID0gMDsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgJKHJldmlzaW9uIDE4Njc5OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtNDQsNiArNDQsMTcgQEAgZW51bSBEZWJ1Z2dlck1vZGUgeyBEZWJ1Z2dlck9mZiwg
RGVidWdnZQogCiBlbnVtIEZ1bmN0aW9uTW9kZSB7IEZ1bmN0aW9uRXhwcmVzc2lvbiwgRnVuY3Rp
b25EZWNsYXJhdGlvbiB9OwogCitlbnVtIEZ1bmN0aW9uUGFyc2VNb2RlIHsKKyAgICBOb3JtYWxG
dW5jdGlvbk1vZGUsCisgICAgR2V0dGVyTW9kZSwKKyAgICBTZXR0ZXJNb2RlLAorICAgIE1ldGhv
ZE1vZGUsCisgICAgTm90QUZ1bmN0aW9uTW9kZSwKKyNpZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJ
T05fU1lOVEFYKQorICAgIEFycm93RnVuY3Rpb25Nb2RlCisjZW5kaWYKK307CisKIGlubGluZSBi
b29sIGZ1bmN0aW9uTmFtZUlzSW5TY29wZShjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBGdW5jdGlv
bk1vZGUgZnVuY3Rpb25Nb2RlKQogewogICAgIGlmIChuYW1lLmlzTnVsbCgpKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXJDYWNo
ZUl0ZW0uaAkocmV2aXNpb24gMTg2Nzk4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Tb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3
IEBAIHN0cnVjdCBTb3VyY2VQcm92aWRlckNhY2hlSXRlbUNyZWF0aW9uUGEKICAgICB1bnNpZ25l
ZCBsYXN0VG9ja2VuRW5kT2Zmc2V0OwogICAgIHVuc2lnbmVkIGxhc3RUb2NrZW5MaW5lU3RhcnRP
ZmZzZXQ7CiAgICAgdW5zaWduZWQgZW5kRnVuY3Rpb25PZmZzZXQ7CisgICAgdW5zaWduZWQgcGFy
YW1ldGVyQ291bnQ7CiAgICAgYm9vbCBuZWVkc0Z1bGxBY3RpdmF0aW9uOwogICAgIGJvb2wgdXNl
c0V2YWw7CiAgICAgYm9vbCBzdHJpY3RNb2RlOwpAQCAtODcsNiArODgsNyBAQCBwdWJsaWM6CiAg
ICAgdW5zaWduZWQgbGFzdFRvY2tlbkxpbmUgOiAzMTsKICAgICB1bnNpZ25lZCBsYXN0VG9ja2Vu
U3RhcnRPZmZzZXQgOiAzMTsKICAgICB1bnNpZ25lZCBsYXN0VG9ja2VuRW5kT2Zmc2V0OiAzMTsK
KyAgICB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudDsKICAgICAKICAgICBib29sIHVzZXNFdmFsIDog
MTsKIApAQCAtMTMwLDYgKzEzMiw3IEBAIGlubGluZSBTb3VyY2VQcm92aWRlckNhY2hlSXRlbTo6
U291cmNlUHIKICAgICAsIGxhc3RUb2NrZW5MaW5lKHBhcmFtZXRlcnMubGFzdFRvY2tlbkxpbmUp
CiAgICAgLCBsYXN0VG9ja2VuU3RhcnRPZmZzZXQocGFyYW1ldGVycy5sYXN0VG9ja2VuU3RhcnRP
ZmZzZXQpCiAgICAgLCBsYXN0VG9ja2VuRW5kT2Zmc2V0KHBhcmFtZXRlcnMubGFzdFRvY2tlbkVu
ZE9mZnNldCkKKyAgICAsIHBhcmFtZXRlckNvdW50KHBhcmFtZXRlcnMucGFyYW1ldGVyQ291bnQp
CiAgICAgLCB1c2VzRXZhbChwYXJhbWV0ZXJzLnVzZXNFdmFsKQogICAgICwgc3RyaWN0TW9kZShw
YXJhbWV0ZXJzLnN0cmljdE1vZGUpCiAgICAgLCBsYXN0VG9ja2VuTGluZVN0YXJ0T2Zmc2V0KHBh
cmFtZXRlcnMubGFzdFRvY2tlbkxpbmVTdGFydE9mZnNldCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCShyZXZpc2lvbiAxODY3OTgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtNjksNyArNjksNiBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHR5cGVkZWYg
U3ludGF4Q2hlY2tlciBGdW5jdGlvbkJvZHlCdWlsZGVyOwogICAgIGVudW0geyBOb25lRXhwciA9
IDAsCiAgICAgICAgIFJlc29sdmVFdmFsRXhwciwgUmVzb2x2ZUV4cHIsIEludGVnZXJFeHByLCBE
b3VibGVFeHByLCBTdHJpbmdFeHByLAogICAgICAgICBUaGlzRXhwciwgTnVsbEV4cHIsIEJvb2xF
eHByLCBSZWdFeHBFeHByLCBPYmplY3RMaXRlcmFsRXhwciwKQEAgLTE3OCw3ICsxNzcsNyBAQCBw
dWJsaWM6CiAgICAgQ2xhc3NFeHByZXNzaW9uIGNyZWF0ZUNsYXNzRXhwcihjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25U
eXBlLCBQcm9wZXJ0eUxpc3QsIFByb3BlcnR5TGlzdCkgeyByZXR1cm4gQ2xhc3NFeHByOyB9CiAj
ZW5kaWYKICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPFN5bnRheENoZWNrZXI+JikgeyBy
ZXR1cm4gRnVuY3Rpb25FeHByOyB9Ci0gICAgaW50IGNyZWF0ZUZ1bmN0aW9uQm9keShjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgYm9vbCwg
aW50LCBpbnQsIGludCwgQ29uc3RydWN0b3JLaW5kKSB7IHJldHVybiBGdW5jdGlvbkJvZHlSZXN1
bHQ7IH0KKyAgICBpbnQgY3JlYXRlRnVuY3Rpb25Cb2R5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBib29sLCBpbnQsIGludCwgaW50LCBD
b25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkLCBpbnQpIHsgcmV0dXJuIEZ1bmN0aW9uQm9keVJlc3Vs
dDsgfQogI2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCiAgICAgRXhwcmVzc2lv
blR5cGUgY3JlYXRlQXJyb3dGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29u
c3QgUGFyc2VyRnVuY3Rpb25JbmZvPFN5bnRheENoZWNrZXI+JikgeyByZXR1cm4gRnVuY3Rpb25F
eHByOyB9CiAjZW5kaWYgCkBAIC0yMjAsOCArMjE5LDggQEAgcHVibGljOgogICAgIGludCBjcmVh
dGVQcm9wZXJ0eUxpc3QoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgUHJvcGVydHksIGludCkgeyBy
ZXR1cm4gUHJvcGVydHlMaXN0UmVzdWx0OyB9CiAgICAgaW50IGNyZWF0ZUVsZW1lbnRMaXN0KGlu
dCwgaW50KSB7IHJldHVybiBFbGVtZW50c0xpc3RSZXN1bHQ7IH0KICAgICBpbnQgY3JlYXRlRWxl
bWVudExpc3QoaW50LCBpbnQsIGludCkgeyByZXR1cm4gRWxlbWVudHNMaXN0UmVzdWx0OyB9Ci0g
ICAgaW50IGNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QoRGVzdHJ1Y3R1cmluZ1BhdHRlcm4pIHsg
cmV0dXJuIEZvcm1hbFBhcmFtZXRlckxpc3RSZXN1bHQ7IH0KLSAgICBpbnQgY3JlYXRlRm9ybWFs
UGFyYW1ldGVyTGlzdChpbnQsIERlc3RydWN0dXJpbmdQYXR0ZXJuKSB7IHJldHVybiBGb3JtYWxQ
YXJhbWV0ZXJMaXN0UmVzdWx0OyB9CisgICAgaW50IGNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3Qo
KSB7IHJldHVybiBGb3JtYWxQYXJhbWV0ZXJMaXN0UmVzdWx0OyB9CisgICAgdm9pZCBhcHBlbmRQ
YXJhbWV0ZXIoaW50LCBEZXN0cnVjdHVyaW5nUGF0dGVybikgeyB9CiAgICAgaW50IGNyZWF0ZUNs
YXVzZShpbnQsIGludCkgeyByZXR1cm4gQ2xhdXNlUmVzdWx0OyB9CiAgICAgaW50IGNyZWF0ZUNs
YXVzZUxpc3QoaW50KSB7IHJldHVybiBDbGF1c2VMaXN0UmVzdWx0OyB9CiAgICAgaW50IGNyZWF0
ZUNsYXVzZUxpc3QoaW50LCBpbnQpIHsgcmV0dXJuIENsYXVzZUxpc3RSZXN1bHQ7IH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAkocmV2aXNpb24g
MTg2Nzk4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTQsOCArOTQsOCBAQCBVbmxpbmtlZENvZGVCbG9ja1R5cGUqIENv
ZGVDYWNoZTo6Z2V0R2xvCiAKICAgICB0eXBlZGVmIHR5cGVuYW1lIENhY2hlVHlwZXM8VW5saW5r
ZWRDb2RlQmxvY2tUeXBlPjo6Um9vdE5vZGUgUm9vdE5vZGU7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PFJvb3ROb2RlPiByb290Tm9kZSA9IHBhcnNlPFJvb3ROb2RlPigKLSAgICAgICAgJnZtLCBzb3Vy
Y2UsIDAsIElkZW50aWZpZXIoKSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIAotICAgICAgICBK
U1BhcnNlckNvZGVUeXBlOjpQcm9ncmFtLCBlcnJvciwgMCwgQ29uc3RydWN0b3JLaW5kOjpOb25l
LCB0aGlzVERaTW9kZSk7CisgICAgICAgICZ2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIGJ1aWx0
aW5Nb2RlLCBzdHJpY3RNb2RlLCAKKyAgICAgICAgSlNQYXJzZXJDb2RlVHlwZTo6UHJvZ3JhbSwg
ZXJyb3IsIDAsIEZ1bmN0aW9uUGFyc2VNb2RlOjpOb3RBRnVuY3Rpb25Nb2RlLCBDb25zdHJ1Y3Rv
cktpbmQ6Ok5vbmUsIHRoaXNURFpNb2RlKTsKICAgICBpZiAoIXJvb3ROb2RlKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIApAQCAtMTQ0LDcgKzE0NCw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKiBDb2RlQ2FjaGU6OmcKIAogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3Jl
TGFzdE5ld2xpbmU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFByb2dyYW1Ob2RlPiBwcm9ncmFtID0g
cGFyc2U8UHJvZ3JhbU5vZGU+KAotICAgICAgICAmdm0sIHNvdXJjZSwgMCwgSWRlbnRpZmllcigp
LCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCAKKyAgICAgICAgJnZtLCBzb3VyY2Us
IElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgCiAgICAgICAg
IEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBKU1BhcnNlckNvZGVUeXBlOjpQcm9ncmFt
LCAKICAgICAgICAgZXJyb3IsICZwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsKICAgICBpZiAo
IXByb2dyYW0pIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBs
ZXRpb24uY3BwCShyZXZpc2lvbiAxODY3OTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21wbGV0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQCBib29s
IGNoZWNrU3ludGF4KFZNJiB2bSwgY29uc3QgU291cmNlQ29kCiAgICAgSlNMb2NrSG9sZGVyIGxv
Y2sodm0pOwogICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3Rm
VGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIHJldHVybiAhIXBhcnNlPFBy
b2dyYW1Ob2RlPigKLSAgICAgICAgJnZtLCBzb3VyY2UsIDAsIElkZW50aWZpZXIoKSwgSlNQYXJz
ZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgCisgICAgICAgICZ2bSwgc291cmNlLCBJZGVudGlm
aWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIAogICAgICAgICBKU1BhcnNl
clN0cmljdE1vZGU6Ok5vdFN0cmljdCwgSlNQYXJzZXJDb2RlVHlwZTo6UHJvZ3JhbSwgZXJyb3Ip
OwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmNwcAkocmV2aXNpb24gMTg2Nzk4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3NSw3ICs0NzUsNyBAQCBKU09iamVj
dCogUHJvZ3JhbUV4ZWN1dGFibGU6OmNoZWNrU3ludGF4CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZt
KCk7CiAgICAgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QgPSBleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFByb2dyYW1Ob2RlPiBwcm9n
cmFtTm9kZSA9IHBhcnNlPFByb2dyYW1Ob2RlPigKLSAgICAgICAgdm0sIG1fc291cmNlLCAwLCBJ
ZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIAorICAgICAgICB2
bSwgbV9zb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRp
biwgCiAgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBKU1BhcnNlckNvZGVU
eXBlOjpQcm9ncmFtLCBlcnJvcik7CiAgICAgaWYgKHByb2dyYW1Ob2RlKQogICAgICAgICByZXR1
cm4gMDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90
eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5j
dGlvblByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDE4Njc5OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEs
NiArOTEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvCiAgICAg
ICAgIFN0cmluZyBzb3VyY2UgPSBleGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92aWRlcigpLT5nZXRS
YW5nZSgKICAgICAgICAgICAgIGV4ZWN1dGFibGUtPnBhcmFtZXRlcnNTdGFydE9mZnNldCgpLAog
ICAgICAgICAgICAgZXhlY3V0YWJsZS0+dHlwZVByb2ZpbGluZ0VuZE9mZnNldCgpICsgMSk7IC8v
IFR5cGUgcHJvZmlsaW5nIGVuZCBvZmZzZXQgaXMgdGhlIGNoYXJhY3RlciBiZWZvcmUgdGhlICd9
Jy4KKyAgICAgICAgICAgIC8vZXhlY3V0YWJsZS0+cGFyYW1ldGVyc1N0YXJ0T2Zmc2V0KCkgKyBl
eGVjdXRhYmxlLT5zb3VyY2VMZW5ndGgoKSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiZnVuY3Rpb24gIiwgZnVuY3Rpb24tPm5h
bWUoZXhlYyksIHNvdXJjZSkpOwogICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256813</attachid>
            <date>2015-07-14 17:21:34 -0700</date>
            <delta_ts>2015-07-14 17:28:16 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>195518</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg2ODI2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxNCBA
QAorMjAxNS0wNy0xNCAgU2FhbSBiYXJhdGkgIDxzYWFtYmFyYXRpMUBnbWFpbC5jb20+CisKKyAg
ICAgICAgRnVuY3Rpb24gcGFyYW1ldGVycyBzaG91bGQgYmUgcGFyc2VkIGluIHRoZSBzYW1lIHBh
cnNlciBhcmVuYSBhcyB0aGUgZnVuY3Rpb24gYm9keQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1OTk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICBUaGlzIHBhdGNoIGNoYW5nZXMgaG93IGZ1bmN0aW9ucyBh
cmUgcGFyc2VkIGluIEpTQy4gQSBmdW5jdGlvbidzCisgICAgICAgcGFyYW1ldGVycyBhcmUgbm93
IHBhcnNlZCBpbiB0aGUgc2FtZSBhcmVuYSBhcyB0aGUgZnVuY3Rpb24gaXRzZWxmLgorICAgICAg
IFRoaXMgYWxsb3dzIHVzIHRvIGFyZW5hIGFsbG9jYXRlIGFsbCBkZXN0cnVjdHVyaW5nIEFTVCBu
b2RlcyBhbmQKKyAgICAgICB0aGUgRnVuY3Rpb25QYXJhbWV0ZXJzIG5vZGUuIFRoaXMgd2lsbCBo
ZWxwIG1ha2UgaW1wbGVtZW50aW5nIEVTNgorICAgICAgIGRlZmF1bHQgcGFyYW1ldGVyIHZhbHVl
cyBzYW5lLgorCisgICAgICAgQSBzb3VyY2UgY29kZSB0aGF0IHJlcHJlc2VudHMgYSBmdW5jdGlv
biBub3cgaW5jbHVkZXMgdGhlIHRleHQgb2YgdGhlIGZ1bmN0aW9uJ3MgCisgICAgICAgcGFyYW1l
dGVycy4gVGhlIHN0YXJ0aW5nIG9mZnNldCBpcyBhdCB0aGUgb3BlbmluZyBwYXJlbnRoZXNpcyBv
ZiB0aGUgcGFyYW1ldGVyCisgICAgICAgbGlzdCBvciBhdCB0aGUgc3RhcnRpbmcgY2hhcmFjdGVy
IG9mIHRoZSBpZGVudGlmaWVyIGZvciBhcnJvdyBmdW5jdGlvbnMgdGhhdAorICAgICAgIGhhdmUg
c2luZ2xlIGFyZ3VtZW50cyBhbmQgZG9uJ3Qgc3RhcnQgd2l0aCBwYXJlbnRoZXNpcy4KKworICAg
ICAgIEZvciBleGFtcGxlOgorCisgICAgICAgImZ1bmN0aW9uIChwYXJhbTEsIHBhcmFtMikgeyAu
Li4gfSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCBUaGlzIG9mZnNldCB1c2VkIHRvIGJlIHRoZSBzdGFydGlu
ZyBvZmZzZXQgb2YgYSBmdW5jdGlvbidzIFNvdXJjZUNvZGUKKyAgICAgICAgICAgICAgICAgXgor
ICAgICAgICAgICAgICAgICB8IFRoaXMgaXMgdGhlIG5ldyBzdGFydGluZyBvZmZzZXQgZm9yIGEg
ZnVuY3Rpb24ncyBTb3VyY2VDb2RlLgorCisgICAgICAgVGhpcyByZXF1aXJlcyB1cyB0byBjaGFu
Z2UgaG93IHNvbWUgb2Zmc2V0cyBhcmUgY2FsY3VsYXRlZAorICAgICAgIGFuZCBhbHNvIHJlcXVp
cmVzIHVzIHRvIHJlcG9ydCBzb21lIGRpZmZlcmVudCBsaW5lIG51bWJlcnMgZm9yIGludGVybmFs
CisgICAgICAgbWV0cmljcyB0aGF0IHVzZSBhIFNvdXJjZUNvZGUncyBzdGFydGluZyBsaW5lIGFu
ZCBjb2x1bW4gbnVtYmVycy4KKworICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBkb2VzIGEgYml0IG9m
IGNsZWFudXAgd2l0aCByZWdhcmRzIHRvIGhvdworICAgICAgIGZ1bmN0aW9ucyBhcmUgcGFyc2Vk
IGluIGdlbmVyYWwgKGVzcGVjaWFsbHkgYXJyb3cgZnVuY3Rpb25zKS4KKyAgICAgICBJdCByZW1v
dmVzIHNvbWUgdW5uZWNlc3NhcnkgI2lmZGVmcyBhbmQgdGhlIGxpa2VzIGZvciBhcnJvdworICAg
ICAgIHRvIG1ha2UgdGhpbmdzIGNsZWFyZXIgYW5kIG1vcmUgZGVsaWJlcmF0ZS4KKworICAgICAg
ICAqIEFQSS9KU1NjcmlwdFJlZi5jcHA6CisgICAgICAgIChwYXJzZVNjcmlwdCk6CisgICAgICAg
ICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDoKKyAgICAgICAgKEpTQzo6QnVpbHRp
bkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlSW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVGdW5jdGlv
bkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OnBhcmFtZXRlckNvdW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0Nv
ZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5vZGU6OmVt
aXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OmFzc2lnbkRlZmF1bHRWYWx1ZUlmVW5kZWZpbmVk
KToKKyAgICAgICAgKEpTQzo6QXJyYXlQYXR0ZXJuTm9kZTo6Y29sbGVjdEJvdW5kSWRlbnRpZmll
cnMpOgorICAgICAgICAoSlNDOjpEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU6On5EZXN0cnVjdHVy
aW5nUGF0dGVybk5vZGUpOiBEZWxldGVkLgorICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUNsYXNzRXhwcik6CisgICAgICAgIChK
U0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmN0aW9uRXhwcik6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6OmNyZWF0ZUZ1bmN0aW9uQm9keSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNy
ZWF0ZUFycm93RnVuY3Rpb25FeHByKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRl
R2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0
ZUVsZW1lbnRMaXN0KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRm9ybWFsUGFy
YW1ldGVyTGlzdCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmFwcGVuZFBhcmFtZXRlcik6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUNsYXVzZSk6CisgICAgICAgIChKU0M6
OkFTVEJ1aWxkZXI6OmNyZWF0ZUNsYXVzZUxpc3QpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVy
OjpjcmVhdGVGdW5jRGVjbFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNy
ZWF0ZUZvckluTG9vcCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZvck9mTG9v
cCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmlzUmVzb2x2ZSk6CisgICAgICAgIChKU0M6
OkFTVEJ1aWxkZXI6OmNyZWF0ZURlc3RydWN0dXJpbmdBc3NpZ25tZW50KToKKyAgICAgICAgKEpT
Qzo6QVNUQnVpbGRlcjo6Y3JlYXRlQXJyYXlQYXR0ZXJuKToKKyAgICAgICAgKEpTQzo6QVNUQnVp
bGRlcjo6YXBwZW5kQXJyYXlQYXR0ZXJuU2tpcEVudHJ5KToKKyAgICAgICAgKEpTQzo6QVNUQnVp
bGRlcjo6YXBwZW5kQXJyYXlQYXR0ZXJuRW50cnkpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVy
OjphcHBlbmRBcnJheVBhdHRlcm5SZXN0RW50cnkpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVy
OjpmaW5pc2hBcnJheVBhdHRlcm4pOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVP
YmplY3RQYXR0ZXJuKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6YXBwZW5kT2JqZWN0UGF0
dGVybkVudHJ5KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlQmluZGluZ0xvY2F0
aW9uKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6c2V0RW5kT2Zmc2V0KToKKyAgICAgICAg
KiBwYXJzZXIvTGV4ZXIuY3BwOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6TGV4ZXIpOgorICAg
ICAgICAoSlNDOjpMZXhlcjxUPjo6bmV4dFRva2VuSXNDb2xvbik6CisgICAgICAgIChKU0M6Okxl
eGVyPFQ+OjpzZXRUb2tlblBvc2l0aW9uKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleCk6
CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpjbGVhcik6CisgICAgICAgICogcGFyc2VyL0xleGVy
Lmg6CisgICAgICAgIChKU0M6OkxleGVyOjpzZXRJc1JlcGFyc2luZ0Z1bmN0aW9uKToKKyAgICAg
ICAgKEpTQzo6TGV4ZXI6OmlzUmVwYXJzaW5nRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpMZXhl
cjo6bGluZU51bWJlcik6CisgICAgICAgIChKU0M6OkxleGVyOjpzZXRJc1JlcGFyc2luZyk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkxleGVyOjppc1JlcGFyc2luZyk6IERlbGV0ZWQuCisgICAg
ICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpTQzo6VHJ5Tm9kZTo6
VHJ5Tm9kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uUGFyYW1ldGVyczo6RnVuY3Rpb25QYXJh
bWV0ZXJzKToKKyAgICAgICAgKEpTQzo6RnVuY0V4cHJOb2RlOjpGdW5jRXhwck5vZGUpOgorICAg
ICAgICAoSlNDOjpGdW5jRGVjbE5vZGU6OkZ1bmNEZWNsTm9kZSk6CisgICAgICAgIChKU0M6OkFy
cmF5UGF0dGVybk5vZGU6OkFycmF5UGF0dGVybk5vZGUpOgorICAgICAgICAoSlNDOjpPYmplY3RQ
YXR0ZXJuTm9kZTo6T2JqZWN0UGF0dGVybk5vZGUpOgorICAgICAgICAoSlNDOjpCaW5kaW5nTm9k
ZTo6QmluZGluZ05vZGUpOgorICAgICAgICAoSlNDOjpEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5v
ZGU6OkRlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZSk6CisgICAgICAgIChKU0M6OlBhcmFtZXRl
ck5vZGU6OlBhcmFtZXRlck5vZGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpBcnJheVBhdHRl
cm5Ob2RlOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpPYmplY3RQYXR0ZXJuTm9k
ZTo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QmluZGluZ05vZGU6OmNyZWF0ZSk6
IERlbGV0ZWQuCisgICAgICAgICogcGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHJv
Z3JhbU5vZGU6OlByb2dyYW1Ob2RlKToKKyAgICAgICAgKEpTQzo6RXZhbE5vZGU6OkV2YWxOb2Rl
KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Cb2R5Tm9kZTo6RnVuY3Rpb25Cb2R5Tm9kZSk6Cisg
ICAgICAgIChKU0M6OkZ1bmN0aW9uQm9keU5vZGU6OmZpbmlzaFBhcnNpbmcpOgorICAgICAgICAo
SlNDOjpGdW5jdGlvbk5vZGU6OkZ1bmN0aW9uTm9kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9u
Tm9kZTo6ZmluaXNoUGFyc2luZyk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uUGFyYW1ldGVyczo6
Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RnVuY3Rpb25QYXJhbWV0ZXJzOjpGdW5j
dGlvblBhcmFtZXRlcnMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGdW5jdGlvblBhcmFtZXRl
cnM6On5GdW5jdGlvblBhcmFtZXRlcnMpOiBEZWxldGVkLgorICAgICAgICAqIHBhcnNlci9Ob2Rl
cy5oOgorICAgICAgICAoSlNDOjpQcm9ncmFtTm9kZTo6c3RhcnRDb2x1bW4pOgorICAgICAgICAo
SlNDOjpQcm9ncmFtTm9kZTo6ZW5kQ29sdW1uKToKKyAgICAgICAgKEpTQzo6RXZhbE5vZGU6OnN0
YXJ0Q29sdW1uKToKKyAgICAgICAgKEpTQzo6RXZhbE5vZGU6OmVuZENvbHVtbik6CisgICAgICAg
IChKU0M6OkZ1bmN0aW9uUGFyYW1ldGVyczo6c2l6ZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9u
UGFyYW1ldGVyczo6YXQpOgorICAgICAgICAoSlNDOjpGdW5jdGlvblBhcmFtZXRlcnM6OmFwcGVu
ZCk6CisgICAgICAgIChKU0M6OkZ1bmNFeHByTm9kZTo6Ym9keSk6CisgICAgICAgIChKU0M6OkRl
c3RydWN0dXJpbmdQYXR0ZXJuTm9kZTo6fkRlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSk6CisgICAg
ICAgIChKU0M6OkRlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZTo6aXNCaW5kaW5nTm9kZSk6CisgICAg
ICAgIChKU0M6OkRlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZTo6ZW1pdERpcmVjdEJpbmRpbmcpOgor
ICAgICAgICAoSlNDOjpBcnJheVBhdHRlcm5Ob2RlOjphcHBlbmRJbmRleCk6CisgICAgICAgIChK
U0M6Ok9iamVjdFBhdHRlcm5Ob2RlOjphcHBlbmRFbnRyeSk6CisgICAgICAgIChKU0M6OkJpbmRp
bmdOb2RlOjpib3VuZFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6QmluZGluZ05vZGU6OmRpdm90
U3RhcnQpOgorICAgICAgICAoSlNDOjpCaW5kaW5nTm9kZTo6ZGl2b3RFbmQpOgorICAgICAgICAo
SlNDOjpEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5vZGU6OmJpbmRpbmdzKToKKyAgICAgICAgKEpT
Qzo6RnVuY0RlY2xOb2RlOjpib2R5KToKKyAgICAgICAgKEpTQzo6UGFyYW1ldGVyTm9kZTo6cGF0
dGVybik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlBhcmFtZXRlck5vZGU6Om5leHRQYXJhbSk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZ1bmN0aW9uUGFyYW1ldGVyczo6cGF0dGVybnMpOiBE
ZWxldGVkLgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJz
ZXI8TGV4ZXJUeXBlPjo6UGFyc2VyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46
On5QYXJzZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcik6
CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjphbGxvd0F1dG9tYXRpY1NlbWljb2xv
bik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVNvdXJjZUVsZW1lbnRz
KToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZUJpbmRpbmdQYXR0ZXJu
KToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXJyb3dGdW5jdGlvblNp
bmdsZUV4cHJlc3Npb25Cb2R5U291cmNlRWxlbWVudHMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8
TGV4ZXJUeXBlPjo6dHJ5UGFyc2VEZXN0cnVjdHVyaW5nUGF0dGVybkV4cHJlc3Npb24pOgorICAg
ICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTd2l0Y2hDbGF1c2VzKToKKyAgICAg
ICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlU3dpdGNoRGVmYXVsdENsYXVzZSk6Cisg
ICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUJsb2NrU3RhdGVtZW50KToKKyAg
ICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlU3RhdGVtZW50KToKKyAgICAgICAg
KEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRm9ybWFsUGFyYW1ldGVycyk6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSk6CisgICAgICAgIChK
U0M6OnN0cmluZ0ZvckZ1bmN0aW9uTW9kZSk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VDbGFzcyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZVByaW1hcnlFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46
OnBhcnNlTWVtYmVyRXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUFycm93RnVuY3Rpb25FeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6b3BlcmF0b3JT
dHJpbmcpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBcnJvd0Z1bmN0
aW9uU2luZ2xlRXhwcmVzc2lvbkJvZHkpOiBEZWxldGVkLgorICAgICAgICAqIHBhcnNlci9QYXJz
ZXIuaDoKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKToK
KyAgICAgICAgKEpTQzo6UGFyc2VyOjpsb2NhdGlvbkJlZm9yZUxhc3RUb2tlbik6CisgICAgICAg
IChKU0M6OlBhcnNlcjo6ZmluZENhY2hlZEZ1bmN0aW9uSW5mbyk6CisgICAgICAgIChKU0M6OlBh
cnNlcjo6aXNvZlRva2VuKToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjppc0VuZE9mQXJyb3dGdW5j
dGlvbik6CisgICAgICAgIChKU0M6OlBhcnNlcjo6aXNBcnJvd0Z1bmN0aW9uUGFyYW10ZXJzKToK
KyAgICAgICAgKEpTQzo6UGFyc2VyOjp0b2tlblN0YXJ0KToKKyAgICAgICAgKEpTQzo6UGFyc2Vy
OjpnZXRMYWJlbCk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6YXV0b1NlbWlDb2xvbik6CisgICAg
ICAgIChKU0M6OlBhcnNlcjo6c2V0RW5kT2ZTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpQYXJz
ZXI6OmNhblJlY3Vyc2UpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2Up
OgorICAgICAgICAoSlNDOjpwYXJzZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlckZ1bmN0aW9u
SW5mby5oOgorICAgICAgICAqIHBhcnNlci9QYXJzZXJNb2Rlcy5oOgorICAgICAgICAoSlNDOjpm
dW5jdGlvbk5hbWVJc0luU2NvcGUpOgorICAgICAgICAqIHBhcnNlci9Tb3VyY2VDb2RlLmg6Cisg
ICAgICAgIChKU0M6Om1ha2VTb3VyY2UpOgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlOjpzdWJF
eHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZTo6c3ViQXJyb3dFeHByZXNzaW9u
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYXJzZXIvU291cmNlUHJvdmlkZXJDYWNoZS5oOgorICAg
ICAgICAoSlNDOjpTb3VyY2VQcm92aWRlckNhY2hlOjpnZXQpOgorICAgICAgICAqIHBhcnNlci9T
b3VyY2VQcm92aWRlckNhY2hlSXRlbS5oOgorICAgICAgICAoSlNDOjpTb3VyY2VQcm92aWRlckNh
Y2hlSXRlbTo6ZW5kRnVuY3Rpb25Ub2tlbik6CisgICAgICAgIChKU0M6OlNvdXJjZVByb3ZpZGVy
Q2FjaGVJdGVtOjp1c2VkVmFyaWFibGVzKToKKyAgICAgICAgKEpTQzo6U291cmNlUHJvdmlkZXJD
YWNoZUl0ZW06OndyaXR0ZW5WYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpTb3VyY2VQcm92aWRl
ckNhY2hlSXRlbTo6U291cmNlUHJvdmlkZXJDYWNoZUl0ZW0pOgorICAgICAgICAqIHBhcnNlci9T
eW50YXhDaGVja2VyLmg6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OlN5bnRheENoZWNr
ZXIpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVDbGFzc0V4cHIpOgorICAg
ICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVGdW5jdGlvbkV4cHIpOgorICAgICAgICAo
SlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVGdW5jdGlvbkJvZHkpOgorICAgICAgICAoSlNDOjpT
eW50YXhDaGVja2VyOjpjcmVhdGVBcnJvd0Z1bmN0aW9uRXhwcik6CisgICAgICAgIChKU0M6OlN5
bnRheENoZWNrZXI6OnNldEZ1bmN0aW9uTmFtZVN0YXJ0KToKKyAgICAgICAgKEpTQzo6U3ludGF4
Q2hlY2tlcjo6Y3JlYXRlQXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6
Y3JlYXRlUHJvcGVydHlMaXN0KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRl
RWxlbWVudExpc3QpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVGb3JtYWxQ
YXJhbWV0ZXJMaXN0KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6YXBwZW5kUGFyYW1l
dGVyKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlQ2xhdXNlKToKKyAgICAg
ICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlQ2xhdXNlTGlzdCk6CisgICAgICAgICogcnVu
dGltZS9Db2RlQ2FjaGUuY3BwOgorICAgICAgICAoSlNDOjpDb2RlQ2FjaGU6OmdldEdsb2JhbENv
ZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0RnVuY3Rpb25FeGVjdXRhYmxl
RnJvbUdsb2JhbENvZGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5jcHA6CisgICAg
ICAgIChKU0M6OmNoZWNrU3ludGF4KToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3Bw
OgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6Y2hlY2tTeW50YXgpOgorICAgICAg
ICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpmdW5jdGlv
blByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKiB0ZXN0cy9jb250cm9sRmxvd1Byb2ZpbGVy
L2NvbmRpdGlvbmFsLWV4cHJlc3Npb24uanM6CisgICAgICAgICh0ZXN0Q29uZGl0aW9uYWxGdW5j
dGlvbkNhbGwpOgorCiAyMDE1LTA3LTE0ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBs
ZS5jb20+CiAKICAgICAgICAgQXNzZXJ0aW9ucy5oIHNob3VsZCBpbmNsdWRlIEV4cG9ydE1hY3Jv
cy5oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcAkocmV2
aXNpb24gMTg2ODA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgcHJpdmF0ZToKIHN0YXRpYyBib29s
IHBhcnNlU2NyaXB0KFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJv
ciYgZXJyb3IpCiB7CiAgICAgcmV0dXJuICEhSlNDOjpwYXJzZTxKU0M6OlByb2dyYW1Ob2RlPigK
LSAgICAgICAgdm0sIHNvdXJjZSwgMCwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2Rl
OjpOb3RCdWlsdGluLCAKKyAgICAgICAgdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNl
ckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCAKICAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpO
b3RTdHJpY3QsIEpTUGFyc2VyQ29kZVR5cGU6OlByb2dyYW0sIAogICAgICAgICBlcnJvcik7CiB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRp
bkV4ZWN1dGFibGVzLmNwcAkocmV2aXNpb24gMTg2ODA4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5
LDEwICs2OSw5IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3UKICAg
ICBVbmxpbmtlZEZ1bmN0aW9uS2luZCBraW5kID0gaXNQYXJzaW5nRGVmYXVsdENvbnN0cnVjdG9y
ID8gVW5saW5rZWROb3JtYWxGdW5jdGlvbiA6IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uOwogICAg
IFJlZlB0cjxTb3VyY2VQcm92aWRlcj4gc291cmNlT3ZlcnJpZGUgPSBpc1BhcnNpbmdEZWZhdWx0
Q29uc3RydWN0b3IgPyBzb3VyY2UucHJvdmlkZXIoKSA6IG51bGxwdHI7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFByb2dyYW1Ob2RlPiBwcm9ncmFtID0gcGFyc2U8UHJvZ3JhbU5vZGU+KAotICAgICAg
ICAmbV92bSwgc291cmNlLCAwLCBJZGVudGlmaWVyKCksIGJ1aWx0aW5Nb2RlLCAKLSAgICAgICAg
SlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIAotICAgICAgICBKU1BhcnNlckNvZGVUeXBl
OjpQcm9ncmFtLAotICAgICAgICBlcnJvciwgJnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUsIGNv
bnN0cnVjdG9yS2luZCk7CisgICAgICAgICZtX3ZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgYnVp
bHRpbk1vZGUsIAorICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgSlNQYXJz
ZXJDb2RlVHlwZTo6UHJvZ3JhbSwgZXJyb3IsIAorICAgICAgICAmcG9zaXRpb25CZWZvcmVMYXN0
TmV3bGluZSwgRnVuY3Rpb25QYXJzZU1vZGU6Ok5vdEFGdW5jdGlvbk1vZGUsIGNvbnN0cnVjdG9y
S2luZCk7CiAKICAgICBpZiAoIXByb2dyYW0pIHsKICAgICAgICAgZGF0YUxvZygiRmF0YWwgZXJy
b3IgY29tcGlsaW5nIGJ1aWx0aW4gZnVuY3Rpb24gJyIsIG5hbWUuc3RyaW5nKCksICInOiAiLCBl
cnJvci5tZXNzYWdlKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCShyZXZpc2lvbiAxODY4MDgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02MCwxNSArNjAsMTUgQEAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2sqIGdlbmVyYQogICAgIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUgPSBleGVjdXRh
YmxlLT5pc0J1aWx0aW5GdW5jdGlvbigpID8gSlNQYXJzZXJCdWlsdGluTW9kZTo6QnVpbHRpbiA6
IEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW47CiAgICAgSlNQYXJzZXJTdHJpY3RNb2Rl
IHN0cmljdE1vZGUgPSBleGVjdXRhYmxlLT5pc0luU3RyaWN0Q29udGV4dCgpID8gSlNQYXJzZXJT
dHJpY3RNb2RlOjpTdHJpY3QgOiBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdDsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8RnVuY3Rpb25Ob2RlPiBmdW5jdGlvbiA9IHBhcnNlPEZ1bmN0aW9uTm9k
ZT4oCi0gICAgICAgICZ2bSwgc291cmNlLCBleGVjdXRhYmxlLT5wYXJhbWV0ZXJzKCksIGV4ZWN1
dGFibGUtPm5hbWUoKSwgYnVpbHRpbk1vZGUsCi0gICAgICAgIHN0cmljdE1vZGUsIEpTUGFyc2Vy
Q29kZVR5cGU6OkZ1bmN0aW9uLCBlcnJvciwgMCk7CisgICAgICAgICZ2bSwgc291cmNlLCBleGVj
dXRhYmxlLT5uYW1lKCksIGJ1aWx0aW5Nb2RlLAorICAgICAgICBzdHJpY3RNb2RlLCBKU1BhcnNl
ckNvZGVUeXBlOjpGdW5jdGlvbiwgZXJyb3IsIDAsIGV4ZWN1dGFibGUtPnBhcnNlTW9kZSgpKTsK
IAogICAgIGlmICghZnVuY3Rpb24pIHsKICAgICAgICAgQVNTRVJUKGVycm9yLmlzVmFsaWQoKSk7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGZ1bmN0aW9uLT5maW5pc2hQ
YXJzaW5nKGV4ZWN1dGFibGUtPnBhcmFtZXRlcnMoKSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBleGVj
dXRhYmxlLT5mdW5jdGlvbk1vZGUoKSk7CisgICAgZnVuY3Rpb24tPmZpbmlzaFBhcnNpbmcoZXhl
Y3V0YWJsZS0+bmFtZSgpLCBleGVjdXRhYmxlLT5mdW5jdGlvbk1vZGUoKSk7CiAgICAgZXhlY3V0
YWJsZS0+cmVjb3JkUGFyc2UoZnVuY3Rpb24tPmZlYXR1cmVzKCksIGZ1bmN0aW9uLT5oYXNDYXB0
dXJlZFZhcmlhYmxlcygpKTsKICAgICAKICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBy
ZXN1bHQgPSBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVhdGUoJnZtLCBGdW5jdGlvbkNv
ZGUsCkBAIC04NCw3ICs4NCw2IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtl
ZEZ1bmMKICAgICA6IEJhc2UoKnZtLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX25hbWUobm9kZS0+aWRl
bnQoKSkKICAgICAsIG1faW5mZXJyZWROYW1lKG5vZGUtPmluZmVycmVkTmFtZSgpKQotICAgICwg
bV9wYXJhbWV0ZXJzKG5vZGUtPnBhcmFtZXRlcnMoKSkKICAgICAsIG1fc291cmNlT3ZlcnJpZGUo
V1RGOjptb3ZlKHNvdXJjZU92ZXJyaWRlKSkKICAgICAsIG1fZmlyc3RMaW5lT2Zmc2V0KG5vZGUt
PmZpcnN0TGluZSgpIC0gc291cmNlLmZpcnN0TGluZSgpKQogICAgICwgbV9saW5lQ291bnQobm9k
ZS0+bGFzdExpbmUoKSAtIG5vZGUtPmZpcnN0TGluZSgpKQpAQCAtOTYsNiArOTUsOCBAQCBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jCiAgICAgLCBtX3BhcmFtZXRlcnNT
dGFydE9mZnNldChub2RlLT5wYXJhbWV0ZXJzU3RhcnQoKSkKICAgICAsIG1fdHlwZVByb2ZpbGlu
Z1N0YXJ0T2Zmc2V0KG5vZGUtPmZ1bmN0aW9uS2V5d29yZFN0YXJ0KCkpCiAgICAgLCBtX3R5cGVQ
cm9maWxpbmdFbmRPZmZzZXQobm9kZS0+c3RhcnRTdGFydE9mZnNldCgpICsgbm9kZS0+c291cmNl
KCkubGVuZ3RoKCkgLSAxKQorICAgICwgbV9wYXJhbWV0ZXJDb3VudChub2RlLT5wYXJhbWV0ZXJD
b3VudCgpKQorICAgICwgbV9wYXJzZU1vZGUobm9kZS0+cGFyc2VNb2RlKCkpCiAgICAgLCBtX2Zl
YXR1cmVzKDApCiAgICAgLCBtX2lzSW5TdHJpY3RDb250ZXh0KG5vZGUtPmlzSW5TdHJpY3RDb250
ZXh0KCkpCiAgICAgLCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzKGZhbHNlKQpAQCAtMTA2LDExICsx
MDcsNiBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jCiAgICAgQVNT
RVJUKG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihub2RlLT5jb25z
dHJ1Y3RvcktpbmQoKSkpOwogfQogCi1zaXplX3QgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6
OnBhcmFtZXRlckNvdW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wYXJhbWV0ZXJzLT5zaXpl
KCk7Ci19Ci0KIHZvaWQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSogdGhpc09iamVjdCA9IGpzQ2FzdDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSo+KGNlbGwpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmgJKHJldmlzaW9uIDE4NjgwOCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBA
IC00OCw3ICs0OCw2IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgRGVidWdnZXI7CiBjbGFzcyBG
dW5jdGlvbkJvZHlOb2RlOwogY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwotY2xhc3MgRnVuY3Rp
b25QYXJhbWV0ZXJzOwogY2xhc3MgSlNTY29wZTsKIGNsYXNzIFBhcnNlckVycm9yOwogY2xhc3Mg
U2NyaXB0RXhlY3V0YWJsZTsKQEAgLTEyMiw3ICsxMjEsOCBAQCBwdWJsaWM6CiAgICAgewogICAg
ICAgICByZXR1cm4gKGtpbmQgPT0gQ29kZUZvckNhbGwpID8gbV9zeW1ib2xUYWJsZUZvckNhbGwu
Z2V0KCkgOiBtX3N5bWJvbFRhYmxlRm9yQ29uc3RydWN0LmdldCgpOwogICAgIH0KLSAgICBzaXpl
X3QgcGFyYW1ldGVyQ291bnQoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVyQ291bnQ7IH07CisgICAgRnVuY3Rpb25QYXJzZU1v
ZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZU1vZGU7IH07CiAgICAgYm9vbCBp
c0luU3RyaWN0Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJblN0cmljdENvbnRleHQ7IH0K
ICAgICBGdW5jdGlvbk1vZGUgZnVuY3Rpb25Nb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8RnVuY3Rpb25Nb2RlPihtX2Z1bmN0aW9uTW9kZSk7IH0KICAgICBDb25zdHJ1Y3RvcktpbmQg
Y29uc3RydWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JL
aW5kPihtX2NvbnN0cnVjdG9yS2luZCk7IH0KQEAgLTE1NCw4ICsxNTQsNiBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LmNsZWFyKCk7CiAgICAgfQogCi0gICAgRnVu
Y3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzKCkgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLmdldCgp
OyB9Ci0KICAgICB2b2lkIHJlY29yZFBhcnNlKENvZGVGZWF0dXJlcyBmZWF0dXJlcywgYm9vbCBo
YXNDYXB0dXJlZFZhcmlhYmxlcykKICAgICB7CiAgICAgICAgIG1fZmVhdHVyZXMgPSBmZWF0dXJl
czsKQEAgLTE4MSw3ICsxNzksNiBAQCBwcml2YXRlOgogICAgIFdyaXRlQmFycmllcjxKU1N0cmlu
Zz4gbV9uYW1lVmFsdWU7CiAgICAgV3JpdGVCYXJyaWVyPFN5bWJvbFRhYmxlPiBtX3N5bWJvbFRh
YmxlRm9yQ2FsbDsKICAgICBXcml0ZUJhcnJpZXI8U3ltYm9sVGFibGU+IG1fc3ltYm9sVGFibGVG
b3JDb25zdHJ1Y3Q7Ci0gICAgUmVmUHRyPEZ1bmN0aW9uUGFyYW1ldGVycz4gbV9wYXJhbWV0ZXJz
OwogICAgIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4gbV9zb3VyY2VPdmVycmlkZTsKICAgICB1bnNp
Z25lZCBtX2ZpcnN0TGluZU9mZnNldDsKICAgICB1bnNpZ25lZCBtX2xpbmVDb3VudDsKQEAgLTE5
Myw2ICsxOTAsOCBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fcGFyYW1ldGVyc1N0YXJ0T2Zm
c2V0OwogICAgIHVuc2lnbmVkIG1fdHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0OwogICAgIHVuc2ln
bmVkIG1fdHlwZVByb2ZpbGluZ0VuZE9mZnNldDsKKyAgICB1bnNpZ25lZCBtX3BhcmFtZXRlckNv
dW50OworICAgIEZ1bmN0aW9uUGFyc2VNb2RlIG1fcGFyc2VNb2RlOwogCiAgICAgQ29kZUZlYXR1
cmVzIG1fZmVhdHVyZXM7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHJldmlzaW9uIDE4NjgwOCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzExNiwxMCArMzExNiw2IEBAIFJlZ2lzdGVySUQqIERlc3RydWN0dXJpbmdBc3Np
Z25tZW50Tm9kZToKICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVk
ZWQoZHN0LCBpbml0aWFsaXplci5nZXQoKSk7CiB9CiAKLURlc3RydWN0dXJpbmdQYXR0ZXJuTm9k
ZTo6fkRlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSgpCi17Ci19Ci0KIHN0YXRpYyB2b2lkIGFzc2ln
bkRlZmF1bHRWYWx1ZUlmVW5kZWZpbmVkKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIG1heWJlVW5kZWZpbmVkLCBFeHByZXNzaW9uTm9kZSogZGVmYXVsdFZhbHVlKQog
ewogICAgIEFTU0VSVChkZWZhdWx0VmFsdWUpOwpAQCAtMzI3Nyw3ICszMjczLDcgQEAgdm9pZCBB
cnJheVBhdHRlcm5Ob2RlOjp0b1N0cmluZyhTdHJpbmdCdQogdm9pZCBBcnJheVBhdHRlcm5Ob2Rl
Ojpjb2xsZWN0Qm91bmRJZGVudGlmaWVycyhWZWN0b3I8SWRlbnRpZmllcj4mIGlkZW50aWZpZXJz
KSBjb25zdAogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90YXJnZXRQYXR0ZXJucy5z
aXplKCk7IGkrKykgewotICAgICAgICBpZiAoRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiBub2Rl
ID0gbV90YXJnZXRQYXR0ZXJuc1tpXS5wYXR0ZXJuLmdldCgpKQorICAgICAgICBpZiAoRGVzdHJ1
Y3R1cmluZ1BhdHRlcm5Ob2RlKiBub2RlID0gbV90YXJnZXRQYXR0ZXJuc1tpXS5wYXR0ZXJuKQog
ICAgICAgICAgICAgbm9kZS0+Y29sbGVjdEJvdW5kSWRlbnRpZmllcnMoaWRlbnRpZmllcnMpOwog
ICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5o
CShyZXZpc2lvbiAxODY4MDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1
aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtOTMsOCArOTMsNiBAQCBwdWJsaWM6CiAgICAgfTsK
IAogCi0gICAgdHlwZWRlZiBTeW50YXhDaGVja2VyIEZ1bmN0aW9uQm9keUJ1aWxkZXI7Ci0KICAg
ICB0eXBlZGVmIEV4cHJlc3Npb25Ob2RlKiBFeHByZXNzaW9uOwogICAgIHR5cGVkZWYgSlNDOjpT
b3VyY2VFbGVtZW50cyogU291cmNlRWxlbWVudHM7CiAgICAgdHlwZWRlZiBBcmd1bWVudHNOb2Rl
KiBBcmd1bWVudHM7CkBAIC0xMDksNyArMTA3LDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYgVGVt
cGxhdGVTdHJpbmdMaXN0Tm9kZSogVGVtcGxhdGVTdHJpbmdMaXN0OwogICAgIHR5cGVkZWYgVGVt
cGxhdGVMaXRlcmFsTm9kZSogVGVtcGxhdGVMaXRlcmFsOwogI2VuZGlmCi0gICAgdHlwZWRlZiBQ
YXJhbWV0ZXJOb2RlKiBGb3JtYWxQYXJhbWV0ZXJMaXN0OworICAgIHR5cGVkZWYgRnVuY3Rpb25Q
YXJhbWV0ZXJzKiBGb3JtYWxQYXJhbWV0ZXJMaXN0OwogICAgIHR5cGVkZWYgRnVuY3Rpb25Cb2R5
Tm9kZSogRnVuY3Rpb25Cb2R5OwogI2lmIEVOQUJMRShFUzZfQ0xBU1NfU1lOVEFYKQogICAgIHR5
cGVkZWYgQ2xhc3NFeHByTm9kZSogQ2xhc3NFeHByZXNzaW9uOwpAQCAtMTE5LDEwICsxMTcsMTAg
QEAgcHVibGljOgogICAgIHR5cGVkZWYgQ2FzZUNsYXVzZU5vZGUqIENsYXVzZTsKICAgICB0eXBl
ZGVmIENvbnN0RGVjbE5vZGUqIENvbnN0RGVjbExpc3Q7CiAgICAgdHlwZWRlZiBzdGQ6OnBhaXI8
RXhwcmVzc2lvbk5vZGUqLCBCaW5hcnlPcEluZm8+IEJpbmFyeU9wZXJhbmQ7Ci0gICAgdHlwZWRl
ZiBSZWZQdHI8RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlPiBEZXN0cnVjdHVyaW5nUGF0dGVybjsK
LSAgICB0eXBlZGVmIFJlZlB0cjxBcnJheVBhdHRlcm5Ob2RlPiBBcnJheVBhdHRlcm47Ci0gICAg
dHlwZWRlZiBSZWZQdHI8T2JqZWN0UGF0dGVybk5vZGU+IE9iamVjdFBhdHRlcm47Ci0gICAgdHlw
ZWRlZiBSZWZQdHI8QmluZGluZ05vZGU+IEJpbmRpbmdQYXR0ZXJuOworICAgIHR5cGVkZWYgRGVz
dHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiBEZXN0cnVjdHVyaW5nUGF0dGVybjsKKyAgICB0eXBlZGVm
IEFycmF5UGF0dGVybk5vZGUqIEFycmF5UGF0dGVybjsKKyAgICB0eXBlZGVmIE9iamVjdFBhdHRl
cm5Ob2RlKiBPYmplY3RQYXR0ZXJuOworICAgIHR5cGVkZWYgQmluZGluZ05vZGUqIEJpbmRpbmdQ
YXR0ZXJuOwogICAgIHN0YXRpYyBjb25zdCBib29sIENyZWF0ZXNBU1QgPSB0cnVlOwogICAgIHN0
YXRpYyBjb25zdCBib29sIE5lZWRzRnJlZVZhcmlhYmxlSW5mbyA9IHRydWU7CiAgICAgc3RhdGlj
IGNvbnN0IGJvb2wgQ2FuVXNlRnVuY3Rpb25DYWNoZSA9IHRydWU7CkBAIC0zNDQsMTEgKzM0Miwx
MSBAQCBwdWJsaWM6CiAgICAgfQogI2VuZGlmCiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRl
RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IFBhcnNl
ckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgaW5mbykKKyAgICBFeHByZXNzaW9uTm9kZSogY3Jl
YXRlRnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IFBh
cnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgZnVuY3Rpb25JbmZvKQogICAgIHsKLSAgICAg
ICAgRnVuY0V4cHJOb2RlKiByZXN1bHQgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIEZ1bmNFeHByTm9k
ZShsb2NhdGlvbiwgKmluZm8ubmFtZSwgaW5mby5ib2R5LAotICAgICAgICAgICAgbV9zb3VyY2VD
b2RlLT5zdWJFeHByZXNzaW9uKGluZm8uc3RhcnRGdW5jdGlvbk9mZnNldCwgaW5mby5lbmRGdW5j
dGlvbk9mZnNldCwgaW5mby5ib2R5U3RhcnRMaW5lLCBpbmZvLmJvZHlTdGFydENvbHVtbiksIGlu
Zm8ucGFyYW1ldGVycyk7Ci0gICAgICAgIGluZm8uYm9keS0+c2V0TG9jKGluZm8uYm9keVN0YXJ0
TGluZSwgaW5mby5ib2R5RW5kTGluZSwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxp
bmVTdGFydE9mZnNldCk7CisgICAgICAgIEZ1bmNFeHByTm9kZSogcmVzdWx0ID0gbmV3IChtX3Bh
cnNlckFyZW5hKSBGdW5jRXhwck5vZGUobG9jYXRpb24sICpmdW5jdGlvbkluZm8ubmFtZSwgZnVu
Y3Rpb25JbmZvLmJvZHksCisgICAgICAgICAgICBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24o
ZnVuY3Rpb25JbmZvLnN0YXJ0T2Zmc2V0LCBmdW5jdGlvbkluZm8uZW5kT2Zmc2V0LCBmdW5jdGlv
bkluZm8uc3RhcnRMaW5lLCBmdW5jdGlvbkluZm8uYm9keVN0YXJ0Q29sdW1uKSk7CisgICAgICAg
IGZ1bmN0aW9uSW5mby5ib2R5LT5zZXRMb2MoZnVuY3Rpb25JbmZvLnN0YXJ0TGluZSwgZnVuY3Rp
b25JbmZvLmVuZExpbmUsIGxvY2F0aW9uLnN0YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRP
ZmZzZXQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMzU2LDQ1ICszNTQs
NDEgQEAgcHVibGljOgogICAgICAgICBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRp
b24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIAogICAgICAgICB1bnNpZ25l
ZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3Rh
cnQsIAogICAgICAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQs
IGJvb2wgaW5TdHJpY3RDb250ZXh0LCAKLSAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVj
dG9yS2luZCkKKyAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgdW5zaWdu
ZWQgcGFyYW1ldGVyQ291bnQsIEZ1bmN0aW9uUGFyc2VNb2RlIG1vZGUpCiAgICAgewogICAgICAg
ICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5jdGlvbkJvZHlOb2RlKAogICAgICAgICAg
ICAgbV9wYXJzZXJBcmVuYSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIHN0YXJ0Q29sdW1u
LCBlbmRDb2x1bW4sIAogICAgICAgICAgICAgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9u
TmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIAotICAgICAgICAgICAgaW5TdHJpY3RDb250ZXh0
LCBjb25zdHJ1Y3RvcktpbmQpOworICAgICAgICAgICAgaW5TdHJpY3RDb250ZXh0LCBjb25zdHJ1
Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBtb2RlKTsKICAgICB9CiAKLSNpZiBFTkFCTEUoRVM2
X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVBcnJvd0Z1
bmN0aW9uRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBQYXJzZXJG
dW5jdGlvbkluZm88QVNUQnVpbGRlcj4mIGluZm8pCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0
ZUFycm93RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0
IFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgZnVuY3Rpb25JbmZvKQogICAgIHsKLSAg
ICAgICAgU291cmNlQ29kZSBzb3VyY2UgPSBpbmZvLmZ1bmN0aW9uQm9keVR5cGUgPT0gQXJyb3dG
dW5jdGlvbkJvZHlFeHByZXNzaW9uCi0gICAgICAgICAgICA/IG1fc291cmNlQ29kZS0+c3ViQXJy
b3dFeHByZXNzaW9uKGluZm8uYXJyb3dGdW5jdGlvbk9mZnNldCwgaW5mby5lbmRGdW5jdGlvbk9m
ZnNldCwgaW5mby5ib2R5U3RhcnRMaW5lLCBpbmZvLmJvZHlTdGFydENvbHVtbikKLSAgICAgICAg
ICAgIDogbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKGluZm8uc3RhcnRGdW5jdGlvbk9mZnNl
dCwgaW5mby5lbmRGdW5jdGlvbk9mZnNldCwgaW5mby5ib2R5U3RhcnRMaW5lLCBpbmZvLmJvZHlT
dGFydENvbHVtbik7CisgICAgICAgIFNvdXJjZUNvZGUgc291cmNlID0gbV9zb3VyY2VDb2RlLT5z
dWJFeHByZXNzaW9uKGZ1bmN0aW9uSW5mby5zdGFydE9mZnNldCwgZnVuY3Rpb25JbmZvLmVuZE9m
ZnNldCwgZnVuY3Rpb25JbmZvLnN0YXJ0TGluZSwgZnVuY3Rpb25JbmZvLmJvZHlTdGFydENvbHVt
bik7CiAKLSAgICAgICAgRnVuY0V4cHJOb2RlKiByZXN1bHQgPSBuZXcgKG1fcGFyc2VyQXJlbmEp
IEZ1bmNFeHByTm9kZShsb2NhdGlvbiwgKmluZm8ubmFtZSwgaW5mby5ib2R5LCBzb3VyY2UsIGlu
Zm8ucGFyYW1ldGVycyk7Ci0gICAgICAgIGluZm8uYm9keS0+c2V0TG9jKGluZm8uYm9keVN0YXJ0
TGluZSwgaW5mby5ib2R5RW5kTGluZSwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxp
bmVTdGFydE9mZnNldCk7CisgICAgICAgIEZ1bmNFeHByTm9kZSogcmVzdWx0ID0gbmV3IChtX3Bh
cnNlckFyZW5hKSBGdW5jRXhwck5vZGUobG9jYXRpb24sICpmdW5jdGlvbkluZm8ubmFtZSwgZnVu
Y3Rpb25JbmZvLmJvZHksIHNvdXJjZSk7CisgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5LT5zZXRM
b2MoZnVuY3Rpb25JbmZvLnN0YXJ0TGluZSwgZnVuY3Rpb25JbmZvLmVuZExpbmUsIGxvY2F0aW9u
LnN0YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOwogICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIH0KLSNlbmRpZgogCiAgICAgTkVWRVJfSU5MSU5FIFByb3BlcnR5Tm9kZSog
Y3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgYm9vbCwKLSAgICAgICAgY29uc3QgSWRlbnRp
ZmllciogbmFtZSwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+JiBpbmZvLCBT
dXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKQorICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBuYW1l
LCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4mIGZ1bmN0aW9uSW5mbywgU3Vw
ZXJCaW5kaW5nIHN1cGVyQmluZGluZykKICAgICB7CiAgICAgICAgIEFTU0VSVChuYW1lKTsKLSAg
ICAgICAgaW5mby5ib2R5LT5zZXRMb2MoaW5mby5ib2R5U3RhcnRMaW5lLCBpbmZvLmJvZHlFbmRM
aW5lLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKLSAg
ICAgICAgaW5mby5ib2R5LT5zZXRJbmZlcnJlZE5hbWUoKm5hbWUpOwotICAgICAgICBTb3VyY2VD
b2RlIHNvdXJjZSA9IG1fc291cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihpbmZvLnN0YXJ0RnVuY3Rp
b25PZmZzZXQsIGluZm8uZW5kRnVuY3Rpb25PZmZzZXQsIGluZm8uYm9keVN0YXJ0TGluZSwgaW5m
by5ib2R5U3RhcnRDb2x1bW4pOwotICAgICAgICBGdW5jRXhwck5vZGUqIGZ1bmNFeHByID0gbmV3
IChtX3BhcnNlckFyZW5hKSBGdW5jRXhwck5vZGUobG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFt
ZXMtPm51bGxJZGVudGlmaWVyLCBpbmZvLmJvZHksIHNvdXJjZSwgaW5mby5wYXJhbWV0ZXJzKTsK
KyAgICAgICAgZnVuY3Rpb25JbmZvLmJvZHktPnNldExvYyhmdW5jdGlvbkluZm8uc3RhcnRMaW5l
LCBmdW5jdGlvbkluZm8uZW5kTGluZSwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxp
bmVTdGFydE9mZnNldCk7CisgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5LT5zZXRJbmZlcnJlZE5h
bWUoKm5hbWUpOworICAgICAgICBTb3VyY2VDb2RlIHNvdXJjZSA9IG1fc291cmNlQ29kZS0+c3Vi
RXhwcmVzc2lvbihmdW5jdGlvbkluZm8uc3RhcnRPZmZzZXQsIGZ1bmN0aW9uSW5mby5lbmRPZmZz
ZXQsIGZ1bmN0aW9uSW5mby5zdGFydExpbmUsIGZ1bmN0aW9uSW5mby5ib2R5U3RhcnRDb2x1bW4p
OworICAgICAgICBGdW5jRXhwck5vZGUqIGZ1bmNFeHByID0gbmV3IChtX3BhcnNlckFyZW5hKSBG
dW5jRXhwck5vZGUobG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVy
LCBmdW5jdGlvbkluZm8uYm9keSwgc291cmNlKTsKICAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJz
ZXJBcmVuYSkgUHJvcGVydHlOb2RlKCpuYW1lLCBmdW5jRXhwciwgdHlwZSwgUHJvcGVydHlOb2Rl
OjpVbmtub3duLCBzdXBlckJpbmRpbmcpOwogICAgIH0KICAgICAKICAgICBORVZFUl9JTkxJTkUg
UHJvcGVydHlOb2RlKiBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KFZNKiB2bSwgUGFyc2Vy
QXJlbmEmIHBhcnNlckFyZW5hLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQcm9w
ZXJ0eU5vZGU6OlR5cGUgdHlwZSwgYm9vbCwKLSAgICAgICAgZG91YmxlIG5hbWUsIGNvbnN0IFBh
cnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgaW5mbywgU3VwZXJCaW5kaW5nIHN1cGVyQmlu
ZGluZykKKyAgICAgICAgZG91YmxlIG5hbWUsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RC
dWlsZGVyPiYgZnVuY3Rpb25JbmZvLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKQogICAgIHsK
LSAgICAgICAgaW5mby5ib2R5LT5zZXRMb2MoaW5mby5ib2R5U3RhcnRMaW5lLCBpbmZvLmJvZHlF
bmRMaW5lLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsK
KyAgICAgICAgZnVuY3Rpb25JbmZvLmJvZHktPnNldExvYyhmdW5jdGlvbkluZm8uc3RhcnRMaW5l
LCBmdW5jdGlvbkluZm8uZW5kTGluZSwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxp
bmVTdGFydE9mZnNldCk7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gcGFyc2Vy
QXJlbmEuaWRlbnRpZmllckFyZW5hKCkubWFrZU51bWVyaWNJZGVudGlmaWVyKHZtLCBuYW1lKTsK
LSAgICAgICAgU291cmNlQ29kZSBzb3VyY2UgPSBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24o
aW5mby5zdGFydEZ1bmN0aW9uT2Zmc2V0LCBpbmZvLmVuZEZ1bmN0aW9uT2Zmc2V0LCBpbmZvLmJv
ZHlTdGFydExpbmUsIGluZm8uYm9keVN0YXJ0Q29sdW1uKTsKLSAgICAgICAgRnVuY0V4cHJOb2Rl
KiBmdW5jRXhwciA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRnVuY0V4cHJOb2RlKGxvY2F0aW9uLCB2
bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIsIGluZm8uYm9keSwgc291cmNlLCBpbmZv
LnBhcmFtZXRlcnMpOworICAgICAgICBTb3VyY2VDb2RlIHNvdXJjZSA9IG1fc291cmNlQ29kZS0+
c3ViRXhwcmVzc2lvbihmdW5jdGlvbkluZm8uc3RhcnRPZmZzZXQsIGZ1bmN0aW9uSW5mby5lbmRP
ZmZzZXQsIGZ1bmN0aW9uSW5mby5zdGFydExpbmUsIGZ1bmN0aW9uSW5mby5ib2R5U3RhcnRDb2x1
bW4pOworICAgICAgICBGdW5jRXhwck5vZGUqIGZ1bmNFeHByID0gbmV3IChtX3BhcnNlckFyZW5h
KSBGdW5jRXhwck5vZGUobG9jYXRpb24sIHZtLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmll
ciwgZnVuY3Rpb25JbmZvLmJvZHksIHNvdXJjZSk7CiAgICAgICAgIHJldHVybiBuZXcgKG1fcGFy
c2VyQXJlbmEpIFByb3BlcnR5Tm9kZShpZGVudCwgZnVuY0V4cHIsIHR5cGUsIFByb3BlcnR5Tm9k
ZTo6VW5rbm93biwgc3VwZXJCaW5kaW5nKTsKICAgICB9CiAKQEAgLTQyMCwyMSArNDE0LDIxIEBA
IHB1YmxpYzoKICAgICBFbGVtZW50Tm9kZSogY3JlYXRlRWxlbWVudExpc3QoaW50IGVsaXNpb25z
LCBFeHByZXNzaW9uTm9kZSogZXhwcikgeyByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBFbGVt
ZW50Tm9kZShlbGlzaW9ucywgZXhwcik7IH0KICAgICBFbGVtZW50Tm9kZSogY3JlYXRlRWxlbWVu
dExpc3QoRWxlbWVudE5vZGUqIGVsZW1zLCBpbnQgZWxpc2lvbnMsIEV4cHJlc3Npb25Ob2RlKiBl
eHByKSB7IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEVsZW1lbnROb2RlKGVsZW1zLCBlbGlz
aW9ucywgZXhwcik7IH0KIAotICAgIFBhcmFtZXRlck5vZGUqIGNyZWF0ZUZvcm1hbFBhcmFtZXRl
ckxpc3QoRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gcGF0dGVybikgeyByZXR1cm4gbmV3IChtX3BhcnNl
ckFyZW5hKSBQYXJhbWV0ZXJOb2RlKHBhdHRlcm4pOyB9Ci0gICAgUGFyYW1ldGVyTm9kZSogY3Jl
YXRlRm9ybWFsUGFyYW1ldGVyTGlzdChQYXJhbWV0ZXJOb2RlKiBsaXN0LCBEZXN0cnVjdHVyaW5n
UGF0dGVybiBwYXR0ZXJuKSB7IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFBhcmFtZXRlck5v
ZGUobGlzdCwgcGF0dGVybik7IH0KKyAgICBGb3JtYWxQYXJhbWV0ZXJMaXN0IGNyZWF0ZUZvcm1h
bFBhcmFtZXRlckxpc3QoKSB7IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEZ1bmN0aW9uUGFy
YW1ldGVycygpOyB9CisgICAgdm9pZCBhcHBlbmRQYXJhbWV0ZXIoRm9ybWFsUGFyYW1ldGVyTGlz
dCBsaXN0LCBEZXN0cnVjdHVyaW5nUGF0dGVybiBwYXR0ZXJuKSB7IGxpc3QtPmFwcGVuZChwYXR0
ZXJuKTsgfQogCiAgICAgQ2FzZUNsYXVzZU5vZGUqIGNyZWF0ZUNsYXVzZShFeHByZXNzaW9uTm9k
ZSogZXhwciwgSlNDOjpTb3VyY2VFbGVtZW50cyogc3RhdGVtZW50cykgeyByZXR1cm4gbmV3ICht
X3BhcnNlckFyZW5hKSBDYXNlQ2xhdXNlTm9kZShleHByLCBzdGF0ZW1lbnRzKTsgfQogICAgIENs
YXVzZUxpc3ROb2RlKiBjcmVhdGVDbGF1c2VMaXN0KENhc2VDbGF1c2VOb2RlKiBjbGF1c2UpIHsg
cmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgQ2xhdXNlTGlzdE5vZGUoY2xhdXNlKTsgfQogICAg
IENsYXVzZUxpc3ROb2RlKiBjcmVhdGVDbGF1c2VMaXN0KENsYXVzZUxpc3ROb2RlKiB0YWlsLCBD
YXNlQ2xhdXNlTm9kZSogY2xhdXNlKSB7IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIENsYXVz
ZUxpc3ROb2RlKHRhaWwsIGNsYXVzZSk7IH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZ1
bmNEZWNsU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IFBh
cnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgaW5mbykKKyAgICBTdGF0ZW1lbnROb2RlKiBj
cmVhdGVGdW5jRGVjbFN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBj
b25zdCBQYXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4mIGZ1bmN0aW9uSW5mbykKICAgICB7
Ci0gICAgICAgIEZ1bmNEZWNsTm9kZSogZGVjbCA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRnVuY0Rl
Y2xOb2RlKGxvY2F0aW9uLCAqaW5mby5uYW1lLCBpbmZvLmJvZHksCi0gICAgICAgICAgICBtX3Nv
dXJjZUNvZGUtPnN1YkV4cHJlc3Npb24oaW5mby5zdGFydEZ1bmN0aW9uT2Zmc2V0LCBpbmZvLmVu
ZEZ1bmN0aW9uT2Zmc2V0LCBpbmZvLmJvZHlTdGFydExpbmUsIGluZm8uYm9keVN0YXJ0Q29sdW1u
KSwgaW5mby5wYXJhbWV0ZXJzKTsKLSAgICAgICAgaWYgKCppbmZvLm5hbWUgPT0gbV92bS0+cHJv
cGVydHlOYW1lcy0+YXJndW1lbnRzKQorICAgICAgICBGdW5jRGVjbE5vZGUqIGRlY2wgPSBuZXcg
KG1fcGFyc2VyQXJlbmEpIEZ1bmNEZWNsTm9kZShsb2NhdGlvbiwgKmZ1bmN0aW9uSW5mby5uYW1l
LCBmdW5jdGlvbkluZm8uYm9keSwKKyAgICAgICAgICAgIG1fc291cmNlQ29kZS0+c3ViRXhwcmVz
c2lvbihmdW5jdGlvbkluZm8uc3RhcnRPZmZzZXQsIGZ1bmN0aW9uSW5mby5lbmRPZmZzZXQsIGZ1
bmN0aW9uSW5mby5zdGFydExpbmUsIGZ1bmN0aW9uSW5mby5ib2R5U3RhcnRDb2x1bW4pKTsKKyAg
ICAgICAgaWYgKCpmdW5jdGlvbkluZm8ubmFtZSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcmd1
bWVudHMpCiAgICAgICAgICAgICB1c2VzQXJndW1lbnRzKCk7CiAgICAgICAgIG1fc2NvcGUubV9m
dW5jRGVjbGFyYXRpb25zLmFwcGVuZChkZWNsLT5ib2R5KCkpOwotICAgICAgICBpbmZvLmJvZHkt
PnNldExvYyhpbmZvLmJvZHlTdGFydExpbmUsIGluZm8uYm9keUVuZExpbmUsIGxvY2F0aW9uLnN0
YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOworICAgICAgICBmdW5jdGlvbklu
Zm8uYm9keS0+c2V0TG9jKGZ1bmN0aW9uSW5mby5zdGFydExpbmUsIGZ1bmN0aW9uSW5mby5lbmRM
aW5lLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKICAg
ICAgICAgcmV0dXJuIGRlY2w7CiAgICAgfQogCkBAIC00ODYsOSArNDgwLDkgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKLSAgICBTdGF0ZW1lbnROb2RlKiBj
cmVhdGVGb3JJbkxvb3AoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUGFzc1JlZlB0
cjxEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU+IHBhdHRlcm4sIEV4cHJlc3Npb25Ob2RlKiBpdGVy
LCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZVN0YXJ0
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZURpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZUVu
ZCwgaW50IHN0YXJ0LCBpbnQgZW5kKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZvckluTG9v
cChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBEZXN0cnVjdHVyaW5nUGF0dGVybiBw
YXR0ZXJuLCBFeHByZXNzaW9uTm9kZSogaXRlciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50cywg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGVTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVEaXZv
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVFbmQsIGludCBzdGFydCwgaW50IGVuZCkKICAgICB7
Ci0gICAgICAgIGF1dG8gbGV4cHIgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIERlc3RydWN0dXJpbmdB
c3NpZ25tZW50Tm9kZShsb2NhdGlvbiwgcGF0dGVybi5nZXQoKSwgMCk7CisgICAgICAgIGF1dG8g
bGV4cHIgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIERlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZShs
b2NhdGlvbiwgcGF0dGVybiwgMCk7CiAgICAgICAgIHJldHVybiBjcmVhdGVGb3JJbkxvb3AobG9j
YXRpb24sIGxleHByLCBpdGVyLCBzdGF0ZW1lbnRzLCBlU3RhcnQsIGVEaXZvdCwgZUVuZCwgc3Rh
cnQsIGVuZCk7CiAgICAgfQogICAgIApAQCAtNTAwLDkgKzQ5NCw5IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRl
Rm9yT2ZMb29wKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFBhc3NSZWZQdHI8RGVz
dHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlPiBwYXR0ZXJuLCBFeHByZXNzaW9uTm9kZSogaXRlciwgU3Rh
dGVtZW50Tm9kZSogc3RhdGVtZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVTdGFydCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGVEaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVFbmQsIGlu
dCBzdGFydCwgaW50IGVuZCkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVGb3JPZkxvb3AoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gcGF0dGVy
biwgRXhwcmVzc2lvbk5vZGUqIGl0ZXIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudHMsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBlU3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlRGl2b3QsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBlRW5kLCBpbnQgc3RhcnQsIGludCBlbmQpCiAgICAgewotICAg
ICAgICBhdXRvIGxleHByID0gbmV3IChtX3BhcnNlckFyZW5hKSBEZXN0cnVjdHVyaW5nQXNzaWdu
bWVudE5vZGUobG9jYXRpb24sIHBhdHRlcm4uZ2V0KCksIDApOworICAgICAgICBhdXRvIGxleHBy
ID0gbmV3IChtX3BhcnNlckFyZW5hKSBEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5vZGUobG9jYXRp
b24sIHBhdHRlcm4sIDApOwogICAgICAgICByZXR1cm4gY3JlYXRlRm9yT2ZMb29wKGxvY2F0aW9u
LCBsZXhwciwgaXRlciwgc3RhdGVtZW50cywgZVN0YXJ0LCBlRGl2b3QsIGVFbmQsIHN0YXJ0LCBl
bmQpOwogICAgIH0KIApAQCAtNzM4LDE0ICs3MzIsMTQgQEAgcHVibGljOgogCiAgICAgYm9vbCBp
c1Jlc29sdmUoRXhwcmVzc2lvbk5vZGUqIGV4cHIpIGNvbnN0IHsgcmV0dXJuIGV4cHItPmlzUmVz
b2x2ZU5vZGUoKTsgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZURlc3RydWN0dXJpbmdB
c3NpZ25tZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFBhc3NSZWZQdHI8RGVz
dHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlPiBwYXR0ZXJuLCBFeHByZXNzaW9uTm9kZSogaW5pdGlhbGl6
ZXIpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZURlc3RydWN0dXJpbmdBc3NpZ25tZW50KGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIERlc3RydWN0dXJpbmdQYXR0ZXJuIHBhdHRl
cm4sIEV4cHJlc3Npb25Ob2RlKiBpbml0aWFsaXplcikKICAgICB7Ci0gICAgICAgIHJldHVybiBu
ZXcgKG1fcGFyc2VyQXJlbmEpIERlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZShsb2NhdGlvbiwg
cGF0dGVybi5nZXQoKSwgaW5pdGlhbGl6ZXIpOworICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNl
ckFyZW5hKSBEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5vZGUobG9jYXRpb24sIHBhdHRlcm4sIGlu
aXRpYWxpemVyKTsKICAgICB9CiAgICAgCiAgICAgQXJyYXlQYXR0ZXJuIGNyZWF0ZUFycmF5UGF0
dGVybihjb25zdCBKU1Rva2VuTG9jYXRpb24mKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEFycmF5
UGF0dGVybk5vZGU6OmNyZWF0ZSgpOworICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5h
KSBBcnJheVBhdHRlcm5Ob2RlKCk7CiAgICAgfQogICAgIAogICAgIHZvaWQgYXBwZW5kQXJyYXlQ
YXR0ZXJuU2tpcEVudHJ5KEFycmF5UGF0dGVybiBub2RlLCBjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uKQpAQCAtNzU1LDMyICs3NDksMzIgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBl
bmRBcnJheVBhdHRlcm5FbnRyeShBcnJheVBhdHRlcm4gbm9kZSwgY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbiwgRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gcGF0dGVybiwgRXhwcmVzc2lvbk5v
ZGUqIGRlZmF1bHRWYWx1ZSkKICAgICB7Ci0gICAgICAgIG5vZGUtPmFwcGVuZEluZGV4KEFycmF5
UGF0dGVybk5vZGU6OkJpbmRpbmdUeXBlOjpFbGVtZW50LCBsb2NhdGlvbiwgcGF0dGVybi5nZXQo
KSwgZGVmYXVsdFZhbHVlKTsKKyAgICAgICAgbm9kZS0+YXBwZW5kSW5kZXgoQXJyYXlQYXR0ZXJu
Tm9kZTo6QmluZGluZ1R5cGU6OkVsZW1lbnQsIGxvY2F0aW9uLCBwYXR0ZXJuLCBkZWZhdWx0VmFs
dWUpOwogICAgIH0KIAogICAgIHZvaWQgYXBwZW5kQXJyYXlQYXR0ZXJuUmVzdEVudHJ5KEFycmF5
UGF0dGVybiBub2RlLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBEZXN0cnVjdHVy
aW5nUGF0dGVybiBwYXR0ZXJuKQogICAgIHsKLSAgICAgICAgbm9kZS0+YXBwZW5kSW5kZXgoQXJy
YXlQYXR0ZXJuTm9kZTo6QmluZGluZ1R5cGU6OlJlc3RFbGVtZW50LCBsb2NhdGlvbiwgcGF0dGVy
bi5nZXQoKSwgbnVsbHB0cik7CisgICAgICAgIG5vZGUtPmFwcGVuZEluZGV4KEFycmF5UGF0dGVy
bk5vZGU6OkJpbmRpbmdUeXBlOjpSZXN0RWxlbWVudCwgbG9jYXRpb24sIHBhdHRlcm4sIG51bGxw
dHIpOwogICAgIH0KIAogICAgIHZvaWQgZmluaXNoQXJyYXlQYXR0ZXJuKEFycmF5UGF0dGVybiBu
b2RlLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCiAgICAgewotICAgICAg
ICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLmdldCgpLCBkaXZvdFN0YXJ0LCBkaXZvdCwgZGl2
b3RFbmQpOworICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBkaXZvdFN0YXJ0LCBk
aXZvdCwgZGl2b3RFbmQpOwogICAgIH0KICAgICAKICAgICBPYmplY3RQYXR0ZXJuIGNyZWF0ZU9i
amVjdFBhdHRlcm4oY29uc3QgSlNUb2tlbkxvY2F0aW9uJikKICAgICB7Ci0gICAgICAgIHJldHVy
biBPYmplY3RQYXR0ZXJuTm9kZTo6Y3JlYXRlKCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fcGFy
c2VyQXJlbmEpIE9iamVjdFBhdHRlcm5Ob2RlKCk7CiAgICAgfQogICAgIAogICAgIHZvaWQgYXBw
ZW5kT2JqZWN0UGF0dGVybkVudHJ5KE9iamVjdFBhdHRlcm4gbm9kZSwgY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgYm9vbCB3YXNTdHJpbmcsIGNvbnN0IElkZW50aWZpZXImIGlkZW50
aWZpZXIsIERlc3RydWN0dXJpbmdQYXR0ZXJuIHBhdHRlcm4sIEV4cHJlc3Npb25Ob2RlKiBkZWZh
dWx0VmFsdWUpCiAgICAgewotICAgICAgICBub2RlLT5hcHBlbmRFbnRyeShsb2NhdGlvbiwgaWRl
bnRpZmllciwgd2FzU3RyaW5nLCBwYXR0ZXJuLmdldCgpLCBkZWZhdWx0VmFsdWUpOworICAgICAg
ICBub2RlLT5hcHBlbmRFbnRyeShsb2NhdGlvbiwgaWRlbnRpZmllciwgd2FzU3RyaW5nLCBwYXR0
ZXJuLCBkZWZhdWx0VmFsdWUpOwogICAgIH0KICAgICAKICAgICBCaW5kaW5nUGF0dGVybiBjcmVh
dGVCaW5kaW5nTG9jYXRpb24oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmll
ciYgYm91bmRQcm9wZXJ0eSwgY29uc3QgSlNUZXh0UG9zaXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZW5kKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEJpbmRpbmdOb2RlOjpjcmVh
dGUoYm91bmRQcm9wZXJ0eSwgc3RhcnQsIGVuZCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fcGFy
c2VyQXJlbmEpIEJpbmRpbmdOb2RlKGJvdW5kUHJvcGVydHksIHN0YXJ0LCBlbmQpOwogICAgIH0K
IAogICAgIHZvaWQgc2V0RW5kT2Zmc2V0KE5vZGUqIG5vZGUsIGludCBvZmZzZXQpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAkocmV2aXNpb24gMTg2ODA4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ5NCw3ICs0OTQsNyBAQCBzdGF0aWMgY29uc3QgTENoYXIgc2luZ2xlQ2hhcmFjdGVyRXNjYXBl
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogTGV4ZXI8VD46OkxleGVyKFZNKiB2bSwgSlNQYXJz
ZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSkKLSAgICA6IG1faXNSZXBhcnNpbmcoZmFsc2UpCisg
ICAgOiBtX2lzUmVwYXJzaW5nRnVuY3Rpb24oZmFsc2UpCiAgICAgLCBtX3ZtKHZtKQogICAgICwg
bV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKGJ1aWx0aW5Nb2RlID09IEpTUGFyc2VyQnVpbHRpbk1v
ZGU6OkJ1aWx0aW4pCiB7CkBAIC0xNzE1LDcgKzE3MTUsNiBAQCBib29sIExleGVyPFQ+OjpuZXh0
VG9rZW5Jc0NvbG9uKCkKICAgICByZXR1cm4gY29kZSA8IG1fY29kZUVuZCAmJiAqY29kZSA9PSAn
Oic7CiB9CiAKLSNpZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQogdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CiB2b2lkIExleGVyPFQ+OjpzZXRUb2tlblBvc2l0aW9uKEpTVG9rZW4qIHRv
a2VuUmVjb3JkKQogewpAQCAtMTcyNSw3ICsxNzI0LDYgQEAgdm9pZCBMZXhlcjxUPjo6c2V0VG9r
ZW5Qb3NpdGlvbihKU1Rva2VuKgogICAgIHRva2VuRGF0YS0+bGluZVN0YXJ0T2Zmc2V0ID0gY3Vy
cmVudExpbmVTdGFydE9mZnNldCgpOwogICAgIEFTU0VSVCh0b2tlbkRhdGEtPm9mZnNldCA+PSB0
b2tlbkRhdGEtPmxpbmVTdGFydE9mZnNldCk7CiB9Ci0jZW5kaWYKIAogdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CiBKU1Rva2VuVHlwZSBMZXhlcjxUPjo6bGV4KEpTVG9rZW4qIHRva2VuUmVjb3JkLCB1
bnNpZ25lZCBsZXhlckZsYWdzLCBib29sIHN0cmljdE1vZGUpCkBAIC0yNDExLDcgKzI0MDksNyBA
QCB2b2lkIExleGVyPFQ+OjpjbGVhcigpCiAgICAgVmVjdG9yPFVDaGFyPiBuZXdCdWZmZXJGb3JS
YXdUZW1wbGF0ZVN0cmluZzE2OwogICAgIG1fYnVmZmVyRm9yUmF3VGVtcGxhdGVTdHJpbmcxNi5z
d2FwKG5ld0J1ZmZlckZvclJhd1RlbXBsYXRlU3RyaW5nMTYpOwogCi0gICAgbV9pc1JlcGFyc2lu
ZyA9IGZhbHNlOworICAgIG1faXNSZXBhcnNpbmdGdW5jdGlvbiA9IGZhbHNlOwogfQogCiAvLyBJ
bnN0YW50aWF0ZSB0aGUgdHdvIGZsYXZvcnMgb2YgTGV4ZXIgd2UgbmVlZCBpbnN0ZWFkIG9mIHB1
dHRpbmcgbW9zdCBvZiB0aGlzIGZpbGUgaW4gTGV4ZXIuaApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9MZXhlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTGV4ZXIuaAkocmV2aXNpb24gMTg2ODA4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9MZXhlci5oCSh3b3JraW5nIGNvcHkpCkBAIC04NCwxMiArODQsMTAgQEAgcHVi
bGljOgogCiAgICAgLy8gRnVuY3Rpb25zIHRvIHNldCB1cCBwYXJzaW5nLgogICAgIHZvaWQgc2V0
Q29kZShjb25zdCBTb3VyY2VDb2RlJiwgUGFyc2VyQXJlbmEqKTsKLSAgICB2b2lkIHNldElzUmVw
YXJzaW5nKCkgeyBtX2lzUmVwYXJzaW5nID0gdHJ1ZTsgfQotICAgIGJvb2wgaXNSZXBhcnNpbmco
KSBjb25zdCB7IHJldHVybiBtX2lzUmVwYXJzaW5nOyB9CisgICAgdm9pZCBzZXRJc1JlcGFyc2lu
Z0Z1bmN0aW9uKCkgeyBtX2lzUmVwYXJzaW5nRnVuY3Rpb24gPSB0cnVlOyB9CisgICAgYm9vbCBp
c1JlcGFyc2luZ0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc1JlcGFyc2luZ0Z1bmN0aW9u
OyB9CiAKLSNpZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQogICAgIHZvaWQgc2V0
VG9rZW5Qb3NpdGlvbihKU1Rva2VuKiB0b2tlblJlY29yZCk7Ci0jZW5kaWYKICAgICBKU1Rva2Vu
VHlwZSBsZXgoSlNUb2tlbiosIHVuc2lnbmVkLCBib29sIHN0cmljdE1vZGUpOwogICAgIGJvb2wg
bmV4dFRva2VuSXNDb2xvbigpOwogICAgIGludCBsaW5lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4g
bV9saW5lTnVtYmVyOyB9CkBAIC0yMjQsNyArMjIyLDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBU
KiBtX2xpbmVTdGFydDsKICAgICBKU1RleHRQb3NpdGlvbiBtX3Bvc2l0aW9uQmVmb3JlTGFzdE5l
d2xpbmU7CiAgICAgSlNUb2tlbkxvY2F0aW9uIG1fbGFzdFRvY2tlbkxvY2F0aW9uOwotICAgIGJv
b2wgbV9pc1JlcGFyc2luZzsKKyAgICBib29sIG1faXNSZXBhcnNpbmdGdW5jdGlvbjsKICAgICBi
b29sIG1fYXRMaW5lU3RhcnQ7CiAgICAgYm9vbCBtX2Vycm9yOwogICAgIFN0cmluZyBtX2xleEVy
cm9yTWVzc2FnZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0
cnVjdG9ycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZUNvbnN0cnVjdG9ycy5oCShyZXZpc2lvbiAxODY4MDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAkod29ya2luZyBjb3B5KQpAQCAtODIwLDM0ICs4
MjAsMjIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBQYXJh
bWV0ZXJOb2RlOjpQYXJhbWV0ZXJOb2RlKFBhc3NSZWZQdHI8RGVzdHJ1Y3R1cmluZ1BhdHRlcm5O
b2RlPiBwYXR0ZXJuKQotICAgICAgICA6IG1fcGF0dGVybihwYXR0ZXJuKQotICAgICAgICAsIG1f
bmV4dCgwKQorICAgIGlubGluZSBGdW5jdGlvblBhcmFtZXRlcnM6OkZ1bmN0aW9uUGFyYW1ldGVy
cygpCiAgICAgewotICAgICAgICBBU1NFUlQobV9wYXR0ZXJuKTsKICAgICB9CiAKLSAgICBpbmxp
bmUgUGFyYW1ldGVyTm9kZTo6UGFyYW1ldGVyTm9kZShQYXJhbWV0ZXJOb2RlKiBwcmV2aW91cywg
UGFzc1JlZlB0cjxEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU+IHBhdHRlcm4pCi0gICAgICAgIDog
bV9wYXR0ZXJuKHBhdHRlcm4pCi0gICAgICAgICwgbV9uZXh0KDApCi0gICAgewotICAgICAgICBw
cmV2aW91cy0+bV9uZXh0ID0gdGhpczsKLSAgICAgICAgQVNTRVJUKG1fcGF0dGVybik7Ci0gICAg
ICAgIEFTU0VSVChwcmV2aW91cy0+bV9wYXR0ZXJuKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgRnVu
Y0V4cHJOb2RlOjpGdW5jRXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSwgUGFyYW1ldGVyTm9kZSogcGFyYW1ldGVyKQorICAgIGlubGluZSBG
dW5jRXhwck5vZGU6OkZ1bmNFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9u
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlKQogICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQog
ICAgICAgICAsIG1fYm9keShib2R5KQogICAgIHsKLSAgICAgICAgbV9ib2R5LT5maW5pc2hQYXJz
aW5nKHNvdXJjZSwgcGFyYW1ldGVyLCBpZGVudCwgRnVuY3Rpb25FeHByZXNzaW9uKTsKKyAgICAg
ICAgbV9ib2R5LT5maW5pc2hQYXJzaW5nKHNvdXJjZSwgaWRlbnQsIEZ1bmN0aW9uRXhwcmVzc2lv
bik7CiAgICAgfQogCi0gICAgaW5saW5lIEZ1bmNEZWNsTm9kZTo6RnVuY0RlY2xOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5j
dGlvbkJvZHlOb2RlKiBib2R5LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcmFtZXRlck5v
ZGUqIHBhcmFtZXRlcikKKyAgICBpbmxpbmUgRnVuY0RlY2xOb2RlOjpGdW5jRGVjbE5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEZ1
bmN0aW9uQm9keU5vZGUqIGJvZHksIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKICAgICAgICAg
OiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fYm9keShib2R5KQogICAgIHsK
LSAgICAgICAgbV9ib2R5LT5maW5pc2hQYXJzaW5nKHNvdXJjZSwgcGFyYW1ldGVyLCBpZGVudCwg
RnVuY3Rpb25EZWNsYXJhdGlvbik7CisgICAgICAgIG1fYm9keS0+ZmluaXNoUGFyc2luZyhzb3Vy
Y2UsIGlkZW50LCBGdW5jdGlvbkRlY2xhcmF0aW9uKTsKICAgICB9CiAKICNpZiBFTkFCTEUoRVM2
X0NMQVNTX1NZTlRBWCkKQEAgLTk0MywyNiArOTMxLDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IHsKICAgICB9CiAgICAgCi0gICAgaW5saW5lIFJlZjxBcnJheVBhdHRlcm5Ob2RlPiBBcnJheVBh
dHRlcm5Ob2RlOjpjcmVhdGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
QXJyYXlQYXR0ZXJuTm9kZSk7Ci0gICAgfQotICAgIAogICAgIGlubGluZSBPYmplY3RQYXR0ZXJu
Tm9kZTo6T2JqZWN0UGF0dGVybk5vZGUoKQogICAgICAgICA6IERlc3RydWN0dXJpbmdQYXR0ZXJu
Tm9kZSgpCiAgICAgewogICAgIH0KICAgICAKLSAgICBpbmxpbmUgUmVmPE9iamVjdFBhdHRlcm5O
b2RlPiBPYmplY3RQYXR0ZXJuTm9kZTo6Y3JlYXRlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IE9iamVjdFBhdHRlcm5Ob2RlKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgUmVm
PEJpbmRpbmdOb2RlPiBCaW5kaW5nTm9kZTo6Y3JlYXRlKGNvbnN0IElkZW50aWZpZXImIGJvdW5k
UHJvcGVydHksIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBzdGFydCwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGVuZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJpbmRpbmdOb2Rl
KGJvdW5kUHJvcGVydHksIHN0YXJ0LCBlbmQpKTsKLSAgICB9Ci0gICAgCiAgICAgaW5saW5lIEJp
bmRpbmdOb2RlOjpCaW5kaW5nTm9kZShjb25zdCBJZGVudGlmaWVyJiBib3VuZFByb3BlcnR5LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlbmQpCiAg
ICAgICAgIDogRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKCkKICAgICAgICAgLCBtX2Rpdm90U3Rh
cnQoc3RhcnQpCkBAIC05NzEsNyArOTQ0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAg
IH0KICAgICAKLSAgICBpbmxpbmUgRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlOjpEZXN0cnVj
dHVyaW5nQXNzaWdubWVudE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUGFz
c1JlZlB0cjxEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU+IGJpbmRpbmdzLCBFeHByZXNzaW9uTm9k
ZSogaW5pdGlhbGl6ZXIpCisgICAgaW5saW5lIERlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZTo6
RGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogYmluZGluZ3MsIEV4cHJlc3Npb25Ob2RlKiBp
bml0aWFsaXplcikKICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAg
LCBtX2JpbmRpbmdzKGJpbmRpbmdzKQogICAgICAgICAsIG1faW5pdGlhbGl6ZXIoaW5pdGlhbGl6
ZXIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAkocmV2aXNpb24g
MTg2ODA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTExNyw3ICsxMTcsNyBAQCBTdGF0ZW1lbnROb2RlKiBTY29wZU5vZGU6OnNp
bmdsZVN0YXRlbWVuCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm9ncmFt
Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1Qcm9ncmFtTm9kZTo6UHJvZ3Jh
bU5vZGUoUGFyc2VyQXJlbmEmIHBhcnNlckFyZW5hLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0
YXJ0TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVk
IHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJl
biwgVmFyU3RhY2smIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrJiBmdW5jU3RhY2ssIElkZW50aWZp
ZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVG
ZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKK1Byb2dyYW1Ob2RlOjpQcm9ncmFt
Tm9kZShQYXJzZXJBcmVuYSYgcGFyc2VyQXJlbmEsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3Rh
cnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5zaWduZWQg
c3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVu
LCBWYXJTdGFjayYgdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2smIGZ1bmNTdGFjaywgSWRlbnRpZmll
clNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQog
ICAgIDogU2NvcGVOb2RlKHBhcnNlckFyZW5hLCBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwg
c291cmNlLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMs
IGZlYXR1cmVzLCBudW1Db25zdGFudHMpCiAgICAgLCBtX3N0YXJ0Q29sdW1uKHN0YXJ0Q29sdW1u
KQogICAgICwgbV9lbmRDb2x1bW4oZW5kQ29sdW1uKQpAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQg
UHJvZ3JhbU5vZGU6OnNldENsb3NlZFZhcmlhYmxlcyhWZWMKIAogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tIEV2YWxOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAK
LUV2YWxOb2RlOjpFdmFsTm9kZShQYXJzZXJBcmVuYSYgcGFyc2VyQXJlbmEsIGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2Nh
dGlvbiwgdW5zaWduZWQsIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMqIGNoaWxk
cmVuLCBWYXJTdGFjayYgdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2smIGZ1bmNTdGFjaywgSWRlbnRp
ZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29k
ZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQorRXZhbE5vZGU6OkV2YWxOb2Rl
KFBhcnNlckFyZW5hJiBwYXJzZXJBcmVuYSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExv
Y2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCwgdW5z
aWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrJiB2YXJT
dGFjaywgRnVuY3Rpb25TdGFjayYgZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZh
cmlhYmxlcywgRnVuY3Rpb25QYXJhbWV0ZXJzKiwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBD
b2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCiAgICAgOiBTY29wZU5vZGUo
cGFyc2VyQXJlbmEsIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBzb3VyY2UsIGNoaWxkcmVu
LCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgZmVhdHVyZXMsIG51bUNv
bnN0YW50cykKICAgICAsIG1fZW5kQ29sdW1uKGVuZENvbHVtbikKIHsKQEAgLTEzOSwzOSArMTM5
LDExIEBAIEV2YWxOb2RlOjpFdmFsTm9kZShQYXJzZXJBcmVuYSYgcGFyc2VyQXIKIAogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9uQm9keU5vZGUgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIAotUmVmPEZ1bmN0aW9uUGFyYW1ldGVycz4gRnVuY3Rpb25QYXJh
bWV0ZXJzOjpjcmVhdGUoUGFyYW1ldGVyTm9kZSogZmlyc3RQYXJhbWV0ZXIpCi17Ci0gICAgdW5z
aWduZWQgcGFyYW1ldGVyQ291bnQgPSAwOwotICAgIGZvciAoUGFyYW1ldGVyTm9kZSogcGFyYW1l
dGVyID0gZmlyc3RQYXJhbWV0ZXI7IHBhcmFtZXRlcjsgcGFyYW1ldGVyID0gcGFyYW1ldGVyLT5u
ZXh0UGFyYW0oKSkKLSAgICAgICAgKytwYXJhbWV0ZXJDb3VudDsKLQotICAgIHNpemVfdCBvYmpl
Y3RTaXplID0gc2l6ZW9mKEZ1bmN0aW9uUGFyYW1ldGVycykgLSBzaXplb2Yodm9pZCopICsgc2l6
ZW9mKERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSopICogcGFyYW1ldGVyQ291bnQ7Ci0gICAgdm9p
ZCogc2xvdCA9IGZhc3RNYWxsb2Mob2JqZWN0U2l6ZSk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgKHNsb3QpIEZ1bmN0aW9uUGFyYW1ldGVycyhmaXJzdFBhcmFtZXRlciwgcGFyYW1ldGVyQ291
bnQpKTsKLX0KLQotRnVuY3Rpb25QYXJhbWV0ZXJzOjpGdW5jdGlvblBhcmFtZXRlcnMoUGFyYW1l
dGVyTm9kZSogZmlyc3RQYXJhbWV0ZXIsIHVuc2lnbmVkIHNpemUpCi0gICAgOiBtX3NpemUoc2l6
ZSkKLXsKLSAgICB1bnNpZ25lZCBpID0gMDsKLSAgICBmb3IgKFBhcmFtZXRlck5vZGUqIHBhcmFt
ZXRlciA9IGZpcnN0UGFyYW1ldGVyOyBwYXJhbWV0ZXI7IHBhcmFtZXRlciA9IHBhcmFtZXRlci0+
bmV4dFBhcmFtKCkpIHsKLSAgICAgICAgYXV0byBwYXR0ZXJuID0gcGFyYW1ldGVyLT5wYXR0ZXJu
KCk7Ci0gICAgICAgIHBhdHRlcm4tPnJlZigpOwotICAgICAgICBwYXR0ZXJucygpW2krK10gPSBw
YXR0ZXJuOwotICAgIH0KLX0KLQotRnVuY3Rpb25QYXJhbWV0ZXJzOjp+RnVuY3Rpb25QYXJhbWV0
ZXJzKCkKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCi0gICAg
ICAgIHBhdHRlcm5zKClbaV0tPmRlcmVmKCk7Ci19Ci0KIEZ1bmN0aW9uQm9keU5vZGU6OkZ1bmN0
aW9uQm9keU5vZGUoCiAgICAgUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0
YXJ0TG9jYXRpb24sIAogICAgIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVu
c2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIAotICAgIGludCBmdW5jdGlv
bktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0
LAotICAgIGJvb2wgaXNJblN0cmljdENvbnRleHQsIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3Rv
cktpbmQpCisgICAgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3Rh
cnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIAorICAgIENv
bnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBG
dW5jdGlvblBhcnNlTW9kZSBtb2RlKQogICAgICAgICA6IFN0YXRlbWVudE5vZGUoZW5kTG9jYXRp
b24pCiAgICAgICAgICwgbV9zdGFydENvbHVtbihzdGFydENvbHVtbikKICAgICAgICAgLCBtX2Vu
ZENvbHVtbihlbmRDb2x1bW4pCkBAIC0xNzksMTYgKzE1MSwxNyBAQCBGdW5jdGlvbkJvZHlOb2Rl
OjpGdW5jdGlvbkJvZHlOb2RlKAogICAgICAgICAsIG1fZnVuY3Rpb25OYW1lU3RhcnQoZnVuY3Rp
b25OYW1lU3RhcnQpCiAgICAgICAgICwgbV9wYXJhbWV0ZXJzU3RhcnQocGFyYW1ldGVyc1N0YXJ0
KQogICAgICAgICAsIG1fc3RhcnRTdGFydE9mZnNldChzdGFydExvY2F0aW9uLnN0YXJ0T2Zmc2V0
KQorICAgICAgICAsIG1fcGFyYW1ldGVyQ291bnQocGFyYW1ldGVyQ291bnQpCisgICAgICAgICwg
bV9wYXJzZU1vZGUobW9kZSkKICAgICAgICAgLCBtX2lzSW5TdHJpY3RDb250ZXh0KGlzSW5TdHJp
Y3RDb250ZXh0KQogICAgICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihjb25zdHJ1Y3RvcktpbmQpKQogewogICAgIEFTU0VSVChtX2NvbnN0cnVjdG9yS2luZCA9
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSk7CiB9CiAKLXZvaWQgRnVu
Y3Rpb25Cb2R5Tm9kZTo6ZmluaXNoUGFyc2luZyhjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBh
cmFtZXRlck5vZGUqIGZpcnN0UGFyYW1ldGVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgZW51
bSBGdW5jdGlvbk1vZGUgZnVuY3Rpb25Nb2RlKQordm9pZCBGdW5jdGlvbkJvZHlOb2RlOjpmaW5p
c2hQYXJzaW5nKGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgY29uc3QgSWRlbnRpZmllciYgaWRl
bnQsIGVudW0gRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSkKIHsKICAgICBtX3NvdXJjZSA9IHNv
dXJjZTsKLSAgICBtX3BhcmFtZXRlcnMgPSBGdW5jdGlvblBhcmFtZXRlcnM6OmNyZWF0ZShmaXJz
dFBhcmFtZXRlcik7CiAgICAgbV9pZGVudCA9IGlkZW50OwogICAgIG1fZnVuY3Rpb25Nb2RlID0g
ZnVuY3Rpb25Nb2RlOwogfQpAQCAtMjAxLDE3ICsxNzQsMTcgQEAgdm9pZCBGdW5jdGlvbkJvZHlO
b2RlOjpzZXRFbmRQb3NpdGlvbihKUwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0gRnVuY3Rpb25Ob2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUZ1bmN0aW9u
Tm9kZTo6RnVuY3Rpb25Ob2RlKFBhcnNlckFyZW5hJiBwYXJzZXJBcmVuYSwgY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0
aW9uLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVt
ZW50cyogY2hpbGRyZW4sIFZhclN0YWNrJiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayYgZnVuY1N0
YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYg
c291cmNlQ29kZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQorRnVu
Y3Rpb25Ob2RlOjpGdW5jdGlvbk5vZGUoUGFyc2VyQXJlbmEmIHBhcnNlckFyZW5hLCBjb25zdCBK
U1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5k
TG9jYXRpb24sIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJj
ZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2smIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrJiBm
dW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBGdW5jdGlvblBhcmFt
ZXRlcnMqIHBhcmFtZXRlcnMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIENvZGVGZWF0
dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKICAgICA6IFNjb3BlTm9kZShwYXJzZXJB
cmVuYSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIHNvdXJjZUNvZGUsIGNoaWxkcmVuLCB2
YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgZmVhdHVyZXMsIG51bUNvbnN0
YW50cykKKyAgICAsIG1fcGFyYW1ldGVycyhwYXJhbWV0ZXJzKQogICAgICwgbV9zdGFydENvbHVt
bihzdGFydENvbHVtbikKICAgICAsIG1fZW5kQ29sdW1uKGVuZENvbHVtbikKIHsKIH0KIAotdm9p
ZCBGdW5jdGlvbk5vZGU6OmZpbmlzaFBhcnNpbmcoUGFzc1JlZlB0cjxGdW5jdGlvblBhcmFtZXRl
cnM+IHBhcmFtZXRlcnMsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBlbnVtIEZ1bmN0aW9uTW9k
ZSBmdW5jdGlvbk1vZGUpCit2b2lkIEZ1bmN0aW9uTm9kZTo6ZmluaXNoUGFyc2luZyhjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCwgZW51bSBGdW5jdGlvbk1vZGUgZnVuY3Rpb25Nb2RlKQogewogICAg
IEFTU0VSVCghc291cmNlKCkuaXNOdWxsKCkpOwotICAgIG1fcGFyYW1ldGVycyA9IHBhcmFtZXRl
cnM7CiAgICAgbV9pZGVudCA9IGlkZW50OwogICAgIG1fZnVuY3Rpb25Nb2RlID0gZnVuY3Rpb25N
b2RlOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAkocmV2aXNpb24g
MTg2ODA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MSw2ICs0MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEFyZ3Vt
ZW50TGlzdE5vZGU7CiAgICAgY2xhc3MgQnl0ZWNvZGVHZW5lcmF0b3I7CiAgICAgY2xhc3MgRnVu
Y3Rpb25Cb2R5Tm9kZTsKKyAgICBjbGFzcyBGdW5jdGlvblBhcmFtZXRlcnM7CiAgICAgY2xhc3Mg
TGFiZWw7CiAgICAgY2xhc3MgUHJvcGVydHlMaXN0Tm9kZTsKICAgICBjbGFzcyBSZWFkTW9kaWZ5
UmVzb2x2ZU5vZGU7CkBAIC0xNTE2LDE5ICsxNTE3LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIFN0YXRlbWVudE5vZGUqIG1fZmluYWxseUJsb2NrOwogICAgIH07CiAKLSAgICBjbGFzcyBQ
YXJhbWV0ZXJOb2RlIDogcHVibGljIFBhcnNlckFyZW5hRGVsZXRhYmxlIHsKLSAgICBwdWJsaWM6
Ci0gICAgICAgIFBhcmFtZXRlck5vZGUoUGFzc1JlZlB0cjxEZXN0cnVjdHVyaW5nUGF0dGVybk5v
ZGU+KTsKLSAgICAgICAgUGFyYW1ldGVyTm9kZShQYXJhbWV0ZXJOb2RlKiwgUGFzc1JlZlB0cjxE
ZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU+KTsKLQotICAgICAgICBEZXN0cnVjdHVyaW5nUGF0dGVy
bk5vZGUqIHBhdHRlcm4oKSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm4uZ2V0KCk7IH0KLSAgICAg
ICAgUGFyYW1ldGVyTm9kZSogbmV4dFBhcmFtKCkgY29uc3QgeyByZXR1cm4gbV9uZXh0OyB9Ci0K
LSAgICBwcml2YXRlOgotICAgICAgICBSZWZQdHI8RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlPiBt
X3BhdHRlcm47Ci0gICAgICAgIFBhcmFtZXRlck5vZGUqIG1fbmV4dDsKLSAgICB9OwotCiAgICAg
Y2xhc3MgU2NvcGVOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUsIHB1YmxpYyBQYXJzZXJBcmVu
YVJvb3QgewogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBEZWNsYXJhdGlvblN0YWNrczo6
VmFyU3RhY2sgVmFyU3RhY2s7CkBAIC0xNTk4LDcgKzE1ODYsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIGNsYXNzIFByb2dyYW1Ob2RlIDogcHVibGljIFNjb3BlTm9kZSB7CiAgICAgcHVibGlj
OgotICAgICAgICBQcm9ncmFtTm9kZShQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCB1bnNpZ25lZCBzdGFydENvbHVt
biwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrJiwgRnVuY3Rp
b25TdGFjayYsIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVz
LCBpbnQgbnVtQ29uc3RhbnRzKTsKKyAgICAgICAgUHJvZ3JhbU5vZGUoUGFyc2VyQXJlbmEmLCBj
b25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwg
dW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMq
LCBWYXJTdGFjayYsIEZ1bmN0aW9uU3RhY2smLCBJZGVudGlmaWVyU2V0JiwgRnVuY3Rpb25QYXJh
bWV0ZXJzKiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50
cyk7CiAKICAgICAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4oKSBjb25zdCB7IHJldHVybiBtX3N0
YXJ0Q29sdW1uOyB9CiAgICAgICAgIHVuc2lnbmVkIGVuZENvbHVtbigpIGNvbnN0IHsgcmV0dXJu
IG1fZW5kQ29sdW1uOyB9CkBAIC0xNjE3LDcgKzE2MDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgIGNsYXNzIEV2YWxOb2RlIDogcHVibGljIFNjb3BlTm9kZSB7CiAgICAgcHVibGljOgotICAg
ICAgICBFdmFsTm9kZShQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQs
IGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWdu
ZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrJiwgRnVuY3Rpb25TdGFjayYs
IElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVt
Q29uc3RhbnRzKTsKKyAgICAgICAgRXZhbE5vZGUoUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgdW5zaWduZWQgc3Rh
cnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayYs
IEZ1bmN0aW9uU3RhY2smLCBJZGVudGlmaWVyU2V0JiwgRnVuY3Rpb25QYXJhbWV0ZXJzKiwgY29u
c3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CiAKICAgICAg
ICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBzdGFydENvbHVtbigpIGNvbnN0IHsgcmV0dXJuIDA7
IH0KICAgICAgICAgdW5zaWduZWQgZW5kQ29sdW1uKCkgY29uc3QgeyByZXR1cm4gbV9lbmRDb2x1
bW47IH0KQEAgLTE2MzAsMjMgKzE2MTgsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVu
c2lnbmVkIG1fZW5kQ29sdW1uOwogICAgIH07CiAKLSAgICBjbGFzcyBGdW5jdGlvblBhcmFtZXRl
cnMgOiBwdWJsaWMgUmVmQ291bnRlZDxGdW5jdGlvblBhcmFtZXRlcnM+IHsKLSAgICAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZ1bmN0
aW9uUGFyYW1ldGVycyk7CisgICAgY2xhc3MgRnVuY3Rpb25QYXJhbWV0ZXJzIDogcHVibGljIFBh
cnNlckFyZW5hRnJlZWFibGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFJlZjxGdW5j
dGlvblBhcmFtZXRlcnM+IGNyZWF0ZShQYXJhbWV0ZXJOb2RlKik7Ci0gICAgICAgIH5GdW5jdGlv
blBhcmFtZXRlcnMoKTsKLQotICAgICAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4g
bV9zaXplOyB9Ci0gICAgICAgIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogYXQodW5zaWduZWQg
aW5kZXgpIHsgQVNTRVJUKGluZGV4IDwgbV9zaXplKTsgcmV0dXJuIHBhdHRlcm5zKClbaW5kZXhd
OyB9CisgICAgICAgIEZ1bmN0aW9uUGFyYW1ldGVycygpOworICAgICAgICBBTFdBWVNfSU5MSU5F
IHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm5zLnNpemUoKTsgfQorICAg
ICAgICBBTFdBWVNfSU5MSU5FIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogYXQodW5zaWduZWQg
aW5kZXgpIHsgcmV0dXJuIG1fcGF0dGVybnNbaW5kZXhdOyB9CisgICAgICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBhcHBlbmQoRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiBwYXR0ZXJuKSB7IEFTU0VS
VChwYXR0ZXJuKTsgbV9wYXR0ZXJucy5hcHBlbmQocGF0dGVybik7IH0KIAogICAgIHByaXZhdGU6
Ci0gICAgICAgIEZ1bmN0aW9uUGFyYW1ldGVycyhQYXJhbWV0ZXJOb2RlKiwgdW5zaWduZWQgc2l6
ZSk7Ci0KLSAgICAgICAgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiogcGF0dGVybnMoKSB7IHJl
dHVybiAmbV9zdG9yYWdlOyB9CiAKLSAgICAgICAgdW5zaWduZWQgbV9zaXplOwotICAgICAgICBE
ZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUqIG1fc3RvcmFnZTsKKyAgICAgICAgVmVjdG9yPERlc3Ry
dWN0dXJpbmdQYXR0ZXJuTm9kZSosIDM+IG1fcGF0dGVybnM7CiAgICAgfTsKIAogICAgIGNsYXNz
IEZ1bmN0aW9uQm9keU5vZGUgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSwgcHVibGljIFBh
cnNlckFyZW5hRGVsZXRhYmxlIHsKQEAgLTE2NTcsMTMgKzE2MzgsMTEgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgICAgICBQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3Rh
cnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCAKICAgICAgICAgICAgIHVuc2lnbmVkIHN0
YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwg
CiAgICAgICAgICAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQs
IGJvb2wgaXNJblN0cmljdENvbnRleHQsIAotICAgICAgICAgICAgQ29uc3RydWN0b3JLaW5kKTsK
LQotICAgICAgICBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVy
biBtX3BhcmFtZXRlcnMuZ2V0KCk7IH0KKyAgICAgICAgICAgIENvbnN0cnVjdG9yS2luZCwgdW5z
aWduZWQsIEZ1bmN0aW9uUGFyc2VNb2RlKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKIAot
ICAgICAgICB2b2lkIGZpbmlzaFBhcnNpbmcoY29uc3QgU291cmNlQ29kZSYsIFBhcmFtZXRlck5v
ZGUqLCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25Nb2RlKTsKKyAgICAgICAgdm9pZCBmaW5p
c2hQYXJzaW5nKGNvbnN0IFNvdXJjZUNvZGUmLCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25N
b2RlKTsKICAgICAgICAgCiAgICAgICAgIHZvaWQgb3ZlcnJpZGVOYW1lKGNvbnN0IElkZW50aWZp
ZXImIGlkZW50KSB7IG1faWRlbnQgPSBpZGVudDsgfQogICAgICAgICBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCgpIHsgcmV0dXJuIG1faWRlbnQ7IH0KQEAgLTE2NzcsNiArMTY1Niw4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBpbnQgcGFyYW1ldGVyc1N0YXJ0KCkgY29uc3QgeyByZXR1cm4g
bV9wYXJhbWV0ZXJzU3RhcnQ7IH0KICAgICAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4oKSBjb25z
dCB7IHJldHVybiBtX3N0YXJ0Q29sdW1uOyB9CiAgICAgICAgIHVuc2lnbmVkIGVuZENvbHVtbigp
IGNvbnN0IHsgcmV0dXJuIG1fZW5kQ29sdW1uOyB9CisgICAgICAgIHVuc2lnbmVkIHBhcmFtZXRl
ckNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJDb3VudDsgfQorICAgICAgICBGdW5j
dGlvblBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3BhcnNlTW9kZTsgfQog
CiAgICAgICAgIHZvaWQgc2V0RW5kUG9zaXRpb24oSlNUZXh0UG9zaXRpb24pOwogCkBAIC0xNjkw
LDcgKzE2NzEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSWRlbnRpZmllciBtX2lkZW50
OwogICAgICAgICBJZGVudGlmaWVyIG1faW5mZXJyZWROYW1lOwogICAgICAgICBGdW5jdGlvbk1v
ZGUgbV9mdW5jdGlvbk1vZGU7Ci0gICAgICAgIFJlZlB0cjxGdW5jdGlvblBhcmFtZXRlcnM+IG1f
cGFyYW1ldGVyczsKICAgICAgICAgdW5zaWduZWQgbV9zdGFydENvbHVtbjsKICAgICAgICAgdW5z
aWduZWQgbV9lbmRDb2x1bW47CiAgICAgICAgIGludCBtX2Z1bmN0aW9uS2V5d29yZFN0YXJ0OwpA
QCAtMTY5OCwxOSArMTY3OCwyMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaW50IG1fcGFy
YW1ldGVyc1N0YXJ0OwogICAgICAgICBTb3VyY2VDb2RlIG1fc291cmNlOwogICAgICAgICBpbnQg
bV9zdGFydFN0YXJ0T2Zmc2V0OworICAgICAgICB1bnNpZ25lZCBtX3BhcmFtZXRlckNvdW50Owor
ICAgICAgICBGdW5jdGlvblBhcnNlTW9kZSBtX3BhcnNlTW9kZTsKICAgICAgICAgdW5zaWduZWQg
bV9pc0luU3RyaWN0Q29udGV4dCA6IDE7CiAgICAgICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JL
aW5kIDogMjsKICAgICB9OwogCiAgICAgY2xhc3MgRnVuY3Rpb25Ob2RlIGZpbmFsIDogcHVibGlj
IFNjb3BlTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBGdW5jdGlvbk5vZGUoUGFyc2VyQXJl
bmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGVuZCwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxl
bWVudHMqLCBWYXJTdGFjayYsIEZ1bmN0aW9uU3RhY2smLCBJZGVudGlmaWVyU2V0JiwgY29uc3Qg
U291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CisgICAgICAgIEZ1
bmN0aW9uTm9kZShQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQg
ZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrJiwgRnVuY3Rpb25TdGFjayYsIElk
ZW50aWZpZXJTZXQmLCBGdW5jdGlvblBhcmFtZXRlcnMqLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29k
ZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKIAotICAgICAgICBGdW5jdGlvblBhcmFtZXRl
cnMqIHBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMuZ2V0KCk7IH0KKyAg
ICAgICAgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9w
YXJhbWV0ZXJzOyB9CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CiAKLSAgICAgICAgdm9pZCBm
aW5pc2hQYXJzaW5nKFBhc3NSZWZQdHI8RnVuY3Rpb25QYXJhbWV0ZXJzPiwgY29uc3QgSWRlbnRp
ZmllciYsIEZ1bmN0aW9uTW9kZSk7CisgICAgICAgIHZvaWQgZmluaXNoUGFyc2luZyhjb25zdCBJ
ZGVudGlmaWVyJiwgRnVuY3Rpb25Nb2RlKTsKICAgICAgICAgCiAgICAgICAgIGNvbnN0IElkZW50
aWZpZXImIGlkZW50KCkgeyByZXR1cm4gbV9pZGVudDsgfQogCkBAIC0xNzI0LDE0ICsxNzA2LDE0
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByaXZhdGU6CiAgICAgICAgIElkZW50aWZpZXIgbV9p
ZGVudDsKICAgICAgICAgRnVuY3Rpb25Nb2RlIG1fZnVuY3Rpb25Nb2RlOwotICAgICAgICBSZWZQ
dHI8RnVuY3Rpb25QYXJhbWV0ZXJzPiBtX3BhcmFtZXRlcnM7CisgICAgICAgIEZ1bmN0aW9uUGFy
YW1ldGVycyogbV9wYXJhbWV0ZXJzOwogICAgICAgICB1bnNpZ25lZCBtX3N0YXJ0Q29sdW1uOwog
ICAgICAgICB1bnNpZ25lZCBtX2VuZENvbHVtbjsKICAgICB9OwogCiAgICAgY2xhc3MgRnVuY0V4
cHJOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEZ1
bmNFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRnVu
Y3Rpb25Cb2R5Tm9kZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJhbWV0ZXJOb2RlKiA9IDApOwor
ICAgICAgICBGdW5jRXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRp
ZmllciYsIEZ1bmN0aW9uQm9keU5vZGUqLCBjb25zdCBTb3VyY2VDb2RlJik7CiAKICAgICAgICAg
RnVuY3Rpb25Cb2R5Tm9kZSogYm9keSgpIHsgcmV0dXJuIG1fYm9keTsgfQogCkBAIC0xNzYyLDEx
ICsxNzQ0LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKICNlbmRpZgogCi0gICAgY2xhc3Mg
RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlIDogcHVibGljIFJlZkNvdW50ZWQ8RGVzdHJ1Y3R1cmlu
Z1BhdHRlcm5Ob2RlPiB7Ci0gICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERlc3RydWN0dXJp
bmdQYXR0ZXJuTm9kZSk7Ci0gICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotCisgICAg
Y2xhc3MgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlIDogcHVibGljIFBhcnNlckFyZW5hRnJlZWFi
bGUgewogICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+RGVzdHJ1Y3R1cmluZ1BhdHRlcm5O
b2RlKCkgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0Qm91bmRJZGVudGlmaWVycyhW
ZWN0b3I8SWRlbnRpZmllcj4mKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBiaW5k
VmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBzb3VyY2UpIGNvbnN0ID0gMDsK
ICAgICAgICAgdmlydHVhbCB2b2lkIHRvU3RyaW5nKFN0cmluZ0J1aWxkZXImKSBjb25zdCA9IDA7
CkBAIC0xNzc0LDIxICsxNzU0LDE5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFs
IGJvb2wgaXNCaW5kaW5nTm9kZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZp
cnR1YWwgUmVnaXN0ZXJJRCogZW1pdERpcmVjdEJpbmRpbmcoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiwgRXhwcmVzc2lvbk5vZGUqKSB7IHJldHVybiAwOyB9CiAgICAgICAgIAotICAg
ICAgICB2aXJ0dWFsIH5EZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUoKSA9IDA7Ci0gICAgICAgIAog
ICAgIHByb3RlY3RlZDoKICAgICAgICAgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKCk7CiAgICAg
fTsKIAogICAgIGNsYXNzIEFycmF5UGF0dGVybk5vZGUgOiBwdWJsaWMgRGVzdHJ1Y3R1cmluZ1Bh
dHRlcm5Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoK
KyAgICAgICAgQXJyYXlQYXR0ZXJuTm9kZSgpOwogICAgICAgICBlbnVtIGNsYXNzIEJpbmRpbmdU
eXBlIHsKICAgICAgICAgICAgIEVsaXNpb24sCiAgICAgICAgICAgICBFbGVtZW50LAogICAgICAg
ICAgICAgUmVzdEVsZW1lbnQKICAgICAgICAgfTsKIAotICAgICAgICBzdGF0aWMgUmVmPEFycmF5
UGF0dGVybk5vZGU+IGNyZWF0ZSgpOwogICAgICAgICB2b2lkIGFwcGVuZEluZGV4KEJpbmRpbmdU
eXBlIGJpbmRpbmdUeXBlLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBEZXN0cnVjdHVyaW5nUGF0
dGVybk5vZGUqIG5vZGUsIEV4cHJlc3Npb25Ob2RlKiBkZWZhdWx0VmFsdWUpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIG1fdGFyZ2V0UGF0dGVybnMuYXBwZW5kKHsgYmluZGluZ1R5cGUsIG5vZGUs
IGRlZmF1bHRWYWx1ZSB9KTsKQEAgLTE3OTcsMTAgKzE3NzUsOSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICBwcml2YXRlOgogICAgICAgICBzdHJ1Y3QgRW50cnkgewogICAgICAgICAgICAgQmluZGlu
Z1R5cGUgYmluZGluZ1R5cGU7Ci0gICAgICAgICAgICBSZWZQdHI8RGVzdHJ1Y3R1cmluZ1BhdHRl
cm5Ob2RlPiBwYXR0ZXJuOworICAgICAgICAgICAgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiBw
YXR0ZXJuOwogICAgICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGRlZmF1bHRWYWx1ZTsKICAgICAg
ICAgfTsKLSAgICAgICAgQXJyYXlQYXR0ZXJuTm9kZSgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
Y29sbGVjdEJvdW5kSWRlbnRpZmllcnMoVmVjdG9yPElkZW50aWZpZXI+JikgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBiaW5kVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCog
ZW1pdERpcmVjdEJpbmRpbmcoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkc3QsIEV4
cHJlc3Npb25Ob2RlKikgb3ZlcnJpZGU7CkBAIC0xODExLDIxICsxNzg4LDIwIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIAogICAgIGNsYXNzIE9iamVjdFBhdHRlcm5Ob2RlIDogcHVibGljIERlc3Ry
dWN0dXJpbmdQYXR0ZXJuTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUmVmPE9i
amVjdFBhdHRlcm5Ob2RlPiBjcmVhdGUoKTsKKyAgICAgICAgT2JqZWN0UGF0dGVybk5vZGUoKTsK
ICAgICAgICAgdm9pZCBhcHBlbmRFbnRyeShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudGlmaWVyLCBib29sIHdhc1N0cmluZywgRGVzdHJ1Y3R1cmluZ1BhdHRl
cm5Ob2RlKiBwYXR0ZXJuLCBFeHByZXNzaW9uTm9kZSogZGVmYXVsdFZhbHVlKQogICAgICAgICB7
CiAgICAgICAgICAgICBtX3RhcmdldFBhdHRlcm5zLmFwcGVuZChFbnRyeXsgaWRlbnRpZmllciwg
d2FzU3RyaW5nLCBwYXR0ZXJuLCBkZWZhdWx0VmFsdWUgfSk7CiAgICAgICAgIH0KICAgICAgICAg
CiAgICAgcHJpdmF0ZToKLSAgICAgICAgT2JqZWN0UGF0dGVybk5vZGUoKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIGNvbGxlY3RCb3VuZElkZW50aWZpZXJzKFZlY3RvcjxJZGVudGlmaWVyPiYpIGNv
bnN0IG92ZXJyaWRlOwogICAgICAgICB2aXJ0dWFsIHZvaWQgYmluZFZhbHVlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCopIGNvbnN0IG92ZXJyaWRlOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgdG9TdHJpbmcoU3RyaW5nQnVpbGRlciYpIGNvbnN0IG92ZXJyaWRlOwogICAgICAgICBzdHJ1
Y3QgRW50cnkgewogICAgICAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWU7CiAgICAgICAg
ICAgICBib29sIHdhc1N0cmluZzsKLSAgICAgICAgICAgIFJlZlB0cjxEZXN0cnVjdHVyaW5nUGF0
dGVybk5vZGU+IHBhdHRlcm47CisgICAgICAgICAgICBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUq
IHBhdHRlcm47CiAgICAgICAgICAgICBFeHByZXNzaW9uTm9kZSogZGVmYXVsdFZhbHVlOwogICAg
ICAgICB9OwogICAgICAgICBWZWN0b3I8RW50cnk+IG1fdGFyZ2V0UGF0dGVybnM7CkBAIC0xODMz
LDE0ICsxODA5LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQmluZGluZ05vZGUg
OiBwdWJsaWMgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IHN0YXRpYyBSZWY8QmluZGluZ05vZGU+IGNyZWF0ZShjb25zdCBJZGVudGlmaWVyJiBib3VuZFBy
b3BlcnR5LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBlbmQpOworICAgICAgICBCaW5kaW5nTm9kZShjb25zdCBJZGVudGlmaWVyJiBib3VuZFByb3Bl
cnR5LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBl
bmQpOwogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBib3VuZFByb3BlcnR5KCkgY29uc3QgeyBy
ZXR1cm4gbV9ib3VuZFByb3BlcnR5OyB9CiAKICAgICAgICAgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90U3RhcnQoKSBjb25zdCB7IHJldHVybiBtX2Rpdm90U3RhcnQ7IH0KICAgICAgICAgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKCkgY29uc3QgeyByZXR1cm4gbV9kaXZvdEVuZDsg
fQogICAgICAgICAKICAgICBwcml2YXRlOgotICAgICAgICBCaW5kaW5nTm9kZShjb25zdCBJZGVu
dGlmaWVyJiBib3VuZFByb3BlcnR5LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBlbmQpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0Qm91
bmRJZGVudGlmaWVycyhWZWN0b3I8SWRlbnRpZmllcj4mKSBjb25zdCBvdmVycmlkZTsKICAgICAg
ICAgdmlydHVhbCB2b2lkIGJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
KSBjb25zdCBvdmVycmlkZTsKQEAgLTE4NTUsOCArMTgzMCw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgY2xhc3MgRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlIDogcHVibGljIEV4cHJlc3Np
b25Ob2RlLCBwdWJsaWMgUGFyc2VyQXJlbmFEZWxldGFibGUgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFBh
c3NSZWZQdHI8RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlPiwgRXhwcmVzc2lvbk5vZGUqKTsKLSAg
ICAgICAgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiBiaW5kaW5ncygpIHsgcmV0dXJuIG1fYmlu
ZGluZ3MuZ2V0KCk7IH0KKyAgICAgICAgRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSosIEV4cHJlc3Npb25O
b2RlKik7CisgICAgICAgIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogYmluZGluZ3MoKSB7IHJl
dHVybiBtX2JpbmRpbmdzOyB9CiAgICAgICAgIAogICAgICAgICB1c2luZyBQYXJzZXJBcmVuYURl
bGV0YWJsZTo6b3BlcmF0b3IgbmV3OwogCkBAIC0xODY1LDEzICsxODQwLDEzIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNEZXN0cnVjdHVyaW5nTm9kZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRl
OwogCi0gICAgICAgIFJlZlB0cjxEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU+IG1fYmluZGluZ3M7
CisgICAgICAgIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogbV9iaW5kaW5nczsKICAgICAgICAg
RXhwcmVzc2lvbk5vZGUqIG1faW5pdGlhbGl6ZXI7CiAgICAgfTsKIAogICAgIGNsYXNzIEZ1bmNE
ZWNsTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEZ1
bmNEZWNsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRnVu
Y3Rpb25Cb2R5Tm9kZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJhbWV0ZXJOb2RlKiA9IDApOwor
ICAgICAgICBGdW5jRGVjbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRp
ZmllciYsIEZ1bmN0aW9uQm9keU5vZGUqLCBjb25zdCBTb3VyY2VDb2RlJik7CiAKICAgICAgICAg
dmlydHVhbCBib29sIGlzRnVuY0RlY2xOb2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQogICAgICAgICBGdW5jdGlvbkJvZHlOb2RlKiBib2R5KCkgeyByZXR1cm4gbV9ib2R5OyB9
CkBAIC0xOTY3LDExICsxOTQyLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIENvbnN0RGVj
bE5vZGUqIHRhaWw7CiAgICAgfTsKIAotICAgIHN0cnVjdCBQYXJhbWV0ZXJMaXN0IHsKLSAgICAg
ICAgUGFyYW1ldGVyTm9kZSogaGVhZDsKLSAgICAgICAgUGFyYW1ldGVyTm9kZSogdGFpbDsKLSAg
ICB9OwotCiAgICAgc3RydWN0IENsYXVzZUxpc3QgewogICAgICAgICBDbGF1c2VMaXN0Tm9kZSog
aGVhZDsKICAgICAgICAgQ2xhdXNlTGlzdE5vZGUqIHRhaWw7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCShyZXZpc2lvbiAxODY4MDgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MSw4ICsx
OTEsNyBAQCB2b2lkIFBhcnNlcjxMZXhlclR5cGU+Ojpsb2dFcnJvcihib29sIHNoCiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiBQYXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2VyKAotICAg
IFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvblBhcmFtZXRlcnMqIHBh
cmFtZXRlcnMsIAotICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIEpTUGFyc2VyQnVpbHRpbk1v
ZGUgYnVpbHRpbk1vZGUsIAorICAgIFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBK
U1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLCAKICAgICBKU1BhcnNlclN0cmljdE1vZGUg
c3RyaWN0TW9kZSwgSlNQYXJzZXJDb2RlVHlwZSBjb2RlVHlwZSwgCiAgICAgQ29uc3RydWN0b3JL
aW5kIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlKQogICAg
IDogbV92bSh2bSkKQEAgLTIyMywzMCArMjIyLDcgQEAgUGFyc2VyPExleGVyVHlwZT46OlBhcnNl
cigKICAgICAgICAgc2NvcGUtPnNldElzRnVuY3Rpb24oKTsKICAgICBpZiAoc3RyaWN0TW9kZSA9
PSBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCkKICAgICAgICAgc2NvcGUtPnNldFN0cmljdE1v
ZGUoKTsKLSAgICBpZiAocGFyYW1ldGVycykgewotICAgICAgICBib29sIGhhZEJpbmRpbmdQYXJh
bWV0ZXJzID0gZmFsc2U7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXJhbWV0
ZXJzLT5zaXplKCk7IGkrKykgewotICAgICAgICAgICAgYXV0byBwYXJhbWV0ZXIgPSBwYXJhbWV0
ZXJzLT5hdChpKTsKLSAgICAgICAgICAgIGlmICghcGFyYW1ldGVyLT5pc0JpbmRpbmdOb2RlKCkp
IHsKLSAgICAgICAgICAgICAgICBoYWRCaW5kaW5nUGFyYW1ldGVycyA9IHRydWU7Ci0gICAgICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzY29wZS0+ZGVj
bGFyZVBhcmFtZXRlcigmc3RhdGljX2Nhc3Q8QmluZGluZ05vZGUqPihwYXJhbWV0ZXIpLT5ib3Vu
ZFByb3BlcnR5KCkpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChoYWRCaW5kaW5nUGFyYW1ldGVy
cykgewotICAgICAgICAgICAgVmVjdG9yPElkZW50aWZpZXI+IGJvdW5kUGFyYW1ldGVyTmFtZXM7
Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFyYW1ldGVycy0+c2l6ZSgp
OyBpKyspIHsKLSAgICAgICAgICAgICAgICBhdXRvIHBhcmFtZXRlciA9IHBhcmFtZXRlcnMtPmF0
KGkpOwotICAgICAgICAgICAgICAgIGlmIChwYXJhbWV0ZXItPmlzQmluZGluZ05vZGUoKSkKLSAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgcGFyYW1ldGVyLT5j
b2xsZWN0Qm91bmRJZGVudGlmaWVycyhib3VuZFBhcmFtZXRlck5hbWVzKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGZvciAoYXV0byYgYm91bmRQYXJhbWV0ZXJOYW1lIDogYm91bmRQYXJh
bWV0ZXJOYW1lcykKLSAgICAgICAgICAgICAgICBzY29wZS0+ZGVjbGFyZVZhcmlhYmxlKCZib3Vu
ZFBhcmFtZXRlck5hbWUpOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmICghbmFtZS5pc051bGwo
KSkKLSAgICAgICAgc2NvcGUtPmRlY2xhcmVDYWxsZWUoJm5hbWUpOworCiAgICAgbmV4dCgpOwog
fQogCkBAIC0yNTYsMTYgKzIzMiw1NCBAQCBQYXJzZXI8TGV4ZXJUeXBlPjo6flBhcnNlcigpCiB9
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci1TdHJpbmcgUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlSW5uZXIoKQorU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKGNv
bnN0IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIEZ1bmN0aW9uUGFyc2VNb2RlIHBhcnNlTW9kZSkK
IHsKICAgICBTdHJpbmcgcGFyc2VFcnJvciA9IFN0cmluZygpOwogICAgIAogICAgIEFTVEJ1aWxk
ZXIgY29udGV4dChjb25zdF9jYXN0PFZNKj4obV92bSksIG1fcGFyc2VyQXJlbmEsIGNvbnN0X2Nh
c3Q8U291cmNlQ29kZSo+KG1fc291cmNlKSk7Ci0gICAgaWYgKG1fbGV4ZXItPmlzUmVwYXJzaW5n
KCkpCi0gICAgICAgIG1fc3RhdGVtZW50RGVwdGgtLTsKICAgICBTY29wZVJlZiBzY29wZSA9IGN1
cnJlbnRTY29wZSgpOwotICAgIFNvdXJjZUVsZW1lbnRzKiBzb3VyY2VFbGVtZW50cyA9IHBhcnNl
U291cmNlRWxlbWVudHMoY29udGV4dCwgQ2hlY2tGb3JTdHJpY3RNb2RlLCBTdGFuZGFyZEZ1bmN0
aW9uUGFyc2VUeXBlKTsKLSAgICBpZiAoIXNvdXJjZUVsZW1lbnRzIHx8ICFjb25zdW1lKEVPRlRP
SykpIHsKKworICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gPSBmYWxzZTsK
KyNpZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQorICAgIGlmIChtX2xleGVyLT5p
c1JlcGFyc2luZ0Z1bmN0aW9uKCkpIHsKKyAgICAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1
aWxkZXI+IGZ1bmN0aW9uSW5mbzsKKyAgICAgICAgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoY29u
dGV4dCwgcGFyc2VNb2RlLCBmdW5jdGlvbkluZm8pOworICAgICAgICBtX3BhcmFtZXRlcnMgPSBm
dW5jdGlvbkluZm8ucGFyYW1ldGVyczsKKworICAgICAgICBpZiAocGFyc2VNb2RlID09IEFycm93
RnVuY3Rpb25Nb2RlKSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChtYXRjaChBUlJPV0ZV
TkNUSU9OKSk7CisgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICBpc0Fycm93RnVuY3Rp
b25Cb2R5RXhwcmVzc2lvbiA9ICFtYXRjaChPUEVOQlJBQ0UpOworICAgICAgICB9CisgICAgfQor
I2Vsc2UKKworICAgIGlmICghY2FsbGVlTmFtZS5pc051bGwoKSkKKyAgICAgICAgc2NvcGUtPmRl
Y2xhcmVDYWxsZWUoJmNhbGxlZU5hbWUpOworCisgICAgaWYgKG1fbGV4ZXItPmlzUmVwYXJzaW5n
RnVuY3Rpb24oKSkKKyAgICAgICAgbV9zdGF0ZW1lbnREZXB0aC0tOworCisgICAgU291cmNlRWxl
bWVudHMqIHNvdXJjZUVsZW1lbnRzID0gbnVsbHB0cjsKKyAgICAvLyBUaGUgb25seSB3YXkgd2Ug
Y2FuIGVycm9yIHRoaXMgZWFybHkgaXMgaWYgd2UgcmVwYXJzZSBhIGZ1bmN0aW9uIGFuZCB3ZSBy
dW4gb3V0IG9mIHN0YWNrIHNwYWNlLgorICAgIGlmICghaGFzRXJyb3IoKSkgeworICAgICAgICBp
ZiAoaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCisgICAgICAgICAgICBzb3VyY2VFbGVt
ZW50cyA9IHBhcnNlQXJyb3dGdW5jdGlvblNpbmdsZUV4cHJlc3Npb25Cb2R5U291cmNlRWxlbWVu
dHMoY29udGV4dCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0g
cGFyc2VTb3VyY2VFbGVtZW50cyhjb250ZXh0LCBDaGVja0ZvclN0cmljdE1vZGUpOworICAgIH0K
KworICAgIGJvb2wgdmFsaWRFbmRpbmc7CisgICAgaWYgKGlzQXJyb3dGdW5jdGlvbkJvZHlFeHBy
ZXNzaW9uKSB7CisgICAgICAgIEFTU0VSVChtX2xleGVyLT5pc1JlcGFyc2luZ0Z1bmN0aW9uKCkp
OworICAgICAgICAvLyBXaGVuIHdlIHJlcGFyc2UgYW5kIHN0YWNrIG92ZXJmbG93LCB3ZSdyZSBu
b3QgZ3VhcmFudGVlZCBhIHZhbGlkIGVuZGluZy4gSWYgd2UgZG9uJ3QgcnVuIG91dCBvZiBzdGFj
ayBzcGFjZSwKKyAgICAgICAgLy8gdGhlbiBvZiBjb3Vyc2UgdGhpcyB3aWxsIGFsd2F5cyBiZSB2
YWxpZCBiZWNhdXNlIHdlIGFscmVhZHkgcGFyc2VkIGZvciBzeW50YXggZXJyb3JzLiBCdXQgd2Ug
bXVzdAorICAgICAgICAvLyBiZSBjYXV0aW91cyBpbiBjYXNlIHdlIHJ1biBvdXQgb2Ygc3RhY2sg
c3BhY2UuCisgICAgICAgIHZhbGlkRW5kaW5nID0gaXNFbmRPZkFycm93RnVuY3Rpb24oKTsgCisg
ICAgfSBlbHNlCisgICAgICAgIHZhbGlkRW5kaW5nID0gY29uc3VtZShFT0ZUT0spOworCisgICAg
aWYgKCFzb3VyY2VFbGVtZW50cyB8fCAhdmFsaWRFbmRpbmcpIHsKICAgICAgICAgaWYgKGhhc0Vy
cm9yKCkpCiAgICAgICAgICAgICBwYXJzZUVycm9yID0gbV9lcnJvck1lc3NhZ2U7CiAgICAgICAg
IGVsc2UKQEAgLTM0Myw3ICszNTcsNyBAQCBib29sIFBhcnNlcjxMZXhlclR5cGU+OjphbGxvd0F1
dG9tYXRpY1NlCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VTb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYgY29udGV4dCwgU291cmNlRWxlbWVudHNN
b2RlIG1vZGUsIEZ1bmN0aW9uUGFyc2VUeXBlIGZ1bmN0aW9uUGFyc2VUeXBlKQordGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46
OnBhcnNlU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImIGNvbnRleHQsIFNvdXJjZUVsZW1lbnRz
TW9kZSBtb2RlKQogewogICAgIGNvbnN0IHVuc2lnbmVkIGxlbmd0aE9mVXNlU3RyaWN0TGl0ZXJh
bCA9IDEyOyAvLyAidXNlIHN0cmljdCIubGVuZ3RoCiAgICAgVHJlZVNvdXJjZUVsZW1lbnRzIHNv
dXJjZUVsZW1lbnRzID0gY29udGV4dC5jcmVhdGVTb3VyY2VFbGVtZW50cygpOwpAQCAtMzUzLDIy
ICszNjcsNiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFCiAgICAg
YXV0byBzYXZlUG9pbnQgPSBjcmVhdGVTYXZlUG9pbnQoKTsKICAgICBib29sIGhhc1NldFN0cmlj
dCA9IGZhbHNlOwogICAgIAotI2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCi0g
ICAgaWYgKG1hdGNoKEFSUk9XRlVOQ1RJT04pKSB7Ci0gICAgICAgIFRyZWVTdGF0ZW1lbnQgYXJy
b3dmdW5jdGlvblN0YXRlbWVudCA9IHBhcnNlQXJyb3dGdW5jdGlvblNpbmdsZUV4cHJlc3Npb25C
b2R5KGNvbnRleHQsIGZ1bmN0aW9uUGFyc2VUeXBlKTsKLSAgICAgICAgICAgIAotICAgICAgICBp
ZiAoYXJyb3dmdW5jdGlvblN0YXRlbWVudCkgewotICAgICAgICAgICAgY29udGV4dC5zZXRFbmRP
ZmZzZXQoYXJyb3dmdW5jdGlvblN0YXRlbWVudCwgbV9sYXN0VG9rZW5FbmRQb3NpdGlvbi5vZmZz
ZXQpOwotICAgICAgICAgICAgY29udGV4dC5hcHBlbmRTdGF0ZW1lbnQoc291cmNlRWxlbWVudHMs
IGFycm93ZnVuY3Rpb25TdGF0ZW1lbnQpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBw
cm9wYWdhdGVFcnJvcigpOwotICAgICAgICByZXR1cm4gc291cmNlRWxlbWVudHM7Ci0gICAgfQot
I2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZnVuY3Rpb25QYXJzZVR5cGUpOwotI2VuZGlmCi0gICAg
CiAgICAgd2hpbGUgKFRyZWVTdGF0ZW1lbnQgc3RhdGVtZW50ID0gcGFyc2VTdGF0ZW1lbnRMaXN0
SXRlbShjb250ZXh0LCBkaXJlY3RpdmUsICZkaXJlY3RpdmVMaXRlcmFsTGVuZ3RoKSkgewogICAg
ICAgICBpZiAobW9kZSA9PSBDaGVja0ZvclN0cmljdE1vZGUgJiYgIXNlZW5Ob25EaXJlY3RpdmUp
IHsKICAgICAgICAgICAgIGlmIChkaXJlY3RpdmUpIHsKQEAgLTYyNCwyNCArNjIyLDEzIEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZURlc3RydWMKICAgICByZXR1cm4gY29udGV4
dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24odG9rZW4ubV9sb2NhdGlvbiwgbmFtZSwgdG9rZW4ubV9z
dGFydFBvc2l0aW9uLCB0b2tlbi5tX2VuZFBvc2l0aW9uKTsKIH0KIAotI2lmIEVOQUJMRShFUzZf
QVJST1dGVU5DVElPTl9TWU5UQVgpCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgotdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUFycm93RnVuY3Rpb25TaW5nbGVFeHByZXNzaW9uQm9keShUcmVlQnVpbGRlciYgY29u
dGV4dCwgRnVuY3Rpb25QYXJzZVR5cGUgcGFyc2VUeXBlKQordGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXJyb3dG
dW5jdGlvblNpbmdsZUV4cHJlc3Npb25Cb2R5U291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImIGNv
bnRleHQpCiB7Ci0gICAgQVNTRVJUKG1hdGNoKEFSUk9XRlVOQ1RJT04pKTsKLQotICAgIC8vIFdo
ZW4gcmVwYXJzaW5nIHBoYXNlLCBwYXJzZVR5cGUgYmVjb21lcyBTdGFuZGFyZEZ1bmN0aW9uUGFy
c2VUeXBlIGV2ZW4gaWYgdGhlIGZ1bmN0aW9uIGlzIGFycm93IGZ1bmN0aW9uLgotICAgIC8vIFRo
aXMgY29uZGl0aW9uIGNvbnNpZGVycyB0aGUgZm9sbG93aW5nIHNpdHVhdGlvbnMuCi0gICAgLy8g
KDEpOiBJZiB3ZSBhcmUgaW4gdGhlIHJlcGFyc2luZyBwaGFzZSwgdGhpcyBhcnJvdyBmdW5jdGlv
biBpcyBhbHJlYWR5IHBhcnNlZCBvbmNlLCBzbyB0aGVyZSBpcyBubyBzeW50YXggZXJyb3IuCi0g
ICAgLy8gKDIpOiBCdXQgaWYgd2UgYXJlIG5vdCBpbiB0aGUgcmVwYXJzaW5nIHBoYXNlLCB3ZSBz
aG91bGQgY2hlY2sgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgaW4gdGhlIGNvbnRleHQgb2YgdGhl
IGFycm93IGZ1bmN0aW9uLgotICAgIGlmICghbV9sZXhlci0+aXNSZXBhcnNpbmcoKSAmJiBwYXJz
ZVR5cGUgIT0gQXJyb3dGdW5jdGlvblBhcnNlVHlwZSkKLSAgICAgICAgZmFpbER1ZVRvVW5leHBl
Y3RlZFRva2VuKCk7Ci0gICAgCisgICAgQVNTRVJUKCFtYXRjaChPUEVOQlJBQ0UpKTsKKyAgICAg
CiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgSlNU
ZXh0UG9zaXRpb24gc3RhcnQgPSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKLSAgICBKU1RleHRQb3Np
dGlvbiBlbmQgPSB0b2tlbkVuZFBvc2l0aW9uKCk7Ci0KLSAgICBuZXh0KCk7CiAKICAgICBmYWls
SWZTdGFja092ZXJmbG93KCk7CiAgICAgVHJlZUV4cHJlc3Npb24gZXhwciA9IHBhcnNlQXNzaWdu
bWVudEV4cHJlc3Npb24oY29udGV4dCk7CkBAIC02NTEsMTQgKzYzOCwxOCBAQCB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lCiAKICAgICBmYWlsSWZGYWxzZShpc0VuZE9m
QXJyb3dGdW5jdGlvbigpLCAiRXhwZWN0ZWQgYSAnOycsICddJywgJ30nLCAnKScsICcsJywgbGlu
ZSB0ZXJtaW5hdG9yIG9yIEVPRiBmb2xsb3dpbmcgYSBhcnJvdyBmdW5jdGlvbiBzdGF0ZW1lbnQi
KTsKIAotICAgIGVuZCA9IHRva2VuRW5kUG9zaXRpb24oKTsKKyAgICBKU1RleHRQb3NpdGlvbiBl
bmQgPSB0b2tlbkVuZFBvc2l0aW9uKCk7CiAgICAgCiAgICAgaWYgKCFtX2xleGVyLT5wcmV2VGVy
bWluYXRvcigpKQogICAgICAgICBzZXRFbmRPZlN0YXRlbWVudCgpOwogCi0gICAgcmV0dXJuIGNv
bnRleHQuY3JlYXRlUmV0dXJuU3RhdGVtZW50KGxvY2F0aW9uLCBleHByLCBzdGFydCwgZW5kKTsK
KyAgICBUcmVlU291cmNlRWxlbWVudHMgc291cmNlRWxlbWVudHMgPSBjb250ZXh0LmNyZWF0ZVNv
dXJjZUVsZW1lbnRzKCk7CisgICAgVHJlZVN0YXRlbWVudCBib2R5ID0gY29udGV4dC5jcmVhdGVS
ZXR1cm5TdGF0ZW1lbnQobG9jYXRpb24sIGV4cHIsIHN0YXJ0LCBlbmQpOworICAgIGNvbnRleHQu
c2V0RW5kT2Zmc2V0KGJvZHksIG1fbGFzdFRva2VuRW5kUG9zaXRpb24ub2Zmc2V0KTsKKyAgICBj
b250ZXh0LmFwcGVuZFN0YXRlbWVudChzb3VyY2VFbGVtZW50cywgYm9keSk7CisKKyAgICByZXR1
cm4gc291cmNlRWxlbWVudHM7CiB9Ci0jZW5kaWYKIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVy
VHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZURlc3RydWN0dXJpbmdQYXR0
ZXJuIFBhcnNlcjxMZXhlclR5cGU+Ojp0cnlQYXJzZURlc3RydWN0dXJpbmdQYXR0ZXJuRXhwcmVz
c2lvbihUcmVlQnVpbGRlciYgY29udGV4dCkKQEAgLTExNDIsNyArMTEzMyw3IEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUNsYXVzZUwKICAgICBUcmVlRXhwcmVzc2lvbiBjb25k
aXRpb24gPSBwYXJzZUV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2UoY29uZGl0
aW9uLCAiQ2Fubm90IHBhcnNlIHN3aXRjaCBjbGF1c2UiKTsKICAgICBjb25zdW1lT3JGYWlsKENP
TE9OLCAiRXhwZWN0ZWQgYSAnOicgYWZ0ZXIgc3dpdGNoIGNsYXVzZSBleHByZXNzaW9uIik7Ci0g
ICAgVHJlZVNvdXJjZUVsZW1lbnRzIHN0YXRlbWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRzKGNv
bnRleHQsIERvbnRDaGVja0ZvclN0cmljdE1vZGUsIFN0YW5kYXJkRnVuY3Rpb25QYXJzZVR5cGUp
OworICAgIFRyZWVTb3VyY2VFbGVtZW50cyBzdGF0ZW1lbnRzID0gcGFyc2VTb3VyY2VFbGVtZW50
cyhjb250ZXh0LCBEb250Q2hlY2tGb3JTdHJpY3RNb2RlKTsKICAgICBmYWlsSWZGYWxzZShzdGF0
ZW1lbnRzLCAiQ2Fubm90IHBhcnNlIHRoZSBib2R5IG9mIGEgc3dpdGNoIGNsYXVzZSIpOwogICAg
IFRyZWVDbGF1c2UgY2xhdXNlID0gY29udGV4dC5jcmVhdGVDbGF1c2UoY29uZGl0aW9uLCBzdGF0
ZW1lbnRzKTsKICAgICBjb250ZXh0LnNldFN0YXJ0T2Zmc2V0KGNsYXVzZSwgc3RhcnRPZmZzZXQp
OwpAQCAtMTE1NSw3ICsxMTQ2LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
Q2xhdXNlTAogICAgICAgICBUcmVlRXhwcmVzc2lvbiBjb25kaXRpb24gPSBwYXJzZUV4cHJlc3Np
b24oY29udGV4dCk7CiAgICAgICAgIGZhaWxJZkZhbHNlKGNvbmRpdGlvbiwgIkNhbm5vdCBwYXJz
ZSBzd2l0Y2ggY2FzZSBleHByZXNzaW9uIik7CiAgICAgICAgIGNvbnN1bWVPckZhaWwoQ09MT04s
ICJFeHBlY3RlZCBhICc6JyBhZnRlciBzd2l0Y2ggY2xhdXNlIGV4cHJlc3Npb24iKTsKLSAgICAg
ICAgVHJlZVNvdXJjZUVsZW1lbnRzIHN0YXRlbWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRzKGNv
bnRleHQsIERvbnRDaGVja0ZvclN0cmljdE1vZGUsIFN0YW5kYXJkRnVuY3Rpb25QYXJzZVR5cGUp
OworICAgICAgICBUcmVlU291cmNlRWxlbWVudHMgc3RhdGVtZW50cyA9IHBhcnNlU291cmNlRWxl
bWVudHMoY29udGV4dCwgRG9udENoZWNrRm9yU3RyaWN0TW9kZSk7CiAgICAgICAgIGZhaWxJZkZh
bHNlKHN0YXRlbWVudHMsICJDYW5ub3QgcGFyc2UgdGhlIGJvZHkgb2YgYSBzd2l0Y2ggY2xhdXNl
Iik7CiAgICAgICAgIGNsYXVzZSA9IGNvbnRleHQuY3JlYXRlQ2xhdXNlKGNvbmRpdGlvbiwgc3Rh
dGVtZW50cyk7CiAgICAgICAgIGNvbnRleHQuc2V0U3RhcnRPZmZzZXQoY2xhdXNlLCBzdGFydE9m
ZnNldCk7CkBAIC0xMTcyLDcgKzExNjMsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVDbGF1c2UgCiAgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSB0b2tlblN0YXJ0KCk7CiAg
ICAgbmV4dCgpOwogICAgIGNvbnN1bWVPckZhaWwoQ09MT04sICJFeHBlY3RlZCBhICc6JyBhZnRl
ciBzd2l0Y2ggZGVmYXVsdCBjbGF1c2UiKTsKLSAgICBUcmVlU291cmNlRWxlbWVudHMgc3RhdGVt
ZW50cyA9IHBhcnNlU291cmNlRWxlbWVudHMoY29udGV4dCwgRG9udENoZWNrRm9yU3RyaWN0TW9k
ZSwgU3RhbmRhcmRGdW5jdGlvblBhcnNlVHlwZSk7CisgICAgVHJlZVNvdXJjZUVsZW1lbnRzIHN0
YXRlbWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIERvbnRDaGVja0ZvclN0cmlj
dE1vZGUpOwogICAgIGZhaWxJZkZhbHNlKHN0YXRlbWVudHMsICJDYW5ub3QgcGFyc2UgdGhlIGJv
ZHkgb2YgYSBzd2l0Y2ggZGVmYXVsdCBjbGF1c2UiKTsKICAgICBUcmVlQ2xhdXNlIHJlc3VsdCA9
IGNvbnRleHQuY3JlYXRlQ2xhdXNlKDAsIHN0YXRlbWVudHMpOwogICAgIGNvbnRleHQuc2V0U3Rh
cnRPZmZzZXQocmVzdWx0LCBzdGFydE9mZnNldCk7CkBAIC0xMjU3LDcgKzEyNDgsNyBAQCB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lCiAgICAgICAgIGNvbnRleHQuc2V0
RW5kT2Zmc2V0KHJlc3VsdCwgZW5kT2Zmc2V0KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9Ci0gICAgVHJlZVNvdXJjZUVsZW1lbnRzIHN1YnRyZWUgPSBwYXJzZVNvdXJjZUVsZW1lbnRz
KGNvbnRleHQsIERvbnRDaGVja0ZvclN0cmljdE1vZGUsIFN0YW5kYXJkRnVuY3Rpb25QYXJzZVR5
cGUpOworICAgIFRyZWVTb3VyY2VFbGVtZW50cyBzdWJ0cmVlID0gcGFyc2VTb3VyY2VFbGVtZW50
cyhjb250ZXh0LCBEb250Q2hlY2tGb3JTdHJpY3RNb2RlKTsKICAgICBmYWlsSWZGYWxzZShzdWJ0
cmVlLCAiQ2Fubm90IHBhcnNlIHRoZSBib2R5IG9mIHRoZSBibG9jayBzdGF0ZW1lbnQiKTsKICAg
ICBtYXRjaE9yRmFpbChDTE9TRUJSQUNFLCAiRXhwZWN0ZWQgYSBjbG9zaW5nICd9JyBhdCB0aGUg
ZW5kIG9mIGEgYmxvY2sgc3RhdGVtZW50Iik7CiAgICAgaW50IGVuZE9mZnNldCA9IG1fdG9rZW4u
bV9kYXRhLm9mZnNldDsKQEAgLTEzNjIsNDYgKzEzNTMsNDMgQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlU3RhdGVtZQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBl
PgotdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGb3JtYWxQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiBjb250
ZXh0KQordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUZvcm1hbFBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImIGNvbnRleHQsIFRyZWVGb3JtYWxQ
YXJhbWV0ZXJMaXN0IGxpc3QsIHVuc2lnbmVkJiBwYXJhbWV0ZXJDb3VudCkKIHsKICAgICBhdXRv
IHBhcmFtZXRlciA9IHBhcnNlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4oY29udGV4dCwgRGVzdHJ1Y3R1
cmVUb1BhcmFtZXRlcnMpOwogICAgIGZhaWxJZkZhbHNlKHBhcmFtZXRlciwgIkNhbm5vdCBwYXJz
ZSBwYXJhbWV0ZXIgcGF0dGVybiIpOwotICAgIFRyZWVGb3JtYWxQYXJhbWV0ZXJMaXN0IGxpc3Qg
PSBjb250ZXh0LmNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QocGFyYW1ldGVyKTsKLSAgICBUcmVl
Rm9ybWFsUGFyYW1ldGVyTGlzdCB0YWlsID0gbGlzdDsKKyAgICBjb250ZXh0LmFwcGVuZFBhcmFt
ZXRlcihsaXN0LCBwYXJhbWV0ZXIpOworICAgIHBhcmFtZXRlckNvdW50Kys7CiAgICAgd2hpbGUg
KGNvbnN1bWUoQ09NTUEpKSB7CiAgICAgICAgIHBhcmFtZXRlciA9IHBhcnNlRGVzdHJ1Y3R1cmlu
Z1BhdHRlcm4oY29udGV4dCwgRGVzdHJ1Y3R1cmVUb1BhcmFtZXRlcnMpOwogICAgICAgICBmYWls
SWZGYWxzZShwYXJhbWV0ZXIsICJDYW5ub3QgcGFyc2UgcGFyYW1ldGVyIHBhdHRlcm4iKTsKLSAg
ICAgICAgdGFpbCA9IGNvbnRleHQuY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdCh0YWlsLCBwYXJh
bWV0ZXIpOworICAgICAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihsaXN0LCBwYXJhbWV0ZXIp
OworICAgICAgICBwYXJhbWV0ZXJDb3VudCsrOwogICAgIH0KLSAgICByZXR1cm4gbGlzdDsKKyAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUZ1bmN0aW9uQm9keSBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VGdW5jdGlvbkJvZHkoCi0gICAgVHJlZUJ1aWxkZXImIGNvbnRleHQsIGludCBmdW5j
dGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCAKLSAgICBpbnQgcGFyYW1l
dGVyc1N0YXJ0LCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBGdW5jdGlvblBhcnNl
VHlwZSBwYXJzZVR5cGUpCisgICAgVHJlZUJ1aWxkZXImIGNvbnRleHQsIGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgaW50IHN0YXJ0Q29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3
b3JkU3RhcnQsIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgCisg
ICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgRnVuY3Rpb25Cb2R5VHlwZSBib2R5
VHlwZSwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIEZ1bmN0aW9uUGFyc2VNb2RlIHBhcnNlTW9k
ZSkKIHsKLSAgICBKU1Rva2VuTG9jYXRpb24gc3RhcnRMb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkp
OwotICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uID0gdG9rZW5Db2x1bW4oKTsKLQotICAgIGlmIChw
YXJzZVR5cGUgPT0gU3RhbmRhcmRGdW5jdGlvblBhcnNlVHlwZSkgeworICAgIGlmIChib2R5VHlw
ZSA9PSBTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrIHx8IGJvZHlUeXBlID09IEFycm93RnVuY3Rp
b25Cb2R5QmxvY2spIHsKICAgICAgICAgbmV4dCgpOwogICAgICAgICBpZiAobWF0Y2goQ0xPU0VC
UkFDRSkpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGVuZENvbHVtbiA9IHRva2VuQ29sdW1uKCk7
Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkJvZHkoc3RhcnRMb2Nh
dGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktl
eXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9k
ZSgpLCBjb25zdHJ1Y3RvcktpbmQpOworICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRl
RnVuY3Rpb25Cb2R5KHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4s
IGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJh
bWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3Vu
dCwgcGFyc2VNb2RlKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIERlcHRoTWFuYWdlciBzdGF0
ZW1lbnREZXB0aCgmbV9zdGF0ZW1lbnREZXB0aCk7CiAgICAgbV9zdGF0ZW1lbnREZXB0aCA9IDA7
Ci0gICAgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZ1bmN0aW9uQm9keUJ1aWxkZXIgYm9keUJ1aWxk
ZXIoY29uc3RfY2FzdDxWTSo+KG1fdm0pLCBtX2xleGVyLmdldCgpKTsKLSNpZiBFTkFCTEUoRVM2
X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQotICAgIGZhaWxJZkZhbHNlKHBhcnNlU291cmNlRWxlbWVu
dHMoYm9keUJ1aWxkZXIsIENoZWNrRm9yU3RyaWN0TW9kZSwgcGFyc2VUeXBlKSwgcGFyc2VUeXBl
ID09IFN0YW5kYXJkRnVuY3Rpb25QYXJzZVR5cGUgPyAiQ2Fubm90IHBhcnNlIGJvZHkgb2YgdGhp
cyBmdW5jdGlvbiIgOiAiQ2Fubm90IHBhcnNlIGJvZHkgb2YgdGhpcyBhcnJvdyBmdW5jdGlvbiIp
OwotI2Vsc2UKLSAgICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVsZW1lbnRzKGJvZHlCdWlsZGVy
LCBDaGVja0ZvclN0cmljdE1vZGUsIFN0YW5kYXJkRnVuY3Rpb25QYXJzZVR5cGUpLCAiQ2Fubm90
IHBhcnNlIGJvZHkgb2YgdGhpcyBmdW5jdGlvbiIpOwotI2VuZGlmCisgICAgU3ludGF4Q2hlY2tl
ciBzeW50YXhDaGVja2VyKGNvbnN0X2Nhc3Q8Vk0qPihtX3ZtKSwgbV9sZXhlci5nZXQoKSk7Cisg
ICAgaWYgKGJvZHlUeXBlID09IEFycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKKyAgICAgICAg
ZmFpbElmRmFsc2UocGFyc2VBcnJvd0Z1bmN0aW9uU2luZ2xlRXhwcmVzc2lvbkJvZHlTb3VyY2VF
bGVtZW50cyhzeW50YXhDaGVja2VyKSwgIkNhbm5vdCBwYXJzZSBib2R5IG9mIHRoaXMgYXJyb3cg
ZnVuY3Rpb24iKTsKKyAgICBlbHNlCisgICAgICAgIGZhaWxJZkZhbHNlKHBhcnNlU291cmNlRWxl
bWVudHMoc3ludGF4Q2hlY2tlciwgQ2hlY2tGb3JTdHJpY3RNb2RlKSwgYm9keVR5cGUgPT0gU3Rh
bmRhcmRGdW5jdGlvbkJvZHlCbG9jayA/ICJDYW5ub3QgcGFyc2UgYm9keSBvZiB0aGlzIGZ1bmN0
aW9uIiA6ICJDYW5ub3QgcGFyc2UgYm9keSBvZiB0aGlzIGFycm93IGZ1bmN0aW9uIik7CiAgICAg
dW5zaWduZWQgZW5kQ29sdW1uID0gdG9rZW5Db2x1bW4oKTsKLSAgICByZXR1cm4gY29udGV4dC5j
cmVhdGVGdW5jdGlvbkJvZHkoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENv
bHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQs
IHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBjb25zdHJ1Y3RvcktpbmQpOworICAgIHJl
dHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uQm9keShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0
aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5j
dGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9y
S2luZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSk7CiB9CiAKIHN0YXRpYyBjb25zdCBjaGFy
KiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoRnVuY3Rpb25QYXJzZU1vZGUgbW9kZSkKQEAgLTE0MTEs
MjQgKzEzOTksMjggQEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZQog
ICAgICAgICByZXR1cm4gImdldHRlciI7CiAgICAgY2FzZSBTZXR0ZXJNb2RlOgogICAgICAgICBy
ZXR1cm4gInNldHRlciI7Ci0gICAgY2FzZSBGdW5jdGlvbk1vZGU6CisgICAgY2FzZSBOb3JtYWxG
dW5jdGlvbk1vZGU6CiAgICAgICAgIHJldHVybiAiZnVuY3Rpb24iOwogICAgIGNhc2UgTWV0aG9k
TW9kZToKICAgICAgICAgcmV0dXJuICJtZXRob2QiOwotI2lmIEVOQUJMRShFUzZfQVJST1dGVU5D
VElPTl9TWU5UQVgpCiAgICAgY2FzZSBBcnJvd0Z1bmN0aW9uTW9kZToKICAgICAgICAgcmV0dXJu
ICJhcnJvdyBmdW5jdGlvbiI7Ci0jZW5kaWYKKyAgICBjYXNlIE5vdEFGdW5jdGlvbk1vZGU6Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAiIjsK
ICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4gdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBpbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25QYXJhbWV0
ZXJzKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBGdW5jdGlvblBhcnNlTW9kZSBtb2RlLCBQYXJzZXJG
dW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+JiBpbmZvKQordGVtcGxhdGUgPHR5cGVuYW1lIExleGVy
VHlwZT4gdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBpbnQgUGFyc2VyPExleGVyVHlwZT46
OnBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBGdW5jdGlvblBh
cnNlTW9kZSBtb2RlLCBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+JiBmdW5jdGlvbklu
Zm8pCiB7CisgICAgUkVMRUFTRV9BU1NFUlQobW9kZSAhPSBOb3RBRnVuY3Rpb25Nb2RlKTsKICAg
ICBpbnQgcGFyYW1ldGVyc1N0YXJ0ID0gbV90b2tlbi5tX2xvY2F0aW9uLnN0YXJ0T2Zmc2V0Owor
ICAgIFRyZWVGb3JtYWxQYXJhbWV0ZXJMaXN0IHBhcmFtZXRlckxpc3QgPSBjb250ZXh0LmNyZWF0
ZUZvcm1hbFBhcmFtZXRlckxpc3QoKTsKKyAgICBmdW5jdGlvbkluZm8ucGFyYW1ldGVycyA9IHBh
cmFtZXRlckxpc3Q7CisgICAgZnVuY3Rpb25JbmZvLnN0YXJ0T2Zmc2V0ID0gcGFyYW1ldGVyc1N0
YXJ0OwogICAgIAotI2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCiAgICAgaWYg
KG1vZGUgPT0gQXJyb3dGdW5jdGlvbk1vZGUpIHsKICAgICAgICAgaWYgKCFtYXRjaChJREVOVCkg
JiYgIW1hdGNoKE9QRU5QQVJFTikpIHsKICAgICAgICAgICAgIHNlbWFudGljRmFpbHVyZUR1ZVRv
S2V5d29yZChzdHJpbmdGb3JGdW5jdGlvbk1vZGUobW9kZSksICIgbmFtZSIpOwpAQCAtMTQzNyw3
NiArMTQyOSw4OCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPiB0ZW1wbGF0ZSA8CiAg
ICAgICAgICAgICBpZiAobWF0Y2goT1BFTlBBUkVOKSkgewogICAgICAgICAgICAgICAgIG5leHQo
KTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAoIW1hdGNoKENMT1NFUEFS
RU4pKSB7Ci0gICAgICAgICAgICAgICAgICAgIGluZm8ucGFyYW1ldGVycyA9IHBhcnNlRm9ybWFs
UGFyYW1ldGVycyhjb250ZXh0KTsKLSAgICAgICAgICAgICAgICAgICAgZmFpbElmRmFsc2UoaW5m
by5wYXJhbWV0ZXJzLCAiQ2Fubm90IHBhcnNlIHBhcmFtZXRlcnMgZm9yIHRoaXMgIiwgc3RyaW5n
Rm9yRnVuY3Rpb25Nb2RlKG1vZGUpKTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgaWYgKG1hdGNoKENMT1NFUEFSRU4pKQorICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbklu
Zm8ucGFyYW1ldGVyQ291bnQgPSAwOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgZmFpbElmRmFsc2UocGFyc2VGb3JtYWxQYXJhbWV0ZXJzKGNvbnRleHQsIHBhcmFt
ZXRlckxpc3QsIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJDb3VudCksICJDYW5ub3QgcGFyc2UgcGFy
YW1ldGVycyBmb3IgdGhpcyAiLCBzdHJpbmdGb3JGdW5jdGlvbk1vZGUobW9kZSkpOwogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VQQVJFTiwgIkV4
cGVjdGVkIGEgJyknIG9yIGEgJywnIGFmdGVyIGEgcGFyYW1ldGVyIGRlY2xhcmF0aW9uIik7CiAg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGZ1bmN0aW9uSW5mby5wYXJhbWV0
ZXJDb3VudCA9IDE7CiAgICAgICAgICAgICAgICAgYXV0byBwYXJhbWV0ZXIgPSBwYXJzZURlc3Ry
dWN0dXJpbmdQYXR0ZXJuKGNvbnRleHQsIERlc3RydWN0dXJlVG9QYXJhbWV0ZXJzKTsKICAgICAg
ICAgICAgICAgICBmYWlsSWZGYWxzZShwYXJhbWV0ZXIsICJDYW5ub3QgcGFyc2UgcGFyYW1ldGVy
IHBhdHRlcm4iKTsKLSAgICAgICAgICAgICAgICBpbmZvLnBhcmFtZXRlcnMgPSBjb250ZXh0LmNy
ZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QocGFyYW1ldGVyKTsKLSAgICAgICAgICAgICAgICBmYWls
SWZGYWxzZShpbmZvLnBhcmFtZXRlcnMsICJDYW5ub3QgcGFyc2UgcGFyYW1ldGVycyBmb3IgdGhp
cyAiLCBzdHJpbmdGb3JGdW5jdGlvbk1vZGUobW9kZSkpOworICAgICAgICAgICAgICAgIGNvbnRl
eHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlckxpc3QsIHBhcmFtZXRlcik7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgcmV0dXJuIHBhcmFtZXRlcnNTdGFy
dDsKICAgICB9Ci0jZW5kaWYKLSAgICAKKwogICAgIGlmICghY29uc3VtZShPUEVOUEFSRU4pKSB7
CiAgICAgICAgIHNlbWFudGljRmFpbHVyZUR1ZVRvS2V5d29yZChzdHJpbmdGb3JGdW5jdGlvbk1v
ZGUobW9kZSksICIgbmFtZSIpOwogICAgICAgICBmYWlsV2l0aE1lc3NhZ2UoIkV4cGVjdGVkIGFu
IG9wZW5pbmcgJygnIGJlZm9yZSBhICIsIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShtb2RlKSwgIidz
IHBhcmFtZXRlciBsaXN0Iik7CiAgICAgfQogCi0gICAgaWYgKG1vZGUgPT0gR2V0dGVyTW9kZSkK
KyAgICBpZiAobW9kZSA9PSBHZXR0ZXJNb2RlKSB7CiAgICAgICAgIGNvbnN1bWVPckZhaWwoQ0xP
U0VQQVJFTiwgImdldHRlciBmdW5jdGlvbnMgbXVzdCBoYXZlIG5vIHBhcmFtZXRlcnMiKTsKLSAg
ICBlbHNlIGlmIChtb2RlID09IFNldHRlck1vZGUpIHsKKyAgICAgICAgZnVuY3Rpb25JbmZvLnBh
cmFtZXRlckNvdW50ID0gMDsKKyAgICB9IGVsc2UgaWYgKG1vZGUgPT0gU2V0dGVyTW9kZSkgewog
ICAgICAgICBmYWlsSWZUcnVlKG1hdGNoKENMT1NFUEFSRU4pLCAic2V0dGVyIGZ1bmN0aW9ucyBt
dXN0IGhhdmUgb25lIHBhcmFtZXRlciIpOwogICAgICAgICBhdXRvIHBhcmFtZXRlciA9IHBhcnNl
RGVzdHJ1Y3R1cmluZ1BhdHRlcm4oY29udGV4dCwgRGVzdHJ1Y3R1cmVUb1BhcmFtZXRlcnMpOwog
ICAgICAgICBmYWlsSWZGYWxzZShwYXJhbWV0ZXIsICJzZXR0ZXIgZnVuY3Rpb25zIG11c3QgaGF2
ZSBvbmUgcGFyYW1ldGVyIik7Ci0gICAgICAgIGluZm8ucGFyYW1ldGVycyA9IGNvbnRleHQuY3Jl
YXRlRm9ybWFsUGFyYW1ldGVyTGlzdChwYXJhbWV0ZXIpOworICAgICAgICBjb250ZXh0LmFwcGVu
ZFBhcmFtZXRlcihwYXJhbWV0ZXJMaXN0LCBwYXJhbWV0ZXIpOworICAgICAgICBmdW5jdGlvbklu
Zm8ucGFyYW1ldGVyQ291bnQgPSAxOwogICAgICAgICBmYWlsSWZUcnVlKG1hdGNoKENPTU1BKSwg
InNldHRlciBmdW5jdGlvbnMgbXVzdCBoYXZlIG9uZSBwYXJhbWV0ZXIiKTsKICAgICAgICAgY29u
c3VtZU9yRmFpbChDTE9TRVBBUkVOLCAiRXhwZWN0ZWQgYSAnKScgYWZ0ZXIgYSBwYXJhbWV0ZXIg
ZGVjbGFyYXRpb24iKTsKICAgICB9IGVsc2UgewotICAgICAgICBpZiAoIW1hdGNoKENMT1NFUEFS
RU4pKSB7Ci0gICAgICAgICAgICBpbmZvLnBhcmFtZXRlcnMgPSBwYXJzZUZvcm1hbFBhcmFtZXRl
cnMoY29udGV4dCk7Ci0gICAgICAgICAgICBmYWlsSWZGYWxzZShpbmZvLnBhcmFtZXRlcnMsICJD
YW5ub3QgcGFyc2UgcGFyYW1ldGVycyBmb3IgdGhpcyAiLCBzdHJpbmdGb3JGdW5jdGlvbk1vZGUo
bW9kZSkpOwotICAgICAgICB9CisgICAgICAgIGlmIChtYXRjaChDTE9TRVBBUkVOKSkKKyAgICAg
ICAgICAgIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJDb3VudCA9IDA7CisgICAgICAgICBlbHNlCisg
ICAgICAgICAgICBmYWlsSWZGYWxzZShwYXJzZUZvcm1hbFBhcmFtZXRlcnMoY29udGV4dCwgcGFy
YW1ldGVyTGlzdCwgZnVuY3Rpb25JbmZvLnBhcmFtZXRlckNvdW50KSwgIkNhbm5vdCBwYXJzZSBw
YXJhbWV0ZXJzIGZvciB0aGlzICIsIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShtb2RlKSk7CiAgICAg
ICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VQQVJFTiwgIkV4cGVjdGVkIGEgJyknIG9yIGEgJywnIGFm
dGVyIGEgcGFyYW1ldGVyIGRlY2xhcmF0aW9uIik7CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJu
IHBhcmFtZXRlcnNTdGFydDsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KLXRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VG
dW5jdGlvbkluZm8oVHJlZUJ1aWxkZXImIGNvbnRleHQsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzIHJl
cXVpcmVtZW50cywgRnVuY3Rpb25QYXJzZU1vZGUgbW9kZSwgYm9vbCBuYW1lSXNJbkNvbnRhaW5p
bmdTY29wZSwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nIGV4
cGVjdGVkU3VwZXJCaW5kaW5nLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIFBhcnNlckZ1bmN0
aW9uSW5mbzxUcmVlQnVpbGRlcj4mIGluZm8sIEZ1bmN0aW9uUGFyc2VUeXBlIHBhcnNlVHlwZSkK
K3RlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkZXImIGNvbnRleHQsIEZ1bmN0aW9uUmVxdWlyZW1lbnRz
IHJlcXVpcmVtZW50cywgRnVuY3Rpb25QYXJzZU1vZGUgbW9kZSwgYm9vbCBuYW1lSXNJbkNvbnRh
aW5pbmdTY29wZSwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5n
IGV4cGVjdGVkU3VwZXJCaW5kaW5nLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIFBhcnNlckZ1
bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4mIGZ1bmN0aW9uSW5mbywgRnVuY3Rpb25QYXJzZVR5cGUg
cGFyc2VUeXBlKQogeworICAgIFJFTEVBU0VfQVNTRVJUKG1vZGUgIT0gTm90QUZ1bmN0aW9uTW9k
ZSk7CisKICAgICBBdXRvUG9wU2NvcGVSZWYgZnVuY3Rpb25TY29wZSh0aGlzLCBwdXNoU2NvcGUo
KSk7CiAgICAgZnVuY3Rpb25TY29wZS0+c2V0SXNGdW5jdGlvbigpOwogICAgIGludCBmdW5jdGlv
bk5hbWVTdGFydCA9IG1fdG9rZW4ubV9sb2NhdGlvbi5zdGFydE9mZnNldDsKICAgICBjb25zdCBJ
ZGVudGlmaWVyKiBsYXN0RnVuY3Rpb25OYW1lID0gbV9sYXN0RnVuY3Rpb25OYW1lOwogICAgIG1f
bGFzdEZ1bmN0aW9uTmFtZSA9IG51bGxwdHI7CiAgICAgaW50IHBhcmFtZXRlcnNTdGFydDsKKyAg
ICBKU1Rva2VuTG9jYXRpb24gc3RhcnRMb2NhdGlvbjsKKyAgICBpbnQgc3RhcnRDb2x1bW47Cisg
ICAgRnVuY3Rpb25Cb2R5VHlwZSBmdW5jdGlvbkJvZHlUeXBlOwogICAgIAogICAgIHN3aXRjaCAo
cGFyc2VUeXBlKSB7CiAgICAgY2FzZSBTdGFuZGFyZEZ1bmN0aW9uUGFyc2VUeXBlOiB7CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKG1vZGUgIT0gQXJyb3dGdW5jdGlvbk1vZGUpOworCiAgICAgICAg
IGlmIChtYXRjaChJREVOVCkpIHsKLSAgICAgICAgICAgIGluZm8ubmFtZSA9IG1fdG9rZW4ubV9k
YXRhLmlkZW50OwotICAgICAgICAgICAgbV9sYXN0RnVuY3Rpb25OYW1lID0gaW5mby5uYW1lOwor
ICAgICAgICAgICAgZnVuY3Rpb25JbmZvLm5hbWUgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKKyAg
ICAgICAgICAgIG1fbGFzdEZ1bmN0aW9uTmFtZSA9IGZ1bmN0aW9uSW5mby5uYW1lOwogICAgICAg
ICAgICAgbmV4dCgpOwogICAgICAgICAgICAgaWYgKCFuYW1lSXNJbkNvbnRhaW5pbmdTY29wZSkK
LSAgICAgICAgICAgICAgICBmYWlsSWZGYWxzZUlmU3RyaWN0KGZ1bmN0aW9uU2NvcGUtPmRlY2xh
cmVWYXJpYWJsZShpbmZvLm5hbWUpLCAiJyIsIGluZm8ubmFtZS0+aW1wbCgpLCAiJyBpcyBub3Qg
YSB2YWxpZCAiLCBzdHJpbmdGb3JGdW5jdGlvbk1vZGUobW9kZSksICIgbmFtZSBpbiBzdHJpY3Qg
bW9kZSIpOworICAgICAgICAgICAgICAgIGZhaWxJZkZhbHNlSWZTdHJpY3QoZnVuY3Rpb25TY29w
ZS0+ZGVjbGFyZVZhcmlhYmxlKGZ1bmN0aW9uSW5mby5uYW1lKSwgIiciLCBmdW5jdGlvbkluZm8u
bmFtZS0+aW1wbCgpLCAiJyBpcyBub3QgYSB2YWxpZCAiLCBzdHJpbmdGb3JGdW5jdGlvbk1vZGUo
bW9kZSksICIgbmFtZSBpbiBzdHJpY3QgbW9kZSIpOwogICAgICAgICB9IGVsc2UgaWYgKHJlcXVp
cmVtZW50cyA9PSBGdW5jdGlvbk5lZWRzTmFtZSkgewotICAgICAgICAgICAgaWYgKG1hdGNoKE9Q
RU5QQVJFTikgJiYgbW9kZSA9PSBGdW5jdGlvbk1vZGUpCisgICAgICAgICAgICBpZiAobWF0Y2go
T1BFTlBBUkVOKSAmJiBtb2RlID09IE5vcm1hbEZ1bmN0aW9uTW9kZSkKICAgICAgICAgICAgICAg
ICBzZW1hbnRpY0ZhaWwoIkZ1bmN0aW9uIHN0YXRlbWVudHMgbXVzdCBoYXZlIGEgbmFtZSIpOwog
ICAgICAgICAgICAgc2VtYW50aWNGYWlsdXJlRHVlVG9LZXl3b3JkKHN0cmluZ0ZvckZ1bmN0aW9u
TW9kZShtb2RlKSwgIiBuYW1lIik7CiAgICAgICAgICAgICBmYWlsRHVlVG9VbmV4cGVjdGVkVG9r
ZW4oKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQotICAgICAgICAKLSAg
ICAgICAgcGFyYW1ldGVyc1N0YXJ0ID0gcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoY29udGV4dCwg
bW9kZSwgaW5mbyk7CisKKyAgICAgICAgc3RhcnRMb2NhdGlvbiA9IHRva2VuTG9jYXRpb24oKTsK
KyAgICAgICAgZnVuY3Rpb25JbmZvLnN0YXJ0TGluZSA9IHRva2VuTGluZSgpOworICAgICAgICBz
dGFydENvbHVtbiA9IHRva2VuQ29sdW1uKCk7CisKKyAgICAgICAgcGFyYW1ldGVyc1N0YXJ0ID0g
cGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoY29udGV4dCwgbW9kZSwgZnVuY3Rpb25JbmZvKTsKICAg
ICAgICAgcHJvcGFnYXRlRXJyb3IoKTsKICAgICAgICAgCiAgICAgICAgIG1hdGNoT3JGYWlsKE9Q
RU5CUkFDRSwgIkV4cGVjdGVkIGFuIG9wZW5pbmcgJ3snIGF0IHRoZSBzdGFydCBvZiBhICIsIHN0
cmluZ0ZvckZ1bmN0aW9uTW9kZShtb2RlKSwgIiBib2R5Iik7CkBAIC0xNTE4LDE0ICsxNTIyLDIw
IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXIKICAgICAgICAgICAg
IGNvbnN0cnVjdG9yS2luZCA9IG1fZGVmYXVsdENvbnN0cnVjdG9yS2luZDsKICAgICAgICAgICAg
IGV4cGVjdGVkU3VwZXJCaW5kaW5nID0gbV9kZWZhdWx0Q29uc3RydWN0b3JLaW5kID09IENvbnN0
cnVjdG9yS2luZDo6RGVyaXZlZCA/IFN1cGVyQmluZGluZzo6TmVlZGVkIDogU3VwZXJCaW5kaW5n
OjpOb3ROZWVkZWQ7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGluZm8uc3RhcnRGdW5j
dGlvbk9mZnNldCA9IG1fdG9rZW4ubV9kYXRhLm9mZnNldDsKKworICAgICAgICBmdW5jdGlvbkJv
ZHlUeXBlID0gU3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jazsKICAgICAgICAgCiAgICAgICAgIGJy
ZWFrOwogICAgIH0KICNpZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQogICAgIGNh
c2UgQXJyb3dGdW5jdGlvblBhcnNlVHlwZTogewotICAgICAgICBwYXJhbWV0ZXJzU3RhcnQgPSBw
YXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhjb250ZXh0LCBBcnJvd0Z1bmN0aW9uTW9kZSwgaW5mbyk7
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1vZGUgPT0gQXJyb3dGdW5jdGlvbk1vZGUpOworCisg
ICAgICAgIHN0YXJ0TG9jYXRpb24gPSB0b2tlbkxvY2F0aW9uKCk7CisgICAgICAgIGZ1bmN0aW9u
SW5mby5zdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKKyAgICAgICAgc3RhcnRDb2x1bW4gPSB0b2tl
bkNvbHVtbigpOworCisgICAgICAgIHBhcmFtZXRlcnNTdGFydCA9IHBhcnNlRnVuY3Rpb25QYXJh
bWV0ZXJzKGNvbnRleHQsIG1vZGUsIGZ1bmN0aW9uSW5mbyk7CiAgICAgICAgIHByb3BhZ2F0ZUVy
cm9yKCk7CiAgICAgICAgIAogICAgICAgICBtYXRjaE9yRmFpbChBUlJPV0ZVTkNUSU9OLCAiRXhw
ZWN0ZWQgYSAnPT4nIGFmdGVyIGFycm93IGZ1bmN0aW9uIHBhcmFtZXRlciBkZWNsYXJhdGlvbiIp
OwpAQCAtMTUzNSwzMCArMTU0NSwyNSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJv
b2wgUGFyc2VyCiAKICAgICAgICAgQVNTRVJUKGNvbnN0cnVjdG9yS2luZCA9PSBDb25zdHJ1Y3Rv
cktpbmQ6Ok5vbmUpOwogICAgICAgICAKLSAgICAgICAgaW5mby5hcnJvd0Z1bmN0aW9uT2Zmc2V0
ID0gbV90b2tlbi5tX2RhdGEub2Zmc2V0OwogICAgICAgICAvLyBDaGVjayBpZiBhcnJvdyBib2R5
IHN0YXJ0IHdpdGggey4gSWYgaXQgdHJ1ZSBpdCBtZWFuIHRoYXQgYXJyb3cgZnVuY3Rpb24gaXMg
RmF0IGFycm93IGZ1bmN0aW9uCiAgICAgICAgIC8vIGFuZCB3ZSBuZWVkIHVzZSBjb21tb24gYXBw
cm9hY2ggdG8gcGFyc2UgZnVuY3Rpb24gYm9keQotICAgICAgICBTYXZlUG9pbnQgc2F2ZVBvaW50
ID0gY3JlYXRlU2F2ZVBvaW50KCk7Ci0gICAgICAgIAogICAgICAgICBuZXh0KCk7Ci0gICAgICAg
IGluZm8uZnVuY3Rpb25Cb2R5VHlwZSA9IG1hdGNoKE9QRU5CUkFDRSkgPyBBcnJvd0Z1bmN0aW9u
Qm9keUJsb2NrIDogQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uOwotICAgICAgICBpbmZvLnN0
YXJ0RnVuY3Rpb25PZmZzZXQgPSAoaW5mby5mdW5jdGlvbkJvZHlUeXBlID09IEFycm93RnVuY3Rp
b25Cb2R5QmxvY2spID8gbV90b2tlbi5tX2RhdGEub2Zmc2V0IDogaW5mby5hcnJvd0Z1bmN0aW9u
T2Zmc2V0OworICAgICAgICBmdW5jdGlvbkJvZHlUeXBlID0gbWF0Y2goT1BFTkJSQUNFKSA/IEFy
cm93RnVuY3Rpb25Cb2R5QmxvY2sgOiBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb247CiAgICAg
ICAgIAotICAgICAgICByZXN0b3JlU2F2ZVBvaW50KHNhdmVQb2ludCk7Ci0KICAgICAgICAgYnJl
YWs7CiAgICAgfQorI2Vsc2UKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogI2VuZGlmCiAgICAgfQogICAgIAogICAgIGJvb2wgaXNDbGFzc0NvbnN0
cnVjdG9yID0gY29uc3RydWN0b3JLaW5kICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsKIAotICAg
IGluZm8uYm9keVN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwotICAgIGluZm8uYm9keVN0YXJ0Q29s
dW1uID0gbV90b2tlbi5tX2RhdGEub2Zmc2V0IC0gbV90b2tlbi5tX2RhdGEubGluZVN0YXJ0T2Zm
c2V0OwotICAgIEpTVG9rZW5Mb2NhdGlvbiBzdGFydExvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7
CisgICAgZnVuY3Rpb25JbmZvLmJvZHlTdGFydENvbHVtbiA9IHN0YXJ0Q29sdW1uOwogICAgIAog
ICAgIC8vIElmIHdlIGtub3cgYWJvdXQgdGhpcyBmdW5jdGlvbiBhbHJlYWR5LCB3ZSBjYW4gdXNl
IHRoZSBjYWNoZWQgaW5mbyBhbmQgc2tpcCB0aGUgcGFyc2VyIHRvIHRoZSBlbmQgb2YgdGhlIGZ1
bmN0aW9uLgotICAgIGlmIChjb25zdCBTb3VyY2VQcm92aWRlckNhY2hlSXRlbSogY2FjaGVkSW5m
byA9IFRyZWVCdWlsZGVyOjpDYW5Vc2VGdW5jdGlvbkNhY2hlID8gZmluZENhY2hlZEZ1bmN0aW9u
SW5mbyhpbmZvLnN0YXJ0RnVuY3Rpb25PZmZzZXQpIDogMCkgeworICAgIGlmIChjb25zdCBTb3Vy
Y2VQcm92aWRlckNhY2hlSXRlbSogY2FjaGVkSW5mbyA9IFRyZWVCdWlsZGVyOjpDYW5Vc2VGdW5j
dGlvbkNhY2hlID8gZmluZENhY2hlZEZ1bmN0aW9uSW5mbyhmdW5jdGlvbkluZm8uc3RhcnRPZmZz
ZXQpIDogMCkgewogICAgICAgICAvLyBJZiB3ZSdyZSBpbiBhIHN0cmljdCBjb250ZXh0LCB0aGUg
Y2FjaGVkIGZ1bmN0aW9uIGluZm8gbXVzdCBzYXkgaXQgd2FzIHN0cmljdCB0b28uCiAgICAgICAg
IEFTU0VSVCghc3RyaWN0TW9kZSgpIHx8IGNhY2hlZEluZm8tPnN0cmljdE1vZGUpOwogICAgICAg
ICBKU1Rva2VuTG9jYXRpb24gZW5kTG9jYXRpb247CkBAIC0xNTY3LDE3ICsxNTcyLDE3IEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXIKICAgICAgICAgZW5kTG9jYXRp
b24uc3RhcnRPZmZzZXQgPSBjYWNoZWRJbmZvLT5sYXN0VG9ja2VuU3RhcnRPZmZzZXQ7CiAgICAg
ICAgIGVuZExvY2F0aW9uLmxpbmVTdGFydE9mZnNldCA9IGNhY2hlZEluZm8tPmxhc3RUb2NrZW5M
aW5lU3RhcnRPZmZzZXQ7CiAKLSAgICAgICAgYm9vbCBlbmRDb2x1bW5Jc09uU3RhcnRMaW5lID0g
KGVuZExvY2F0aW9uLmxpbmUgPT0gaW5mby5ib2R5U3RhcnRMaW5lKTsKKyAgICAgICAgYm9vbCBl
bmRDb2x1bW5Jc09uU3RhcnRMaW5lID0gKGVuZExvY2F0aW9uLmxpbmUgPT0gZnVuY3Rpb25JbmZv
LnN0YXJ0TGluZSk7CiAgICAgICAgIEFTU0VSVChlbmRMb2NhdGlvbi5zdGFydE9mZnNldCA+PSBl
bmRMb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOwogICAgICAgICB1bnNpZ25lZCBib2R5RW5kQ29s
dW1uID0gZW5kQ29sdW1uSXNPblN0YXJ0TGluZSA/CiAgICAgICAgICAgICBlbmRMb2NhdGlvbi5z
dGFydE9mZnNldCAtIG1fdG9rZW4ubV9kYXRhLmxpbmVTdGFydE9mZnNldCA6CiAgICAgICAgICAg
ICBlbmRMb2NhdGlvbi5zdGFydE9mZnNldCAtIGVuZExvY2F0aW9uLmxpbmVTdGFydE9mZnNldDsK
ICAgICAgICAgdW5zaWduZWQgY3VycmVudExpbmVTdGFydE9mZnNldCA9IG1fdG9rZW4ubV9sb2Nh
dGlvbi5saW5lU3RhcnRPZmZzZXQ7CiAKLSAgICAgICAgaW5mby5ib2R5ID0gY29udGV4dC5jcmVh
dGVGdW5jdGlvbkJvZHkoCi0gICAgICAgICAgICBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwg
aW5mby5ib2R5U3RhcnRDb2x1bW4sIGJvZHlFbmRDb2x1bW4sIAorICAgICAgICBmdW5jdGlvbklu
Zm8uYm9keSA9IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25Cb2R5KAorICAgICAgICAgICAgc3RhcnRM
b2NhdGlvbiwgZW5kTG9jYXRpb24sIGZ1bmN0aW9uSW5mby5ib2R5U3RhcnRDb2x1bW4sIGJvZHlF
bmRDb2x1bW4sIAogICAgICAgICAgICAgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFt
ZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIAotICAgICAgICAgICAgY2FjaGVkSW5mby0+c3RyaWN0
TW9kZSwgY29uc3RydWN0b3JLaW5kKTsKKyAgICAgICAgICAgIGNhY2hlZEluZm8tPnN0cmljdE1v
ZGUsIGNvbnN0cnVjdG9yS2luZCwgY2FjaGVkSW5mby0+cGFyYW1ldGVyQ291bnQsIG1vZGUpOwog
ICAgICAgICAKICAgICAgICAgZnVuY3Rpb25TY29wZS0+cmVzdG9yZUZyb21Tb3VyY2VQcm92aWRl
ckNhY2hlKGNhY2hlZEluZm8pOwogICAgICAgICBmYWlsSWZGYWxzZShwb3BTY29wZShmdW5jdGlv
blNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKSwgIlBhcnNlciBlcnJv
ciIpOwpAQCAtMTU4OSw2NCArMTU5NCw0MCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IGJvb2wgUGFyc2VyCiAKICAgICAgICAgbV9sZXhlci0+c2V0T2Zmc2V0KG1fdG9rZW4ubV9sb2Nh
dGlvbi5lbmRPZmZzZXQsIG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOwogICAg
ICAgICBtX2xleGVyLT5zZXRMaW5lTnVtYmVyKG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lKTsKLSAg
ICAgICAgaW5mby5lbmRGdW5jdGlvbk9mZnNldCA9IGNhY2hlZEluZm8tPmVuZEZ1bmN0aW9uT2Zm
c2V0OwotI2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCisgICAgICAgIGZ1bmN0
aW9uSW5mby5lbmRPZmZzZXQgPSBjYWNoZWRJbmZvLT5lbmRGdW5jdGlvbk9mZnNldDsKKwogICAg
ICAgICBpZiAocGFyc2VUeXBlID09IEFycm93RnVuY3Rpb25QYXJzZVR5cGUpCi0gICAgICAgICAg
ICBpbmZvLmZ1bmN0aW9uQm9keVR5cGUgPSBjYWNoZWRJbmZvLT5pc0JvZHlBcnJvd0V4cHJlc3Np
b24gPyAgQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uIDogQXJyb3dGdW5jdGlvbkJvZHlCbG9j
azsKKyAgICAgICAgICAgIGZ1bmN0aW9uQm9keVR5cGUgPSBjYWNoZWRJbmZvLT5pc0JvZHlBcnJv
d0V4cHJlc3Npb24gPyAgQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uIDogQXJyb3dGdW5jdGlv
bkJvZHlCbG9jazsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgaW5mby5mdW5jdGlvbkJvZHlU
eXBlID0gU3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jazsKKyAgICAgICAgICAgIGZ1bmN0aW9uQm9k
eVR5cGUgPSBTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrOwogICAgICAgICAKLSAgICAgICAgc3dp
dGNoIChpbmZvLmZ1bmN0aW9uQm9keVR5cGUpIHsKKyAgICAgICAgc3dpdGNoIChmdW5jdGlvbkJv
ZHlUeXBlKSB7CiAgICAgICAgIGNhc2UgQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uOgogICAg
ICAgICAgICAgbmV4dCgpOwotICAgICAgICAgICAgY29udGV4dC5zZXRFbmRPZmZzZXQoaW5mby5i
b2R5LCBtX2xleGVyLT5jdXJyZW50T2Zmc2V0KCkpOworICAgICAgICAgICAgY29udGV4dC5zZXRF
bmRPZmZzZXQoZnVuY3Rpb25JbmZvLmJvZHksIG1fbGV4ZXItPmN1cnJlbnRPZmZzZXQoKSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBcnJvd0Z1bmN0aW9uQm9keUJsb2NrOgog
ICAgICAgICBjYXNlIFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2s6Ci0gICAgICAgICAgICBjb250
ZXh0LnNldEVuZE9mZnNldChpbmZvLmJvZHksIG1fbGV4ZXItPmN1cnJlbnRPZmZzZXQoKSk7Cisg
ICAgICAgICAgICBjb250ZXh0LnNldEVuZE9mZnNldChmdW5jdGlvbkluZm8uYm9keSwgbV9sZXhl
ci0+Y3VycmVudE9mZnNldCgpKTsKICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9Ci0jZWxzZQotICAgICAgICBjb250ZXh0LnNldEVuZE9mZnNldChpbmZv
LmJvZHksIG1fbGV4ZXItPmN1cnJlbnRPZmZzZXQoKSk7Ci0gICAgICAgIG5leHQoKTsKLSNlbmRp
ZgotICAgICAgICBpbmZvLmJvZHlFbmRMaW5lID0gbV9sYXN0VG9rZW5FbmRQb3NpdGlvbi5saW5l
OworICAgICAgICBmdW5jdGlvbkluZm8uZW5kTGluZSA9IG1fbGFzdFRva2VuRW5kUG9zaXRpb24u
bGluZTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIAogICAgIG1fbGFzdEZ1bmN0
aW9uTmFtZSA9IGxhc3RGdW5jdGlvbk5hbWU7CiAgICAgUGFyc2VyU3RhdGUgb2xkU3RhdGUgPSBz
YXZlU3RhdGUoKTsKICAgICAKLSNpZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQot
ICAgIHN3aXRjaCAoaW5mby5mdW5jdGlvbkJvZHlUeXBlKSB7Ci0gICAgY2FzZSBBcnJvd0Z1bmN0
aW9uQm9keUJsb2NrOiB7Ci0gICAgICAgIC8vIENvbnN1bWUgPT4gaW4gY2FzZSBvZiBhcnJvdyBm
dW5jdGlvbiBibG9jayBlLmcuIHggPT4geyByZXR1cm4geDsgfQotICAgICAgICBuZXh0KCk7Ci0g
ICAgCi0gICAgICAgIGluZm8uYm9keVN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwotICAgICAgICBp
bmZvLmJvZHlTdGFydENvbHVtbiA9IG1fdG9rZW4ubV9kYXRhLm9mZnNldCAtIG1fdG9rZW4ubV9k
YXRhLmxpbmVTdGFydE9mZnNldDsKLSAgICAgICAgICAgIAotICAgICAgICBpbmZvLmJvZHkgPSBw
YXJzZUZ1bmN0aW9uQm9keShjb250ZXh0LCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25O
YW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgY29uc3RydWN0b3JLaW5kLCBTdGFuZGFyZEZ1bmN0
aW9uUGFyc2VUeXBlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgU3RhbmRhcmRG
dW5jdGlvbkJvZHlCbG9jazoKLSAgICBjYXNlIEFycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA6
IHsKLSAgICAgICAgaW5mby5ib2R5ID0gcGFyc2VGdW5jdGlvbkJvZHkoY29udGV4dCwgZnVuY3Rp
b25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIGNvbnN0
cnVjdG9yS2luZCwgcGFyc2VUeXBlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIH0KLSNl
bHNlCi0gICAgaW5mby5ib2R5ID0gcGFyc2VGdW5jdGlvbkJvZHkoY29udGV4dCwgZnVuY3Rpb25L
ZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIGNvbnN0cnVj
dG9yS2luZCwgU3RhbmRhcmRGdW5jdGlvblBhcnNlVHlwZSk7Ci0jZW5kaWYKKyAgICBmdW5jdGlv
bkluZm8uYm9keSA9IHBhcnNlRnVuY3Rpb25Cb2R5KGNvbnRleHQsIHN0YXJ0TG9jYXRpb24sIHN0
YXJ0Q29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFt
ZXRlcnNTdGFydCwgY29uc3RydWN0b3JLaW5kLCBmdW5jdGlvbkJvZHlUeXBlLCBmdW5jdGlvbklu
Zm8ucGFyYW1ldGVyQ291bnQsIG1vZGUpOwogICAgIAogICAgIHJlc3RvcmVTdGF0ZShvbGRTdGF0
ZSk7Ci0gICAgZmFpbElmRmFsc2UoaW5mby5ib2R5LCAiQ2Fubm90IHBhcnNlIHRoZSBib2R5IG9m
IHRoaXMgIiwgc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKG1vZGUpKTsKLSAgICBjb250ZXh0LnNldEVu
ZE9mZnNldChpbmZvLmJvZHksIG1fbGV4ZXItPmN1cnJlbnRPZmZzZXQoKSk7Ci0gICAgaWYgKGZ1
bmN0aW9uU2NvcGUtPnN0cmljdE1vZGUoKSAmJiBpbmZvLm5hbWUpIHsKLSAgICAgICAgUkVMRUFT
RV9BU1NFUlQobW9kZSA9PSBGdW5jdGlvbk1vZGUgfHwgbW9kZSA9PSBNZXRob2RNb2RlKTsKLSAg
ICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKG1fdm0tPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cyA9
PSAqaW5mby5uYW1lLCAiJyIsIGluZm8ubmFtZS0+aW1wbCgpLCAiJyBpcyBub3QgYSB2YWxpZCBm
dW5jdGlvbiBuYW1lIGluIHN0cmljdCBtb2RlIik7Ci0gICAgICAgIHNlbWFudGljRmFpbElmVHJ1
ZShtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5ldmFsID09ICppbmZvLm5hbWUsICInIiwgaW5mby5uYW1l
LT5pbXBsKCksICInIGlzIG5vdCBhIHZhbGlkIGZ1bmN0aW9uIG5hbWUgaW4gc3RyaWN0IG1vZGUi
KTsKKyAgICBmYWlsSWZGYWxzZShmdW5jdGlvbkluZm8uYm9keSwgIkNhbm5vdCBwYXJzZSB0aGUg
Ym9keSBvZiB0aGlzICIsIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShtb2RlKSk7CisgICAgY29udGV4
dC5zZXRFbmRPZmZzZXQoZnVuY3Rpb25JbmZvLmJvZHksIG1fbGV4ZXItPmN1cnJlbnRPZmZzZXQo
KSk7CisgICAgaWYgKGZ1bmN0aW9uU2NvcGUtPnN0cmljdE1vZGUoKSAmJiBmdW5jdGlvbkluZm8u
bmFtZSkgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChtb2RlID09IE5vcm1hbEZ1bmN0aW9uTW9k
ZSB8fCBtb2RlID09IE1ldGhvZE1vZGUgfHwgbW9kZSA9PSBBcnJvd0Z1bmN0aW9uTW9kZSk7Cisg
ICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMg
PT0gKmZ1bmN0aW9uSW5mby5uYW1lLCAiJyIsIGZ1bmN0aW9uSW5mby5uYW1lLT5pbXBsKCksICIn
IGlzIG5vdCBhIHZhbGlkIGZ1bmN0aW9uIG5hbWUgaW4gc3RyaWN0IG1vZGUiKTsKKyAgICAgICAg
c2VtYW50aWNGYWlsSWZUcnVlKG1fdm0tPnByb3BlcnR5TmFtZXMtPmV2YWwgPT0gKmZ1bmN0aW9u
SW5mby5uYW1lLCAiJyIsIGZ1bmN0aW9uSW5mby5uYW1lLT5pbXBsKCksICInIGlzIG5vdCBhIHZh
bGlkIGZ1bmN0aW9uIG5hbWUgaW4gc3RyaWN0IG1vZGUiKTsKICAgICB9CiAgICAgaWYgKGZ1bmN0
aW9uU2NvcGUtPmhhc0RpcmVjdFN1cGVyKCkpIHsKICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVl
KCFpc0NsYXNzQ29uc3RydWN0b3IsICJDYW5ub3QgY2FsbCBzdXBlcigpIG91dHNpZGUgb2YgYSBj
bGFzcyBjb25zdHJ1Y3RvciIpOwpAQCAtMTY1Niw1NiArMTYzNyw0OCBAQCB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyCiAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShl
eHBlY3RlZFN1cGVyQmluZGluZyA9PSBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgInN1cGVyIGNh
biBvbmx5IGJlIHVzZWQgaW4gYSBtZXRob2Qgb2YgYSBkZXJpdmVkIGNsYXNzIik7CiAKICAgICBK
U1Rva2VuTG9jYXRpb24gbG9jYXRpb24gPSBKU1Rva2VuTG9jYXRpb24obV90b2tlbi5tX2xvY2F0
aW9uKTsKLSAgICBpbmZvLmVuZEZ1bmN0aW9uT2Zmc2V0ID0gbV90b2tlbi5tX2RhdGEub2Zmc2V0
OworICAgIGZ1bmN0aW9uSW5mby5lbmRPZmZzZXQgPSBtX3Rva2VuLm1fZGF0YS5vZmZzZXQ7CiAg
ICAgCi0jaWYgRU5BQkxFKEVTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCkKLSAgICBpZiAoaW5mby5m
dW5jdGlvbkJvZHlUeXBlID09IEFycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikgeworICAgIGlm
IChmdW5jdGlvbkJvZHlUeXBlID09IEFycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikgewogICAg
ICAgICBsb2NhdGlvbiA9IGxvY2F0aW9uQmVmb3JlTGFzdFRva2VuKCk7Ci0gICAgICAgIGluZm8u
ZW5kRnVuY3Rpb25PZmZzZXQgPSBsb2NhdGlvbi5lbmRPZmZzZXQ7CisgICAgICAgIGZ1bmN0aW9u
SW5mby5lbmRPZmZzZXQgPSBsb2NhdGlvbi5lbmRPZmZzZXQ7CiAgICAgfQotI2VuZGlmCiAgICAg
CiAgICAgLy8gQ2FjaGUgdGhlIHRva2VuaXplciBzdGF0ZSBhbmQgdGhlIGZ1bmN0aW9uIHNjb3Bl
IHRoZSBmaXJzdCB0aW1lIHRoZSBmdW5jdGlvbiBpcyBwYXJzZWQuCiAgICAgLy8gQW55IGZ1dHVy
ZSByZXBhcnNpbmcgY2FuIHRoZW4gc2tpcCB0aGUgZnVuY3Rpb24uCiAgICAgc3RhdGljIGNvbnN0
IGludCBtaW5pbXVtRnVuY3Rpb25MZW5ndGhUb0NhY2hlID0gMTY7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtPiBuZXdJbmZvOwotICAgIGludCBmdW5jdGlvbkxl
bmd0aCA9IGluZm8uZW5kRnVuY3Rpb25PZmZzZXQgLSBpbmZvLnN0YXJ0RnVuY3Rpb25PZmZzZXQ7
CisgICAgaW50IGZ1bmN0aW9uTGVuZ3RoID0gZnVuY3Rpb25JbmZvLmVuZE9mZnNldCAtIGZ1bmN0
aW9uSW5mby5zdGFydE9mZnNldDsKICAgICBpZiAoVHJlZUJ1aWxkZXI6OkNhblVzZUZ1bmN0aW9u
Q2FjaGUgJiYgbV9mdW5jdGlvbkNhY2hlICYmIGZ1bmN0aW9uTGVuZ3RoID4gbWluaW11bUZ1bmN0
aW9uTGVuZ3RoVG9DYWNoZSkgewogICAgICAgICBTb3VyY2VQcm92aWRlckNhY2hlSXRlbUNyZWF0
aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwotICAgICAgICBwYXJhbWV0ZXJzLmVuZEZ1bmN0aW9u
T2Zmc2V0ID0gaW5mby5lbmRGdW5jdGlvbk9mZnNldDsKKyAgICAgICAgcGFyYW1ldGVycy5lbmRG
dW5jdGlvbk9mZnNldCA9IGZ1bmN0aW9uSW5mby5lbmRPZmZzZXQ7CiAgICAgICAgIHBhcmFtZXRl
cnMuZnVuY3Rpb25OYW1lU3RhcnQgPSBmdW5jdGlvbk5hbWVTdGFydDsKICAgICAgICAgcGFyYW1l
dGVycy5sYXN0VG9ja2VuTGluZSA9IGxvY2F0aW9uLmxpbmU7CiAgICAgICAgIHBhcmFtZXRlcnMu
bGFzdFRvY2tlblN0YXJ0T2Zmc2V0ID0gbG9jYXRpb24uc3RhcnRPZmZzZXQ7CiAgICAgICAgIHBh
cmFtZXRlcnMubGFzdFRvY2tlbkVuZE9mZnNldCA9IGxvY2F0aW9uLmVuZE9mZnNldDsKICAgICAg
ICAgcGFyYW1ldGVycy5sYXN0VG9ja2VuTGluZVN0YXJ0T2Zmc2V0ID0gbG9jYXRpb24ubGluZVN0
YXJ0T2Zmc2V0OwotI2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCi0gICAgICAg
IGlmIChpbmZvLmZ1bmN0aW9uQm9keVR5cGUgPT0gQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9u
KSB7CisgICAgICAgIHBhcmFtZXRlcnMucGFyYW1ldGVyQ291bnQgPSBmdW5jdGlvbkluZm8ucGFy
YW1ldGVyQ291bnQ7CisgICAgICAgIGlmIChmdW5jdGlvbkJvZHlUeXBlID09IEFycm93RnVuY3Rp
b25Cb2R5RXhwcmVzc2lvbikgewogICAgICAgICAgICAgcGFyYW1ldGVycy5pc0JvZHlBcnJvd0V4
cHJlc3Npb24gPSB0cnVlOwogICAgICAgICAgICAgcGFyYW1ldGVycy50b2tlblR5cGUgPSBtX3Rv
a2VuLm1fdHlwZTsKICAgICAgICAgfQotI2VuZGlmCiAgICAgICAgIGZ1bmN0aW9uU2NvcGUtPmZp
bGxQYXJhbWV0ZXJzRm9yU291cmNlUHJvdmlkZXJDYWNoZShwYXJhbWV0ZXJzKTsKICAgICAgICAg
bmV3SW5mbyA9IFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtOjpjcmVhdGUocGFyYW1ldGVycyk7CiAg
ICAgfQogICAgIAogICAgIGZhaWxJZkZhbHNlKHBvcFNjb3BlKGZ1bmN0aW9uU2NvcGUsIFRyZWVC
dWlsZGVyOjpOZWVkc0ZyZWVWYXJpYWJsZUluZm8pLCAiUGFyc2VyIGVycm9yIik7CiAgICAgCi0j
aWYgRU5BQkxFKEVTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCkKLSAgICBpZiAoaW5mby5mdW5jdGlv
bkJvZHlUeXBlID09IEFycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKKyAgICBpZiAoZnVuY3Rp
b25Cb2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCiAgICAgICAgIGZhaWxJ
ZkZhbHNlKGlzRW5kT2ZBcnJvd0Z1bmN0aW9uKCksICJFeHBlY3RlZCB0aGUgY2xvc2luZyAnOycg
JywnICddJyAnKScgJ30nLCBsaW5lIHRlcm1pbmF0b3Igb3IgRU9GIGFmdGVyIGFycm93IGZ1bmN0
aW9uIik7CiAgICAgZWxzZSB7CiAgICAgICAgIG1hdGNoT3JGYWlsKENMT1NFQlJBQ0UsICJFeHBl
Y3RlZCBhIGNsb3NpbmcgJ30nIGFmdGVyIGEgIiwgc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKG1vZGUp
LCAiIGJvZHkiKTsKICAgICAgICAgbmV4dCgpOwogICAgIH0KLSNlbHNlCi0gICAgbWF0Y2hPckZh
aWwoQ0xPU0VCUkFDRSwgIkV4cGVjdGVkIGEgY2xvc2luZyAnfScgYWZ0ZXIgYSAiLCBzdHJpbmdG
b3JGdW5jdGlvbk1vZGUobW9kZSksICIgYm9keSIpOwotICAgIG5leHQoKTsKLSNlbmRpZgogICAg
IAogICAgIGlmIChuZXdJbmZvKQotICAgICAgICBtX2Z1bmN0aW9uQ2FjaGUtPmFkZChpbmZvLnN0
YXJ0RnVuY3Rpb25PZmZzZXQsIFdURjo6bW92ZShuZXdJbmZvKSk7CisgICAgICAgIG1fZnVuY3Rp
b25DYWNoZS0+YWRkKGZ1bmN0aW9uSW5mby5zdGFydE9mZnNldCwgV1RGOjptb3ZlKG5ld0luZm8p
KTsKICAgICAKLSAgICBpbmZvLmJvZHlFbmRMaW5lID0gbV9sYXN0VG9rZW5FbmRQb3NpdGlvbi5s
aW5lOworICAgIGZ1bmN0aW9uSW5mby5lbmRMaW5lID0gbV9sYXN0VG9rZW5FbmRQb3NpdGlvbi5s
aW5lOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xNzE2LDEyICsxNjg5LDEyIEBAIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWUKICAgICBKU1Rva2VuTG9jYXRpb24g
bG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICB1bnNpZ25lZCBmdW5jdGlvbktleXdvcmRT
dGFydCA9IHRva2VuU3RhcnQoKTsKICAgICBuZXh0KCk7Ci0gICAgUGFyc2VyRnVuY3Rpb25JbmZv
PFRyZWVCdWlsZGVyPiBpbmZvOwotICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhj
b250ZXh0LCBGdW5jdGlvbk5lZWRzTmFtZSwgRnVuY3Rpb25Nb2RlLCB0cnVlLCBDb25zdHJ1Y3Rv
cktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLAotICAgICAgICBmdW5jdGlvbktl
eXdvcmRTdGFydCwgaW5mbywgU3RhbmRhcmRGdW5jdGlvblBhcnNlVHlwZSkpLCAiQ2Fubm90IHBh
cnNlIHRoaXMgZnVuY3Rpb24iKTsKLSAgICBmYWlsSWZGYWxzZShpbmZvLm5hbWUsICJGdW5jdGlv
biBzdGF0ZW1lbnRzIG11c3QgaGF2ZSBhIG5hbWUiKTsKLSAgICBmYWlsSWZGYWxzZUlmU3RyaWN0
KGRlY2xhcmVWYXJpYWJsZShpbmZvLm5hbWUpLCAiQ2Fubm90IGRlY2xhcmUgYSBmdW5jdGlvbiBu
YW1lZCAnIiwgaW5mby5uYW1lLT5pbXBsKCksICInIGluIHN0cmljdCBtb2RlIik7Ci0gICAgcmV0
dXJuIGNvbnRleHQuY3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQobG9jYXRpb24sIGluZm8pOworICAg
IFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4gZnVuY3Rpb25JbmZvOworICAgIGZhaWxJ
ZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5lZWRzTmFtZSwgTm9y
bWFsRnVuY3Rpb25Nb2RlLCB0cnVlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGlu
Zzo6Tm90TmVlZGVkLAorICAgICAgICBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25JbmZv
LCBTdGFuZGFyZEZ1bmN0aW9uUGFyc2VUeXBlKSksICJDYW5ub3QgcGFyc2UgdGhpcyBmdW5jdGlv
biIpOworICAgIGZhaWxJZkZhbHNlKGZ1bmN0aW9uSW5mby5uYW1lLCAiRnVuY3Rpb24gc3RhdGVt
ZW50cyBtdXN0IGhhdmUgYSBuYW1lIik7CisgICAgZmFpbElmRmFsc2VJZlN0cmljdChkZWNsYXJl
VmFyaWFibGUoZnVuY3Rpb25JbmZvLm5hbWUpLCAiQ2Fubm90IGRlY2xhcmUgYSBmdW5jdGlvbiBu
YW1lZCAnIiwgZnVuY3Rpb25JbmZvLm5hbWUtPmltcGwoKSwgIicgaW4gc3RyaWN0IG1vZGUiKTsK
KyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jRGVjbFN0YXRlbWVudChsb2NhdGlvbiwgZnVu
Y3Rpb25JbmZvKTsKIH0KIAogI2lmIEVOQUJMRShFUzZfQ0xBU1NfU1lOVEFYKQpAQCAtMTgzNyw3
ICsxODEwLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlQ2xhc3NFeAogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVy
PiBtZXRob2RJbmZvOwogICAgICAgICAgICAgYm9vbCBpc0NvbnN0cnVjdG9yID0gIWlzU3RhdGlj
TWV0aG9kICYmICppZGVudCA9PSBwcm9wZXJ0eU5hbWVzLmNvbnN0cnVjdG9yOwotICAgICAgICAg
ICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTm9SZXF1
aXJlbWVudHMsIGlzU3RhdGljTWV0aG9kID8gRnVuY3Rpb25Nb2RlIDogTWV0aG9kTW9kZSwgZmFs
c2UsIGlzQ29uc3RydWN0b3IgPyBjb25zdHJ1Y3RvcktpbmQgOiBDb25zdHJ1Y3RvcktpbmQ6Ok5v
bmUsIFN1cGVyQmluZGluZzo6TmVlZGVkLCBtZXRob2RTdGFydCwgbWV0aG9kSW5mbywgU3RhbmRh
cmRGdW5jdGlvblBhcnNlVHlwZSkpLCAiQ2Fubm90IHBhcnNlIHRoaXMgbWV0aG9kIik7CisgICAg
ICAgICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25O
b1JlcXVpcmVtZW50cywgaXNTdGF0aWNNZXRob2QgPyBOb3JtYWxGdW5jdGlvbk1vZGUgOiBNZXRo
b2RNb2RlLCBmYWxzZSwgaXNDb25zdHJ1Y3RvciA/IGNvbnN0cnVjdG9yS2luZCA6IENvbnN0cnVj
dG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOZWVkZWQsIG1ldGhvZFN0YXJ0LCBtZXRob2RJ
bmZvLCBTdGFuZGFyZEZ1bmN0aW9uUGFyc2VUeXBlKSksICJDYW5ub3QgcGFyc2UgdGhpcyBtZXRo
b2QiKTsKICAgICAgICAgICAgIGZhaWxJZkZhbHNlKGlkZW50ICYmIGRlY2xhcmVWYXJpYWJsZShp
ZGVudCksICJDYW5ub3QgZGVjbGFyZSBhIG1ldGhvZCBuYW1lZCAnIiwgbWV0aG9kSW5mby5uYW1l
LT5pbXBsKCksICInIik7CiAgICAgICAgICAgICBtZXRob2RJbmZvLm5hbWUgPSBpc0NvbnN0cnVj
dG9yID8gY2xhc3NOYW1lIDogaWRlbnQ7CiAKQEAgLTI2NTQsNyArMjYyNyw3IEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3MKICAgICAgICAgbmV4dCgpOwogICAgICAg
ICBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+IGluZm87CiAgICAgICAgIGluZm8ubmFt
ZSA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllcjsKLSAgICAgICAgZmFpbElm
RmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTm9SZXF1aXJlbWVudHMs
IEZ1bmN0aW9uTW9kZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5n
OjpOb3ROZWVkZWQsIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbmZvLCBTdGFuZGFyZEZ1bmN0aW9u
UGFyc2VUeXBlKSksICJDYW5ub3QgcGFyc2UgZnVuY3Rpb24gZXhwcmVzc2lvbiIpOworICAgICAg
ICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25Ob1JlcXVp
cmVtZW50cywgTm9ybWFsRnVuY3Rpb25Nb2RlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25l
LCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGluZm8sIFN0
YW5kYXJkRnVuY3Rpb25QYXJzZVR5cGUpKSwgIkNhbm5vdCBwYXJzZSBmdW5jdGlvbiBleHByZXNz
aW9uIik7CiAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uRXhwcihsb2NhdGlv
biwgaW5mbyk7CiAgICAgfQogI2lmIEVOQUJMRShFUzZfQ0xBU1NfU1lOVEFYKQpAQCAtMjg5NCw3
ICsyODY3LDYgQEAgZW5kTWVtYmVyRXhwcmVzc2lvbjoKICAgICByZXR1cm4gYmFzZTsKIH0KIAot
I2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
TGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihUcmVlQnVpbGRl
ciYgY29udGV4dCkKIHsKQEAgLTI5MDQsMTEgKzI4NzYsMTAgQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlRXhwcmVzcwogICAgIGxvY2F0aW9uID0gdG9rZW5Mb2NhdGlvbigpOwog
ICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4gaW5mbzsKICAgICBpbmZvLm5hbWUg
PSAmbV92bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXI7Ci0gICAgZmFpbElmRmFsc2Uo
KHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTm9SZXF1aXJlbWVudHMsIEZ1bmN0
aW9uTW9kZSwgdHJ1ZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5vdE5l
ZWRlZCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGluZm8sIEFycm93RnVuY3Rpb25QYXJzZVR5cGUp
KSwgIkNhbm5vdCBwYXJzZSBhcnJvdyBmdW5jdGlvbiBleHByZXNzaW9uIik7CisgICAgZmFpbElm
RmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTm9SZXF1aXJlbWVudHMs
IEFycm93RnVuY3Rpb25Nb2RlLCB0cnVlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmlu
ZGluZzo6Tm90TmVlZGVkLCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW5mbywgQXJyb3dGdW5jdGlv
blBhcnNlVHlwZSkpLCAiQ2Fubm90IHBhcnNlIGFycm93IGZ1bmN0aW9uIGV4cHJlc3Npb24iKTsK
IAogICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUFycm93RnVuY3Rpb25FeHByKGxvY2F0aW9uLCBp
bmZvKTsKIH0KLSNlbmRpZgogCiBzdGF0aWMgY29uc3QgY2hhciogb3BlcmF0b3JTdHJpbmcoYm9v
bCBwcmVmaXgsIHVuc2lnbmVkIHRvaykKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuaAkocmV2aXNpb24gMTg2ODA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODAsMjEgKzgwLDkgQEAgY2xhc3MgU291
cmNlQ29kZTsKIENPTVBJTEVfQVNTRVJUKExhc3RVbnRhZ2dlZFRva2VuIDwgNjQsIExlc3NUaGFu
NjRVbnRhZ2dlZFRva2Vucyk7CiAKIGVudW0gU291cmNlRWxlbWVudHNNb2RlIHsgQ2hlY2tGb3JT
dHJpY3RNb2RlLCBEb250Q2hlY2tGb3JTdHJpY3RNb2RlIH07Ci0jaWYgRU5BQkxFKEVTNl9BUlJP
V0ZVTkNUSU9OX1NZTlRBWCkKIGVudW0gRnVuY3Rpb25QYXJzZVR5cGUgeyBTdGFuZGFyZEZ1bmN0
aW9uUGFyc2VUeXBlLCBBcnJvd0Z1bmN0aW9uUGFyc2VUeXBlIH07Ci0jZWxzZQotZW51bSBGdW5j
dGlvblBhcnNlVHlwZSB7IFN0YW5kYXJkRnVuY3Rpb25QYXJzZVR5cGV9OwotI2VuZGlmCitlbnVt
IEZ1bmN0aW9uQm9keVR5cGUgeyBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24sIEFycm93RnVu
Y3Rpb25Cb2R5QmxvY2ssIFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2sgfTsKIGVudW0gRnVuY3Rp
b25SZXF1aXJlbWVudHMgeyBGdW5jdGlvbk5vUmVxdWlyZW1lbnRzLCBGdW5jdGlvbk5lZWRzTmFt
ZSB9OwotZW51bSBGdW5jdGlvblBhcnNlTW9kZSB7Ci0gICAgRnVuY3Rpb25Nb2RlLAotICAgIEdl
dHRlck1vZGUsCi0gICAgU2V0dGVyTW9kZSwKLSAgICBNZXRob2RNb2RlLAotI2lmIEVOQUJMRShF
UzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCi0gICAgQXJyb3dGdW5jdGlvbk1vZGUKLSNlbmRpZgot
fTsKIGVudW0gRGVzdHJ1Y3R1cmluZ0tpbmQgewogICAgIERlc3RydWN0dXJlVG9WYXJpYWJsZXMs
CiAgICAgRGVzdHJ1Y3R1cmVUb1BhcmFtZXRlcnMsCkBAIC00MjksMTMgKzQxNywxMiBAQCBjbGFz
cyBQYXJzZXIgewogCiBwdWJsaWM6CiAgICAgUGFyc2VyKAotICAgICAgICBWTSosIGNvbnN0IFNv
dXJjZUNvZGUmLCBGdW5jdGlvblBhcmFtZXRlcnMqLCBjb25zdCBJZGVudGlmaWVyJiwgCi0gICAg
ICAgIEpTUGFyc2VyQnVpbHRpbk1vZGUsIEpTUGFyc2VyU3RyaWN0TW9kZSwgSlNQYXJzZXJDb2Rl
VHlwZSwKKyAgICAgICAgVk0qLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNQYXJzZXJCdWlsdGluTW9k
ZSwgSlNQYXJzZXJTdHJpY3RNb2RlLCBKU1BhcnNlckNvZGVUeXBlLCAKICAgICAgICAgQ29uc3Ry
dWN0b3JLaW5kIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQgPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUs
IFRoaXNURFpNb2RlID0gVGhpc1REWk1vZGU6OkNoZWNrSWZOZWVkZWQpOwogICAgIH5QYXJzZXIo
KTsKIAogICAgIHRlbXBsYXRlIDxjbGFzcyBQYXJzZWROb2RlPgotICAgIHN0ZDo6dW5pcXVlX3B0
cjxQYXJzZWROb2RlPiBwYXJzZShQYXJzZXJFcnJvciYpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxQ
YXJzZWROb2RlPiBwYXJzZShQYXJzZXJFcnJvciYsIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlv
blBhcnNlTW9kZSk7CiAKICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbkJlZm9yZUxhc3ROZXds
aW5lKCkgY29uc3QgeyByZXR1cm4gbV9sZXhlci0+cG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgp
OyB9CiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uQmVmb3JlTGFzdFRva2VuKCkgY29uc3Qg
eyByZXR1cm4gbV9sZXhlci0+bGFzdFRva2VuTG9jYXRpb24oKTsgfQpAQCAtNTYzLDcgKzU1MCw3
IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgUGFyc2VyKCk7Ci0gICAgU3RyaW5nIHBhcnNlSW5u
ZXIoKTsKKyAgICBTdHJpbmcgcGFyc2VJbm5lcihjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25Q
YXJzZU1vZGUpOwogCiAgICAgdm9pZCBkaWRGaW5pc2hQYXJzaW5nKFNvdXJjZUVsZW1lbnRzKiwg
RGVjbGFyYXRpb25TdGFja3M6OlZhclN0YWNrJiwgCiAgICAgICAgIERlY2xhcmF0aW9uU3RhY2tz
OjpGdW5jdGlvblN0YWNrJiwgQ29kZUZlYXR1cmVzLCBpbnQsIElkZW50aWZpZXJTZXQmLCBjb25z
dCBWZWN0b3I8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4mJik7CkBAIC02MjEsNyArNjA4LDYg
QEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIG1fdG9rZW4ubV90eXBlID09IElERU5UICYmICpt
X3Rva2VuLm1fZGF0YS5pZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5vZjsKICAgICB9CiAg
ICAgCi0jaWYgRU5BQkxFKEVTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCkKICAgICBBTFdBWVNfSU5M
SU5FIGJvb2wgaXNFbmRPZkFycm93RnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1h
dGNoKFNFTUlDT0xPTikgfHwgbWF0Y2goQ09NTUEpIHx8IG1hdGNoKENMT1NFUEFSRU4pIHx8IG1h
dGNoKENMT1NFQlJBQ0UpIHx8IG1hdGNoKENMT1NFQlJBQ0tFVCkgfHwgbWF0Y2goRU9GVE9LKSB8
fCBtX2xleGVyLT5wcmV2VGVybWluYXRvcigpOwpAQCAtNjI5LDYgKzYxNSw3IEBAIHByaXZhdGU6
CiAgICAgCiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzQXJyb3dGdW5jdGlvblBhcmFtdGVycygp
CiAgICAgeworI2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCiAgICAgICAgIGJv
b2wgaXNBcnJvd0Z1bmN0aW9uID0gZmFsc2U7CiAgICAgICAgIAogICAgICAgICBpZiAobWF0Y2go
RU9GVE9LKSkKQEAgLTY1OSw4ICs2NDYsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgcmVzdG9yZVNh
dmVQb2ludChzYXZlQXJyb3dGdW5jdGlvblBvaW50KTsKICAgICAgICAgCiAgICAgICAgIHJldHVy
biBpc0Fycm93RnVuY3Rpb247Ci0gICAgfQorI2Vsc2UKKyAgICAgICAgcmV0dXJuIGZhbHNlOwog
I2VuZGlmCisgICAgfQogICAgIAogICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgdG9rZW5TdGFy
dCgpCiAgICAgewpAQCAtNzY2LDcgKzc1NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQogCi0gICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291
cmNlRWxlbWVudHMgcGFyc2VTb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYsIFNvdXJjZUVsZW1l
bnRzTW9kZSwgRnVuY3Rpb25QYXJzZVR5cGUpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIHBhcnNlU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXIm
LCBTb3VyY2VFbGVtZW50c01vZGUpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZVN0YXRlbWVudCBwYXJzZVN0YXRlbWVudExpc3RJdGVtKFRyZWVCdWlsZGVyJiwgY29uc3Qg
SWRlbnRpZmllciomIGRpcmVjdGl2ZSwgdW5zaWduZWQqIGRpcmVjdGl2ZUxpdGVyYWxMZW5ndGgp
OwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZVN0
YXRlbWVudChUcmVlQnVpbGRlciYsIGNvbnN0IElkZW50aWZpZXIqJiBkaXJlY3RpdmUsIHVuc2ln
bmVkKiBkaXJlY3RpdmVMaXRlcmFsTGVuZ3RoID0gMCk7CiAjaWYgRU5BQkxFKEVTNl9DTEFTU19T
WU5UQVgpCkBAIC04MDcsMTcgKzc5NiwxMyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZVByb3BlcnR5IHBhcnNlUHJvcGVydHkoVHJlZUJ1aWxkZXImLCBi
b29sIHN0cmljdCk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVz
c2lvbiBwYXJzZVByb3BlcnR5TWV0aG9kKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBJZGVu
dGlmaWVyKiBtZXRob2ROYW1lKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVQcm9wZXJ0eSBwYXJzZUdldHRlclNldHRlcihUcmVlQnVpbGRlciYsIGJvb2wgc3RyaWN0LCBQ
cm9wZXJ0eU5vZGU6OlR5cGUsIHVuc2lnbmVkIGdldHRlck9yU2V0dGVyU3RhcnRPZmZzZXQsIENv
bnN0cnVjdG9yS2luZCA9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nID0gU3Vw
ZXJCaW5kaW5nOjpOb3ROZWVkZWQpOwotICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
QUxXQVlTX0lOTElORSBUcmVlRnVuY3Rpb25Cb2R5IHBhcnNlRnVuY3Rpb25Cb2R5KFRyZWVCdWls
ZGVyJiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGlu
dCBwYXJhbWV0ZXJzU3RhcnQsIENvbnN0cnVjdG9yS2luZCwgRnVuY3Rpb25QYXJzZVR5cGUpOwot
ICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBUcmVlRm9ybWFs
UGFyYW1ldGVyTGlzdCBwYXJzZUZvcm1hbFBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImKTsKKyAgICB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgVHJlZUZ1bmN0aW9uQm9k
eSBwYXJzZUZ1bmN0aW9uQm9keShUcmVlQnVpbGRlciYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IGludCwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGlu
dCBwYXJhbWV0ZXJzU3RhcnQsIENvbnN0cnVjdG9yS2luZCwgRnVuY3Rpb25Cb2R5VHlwZSwgdW5z
aWduZWQsIEZ1bmN0aW9uUGFyc2VNb2RlKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IEFMV0FZU19JTkxJTkUgYm9vbCBwYXJzZUZvcm1hbFBhcmFtZXRlcnMoVHJlZUJ1aWxkZXIm
LCBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCwgdW5zaWduZWQmKTsKICAgICBlbnVtIFZhckRlY2xh
cmF0aW9uTGlzdENvbnRleHQgeyBGb3JMb29wQ29udGV4dCwgVmFyRGVjbGFyYXRpb25Db250ZXh0
IH07CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBwYXJz
ZVZhckRlY2xhcmF0aW9uTGlzdChUcmVlQnVpbGRlciYsIGludCYgZGVjbGFyYXRpb25zLCBUcmVl
RGVzdHJ1Y3R1cmluZ1BhdHRlcm4mIGxhc3RQYXR0ZXJuLCBUcmVlRXhwcmVzc2lvbiYgbGFzdElu
aXRpYWxpemVyLCBKU1RleHRQb3NpdGlvbiYgaWRlbnRTdGFydCwgSlNUZXh0UG9zaXRpb24mIGlu
aXRTdGFydCwgSlNUZXh0UG9zaXRpb24mIGluaXRFbmQsIFZhckRlY2xhcmF0aW9uTGlzdENvbnRl
eHQpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIFRyZWVD
b25zdERlY2xMaXN0IHBhcnNlQ29uc3REZWNsYXJhdGlvbkxpc3QoVHJlZUJ1aWxkZXImKTsKLQot
I2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCi0gICAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IHBhcnNlQXJyb3dGdW5jdGlvblNpbmdsZUV4cHJl
c3Npb25Cb2R5KFRyZWVCdWlsZGVyJiwgRnVuY3Rpb25QYXJzZVR5cGUpOworICAgIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIHBhcnNlQXJyb3dGdW5jdGlv
blNpbmdsZUV4cHJlc3Npb25Cb2R5U291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImKTsKICAgICB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIHBhcnNlQXJyb3dGdW5j
dGlvbkV4cHJlc3Npb24oVHJlZUJ1aWxkZXImKTsKLSNlbmRpZgotCiAgICAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgVHJlZURlc3RydWN0dXJpbmdQYXR0ZXJuIGNy
ZWF0ZUJpbmRpbmdQYXR0ZXJuKFRyZWVCdWlsZGVyJiwgRGVzdHJ1Y3R1cmluZ0tpbmQsIGNvbnN0
IElkZW50aWZpZXImLCBpbnQgZGVwdGgsIEpTVG9rZW4pOwogICAgIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIFRyZWVEZXN0cnVjdHVyaW5nUGF0dGVybiBwYXJzZURl
c3RydWN0dXJpbmdQYXR0ZXJuKFRyZWVCdWlsZGVyJiwgRGVzdHJ1Y3R1cmluZ0tpbmQsIGludCBk
ZXB0aCA9IDApOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5F
IFRyZWVEZXN0cnVjdHVyaW5nUGF0dGVybiB0cnlQYXJzZURlc3RydWN0dXJpbmdQYXR0ZXJuRXhw
cmVzc2lvbihUcmVlQnVpbGRlciYpOwpAQCAtODUwLDEzICs4MzUsMTAgQEAgcHJpdmF0ZToKICAg
ICAgICAgcmV0dXJuIGFsbG93QXV0b21hdGljU2VtaWNvbG9uKCk7CiAgICAgfQogICAgIAotCi0j
aWYgRU5BQkxFKEVTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCkKICAgICB2b2lkIHNldEVuZE9mU3Rh
dGVtZW50KCkKICAgICB7CiAgICAgICAgIG1fbGV4ZXItPnNldFRva2VuUG9zaXRpb24oJm1fdG9r
ZW4pOwogICAgIH0KLSNlbmRpZgogCiAgICAgYm9vbCBjYW5SZWN1cnNlKCkKICAgICB7CkBAIC05
MjgsNiArOTEwLDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBTb3VyY2VDb2RlKiBtX3NvdXJjZTsK
ICAgICBQYXJzZXJBcmVuYSBtX3BhcnNlckFyZW5hOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxMZXhl
clR5cGU+IG1fbGV4ZXI7CisgICAgRnVuY3Rpb25QYXJhbWV0ZXJzKiBtX3BhcmFtZXRlcnMgeyBu
dWxscHRyIH07CiAgICAgCiAgICAgYm9vbCBtX2hhc1N0YWNrT3ZlcmZsb3c7CiAgICAgU3RyaW5n
IG1fZXJyb3JNZXNzYWdlOwpAQCAtOTc0LDEzICs5NTcsMTMgQEAgcHJpdmF0ZToKIAogdGVtcGxh
dGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBQYXJzZWROb2RlPgotc3Rk
Ojp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZShQYXJzZXJF
cnJvciYgZXJyb3IpCitzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlKFBhcnNlckVycm9yJiBlcnJvciwgY29uc3QgSWRlbnRpZmllciYgY2FsbGVlTmFt
ZSwgRnVuY3Rpb25QYXJzZU1vZGUgcGFyc2VNb2RlKQogewogICAgIGludCBlcnJMaW5lOwogICAg
IFN0cmluZyBlcnJNc2c7CiAKICAgICBpZiAoUGFyc2VkTm9kZTo6c2NvcGVJc0Z1bmN0aW9uKQot
ICAgICAgICBtX2xleGVyLT5zZXRJc1JlcGFyc2luZygpOworICAgICAgICBtX2xleGVyLT5zZXRJ
c1JlcGFyc2luZ0Z1bmN0aW9uKCk7CiAKICAgICBtX3NvdXJjZUVsZW1lbnRzID0gMDsKIApAQCAt
OTkxLDcgKzk3NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4ZXIK
ICAgICBBU1NFUlQobV9zb3VyY2UtPnN0YXJ0Q29sdW1uKCkgPiAwKTsKICAgICB1bnNpZ25lZCBz
dGFydENvbHVtbiA9IG1fc291cmNlLT5zdGFydENvbHVtbigpIC0gMTsKIAotICAgIFN0cmluZyBw
YXJzZUVycm9yID0gcGFyc2VJbm5lcigpOworICAgIFN0cmluZyBwYXJzZUVycm9yID0gcGFyc2VJ
bm5lcihjYWxsZWVOYW1lLCBwYXJzZU1vZGUpOwogCiAgICAgaW50IGxpbmVOdW1iZXIgPSBtX2xl
eGVyLT5saW5lTnVtYmVyKCk7CiAgICAgYm9vbCBsZXhFcnJvciA9IG1fbGV4ZXItPnNhd0Vycm9y
KCk7CkBAIC0xMDIxLDYgKzEwMDQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFy
c2VyPExleGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3ZhckRlY2xh
cmF0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZnVuY0RlY2xh
cmF0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY2FwdHVyZWRW
YXJpYWJsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcmFtZXRl
cnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbV9zb3VyY2UsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2ZlYXR1cmVzLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9udW1Db25zdGFudHMpOwpAQCAtMTA1NCwxOCArMTAz
OCwxOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyCiAKIHRlbXBs
YXRlIDxjbGFzcyBQYXJzZWROb2RlPgogc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNl
KAotICAgIFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvblBhcmFtZXRl
cnMqIHBhcmFtZXRlcnMsCisgICAgVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsCiAg
ICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9k
ZSwKICAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgSlNQYXJzZXJDb2RlVHlwZSBj
b2RlVHlwZSwKICAgICBQYXJzZXJFcnJvciYgZXJyb3IsIEpTVGV4dFBvc2l0aW9uKiBwb3NpdGlv
bkJlZm9yZUxhc3ROZXdsaW5lID0gMCwKLSAgICBDb25zdHJ1Y3RvcktpbmQgZGVmYXVsdENvbnN0
cnVjdG9yS2luZCA9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgVGhpc1REWk1vZGUgdGhpc1REWk1v
ZGUgPSBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRlZCkKKyAgICBGdW5jdGlvblBhcnNlTW9kZSBw
YXJzZU1vZGUgPSBOb3RBRnVuY3Rpb25Nb2RlLCBDb25zdHJ1Y3RvcktpbmQgZGVmYXVsdENvbnN0
cnVjdG9yS2luZCA9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgCisgICAgVGhpc1REWk1vZGUgdGhp
c1REWk1vZGUgPSBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRlZCkKIHsKICAgICBTYW1wbGluZ1Jl
Z2lvbiBzYW1wbGluZ1JlZ2lvbigiUGFyc2luZyIpOwogCiAgICAgQVNTRVJUKCFzb3VyY2UucHJv
dmlkZXIoKS0+c291cmNlKCkuaXNOdWxsKCkpOwogICAgIGlmIChzb3VyY2UucHJvdmlkZXIoKS0+
c291cmNlKCkuaXM4Qml0KCkpIHsKLSAgICAgICAgUGFyc2VyPExleGVyPExDaGFyPj4gcGFyc2Vy
KHZtLCBzb3VyY2UsIHBhcmFtZXRlcnMsIG5hbWUsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBj
b2RlVHlwZSwgZGVmYXVsdENvbnN0cnVjdG9yS2luZCwgdGhpc1REWk1vZGUpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5v
ZGU+KGVycm9yKTsKKyAgICAgICAgUGFyc2VyPExleGVyPExDaGFyPj4gcGFyc2VyKHZtLCBzb3Vy
Y2UsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBjb2RlVHlwZSwgZGVmYXVsdENvbnN0cnVjdG9y
S2luZCwgdGhpc1REWk1vZGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4g
cmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yLCBuYW1lLCBwYXJzZU1vZGUp
OwogICAgICAgICBpZiAocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSkKICAgICAgICAgICAgICpw
b3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lID0gcGFyc2VyLnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xp
bmUoKTsKICAgICAgICAgaWYgKGJ1aWx0aW5Nb2RlID09IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1
aWx0aW4pIHsKQEAgLTEwNzcsOCArMTA2Miw4IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2Rl
PiBwYXJzZSgKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgQVNTRVJUX1dJVEhf
TUVTU0FHRShkZWZhdWx0Q29uc3RydWN0b3JLaW5kID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwg
IkJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRGVmYXVsdENvbnN0cnVjdG9yIHNob3VsZCBhbHdh
eXMgdXNlIGEgOC1iaXQgc3RyaW5nIik7Ci0gICAgUGFyc2VyPExleGVyPFVDaGFyPj4gcGFyc2Vy
KHZtLCBzb3VyY2UsIHBhcmFtZXRlcnMsIG5hbWUsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBj
b2RlVHlwZSwgZGVmYXVsdENvbnN0cnVjdG9yS2luZCwgdGhpc1REWk1vZGUpOwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxQYXJzZWROb2RlPiByZXN1bHQgPSBwYXJzZXIucGFyc2U8UGFyc2VkTm9kZT4o
ZXJyb3IpOworICAgIFBhcnNlcjxMZXhlcjxVQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBidWls
dGluTW9kZSwgc3RyaWN0TW9kZSwgY29kZVR5cGUsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIHRo
aXNURFpNb2RlKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcmVzdWx0ID0gcGFy
c2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yLCBuYW1lLCBwYXJzZU1vZGUpOwogICAgIGlmIChw
b3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKQogICAgICAgICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3
bGluZSA9IHBhcnNlci5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7CiAgICAgcmV0dXJuIHJl
c3VsdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyRnVuY3Rpb25J
bmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJG
dW5jdGlvbkluZm8uaAkocmV2aXNpb24gMTg2ODA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXJGdW5jdGlvbkluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMjgsMjcgKzI4
LDE3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi0jaWYgRU5BQkxFKEVTNl9BUlJPV0ZVTkNUSU9O
X1NZTlRBWCkKLWVudW0gRnVuY3Rpb25Cb2R5VHlwZSB7IEFycm93RnVuY3Rpb25Cb2R5RXhwcmVz
c2lvbiwgQXJyb3dGdW5jdGlvbkJvZHlCbG9jaywgU3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jayB9
OwotI2VuZGlmCi0KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4KIHN0cnVjdCBQYXJzZXJG
dW5jdGlvbkluZm8gewogICAgIGNvbnN0IElkZW50aWZpZXIqIG5hbWUgPSAwOwogICAgIHR5cGVu
YW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IHBhcmFtZXRlcnMgPSAwOwogICAg
IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGdW5jdGlvbkJvZHkgYm9keSA9IDA7Ci0gICAgdW5zaWdu
ZWQgc3RhcnRGdW5jdGlvbk9mZnNldCA9IDA7Ci0gICAgdW5zaWduZWQgZW5kRnVuY3Rpb25PZmZz
ZXQgPSAwOwotICAgIGludCBib2R5U3RhcnRMaW5lID0gMDsKLSAgICBpbnQgYm9keUVuZExpbmUg
PSAwOworICAgIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50ID0gMDsKKyAgICB1bnNpZ25lZCBzdGFy
dE9mZnNldCA9IDA7CisgICAgdW5zaWduZWQgZW5kT2Zmc2V0ID0gMDsKKyAgICBpbnQgc3RhcnRM
aW5lID0gMDsKKyAgICBpbnQgZW5kTGluZSA9IDA7CiAgICAgdW5zaWduZWQgYm9keVN0YXJ0Q29s
dW1uID0gMDsKLSNpZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQotICAgIHVuc2ln
bmVkIGFycm93RnVuY3Rpb25PZmZzZXQgPSAwOwotICAgIHVuc2lnbmVkIGFycm93RnVuY3Rpb25O
ZXh0VG9ja2VuRW5kT2Zmc2V0ID0gMDsKLSAgICBib29sIGlzQXJyb3dGdW5jdGlvbiB7IGZhbHNl
IH07Ci0gICAgYm9vbCBpc0VuZEJ5VGVybWluYXRvciB7IGZhbHNlIH07Ci0gICAgRnVuY3Rpb25C
b2R5VHlwZSBmdW5jdGlvbkJvZHlUeXBlIHsgU3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jayB9Owot
I2VuZGlmCiB9OwogCiAjaWYgRU5BQkxFKEVTNl9DTEFTU19TWU5UQVgpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCShyZXZpc2lvbiAxODY4MDgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ0LDYgKzQ0LDE1IEBAIGVudW0gRGVidWdnZXJNb2RlIHsgRGVidWdnZXJPZmYsIERl
YnVnZ2UKIAogZW51bSBGdW5jdGlvbk1vZGUgeyBGdW5jdGlvbkV4cHJlc3Npb24sIEZ1bmN0aW9u
RGVjbGFyYXRpb24gfTsKIAorZW51bSBGdW5jdGlvblBhcnNlTW9kZSB7CisgICAgTm9ybWFsRnVu
Y3Rpb25Nb2RlLAorICAgIEdldHRlck1vZGUsCisgICAgU2V0dGVyTW9kZSwKKyAgICBNZXRob2RN
b2RlLAorICAgIE5vdEFGdW5jdGlvbk1vZGUsCisgICAgQXJyb3dGdW5jdGlvbk1vZGUKK307CisK
IGlubGluZSBib29sIGZ1bmN0aW9uTmFtZUlzSW5TY29wZShjb25zdCBJZGVudGlmaWVyJiBuYW1l
LCBGdW5jdGlvbk1vZGUgZnVuY3Rpb25Nb2RlKQogewogICAgIGlmIChuYW1lLmlzTnVsbCgpKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlLmgJKHJldmlzaW9u
IDE4NjgwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDUsOSArMTA1LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IAogICAgICAgICBTb3VyY2VDb2RlIHN1YkV4cHJlc3Npb24odW5zaWduZWQgb3BlbkJyYWNlLCB1
bnNpZ25lZCBjbG9zZUJyYWNlLCBpbnQgZmlyc3RMaW5lLCBpbnQgc3RhcnRDb2x1bW4pOwogCi0j
aWYgRU5BQkxFKEVTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCkKLSAgICAgICAgU291cmNlQ29kZSBz
dWJBcnJvd0V4cHJlc3Npb24odW5zaWduZWQgc3RhcnRBcnJvd0Z1bmN0aW9uLCB1bnNpZ25lZCBl
bmRBcnJvd0Z1bmN0aW9uLCBpbnQgZmlyc3RMaW5lLCBpbnQgc3RhcnRDb2x1bW4pOwotI2VuZGlm
CiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBtX3Byb3ZpZGVy
OwogICAgICAgICBpbnQgbV9zdGFydENoYXI7CkBAIC0xMjEsMjAgKzExOCw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICByZXR1cm4gU291cmNlQ29kZShTdHJpbmdTb3VyY2VQcm92aWRlcjo6
Y3JlYXRlKHNvdXJjZSwgdXJsLCBzdGFydFBvc2l0aW9uKSwgc3RhcnRQb3NpdGlvbi5tX2xpbmUu
b25lQmFzZWRJbnQoKSwgc3RhcnRQb3NpdGlvbi5tX2NvbHVtbi5vbmVCYXNlZEludCgpKTsKICAg
ICB9CiAgICAgCi0jaWYgRU5BQkxFKEVTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCkKLSAgICBpbmxp
bmUgU291cmNlQ29kZSBTb3VyY2VDb2RlOjpzdWJBcnJvd0V4cHJlc3Npb24odW5zaWduZWQgc3Rh
cnRBcnJvd0Z1bmN0aW9uLCB1bnNpZ25lZCBlbmRBcnJvd0Z1bmN0aW9uLCBpbnQgZmlyc3RMaW5l
LCBpbnQgc3RhcnRDb2x1bW4pCi0gICAgewotICAgICAgICBBU1NFUlQocHJvdmlkZXIoKS0+c291
cmNlKClbc3RhcnRBcnJvd0Z1bmN0aW9uXSA9PSAnPScgJiYgcHJvdmlkZXIoKS0+c291cmNlKClb
c3RhcnRBcnJvd0Z1bmN0aW9uICsgMV0gPT0gJz4nKTsKLQotICAgICAgICBzdGFydENvbHVtbiAr
PSAxOyAvLyBDb252ZXJ0IHRvIGJhc2UgMS4KLSAgICAgICAgcmV0dXJuIFNvdXJjZUNvZGUocHJv
dmlkZXIoKSwgc3RhcnRBcnJvd0Z1bmN0aW9uLCBlbmRBcnJvd0Z1bmN0aW9uLCBmaXJzdExpbmUs
IHN0YXJ0Q29sdW1uKTsKLSAgICB9Ci0jZW5kaWYKLQogICAgIGlubGluZSBTb3VyY2VDb2RlIFNv
dXJjZUNvZGU6OnN1YkV4cHJlc3Npb24odW5zaWduZWQgb3BlbkJyYWNlLCB1bnNpZ25lZCBjbG9z
ZUJyYWNlLCBpbnQgZmlyc3RMaW5lLCBpbnQgc3RhcnRDb2x1bW4pCiAgICAgewotICAgICAgICBB
U1NFUlQocHJvdmlkZXIoKS0+c291cmNlKClbb3BlbkJyYWNlXSA9PSAneycpOwotICAgICAgICBB
U1NFUlQocHJvdmlkZXIoKS0+c291cmNlKClbY2xvc2VCcmFjZV0gPT0gJ30nKTsKICAgICAgICAg
c3RhcnRDb2x1bW4gKz0gMTsgLy8gQ29udmVydCB0byBiYXNlIDEuCiAgICAgICAgIHJldHVybiBT
b3VyY2VDb2RlKHByb3ZpZGVyKCksIG9wZW5CcmFjZSwgY2xvc2VCcmFjZSArIDEsIGZpcnN0TGlu
ZSwgc3RhcnRDb2x1bW4pOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvU291cmNlUHJvdmlkZXJDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXJDYWNoZS5oCShyZXZpc2lvbiAxODY4MDgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyQ2FjaGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU291cmNlUHJvdmlk
ZXJDYWNoZUl0ZW0qIGdldChpbnQgc291cmNlUG9zaXRpb24pIGNvbnN0IHsgcmV0dXJuIG1fbWFw
LmdldChzb3VyY2VQb3NpdGlvbik7IH0KIAogcHJpdmF0ZToKLSAgICBIYXNoTWFwPGludCwgc3Rk
Ojp1bmlxdWVfcHRyPFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtPj4gbV9tYXA7CisgICAgSGFzaE1h
cDxpbnQsIHN0ZDo6dW5pcXVlX3B0cjxTb3VyY2VQcm92aWRlckNhY2hlSXRlbT4sIFdURjo6SW50
SGFzaDxpbnQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPGludD4+IG1fbWFw
OwogfTsKIAogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92
aWRlckNhY2hlSXRlbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaAkocmV2aXNpb24gMTg2ODA4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MCwxNSArNDAsMTQgQEAgc3RydWN0IFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVt
Q3JlYXRpb25QYQogICAgIHVuc2lnbmVkIGxhc3RUb2NrZW5FbmRPZmZzZXQ7CiAgICAgdW5zaWdu
ZWQgbGFzdFRvY2tlbkxpbmVTdGFydE9mZnNldDsKICAgICB1bnNpZ25lZCBlbmRGdW5jdGlvbk9m
ZnNldDsKKyAgICB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudDsKICAgICBib29sIG5lZWRzRnVsbEFj
dGl2YXRpb247CiAgICAgYm9vbCB1c2VzRXZhbDsKICAgICBib29sIHN0cmljdE1vZGU7CiAgICAg
VmVjdG9yPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+IHVzZWRWYXJpYWJsZXM7CiAgICAgVmVj
dG9yPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+IHdyaXR0ZW5WYXJpYWJsZXM7Ci0jaWYgRU5B
QkxFKEVTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCkKICAgICBib29sIGlzQm9keUFycm93RXhwcmVz
c2lvbiB7IGZhbHNlIH07CiAgICAgSlNUb2tlblR5cGUgdG9rZW5UeXBlIHsgQ0xPU0VCUkFDRSB9
OwotI2VuZGlmCiB9OwogCiAjaWYgQ09NUElMRVIoTVNWQykKQEAgLTY1LDExICs2NCw3IEBAIHB1
YmxpYzoKICAgICBKU1Rva2VuIGVuZEZ1bmN0aW9uVG9rZW4oKSBjb25zdCAKICAgICB7CiAgICAg
ICAgIEpTVG9rZW4gdG9rZW47Ci0jaWYgRU5BQkxFKEVTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCkK
ICAgICAgICAgdG9rZW4ubV90eXBlID0gaXNCb2R5QXJyb3dFeHByZXNzaW9uID8gdG9rZW5UeXBl
IDogQ0xPU0VCUkFDRTsKLSNlbHNlCi0gICAgICAgIHRva2VuLm1fdHlwZSA9IENMT1NFQlJBQ0U7
Ci0jZW5kaWYKICAgICAgICAgdG9rZW4ubV9kYXRhLm9mZnNldCA9IGxhc3RUb2NrZW5TdGFydE9m
ZnNldDsKICAgICAgICAgdG9rZW4ubV9sb2NhdGlvbi5zdGFydE9mZnNldCA9IGxhc3RUb2NrZW5T
dGFydE9mZnNldDsKICAgICAgICAgdG9rZW4ubV9sb2NhdGlvbi5lbmRPZmZzZXQgPSBsYXN0VG9j
a2VuRW5kT2Zmc2V0OwpAQCAtODcsNiArODIsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgbGFz
dFRvY2tlbkxpbmUgOiAzMTsKICAgICB1bnNpZ25lZCBsYXN0VG9ja2VuU3RhcnRPZmZzZXQgOiAz
MTsKICAgICB1bnNpZ25lZCBsYXN0VG9ja2VuRW5kT2Zmc2V0OiAzMTsKKyAgICB1bnNpZ25lZCBw
YXJhbWV0ZXJDb3VudDsKICAgICAKICAgICBib29sIHVzZXNFdmFsIDogMTsKIApAQCAtOTgsMTAg
Kzk0LDggQEAgcHVibGljOgogCiAgICAgVW5pcXVlZFN0cmluZ0ltcGwqKiB1c2VkVmFyaWFibGVz
KCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxVbmlxdWVkU3RyaW5nSW1wbCoqPihtX3Zhcmlh
Ymxlcyk7IH0KICAgICBVbmlxdWVkU3RyaW5nSW1wbCoqIHdyaXR0ZW5WYXJpYWJsZXMoKSBjb25z
dCB7IHJldHVybiBjb25zdF9jYXN0PFVuaXF1ZWRTdHJpbmdJbXBsKio+KCZtX3ZhcmlhYmxlc1t1
c2VkVmFyaWFibGVzQ291bnRdKTsgfQotI2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5U
QVgpCiAgICAgYm9vbCBpc0JvZHlBcnJvd0V4cHJlc3Npb247CiAgICAgSlNUb2tlblR5cGUgdG9r
ZW5UeXBlOwotI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0o
Y29uc3QgU291cmNlUHJvdmlkZXJDYWNoZUl0ZW1DcmVhdGlvblBhcmFtZXRlcnMmKTsKQEAgLTEz
MCwxNSArMTI0LDE0IEBAIGlubGluZSBTb3VyY2VQcm92aWRlckNhY2hlSXRlbTo6U291cmNlUHIK
ICAgICAsIGxhc3RUb2NrZW5MaW5lKHBhcmFtZXRlcnMubGFzdFRvY2tlbkxpbmUpCiAgICAgLCBs
YXN0VG9ja2VuU3RhcnRPZmZzZXQocGFyYW1ldGVycy5sYXN0VG9ja2VuU3RhcnRPZmZzZXQpCiAg
ICAgLCBsYXN0VG9ja2VuRW5kT2Zmc2V0KHBhcmFtZXRlcnMubGFzdFRvY2tlbkVuZE9mZnNldCkK
KyAgICAsIHBhcmFtZXRlckNvdW50KHBhcmFtZXRlcnMucGFyYW1ldGVyQ291bnQpCiAgICAgLCB1
c2VzRXZhbChwYXJhbWV0ZXJzLnVzZXNFdmFsKQogICAgICwgc3RyaWN0TW9kZShwYXJhbWV0ZXJz
LnN0cmljdE1vZGUpCiAgICAgLCBsYXN0VG9ja2VuTGluZVN0YXJ0T2Zmc2V0KHBhcmFtZXRlcnMu
bGFzdFRvY2tlbkxpbmVTdGFydE9mZnNldCkKICAgICAsIHVzZWRWYXJpYWJsZXNDb3VudChwYXJh
bWV0ZXJzLnVzZWRWYXJpYWJsZXMuc2l6ZSgpKQogICAgICwgd3JpdHRlblZhcmlhYmxlc0NvdW50
KHBhcmFtZXRlcnMud3JpdHRlblZhcmlhYmxlcy5zaXplKCkpCi0jaWYgRU5BQkxFKEVTNl9BUlJP
V0ZVTkNUSU9OX1NZTlRBWCkKICAgICAsIGlzQm9keUFycm93RXhwcmVzc2lvbihwYXJhbWV0ZXJz
LmlzQm9keUFycm93RXhwcmVzc2lvbikKICAgICAsIHRva2VuVHlwZShwYXJhbWV0ZXJzLnRva2Vu
VHlwZSkKLSNlbmRpZgogewogICAgIHVuc2lnbmVkIGogPSAwOwogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCB1c2VkVmFyaWFibGVzQ291bnQ7ICsraSwgKytqKSB7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAkocmV2aXNpb24gMTg2ODA4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTY5LDcgKzY5LDYgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB0
eXBlZGVmIFN5bnRheENoZWNrZXIgRnVuY3Rpb25Cb2R5QnVpbGRlcjsKICAgICBlbnVtIHsgTm9u
ZUV4cHIgPSAwLAogICAgICAgICBSZXNvbHZlRXZhbEV4cHIsIFJlc29sdmVFeHByLCBJbnRlZ2Vy
RXhwciwgRG91YmxlRXhwciwgU3RyaW5nRXhwciwKICAgICAgICAgVGhpc0V4cHIsIE51bGxFeHBy
LCBCb29sRXhwciwgUmVnRXhwRXhwciwgT2JqZWN0TGl0ZXJhbEV4cHIsCkBAIC0xNzgsMTAgKzE3
Nyw4IEBAIHB1YmxpYzoKICAgICBDbGFzc0V4cHJlc3Npb24gY3JlYXRlQ2xhc3NFeHByKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uVHlwZSwgRXhw
cmVzc2lvblR5cGUsIFByb3BlcnR5TGlzdCwgUHJvcGVydHlMaXN0KSB7IHJldHVybiBDbGFzc0V4
cHI7IH0KICNlbmRpZgogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUZ1bmN0aW9uRXhwcihjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88U3ludGF4Q2hlY2tl
cj4mKSB7IHJldHVybiBGdW5jdGlvbkV4cHI7IH0KLSAgICBpbnQgY3JlYXRlRnVuY3Rpb25Cb2R5
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50
LCBib29sLCBpbnQsIGludCwgaW50LCBDb25zdHJ1Y3RvcktpbmQpIHsgcmV0dXJuIEZ1bmN0aW9u
Qm9keVJlc3VsdDsgfQotI2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCisgICAg
aW50IGNyZWF0ZUZ1bmN0aW9uQm9keShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQsIGludCwgQ29uc3RydWN0b3JL
aW5kLCB1bnNpZ25lZCwgaW50KSB7IHJldHVybiBGdW5jdGlvbkJvZHlSZXN1bHQ7IH0KICAgICBF
eHByZXNzaW9uVHlwZSBjcmVhdGVBcnJvd0Z1bmN0aW9uRXhwcihjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88U3ludGF4Q2hlY2tlcj4mKSB7IHJldHVybiBG
dW5jdGlvbkV4cHI7IH0KLSNlbmRpZiAKICAgICB2b2lkIHNldEZ1bmN0aW9uTmFtZVN0YXJ0KGlu
dCwgaW50KSB7IH0KICAgICBpbnQgY3JlYXRlQXJndW1lbnRzKCkgeyByZXR1cm4gQXJndW1lbnRz
UmVzdWx0OyB9CiAgICAgaW50IGNyZWF0ZUFyZ3VtZW50cyhpbnQpIHsgcmV0dXJuIEFyZ3VtZW50
c1Jlc3VsdDsgfQpAQCAtMjIwLDggKzIxNyw4IEBAIHB1YmxpYzoKICAgICBpbnQgY3JlYXRlUHJv
cGVydHlMaXN0KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFByb3BlcnR5LCBpbnQpIHsgcmV0dXJu
IFByb3BlcnR5TGlzdFJlc3VsdDsgfQogICAgIGludCBjcmVhdGVFbGVtZW50TGlzdChpbnQsIGlu
dCkgeyByZXR1cm4gRWxlbWVudHNMaXN0UmVzdWx0OyB9CiAgICAgaW50IGNyZWF0ZUVsZW1lbnRM
aXN0KGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEVsZW1lbnRzTGlzdFJlc3VsdDsgfQotICAgIGlu
dCBjcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KERlc3RydWN0dXJpbmdQYXR0ZXJuKSB7IHJldHVy
biBGb3JtYWxQYXJhbWV0ZXJMaXN0UmVzdWx0OyB9Ci0gICAgaW50IGNyZWF0ZUZvcm1hbFBhcmFt
ZXRlckxpc3QoaW50LCBEZXN0cnVjdHVyaW5nUGF0dGVybikgeyByZXR1cm4gRm9ybWFsUGFyYW1l
dGVyTGlzdFJlc3VsdDsgfQorICAgIGludCBjcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KCkgeyBy
ZXR1cm4gRm9ybWFsUGFyYW1ldGVyTGlzdFJlc3VsdDsgfQorICAgIHZvaWQgYXBwZW5kUGFyYW1l
dGVyKGludCwgRGVzdHJ1Y3R1cmluZ1BhdHRlcm4pIHsgfQogICAgIGludCBjcmVhdGVDbGF1c2Uo
aW50LCBpbnQpIHsgcmV0dXJuIENsYXVzZVJlc3VsdDsgfQogICAgIGludCBjcmVhdGVDbGF1c2VM
aXN0KGludCkgeyByZXR1cm4gQ2xhdXNlTGlzdFJlc3VsdDsgfQogICAgIGludCBjcmVhdGVDbGF1
c2VMaXN0KGludCwgaW50KSB7IHJldHVybiBDbGF1c2VMaXN0UmVzdWx0OyB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAJKHJldmlzaW9uIDE4Njgw
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTk0LDggKzk0LDggQEAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBDb2RlQ2Fj
aGU6OmdldEdsbwogCiAgICAgdHlwZWRlZiB0eXBlbmFtZSBDYWNoZVR5cGVzPFVubGlua2VkQ29k
ZUJsb2NrVHlwZT46OlJvb3ROb2RlIFJvb3ROb2RlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSb290
Tm9kZT4gcm9vdE5vZGUgPSBwYXJzZTxSb290Tm9kZT4oCi0gICAgICAgICZ2bSwgc291cmNlLCAw
LCBJZGVudGlmaWVyKCksIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCAKLSAgICAgICAgSlNQYXJz
ZXJDb2RlVHlwZTo6UHJvZ3JhbSwgZXJyb3IsIDAsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgdGhp
c1REWk1vZGUpOworICAgICAgICAmdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBidWlsdGluTW9k
ZSwgc3RyaWN0TW9kZSwgCisgICAgICAgIEpTUGFyc2VyQ29kZVR5cGU6OlByb2dyYW0sIGVycm9y
LCAwLCBGdW5jdGlvblBhcnNlTW9kZTo6Tm90QUZ1bmN0aW9uTW9kZSwgQ29uc3RydWN0b3JLaW5k
OjpOb25lLCB0aGlzVERaTW9kZSk7CiAgICAgaWYgKCFyb290Tm9kZSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKQEAgLTE0NCw3ICsxNDQsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogQ29kZUNhY2hlOjpnCiAKICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbkJlZm9yZUxhc3RO
ZXdsaW5lOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9ncmFtTm9kZT4gcHJvZ3JhbSA9IHBhcnNl
PFByb2dyYW1Ob2RlPigKLSAgICAgICAgJnZtLCBzb3VyY2UsIDAsIElkZW50aWZpZXIoKSwgSlNQ
YXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgCisgICAgICAgICZ2bSwgc291cmNlLCBJZGVu
dGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIAogICAgICAgICBKU1Bh
cnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgSlNQYXJzZXJDb2RlVHlwZTo6UHJvZ3JhbSwgCiAg
ICAgICAgIGVycm9yLCAmcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7CiAgICAgaWYgKCFwcm9n
cmFtKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9u
LmNwcAkocmV2aXNpb24gMTg2ODA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tcGxldGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDcgQEAgYm9vbCBjaGVj
a1N5bnRheChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZAogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZt
KTsKICAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVh
ZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKICAgICByZXR1cm4gISFwYXJzZTxQcm9ncmFt
Tm9kZT4oCi0gICAgICAgICZ2bSwgc291cmNlLCAwLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVp
bHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIAorICAgICAgICAmdm0sIHNvdXJjZSwgSWRlbnRpZmllcigp
LCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCAKICAgICAgICAgSlNQYXJzZXJTdHJp
Y3RNb2RlOjpOb3RTdHJpY3QsIEpTUGFyc2VyQ29kZVR5cGU6OlByb2dyYW0sIGVycm9yKTsKIH0K
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAJ
KHJldmlzaW9uIDE4NjgwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1
dGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NzUsNyArNDc1LDcgQEAgSlNPYmplY3QqIFBy
b2dyYW1FeGVjdXRhYmxlOjpjaGVja1N5bnRheAogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwog
ICAgIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9ncmFtTm9kZT4gcHJvZ3JhbU5v
ZGUgPSBwYXJzZTxQcm9ncmFtTm9kZT4oCi0gICAgICAgIHZtLCBtX3NvdXJjZSwgMCwgSWRlbnRp
ZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCAKKyAgICAgICAgdm0sIG1f
c291cmNlLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIAog
ICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgSlNQYXJzZXJDb2RlVHlwZTo6
UHJvZ3JhbSwgZXJyb3IpOwogICAgIGlmIChwcm9ncmFtTm9kZSkKICAgICAgICAgcmV0dXJuIDA7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Q
cm90b3R5cGUuY3BwCShyZXZpc2lvbiAxODY4MDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDYgKzkx
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblBybwogICAgICAgICBT
dHJpbmcgc291cmNlID0gZXhlY3V0YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKS0+Z2V0UmFuZ2Uo
CiAgICAgICAgICAgICBleGVjdXRhYmxlLT5wYXJhbWV0ZXJzU3RhcnRPZmZzZXQoKSwKICAgICAg
ICAgICAgIGV4ZWN1dGFibGUtPnR5cGVQcm9maWxpbmdFbmRPZmZzZXQoKSArIDEpOyAvLyBUeXBl
IHByb2ZpbGluZyBlbmQgb2Zmc2V0IGlzIHRoZSBjaGFyYWN0ZXIgYmVmb3JlIHRoZSAnfScuCisg
ICAgICAgICAgICAvL2V4ZWN1dGFibGUtPnBhcmFtZXRlcnNTdGFydE9mZnNldCgpICsgZXhlY3V0
YWJsZS0+c291cmNlTGVuZ3RoKCkpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgImZ1bmN0aW9uICIsIGZ1bmN0aW9uLT5uYW1lKGV4
ZWMpLCBzb3VyY2UpKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9jb250cm9sRmxvd1Byb2ZpbGVyL2NvbmRpdGlvbmFsLWV4cHJlc3Npb24uanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2NvbnRyb2xGbG93UHJvZmlsZXIvY29u
ZGl0aW9uYWwtZXhwcmVzc2lvbi5qcwkocmV2aXNpb24gMTg2ODA4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL2NvbnRyb2xGbG93UHJvZmlsZXIvY29uZGl0aW9uYWwtZXhwcmVzc2lv
bi5qcwkod29ya2luZyBjb3B5KQpAQCAtMjQsMTcgKzI0LDE3IEBAIGZ1bmN0aW9uIHRlc3RDb25k
aXRpb25hbEZ1bmN0aW9uQ2FsbCh4LCAKICAgICAgICAgOiBiYXIoKQogfQogdGVzdENvbmRpdGlv
bmFsRnVuY3Rpb25DYWxsKGZhbHNlLCBmYWxzZSk7Ci1jaGVja0Jhc2ljQmxvY2sodGVzdENvbmRp
dGlvbmFsRnVuY3Rpb25DYWxsLCAieCIsIFNob3VsZEhhdmVFeGVjdXRlZCk7CitjaGVja0Jhc2lj
QmxvY2sodGVzdENvbmRpdGlvbmFsRnVuY3Rpb25DYWxsLCAieCA/IiwgU2hvdWxkSGF2ZUV4ZWN1
dGVkKTsKIGNoZWNrQmFzaWNCbG9jayh0ZXN0Q29uZGl0aW9uYWxGdW5jdGlvbkNhbGwsICI/IHki
LCBTaG91bGRIYXZlRXhlY3V0ZWQpOwogY2hlY2tCYXNpY0Jsb2NrKHRlc3RDb25kaXRpb25hbEZ1
bmN0aW9uQ2FsbCwgImJhciIsIFNob3VsZEhhdmVFeGVjdXRlZCk7CiBjaGVja0Jhc2ljQmxvY2so
dGVzdENvbmRpdGlvbmFsRnVuY3Rpb25DYWxsLCAiOiBiYXIiLCBTaG91bGRIYXZlRXhlY3V0ZWQp
OwotY2hlY2tCYXNpY0Jsb2NrKHRlc3RDb25kaXRpb25hbEZ1bmN0aW9uQ2FsbCwgInkiLCBTaG91
bGROb3RIYXZlRXhlY3V0ZWQpOworY2hlY2tCYXNpY0Jsb2NrKHRlc3RDb25kaXRpb25hbEZ1bmN0
aW9uQ2FsbCwgInkgPyIsIFNob3VsZE5vdEhhdmVFeGVjdXRlZCk7CiBjaGVja0Jhc2ljQmxvY2so
dGVzdENvbmRpdGlvbmFsRnVuY3Rpb25DYWxsLCAiPyBmb28iLCBTaG91bGROb3RIYXZlRXhlY3V0
ZWQpOwogY2hlY2tCYXNpY0Jsb2NrKHRlc3RDb25kaXRpb25hbEZ1bmN0aW9uQ2FsbCwgImZvbyIs
IFNob3VsZE5vdEhhdmVFeGVjdXRlZCk7CiBjaGVja0Jhc2ljQmxvY2sodGVzdENvbmRpdGlvbmFs
RnVuY3Rpb25DYWxsLCAiYmF6IiwgU2hvdWxkTm90SGF2ZUV4ZWN1dGVkKTsKIAogdGVzdENvbmRp
dGlvbmFsRnVuY3Rpb25DYWxsKHRydWUsIGZhbHNlKTsKLWNoZWNrQmFzaWNCbG9jayh0ZXN0Q29u
ZGl0aW9uYWxGdW5jdGlvbkNhbGwsICJ5IiwgU2hvdWxkSGF2ZUV4ZWN1dGVkKTsKK2NoZWNrQmFz
aWNCbG9jayh0ZXN0Q29uZGl0aW9uYWxGdW5jdGlvbkNhbGwsICJ5ID8iLCBTaG91bGRIYXZlRXhl
Y3V0ZWQpOwogY2hlY2tCYXNpY0Jsb2NrKHRlc3RDb25kaXRpb25hbEZ1bmN0aW9uQ2FsbCwgIj8g
Zm9vIiwgU2hvdWxkSGF2ZUV4ZWN1dGVkKTsKIGNoZWNrQmFzaWNCbG9jayh0ZXN0Q29uZGl0aW9u
YWxGdW5jdGlvbkNhbGwsICI6IGJheiIsIFNob3VsZEhhdmVFeGVjdXRlZCk7CiBjaGVja0Jhc2lj
QmxvY2sodGVzdENvbmRpdGlvbmFsRnVuY3Rpb25DYWxsLCAiYmF6IiwgU2hvdWxkSGF2ZUV4ZWN1
dGVkKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NjgyNikKKysrIExheW91dFRlc3RzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE1LTA3LTE0ICBTYWFtIGJhcmF0
aSAgPHNhYW1iYXJhdGkxQGdtYWlsLmNvbT4KKworICAgICAgICBGdW5jdGlvbiBwYXJhbWV0ZXJz
IHNob3VsZCBiZSBwYXJzZWQgaW4gdGhlIHNhbWUgcGFyc2VyIGFyZW5hIGFzIHRoZSBmdW5jdGlv
biBib2R5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDU5OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGZhc3QvcHJvZmlsZXIvYW5vbnltb3VzLWV2ZW50LWhhbmRsZXItZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGZhc3QvcHJvZmlsZXIvYW5vbnltb3VzLWZ1bmN0aW9uLWNhbGxlZC1mcm9tLWRpZmZl
cmVudC1jb250ZXh0cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxlci9hbm9u
eW1vdXMtZnVuY3Rpb24tY2FsbHMtYnVpbHQtaW4tZnVuY3Rpb25zLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBmYXN0L3Byb2ZpbGVyL2Fub255bW91cy1mdW5jdGlvbi1jYWxscy1ldmFsLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2ZpbGVyL2Fub255bW91cy1mdW5jdGlvbnMtd2l0
aC1kaXNwbGF5LW5hbWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2ZpbGVyL2Fw
cGx5LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2ZpbGVyL2J1aWx0LWluLWZ1bmN0
aW9uLWNhbGxzLWFub255bW91cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxl
ci9idWlsdC1pbi1mdW5jdGlvbi1jYWxscy11c2VyLWRlZmluZWQtZnVuY3Rpb24tZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvY2FsbC1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogZmFzdC9wcm9maWxlci9jYWxsaW5nLXRoZS1mdW5jdGlvbi10aGF0LXN0YXJ0ZWQtdGhlLXBy
b2ZpbGVyLWZyb20tYW5vdGhlci1zY29wZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9w
cm9maWxlci9jb21wYXJlLW11bHRpcGxlLXByb2ZpbGVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBmYXN0L3Byb2ZpbGVyL2NvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0
L3Byb2ZpbGVyL2RlYWQtdGltZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxl
ci9kb2N1bWVudC1kb3Qtd3JpdGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmls
ZXIvZXZlbnQtaGFuZGxlci1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxlci9l
eGVjdXRpb24tY29udGV4dC1hbmQtZXZhbC1vbi1zYW1lLWxpbmUtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGZhc3QvcHJvZmlsZXIvaW5saW5lLWV2ZW50LWhhbmRsZXItZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIGZhc3QvcHJvZmlsZXIvbWFueS1jYWxscy1pbi10aGUtc2FtZS1zY29wZS1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxlci9tdWx0aXBsZS1hbmQtZGlmZmVyZW50
LXNjb3BlZC1hbm9ueW1vdXMtZnVuY3Rpb24tY2FsbHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGZhc3QvcHJvZmlsZXIvbXVsdGlwbGUtYW5kLWRpZmZlcmVudC1zY29wZWQtZnVuY3Rpb24tY2Fs
bHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvbXVsdGlwbGUtYW5vbnlt
b3VzLWZ1bmN0aW9ucy1jYWxsZWQtZnJvbS10aGUtc2FtZS1mdW5jdGlvbi1leHBlY3RlZC50eHQ6
CisgICAgICAgICogZmFzdC9wcm9maWxlci9tdWx0aXBsZS1mcmFtZXMtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIGZhc3QvcHJvZmlsZXIvbmFtZWQtZnVuY3Rpb25zLXdpdGgtZGlzcGxheS1uYW1l
cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxlci9uZXN0ZWQtYW5vbnltb3Vz
LWZ1bmN0b24tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvbmVzdGVkLXN0
YXJ0LWFuZC1zdG9wLXByb2ZpbGVyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2Zp
bGVyL29uZS1leGVjdXRpb24tY29udGV4dC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9w
cm9maWxlci9wcm9maWxlLWNhbGxzLWluLWluY2x1ZGVkLWZpbGUtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGZhc3QvcHJvZmlsZXIvcHJvZmlsZS13aXRoLW5vLXRpdGxlLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBmYXN0L3Byb2ZpbGVyL3Byb2ZpbGluZy1mcm9tLWEtbmVzdGVkLWxvY2F0aW9u
LWJ1dC1zdG9wLXByb2ZpbGluZy1vdXRzaWRlLXRoZS1uZXN0aW5nLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBmYXN0L3Byb2ZpbGVyL3Byb2ZpbGluZy1mcm9tLWEtbmVzdGVkLWxvY2F0aW9uLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2ZpbGVyL3NpbXBsZS1ldmVudC1jYWxsLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2ZpbGVyL3NpbXBsZS1uby1sZXZlbC1jaGFu
Z2UtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvc3RhcnQtYW5kLXN0b3At
cHJvZmlsZXItbXVsdGlwbGUtdGltZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJv
ZmlsZXIvc3RhcnQtYW5kLXN0b3AtcHJvZmlsaW5nLWluLXRoZS1zYW1lLWZ1bmN0aW9uLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2ZpbGVyL3N0b3AtcHJvZmlsaW5nLWFmdGVyLXNl
dFRpbWVvdXQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvc3RvcC10aGVu
LWZ1bmN0aW9uLWNhbGwtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvdHdv
LWV4ZWN1dGlvbi1jb250ZXh0cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxl
ci91c2VyLWRlZmluZWQtZnVuY3Rpb24tY2FsbHMtYnVpbHQtaW4tZnVuY3Rpb25zLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2ZpbGVyL3dpbmRvdy1kb3QtZXZhbC1leHBlY3RlZC50
eHQ6CisgICAgICAgICoganMvZG9tL3NjcmlwdC1zdGFydC1lbmQtbG9jYXRpb25zLWV4cGVjdGVk
LnR4dDoKKwogMjAxNS0wNy0xNCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE4NjgwOS4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvYW5vbnltb3VzLWV2ZW50LWhhbmRsZXItZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvYW5vbnltb3VzLWV2
ZW50LWhhbmRsZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY4MDgpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L3Byb2ZpbGVyL2Fub255bW91cy1ldmVudC1oYW5kbGVyLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtNCwxNSArNCwxNSBAQCBUbyBydW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBs
b2FkIGl0IGluIHRoCiAKIFByb2ZpbGUgdGl0bGU6IEFub255bW91cyBldmVudCBoYW5kbGVyCiBU
aHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgc3RhcnRUZXN0IGFub255bW91cy1ldmVu
dC1oYW5kbGVyLmh0bWwgKGxpbmUgMTE6MSkKKyAgIHN0YXJ0VGVzdCBhbm9ueW1vdXMtZXZlbnQt
aGFuZGxlci5odG1sIChsaW5lIDEwOjE5KQogICAgICAgZ2V0RWxlbWVudEJ5SWQgKG5vIGZpbGUp
IChsaW5lIDA6MCkKICAgICAgIGNsaWNrIChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICAgICBv
bmNsaWNrIGFub255bW91cy1ldmVudC1oYW5kbGVyLmh0bWwgKGxpbmUgMTU6NTQpCi0gICAgICAg
ICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3
OjI2KQorICAgICAgICAgb25jbGljayBhbm9ueW1vdXMtZXZlbnQtaGFuZGxlci5odG1sIChsaW5l
IDE1OjUxKQorICAgICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291
cmNlcy5qcyAobGluZSAxNzoyMykKICAgICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQgKG5vIGZp
bGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAo
bGluZSAwOjApCiAgICAgICAgICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDow
KQogICAgICAgICAgICAgICAgZ2V0RWxlbWVudEJ5SWQgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAg
ICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAg
ICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToxNykKIAog
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2Fub255bW91cy1mdW5jdGlvbi1jYWxs
ZWQtZnJvbS1kaWZmZXJlbnQtY29udGV4dHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvYW5vbnltb3VzLWZ1bmN0aW9uLWNhbGxlZC1mcm9tLWRp
ZmZlcmVudC1jb250ZXh0cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4NjgwOCkKKysrIExheW91
dFRlc3RzL2Zhc3QvcHJvZmlsZXIvYW5vbnltb3VzLWZ1bmN0aW9uLWNhbGxlZC1mcm9tLWRpZmZl
cmVudC1jb250ZXh0cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsMjEgKzQsMjEg
QEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRp
dGxlOiBTYW1lIGFub255bW91cyBmdW5jdGlvbiBjYWxsZWQgZnJvbSBkaWZmZXJlbnQgY29udGV4
dHMKIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBzdGFydFRlc3QgYW5vbnltb3Vz
LWZ1bmN0aW9uLWNhbGxlZC1mcm9tLWRpZmZlcmVudC1jb250ZXh0cy5odG1sIChsaW5lIDExOjEp
Ci0gICAgICBhbm9ueW1vdXNGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAo
bGluZSAyOTozNykKLSAgICAgICAgIGluc2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNv
dXJjZXMuanMgKGxpbmUgMTc6MjYpCisgICBzdGFydFRlc3QgYW5vbnltb3VzLWZ1bmN0aW9uLWNh
bGxlZC1mcm9tLWRpZmZlcmVudC1jb250ZXh0cy5odG1sIChsaW5lIDEwOjE5KQorICAgICAgYW5v
bnltb3VzRnVuY3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMjk6MzQp
CisgICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChs
aW5lIDE3OjIzKQogICAgICAgICAgICAgY3JlYXRlRWxlbWVudCAobm8gZmlsZSkgKGxpbmUgMDow
KQogICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAg
ICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICBnZXRF
bGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgZXZhbCAobm8gZmlsZSkgKGxp
bmUgMDowKQogICAgICAgICAgKHByb2dyYW0pIChubyBmaWxlKSAobGluZSAxOjEpCi0gICAgICAg
ICAgICBhbm9ueW1vdXNGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGlu
ZSAyOTozNykKLSAgICAgICAgICAgICAgIGluc2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1KUy1y
ZXNvdXJjZXMuanMgKGxpbmUgMTc6MjYpCisgICAgICAgICAgICBhbm9ueW1vdXNGdW5jdGlvbiBw
cm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAyOTozNCkKKyAgICAgICAgICAgICAg
IGluc2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjMp
CiAgICAgICAgICAgICAgICAgICBjcmVhdGVFbGVtZW50IChubyBmaWxlKSAobGluZSAwOjApCiAg
ICAgICAgICAgICAgICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAg
ICAgICAgICAgICAgICAgYXBwZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAg
ICAgICAgICAgIGdldEVsZW1lbnRCeUlkIChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICBlbmRU
ZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MjApCisgICAgICBlbmRU
ZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MTcpCiAKIApJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9hbm9ueW1vdXMtZnVuY3Rpb24tY2FsbHMtYnVpbHQt
aW4tZnVuY3Rpb25zLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L3Byb2ZpbGVyL2Fub255bW91cy1mdW5jdGlvbi1jYWxscy1idWlsdC1pbi1mdW5jdGlvbnMtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAxODY4MDgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVy
L2Fub255bW91cy1mdW5jdGlvbi1jYWxscy1idWlsdC1pbi1mdW5jdGlvbnMtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC00LDEzICs0LDEzIEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFs
bHksIGxvYWQgaXQgaW4gdGgKIAogUHJvZmlsZSB0aXRsZTogQW5vbnltb3VzIGZ1bmN0aW9uIGNh
bGxzIGJ1aWx0LWluIGZ1bmN0aW9ucwogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAg
IHN0YXJ0VGVzdCBhbm9ueW1vdXMtZnVuY3Rpb24tY2FsbHMtYnVpbHQtaW4tZnVuY3Rpb25zLmh0
bWwgKGxpbmUgMTE6MSkKLSAgICAgIGFub255bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMt
cmVzb3VyY2VzLmpzIChsaW5lIDI5OjM3KQotICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxl
ci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyNikKKyAgIHN0YXJ0VGVzdCBhbm9ueW1v
dXMtZnVuY3Rpb24tY2FsbHMtYnVpbHQtaW4tZnVuY3Rpb25zLmh0bWwgKGxpbmUgMTA6MTkpCisg
ICAgICBhbm9ueW1vdXNGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGlu
ZSAyOTozNCkKKyAgICAgICAgIGluc2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJj
ZXMuanMgKGxpbmUgMTc6MjMpCiAgICAgICAgICAgICBjcmVhdGVFbGVtZW50IChubyBmaWxlKSAo
bGluZSAwOjApCiAgICAgICAgICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDow
KQogICAgICAgICAgICAgYXBwZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAg
ICAgIGdldEVsZW1lbnRCeUlkIChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICBlbmRUZXN0IHBy
b2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MjApCisgICAgICBlbmRUZXN0IHBy
b2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MTcpCiAKIApJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9wcm9maWxlci9hbm9ueW1vdXMtZnVuY3Rpb24tY2FsbHMtZXZhbC1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9hbm9ueW1vdXMt
ZnVuY3Rpb24tY2FsbHMtZXZhbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4NjgwOCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvYW5vbnltb3VzLWZ1bmN0aW9uLWNhbGxzLWV2YWwtZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDE1ICs0LDE1IEBAIFRvIHJ1biB0aGlzIHRl
c3QgbWFudWFsbHksIGxvYWQgaXQgaW4gdGgKIAogUHJvZmlsZSB0aXRsZTogQW5vbnltb3VzIGZ1
bmN0aW9uIGNhbGxlcyBldmFsCiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgc3Rh
cnRUZXN0IGFub255bW91cy1mdW5jdGlvbi1jYWxscy1ldmFsLmh0bWwgKGxpbmUgMTE6MSkKLSAg
ICAgIHZhcmlhYmxlVGhhdFBvaW50c1RvQW5Bbm9ueW1vdXNGdW5jdGlvbiBhbm9ueW1vdXMtZnVu
Y3Rpb24tY2FsbHMtZXZhbC5odG1sIChsaW5lIDE0OjYyKQorICAgc3RhcnRUZXN0IGFub255bW91
cy1mdW5jdGlvbi1jYWxscy1ldmFsLmh0bWwgKGxpbmUgMTA6MTkpCisgICAgICB2YXJpYWJsZVRo
YXRQb2ludHNUb0FuQW5vbnltb3VzRnVuY3Rpb24gYW5vbnltb3VzLWZ1bmN0aW9uLWNhbGxzLWV2
YWwuaHRtbCAobGluZSAxNDo1OSkKICAgICAgICAgIGV2YWwgKG5vIGZpbGUpIChsaW5lIDA6MCkK
ICAgICAgICAgICAgIChwcm9ncmFtKSAobm8gZmlsZSkgKGxpbmUgMToxKQotICAgICAgICAgICAg
ICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoy
NikKKyAgICAgICAgICAgICAgIGluc2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJj
ZXMuanMgKGxpbmUgMTc6MjMpCiAgICAgICAgICAgICAgICAgICBjcmVhdGVFbGVtZW50IChubyBm
aWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmls
ZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgICAgYXBwZW5kQ2hpbGQgKG5vIGZpbGUpIChs
aW5lIDA6MCkKICAgICAgICAgICAgICAgICAgIGdldEVsZW1lbnRCeUlkIChubyBmaWxlKSAobGlu
ZSAwOjApCi0gICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5l
IDE6MjApCisgICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5l
IDE6MTcpCiAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9hbm9ueW1vdXMtZnVu
Y3Rpb25zLXdpdGgtZGlzcGxheS1uYW1lcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9wcm9maWxlci9hbm9ueW1vdXMtZnVuY3Rpb25zLXdpdGgtZGlzcGxheS1u
YW1lcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4NjgwOCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
cHJvZmlsZXIvYW5vbnltb3VzLWZ1bmN0aW9ucy13aXRoLWRpc3BsYXktbmFtZXMtZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDEzICs0LDEzIEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFu
dWFsbHksIGxvYWQgaXQgaW4gdGgKIAogUHJvZmlsZSB0aXRsZTogQW5vbnltb3VzIGZ1bmN0aW9u
cyB3aXRoIGRpc3BsYXkgbmFtZXMKIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBz
dGFydFRlc3QgYW5vbnltb3VzLWZ1bmN0aW9ucy13aXRoLWRpc3BsYXktbmFtZXMuaHRtbCAobGlu
ZSAyMzoxKQotICAgICAgYW5vbnltb3VzRnVuY3Rpb25HZW5lcmF0b3IgYW5vbnltb3VzLWZ1bmN0
aW9ucy13aXRoLWRpc3BsYXktbmFtZXMuaHRtbCAobGluZSAxMToxKQotICAgICAgMCBpdGVyYXRp
b25zIGZ1bmN0aW9uIGFub255bW91cy1mdW5jdGlvbnMtd2l0aC1kaXNwbGF5LW5hbWVzLmh0bWwg
KGxpbmUgMTM6NSkKLSAgICAgIDEgaXRlcmF0aW9ucyBmdW5jdGlvbiBhbm9ueW1vdXMtZnVuY3Rp
b25zLXdpdGgtZGlzcGxheS1uYW1lcy5odG1sIChsaW5lIDEzOjUpCi0gICAgICAyIGl0ZXJhdGlv
bnMgZnVuY3Rpb24gYW5vbnltb3VzLWZ1bmN0aW9ucy13aXRoLWRpc3BsYXktbmFtZXMuaHRtbCAo
bGluZSAxMzo1KQotICAgICAgMjAgaXRlcmF0aW9ucyBmdW5jdGlvbiBhbm9ueW1vdXMtZnVuY3Rp
b25zLXdpdGgtZGlzcGxheS1uYW1lcy5odG1sIChsaW5lIDEzOjUpCi0gICAgICAxMDAwIGl0ZXJh
dGlvbnMgZnVuY3Rpb24gYW5vbnltb3VzLWZ1bmN0aW9ucy13aXRoLWRpc3BsYXktbmFtZXMuaHRt
bCAobGluZSAxMzo1KQotICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5q
cyAobGluZSAxOjIwKQorICAgc3RhcnRUZXN0IGFub255bW91cy1mdW5jdGlvbnMtd2l0aC1kaXNw
bGF5LW5hbWVzLmh0bWwgKGxpbmUgMjI6MTkpCisgICAgICBhbm9ueW1vdXNGdW5jdGlvbkdlbmVy
YXRvciBhbm9ueW1vdXMtZnVuY3Rpb25zLXdpdGgtZGlzcGxheS1uYW1lcy5odG1sIChsaW5lIDEw
OjM2KQorICAgICAgMCBpdGVyYXRpb25zIGZ1bmN0aW9uIGFub255bW91cy1mdW5jdGlvbnMtd2l0
aC1kaXNwbGF5LW5hbWVzLmh0bWwgKGxpbmUgMTI6NTkpCisgICAgICAxIGl0ZXJhdGlvbnMgZnVu
Y3Rpb24gYW5vbnltb3VzLWZ1bmN0aW9ucy13aXRoLWRpc3BsYXktbmFtZXMuaHRtbCAobGluZSAx
Mjo1OSkKKyAgICAgIDIgaXRlcmF0aW9ucyBmdW5jdGlvbiBhbm9ueW1vdXMtZnVuY3Rpb25zLXdp
dGgtZGlzcGxheS1uYW1lcy5odG1sIChsaW5lIDEyOjU5KQorICAgICAgMjAgaXRlcmF0aW9ucyBm
dW5jdGlvbiBhbm9ueW1vdXMtZnVuY3Rpb25zLXdpdGgtZGlzcGxheS1uYW1lcy5odG1sIChsaW5l
IDEyOjU5KQorICAgICAgMTAwMCBpdGVyYXRpb25zIGZ1bmN0aW9uIGFub255bW91cy1mdW5jdGlv
bnMtd2l0aC1kaXNwbGF5LW5hbWVzLmh0bWwgKGxpbmUgMTI6NTkpCisgICAgICBlbmRUZXN0IHBy
b2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MTcpCiAKIApJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9wcm9maWxlci9hcHBseS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9wcm9maWxlci9hcHBseS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4Njgw
OCkKKysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvYXBwbHktZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC00LDkgKzQsOSBAQCBUbyBydW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBsb2Fk
IGl0IGluIHRoCiAKIFByb2ZpbGUgdGl0bGU6IFVzaW5nIHRoZSBhcHBseSgpIG1ldGhvZAogVGhy
ZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCBhcHBseS5odG1sIChsaW5l
IDExOjEpCi0gICAgICBmYWtlT2JqZWN0IGFwcGx5Lmh0bWwgKGxpbmUgMTg6MSkKLSAgICAgICAg
IGZha2VJbnRlcmlvckZ1bmN0aW9uIGFwcGx5Lmh0bWwgKGxpbmUgMjQ6MSkKLSAgICAgIGVuZFRl
c3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAgIHN0YXJ0VGVz
dCBhcHBseS5odG1sIChsaW5lIDEwOjE5KQorICAgICAgZmFrZU9iamVjdCBhcHBseS5odG1sIChs
aW5lIDE3OjIxKQorICAgICAgICAgZmFrZUludGVyaW9yRnVuY3Rpb24gYXBwbHkuaHRtbCAobGlu
ZSAyMzozMCkKKyAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxp
bmUgMToxNykKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2J1aWx0LWluLWZ1
bmN0aW9uLWNhbGxzLWFub255bW91cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9wcm9maWxlci9idWlsdC1pbi1mdW5jdGlvbi1jYWxscy1hbm9ueW1vdXMtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAxODY4MDgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVy
L2J1aWx0LWluLWZ1bmN0aW9uLWNhbGxzLWFub255bW91cy1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTQsNyArNCw3IEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxvYWQgaXQg
aW4gdGgKIAogUHJvZmlsZSB0aXRsZTogQnVpbHQtaW4gZnVuY3Rpb24gY2FsbHMgYW4gYW5vbnlt
b3VzIGZ1bmN0aW9uCiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgc3RhcnRUZXN0
IGJ1aWx0LWluLWZ1bmN0aW9uLWNhbGxzLWFub255bW91cy5odG1sIChsaW5lIDExOjEpCisgICBz
dGFydFRlc3QgYnVpbHQtaW4tZnVuY3Rpb24tY2FsbHMtYW5vbnltb3VzLmh0bWwgKGxpbmUgMTA6
MTkpCiAgICAgICBBcnJheSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgbWFwIChubyBmaWxl
KSAobGluZSAwOjApCiAgICAgICAgICBPYmplY3QgKG5vIGZpbGUpIChsaW5lIDA6MCkKQEAgLTEy
LDggKzEyLDggQEAgVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIHRv
SW50ZWdlciAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgTnVtYmVyIChubyBm
aWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICAoYW5vbnltb3VzIGZ1bmN0aW9uKSAobm8g
ZmlsZSkgKGxpbmUgMDowKQotICAgICAgICAgbXlGdW5jdGlvbiBidWlsdC1pbi1mdW5jdGlvbi1j
YWxscy1hbm9ueW1vdXMuaHRtbCAobGluZSAxNDo0NSkKLSAgICAgICAgICAgIGFycmF5T3BlcmF0
b3JGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAyNTo0NikKLSAg
ICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAg
ICAgICAgIG15RnVuY3Rpb24gYnVpbHQtaW4tZnVuY3Rpb24tY2FsbHMtYW5vbnltb3VzLmh0bWwg
KGxpbmUgMTQ6MzApCisgICAgICAgICAgICBhcnJheU9wZXJhdG9yRnVuY3Rpb24gcHJvZmlsZXIt
dGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMjU6MzEpCisgICAgICBlbmRUZXN0IHByb2ZpbGVy
LXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MTcpCiAKIApJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9wcm9maWxlci9idWlsdC1pbi1mdW5jdGlvbi1jYWxscy11c2VyLWRlZmluZWQtZnVuY3Rp
b24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIv
YnVpbHQtaW4tZnVuY3Rpb24tY2FsbHMtdXNlci1kZWZpbmVkLWZ1bmN0aW9uLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMTg2ODA4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9idWlsdC1p
bi1mdW5jdGlvbi1jYWxscy11c2VyLWRlZmluZWQtZnVuY3Rpb24tZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC00LDcgKzQsNyBAQCBUbyBydW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBsb2Fk
IGl0IGluIHRoCiAKIFByb2ZpbGUgdGl0bGU6IEJ1aWx0LWluIGZ1bmN0aW9uIGNhbGxzIGEgdXNl
ciBkZWZpbmVkIGZ1bmN0aW9uCiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgc3Rh
cnRUZXN0IGJ1aWx0LWluLWZ1bmN0aW9uLWNhbGxzLXVzZXItZGVmaW5lZC1mdW5jdGlvbi5odG1s
IChsaW5lIDExOjEpCisgICBzdGFydFRlc3QgYnVpbHQtaW4tZnVuY3Rpb24tY2FsbHMtdXNlci1k
ZWZpbmVkLWZ1bmN0aW9uLmh0bWwgKGxpbmUgMTA6MTkpCiAgICAgICBBcnJheSAobm8gZmlsZSkg
KGxpbmUgMDowKQogICAgICAgbWFwIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICBPYmpl
Y3QgKG5vIGZpbGUpIChsaW5lIDA6MCkKQEAgLTEyLDcgKzEyLDcgQEAgVGhyZWFkXzEgKG5vIGZp
bGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIHRvSW50ZWdlciAobm8gZmlsZSkgKGxpbmUgMDow
KQogICAgICAgICAgICAgICAgTnVtYmVyIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAg
ICAgICAoYW5vbnltb3VzIGZ1bmN0aW9uKSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgICAg
YXJyYXlPcGVyYXRvckZ1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5l
IDI1OjQ2KQotICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGlu
ZSAxOjIwKQorICAgICAgICAgYXJyYXlPcGVyYXRvckZ1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMt
cmVzb3VyY2VzLmpzIChsaW5lIDI1OjMxKQorICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpT
LXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcHJv
ZmlsZXIvY2FsbC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9w
cm9maWxlci9jYWxsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2ODA4KQorKysgTGF5b3V0VGVz
dHMvZmFzdC9wcm9maWxlci9jYWxsLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCw5
ICs0LDkgQEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9m
aWxlIHRpdGxlOiBVc2luZyB0aGUgY2FsbCgpIG1ldGhvZAogVGhyZWFkXzEgKG5vIGZpbGUpIChs
aW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCBjYWxsLmh0bWwgKGxpbmUgMTE6MSkKLSAgICAgIGZha2VP
YmplY3QgY2FsbC5odG1sIChsaW5lIDIwOjEpCi0gICAgICAgICBmYWtlSW50ZXJpb3JGdW5jdGlv
biBjYWxsLmh0bWwgKGxpbmUgMjY6MSkKLSAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1y
ZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAgIHN0YXJ0VGVzdCBjYWxsLmh0bWwgKGxpbmUgMTA6
MTkpCisgICAgICBmYWtlT2JqZWN0IGNhbGwuaHRtbCAobGluZSAxOToyMSkKKyAgICAgICAgIGZh
a2VJbnRlcmlvckZ1bmN0aW9uIGNhbGwuaHRtbCAobGluZSAyNTozMCkKKyAgICAgIGVuZFRlc3Qg
cHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToxNykKIAogCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2NhbGxpbmctdGhlLWZ1bmN0aW9uLXRoYXQtc3RhcnRlZC10
aGUtcHJvZmlsZXItZnJvbS1hbm90aGVyLXNjb3BlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2NhbGxpbmctdGhlLWZ1bmN0aW9uLXRoYXQtc3Rh
cnRlZC10aGUtcHJvZmlsZXItZnJvbS1hbm90aGVyLXNjb3BlLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMTg2ODA4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9jYWxsaW5nLXRoZS1mdW5j
dGlvbi10aGF0LXN0YXJ0ZWQtdGhlLXByb2ZpbGVyLWZyb20tYW5vdGhlci1zY29wZS1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsOSArNCw5IEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFu
dWFsbHksIGxvYWQgaXQgaW4gdGgKIAogUHJvZmlsZSB0aXRsZTogQ2FsbGluZyB0aGUgc2FtZSBm
dW5jdGlvbiB3aGVyZSB0aGUgcHJvZmlsZSBzdGFydGVkIGZyb20gYW5vdGhlciBmdW5jdGlvbgog
VGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIGluZGlyZWN0aW9uIGNhbGxpbmctdGhl
LWZ1bmN0aW9uLXRoYXQtc3RhcnRlZC10aGUtcHJvZmlsZXItZnJvbS1hbm90aGVyLXNjb3BlLmh0
bWwgKGxpbmUgMTg6MSkKLSAgICAgIGZ1bmN0aW9uV2ljaFN0YXJ0c0FuZFN0b3BzVGhlUHJvZmls
ZXIgY2FsbGluZy10aGUtZnVuY3Rpb24tdGhhdC1zdGFydGVkLXRoZS1wcm9maWxlci1mcm9tLWFu
b3RoZXItc2NvcGUuaHRtbCAobGluZSAyNDoxKQotICAgZnVuY3Rpb25XaWNoU3RhcnRzQW5kU3Rv
cHNUaGVQcm9maWxlciBjYWxsaW5nLXRoZS1mdW5jdGlvbi10aGF0LXN0YXJ0ZWQtdGhlLXByb2Zp
bGVyLWZyb20tYW5vdGhlci1zY29wZS5odG1sIChsaW5lIDI0OjEpCi0gICBlbmRUZXN0IHByb2Zp
bGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MjApCisgICBpbmRpcmVjdGlvbiBjYWxs
aW5nLXRoZS1mdW5jdGlvbi10aGF0LXN0YXJ0ZWQtdGhlLXByb2ZpbGVyLWZyb20tYW5vdGhlci1z
Y29wZS5odG1sIChsaW5lIDE3OjIxKQorICAgICAgZnVuY3Rpb25XaWNoU3RhcnRzQW5kU3RvcHNU
aGVQcm9maWxlciBjYWxsaW5nLXRoZS1mdW5jdGlvbi10aGF0LXN0YXJ0ZWQtdGhlLXByb2ZpbGVy
LWZyb20tYW5vdGhlci1zY29wZS5odG1sIChsaW5lIDIzOjQ3KQorICAgZnVuY3Rpb25XaWNoU3Rh
cnRzQW5kU3RvcHNUaGVQcm9maWxlciBjYWxsaW5nLXRoZS1mdW5jdGlvbi10aGF0LXN0YXJ0ZWQt
dGhlLXByb2ZpbGVyLWZyb20tYW5vdGhlci1zY29wZS5odG1sIChsaW5lIDIzOjQ3KQorICAgZW5k
VGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiAKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvY29tcGFyZS1tdWx0aXBsZS1wcm9maWxlcy1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9jb21wYXJl
LW11bHRpcGxlLXByb2ZpbGVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2ODA4KQorKysgTGF5
b3V0VGVzdHMvZmFzdC9wcm9maWxlci9jb21wYXJlLW11bHRpcGxlLXByb2ZpbGVzLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCwxNCArNCwxNCBAQCBUbyBydW4gdGhpcyB0ZXN0IG1h
bnVhbGx5LCBsb2FkIGl0IGluIHRoCiAKIFByb2ZpbGUgdGl0bGU6IFRlc3QKIFRocmVhZF8xIChu
byBmaWxlKSAobGluZSAwOjApCi0gICBzdGFydFRlc3QgY29tcGFyZS1tdWx0aXBsZS1wcm9maWxl
cy5odG1sIChsaW5lIDIzOjEpCi0gICAgICB0ZXN0IGNvbXBhcmUtbXVsdGlwbGUtcHJvZmlsZXMu
aHRtbCAobGluZSAxMToyMCkKLSAgICAgICAgIHRlc3QyIGNvbXBhcmUtbXVsdGlwbGUtcHJvZmls
ZXMuaHRtbCAobGluZSAxNzoyMSkKKyAgIHN0YXJ0VGVzdCBjb21wYXJlLW11bHRpcGxlLXByb2Zp
bGVzLmh0bWwgKGxpbmUgMjI6MTkpCisgICAgICB0ZXN0IGNvbXBhcmUtbXVsdGlwbGUtcHJvZmls
ZXMuaHRtbCAobGluZSAxMToxNCkKKyAgICAgICAgIHRlc3QyIGNvbXBhcmUtbXVsdGlwbGUtcHJv
ZmlsZXMuaHRtbCAobGluZSAxNzoxNSkKIAogUHJvZmlsZSB0aXRsZTogVGVzdAogVGhyZWFkXzEg
KG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCBjb21wYXJlLW11bHRpcGxlLXByb2Zp
bGVzLmh0bWwgKGxpbmUgMjM6MSkKLSAgICAgIHRlc3QgY29tcGFyZS1tdWx0aXBsZS1wcm9maWxl
cy5odG1sIChsaW5lIDExOjIwKQotICAgICAgICAgdGVzdDIgY29tcGFyZS1tdWx0aXBsZS1wcm9m
aWxlcy5odG1sIChsaW5lIDE3OjIxKQorICAgc3RhcnRUZXN0IGNvbXBhcmUtbXVsdGlwbGUtcHJv
ZmlsZXMuaHRtbCAobGluZSAyMjoxOSkKKyAgICAgIHRlc3QgY29tcGFyZS1tdWx0aXBsZS1wcm9m
aWxlcy5odG1sIChsaW5lIDExOjE0KQorICAgICAgICAgdGVzdDIgY29tcGFyZS1tdWx0aXBsZS1w
cm9maWxlcy5odG1sIChsaW5lIDE3OjE1KQogCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcHJv
ZmlsZXIvY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvcHJvZmlsZXIvY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY4MDgp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2NvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtNCw5ICs0LDkgQEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwg
bG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiBVc2luZyBhIGNvbnN0cnVjdG9yLgogVGhy
ZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCBjb25zdHJ1Y3Rvci5odG1s
IChsaW5lIDExOjEpCi0gICAgICBmYWtlT2JqZWN0IGNvbnN0cnVjdG9yLmh0bWwgKGxpbmUgMjA6
MSkKKyAgIHN0YXJ0VGVzdCBjb25zdHJ1Y3Rvci5odG1sIChsaW5lIDEwOjE5KQorICAgICAgZmFr
ZU9iamVjdCBjb25zdHJ1Y3Rvci5odG1sIChsaW5lIDE5OjIxKQogICAgICAgICAgQXJyYXkgKG5v
IGZpbGUpIChsaW5lIDA6MCkKLSAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJj
ZXMuanMgKGxpbmUgMToyMCkKKyAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJj
ZXMuanMgKGxpbmUgMToxNykKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2Rl
YWQtdGltZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9m
aWxlci9kZWFkLXRpbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY4MDgpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L3Byb2ZpbGVyL2RlYWQtdGltZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTQsMTAgKzQsMTAgQEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgbG9hZCBpdCBpbiB0
aAogCiBQcm9maWxlIHRpdGxlOiBEZWFkIHRpbWUgaW4gcHJvZmlsZS4KIFRocmVhZF8xIChubyBm
aWxlKSAobGluZSAwOjApCi0gICBvbmxvYWQgZGVhZC10aW1lLmh0bWwgKGxpbmUgMjE6NTIpCi0g
ICAgICBzdGFydFRlc3QgZGVhZC10aW1lLmh0bWwgKGxpbmUgMTM6MSkKKyAgIG9ubG9hZCBkZWFk
LXRpbWUuaHRtbCAobGluZSAyMTo0NCkKKyAgICAgIHN0YXJ0VGVzdCBkZWFkLXRpbWUuaHRtbCAo
bGluZSAxMjoxOSkKICAgICAgICAgIHNldFRpbWVvdXQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAg
IChwcm9ncmFtKSBkZWFkLXRpbWUuaHRtbCAobGluZSAxOjEpCi0gICAgICBlbmRUZXN0IHByb2Zp
bGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MjApCisgICAgICBlbmRUZXN0IHByb2Zp
bGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MTcpCiAKIApJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9wcm9maWxlci9kb2N1bWVudC1kb3Qtd3JpdGUtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvZG9jdW1lbnQtZG90LXdyaXRlLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMTg2ODA4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9k
b2N1bWVudC1kb3Qtd3JpdGUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEs
OCBAQAogCiBQcm9maWxlIHRpdGxlOiBDYWxsIERvY3VtZW50LndyaXRlKCkKIFRocmVhZF8xIChu
byBmaWxlKSAobGluZSAwOjApCi0gICBzdGFydFRlc3QgZG9jdW1lbnQtZG90LXdyaXRlLmh0bWwg
KGxpbmUgMTE6MSkKKyAgIHN0YXJ0VGVzdCBkb2N1bWVudC1kb3Qtd3JpdGUuaHRtbCAobGluZSAx
MDoxOSkKICAgICAgIHdyaXRlIChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICBlbmRUZXN0IHBy
b2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MjApCisgICAgICBlbmRUZXN0IHBy
b2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MTcpCiAKIApJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9wcm9maWxlci9ldmVudC1oYW5kbGVyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2V2ZW50LWhhbmRsZXItZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAxODY4MDgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2V2ZW50LWhh
bmRsZXItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDE1ICs0LDE1IEBAIFRvIHJ1
biB0aGlzIHRlc3QgbWFudWFsbHksIGxvYWQgaXQgaW4gdGgKIAogUHJvZmlsZSB0aXRsZTogRXZl
bnQgaGFuZGxlcgogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCBl
dmVudC1oYW5kbGVyLmh0bWwgKGxpbmUgMTE6MSkKKyAgIHN0YXJ0VGVzdCBldmVudC1oYW5kbGVy
Lmh0bWwgKGxpbmUgMTA6MTkpCiAgICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUg
MDowKQogICAgICAgYWRkRXZlbnRMaXN0ZW5lciAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAg
Y2xpY2sgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAgICAgIGluc2VydE5ld1RleHQgcHJvZmls
ZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjYpCisgICAgICAgICBpbnNlcnROZXdU
ZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjIzKQogICAgICAgICAg
ICAgY3JlYXRlRWxlbWVudCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgY3JlYXRl
VGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIGFwcGVuZENoaWxkIChu
byBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmlsZSkg
KGxpbmUgMDowKQotICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAo
bGluZSAxOjIwKQorICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAo
bGluZSAxOjE3KQogCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvZXhlY3V0aW9u
LWNvbnRleHQtYW5kLWV2YWwtb24tc2FtZS1saW5lLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2V4ZWN1dGlvbi1jb250ZXh0LWFuZC1ldmFsLW9u
LXNhbWUtbGluZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4NjgwOCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvcHJvZmlsZXIvZXhlY3V0aW9uLWNvbnRleHQtYW5kLWV2YWwtb24tc2FtZS1saW5lLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCwxMyArNCwxMyBAQCBUbyBydW4gdGhpcyB0
ZXN0IG1hbnVhbGx5LCBsb2FkIGl0IGluIHRoCiAKIFByb2ZpbGUgdGl0bGU6IFR3byBFeGVjdXRp
b24gQ29udGV4dHMgb24gdGhlIHNhbWUgbGluZQogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6
MCkKLSAgIHN0YXJ0VGVzdCBleGVjdXRpb24tY29udGV4dC1hbmQtZXZhbC1vbi1zYW1lLWxpbmUu
aHRtbCAobGluZSAxMToxKQotICAgICAgZXZhbEZ1bmN0aW9uIChubyBmaWxlKSAobGluZSAxOjI1
KQotICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAo
bGluZSAxNzoyNikKKyAgIHN0YXJ0VGVzdCBleGVjdXRpb24tY29udGV4dC1hbmQtZXZhbC1vbi1z
YW1lLWxpbmUuaHRtbCAobGluZSAxMDoxOSkKKyAgICAgIGV2YWxGdW5jdGlvbiAobm8gZmlsZSkg
KGxpbmUgMToyMikKKyAgICAgICAgIGluc2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNv
dXJjZXMuanMgKGxpbmUgMTc6MjMpCiAgICAgICAgICAgICBjcmVhdGVFbGVtZW50IChubyBmaWxl
KSAobGluZSAwOjApCiAgICAgICAgICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUg
MDowKQogICAgICAgICAgICAgYXBwZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAg
ICAgICAgIGdldEVsZW1lbnRCeUlkIChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICBlbmRUZXN0
IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MjApCisgICAgICBlbmRUZXN0
IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MTcpCiAKIApJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9wcm9maWxlci9pbmxpbmUtZXZlbnQtaGFuZGxlci1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9pbmxpbmUtZXZlbnQtaGFu
ZGxlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4NjgwOCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
cHJvZmlsZXIvaW5saW5lLWV2ZW50LWhhbmRsZXItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC00LDE3ICs0LDE3IEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxvYWQgaXQgaW4g
dGgKIAogUHJvZmlsZSB0aXRsZTogSW5saW5lIGV2ZW50IGhhbmRsZXIKIFRocmVhZF8xIChubyBm
aWxlKSAobGluZSAwOjApCi0gICBzdGFydFRlc3QgaW5saW5lLWV2ZW50LWhhbmRsZXIuaHRtbCAo
bGluZSAxMToxKQorICAgc3RhcnRUZXN0IGlubGluZS1ldmVudC1oYW5kbGVyLmh0bWwgKGxpbmUg
MTA6MTkpCiAgICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAg
Y2xpY2sgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAgICAgIG9uY2xpY2sgaW5saW5lLWV2ZW50
LWhhbmRsZXIuaHRtbCAobGluZSAzMToxMzUpCi0gICAgICAgICAgICBldmVudExpc3RlbmVyIGlu
bGluZS1ldmVudC1oYW5kbGVyLmh0bWwgKGxpbmUgMTc6MjYpCi0gICAgICAgICAgICAgICBhbm9u
eW1vdXNGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAyOTozNykK
LSAgICAgICAgICAgICAgICAgIGluc2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJj
ZXMuanMgKGxpbmUgMTc6MjYpCisgICAgICAgICBvbmNsaWNrIGlubGluZS1ldmVudC1oYW5kbGVy
Lmh0bWwgKGxpbmUgMzE6MTI3KQorICAgICAgICAgICAgZXZlbnRMaXN0ZW5lciBpbmxpbmUtZXZl
bnQtaGFuZGxlci5odG1sIChsaW5lIDE3OjIzKQorICAgICAgICAgICAgICAgYW5vbnltb3VzRnVu
Y3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMjk6MzQpCisgICAgICAg
ICAgICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChs
aW5lIDE3OjIzKQogICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudCAobm8gZmlsZSkg
KGxpbmUgMDowKQogICAgICAgICAgICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUp
IChsaW5lIDA6MCkKICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAo
bGluZSAwOjApCiAgICAgICAgICAgICAgICAgICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmlsZSkg
KGxpbmUgMDowKQotICAgICAgICAgICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291
cmNlcy5qcyAobGluZSAxOjIwKQorICAgICAgICAgICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0
LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
cHJvZmlsZXIvbWFueS1jYWxscy1pbi10aGUtc2FtZS1zY29wZS1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9tYW55LWNhbGxzLWluLXRoZS1zYW1l
LXNjb3BlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2ODA4KQorKysgTGF5b3V0VGVzdHMvZmFz
dC9wcm9maWxlci9tYW55LWNhbGxzLWluLXRoZS1zYW1lLXNjb3BlLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtNCwzMyArNCwzMyBAQCBUbyBydW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBs
b2FkIGl0IGluIHRoCiAKIFByb2ZpbGUgdGl0bGU6IE1hbnkgQ2FsbHMgSW4gVGhlIFNhbWUgU2Nv
cGUKIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBzdGFydFRlc3QgbWFueS1jYWxs
cy1pbi10aGUtc2FtZS1zY29wZS5odG1sIChsaW5lIDExOjEpCi0gICAgICBpbnNlcnROZXdUZXh0
IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjI2KQorICAgc3RhcnRUZXN0
IG1hbnktY2FsbHMtaW4tdGhlLXNhbWUtc2NvcGUuaHRtbCAobGluZSAxMDoxOSkKKyAgICAgIGlu
c2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjMpCiAg
ICAgICAgICBjcmVhdGVFbGVtZW50IChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICBjcmVh
dGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgYXBwZW5kQ2hpbGQgKG5v
IGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgIGdldEVsZW1lbnRCeUlkIChubyBmaWxlKSAobGlu
ZSAwOjApCi0gICAgICBpbnNlcnRHaXZlblRleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMu
anMgKGxpbmUgOTozMikKKyAgICAgIGluc2VydEdpdmVuVGV4dCBwcm9maWxlci10ZXN0LUpTLXJl
c291cmNlcy5qcyAobGluZSA5OjI1KQogICAgICAgICAgY3JlYXRlRWxlbWVudCAobm8gZmlsZSkg
KGxpbmUgMDowKQogICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkK
ICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICBnZXRF
bGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgYXJyYXlPcGVyYXRvckZ1bmN0
aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI1OjQ2KQotICAgICAgaW50
ZXJtZWRpYXJ5RnVuY3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMzM6
MSkKLSAgICAgICAgIGFub255bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2Vz
LmpzIChsaW5lIDI5OjM3KQotICAgICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0
LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyNikKKyAgICAgIGFycmF5T3BlcmF0b3JGdW5jdGlv
biBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAyNTozMSkKKyAgICAgIGludGVy
bWVkaWFyeUZ1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDMyOjMw
KQorICAgICAgICAgYW5vbnltb3VzRnVuY3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMu
anMgKGxpbmUgMjk6MzQpCisgICAgICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3Qt
SlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjIzKQogICAgICAgICAgICAgICAgY3JlYXRlRWxlbWVu
dCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5v
IGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAo
bGluZSAwOjApCiAgICAgICAgICAgICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUg
MDowKQotICAgICAgYW5vbnltb3VzRnVuY3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMu
anMgKGxpbmUgMjk6MzcpCi0gICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMt
cmVzb3VyY2VzLmpzIChsaW5lIDE3OjI2KQorICAgICAgYW5vbnltb3VzRnVuY3Rpb24gcHJvZmls
ZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMjk6MzQpCisgICAgICAgICBpbnNlcnROZXdU
ZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjIzKQogICAgICAgICAg
ICAgY3JlYXRlRWxlbWVudCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgY3JlYXRl
VGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIGFwcGVuZENoaWxkIChu
byBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmlsZSkg
KGxpbmUgMDowKQotICAgICAgZW5kIG1hbnktY2FsbHMtaW4tdGhlLXNhbWUtc2NvcGUuaHRtbCAo
bGluZSAyNzoxKQotICAgICAgZW5kVCBtYW55LWNhbGxzLWluLXRoZS1zYW1lLXNjb3BlLmh0bWwg
KGxpbmUgMzI6MSkKLSAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMg
KGxpbmUgMToyMCkKKyAgICAgIGVuZCBtYW55LWNhbGxzLWluLXRoZS1zYW1lLXNjb3BlLmh0bWwg
KGxpbmUgMjY6MTMpCisgICAgICBlbmRUIG1hbnktY2FsbHMtaW4tdGhlLXNhbWUtc2NvcGUuaHRt
bCAobGluZSAzMToxNCkKKyAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMu
anMgKGxpbmUgMToxNykKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL211bHRp
cGxlLWFuZC1kaWZmZXJlbnQtc2NvcGVkLWFub255bW91cy1mdW5jdGlvbi1jYWxscy1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9tdWx0aXBsZS1h
bmQtZGlmZmVyZW50LXNjb3BlZC1hbm9ueW1vdXMtZnVuY3Rpb24tY2FsbHMtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAxODY4MDgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL211bHRpcGxl
LWFuZC1kaWZmZXJlbnQtc2NvcGVkLWFub255bW91cy1mdW5jdGlvbi1jYWxscy1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsMjAgKzQsMjAgQEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51
YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiBNdWx0aXBsZSBhbmQgZGlmZmVy
ZW50IHNjb3BlZCBjYWxscyB0byB0aGUgc2FtZSBhbm9ueW1vdXMgZnVuY3Rpb24KIFRocmVhZF8x
IChubyBmaWxlKSAobGluZSAwOjApCi0gICBzdGFydFRlc3QgbXVsdGlwbGUtYW5kLWRpZmZlcmVu
dC1zY29wZWQtYW5vbnltb3VzLWZ1bmN0aW9uLWNhbGxzLmh0bWwgKGxpbmUgMTE6MSkKLSAgICAg
IGFub255bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI5
OjM3KQotICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5q
cyAobGluZSAxNzoyNikKKyAgIHN0YXJ0VGVzdCBtdWx0aXBsZS1hbmQtZGlmZmVyZW50LXNjb3Bl
ZC1hbm9ueW1vdXMtZnVuY3Rpb24tY2FsbHMuaHRtbCAobGluZSAxMDoxOSkKKyAgICAgIGFub255
bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI5OjM0KQor
ICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGlu
ZSAxNzoyMykKICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQgKG5vIGZpbGUpIChsaW5lIDA6MCkK
ICAgICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAg
ICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgZ2V0RWxl
bWVudEJ5SWQgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAgIGludGVybWVkaWFyeUZ1bmN0aW9u
IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDMzOjEpCi0gICAgICAgICBhbm9u
eW1vdXNGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAyOTozNykK
LSAgICAgICAgICAgIGluc2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMg
KGxpbmUgMTc6MjYpCisgICAgICBpbnRlcm1lZGlhcnlGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpT
LXJlc291cmNlcy5qcyAobGluZSAzMjozMCkKKyAgICAgICAgIGFub255bW91c0Z1bmN0aW9uIHBy
b2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI5OjM0KQorICAgICAgICAgICAgaW5z
ZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyMykKICAg
ICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAg
ICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAg
ICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgZ2V0RWxl
bWVudEJ5SWQgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVz
dC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVz
dC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToxNykKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L3Byb2ZpbGVyL211bHRpcGxlLWFuZC1kaWZmZXJlbnQtc2NvcGVkLWZ1bmN0aW9uLWNhbGxzLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL211bHRp
cGxlLWFuZC1kaWZmZXJlbnQtc2NvcGVkLWZ1bmN0aW9uLWNhbGxzLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMTg2ODA4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9tdWx0aXBsZS1hbmQt
ZGlmZmVyZW50LXNjb3BlZC1mdW5jdGlvbi1jYWxscy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTQsMTkgKzQsMTkgQEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgbG9hZCBpdCBp
biB0aAogCiBQcm9maWxlIHRpdGxlOiBNdWx0aXBsZSBhbmQgZGlmZmVyZW50IHNjb3BlZCBjYWxs
cyB0byB0aGUgc2FtZSBmdW5jdGlvbgogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAg
IHN0YXJ0VGVzdCBtdWx0aXBsZS1hbmQtZGlmZmVyZW50LXNjb3BlZC1mdW5jdGlvbi1jYWxscy5o
dG1sIChsaW5lIDExOjEpCi0gICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVz
b3VyY2VzLmpzIChsaW5lIDE3OjI2KQorICAgc3RhcnRUZXN0IG11bHRpcGxlLWFuZC1kaWZmZXJl
bnQtc2NvcGVkLWZ1bmN0aW9uLWNhbGxzLmh0bWwgKGxpbmUgMTA6MTkpCisgICAgICBpbnNlcnRO
ZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjIzKQogICAgICAg
ICAgY3JlYXRlRWxlbWVudCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgY3JlYXRlVGV4
dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxl
KSAobGluZSAwOjApCiAgICAgICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMDow
KQotICAgICAgaW50ZXJtZWRpYXJ5RnVuY3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMu
anMgKGxpbmUgMzM6MSkKLSAgICAgICAgIGFub255bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3Qt
SlMtcmVzb3VyY2VzLmpzIChsaW5lIDI5OjM3KQotICAgICAgICAgICAgaW5zZXJ0TmV3VGV4dCBw
cm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyNikKKyAgICAgIGludGVybWVk
aWFyeUZ1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDMyOjMwKQor
ICAgICAgICAgYW5vbnltb3VzRnVuY3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMg
KGxpbmUgMjk6MzQpCisgICAgICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMt
cmVzb3VyY2VzLmpzIChsaW5lIDE3OjIzKQogICAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudCAo
bm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZp
bGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGlu
ZSAwOjApCiAgICAgICAgICAgICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMDow
KQotICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIw
KQorICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3
KQogCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvbXVsdGlwbGUtYW5vbnltb3Vz
LWZ1bmN0aW9ucy1jYWxsZWQtZnJvbS10aGUtc2FtZS1mdW5jdGlvbi1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9tdWx0aXBsZS1hbm9ueW1vdXMt
ZnVuY3Rpb25zLWNhbGxlZC1mcm9tLXRoZS1zYW1lLWZ1bmN0aW9uLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMTg2ODA4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9tdWx0aXBsZS1hbm9u
eW1vdXMtZnVuY3Rpb25zLWNhbGxlZC1mcm9tLXRoZS1zYW1lLWZ1bmN0aW9uLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtNCwxOSArNCwxOSBAQCBUbyBydW4gdGhpcyB0ZXN0IG1hbnVh
bGx5LCBsb2FkIGl0IGluIHRoCiAKIFByb2ZpbGUgdGl0bGU6IE11bHRpcGxlIGNhbGxzIHRvIGRp
ZmZlcmVudCBhbm9ueW1vdXMgZnVuY3Rpb25zCiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDow
KQotICAgc3RhcnRUZXN0IG11bHRpcGxlLWFub255bW91cy1mdW5jdGlvbnMtY2FsbGVkLWZyb20t
dGhlLXNhbWUtZnVuY3Rpb24uaHRtbCAobGluZSAxMToxKQotICAgICAgYW5vbnltb3VzRnVuY3Rp
b24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMjk6MzcpCi0gICAgICAgICBp
bnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjI2KQor
ICAgc3RhcnRUZXN0IG11bHRpcGxlLWFub255bW91cy1mdW5jdGlvbnMtY2FsbGVkLWZyb20tdGhl
LXNhbWUtZnVuY3Rpb24uaHRtbCAobGluZSAxMDoxOSkKKyAgICAgIGFub255bW91c0Z1bmN0aW9u
IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI5OjM0KQorICAgICAgICAgaW5z
ZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyMykKICAg
ICAgICAgICAgIGNyZWF0ZUVsZW1lbnQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAg
IGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICBhcHBlbmRD
aGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgZ2V0RWxlbWVudEJ5SWQgKG5v
IGZpbGUpIChsaW5lIDA6MCkKLSAgICAgIGFub3RoZXJBbm9ueW1vdXNGdW5jdGlvbiBwcm9maWxl
ci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAzMDo0NCkKLSAgICAgICAgIGluc2VydEdpdmVu
VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA5OjMyKQorICAgICAgYW5v
dGhlckFub255bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5l
IDMwOjQxKQorICAgICAgICAgaW5zZXJ0R2l2ZW5UZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3Vy
Y2VzLmpzIChsaW5lIDk6MjUpCiAgICAgICAgICAgICBjcmVhdGVFbGVtZW50IChubyBmaWxlKSAo
bGluZSAwOjApCiAgICAgICAgICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDow
KQogICAgICAgICAgICAgYXBwZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAg
ICAgIGdldEVsZW1lbnRCeUlkIChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICBlbmRUZXN0IHBy
b2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MjApCisgICAgICBlbmRUZXN0IHBy
b2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MTcpCiAKIApJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9wcm9maWxlci9tdWx0aXBsZS1mcmFtZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvbXVsdGlwbGUtZnJhbWVzLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMTg2ODA4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9tdWx0
aXBsZS1mcmFtZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDE1ICs0LDE1IEBA
IFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxvYWQgaXQgaW4gdGgKIAogUHJvZmlsZSB0aXRs
ZTogT3RoZXIgd2luZG93IGV4ZWN1dGluZyBKYXZhU2NyaXB0CiBUaHJlYWRfMSAobm8gZmlsZSkg
KGxpbmUgMDowKQotICAgc3RhcnRUZXN0IG11bHRpcGxlLWZyYW1lcy5odG1sIChsaW5lIDExOjEp
CisgICBzdGFydFRlc3QgbXVsdGlwbGUtZnJhbWVzLmh0bWwgKGxpbmUgMTA6MTkpCiAgICAgICBn
ZXRFbGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgZnVuY3Rpb25Jbk90aGVy
RnJhbWUgb3RoZXItZnJhbWUuaHRtbCAobGluZSA0OjMzKQotICAgICAgICAgZnVuY3Rpb25JblBh
cmVudEZyYW1lIG11bHRpcGxlLWZyYW1lcy5odG1sIChsaW5lIDIxOjM0KQotICAgICAgaW5zZXJ0
R2l2ZW5UZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDk6MzIpCisgICAg
ICBmdW5jdGlvbkluT3RoZXJGcmFtZSBvdGhlci1mcmFtZS5odG1sIChsaW5lIDQ6MzApCisgICAg
ICAgICBmdW5jdGlvbkluUGFyZW50RnJhbWUgbXVsdGlwbGUtZnJhbWVzLmh0bWwgKGxpbmUgMjE6
MzEpCisgICAgICBpbnNlcnRHaXZlblRleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMg
KGxpbmUgOToyNSkKICAgICAgICAgIGNyZWF0ZUVsZW1lbnQgKG5vIGZpbGUpIChsaW5lIDA6MCkK
ICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICBh
cHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgZ2V0RWxlbWVudEJ5SWQg
KG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNv
dXJjZXMuanMgKGxpbmUgMToyMCkKKyAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNv
dXJjZXMuanMgKGxpbmUgMToxNykKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVy
L25hbWVkLWZ1bmN0aW9ucy13aXRoLWRpc3BsYXktbmFtZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvbmFtZWQtZnVuY3Rpb25zLXdpdGgtZGlz
cGxheS1uYW1lcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4NjgwOCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvcHJvZmlsZXIvbmFtZWQtZnVuY3Rpb25zLXdpdGgtZGlzcGxheS1uYW1lcy1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsMTMgKzQsMTMgQEAgVG8gcnVuIHRoaXMgdGVzdCBt
YW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiBOYW1lZCBmdW5jdGlvbnMg
d2l0aCBkaXNwbGF5IG5hbWVzCiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgc3Rh
cnRUZXN0IG5hbWVkLWZ1bmN0aW9ucy13aXRoLWRpc3BsYXktbmFtZXMuaHRtbCAobGluZSA1NDox
KQotICAgICAgMCBpdGVyYXRpb25zIGZ1bmN0aW9uIG5hbWVkLWZ1bmN0aW9ucy13aXRoLWRpc3Bs
YXktbmFtZXMuaHRtbCAobGluZSAxMToxKQotICAgICAgMSBpdGVyYXRpb24gZnVuY3Rpb24gbmFt
ZWQtZnVuY3Rpb25zLXdpdGgtZGlzcGxheS1uYW1lcy5odG1sIChsaW5lIDE4OjEpCi0gICAgICAy
IGl0ZXJhdGlvbnMgZnVuY3Rpb24gbmFtZWQtZnVuY3Rpb25zLXdpdGgtZGlzcGxheS1uYW1lcy5o
dG1sIChsaW5lIDI1OjEpCi0gICAgICAyMCBpdGVyYXRpb25zIGZ1bmN0aW9uIG5hbWVkLWZ1bmN0
aW9ucy13aXRoLWRpc3BsYXktbmFtZXMuaHRtbCAobGluZSAzMjoxKQotICAgICAgMTAwMCBpdGVy
YXRpb25zIGZ1bmN0aW9uIG5hbWVkLWZ1bmN0aW9ucy13aXRoLWRpc3BsYXktbmFtZXMuaHRtbCAo
bGluZSAzOToxKQotICAgICAgYm9ndXNEaXNwbGF5TmFtZUZ1bmN0aW9uIG5hbWVkLWZ1bmN0aW9u
cy13aXRoLWRpc3BsYXktbmFtZXMuaHRtbCAobGluZSA0NzoxKQotICAgICAgZW5kVGVzdCBwcm9m
aWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgc3RhcnRUZXN0IG5hbWVk
LWZ1bmN0aW9ucy13aXRoLWRpc3BsYXktbmFtZXMuaHRtbCAobGluZSA1MzoxOSkKKyAgICAgIDAg
aXRlcmF0aW9ucyBmdW5jdGlvbiBuYW1lZC1mdW5jdGlvbnMtd2l0aC1kaXNwbGF5LW5hbWVzLmh0
bWwgKGxpbmUgMTA6MTkpCisgICAgICAxIGl0ZXJhdGlvbiBmdW5jdGlvbiBuYW1lZC1mdW5jdGlv
bnMtd2l0aC1kaXNwbGF5LW5hbWVzLmh0bWwgKGxpbmUgMTc6MTkpCisgICAgICAyIGl0ZXJhdGlv
bnMgZnVuY3Rpb24gbmFtZWQtZnVuY3Rpb25zLXdpdGgtZGlzcGxheS1uYW1lcy5odG1sIChsaW5l
IDI0OjE5KQorICAgICAgMjAgaXRlcmF0aW9ucyBmdW5jdGlvbiBuYW1lZC1mdW5jdGlvbnMtd2l0
aC1kaXNwbGF5LW5hbWVzLmh0bWwgKGxpbmUgMzE6MjApCisgICAgICAxMDAwIGl0ZXJhdGlvbnMg
ZnVuY3Rpb24gbmFtZWQtZnVuY3Rpb25zLXdpdGgtZGlzcGxheS1uYW1lcy5odG1sIChsaW5lIDM4
OjIyKQorICAgICAgYm9ndXNEaXNwbGF5TmFtZUZ1bmN0aW9uIG5hbWVkLWZ1bmN0aW9ucy13aXRo
LWRpc3BsYXktbmFtZXMuaHRtbCAobGluZSA0NjozNCkKKyAgICAgIGVuZFRlc3QgcHJvZmlsZXIt
dGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToxNykKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L3Byb2ZpbGVyL25lc3RlZC1hbm9ueW1vdXMtZnVuY3Rvbi1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9uZXN0ZWQtYW5vbnltb3VzLWZ1bmN0
b24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY4MDgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3By
b2ZpbGVyL25lc3RlZC1hbm9ueW1vdXMtZnVuY3Rvbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTQsMTQgKzQsMTQgQEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgbG9hZCBpdCBp
biB0aAogCiBQcm9maWxlIHRpdGxlOiBOZXN0ZWQgYW5vbnltb3VzIGZ1bmN0aW9ucyBjYWxsZWQK
IFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBzdGFydFRlc3QgbmVzdGVkLWFub255
bW91cy1mdW5jdG9uLmh0bWwgKGxpbmUgMTE6MSkKLSAgICAgIEFub255bW91c0Z1bmN0aW9uV2lj
aENhbGxzQW5Bbm9ueW1vdXNGdW5jdGlvbiBuZXN0ZWQtYW5vbnltb3VzLWZ1bmN0b24uaHRtbCAo
bGluZSAxNDo2OCkKLSAgICAgICAgIGFub255bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMt
cmVzb3VyY2VzLmpzIChsaW5lIDI5OjM3KQotICAgICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9m
aWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyNikKKyAgIHN0YXJ0VGVzdCBuZXN0
ZWQtYW5vbnltb3VzLWZ1bmN0b24uaHRtbCAobGluZSAxMDoxOSkKKyAgICAgIEFub255bW91c0Z1
bmN0aW9uV2ljaENhbGxzQW5Bbm9ueW1vdXNGdW5jdGlvbiBuZXN0ZWQtYW5vbnltb3VzLWZ1bmN0
b24uaHRtbCAobGluZSAxNDo2NSkKKyAgICAgICAgIGFub255bW91c0Z1bmN0aW9uIHByb2ZpbGVy
LXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI5OjM0KQorICAgICAgICAgICAgaW5zZXJ0TmV3
VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyMykKICAgICAgICAg
ICAgICAgIGNyZWF0ZUVsZW1lbnQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAg
IGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICBhcHBl
bmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgZ2V0RWxlbWVudEJ5
SWQgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1y
ZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1y
ZXNvdXJjZXMuanMgKGxpbmUgMToxNykKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2Zp
bGVyL25lc3RlZC1zdGFydC1hbmQtc3RvcC1wcm9maWxlci1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9uZXN0ZWQtc3RhcnQtYW5kLXN0b3AtcHJv
ZmlsZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY4MDgpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L3Byb2ZpbGVyL25lc3RlZC1zdGFydC1hbmQtc3RvcC1wcm9maWxlci1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTQsMzUgKzQsMzUgQEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwg
bG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiBTdGFydCB0aGUgcHJvZmlsZXIgdGhlIHRo
aXJkIHRpbWUuCiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgc3RhcnRUZXN0IG5l
c3RlZC1zdGFydC1hbmQtc3RvcC1wcm9maWxlci5odG1sIChsaW5lIDExOjEpCi0gICAgICBlbmRU
ZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MjApCisgICBzdGFydFRl
c3QgbmVzdGVkLXN0YXJ0LWFuZC1zdG9wLXByb2ZpbGVyLmh0bWwgKGxpbmUgMTA6MTkpCisgICAg
ICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MTcpCiAKIAog
UHJvZmlsZSB0aXRsZTogU3RhcnQgdGhlIHByb2ZpbGVyIHRoZSB0aGlyZCB0aW1lLgogVGhyZWFk
XzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCBuZXN0ZWQtc3RhcnQtYW5kLXN0
b3AtcHJvZmlsZXIuaHRtbCAobGluZSAxMToxKQotICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0
LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgc3RhcnRUZXN0IG5lc3RlZC1zdGFydC1h
bmQtc3RvcC1wcm9maWxlci5odG1sIChsaW5lIDEwOjE5KQorICAgICAgZW5kVGVzdCBwcm9maWxl
ci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiBQcm9maWxlIHRpdGxlOiBTdGFy
dCB0aGUgcHJvZmlsZXIgdGhlIHNlY29uZCB0aW1lLgogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5l
IDA6MCkKLSAgIHN0YXJ0VGVzdCBuZXN0ZWQtc3RhcnQtYW5kLXN0b3AtcHJvZmlsZXIuaHRtbCAo
bGluZSAxMToxKQotICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAo
bGluZSAxOjIwKQorICAgc3RhcnRUZXN0IG5lc3RlZC1zdGFydC1hbmQtc3RvcC1wcm9maWxlci5o
dG1sIChsaW5lIDEwOjE5KQorICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNl
cy5qcyAobGluZSAxOjE3KQogICAgICAgICAgcHJvZmlsZUVuZCAobm8gZmlsZSkgKGxpbmUgMDow
KQotICAgICAgICAgcHJpbnRQcm9maWxlc0RhdGFXaXRob3V0VGltZSBwcm9maWxlci10ZXN0LUpT
LXJlc291cmNlcy5qcyAobGluZSA2MzoxKQorICAgICAgICAgcHJpbnRQcm9maWxlc0RhdGFXaXRo
b3V0VGltZSBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA2MjozOCkKICAgICAg
ICAgICAgIGNyZWF0ZUVsZW1lbnQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIGNy
ZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICBhcHBlbmRDaGls
ZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgICAgICAgcHJpbnRQcm9maWxlTm9kZVdpdGhv
dXRUaW1lIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDc4OjEpCisgICAgICAg
ICAgICBwcmludFByb2ZpbGVOb2RlV2l0aG91dFRpbWUgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJj
ZXMuanMgKGxpbmUgNzc6MzcpCiAgICAgICAgICAgICAgICByZXBsYWNlIChubyBmaWxlKSAobGlu
ZSAwOjApCiAgICAgICAgICAgICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDow
KQogICAgICAgICAgICAgICAgYXBwZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAg
ICAgICAgICAgIGNoaWxkcmVuIChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICAgICAgICAgICBw
cmludFByb2ZpbGVOb2RlV2l0aG91dFRpbWUgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMg
KGxpbmUgNzg6MSkKKyAgICAgICAgICAgICAgIHByaW50UHJvZmlsZU5vZGVXaXRob3V0VGltZSBw
cm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA3NzozNykKICAgICAgICAgICAgICAg
ICAgIHJlcGxhY2UgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgICAgIGNyZWF0
ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICAgICBhcHBlbmRD
aGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gKG5v
IGZpbGUpIChsaW5lIDA6MCkKLSAgICAgICAgICAgICAgICAgIHByaW50UHJvZmlsZU5vZGVXaXRo
b3V0VGltZSBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA3ODoxKQorICAgICAg
ICAgICAgICAgICAgcHJpbnRQcm9maWxlTm9kZVdpdGhvdXRUaW1lIHByb2ZpbGVyLXRlc3QtSlMt
cmVzb3VyY2VzLmpzIChsaW5lIDc3OjM3KQogICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZSAo
bm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUg
KG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZENoaWxkIChu
byBmaWxlKSAobGluZSAwOjApCkBAIC00MywyOSArNDMsMjkgQEAgVGhyZWFkXzEgKG5vIGZpbGUp
IChsaW5lIDA6MCkKIAogUHJvZmlsZSB0aXRsZTogU3RhcnQgdGhlIHByb2ZpbGVyIHRoZSB0aGly
ZCB0aW1lLgogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCBuZXN0
ZWQtc3RhcnQtYW5kLXN0b3AtcHJvZmlsZXIuaHRtbCAobGluZSAxMToxKQotICAgICAgZW5kVGVz
dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgc3RhcnRUZXN0
IG5lc3RlZC1zdGFydC1hbmQtc3RvcC1wcm9maWxlci5odG1sIChsaW5lIDEwOjE5KQorICAgICAg
ZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiBQcm9m
aWxlIHRpdGxlOiBTdGFydCB0aGUgcHJvZmlsZXIgdGhlIHNlY29uZCB0aW1lLgogVGhyZWFkXzEg
KG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCBuZXN0ZWQtc3RhcnQtYW5kLXN0b3At
cHJvZmlsZXIuaHRtbCAobGluZSAxMToxKQotICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpT
LXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgc3RhcnRUZXN0IG5lc3RlZC1zdGFydC1hbmQt
c3RvcC1wcm9maWxlci5odG1sIChsaW5lIDEwOjE5KQorICAgICAgZW5kVGVzdCBwcm9maWxlci10
ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogICAgICAgICAgcHJvZmlsZUVuZCAobm8g
ZmlsZSkgKGxpbmUgMDowKQotICAgICAgICAgcHJpbnRQcm9maWxlc0RhdGFXaXRob3V0VGltZSBw
cm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA2MzoxKQorICAgICAgICAgcHJpbnRQ
cm9maWxlc0RhdGFXaXRob3V0VGltZSBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGlu
ZSA2MjozOCkKICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQgKG5vIGZpbGUpIChsaW5lIDA6MCkK
ICAgICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAg
ICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgICAgICAgcHJpbnRQ
cm9maWxlTm9kZVdpdGhvdXRUaW1lIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5l
IDc4OjEpCisgICAgICAgICAgICBwcmludFByb2ZpbGVOb2RlV2l0aG91dFRpbWUgcHJvZmlsZXIt
dGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgNzc6MzcpCiAgICAgICAgICAgICAgICByZXBsYWNl
IChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICBjcmVhdGVUZXh0Tm9kZSAobm8g
ZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgYXBwZW5kQ2hpbGQgKG5vIGZpbGUpIChs
aW5lIDA6MCkKICAgICAgICAgICAgICAgIGNoaWxkcmVuIChubyBmaWxlKSAobGluZSAwOjApCi0g
ICAgICAgICAgICAgICBwcmludFByb2ZpbGVOb2RlV2l0aG91dFRpbWUgcHJvZmlsZXItdGVzdC1K
Uy1yZXNvdXJjZXMuanMgKGxpbmUgNzg6MSkKKyAgICAgICAgICAgICAgIHByaW50UHJvZmlsZU5v
ZGVXaXRob3V0VGltZSBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA3NzozNykK
ICAgICAgICAgICAgICAgICAgIHJlcGxhY2UgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAg
ICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAg
ICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAg
ICAgY2hpbGRyZW4gKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAgICAgICAgICAgICAgIHByaW50
UHJvZmlsZU5vZGVXaXRob3V0VGltZSBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGlu
ZSA3ODoxKQorICAgICAgICAgICAgICAgICAgcHJpbnRQcm9maWxlTm9kZVdpdGhvdXRUaW1lIHBy
b2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDc3OjM3KQogICAgICAgICAgICAgICAg
ICAgICAgcmVwbGFjZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgICAgICAg
Y3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgICAgICAg
IGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjApCkBAIC03NSw0OSArNzUsNDkgQEAgVGhy
ZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKIAogUHJvZmlsZSB0aXRsZTogU3RhcnQgdGhlIHBy
b2ZpbGVyIHRoZSBmaXJzdCB0aW1lLgogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAg
IHN0YXJ0VGVzdCBuZXN0ZWQtc3RhcnQtYW5kLXN0b3AtcHJvZmlsZXIuaHRtbCAobGluZSAxMTox
KQotICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIw
KQorICAgc3RhcnRUZXN0IG5lc3RlZC1zdGFydC1hbmQtc3RvcC1wcm9maWxlci5odG1sIChsaW5l
IDEwOjE5KQorICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGlu
ZSAxOjE3KQogICAgICAgICAgcHJvZmlsZUVuZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAg
ICAgcHJpbnRQcm9maWxlc0RhdGFXaXRob3V0VGltZSBwcm9maWxlci10ZXN0LUpTLXJlc291cmNl
cy5qcyAobGluZSA2MzoxKQorICAgICAgICAgcHJpbnRQcm9maWxlc0RhdGFXaXRob3V0VGltZSBw
cm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA2MjozOCkKICAgICAgICAgICAgIGNy
ZWF0ZUVsZW1lbnQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIGNyZWF0ZVRleHRO
b2RlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmls
ZSkgKGxpbmUgMDowKQotICAgICAgICAgICAgcHJpbnRQcm9maWxlTm9kZVdpdGhvdXRUaW1lIHBy
b2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDc4OjEpCisgICAgICAgICAgICBwcmlu
dFByb2ZpbGVOb2RlV2l0aG91dFRpbWUgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxp
bmUgNzc6MzcpCiAgICAgICAgICAgICAgICByZXBsYWNlIChubyBmaWxlKSAobGluZSAwOjApCiAg
ICAgICAgICAgICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAg
ICAgICAgICAgYXBwZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAg
IGNoaWxkcmVuIChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICAgICAgICAgICBwcmludFByb2Zp
bGVOb2RlV2l0aG91dFRpbWUgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgNzg6
MSkKKyAgICAgICAgICAgICAgIHByaW50UHJvZmlsZU5vZGVXaXRob3V0VGltZSBwcm9maWxlci10
ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA3NzozNykKICAgICAgICAgICAgICAgICAgIHJlcGxh
Y2UgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgICAgIGNyZWF0ZVRleHROb2Rl
IChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICAgICBhcHBlbmRDaGlsZCAobm8g
ZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gKG5vIGZpbGUpIChs
aW5lIDA6MCkKLSAgICAgICAgICAgICAgICAgIHByaW50UHJvZmlsZU5vZGVXaXRob3V0VGltZSBw
cm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA3ODoxKQorICAgICAgICAgICAgICAg
ICAgcHJpbnRQcm9maWxlTm9kZVdpdGhvdXRUaW1lIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2Vz
LmpzIChsaW5lIDc3OjM3KQogICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZSAobm8gZmlsZSkg
KGxpbmUgMDowKQogICAgICAgICAgICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUp
IChsaW5lIDA6MCkKICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAo
bGluZSAwOjApCiAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiAobm8gZmlsZSkgKGxpbmUg
MDowKQotICAgICAgICAgICAgICAgICAgICAgcHJpbnRQcm9maWxlTm9kZVdpdGhvdXRUaW1lIHBy
b2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDc4OjEpCisgICAgICAgICAgICAgICAg
ICAgICBwcmludFByb2ZpbGVOb2RlV2l0aG91dFRpbWUgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJj
ZXMuanMgKGxpbmUgNzc6MzcpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlIChubyBm
aWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVUZXh0Tm9kZSAo
bm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kQ2hpbGQg
KG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuIChu
byBmaWxlKSAobGluZSAwOjApCi0gICAgICAgICAgICAgICAgICAgICAgICBwcmludFByb2ZpbGVO
b2RlV2l0aG91dFRpbWUgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgNzg6MSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50UHJvZmlsZU5vZGVXaXRob3V0VGltZSBwcm9m
aWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA3NzozNykKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlcGxhY2UgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHByaW50UHJvZmlsZU5vZGVXaXRob3V0VGltZSBwcm9maWxl
ci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA3ODoxKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHJpbnRQcm9maWxlTm9kZVdpdGhvdXRUaW1lIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3Vy
Y2VzLmpzIChsaW5lIDc3OjM3KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFj
ZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jl
YXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjaGlsZHJlbiAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHJpbnRQcm9maWxlTm9kZVdpdGhvdXRUaW1lIHByb2ZpbGVyLXRl
c3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDc4OjEpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwcmludFByb2ZpbGVOb2RlV2l0aG91dFRpbWUgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJj
ZXMuanMgKGxpbmUgNzc6MzcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBs
YWNlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYXBwZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuIChubyBmaWxlKSAobGluZSAwOjApCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludFByb2ZpbGVOb2RlV2l0aG91dFRp
bWUgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgNzg6MSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHByaW50UHJvZmlsZU5vZGVXaXRob3V0VGltZSBwcm9maWxl
ci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA3NzozNykKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlcGxhY2UgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAw
OjApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRDaGlsZCAobm8g
ZmlsZSkgKGxpbmUgMDowKQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9vbmUtZXhl
Y3V0aW9uLWNvbnRleHQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvcHJvZmlsZXIvb25lLWV4ZWN1dGlvbi1jb250ZXh0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MTg2ODA4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9vbmUtZXhlY3V0aW9uLWNvbnRl
eHQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDcgKzQsNyBAQCBUbyBydW4gdGhp
cyB0ZXN0IG1hbnVhbGx5LCBsb2FkIGl0IGluIHRoCiAKIFByb2ZpbGUgdGl0bGU6IE9uZSBFeGVj
dXRpb24gQ29udGV4dAogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVz
dCBvbmUtZXhlY3V0aW9uLWNvbnRleHQuaHRtbCAobGluZSAxMToxKQotICAgICAgZW5kVGVzdCBw
cm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgc3RhcnRUZXN0IG9u
ZS1leGVjdXRpb24tY29udGV4dC5odG1sIChsaW5lIDEwOjE5KQorICAgICAgZW5kVGVzdCBwcm9m
aWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiAKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvcHJvZmlsZXIvcHJvZmlsZS1jYWxscy1pbi1pbmNsdWRlZC1maWxlLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3Byb2ZpbGUtY2Fs
bHMtaW4taW5jbHVkZWQtZmlsZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4NjgwOCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvcHJvZmlsZS1jYWxscy1pbi1pbmNsdWRlZC1maWxlLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCw3ICs0LDcgQEAgVG8gcnVuIHRoaXMgdGVz
dCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiBQcm9maWxlIGNhbGwg
aW4gaW5jbHVkZWQgZmlsZQogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0
UHJvZmlsZSBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA0MzoxKQotICAgZW5k
VGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgc3RhcnRQ
cm9maWxlIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDQyOjIyKQorICAgZW5k
VGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiAKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvcHJvZmlsZS13aXRoLW5vLXRpdGxlLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3Byb2ZpbGUtd2l0
aC1uby10aXRsZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4NjgwOCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvcHJvZmlsZXIvcHJvZmlsZS13aXRoLW5vLXRpdGxlLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtNCw3ICs0LDcgQEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgbG9hZCBp
dCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiAKIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjAp
Ci0gICBzdGFydFRlc3QgcHJvZmlsZS13aXRoLW5vLXRpdGxlLmh0bWwgKGxpbmUgMTE6MSkKLSAg
ICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAg
IHN0YXJ0VGVzdCBwcm9maWxlLXdpdGgtbm8tdGl0bGUuaHRtbCAobGluZSAxMDoxOSkKKyAgICAg
IGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToxNykKIAogCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3Byb2ZpbGluZy1mcm9tLWEtbmVzdGVkLWxv
Y2F0aW9uLWJ1dC1zdG9wLXByb2ZpbGluZy1vdXRzaWRlLXRoZS1uZXN0aW5nLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3Byb2ZpbGluZy1mcm9t
LWEtbmVzdGVkLWxvY2F0aW9uLWJ1dC1zdG9wLXByb2ZpbGluZy1vdXRzaWRlLXRoZS1uZXN0aW5n
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2ODA4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9m
aWxlci9wcm9maWxpbmctZnJvbS1hLW5lc3RlZC1sb2NhdGlvbi1idXQtc3RvcC1wcm9maWxpbmct
b3V0c2lkZS10aGUtbmVzdGluZy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsNyAr
NCw3IEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxvYWQgaXQgaW4gdGgKIAogUHJvZmls
ZSB0aXRsZTogUHJvZmlsaW5nIEZyb20gQSBOZXN0ZWQgTG9jYXRpb24gQnV0IFN0b3AgUHJvZmls
aW5nIE91dHNpZGUgVGhlIE5lc3RpbmcKIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0g
ICBmdW5jdGlvbldpY2hTdGFydHNUaGVQcm9maWxlciBwcm9maWxpbmctZnJvbS1hLW5lc3RlZC1s
b2NhdGlvbi1idXQtc3RvcC1wcm9maWxpbmctb3V0c2lkZS10aGUtbmVzdGluZy5odG1sIChsaW5l
IDE3OjEpCi0gICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6
MjApCisgICBmdW5jdGlvbldpY2hTdGFydHNUaGVQcm9maWxlciBwcm9maWxpbmctZnJvbS1hLW5l
c3RlZC1sb2NhdGlvbi1idXQtc3RvcC1wcm9maWxpbmctb3V0c2lkZS10aGUtbmVzdGluZy5odG1s
IChsaW5lIDE2OjM5KQorICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAo
bGluZSAxOjE3KQogCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvcHJvZmlsaW5n
LWZyb20tYS1uZXN0ZWQtbG9jYXRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvcHJvZmlsZXIvcHJvZmlsaW5nLWZyb20tYS1uZXN0ZWQtbG9jYXRpb24tZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAxODY4MDgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVy
L3Byb2ZpbGluZy1mcm9tLWEtbmVzdGVkLWxvY2F0aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtNCw3ICs0LDcgQEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgbG9hZCBpdCBp
biB0aAogCiBQcm9maWxlIHRpdGxlOiBQcm9maWxpbmcgRnJvbSBBIE5lc3RlZCBMb2NhdGlvbgog
VGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIGZ1bmN0aW9uV2ljaFN0YXJ0c0FuZFN0
b3BzVGhlUHJvZmlsZXIgcHJvZmlsaW5nLWZyb20tYS1uZXN0ZWQtbG9jYXRpb24uaHRtbCAobGlu
ZSAxNjoxKQotICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGlu
ZSAxOjIwKQorICAgZnVuY3Rpb25XaWNoU3RhcnRzQW5kU3RvcHNUaGVQcm9maWxlciBwcm9maWxp
bmctZnJvbS1hLW5lc3RlZC1sb2NhdGlvbi5odG1sIChsaW5lIDE1OjQ3KQorICAgICAgZW5kVGVz
dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiAKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvc2ltcGxlLWV2ZW50LWNhbGwtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvc2ltcGxlLWV2ZW50LWNhbGwt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY4MDgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2Zp
bGVyL3NpbXBsZS1ldmVudC1jYWxsLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCw3
ICs0LDcgQEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9m
aWxlIHRpdGxlOiBBIHNpbXBsZSBwcm9maWxlIHRlc3Qgd2hlcmUgYW4gZXZlbnQgaGFwcGVucy4K
IFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBzdGFydFRlc3Qgc2ltcGxlLWV2ZW50
LWNhbGwuaHRtbCAobGluZSAxMToxKQotICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJl
c291cmNlcy5qcyAobGluZSAxOjIwKQorICAgc3RhcnRUZXN0IHNpbXBsZS1ldmVudC1jYWxsLmh0
bWwgKGxpbmUgMTA6MTkpCisgICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2Vz
LmpzIChsaW5lIDE6MTcpCiAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9zaW1w
bGUtbm8tbGV2ZWwtY2hhbmdlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L3Byb2ZpbGVyL3NpbXBsZS1uby1sZXZlbC1jaGFuZ2UtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAxODY4MDgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3NpbXBsZS1uby1sZXZl
bC1jaGFuZ2UtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDcgKzQsNyBAQCBUbyBy
dW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBsb2FkIGl0IGluIHRoCiAKIFByb2ZpbGUgdGl0bGU6IEEg
c2ltcGxlIHByb2ZpbGUgdGVzdCB3aGVyZSBubyBzY29wZSBjaGFnbmVzCiBUaHJlYWRfMSAobm8g
ZmlsZSkgKGxpbmUgMDowKQotICAgZnVuY3Rpb25XaWNoU3RhcnRzQW5kU3RvcHNUaGVQcm9maWxl
ciBzaW1wbGUtbm8tbGV2ZWwtY2hhbmdlLmh0bWwgKGxpbmUgMTY6MSkKKyAgIGZ1bmN0aW9uV2lj
aFN0YXJ0c0FuZFN0b3BzVGhlUHJvZmlsZXIgc2ltcGxlLW5vLWxldmVsLWNoYW5nZS5odG1sIChs
aW5lIDE1OjQ3KQogICAgICAgZ2V0RWxlbWVudEJ5SWQgKG5vIGZpbGUpIChsaW5lIDA6MCkKIAog
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3N0YXJ0LWFuZC1zdG9wLXByb2ZpbGVy
LW11bHRpcGxlLXRpbWVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L3Byb2ZpbGVyL3N0YXJ0LWFuZC1zdG9wLXByb2ZpbGVyLW11bHRpcGxlLXRpbWVzLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMTg2ODA4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9z
dGFydC1hbmQtc3RvcC1wcm9maWxlci1tdWx0aXBsZS10aW1lcy1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTQsNzAgKzQsNzAgQEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgbG9h
ZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiBTdGFydCB0aGUgcHJvZmlsZXIgdGhlIGZpcnN0
IHRpbWUuCiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgc3RhcnRUZXN0IHN0YXJ0
LWFuZC1zdG9wLXByb2ZpbGVyLW11bHRpcGxlLXRpbWVzLmh0bWwgKGxpbmUgMTE6MSkKLSAgICAg
IGFub255bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI5
OjM3KQotICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5q
cyAobGluZSAxNzoyNikKKyAgIHN0YXJ0VGVzdCBzdGFydC1hbmQtc3RvcC1wcm9maWxlci1tdWx0
aXBsZS10aW1lcy5odG1sIChsaW5lIDEwOjE5KQorICAgICAgYW5vbnltb3VzRnVuY3Rpb24gcHJv
ZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMjk6MzQpCisgICAgICAgICBpbnNlcnRO
ZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjIzKQogICAgICAg
ICAgICAgY3JlYXRlRWxlbWVudCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgY3Jl
YXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIGFwcGVuZENoaWxk
IChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmls
ZSkgKGxpbmUgMDowKQotICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5q
cyAobGluZSAxOjIwKQorICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5q
cyAobGluZSAxOjE3KQogCiAKIFByb2ZpbGUgdGl0bGU6IFN0YXJ0IHRoZSBwcm9maWxlciB0aGUg
Zmlyc3QgdGltZS4KIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBzdGFydFRlc3Qg
c3RhcnQtYW5kLXN0b3AtcHJvZmlsZXItbXVsdGlwbGUtdGltZXMuaHRtbCAobGluZSAxMToxKQot
ICAgICAgYW5vbnltb3VzRnVuY3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxp
bmUgMjk6MzcpCi0gICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3Vy
Y2VzLmpzIChsaW5lIDE3OjI2KQorICAgc3RhcnRUZXN0IHN0YXJ0LWFuZC1zdG9wLXByb2ZpbGVy
LW11bHRpcGxlLXRpbWVzLmh0bWwgKGxpbmUgMTA6MTkpCisgICAgICBhbm9ueW1vdXNGdW5jdGlv
biBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAyOTozNCkKKyAgICAgICAgIGlu
c2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjMpCiAg
ICAgICAgICAgICBjcmVhdGVFbGVtZW50IChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAg
ICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgYXBwZW5k
Q2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIGdldEVsZW1lbnRCeUlkIChu
byBmaWxlKSAobGluZSAwOjApCi0gICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3Vy
Y2VzLmpzIChsaW5lIDE6MjApCisgICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3Vy
Y2VzLmpzIChsaW5lIDE6MTcpCiAKIFByb2ZpbGUgdGl0bGU6IFN0YXJ0IHRoZSBwcm9maWxlciB0
aGUgc2Vjb25kIHRpbWUuCiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgc3RhcnRU
ZXN0IHN0YXJ0LWFuZC1zdG9wLXByb2ZpbGVyLW11bHRpcGxlLXRpbWVzLmh0bWwgKGxpbmUgMTE6
MSkKLSAgICAgIGFub255bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpz
IChsaW5lIDI5OjM3KQotICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJl
c291cmNlcy5qcyAobGluZSAxNzoyNikKKyAgIHN0YXJ0VGVzdCBzdGFydC1hbmQtc3RvcC1wcm9m
aWxlci1tdWx0aXBsZS10aW1lcy5odG1sIChsaW5lIDEwOjE5KQorICAgICAgYW5vbnltb3VzRnVu
Y3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMjk6MzQpCisgICAgICAg
ICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjIz
KQogICAgICAgICAgICAgY3JlYXRlRWxlbWVudCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAg
ICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIGFw
cGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICBnZXRFbGVtZW50QnlJ
ZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJl
c291cmNlcy5qcyAobGluZSAxOjIwKQorICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJl
c291cmNlcy5qcyAobGluZSAxOjE3KQogCiAKIFByb2ZpbGUgdGl0bGU6IFN0YXJ0IHRoZSBwcm9m
aWxlciB0aGUgZmlyc3QgdGltZS4KIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBz
dGFydFRlc3Qgc3RhcnQtYW5kLXN0b3AtcHJvZmlsZXItbXVsdGlwbGUtdGltZXMuaHRtbCAobGlu
ZSAxMToxKQotICAgICAgYW5vbnltb3VzRnVuY3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJj
ZXMuanMgKGxpbmUgMjk6MzcpCi0gICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3Qt
SlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjI2KQorICAgc3RhcnRUZXN0IHN0YXJ0LWFuZC1zdG9w
LXByb2ZpbGVyLW11bHRpcGxlLXRpbWVzLmh0bWwgKGxpbmUgMTA6MTkpCisgICAgICBhbm9ueW1v
dXNGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAyOTozNCkKKyAg
ICAgICAgIGluc2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUg
MTc6MjMpCiAgICAgICAgICAgICBjcmVhdGVFbGVtZW50IChubyBmaWxlKSAobGluZSAwOjApCiAg
ICAgICAgICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAg
ICAgYXBwZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIGdldEVsZW1l
bnRCeUlkIChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3Qt
SlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MjApCisgICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3Qt
SlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MTcpCiAKIFByb2ZpbGUgdGl0bGU6IFN0YXJ0IHRoZSBw
cm9maWxlciB0aGUgc2Vjb25kIHRpbWUuCiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDowKQot
ICAgc3RhcnRUZXN0IHN0YXJ0LWFuZC1zdG9wLXByb2ZpbGVyLW11bHRpcGxlLXRpbWVzLmh0bWwg
KGxpbmUgMTE6MSkKLSAgICAgIGFub255bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVz
b3VyY2VzLmpzIChsaW5lIDI5OjM3KQotICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10
ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyNikKKyAgIHN0YXJ0VGVzdCBzdGFydC1hbmQt
c3RvcC1wcm9maWxlci1tdWx0aXBsZS10aW1lcy5odG1sIChsaW5lIDEwOjE5KQorICAgICAgYW5v
bnltb3VzRnVuY3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMjk6MzQp
CisgICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChs
aW5lIDE3OjIzKQogICAgICAgICAgICAgY3JlYXRlRWxlbWVudCAobm8gZmlsZSkgKGxpbmUgMDow
KQogICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAg
ICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICBnZXRF
bGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgZW5kVGVzdCBwcm9maWxlci10
ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgICAgZW5kVGVzdCBwcm9maWxlci10
ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiBQcm9maWxlIHRpdGxlOiBTdGFydCB0
aGUgcHJvZmlsZXIgdGhlIHRoaXJkIHRpbWUuCiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDow
KQotICAgc3RhcnRUZXN0IHN0YXJ0LWFuZC1zdG9wLXByb2ZpbGVyLW11bHRpcGxlLXRpbWVzLmh0
bWwgKGxpbmUgMTE6MSkKLSAgICAgIGFub255bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMt
cmVzb3VyY2VzLmpzIChsaW5lIDI5OjM3KQotICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxl
ci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyNikKKyAgIHN0YXJ0VGVzdCBzdGFydC1h
bmQtc3RvcC1wcm9maWxlci1tdWx0aXBsZS10aW1lcy5odG1sIChsaW5lIDEwOjE5KQorICAgICAg
YW5vbnltb3VzRnVuY3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMjk6
MzQpCisgICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpz
IChsaW5lIDE3OjIzKQogICAgICAgICAgICAgY3JlYXRlRWxlbWVudCAobm8gZmlsZSkgKGxpbmUg
MDowKQogICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAg
ICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICBn
ZXRFbGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgZW5kVGVzdCBwcm9maWxl
ci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgICAgZW5kVGVzdCBwcm9maWxl
ci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiAKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvcHJvZmlsZXIvc3RhcnQtYW5kLXN0b3AtcHJvZmlsaW5nLWluLXRoZS1zYW1lLWZ1bmN0
aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVy
L3N0YXJ0LWFuZC1zdG9wLXByb2ZpbGluZy1pbi10aGUtc2FtZS1mdW5jdGlvbi1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDE4NjgwOCkKKysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvc3RhcnQt
YW5kLXN0b3AtcHJvZmlsaW5nLWluLXRoZS1zYW1lLWZ1bmN0aW9uLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtNCw3ICs0LDcgQEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgbG9h
ZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiBQcm9maWxpbmcgRnJvbSBBIE5lc3RlZCBMb2Nh
dGlvbgogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCBzdGFydC1h
bmQtc3RvcC1wcm9maWxpbmctaW4tdGhlLXNhbWUtZnVuY3Rpb24uaHRtbCAobGluZSAxMToxKQot
ICAgICAgZnVuY3Rpb25XaWNoU3RvcHNUaGVQcm9maWxlciBzdGFydC1hbmQtc3RvcC1wcm9maWxp
bmctaW4tdGhlLXNhbWUtZnVuY3Rpb24uaHRtbCAobGluZSAxODoxKQorICAgc3RhcnRUZXN0IHN0
YXJ0LWFuZC1zdG9wLXByb2ZpbGluZy1pbi10aGUtc2FtZS1mdW5jdGlvbi5odG1sIChsaW5lIDEw
OjE5KQorICAgICAgZnVuY3Rpb25XaWNoU3RvcHNUaGVQcm9maWxlciBzdGFydC1hbmQtc3RvcC1w
cm9maWxpbmctaW4tdGhlLXNhbWUtZnVuY3Rpb24uaHRtbCAobGluZSAxNzozOCkKIAogCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3N0b3AtcHJvZmlsaW5nLWFmdGVyLXNldFRpbWVv
dXQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIv
c3RvcC1wcm9maWxpbmctYWZ0ZXItc2V0VGltZW91dC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4
NjgwOCkKKysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvc3RvcC1wcm9maWxpbmctYWZ0ZXIt
c2V0VGltZW91dC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsMTAgKzQsMTAgQEAg
VG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxl
OiBTdG9wIHByb2ZpbGluZyBmcm9tIGEgdGltZW91dAogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5l
IDA6MCkKLSAgIG9ubG9hZCBzdG9wLXByb2ZpbGluZy1hZnRlci1zZXRUaW1lb3V0Lmh0bWwgKGxp
bmUgMjE6NTIpCi0gICAgICBzdGFydFRlc3Qgc3RvcC1wcm9maWxpbmctYWZ0ZXItc2V0VGltZW91
dC5odG1sIChsaW5lIDEzOjEpCisgICBvbmxvYWQgc3RvcC1wcm9maWxpbmctYWZ0ZXItc2V0VGlt
ZW91dC5odG1sIChsaW5lIDIxOjQ0KQorICAgICAgc3RhcnRUZXN0IHN0b3AtcHJvZmlsaW5nLWFm
dGVyLXNldFRpbWVvdXQuaHRtbCAobGluZSAxMjoxOSkKICAgICAgICAgIHNldFRpbWVvdXQgKG5v
IGZpbGUpIChsaW5lIDA6MCkKICAgIChwcm9ncmFtKSBzdG9wLXByb2ZpbGluZy1hZnRlci1zZXRU
aW1lb3V0Lmh0bWwgKGxpbmUgMToxKQotICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJl
c291cmNlcy5qcyAobGluZSAxOjIwKQorICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJl
c291cmNlcy5qcyAobGluZSAxOjE3KQogCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcHJvZmls
ZXIvc3RvcC10aGVuLWZ1bmN0aW9uLWNhbGwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvc3RvcC10aGVuLWZ1bmN0aW9uLWNhbGwtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAxODY4MDgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3N0b3At
dGhlbi1mdW5jdGlvbi1jYWxsLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNSw2ICs1
LDYgQEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogUHJvZmlsZSB0
aXRsZTogVGVzdAogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgIChwcm9ncmFtKSAo
bm8gZmlsZSkgKGxpbmUgMToxNikKLSAgICAgIHRlc3Qgc3RvcC10aGVuLWZ1bmN0aW9uLWNhbGwu
aHRtbCAobGluZSAxMToyMCkKKyAgICAgIHRlc3Qgc3RvcC10aGVuLWZ1bmN0aW9uLWNhbGwuaHRt
bCAobGluZSAxMToxNCkKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3R3by1l
eGVjdXRpb24tY29udGV4dHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvcHJvZmlsZXIvdHdvLWV4ZWN1dGlvbi1jb250ZXh0cy1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDE4NjgwOCkKKysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvdHdvLWV4ZWN1dGlvbi1j
b250ZXh0cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsOCArNCw4IEBAIFRvIHJ1
biB0aGlzIHRlc3QgbWFudWFsbHksIGxvYWQgaXQgaW4gdGgKIAogUHJvZmlsZSB0aXRsZTogVHdv
IEV4ZWN1dGlvbiBDb250ZXh0cwogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0
YXJ0VGVzdCB0d28tZXhlY3V0aW9uLWNvbnRleHRzLmh0bWwgKGxpbmUgMTE6MSkKLSAgICAgIGlu
dGVybWVkaWFyeUZ1bmN0aW9uIHR3by1leGVjdXRpb24tY29udGV4dHMuaHRtbCAobGluZSAxODox
KQotICAgICAgICAgdGVzdEVuZCB0d28tZXhlY3V0aW9uLWNvbnRleHRzLmh0bWwgKGxpbmUgMzM6
MjApCisgICBzdGFydFRlc3QgdHdvLWV4ZWN1dGlvbi1jb250ZXh0cy5odG1sIChsaW5lIDEwOjE5
KQorICAgICAgaW50ZXJtZWRpYXJ5RnVuY3Rpb24gdHdvLWV4ZWN1dGlvbi1jb250ZXh0cy5odG1s
IChsaW5lIDE3OjMwKQorICAgICAgICAgdGVzdEVuZCB0d28tZXhlY3V0aW9uLWNvbnRleHRzLmh0
bWwgKGxpbmUgMzM6MTcpCiAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci91c2Vy
LWRlZmluZWQtZnVuY3Rpb24tY2FsbHMtYnVpbHQtaW4tZnVuY3Rpb25zLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3VzZXItZGVmaW5lZC1mdW5j
dGlvbi1jYWxscy1idWlsdC1pbi1mdW5jdGlvbnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY4
MDgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3VzZXItZGVmaW5lZC1mdW5jdGlvbi1j
YWxscy1idWlsdC1pbi1mdW5jdGlvbnMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02
LDExICs2LDExIEBAIFRoaXMgaXMgaW5zZXJ0ZWQgVGV4dAogCiBQcm9maWxlIHRpdGxlOiBVc2Vy
IGRlZmluZWQgZnVuY3Rpb24gY2FsbGVzIGJ1aWx0LWluIGZ1bmN0aW9ucwogVGhyZWFkXzEgKG5v
IGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCB1c2VyLWRlZmluZWQtZnVuY3Rpb24tY2Fs
bHMtYnVpbHQtaW4tZnVuY3Rpb25zLmh0bWwgKGxpbmUgMTE6MSkKKyAgIHN0YXJ0VGVzdCB1c2Vy
LWRlZmluZWQtZnVuY3Rpb24tY2FsbHMtYnVpbHQtaW4tZnVuY3Rpb25zLmh0bWwgKGxpbmUgMTA6
MTkpCiAgICAgICBjcmVhdGVFbGVtZW50IChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICBjcmVh
dGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgYXBwZW5kQ2hpbGQgKG5vIGZp
bGUpIChsaW5lIDA6MCkKICAgICAgIGdldEVsZW1lbnRCeUlkIChubyBmaWxlKSAobGluZSAwOjAp
Ci0gICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MjAp
CisgICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MTcp
CiAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci93aW5kb3ctZG90LWV2YWwtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvd2luZG93
LWRvdC1ldmFsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2ODA4KQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9wcm9maWxlci93aW5kb3ctZG90LWV2YWwtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC00LDEzICs0LDEzIEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxvYWQgaXQgaW4g
dGgKIAogUHJvZmlsZSB0aXRsZTogQ2FsbCB3aW5kb3cuZXZhbCgpCiBUaHJlYWRfMSAobm8gZmls
ZSkgKGxpbmUgMDowKQotICAgc3RhcnRUZXN0IHdpbmRvdy1kb3QtZXZhbC5odG1sIChsaW5lIDEx
OjEpCi0gICAgICBldmFsRnVuY3Rpb24gKG5vIGZpbGUpIChsaW5lIDE6MjUpCi0gICAgICAgICBp
bnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjI2KQor
ICAgc3RhcnRUZXN0IHdpbmRvdy1kb3QtZXZhbC5odG1sIChsaW5lIDEwOjE5KQorICAgICAgZXZh
bEZ1bmN0aW9uIChubyBmaWxlKSAobGluZSAxOjIyKQorICAgICAgICAgaW5zZXJ0TmV3VGV4dCBw
cm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyMykKICAgICAgICAgICAgIGNy
ZWF0ZUVsZW1lbnQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIGNyZWF0ZVRleHRO
b2RlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmls
ZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgZ2V0RWxlbWVudEJ5SWQgKG5vIGZpbGUpIChsaW5l
IDA6MCkKLSAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUg
MToyMCkKKyAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUg
MToxNykKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9kb20vc2NyaXB0LXN0YXJ0LWVuZC1sb2Nh
dGlvbnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL2RvbS9zY3Jp
cHQtc3RhcnQtZW5kLWxvY2F0aW9ucy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4NjgwOCkKKysr
IExheW91dFRlc3RzL2pzL2RvbS9zY3JpcHQtc3RhcnQtZW5kLWxvY2F0aW9ucy1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTUsMjczICs1LDI3MyBAQCBwcm9ncmFtIHsgMjM6OSAtIDIz
OjUwIH0KIHByb2dyYW0geyAyMzo2OCAtIDIzOjEwOSB9CiBwcm9ncmFtIHsgMjU6OSAtIDI2OjEg
fQogcHJvZ3JhbSB7IDI3OjEzIC0gMjg6MSB9Ci1mdW5jdGlvbiAiaGYxIiB7IDMwOjI0IC0gMzA6
MzggfQotZnVuY3Rpb24gImhmMiIgeyAzMToyOCAtIDMxOjQyIH0KLWZ1bmN0aW9uICJoZjMiIHsg
MzI6MzIgLSAzMjo0NiB9Ci1mdW5jdGlvbiAiaGY0IiB7IDM0OjI0IC0gMzY6OSB9Ci1mdW5jdGlv
biAiaGY1IiB7IDM3OjI4IC0gMzk6OSB9Ci1mdW5jdGlvbiAiaGY2IiB7IDQwOjMyIC0gNDI6OSB9
Ci1mdW5jdGlvbiAiaGY3IiB7IDQ1OjE2IC0gNDc6NSB9Ci1mdW5jdGlvbiAiaGY4IiB7IDQ5OjM1
IC0gNDk6NDUgfQotZnVuY3Rpb24gImhmOSIgeyA0OTo5NyAtIDQ5OjEwNyB9CitmdW5jdGlvbiAi
aGYxIiB7IDMwOjIxIC0gMzA6MzggfQorZnVuY3Rpb24gImhmMiIgeyAzMToyNSAtIDMxOjQyIH0K
K2Z1bmN0aW9uICJoZjMiIHsgMzI6MjkgLSAzMjo0NiB9CitmdW5jdGlvbiAiaGY0IiB7IDM0OjIx
IC0gMzY6OSB9CitmdW5jdGlvbiAiaGY1IiB7IDM3OjI1IC0gMzk6OSB9CitmdW5jdGlvbiAiaGY2
IiB7IDQwOjI5IC0gNDI6OSB9CitmdW5jdGlvbiAiaGY3IiB7IDQ1OjEzIC0gNDc6NSB9CitmdW5j
dGlvbiAiaGY4IiB7IDQ5OjMyIC0gNDk6NDUgfQorZnVuY3Rpb24gImhmOSIgeyA0OTo5NCAtIDQ5
OjEwNyB9CiAKIHByb2dyYW0geyAxOjEgLSA0NzQ6MSB9CiAKICAgT24gZmlyc3QgbGluZToKLWZ1
bmN0aW9uICJmMCIgeyAxOjExNSAtIDE6MjY2IH0KLWZ1bmN0aW9uICJmMGEiIHsgMToxNDIgLSAx
OjI1NyB9Ci1mdW5jdGlvbiAiZjBiIiB7IDE6MTcwIC0gMToyNDggfQotZXZhbCB7IDE6MSAtIDE6
NTYgfQotZnVuY3Rpb24gIngwIiB7IDE6Mjk4IC0gMTo0NzYgfQotZnVuY3Rpb24gIngwYSIgeyAx
OjMzMCAtIDE6NDY2IH0KLWZ1bmN0aW9uICJ4MGIiIHsgMTozNjQgLSAxOjQ1NiB9CitmdW5jdGlv
biAiZjAiIHsgMToxMTIgLSAxOjI2NiB9CitmdW5jdGlvbiAiZjBhIiB7IDE6MTM5IC0gMToyNTcg
fQorZnVuY3Rpb24gImYwYiIgeyAxOjE2NyAtIDE6MjQ4IH0KK2V2YWwgeyAxOjEgLSAxOjU2IH0K
K2Z1bmN0aW9uICJ4MCIgeyAxOjI5MiAtIDE6NDc2IH0KK2Z1bmN0aW9uICJ4MGEiIHsgMTozMjcg
LSAxOjQ2NiB9CitmdW5jdGlvbiAieDBiIiB7IDE6MzYxIC0gMTo0NTYgfQogZXZhbCB7IDE6MSAt
IDE6NTYgfQogCiAgIEZ1bmN0aW9ucyBEZWNsYXJhdGlvbnMgaW4gYSBmdW5jdGlvbjoKLWZ1bmN0
aW9uICJmMSIgeyA5OjIyIC0gOToxMTMgfQorZnVuY3Rpb24gImYxIiB7IDk6MTYgLSA5OjExMyB9
CiBldmFsIHsgMToxIC0gMTo1NiB9Ci1mdW5jdGlvbiAiZjIiIHsgMTI6MjIgLSAxNjo1IH0KLWZ1
bmN0aW9uICJmMmEiIHsgMTQ6MjQgLSAxNDoxMTYgfQorZnVuY3Rpb24gImYyIiB7IDEyOjE2IC0g
MTY6NSB9CitmdW5jdGlvbiAiZjJhIiB7IDE0OjIxIC0gMTQ6MTE2IH0KIGV2YWwgeyAxOjEgLSAx
OjU2IH0KLWZ1bmN0aW9uICJmMyIgeyAxOToyMiAtIDMxOjUgfQotZnVuY3Rpb24gImYzYSIgeyAy
MToyNCAtIDI5OjkgfQotZnVuY3Rpb24gImYzYiIgeyAyMzoyOCAtIDI3OjEzIH0KLWV2YWwgeyAx
OjEgLSAxOjU2IH0KLWZ1bmN0aW9uICJmNCIgeyAzNDoyMiAtIDM0OjcxIH0KLWZ1bmN0aW9uICJm
NGEiIHsgMzQ6NDkgLSAzNDo1MCB9Ci1mdW5jdGlvbiAiZjUiIHsgMzY6MjIgLSAzNjoxNTEgfQot
ZnVuY3Rpb24gImY1YSIgeyAzNjo0OSAtIDM2OjE0MSB9Ci1ldmFsIHsgMToxIC0gMTo1NiB9Ci1m
dW5jdGlvbiAiZjYiIHsgMzg6MjIgLSAzODoxODkgfQotZnVuY3Rpb24gImY2YSIgeyAzODo0OSAt
IDM4OjE3OSB9Ci1mdW5jdGlvbiAiZjZiIiB7IDM4Ojc3IC0gMzg6MTY5IH0KK2Z1bmN0aW9uICJm
MyIgeyAxOToxNiAtIDMxOjUgfQorZnVuY3Rpb24gImYzYSIgeyAyMToyMSAtIDI5OjkgfQorZnVu
Y3Rpb24gImYzYiIgeyAyMzoyNSAtIDI3OjEzIH0KK2V2YWwgeyAxOjEgLSAxOjU2IH0KK2Z1bmN0
aW9uICJmNCIgeyAzNDoxNiAtIDM0OjcxIH0KK2Z1bmN0aW9uICJmNGEiIHsgMzQ6NDYgLSAzNDo1
MCB9CitmdW5jdGlvbiAiZjUiIHsgMzY6MTYgLSAzNjoxNTEgfQorZnVuY3Rpb24gImY1YSIgeyAz
Njo0NiAtIDM2OjE0MSB9CitldmFsIHsgMToxIC0gMTo1NiB9CitmdW5jdGlvbiAiZjYiIHsgMzg6
MTYgLSAzODoxODkgfQorZnVuY3Rpb24gImY2YSIgeyAzODo0NiAtIDM4OjE3OSB9CitmdW5jdGlv
biAiZjZiIiB7IDM4Ojc0IC0gMzg6MTY5IH0KIGV2YWwgeyAxOjEgLSAxOjU2IH0KIAogICBJbmRl
bnRlZCBGdW5jdGlvbnMgRGVjbGFyYXRpb25zIGluIGEgZnVuY3Rpb246Ci1mdW5jdGlvbiAiZmkx
IiB7IDQzOjI3IC0gNDM6MTE5IH0KK2Z1bmN0aW9uICJmaTEiIHsgNDM6MjEgLSA0MzoxMTkgfQog
ZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gImZpMiIgeyA0NjoyNyAtIDUwOjkgfQotZnVu
Y3Rpb24gImZpMmEiIHsgNDg6MjkgLSA0ODoxMjIgfQorZnVuY3Rpb24gImZpMiIgeyA0NjoyMSAt
IDUwOjkgfQorZnVuY3Rpb24gImZpMmEiIHsgNDg6MjYgLSA0ODoxMjIgfQogZXZhbCB7IDE6MSAt
IDE6NTYgfQotZnVuY3Rpb24gImZpMyIgeyA1MzoyNyAtIDY1OjkgfQotZnVuY3Rpb24gImZpM2Ei
IHsgNTU6MjkgLSA2MzoxMyB9Ci1mdW5jdGlvbiAiZmkzYiIgeyA1NzozMyAtIDYxOjE3IH0KLWV2
YWwgeyAxOjEgLSAxOjU2IH0KLWZ1bmN0aW9uICJmaTQiIHsgNjg6MjcgLSA2ODo4MCB9Ci1mdW5j
dGlvbiAiZmk0YSIgeyA2ODo1NiAtIDY4OjU3IH0KLWZ1bmN0aW9uICJmaTUiIHsgNzA6MjcgLSA3
MDoxNjAgfQotZnVuY3Rpb24gImZpNWEiIHsgNzA6NTYgLSA3MDoxNDkgfQotZXZhbCB7IDE6MSAt
IDE6NTYgfQotZnVuY3Rpb24gImZpNiIgeyA3MjoyNyAtIDcyOjIwMSB9Ci1mdW5jdGlvbiAiZmk2
YSIgeyA3Mjo1NiAtIDcyOjE5MCB9Ci1mdW5jdGlvbiAiZmk2YiIgeyA3Mjo4NiAtIDcyOjE3OSB9
CitmdW5jdGlvbiAiZmkzIiB7IDUzOjIxIC0gNjU6OSB9CitmdW5jdGlvbiAiZmkzYSIgeyA1NToy
NiAtIDYzOjEzIH0KK2Z1bmN0aW9uICJmaTNiIiB7IDU3OjMwIC0gNjE6MTcgfQorZXZhbCB7IDE6
MSAtIDE6NTYgfQorZnVuY3Rpb24gImZpNCIgeyA2ODoyMSAtIDY4OjgwIH0KK2Z1bmN0aW9uICJm
aTRhIiB7IDY4OjUzIC0gNjg6NTcgfQorZnVuY3Rpb24gImZpNSIgeyA3MDoyMSAtIDcwOjE2MCB9
CitmdW5jdGlvbiAiZmk1YSIgeyA3MDo1MyAtIDcwOjE0OSB9CitldmFsIHsgMToxIC0gMTo1NiB9
CitmdW5jdGlvbiAiZmk2IiB7IDcyOjIxIC0gNzI6MjAxIH0KK2Z1bmN0aW9uICJmaTZhIiB7IDcy
OjUzIC0gNzI6MTkwIH0KK2Z1bmN0aW9uICJmaTZiIiB7IDcyOjgzIC0gNzI6MTc5IH0KIGV2YWwg
eyAxOjEgLSAxOjU2IH0KIAogICBGdW5jdGlvbnMgRXhwcmVzc2lvbnMgaW4gYSBmdW5jdGlvbjoK
LWZ1bmN0aW9uICJ4MSIgeyA3NzoyOCAtIDc3OjExOSB9CitmdW5jdGlvbiAieDEiIHsgNzc6MjIg
LSA3NzoxMTkgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gIngyIiB7IDgwOjI4IC0g
ODQ6NSB9Ci1mdW5jdGlvbiAieDJhIiB7IDgyOjMwIC0gODI6MTIyIH0KK2Z1bmN0aW9uICJ4MiIg
eyA4MDoyMiAtIDg0OjUgfQorZnVuY3Rpb24gIngyYSIgeyA4MjoyNyAtIDgyOjEyMiB9CiBldmFs
IHsgMToxIC0gMTo1NiB9Ci1mdW5jdGlvbiAieDMiIHsgODc6MjggLSA5OTo1IH0KLWZ1bmN0aW9u
ICJ4M2EiIHsgODk6MzAgLSA5Nzo5IH0KLWZ1bmN0aW9uICJ4M2IiIHsgOTE6MzQgLSA5NToxMyB9
Ci1ldmFsIHsgMToxIC0gMTo1NiB9Ci1mdW5jdGlvbiAieDQiIHsgMTAyOjI4IC0gMTAyOjgzIH0K
LWZ1bmN0aW9uICJ4NGEiIHsgMTAyOjYxIC0gMTAyOjYyIH0KLWZ1bmN0aW9uICJ4NSIgeyAxMDQ6
MjggLSAxMDQ6MTYzIH0KLWZ1bmN0aW9uICJ4NWEiIHsgMTA0OjYxIC0gMTA0OjE1MyB9Ci1ldmFs
IHsgMToxIC0gMTo1NiB9Ci1mdW5jdGlvbiAieDYiIHsgMTA2OjI4IC0gMTA2OjIwNyB9Ci1mdW5j
dGlvbiAieDZhIiB7IDEwNjo2MSAtIDEwNjoxOTcgfQotZnVuY3Rpb24gIng2YiIgeyAxMDY6OTUg
LSAxMDY6MTg3IH0KK2Z1bmN0aW9uICJ4MyIgeyA4NzoyMiAtIDk5OjUgfQorZnVuY3Rpb24gIngz
YSIgeyA4OToyNyAtIDk3OjkgfQorZnVuY3Rpb24gIngzYiIgeyA5MTozMSAtIDk1OjEzIH0KK2V2
YWwgeyAxOjEgLSAxOjU2IH0KK2Z1bmN0aW9uICJ4NCIgeyAxMDI6MjIgLSAxMDI6ODMgfQorZnVu
Y3Rpb24gIng0YSIgeyAxMDI6NTggLSAxMDI6NjIgfQorZnVuY3Rpb24gIng1IiB7IDEwNDoyMiAt
IDEwNDoxNjMgfQorZnVuY3Rpb24gIng1YSIgeyAxMDQ6NTggLSAxMDQ6MTUzIH0KK2V2YWwgeyAx
OjEgLSAxOjU2IH0KK2Z1bmN0aW9uICJ4NiIgeyAxMDY6MjIgLSAxMDY6MjA3IH0KK2Z1bmN0aW9u
ICJ4NmEiIHsgMTA2OjU4IC0gMTA2OjE5NyB9CitmdW5jdGlvbiAieDZiIiB7IDEwNjo5MiAtIDEw
NjoxODcgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQogCiAgIEluZGVudGVkIEZ1bmN0aW9ucyBFeHBy
ZXNzaW9ucyBpbiBhIGZ1bmN0aW9uOgotZnVuY3Rpb24gInhpMSIgeyAxMTE6MzMgLSAxMTE6MTI1
IH0KK2Z1bmN0aW9uICJ4aTEiIHsgMTExOjI3IC0gMTExOjEyNSB9CiBldmFsIHsgMToxIC0gMTo1
NiB9Ci1mdW5jdGlvbiAieGkyIiB7IDExNDozMyAtIDExODo5IH0KLWZ1bmN0aW9uICJ4aTJhIiB7
IDExNjozNSAtIDExNjoxMjggfQorZnVuY3Rpb24gInhpMiIgeyAxMTQ6MjcgLSAxMTg6OSB9Citm
dW5jdGlvbiAieGkyYSIgeyAxMTY6MzIgLSAxMTY6MTI4IH0KIGV2YWwgeyAxOjEgLSAxOjU2IH0K
LWZ1bmN0aW9uICJ4aTMiIHsgMTIxOjMzIC0gMTMzOjkgfQotZnVuY3Rpb24gInhpM2EiIHsgMTIz
OjM1IC0gMTMxOjEzIH0KLWZ1bmN0aW9uICJ4aTNiIiB7IDEyNTozOSAtIDEyOToxNyB9Ci1ldmFs
IHsgMToxIC0gMTo1NiB9Ci1mdW5jdGlvbiAieGk0IiB7IDEzNjozMyAtIDEzNjo5MiB9Ci1mdW5j
dGlvbiAieGk0YSIgeyAxMzY6NjggLSAxMzY6NjkgfQotZnVuY3Rpb24gInhpNSIgeyAxMzg6MzMg
LSAxMzg6MTcyIH0KLWZ1bmN0aW9uICJ4aTVhIiB7IDEzODo2OCAtIDEzODoxNjEgfQotZXZhbCB7
IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gInhpNiIgeyAxNDA6MzMgLSAxNDA6MjE5IH0KLWZ1bmN0
aW9uICJ4aTZhIiB7IDE0MDo2OCAtIDE0MDoyMDggfQotZnVuY3Rpb24gInhpNmIiIHsgMTQwOjEw
NCAtIDE0MDoxOTcgfQorZnVuY3Rpb24gInhpMyIgeyAxMjE6MjcgLSAxMzM6OSB9CitmdW5jdGlv
biAieGkzYSIgeyAxMjM6MzIgLSAxMzE6MTMgfQorZnVuY3Rpb24gInhpM2IiIHsgMTI1OjM2IC0g
MTI5OjE3IH0KK2V2YWwgeyAxOjEgLSAxOjU2IH0KK2Z1bmN0aW9uICJ4aTQiIHsgMTM2OjI3IC0g
MTM2OjkyIH0KK2Z1bmN0aW9uICJ4aTRhIiB7IDEzNjo2NSAtIDEzNjo2OSB9CitmdW5jdGlvbiAi
eGk1IiB7IDEzODoyNyAtIDEzODoxNzIgfQorZnVuY3Rpb24gInhpNWEiIHsgMTM4OjY1IC0gMTM4
OjE2MSB9CitldmFsIHsgMToxIC0gMTo1NiB9CitmdW5jdGlvbiAieGk2IiB7IDE0MDoyNyAtIDE0
MDoyMTkgfQorZnVuY3Rpb24gInhpNmEiIHsgMTQwOjY1IC0gMTQwOjIwOCB9CitmdW5jdGlvbiAi
eGk2YiIgeyAxNDA6MTAxIC0gMTQwOjE5NyB9CiBldmFsIHsgMToxIC0gMTo1NiB9CiAKICAgQW5v
bnltb3VzIEZ1bmN0aW9uIERlY2xhcmF0aW9uIGluIGEgZnVuY3Rpb246Ci1mdW5jdGlvbiAiIiB7
IDE0Njo1OCAtIDE1MTo1IH0KK2Z1bmN0aW9uICIiIHsgMTQ2OjUyIC0gMTUxOjUgfQogZXZhbCB7
IDE6MSAtIDE6NTYgfQogCiAgIEdsb2JhbCBldmFsOgogZXZhbCB7IDE6MSAtIDE6NTYgfQogCiAg
IEdsb2JhbCBGdW5jdGlvbnMgRGVjbGFyYXRpb25zOgotZnVuY3Rpb24gImdmMSIgeyAxNjE6MTkg
LSAxNjE6MTExIH0KK2Z1bmN0aW9uICJnZjEiIHsgMTYxOjEzIC0gMTYxOjExMSB9CiBldmFsIHsg
MToxIC0gMTo1NiB9Ci1mdW5jdGlvbiAiZ2YyIiB7IDE2NDoxOSAtIDE2ODoxIH0KLWZ1bmN0aW9u
ICJnZjJhIiB7IDE2NjoyMSAtIDE2NjoxMTQgfQorZnVuY3Rpb24gImdmMiIgeyAxNjQ6MTMgLSAx
Njg6MSB9CitmdW5jdGlvbiAiZ2YyYSIgeyAxNjY6MTggLSAxNjY6MTE0IH0KIGV2YWwgeyAxOjEg
LSAxOjU2IH0KLWZ1bmN0aW9uICJnZjMiIHsgMTcxOjE5IC0gMTgzOjEgfQotZnVuY3Rpb24gImdm
M2EiIHsgMTczOjIxIC0gMTgxOjUgfQotZnVuY3Rpb24gImdmM2IiIHsgMTc1OjI1IC0gMTc5Ojkg
fQotZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gImdmNCIgeyAxODY6MTkgLSAxODY6NzIg
fQotZnVuY3Rpb24gImdmNGEiIHsgMTg2OjQ4IC0gMTg2OjQ5IH0KLWZ1bmN0aW9uICJnZjUiIHsg
MTg4OjE5IC0gMTg4OjE1MiB9Ci1mdW5jdGlvbiAiZ2Y1YSIgeyAxODg6NDggLSAxODg6MTQxIH0K
LWV2YWwgeyAxOjEgLSAxOjU2IH0KLWZ1bmN0aW9uICJnZjYiIHsgMTkwOjE5IC0gMTkwOjE5MyB9
Ci1mdW5jdGlvbiAiZ2Y2YSIgeyAxOTA6NDggLSAxOTA6MTgyIH0KLWZ1bmN0aW9uICJnZjZiIiB7
IDE5MDo3OCAtIDE5MDoxNzEgfQorZnVuY3Rpb24gImdmMyIgeyAxNzE6MTMgLSAxODM6MSB9Citm
dW5jdGlvbiAiZ2YzYSIgeyAxNzM6MTggLSAxODE6NSB9CitmdW5jdGlvbiAiZ2YzYiIgeyAxNzU6
MjIgLSAxNzk6OSB9CitldmFsIHsgMToxIC0gMTo1NiB9CitmdW5jdGlvbiAiZ2Y0IiB7IDE4Njox
MyAtIDE4Njo3MiB9CitmdW5jdGlvbiAiZ2Y0YSIgeyAxODY6NDUgLSAxODY6NDkgfQorZnVuY3Rp
b24gImdmNSIgeyAxODg6MTMgLSAxODg6MTUyIH0KK2Z1bmN0aW9uICJnZjVhIiB7IDE4ODo0NSAt
IDE4ODoxNDEgfQorZXZhbCB7IDE6MSAtIDE6NTYgfQorZnVuY3Rpb24gImdmNiIgeyAxOTA6MTMg
LSAxOTA6MTkzIH0KK2Z1bmN0aW9uICJnZjZhIiB7IDE5MDo0NSAtIDE5MDoxODIgfQorZnVuY3Rp
b24gImdmNmIiIHsgMTkwOjc1IC0gMTkwOjE3MSB9CiBldmFsIHsgMToxIC0gMTo1NiB9CiAKICAg
SW5kZW50ZWQgR2xvYmFsIEZ1bmN0aW9ucyBEZWNsYXJhdGlvbnM6Ci1mdW5jdGlvbiAiZ2ZpMSIg
eyAxOTU6MjQgLSAxOTU6MTE3IH0KK2Z1bmN0aW9uICJnZmkxIiB7IDE5NToxOCAtIDE5NToxMTcg
fQogZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gImdmaTIiIHsgMTk4OjI0IC0gMjAyOjUg
fQotZnVuY3Rpb24gImdmaTJhIiB7IDIwMDoyNiAtIDIwMDoxMjAgfQorZnVuY3Rpb24gImdmaTIi
IHsgMTk4OjE4IC0gMjAyOjUgfQorZnVuY3Rpb24gImdmaTJhIiB7IDIwMDoyMyAtIDIwMDoxMjAg
fQogZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gImdmaTMiIHsgMjA1OjI0IC0gMjE3OjUg
fQotZnVuY3Rpb24gImdmaTNhIiB7IDIwNzoyNiAtIDIxNTo5IH0KLWZ1bmN0aW9uICJnZmkzYiIg
eyAyMDk6MzAgLSAyMTM6MTMgfQotZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gImdmaTQi
IHsgMjIwOjI0IC0gMjIwOjgxIH0KLWZ1bmN0aW9uICJnZmk0YSIgeyAyMjA6NTUgLSAyMjA6NTYg
fQotZnVuY3Rpb24gImdmaTUiIHsgMjIyOjI0IC0gMjIyOjE2MSB9Ci1mdW5jdGlvbiAiZ2ZpNWEi
IHsgMjIyOjU1IC0gMjIyOjE0OSB9Ci1ldmFsIHsgMToxIC0gMTo1NiB9Ci1mdW5jdGlvbiAiZ2Zp
NiIgeyAyMjQ6MjQgLSAyMjQ6MjA1IH0KLWZ1bmN0aW9uICJnZmk2YSIgeyAyMjQ6NTUgLSAyMjQ6
MTkzIH0KLWZ1bmN0aW9uICJnZmk2YiIgeyAyMjQ6ODcgLSAyMjQ6MTgxIH0KK2Z1bmN0aW9uICJn
ZmkzIiB7IDIwNToxOCAtIDIxNzo1IH0KK2Z1bmN0aW9uICJnZmkzYSIgeyAyMDc6MjMgLSAyMTU6
OSB9CitmdW5jdGlvbiAiZ2ZpM2IiIHsgMjA5OjI3IC0gMjEzOjEzIH0KK2V2YWwgeyAxOjEgLSAx
OjU2IH0KK2Z1bmN0aW9uICJnZmk0IiB7IDIyMDoxOCAtIDIyMDo4MSB9CitmdW5jdGlvbiAiZ2Zp
NGEiIHsgMjIwOjUyIC0gMjIwOjU2IH0KK2Z1bmN0aW9uICJnZmk1IiB7IDIyMjoxOCAtIDIyMjox
NjEgfQorZnVuY3Rpb24gImdmaTVhIiB7IDIyMjo1MiAtIDIyMjoxNDkgfQorZXZhbCB7IDE6MSAt
IDE6NTYgfQorZnVuY3Rpb24gImdmaTYiIHsgMjI0OjE4IC0gMjI0OjIwNSB9CitmdW5jdGlvbiAi
Z2ZpNmEiIHsgMjI0OjUyIC0gMjI0OjE5MyB9CitmdW5jdGlvbiAiZ2ZpNmIiIHsgMjI0Ojg0IC0g
MjI0OjE4MSB9CiBldmFsIHsgMToxIC0gMTo1NiB9CiAKICAgR2xvYmFsIEZ1bmN0aW9ucyBFeHBy
ZXNzaW9uczoKLWZ1bmN0aW9uICJneDEiIHsgMjI5OjI1IC0gMjI5OjExNyB9CitmdW5jdGlvbiAi
Z3gxIiB7IDIyOToxOSAtIDIyOToxMTcgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24g
Imd4MiIgeyAyMzI6MjUgLSAyMzY6MSB9Ci1mdW5jdGlvbiAiZ3gyYSIgeyAyMzQ6MjcgLSAyMzQ6
MTIwIH0KK2Z1bmN0aW9uICJneDIiIHsgMjMyOjE5IC0gMjM2OjEgfQorZnVuY3Rpb24gImd4MmEi
IHsgMjM0OjI0IC0gMjM0OjEyMCB9CiBldmFsIHsgMToxIC0gMTo1NiB9Ci1mdW5jdGlvbiAiZ3gz
IiB7IDIzOToyNSAtIDI1MToxIH0KLWZ1bmN0aW9uICJneDNhIiB7IDI0MToyNyAtIDI0OTo1IH0K
LWZ1bmN0aW9uICJneDNiIiB7IDI0MzozMSAtIDI0Nzo5IH0KLWV2YWwgeyAxOjEgLSAxOjU2IH0K
LWZ1bmN0aW9uICJneDQiIHsgMjU0OjI1IC0gMjU0Ojg0IH0KLWZ1bmN0aW9uICJneDRhIiB7IDI1
NDo2MCAtIDI1NDo2MSB9Ci1mdW5jdGlvbiAiZ3g1IiB7IDI1NjoyNSAtIDI1NjoxNjQgfQotZnVu
Y3Rpb24gImd4NWEiIHsgMjU2OjYwIC0gMjU2OjE1MyB9Ci1ldmFsIHsgMToxIC0gMTo1NiB9Ci1m
dW5jdGlvbiAiZ3g2IiB7IDI1ODoyNSAtIDI1ODoyMTEgfQotZnVuY3Rpb24gImd4NmEiIHsgMjU4
OjYwIC0gMjU4OjIwMCB9Ci1mdW5jdGlvbiAiZ3g2YiIgeyAyNTg6OTYgLSAyNTg6MTg5IH0KK2Z1
bmN0aW9uICJneDMiIHsgMjM5OjE5IC0gMjUxOjEgfQorZnVuY3Rpb24gImd4M2EiIHsgMjQxOjI0
IC0gMjQ5OjUgfQorZnVuY3Rpb24gImd4M2IiIHsgMjQzOjI4IC0gMjQ3OjkgfQorZXZhbCB7IDE6
MSAtIDE6NTYgfQorZnVuY3Rpb24gImd4NCIgeyAyNTQ6MTkgLSAyNTQ6ODQgfQorZnVuY3Rpb24g
Imd4NGEiIHsgMjU0OjU3IC0gMjU0OjYxIH0KK2Z1bmN0aW9uICJneDUiIHsgMjU2OjE5IC0gMjU2
OjE2NCB9CitmdW5jdGlvbiAiZ3g1YSIgeyAyNTY6NTcgLSAyNTY6MTUzIH0KK2V2YWwgeyAxOjEg
LSAxOjU2IH0KK2Z1bmN0aW9uICJneDYiIHsgMjU4OjE5IC0gMjU4OjIxMSB9CitmdW5jdGlvbiAi
Z3g2YSIgeyAyNTg6NTcgLSAyNTg6MjAwIH0KK2Z1bmN0aW9uICJneDZiIiB7IDI1ODo5MyAtIDI1
ODoxODkgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQogCiAgIEluZGVudGVkIEZ1bmN0aW9ucyBEZWNs
YXJhdGlvbnM6Ci1mdW5jdGlvbiAiZ3hpMSIgeyAyNjM6MzAgLSAyNjM6MTIzIH0KK2Z1bmN0aW9u
ICJneGkxIiB7IDI2MzoyNCAtIDI2MzoxMjMgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rp
b24gImd4aTIiIHsgMjY2OjMwIC0gMjcwOjUgfQotZnVuY3Rpb24gImd4aTJhIiB7IDI2ODozMiAt
IDI2ODoxMjYgfQorZnVuY3Rpb24gImd4aTIiIHsgMjY2OjI0IC0gMjcwOjUgfQorZnVuY3Rpb24g
Imd4aTJhIiB7IDI2ODoyOSAtIDI2ODoxMjYgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rp
b24gImd4aTMiIHsgMjczOjMwIC0gMjg1OjUgfQotZnVuY3Rpb24gImd4aTNhIiB7IDI3NTozMiAt
IDI4Mzo5IH0KLWZ1bmN0aW9uICJneGkzYiIgeyAyNzc6MzYgLSAyODE6MTMgfQotZXZhbCB7IDE6
MSAtIDE6NTYgfQotZnVuY3Rpb24gImd4aTQiIHsgMjg4OjMwIC0gMjg4OjkzIH0KLWZ1bmN0aW9u
ICJneGk0YSIgeyAyODg6NjcgLSAyODg6NjggfQotZnVuY3Rpb24gImd4aTUiIHsgMjkwOjMwIC0g
MjkwOjE3MyB9Ci1mdW5jdGlvbiAiZ3hpNWEiIHsgMjkwOjY3IC0gMjkwOjE2MSB9Ci1ldmFsIHsg
MToxIC0gMTo1NiB9Ci1mdW5jdGlvbiAiZ3hpNiIgeyAyOTI6MzAgLSAyOTI6MjIzIH0KLWZ1bmN0
aW9uICJneGk2YSIgeyAyOTI6NjcgLSAyOTI6MjExIH0KLWZ1bmN0aW9uICJneGk2YiIgeyAyOTI6
MTA1IC0gMjkyOjE5OSB9CitmdW5jdGlvbiAiZ3hpMyIgeyAyNzM6MjQgLSAyODU6NSB9CitmdW5j
dGlvbiAiZ3hpM2EiIHsgMjc1OjI5IC0gMjgzOjkgfQorZnVuY3Rpb24gImd4aTNiIiB7IDI3Nzoz
MyAtIDI4MToxMyB9CitldmFsIHsgMToxIC0gMTo1NiB9CitmdW5jdGlvbiAiZ3hpNCIgeyAyODg6
MjQgLSAyODg6OTMgfQorZnVuY3Rpb24gImd4aTRhIiB7IDI4ODo2NCAtIDI4ODo2OCB9CitmdW5j
dGlvbiAiZ3hpNSIgeyAyOTA6MjQgLSAyOTA6MTczIH0KK2Z1bmN0aW9uICJneGk1YSIgeyAyOTA6
NjQgLSAyOTA6MTYxIH0KK2V2YWwgeyAxOjEgLSAxOjU2IH0KK2Z1bmN0aW9uICJneGk2IiB7IDI5
MjoyNCAtIDI5MjoyMjMgfQorZnVuY3Rpb24gImd4aTZhIiB7IDI5Mjo2NCAtIDI5MjoyMTEgfQor
ZnVuY3Rpb24gImd4aTZiIiB7IDI5MjoxMDIgLSAyOTI6MTk5IH0KIGV2YWwgeyAxOjEgLSAxOjU2
IH0KIAogICBBbm9ueW1vdXMgR2xvYmFsIEZ1bmN0aW9uIERlY2xhcmF0aW9uczoKLWZ1bmN0aW9u
ICIiIHsgMjk5OjU2IC0gMzA0OjEgfQorZnVuY3Rpb24gIiIgeyAyOTk6NTAgLSAzMDQ6MSB9CiBl
dmFsIHsgMToxIC0gMTo1NiB9CiAKICAgRnVuY3Rpb24gRGVjbGFyYXRpb25zIGluIGFuIGV2YWw6
CiBldmFsIHsgMToxIC0gMTY6NyB9Ci1mdW5jdGlvbiAiZWYxIiB7IDM6MjAgLSAxNDo1IH0KLWZ1
bmN0aW9uICJlZjFhIiB7IDU6MjUgLSAxMjo5IH0KLWZ1bmN0aW9uICJlZjFiIiB7IDc6MjkgLSAx
MDoxMyB9CitmdW5jdGlvbiAiZWYxIiB7IDM6MTcgLSAxNDo1IH0KK2Z1bmN0aW9uICJlZjFhIiB7
IDU6MjIgLSAxMjo5IH0KK2Z1bmN0aW9uICJlZjFiIiB7IDc6MjYgLSAxMDoxMyB9CiBldmFsIHsg
MToxIC0gMTo1NiB9CiBldmFsIHsgMToxIC0gMToyMjUgfQotZnVuY3Rpb24gImVmMiIgeyAxOjU5
IC0gMToyMTcgfQotZnVuY3Rpb24gImVmMmEiIHsgMTo4OCAtIDE6MjA3IH0KLWZ1bmN0aW9uICJl
ZjJiIiB7IDE6MTE4IC0gMToxOTcgfQorZnVuY3Rpb24gImVmMiIgeyAxOjU2IC0gMToyMTcgfQor
ZnVuY3Rpb24gImVmMmEiIHsgMTo4NSAtIDE6MjA3IH0KK2Z1bmN0aW9uICJlZjJiIiB7IDE6MTE1
IC0gMToxOTcgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQogZXZhbCB7IDE6MSAtIDE3OjggfQotZnVu
Y3Rpb24gImVmaTEiIHsgNDoyMSAtIDE1OjUgfQotZnVuY3Rpb24gImVmaTFhIiB7IDY6MjYgLSAx
Mzo5IH0KLWZ1bmN0aW9uICJlZmkxYiIgeyA4OjMwIC0gMTE6MTMgfQorZnVuY3Rpb24gImVmaTEi
IHsgNDoxOCAtIDE1OjUgfQorZnVuY3Rpb24gImVmaTFhIiB7IDY6MjMgLSAxMzo5IH0KK2Z1bmN0
aW9uICJlZmkxYiIgeyA4OjI3IC0gMTE6MTMgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQogZXZhbCB7
IDE6MSAtIDE6MjM0IH0KLWZ1bmN0aW9uICJlZmkyIiB7IDE6NjAgLSAxOjIyNSB9Ci1mdW5jdGlv
biAiZWZpMmEiIHsgMTo5MSAtIDE6MjE0IH0KLWZ1bmN0aW9uICJlZmkyYiIgeyAxOjEyMyAtIDE6
MjAzIH0KK2Z1bmN0aW9uICJlZmkyIiB7IDE6NTcgLSAxOjIyNSB9CitmdW5jdGlvbiAiZWZpMmEi
IHsgMTo4OCAtIDE6MjE0IH0KK2Z1bmN0aW9uICJlZmkyYiIgeyAxOjEyMCAtIDE6MjAzIH0KIGV2
YWwgeyAxOjEgLSAxOjU2IH0KIAogICBGdW5jdGlvbiBFeHByZXNzaW9ucyBpbiBhbiBldmFsOgog
ZXZhbCB7IDE6MSAtIDE2OjcgfQotZnVuY3Rpb24gImV4MSIgeyAzOjI2IC0gMTQ6NSB9Ci1mdW5j
dGlvbiAiZXgxYSIgeyA1OjMxIC0gMTI6OSB9Ci1mdW5jdGlvbiAiZXgxYiIgeyA3OjM1IC0gMTA6
MTMgfQorZnVuY3Rpb24gImV4MSIgeyAzOjIzIC0gMTQ6NSB9CitmdW5jdGlvbiAiZXgxYSIgeyA1
OjI4IC0gMTI6OSB9CitmdW5jdGlvbiAiZXgxYiIgeyA3OjMyIC0gMTA6MTMgfQogZXZhbCB7IDE6
MSAtIDE6NTYgfQogZXZhbCB7IDE6MSAtIDE6MjQ2IH0KLWZ1bmN0aW9uICJleDIiIHsgMTo2NSAt
IDE6MjM3IH0KLWZ1bmN0aW9uICJleDJhIiB7IDE6MTAwIC0gMToyMjYgfQotZnVuY3Rpb24gImV4
MmIiIHsgMToxMzYgLSAxOjIxNSB9CitmdW5jdGlvbiAiZXgyIiB7IDE6NjIgLSAxOjIzNyB9Citm
dW5jdGlvbiAiZXgyYSIgeyAxOjk3IC0gMToyMjYgfQorZnVuY3Rpb24gImV4MmIiIHsgMToxMzMg
LSAxOjIxNSB9CiBldmFsIHsgMToxIC0gMTo1NiB9CiBldmFsIHsgMToxIC0gMTc6OCB9Ci1mdW5j
dGlvbiAiZXhpMSIgeyA0OjI3IC0gMTU6NSB9Ci1mdW5jdGlvbiAiZXhpMWEiIHsgNjozMiAtIDEz
OjkgfQotZnVuY3Rpb24gImV4aTFiIiB7IDg6MzYgLSAxMToxMyB9CitmdW5jdGlvbiAiZXhpMSIg
eyA0OjI0IC0gMTU6NSB9CitmdW5jdGlvbiAiZXhpMWEiIHsgNjoyOSAtIDEzOjkgfQorZnVuY3Rp
b24gImV4aTFiIiB7IDg6MzMgLSAxMToxMyB9CiBldmFsIHsgMToxIC0gMTo1NiB9CiBldmFsIHsg
MToxIC0gMToyNTUgfQotZnVuY3Rpb24gImV4aTIiIHsgMTo2NiAtIDE6MjQ1IH0KLWZ1bmN0aW9u
ICJleGkyYSIgeyAxOjEwMyAtIDE6MjMzIH0KLWZ1bmN0aW9uICJleGkyYiIgeyAxOjE0MSAtIDE6
MjIxIH0KK2Z1bmN0aW9uICJleGkyIiB7IDE6NjMgLSAxOjI0NSB9CitmdW5jdGlvbiAiZXhpMmEi
IHsgMToxMDAgLSAxOjIzMyB9CitmdW5jdGlvbiAiZXhpMmIiIHsgMToxMzggLSAxOjIyMSB9CiBl
dmFsIHsgMToxIC0gMTo1NiB9CiAKICAgbmV3IEZ1bmN0aW9uIE9iamVjdDoKLWZ1bmN0aW9uICJh
bm9ueW1vdXMiIHsgMToyNyAtIDI6MjI4IH0KLWZ1bmN0aW9uICJuZjFhIiB7IDI6NjAgLSAyOjIx
OSB9Ci1mdW5jdGlvbiAibmYxYiIgeyAyOjkwIC0gMjoyMDkgfQotZnVuY3Rpb24gIm5mMWMiIHsg
MjoxMjAgLSAyOjE5OSB9Ci1ldmFsIHsgMToxIC0gMTo1NiB9Ci1mdW5jdGlvbiAiYW5vbnltb3Vz
IiB7IDE6MjcgLSAxODo4IH0KLWZ1bmN0aW9uICJuZjJhIiB7IDU6MjEgLSAxNjo1IH0KLWZ1bmN0
aW9uICJuZjJiIiB7IDc6MjUgLSAxNDo5IH0KLWZ1bmN0aW9uICJuZjJjIiB7IDk6MjkgLSAxMjox
MyB9Ci1ldmFsIHsgMToxIC0gMTo1NiB9Ci1mdW5jdGlvbiAiYW5vbnltb3VzIiB7IDE6MjcgLSAy
OjIyOCB9Ci1mdW5jdGlvbiAibmYxYSIgeyAyOjYwIC0gMjoyMTkgfQotZnVuY3Rpb24gIm5mMWIi
IHsgMjo5MCAtIDI6MjA5IH0KLWZ1bmN0aW9uICJuZjFjIiB7IDI6MTIwIC0gMjoxOTkgfQotZXZh
bCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gImFub255bW91cyIgeyAxOjI3IC0gMjoyMzcgfQot
ZnVuY3Rpb24gIm5maTFhIiB7IDI6NjEgLSAyOjIyNyB9Ci1mdW5jdGlvbiAibmZpMWIiIHsgMjo5
MyAtIDI6MjE2IH0KLWZ1bmN0aW9uICJuZmkxYyIgeyAyOjEyNSAtIDI6MjA1IH0KLWV2YWwgeyAx
OjEgLSAxOjU2IH0KLWZ1bmN0aW9uICJhbm9ueW1vdXMiIHsgMToyNyAtIDE4OjggfQotZnVuY3Rp
b24gIm5mMmEiIHsgNToyMSAtIDE2OjUgfQotZnVuY3Rpb24gIm5mMmIiIHsgNzoyNSAtIDE0Ojkg
fQotZnVuY3Rpb24gIm5mMmMiIHsgOToyOSAtIDEyOjEzIH0KLWV2YWwgeyAxOjEgLSAxOjU2IH0K
LWZ1bmN0aW9uICJhbm9ueW1vdXMiIHsgMToyNyAtIDE4OjkgfQotZnVuY3Rpb24gIm5maTJhIiB7
IDU6MjIgLSAxNjo1IH0KLWZ1bmN0aW9uICJuZmkyYiIgeyA3OjI2IC0gMTQ6OSB9Ci1mdW5jdGlv
biAibmZpMmMiIHsgOTozMCAtIDEyOjEzIH0KK2Z1bmN0aW9uICJhbm9ueW1vdXMiIHsgMToyMCAt
IDI6MjI4IH0KK2Z1bmN0aW9uICJuZjFhIiB7IDI6NTcgLSAyOjIxOSB9CitmdW5jdGlvbiAibmYx
YiIgeyAyOjg3IC0gMjoyMDkgfQorZnVuY3Rpb24gIm5mMWMiIHsgMjoxMTcgLSAyOjE5OSB9Citl
dmFsIHsgMToxIC0gMTo1NiB9CitmdW5jdGlvbiAiYW5vbnltb3VzIiB7IDE6MjAgLSAxODo4IH0K
K2Z1bmN0aW9uICJuZjJhIiB7IDU6MTggLSAxNjo1IH0KK2Z1bmN0aW9uICJuZjJiIiB7IDc6MjIg
LSAxNDo5IH0KK2Z1bmN0aW9uICJuZjJjIiB7IDk6MjYgLSAxMjoxMyB9CitldmFsIHsgMToxIC0g
MTo1NiB9CitmdW5jdGlvbiAiYW5vbnltb3VzIiB7IDE6MjAgLSAyOjIyOCB9CitmdW5jdGlvbiAi
bmYxYSIgeyAyOjU3IC0gMjoyMTkgfQorZnVuY3Rpb24gIm5mMWIiIHsgMjo4NyAtIDI6MjA5IH0K
K2Z1bmN0aW9uICJuZjFjIiB7IDI6MTE3IC0gMjoxOTkgfQorZXZhbCB7IDE6MSAtIDE6NTYgfQor
ZnVuY3Rpb24gImFub255bW91cyIgeyAxOjIwIC0gMjoyMzcgfQorZnVuY3Rpb24gIm5maTFhIiB7
IDI6NTggLSAyOjIyNyB9CitmdW5jdGlvbiAibmZpMWIiIHsgMjo5MCAtIDI6MjE2IH0KK2Z1bmN0
aW9uICJuZmkxYyIgeyAyOjEyMiAtIDI6MjA1IH0KK2V2YWwgeyAxOjEgLSAxOjU2IH0KK2Z1bmN0
aW9uICJhbm9ueW1vdXMiIHsgMToyMCAtIDE4OjggfQorZnVuY3Rpb24gIm5mMmEiIHsgNToxOCAt
IDE2OjUgfQorZnVuY3Rpb24gIm5mMmIiIHsgNzoyMiAtIDE0OjkgfQorZnVuY3Rpb24gIm5mMmMi
IHsgOToyNiAtIDEyOjEzIH0KK2V2YWwgeyAxOjEgLSAxOjU2IH0KK2Z1bmN0aW9uICJhbm9ueW1v
dXMiIHsgMToyMCAtIDE4OjkgfQorZnVuY3Rpb24gIm5maTJhIiB7IDU6MTkgLSAxNjo1IH0KK2Z1
bmN0aW9uICJuZmkyYiIgeyA3OjIzIC0gMTQ6OSB9CitmdW5jdGlvbiAibmZpMmMiIHsgOToyNyAt
IDEyOjEzIH0KIGV2YWwgeyAxOjEgLSAxOjU2IH0KIAogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256814</attachid>
            <date>2015-07-14 17:28:16 -0700</date>
            <delta_ts>2015-07-14 18:19:55 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>195519</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg2ODI2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxNCBA
QAorMjAxNS0wNy0xNCAgU2FhbSBiYXJhdGkgIDxzYWFtYmFyYXRpMUBnbWFpbC5jb20+CisKKyAg
ICAgICAgRnVuY3Rpb24gcGFyYW1ldGVycyBzaG91bGQgYmUgcGFyc2VkIGluIHRoZSBzYW1lIHBh
cnNlciBhcmVuYSBhcyB0aGUgZnVuY3Rpb24gYm9keQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1OTk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICBUaGlzIHBhdGNoIGNoYW5nZXMgaG93IGZ1bmN0aW9ucyBh
cmUgcGFyc2VkIGluIEpTQy4gQSBmdW5jdGlvbidzCisgICAgICAgcGFyYW1ldGVycyBhcmUgbm93
IHBhcnNlZCBpbiB0aGUgc2FtZSBhcmVuYSBhcyB0aGUgZnVuY3Rpb24gaXRzZWxmLgorICAgICAg
IFRoaXMgYWxsb3dzIHVzIHRvIGFyZW5hIGFsbG9jYXRlIGFsbCBkZXN0cnVjdHVyaW5nIEFTVCBu
b2RlcyBhbmQKKyAgICAgICB0aGUgRnVuY3Rpb25QYXJhbWV0ZXJzIG5vZGUuIFRoaXMgd2lsbCBo
ZWxwIG1ha2UgaW1wbGVtZW50aW5nIEVTNgorICAgICAgIGRlZmF1bHQgcGFyYW1ldGVyIHZhbHVl
cyBzYW5lLgorCisgICAgICAgQSBzb3VyY2UgY29kZSB0aGF0IHJlcHJlc2VudHMgYSBmdW5jdGlv
biBub3cgaW5jbHVkZXMgdGhlIHRleHQgb2YgdGhlIGZ1bmN0aW9uJ3MgCisgICAgICAgcGFyYW1l
dGVycy4gVGhlIHN0YXJ0aW5nIG9mZnNldCBpcyBhdCB0aGUgb3BlbmluZyBwYXJlbnRoZXNpcyBv
ZiB0aGUgcGFyYW1ldGVyCisgICAgICAgbGlzdCBvciBhdCB0aGUgc3RhcnRpbmcgY2hhcmFjdGVy
IG9mIHRoZSBpZGVudGlmaWVyIGZvciBhcnJvdyBmdW5jdGlvbnMgdGhhdAorICAgICAgIGhhdmUg
c2luZ2xlIGFyZ3VtZW50cyBhbmQgZG9uJ3Qgc3RhcnQgd2l0aCBwYXJlbnRoZXNpcy4KKworICAg
ICAgIEZvciBleGFtcGxlOgorCisgICAgICAgImZ1bmN0aW9uIChwYXJhbTEsIHBhcmFtMikgeyAu
Li4gfSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCBUaGlzIG9mZnNldCB1c2VkIHRvIGJlIHRoZSBzdGFydGlu
ZyBvZmZzZXQgb2YgYSBmdW5jdGlvbidzIFNvdXJjZUNvZGUKKyAgICAgICAgICAgICAgICAgXgor
ICAgICAgICAgICAgICAgICB8IFRoaXMgaXMgdGhlIG5ldyBzdGFydGluZyBvZmZzZXQgZm9yIGEg
ZnVuY3Rpb24ncyBTb3VyY2VDb2RlLgorCisgICAgICAgVGhpcyByZXF1aXJlcyB1cyB0byBjaGFu
Z2UgaG93IHNvbWUgb2Zmc2V0cyBhcmUgY2FsY3VsYXRlZAorICAgICAgIGFuZCBhbHNvIHJlcXVp
cmVzIHVzIHRvIHJlcG9ydCBzb21lIGRpZmZlcmVudCBsaW5lIG51bWJlcnMgZm9yIGludGVybmFs
CisgICAgICAgbWV0cmljcyB0aGF0IHVzZSBhIFNvdXJjZUNvZGUncyBzdGFydGluZyBsaW5lIGFu
ZCBjb2x1bW4gbnVtYmVycy4KKworICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBkb2VzIGEgYml0IG9m
IGNsZWFudXAgd2l0aCByZWdhcmRzIHRvIGhvdworICAgICAgIGZ1bmN0aW9ucyBhcmUgcGFyc2Vk
IGluIGdlbmVyYWwgKGVzcGVjaWFsbHkgYXJyb3cgZnVuY3Rpb25zKS4KKyAgICAgICBJdCByZW1v
dmVzIHNvbWUgdW5uZWNlc3NhcnkgI2lmZGVmcyBhbmQgdGhlIGxpa2VzIGZvciBhcnJvdworICAg
ICAgIHRvIG1ha2UgdGhpbmdzIGNsZWFyZXIgYW5kIG1vcmUgZGVsaWJlcmF0ZS4KKworICAgICAg
ICAqIEFQSS9KU1NjcmlwdFJlZi5jcHA6CisgICAgICAgIChwYXJzZVNjcmlwdCk6CisgICAgICAg
ICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDoKKyAgICAgICAgKEpTQzo6QnVpbHRp
bkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlSW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVGdW5jdGlv
bkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OnBhcmFtZXRlckNvdW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0Nv
ZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5vZGU6OmVt
aXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OmFzc2lnbkRlZmF1bHRWYWx1ZUlmVW5kZWZpbmVk
KToKKyAgICAgICAgKEpTQzo6QXJyYXlQYXR0ZXJuTm9kZTo6Y29sbGVjdEJvdW5kSWRlbnRpZmll
cnMpOgorICAgICAgICAoSlNDOjpEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU6On5EZXN0cnVjdHVy
aW5nUGF0dGVybk5vZGUpOiBEZWxldGVkLgorICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUNsYXNzRXhwcik6CisgICAgICAgIChK
U0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmN0aW9uRXhwcik6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6OmNyZWF0ZUZ1bmN0aW9uQm9keSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNy
ZWF0ZUFycm93RnVuY3Rpb25FeHByKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRl
R2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0
ZUVsZW1lbnRMaXN0KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRm9ybWFsUGFy
YW1ldGVyTGlzdCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmFwcGVuZFBhcmFtZXRlcik6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUNsYXVzZSk6CisgICAgICAgIChKU0M6
OkFTVEJ1aWxkZXI6OmNyZWF0ZUNsYXVzZUxpc3QpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVy
OjpjcmVhdGVGdW5jRGVjbFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNy
ZWF0ZUZvckluTG9vcCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZvck9mTG9v
cCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmlzUmVzb2x2ZSk6CisgICAgICAgIChKU0M6
OkFTVEJ1aWxkZXI6OmNyZWF0ZURlc3RydWN0dXJpbmdBc3NpZ25tZW50KToKKyAgICAgICAgKEpT
Qzo6QVNUQnVpbGRlcjo6Y3JlYXRlQXJyYXlQYXR0ZXJuKToKKyAgICAgICAgKEpTQzo6QVNUQnVp
bGRlcjo6YXBwZW5kQXJyYXlQYXR0ZXJuU2tpcEVudHJ5KToKKyAgICAgICAgKEpTQzo6QVNUQnVp
bGRlcjo6YXBwZW5kQXJyYXlQYXR0ZXJuRW50cnkpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVy
OjphcHBlbmRBcnJheVBhdHRlcm5SZXN0RW50cnkpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVy
OjpmaW5pc2hBcnJheVBhdHRlcm4pOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVP
YmplY3RQYXR0ZXJuKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6YXBwZW5kT2JqZWN0UGF0
dGVybkVudHJ5KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlQmluZGluZ0xvY2F0
aW9uKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6c2V0RW5kT2Zmc2V0KToKKyAgICAgICAg
KiBwYXJzZXIvTGV4ZXIuY3BwOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6TGV4ZXIpOgorICAg
ICAgICAoSlNDOjpMZXhlcjxUPjo6bmV4dFRva2VuSXNDb2xvbik6CisgICAgICAgIChKU0M6Okxl
eGVyPFQ+OjpzZXRUb2tlblBvc2l0aW9uKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleCk6
CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpjbGVhcik6CisgICAgICAgICogcGFyc2VyL0xleGVy
Lmg6CisgICAgICAgIChKU0M6OkxleGVyOjpzZXRJc1JlcGFyc2luZ0Z1bmN0aW9uKToKKyAgICAg
ICAgKEpTQzo6TGV4ZXI6OmlzUmVwYXJzaW5nRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpMZXhl
cjo6bGluZU51bWJlcik6CisgICAgICAgIChKU0M6OkxleGVyOjpzZXRJc1JlcGFyc2luZyk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkxleGVyOjppc1JlcGFyc2luZyk6IERlbGV0ZWQuCisgICAg
ICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpTQzo6VHJ5Tm9kZTo6
VHJ5Tm9kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uUGFyYW1ldGVyczo6RnVuY3Rpb25QYXJh
bWV0ZXJzKToKKyAgICAgICAgKEpTQzo6RnVuY0V4cHJOb2RlOjpGdW5jRXhwck5vZGUpOgorICAg
ICAgICAoSlNDOjpGdW5jRGVjbE5vZGU6OkZ1bmNEZWNsTm9kZSk6CisgICAgICAgIChKU0M6OkFy
cmF5UGF0dGVybk5vZGU6OkFycmF5UGF0dGVybk5vZGUpOgorICAgICAgICAoSlNDOjpPYmplY3RQ
YXR0ZXJuTm9kZTo6T2JqZWN0UGF0dGVybk5vZGUpOgorICAgICAgICAoSlNDOjpCaW5kaW5nTm9k
ZTo6QmluZGluZ05vZGUpOgorICAgICAgICAoSlNDOjpEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5v
ZGU6OkRlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZSk6CisgICAgICAgIChKU0M6OlBhcmFtZXRl
ck5vZGU6OlBhcmFtZXRlck5vZGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpBcnJheVBhdHRl
cm5Ob2RlOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpPYmplY3RQYXR0ZXJuTm9k
ZTo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QmluZGluZ05vZGU6OmNyZWF0ZSk6
IERlbGV0ZWQuCisgICAgICAgICogcGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHJv
Z3JhbU5vZGU6OlByb2dyYW1Ob2RlKToKKyAgICAgICAgKEpTQzo6RXZhbE5vZGU6OkV2YWxOb2Rl
KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Cb2R5Tm9kZTo6RnVuY3Rpb25Cb2R5Tm9kZSk6Cisg
ICAgICAgIChKU0M6OkZ1bmN0aW9uQm9keU5vZGU6OmZpbmlzaFBhcnNpbmcpOgorICAgICAgICAo
SlNDOjpGdW5jdGlvbk5vZGU6OkZ1bmN0aW9uTm9kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9u
Tm9kZTo6ZmluaXNoUGFyc2luZyk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uUGFyYW1ldGVyczo6
Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RnVuY3Rpb25QYXJhbWV0ZXJzOjpGdW5j
dGlvblBhcmFtZXRlcnMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGdW5jdGlvblBhcmFtZXRl
cnM6On5GdW5jdGlvblBhcmFtZXRlcnMpOiBEZWxldGVkLgorICAgICAgICAqIHBhcnNlci9Ob2Rl
cy5oOgorICAgICAgICAoSlNDOjpQcm9ncmFtTm9kZTo6c3RhcnRDb2x1bW4pOgorICAgICAgICAo
SlNDOjpQcm9ncmFtTm9kZTo6ZW5kQ29sdW1uKToKKyAgICAgICAgKEpTQzo6RXZhbE5vZGU6OnN0
YXJ0Q29sdW1uKToKKyAgICAgICAgKEpTQzo6RXZhbE5vZGU6OmVuZENvbHVtbik6CisgICAgICAg
IChKU0M6OkZ1bmN0aW9uUGFyYW1ldGVyczo6c2l6ZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9u
UGFyYW1ldGVyczo6YXQpOgorICAgICAgICAoSlNDOjpGdW5jdGlvblBhcmFtZXRlcnM6OmFwcGVu
ZCk6CisgICAgICAgIChKU0M6OkZ1bmNFeHByTm9kZTo6Ym9keSk6CisgICAgICAgIChKU0M6OkRl
c3RydWN0dXJpbmdQYXR0ZXJuTm9kZTo6fkRlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSk6CisgICAg
ICAgIChKU0M6OkRlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZTo6aXNCaW5kaW5nTm9kZSk6CisgICAg
ICAgIChKU0M6OkRlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZTo6ZW1pdERpcmVjdEJpbmRpbmcpOgor
ICAgICAgICAoSlNDOjpBcnJheVBhdHRlcm5Ob2RlOjphcHBlbmRJbmRleCk6CisgICAgICAgIChK
U0M6Ok9iamVjdFBhdHRlcm5Ob2RlOjphcHBlbmRFbnRyeSk6CisgICAgICAgIChKU0M6OkJpbmRp
bmdOb2RlOjpib3VuZFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6QmluZGluZ05vZGU6OmRpdm90
U3RhcnQpOgorICAgICAgICAoSlNDOjpCaW5kaW5nTm9kZTo6ZGl2b3RFbmQpOgorICAgICAgICAo
SlNDOjpEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5vZGU6OmJpbmRpbmdzKToKKyAgICAgICAgKEpT
Qzo6RnVuY0RlY2xOb2RlOjpib2R5KToKKyAgICAgICAgKEpTQzo6UGFyYW1ldGVyTm9kZTo6cGF0
dGVybik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlBhcmFtZXRlck5vZGU6Om5leHRQYXJhbSk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZ1bmN0aW9uUGFyYW1ldGVyczo6cGF0dGVybnMpOiBE
ZWxldGVkLgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJz
ZXI8TGV4ZXJUeXBlPjo6UGFyc2VyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46
On5QYXJzZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcik6
CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjphbGxvd0F1dG9tYXRpY1NlbWljb2xv
bik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVNvdXJjZUVsZW1lbnRz
KToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZUJpbmRpbmdQYXR0ZXJu
KToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXJyb3dGdW5jdGlvblNp
bmdsZUV4cHJlc3Npb25Cb2R5U291cmNlRWxlbWVudHMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8
TGV4ZXJUeXBlPjo6dHJ5UGFyc2VEZXN0cnVjdHVyaW5nUGF0dGVybkV4cHJlc3Npb24pOgorICAg
ICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTd2l0Y2hDbGF1c2VzKToKKyAgICAg
ICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlU3dpdGNoRGVmYXVsdENsYXVzZSk6Cisg
ICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUJsb2NrU3RhdGVtZW50KToKKyAg
ICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlU3RhdGVtZW50KToKKyAgICAgICAg
KEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRm9ybWFsUGFyYW1ldGVycyk6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSk6CisgICAgICAgIChK
U0M6OnN0cmluZ0ZvckZ1bmN0aW9uTW9kZSk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VDbGFzcyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZVByaW1hcnlFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46
OnBhcnNlTWVtYmVyRXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUFycm93RnVuY3Rpb25FeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6b3BlcmF0b3JT
dHJpbmcpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBcnJvd0Z1bmN0
aW9uU2luZ2xlRXhwcmVzc2lvbkJvZHkpOiBEZWxldGVkLgorICAgICAgICAqIHBhcnNlci9QYXJz
ZXIuaDoKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKToK
KyAgICAgICAgKEpTQzo6UGFyc2VyOjpsb2NhdGlvbkJlZm9yZUxhc3RUb2tlbik6CisgICAgICAg
IChKU0M6OlBhcnNlcjo6ZmluZENhY2hlZEZ1bmN0aW9uSW5mbyk6CisgICAgICAgIChKU0M6OlBh
cnNlcjo6aXNvZlRva2VuKToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjppc0VuZE9mQXJyb3dGdW5j
dGlvbik6CisgICAgICAgIChKU0M6OlBhcnNlcjo6aXNBcnJvd0Z1bmN0aW9uUGFyYW10ZXJzKToK
KyAgICAgICAgKEpTQzo6UGFyc2VyOjp0b2tlblN0YXJ0KToKKyAgICAgICAgKEpTQzo6UGFyc2Vy
OjpnZXRMYWJlbCk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6YXV0b1NlbWlDb2xvbik6CisgICAg
ICAgIChKU0M6OlBhcnNlcjo6c2V0RW5kT2ZTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpQYXJz
ZXI6OmNhblJlY3Vyc2UpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2Up
OgorICAgICAgICAoSlNDOjpwYXJzZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlckZ1bmN0aW9u
SW5mby5oOgorICAgICAgICAqIHBhcnNlci9QYXJzZXJNb2Rlcy5oOgorICAgICAgICAoSlNDOjpm
dW5jdGlvbk5hbWVJc0luU2NvcGUpOgorICAgICAgICAqIHBhcnNlci9Tb3VyY2VDb2RlLmg6Cisg
ICAgICAgIChKU0M6Om1ha2VTb3VyY2UpOgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlOjpzdWJF
eHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZTo6c3ViQXJyb3dFeHByZXNzaW9u
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYXJzZXIvU291cmNlUHJvdmlkZXJDYWNoZS5oOgorICAg
ICAgICAoSlNDOjpTb3VyY2VQcm92aWRlckNhY2hlOjpnZXQpOgorICAgICAgICAqIHBhcnNlci9T
b3VyY2VQcm92aWRlckNhY2hlSXRlbS5oOgorICAgICAgICAoSlNDOjpTb3VyY2VQcm92aWRlckNh
Y2hlSXRlbTo6ZW5kRnVuY3Rpb25Ub2tlbik6CisgICAgICAgIChKU0M6OlNvdXJjZVByb3ZpZGVy
Q2FjaGVJdGVtOjp1c2VkVmFyaWFibGVzKToKKyAgICAgICAgKEpTQzo6U291cmNlUHJvdmlkZXJD
YWNoZUl0ZW06OndyaXR0ZW5WYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpTb3VyY2VQcm92aWRl
ckNhY2hlSXRlbTo6U291cmNlUHJvdmlkZXJDYWNoZUl0ZW0pOgorICAgICAgICAqIHBhcnNlci9T
eW50YXhDaGVja2VyLmg6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OlN5bnRheENoZWNr
ZXIpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVDbGFzc0V4cHIpOgorICAg
ICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVGdW5jdGlvbkV4cHIpOgorICAgICAgICAo
SlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVGdW5jdGlvbkJvZHkpOgorICAgICAgICAoSlNDOjpT
eW50YXhDaGVja2VyOjpjcmVhdGVBcnJvd0Z1bmN0aW9uRXhwcik6CisgICAgICAgIChKU0M6OlN5
bnRheENoZWNrZXI6OnNldEZ1bmN0aW9uTmFtZVN0YXJ0KToKKyAgICAgICAgKEpTQzo6U3ludGF4
Q2hlY2tlcjo6Y3JlYXRlQXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6
Y3JlYXRlUHJvcGVydHlMaXN0KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRl
RWxlbWVudExpc3QpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVGb3JtYWxQ
YXJhbWV0ZXJMaXN0KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6YXBwZW5kUGFyYW1l
dGVyKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlQ2xhdXNlKToKKyAgICAg
ICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlQ2xhdXNlTGlzdCk6CisgICAgICAgICogcnVu
dGltZS9Db2RlQ2FjaGUuY3BwOgorICAgICAgICAoSlNDOjpDb2RlQ2FjaGU6OmdldEdsb2JhbENv
ZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0RnVuY3Rpb25FeGVjdXRhYmxl
RnJvbUdsb2JhbENvZGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5jcHA6CisgICAg
ICAgIChKU0M6OmNoZWNrU3ludGF4KToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3Bw
OgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6Y2hlY2tTeW50YXgpOgorICAgICAg
ICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpmdW5jdGlv
blByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKiB0ZXN0cy9jb250cm9sRmxvd1Byb2ZpbGVy
L2NvbmRpdGlvbmFsLWV4cHJlc3Npb24uanM6CisgICAgICAgICh0ZXN0Q29uZGl0aW9uYWxGdW5j
dGlvbkNhbGwpOgorCiAyMDE1LTA3LTE0ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBs
ZS5jb20+CiAKICAgICAgICAgQXNzZXJ0aW9ucy5oIHNob3VsZCBpbmNsdWRlIEV4cG9ydE1hY3Jv
cy5oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcAkocmV2
aXNpb24gMTg2ODA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgcHJpdmF0ZToKIHN0YXRpYyBib29s
IHBhcnNlU2NyaXB0KFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJv
ciYgZXJyb3IpCiB7CiAgICAgcmV0dXJuICEhSlNDOjpwYXJzZTxKU0M6OlByb2dyYW1Ob2RlPigK
LSAgICAgICAgdm0sIHNvdXJjZSwgMCwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2Rl
OjpOb3RCdWlsdGluLCAKKyAgICAgICAgdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNl
ckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCAKICAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpO
b3RTdHJpY3QsIEpTUGFyc2VyQ29kZVR5cGU6OlByb2dyYW0sIAogICAgICAgICBlcnJvcik7CiB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRp
bkV4ZWN1dGFibGVzLmNwcAkocmV2aXNpb24gMTg2ODA4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5
LDEwICs2OSw5IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3UKICAg
ICBVbmxpbmtlZEZ1bmN0aW9uS2luZCBraW5kID0gaXNQYXJzaW5nRGVmYXVsdENvbnN0cnVjdG9y
ID8gVW5saW5rZWROb3JtYWxGdW5jdGlvbiA6IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uOwogICAg
IFJlZlB0cjxTb3VyY2VQcm92aWRlcj4gc291cmNlT3ZlcnJpZGUgPSBpc1BhcnNpbmdEZWZhdWx0
Q29uc3RydWN0b3IgPyBzb3VyY2UucHJvdmlkZXIoKSA6IG51bGxwdHI7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFByb2dyYW1Ob2RlPiBwcm9ncmFtID0gcGFyc2U8UHJvZ3JhbU5vZGU+KAotICAgICAg
ICAmbV92bSwgc291cmNlLCAwLCBJZGVudGlmaWVyKCksIGJ1aWx0aW5Nb2RlLCAKLSAgICAgICAg
SlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIAotICAgICAgICBKU1BhcnNlckNvZGVUeXBl
OjpQcm9ncmFtLAotICAgICAgICBlcnJvciwgJnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUsIGNv
bnN0cnVjdG9yS2luZCk7CisgICAgICAgICZtX3ZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgYnVp
bHRpbk1vZGUsIAorICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgSlNQYXJz
ZXJDb2RlVHlwZTo6UHJvZ3JhbSwgZXJyb3IsIAorICAgICAgICAmcG9zaXRpb25CZWZvcmVMYXN0
TmV3bGluZSwgRnVuY3Rpb25QYXJzZU1vZGU6Ok5vdEFGdW5jdGlvbk1vZGUsIGNvbnN0cnVjdG9y
S2luZCk7CiAKICAgICBpZiAoIXByb2dyYW0pIHsKICAgICAgICAgZGF0YUxvZygiRmF0YWwgZXJy
b3IgY29tcGlsaW5nIGJ1aWx0aW4gZnVuY3Rpb24gJyIsIG5hbWUuc3RyaW5nKCksICInOiAiLCBl
cnJvci5tZXNzYWdlKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCShyZXZpc2lvbiAxODY4MDgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02MCwxNSArNjAsMTUgQEAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2sqIGdlbmVyYQogICAgIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUgPSBleGVjdXRh
YmxlLT5pc0J1aWx0aW5GdW5jdGlvbigpID8gSlNQYXJzZXJCdWlsdGluTW9kZTo6QnVpbHRpbiA6
IEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW47CiAgICAgSlNQYXJzZXJTdHJpY3RNb2Rl
IHN0cmljdE1vZGUgPSBleGVjdXRhYmxlLT5pc0luU3RyaWN0Q29udGV4dCgpID8gSlNQYXJzZXJT
dHJpY3RNb2RlOjpTdHJpY3QgOiBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdDsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8RnVuY3Rpb25Ob2RlPiBmdW5jdGlvbiA9IHBhcnNlPEZ1bmN0aW9uTm9k
ZT4oCi0gICAgICAgICZ2bSwgc291cmNlLCBleGVjdXRhYmxlLT5wYXJhbWV0ZXJzKCksIGV4ZWN1
dGFibGUtPm5hbWUoKSwgYnVpbHRpbk1vZGUsCi0gICAgICAgIHN0cmljdE1vZGUsIEpTUGFyc2Vy
Q29kZVR5cGU6OkZ1bmN0aW9uLCBlcnJvciwgMCk7CisgICAgICAgICZ2bSwgc291cmNlLCBleGVj
dXRhYmxlLT5uYW1lKCksIGJ1aWx0aW5Nb2RlLAorICAgICAgICBzdHJpY3RNb2RlLCBKU1BhcnNl
ckNvZGVUeXBlOjpGdW5jdGlvbiwgZXJyb3IsIDAsIGV4ZWN1dGFibGUtPnBhcnNlTW9kZSgpKTsK
IAogICAgIGlmICghZnVuY3Rpb24pIHsKICAgICAgICAgQVNTRVJUKGVycm9yLmlzVmFsaWQoKSk7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGZ1bmN0aW9uLT5maW5pc2hQ
YXJzaW5nKGV4ZWN1dGFibGUtPnBhcmFtZXRlcnMoKSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBleGVj
dXRhYmxlLT5mdW5jdGlvbk1vZGUoKSk7CisgICAgZnVuY3Rpb24tPmZpbmlzaFBhcnNpbmcoZXhl
Y3V0YWJsZS0+bmFtZSgpLCBleGVjdXRhYmxlLT5mdW5jdGlvbk1vZGUoKSk7CiAgICAgZXhlY3V0
YWJsZS0+cmVjb3JkUGFyc2UoZnVuY3Rpb24tPmZlYXR1cmVzKCksIGZ1bmN0aW9uLT5oYXNDYXB0
dXJlZFZhcmlhYmxlcygpKTsKICAgICAKICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBy
ZXN1bHQgPSBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVhdGUoJnZtLCBGdW5jdGlvbkNv
ZGUsCkBAIC04NCw3ICs4NCw2IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtl
ZEZ1bmMKICAgICA6IEJhc2UoKnZtLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX25hbWUobm9kZS0+aWRl
bnQoKSkKICAgICAsIG1faW5mZXJyZWROYW1lKG5vZGUtPmluZmVycmVkTmFtZSgpKQotICAgICwg
bV9wYXJhbWV0ZXJzKG5vZGUtPnBhcmFtZXRlcnMoKSkKICAgICAsIG1fc291cmNlT3ZlcnJpZGUo
V1RGOjptb3ZlKHNvdXJjZU92ZXJyaWRlKSkKICAgICAsIG1fZmlyc3RMaW5lT2Zmc2V0KG5vZGUt
PmZpcnN0TGluZSgpIC0gc291cmNlLmZpcnN0TGluZSgpKQogICAgICwgbV9saW5lQ291bnQobm9k
ZS0+bGFzdExpbmUoKSAtIG5vZGUtPmZpcnN0TGluZSgpKQpAQCAtOTYsNiArOTUsOCBAQCBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jCiAgICAgLCBtX3BhcmFtZXRlcnNT
dGFydE9mZnNldChub2RlLT5wYXJhbWV0ZXJzU3RhcnQoKSkKICAgICAsIG1fdHlwZVByb2ZpbGlu
Z1N0YXJ0T2Zmc2V0KG5vZGUtPmZ1bmN0aW9uS2V5d29yZFN0YXJ0KCkpCiAgICAgLCBtX3R5cGVQ
cm9maWxpbmdFbmRPZmZzZXQobm9kZS0+c3RhcnRTdGFydE9mZnNldCgpICsgbm9kZS0+c291cmNl
KCkubGVuZ3RoKCkgLSAxKQorICAgICwgbV9wYXJhbWV0ZXJDb3VudChub2RlLT5wYXJhbWV0ZXJD
b3VudCgpKQorICAgICwgbV9wYXJzZU1vZGUobm9kZS0+cGFyc2VNb2RlKCkpCiAgICAgLCBtX2Zl
YXR1cmVzKDApCiAgICAgLCBtX2lzSW5TdHJpY3RDb250ZXh0KG5vZGUtPmlzSW5TdHJpY3RDb250
ZXh0KCkpCiAgICAgLCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzKGZhbHNlKQpAQCAtMTA2LDExICsx
MDcsNiBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jCiAgICAgQVNT
RVJUKG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihub2RlLT5jb25z
dHJ1Y3RvcktpbmQoKSkpOwogfQogCi1zaXplX3QgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6
OnBhcmFtZXRlckNvdW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wYXJhbWV0ZXJzLT5zaXpl
KCk7Ci19Ci0KIHZvaWQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSogdGhpc09iamVjdCA9IGpzQ2FzdDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSo+KGNlbGwpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmgJKHJldmlzaW9uIDE4NjgwOCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBA
IC00OCw3ICs0OCw2IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgRGVidWdnZXI7CiBjbGFzcyBG
dW5jdGlvbkJvZHlOb2RlOwogY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwotY2xhc3MgRnVuY3Rp
b25QYXJhbWV0ZXJzOwogY2xhc3MgSlNTY29wZTsKIGNsYXNzIFBhcnNlckVycm9yOwogY2xhc3Mg
U2NyaXB0RXhlY3V0YWJsZTsKQEAgLTEyMiw3ICsxMjEsOCBAQCBwdWJsaWM6CiAgICAgewogICAg
ICAgICByZXR1cm4gKGtpbmQgPT0gQ29kZUZvckNhbGwpID8gbV9zeW1ib2xUYWJsZUZvckNhbGwu
Z2V0KCkgOiBtX3N5bWJvbFRhYmxlRm9yQ29uc3RydWN0LmdldCgpOwogICAgIH0KLSAgICBzaXpl
X3QgcGFyYW1ldGVyQ291bnQoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVyQ291bnQ7IH07CisgICAgRnVuY3Rpb25QYXJzZU1v
ZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZU1vZGU7IH07CiAgICAgYm9vbCBp
c0luU3RyaWN0Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJblN0cmljdENvbnRleHQ7IH0K
ICAgICBGdW5jdGlvbk1vZGUgZnVuY3Rpb25Nb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8RnVuY3Rpb25Nb2RlPihtX2Z1bmN0aW9uTW9kZSk7IH0KICAgICBDb25zdHJ1Y3RvcktpbmQg
Y29uc3RydWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JL
aW5kPihtX2NvbnN0cnVjdG9yS2luZCk7IH0KQEAgLTE1NCw4ICsxNTQsNiBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LmNsZWFyKCk7CiAgICAgfQogCi0gICAgRnVu
Y3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzKCkgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLmdldCgp
OyB9Ci0KICAgICB2b2lkIHJlY29yZFBhcnNlKENvZGVGZWF0dXJlcyBmZWF0dXJlcywgYm9vbCBo
YXNDYXB0dXJlZFZhcmlhYmxlcykKICAgICB7CiAgICAgICAgIG1fZmVhdHVyZXMgPSBmZWF0dXJl
czsKQEAgLTE4MSw3ICsxNzksNiBAQCBwcml2YXRlOgogICAgIFdyaXRlQmFycmllcjxKU1N0cmlu
Zz4gbV9uYW1lVmFsdWU7CiAgICAgV3JpdGVCYXJyaWVyPFN5bWJvbFRhYmxlPiBtX3N5bWJvbFRh
YmxlRm9yQ2FsbDsKICAgICBXcml0ZUJhcnJpZXI8U3ltYm9sVGFibGU+IG1fc3ltYm9sVGFibGVG
b3JDb25zdHJ1Y3Q7Ci0gICAgUmVmUHRyPEZ1bmN0aW9uUGFyYW1ldGVycz4gbV9wYXJhbWV0ZXJz
OwogICAgIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4gbV9zb3VyY2VPdmVycmlkZTsKICAgICB1bnNp
Z25lZCBtX2ZpcnN0TGluZU9mZnNldDsKICAgICB1bnNpZ25lZCBtX2xpbmVDb3VudDsKQEAgLTE5
Myw2ICsxOTAsOCBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fcGFyYW1ldGVyc1N0YXJ0T2Zm
c2V0OwogICAgIHVuc2lnbmVkIG1fdHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0OwogICAgIHVuc2ln
bmVkIG1fdHlwZVByb2ZpbGluZ0VuZE9mZnNldDsKKyAgICB1bnNpZ25lZCBtX3BhcmFtZXRlckNv
dW50OworICAgIEZ1bmN0aW9uUGFyc2VNb2RlIG1fcGFyc2VNb2RlOwogCiAgICAgQ29kZUZlYXR1
cmVzIG1fZmVhdHVyZXM7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHJldmlzaW9uIDE4NjgwOCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzExNiwxMCArMzExNiw2IEBAIFJlZ2lzdGVySUQqIERlc3RydWN0dXJpbmdBc3Np
Z25tZW50Tm9kZToKICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVk
ZWQoZHN0LCBpbml0aWFsaXplci5nZXQoKSk7CiB9CiAKLURlc3RydWN0dXJpbmdQYXR0ZXJuTm9k
ZTo6fkRlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSgpCi17Ci19Ci0KIHN0YXRpYyB2b2lkIGFzc2ln
bkRlZmF1bHRWYWx1ZUlmVW5kZWZpbmVkKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIG1heWJlVW5kZWZpbmVkLCBFeHByZXNzaW9uTm9kZSogZGVmYXVsdFZhbHVlKQog
ewogICAgIEFTU0VSVChkZWZhdWx0VmFsdWUpOwpAQCAtMzI3Nyw3ICszMjczLDcgQEAgdm9pZCBB
cnJheVBhdHRlcm5Ob2RlOjp0b1N0cmluZyhTdHJpbmdCdQogdm9pZCBBcnJheVBhdHRlcm5Ob2Rl
Ojpjb2xsZWN0Qm91bmRJZGVudGlmaWVycyhWZWN0b3I8SWRlbnRpZmllcj4mIGlkZW50aWZpZXJz
KSBjb25zdAogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90YXJnZXRQYXR0ZXJucy5z
aXplKCk7IGkrKykgewotICAgICAgICBpZiAoRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiBub2Rl
ID0gbV90YXJnZXRQYXR0ZXJuc1tpXS5wYXR0ZXJuLmdldCgpKQorICAgICAgICBpZiAoRGVzdHJ1
Y3R1cmluZ1BhdHRlcm5Ob2RlKiBub2RlID0gbV90YXJnZXRQYXR0ZXJuc1tpXS5wYXR0ZXJuKQog
ICAgICAgICAgICAgbm9kZS0+Y29sbGVjdEJvdW5kSWRlbnRpZmllcnMoaWRlbnRpZmllcnMpOwog
ICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5o
CShyZXZpc2lvbiAxODY4MDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1
aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtOTMsOCArOTMsNiBAQCBwdWJsaWM6CiAgICAgfTsK
IAogCi0gICAgdHlwZWRlZiBTeW50YXhDaGVja2VyIEZ1bmN0aW9uQm9keUJ1aWxkZXI7Ci0KICAg
ICB0eXBlZGVmIEV4cHJlc3Npb25Ob2RlKiBFeHByZXNzaW9uOwogICAgIHR5cGVkZWYgSlNDOjpT
b3VyY2VFbGVtZW50cyogU291cmNlRWxlbWVudHM7CiAgICAgdHlwZWRlZiBBcmd1bWVudHNOb2Rl
KiBBcmd1bWVudHM7CkBAIC0xMDksNyArMTA3LDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYgVGVt
cGxhdGVTdHJpbmdMaXN0Tm9kZSogVGVtcGxhdGVTdHJpbmdMaXN0OwogICAgIHR5cGVkZWYgVGVt
cGxhdGVMaXRlcmFsTm9kZSogVGVtcGxhdGVMaXRlcmFsOwogI2VuZGlmCi0gICAgdHlwZWRlZiBQ
YXJhbWV0ZXJOb2RlKiBGb3JtYWxQYXJhbWV0ZXJMaXN0OworICAgIHR5cGVkZWYgRnVuY3Rpb25Q
YXJhbWV0ZXJzKiBGb3JtYWxQYXJhbWV0ZXJMaXN0OwogICAgIHR5cGVkZWYgRnVuY3Rpb25Cb2R5
Tm9kZSogRnVuY3Rpb25Cb2R5OwogI2lmIEVOQUJMRShFUzZfQ0xBU1NfU1lOVEFYKQogICAgIHR5
cGVkZWYgQ2xhc3NFeHByTm9kZSogQ2xhc3NFeHByZXNzaW9uOwpAQCAtMTE5LDEwICsxMTcsMTAg
QEAgcHVibGljOgogICAgIHR5cGVkZWYgQ2FzZUNsYXVzZU5vZGUqIENsYXVzZTsKICAgICB0eXBl
ZGVmIENvbnN0RGVjbE5vZGUqIENvbnN0RGVjbExpc3Q7CiAgICAgdHlwZWRlZiBzdGQ6OnBhaXI8
RXhwcmVzc2lvbk5vZGUqLCBCaW5hcnlPcEluZm8+IEJpbmFyeU9wZXJhbmQ7Ci0gICAgdHlwZWRl
ZiBSZWZQdHI8RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlPiBEZXN0cnVjdHVyaW5nUGF0dGVybjsK
LSAgICB0eXBlZGVmIFJlZlB0cjxBcnJheVBhdHRlcm5Ob2RlPiBBcnJheVBhdHRlcm47Ci0gICAg
dHlwZWRlZiBSZWZQdHI8T2JqZWN0UGF0dGVybk5vZGU+IE9iamVjdFBhdHRlcm47Ci0gICAgdHlw
ZWRlZiBSZWZQdHI8QmluZGluZ05vZGU+IEJpbmRpbmdQYXR0ZXJuOworICAgIHR5cGVkZWYgRGVz
dHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiBEZXN0cnVjdHVyaW5nUGF0dGVybjsKKyAgICB0eXBlZGVm
IEFycmF5UGF0dGVybk5vZGUqIEFycmF5UGF0dGVybjsKKyAgICB0eXBlZGVmIE9iamVjdFBhdHRl
cm5Ob2RlKiBPYmplY3RQYXR0ZXJuOworICAgIHR5cGVkZWYgQmluZGluZ05vZGUqIEJpbmRpbmdQ
YXR0ZXJuOwogICAgIHN0YXRpYyBjb25zdCBib29sIENyZWF0ZXNBU1QgPSB0cnVlOwogICAgIHN0
YXRpYyBjb25zdCBib29sIE5lZWRzRnJlZVZhcmlhYmxlSW5mbyA9IHRydWU7CiAgICAgc3RhdGlj
IGNvbnN0IGJvb2wgQ2FuVXNlRnVuY3Rpb25DYWNoZSA9IHRydWU7CkBAIC0zNDQsMTEgKzM0Miwx
MSBAQCBwdWJsaWM6CiAgICAgfQogI2VuZGlmCiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRl
RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IFBhcnNl
ckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgaW5mbykKKyAgICBFeHByZXNzaW9uTm9kZSogY3Jl
YXRlRnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IFBh
cnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgZnVuY3Rpb25JbmZvKQogICAgIHsKLSAgICAg
ICAgRnVuY0V4cHJOb2RlKiByZXN1bHQgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIEZ1bmNFeHByTm9k
ZShsb2NhdGlvbiwgKmluZm8ubmFtZSwgaW5mby5ib2R5LAotICAgICAgICAgICAgbV9zb3VyY2VD
b2RlLT5zdWJFeHByZXNzaW9uKGluZm8uc3RhcnRGdW5jdGlvbk9mZnNldCwgaW5mby5lbmRGdW5j
dGlvbk9mZnNldCwgaW5mby5ib2R5U3RhcnRMaW5lLCBpbmZvLmJvZHlTdGFydENvbHVtbiksIGlu
Zm8ucGFyYW1ldGVycyk7Ci0gICAgICAgIGluZm8uYm9keS0+c2V0TG9jKGluZm8uYm9keVN0YXJ0
TGluZSwgaW5mby5ib2R5RW5kTGluZSwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxp
bmVTdGFydE9mZnNldCk7CisgICAgICAgIEZ1bmNFeHByTm9kZSogcmVzdWx0ID0gbmV3IChtX3Bh
cnNlckFyZW5hKSBGdW5jRXhwck5vZGUobG9jYXRpb24sICpmdW5jdGlvbkluZm8ubmFtZSwgZnVu
Y3Rpb25JbmZvLmJvZHksCisgICAgICAgICAgICBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24o
ZnVuY3Rpb25JbmZvLnN0YXJ0T2Zmc2V0LCBmdW5jdGlvbkluZm8uZW5kT2Zmc2V0LCBmdW5jdGlv
bkluZm8uc3RhcnRMaW5lLCBmdW5jdGlvbkluZm8uYm9keVN0YXJ0Q29sdW1uKSk7CisgICAgICAg
IGZ1bmN0aW9uSW5mby5ib2R5LT5zZXRMb2MoZnVuY3Rpb25JbmZvLnN0YXJ0TGluZSwgZnVuY3Rp
b25JbmZvLmVuZExpbmUsIGxvY2F0aW9uLnN0YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRP
ZmZzZXQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMzU2LDQ1ICszNTQs
NDEgQEAgcHVibGljOgogICAgICAgICBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRp
b24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIAogICAgICAgICB1bnNpZ25l
ZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3Rh
cnQsIAogICAgICAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQs
IGJvb2wgaW5TdHJpY3RDb250ZXh0LCAKLSAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVj
dG9yS2luZCkKKyAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgdW5zaWdu
ZWQgcGFyYW1ldGVyQ291bnQsIEZ1bmN0aW9uUGFyc2VNb2RlIG1vZGUpCiAgICAgewogICAgICAg
ICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5jdGlvbkJvZHlOb2RlKAogICAgICAgICAg
ICAgbV9wYXJzZXJBcmVuYSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIHN0YXJ0Q29sdW1u
LCBlbmRDb2x1bW4sIAogICAgICAgICAgICAgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9u
TmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIAotICAgICAgICAgICAgaW5TdHJpY3RDb250ZXh0
LCBjb25zdHJ1Y3RvcktpbmQpOworICAgICAgICAgICAgaW5TdHJpY3RDb250ZXh0LCBjb25zdHJ1
Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBtb2RlKTsKICAgICB9CiAKLSNpZiBFTkFCTEUoRVM2
X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVBcnJvd0Z1
bmN0aW9uRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBQYXJzZXJG
dW5jdGlvbkluZm88QVNUQnVpbGRlcj4mIGluZm8pCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0
ZUFycm93RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0
IFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgZnVuY3Rpb25JbmZvKQogICAgIHsKLSAg
ICAgICAgU291cmNlQ29kZSBzb3VyY2UgPSBpbmZvLmZ1bmN0aW9uQm9keVR5cGUgPT0gQXJyb3dG
dW5jdGlvbkJvZHlFeHByZXNzaW9uCi0gICAgICAgICAgICA/IG1fc291cmNlQ29kZS0+c3ViQXJy
b3dFeHByZXNzaW9uKGluZm8uYXJyb3dGdW5jdGlvbk9mZnNldCwgaW5mby5lbmRGdW5jdGlvbk9m
ZnNldCwgaW5mby5ib2R5U3RhcnRMaW5lLCBpbmZvLmJvZHlTdGFydENvbHVtbikKLSAgICAgICAg
ICAgIDogbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKGluZm8uc3RhcnRGdW5jdGlvbk9mZnNl
dCwgaW5mby5lbmRGdW5jdGlvbk9mZnNldCwgaW5mby5ib2R5U3RhcnRMaW5lLCBpbmZvLmJvZHlT
dGFydENvbHVtbik7CisgICAgICAgIFNvdXJjZUNvZGUgc291cmNlID0gbV9zb3VyY2VDb2RlLT5z
dWJFeHByZXNzaW9uKGZ1bmN0aW9uSW5mby5zdGFydE9mZnNldCwgZnVuY3Rpb25JbmZvLmVuZE9m
ZnNldCwgZnVuY3Rpb25JbmZvLnN0YXJ0TGluZSwgZnVuY3Rpb25JbmZvLmJvZHlTdGFydENvbHVt
bik7CiAKLSAgICAgICAgRnVuY0V4cHJOb2RlKiByZXN1bHQgPSBuZXcgKG1fcGFyc2VyQXJlbmEp
IEZ1bmNFeHByTm9kZShsb2NhdGlvbiwgKmluZm8ubmFtZSwgaW5mby5ib2R5LCBzb3VyY2UsIGlu
Zm8ucGFyYW1ldGVycyk7Ci0gICAgICAgIGluZm8uYm9keS0+c2V0TG9jKGluZm8uYm9keVN0YXJ0
TGluZSwgaW5mby5ib2R5RW5kTGluZSwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxp
bmVTdGFydE9mZnNldCk7CisgICAgICAgIEZ1bmNFeHByTm9kZSogcmVzdWx0ID0gbmV3IChtX3Bh
cnNlckFyZW5hKSBGdW5jRXhwck5vZGUobG9jYXRpb24sICpmdW5jdGlvbkluZm8ubmFtZSwgZnVu
Y3Rpb25JbmZvLmJvZHksIHNvdXJjZSk7CisgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5LT5zZXRM
b2MoZnVuY3Rpb25JbmZvLnN0YXJ0TGluZSwgZnVuY3Rpb25JbmZvLmVuZExpbmUsIGxvY2F0aW9u
LnN0YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOwogICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIH0KLSNlbmRpZgogCiAgICAgTkVWRVJfSU5MSU5FIFByb3BlcnR5Tm9kZSog
Y3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgYm9vbCwKLSAgICAgICAgY29uc3QgSWRlbnRp
ZmllciogbmFtZSwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+JiBpbmZvLCBT
dXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKQorICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBuYW1l
LCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4mIGZ1bmN0aW9uSW5mbywgU3Vw
ZXJCaW5kaW5nIHN1cGVyQmluZGluZykKICAgICB7CiAgICAgICAgIEFTU0VSVChuYW1lKTsKLSAg
ICAgICAgaW5mby5ib2R5LT5zZXRMb2MoaW5mby5ib2R5U3RhcnRMaW5lLCBpbmZvLmJvZHlFbmRM
aW5lLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKLSAg
ICAgICAgaW5mby5ib2R5LT5zZXRJbmZlcnJlZE5hbWUoKm5hbWUpOwotICAgICAgICBTb3VyY2VD
b2RlIHNvdXJjZSA9IG1fc291cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihpbmZvLnN0YXJ0RnVuY3Rp
b25PZmZzZXQsIGluZm8uZW5kRnVuY3Rpb25PZmZzZXQsIGluZm8uYm9keVN0YXJ0TGluZSwgaW5m
by5ib2R5U3RhcnRDb2x1bW4pOwotICAgICAgICBGdW5jRXhwck5vZGUqIGZ1bmNFeHByID0gbmV3
IChtX3BhcnNlckFyZW5hKSBGdW5jRXhwck5vZGUobG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFt
ZXMtPm51bGxJZGVudGlmaWVyLCBpbmZvLmJvZHksIHNvdXJjZSwgaW5mby5wYXJhbWV0ZXJzKTsK
KyAgICAgICAgZnVuY3Rpb25JbmZvLmJvZHktPnNldExvYyhmdW5jdGlvbkluZm8uc3RhcnRMaW5l
LCBmdW5jdGlvbkluZm8uZW5kTGluZSwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxp
bmVTdGFydE9mZnNldCk7CisgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5LT5zZXRJbmZlcnJlZE5h
bWUoKm5hbWUpOworICAgICAgICBTb3VyY2VDb2RlIHNvdXJjZSA9IG1fc291cmNlQ29kZS0+c3Vi
RXhwcmVzc2lvbihmdW5jdGlvbkluZm8uc3RhcnRPZmZzZXQsIGZ1bmN0aW9uSW5mby5lbmRPZmZz
ZXQsIGZ1bmN0aW9uSW5mby5zdGFydExpbmUsIGZ1bmN0aW9uSW5mby5ib2R5U3RhcnRDb2x1bW4p
OworICAgICAgICBGdW5jRXhwck5vZGUqIGZ1bmNFeHByID0gbmV3IChtX3BhcnNlckFyZW5hKSBG
dW5jRXhwck5vZGUobG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVy
LCBmdW5jdGlvbkluZm8uYm9keSwgc291cmNlKTsKICAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJz
ZXJBcmVuYSkgUHJvcGVydHlOb2RlKCpuYW1lLCBmdW5jRXhwciwgdHlwZSwgUHJvcGVydHlOb2Rl
OjpVbmtub3duLCBzdXBlckJpbmRpbmcpOwogICAgIH0KICAgICAKICAgICBORVZFUl9JTkxJTkUg
UHJvcGVydHlOb2RlKiBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KFZNKiB2bSwgUGFyc2Vy
QXJlbmEmIHBhcnNlckFyZW5hLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQcm9w
ZXJ0eU5vZGU6OlR5cGUgdHlwZSwgYm9vbCwKLSAgICAgICAgZG91YmxlIG5hbWUsIGNvbnN0IFBh
cnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgaW5mbywgU3VwZXJCaW5kaW5nIHN1cGVyQmlu
ZGluZykKKyAgICAgICAgZG91YmxlIG5hbWUsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RC
dWlsZGVyPiYgZnVuY3Rpb25JbmZvLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKQogICAgIHsK
LSAgICAgICAgaW5mby5ib2R5LT5zZXRMb2MoaW5mby5ib2R5U3RhcnRMaW5lLCBpbmZvLmJvZHlF
bmRMaW5lLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsK
KyAgICAgICAgZnVuY3Rpb25JbmZvLmJvZHktPnNldExvYyhmdW5jdGlvbkluZm8uc3RhcnRMaW5l
LCBmdW5jdGlvbkluZm8uZW5kTGluZSwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxp
bmVTdGFydE9mZnNldCk7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gcGFyc2Vy
QXJlbmEuaWRlbnRpZmllckFyZW5hKCkubWFrZU51bWVyaWNJZGVudGlmaWVyKHZtLCBuYW1lKTsK
LSAgICAgICAgU291cmNlQ29kZSBzb3VyY2UgPSBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24o
aW5mby5zdGFydEZ1bmN0aW9uT2Zmc2V0LCBpbmZvLmVuZEZ1bmN0aW9uT2Zmc2V0LCBpbmZvLmJv
ZHlTdGFydExpbmUsIGluZm8uYm9keVN0YXJ0Q29sdW1uKTsKLSAgICAgICAgRnVuY0V4cHJOb2Rl
KiBmdW5jRXhwciA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRnVuY0V4cHJOb2RlKGxvY2F0aW9uLCB2
bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIsIGluZm8uYm9keSwgc291cmNlLCBpbmZv
LnBhcmFtZXRlcnMpOworICAgICAgICBTb3VyY2VDb2RlIHNvdXJjZSA9IG1fc291cmNlQ29kZS0+
c3ViRXhwcmVzc2lvbihmdW5jdGlvbkluZm8uc3RhcnRPZmZzZXQsIGZ1bmN0aW9uSW5mby5lbmRP
ZmZzZXQsIGZ1bmN0aW9uSW5mby5zdGFydExpbmUsIGZ1bmN0aW9uSW5mby5ib2R5U3RhcnRDb2x1
bW4pOworICAgICAgICBGdW5jRXhwck5vZGUqIGZ1bmNFeHByID0gbmV3IChtX3BhcnNlckFyZW5h
KSBGdW5jRXhwck5vZGUobG9jYXRpb24sIHZtLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmll
ciwgZnVuY3Rpb25JbmZvLmJvZHksIHNvdXJjZSk7CiAgICAgICAgIHJldHVybiBuZXcgKG1fcGFy
c2VyQXJlbmEpIFByb3BlcnR5Tm9kZShpZGVudCwgZnVuY0V4cHIsIHR5cGUsIFByb3BlcnR5Tm9k
ZTo6VW5rbm93biwgc3VwZXJCaW5kaW5nKTsKICAgICB9CiAKQEAgLTQyMCwyMSArNDE0LDIxIEBA
IHB1YmxpYzoKICAgICBFbGVtZW50Tm9kZSogY3JlYXRlRWxlbWVudExpc3QoaW50IGVsaXNpb25z
LCBFeHByZXNzaW9uTm9kZSogZXhwcikgeyByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBFbGVt
ZW50Tm9kZShlbGlzaW9ucywgZXhwcik7IH0KICAgICBFbGVtZW50Tm9kZSogY3JlYXRlRWxlbWVu
dExpc3QoRWxlbWVudE5vZGUqIGVsZW1zLCBpbnQgZWxpc2lvbnMsIEV4cHJlc3Npb25Ob2RlKiBl
eHByKSB7IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEVsZW1lbnROb2RlKGVsZW1zLCBlbGlz
aW9ucywgZXhwcik7IH0KIAotICAgIFBhcmFtZXRlck5vZGUqIGNyZWF0ZUZvcm1hbFBhcmFtZXRl
ckxpc3QoRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gcGF0dGVybikgeyByZXR1cm4gbmV3IChtX3BhcnNl
ckFyZW5hKSBQYXJhbWV0ZXJOb2RlKHBhdHRlcm4pOyB9Ci0gICAgUGFyYW1ldGVyTm9kZSogY3Jl
YXRlRm9ybWFsUGFyYW1ldGVyTGlzdChQYXJhbWV0ZXJOb2RlKiBsaXN0LCBEZXN0cnVjdHVyaW5n
UGF0dGVybiBwYXR0ZXJuKSB7IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFBhcmFtZXRlck5v
ZGUobGlzdCwgcGF0dGVybik7IH0KKyAgICBGb3JtYWxQYXJhbWV0ZXJMaXN0IGNyZWF0ZUZvcm1h
bFBhcmFtZXRlckxpc3QoKSB7IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEZ1bmN0aW9uUGFy
YW1ldGVycygpOyB9CisgICAgdm9pZCBhcHBlbmRQYXJhbWV0ZXIoRm9ybWFsUGFyYW1ldGVyTGlz
dCBsaXN0LCBEZXN0cnVjdHVyaW5nUGF0dGVybiBwYXR0ZXJuKSB7IGxpc3QtPmFwcGVuZChwYXR0
ZXJuKTsgfQogCiAgICAgQ2FzZUNsYXVzZU5vZGUqIGNyZWF0ZUNsYXVzZShFeHByZXNzaW9uTm9k
ZSogZXhwciwgSlNDOjpTb3VyY2VFbGVtZW50cyogc3RhdGVtZW50cykgeyByZXR1cm4gbmV3ICht
X3BhcnNlckFyZW5hKSBDYXNlQ2xhdXNlTm9kZShleHByLCBzdGF0ZW1lbnRzKTsgfQogICAgIENs
YXVzZUxpc3ROb2RlKiBjcmVhdGVDbGF1c2VMaXN0KENhc2VDbGF1c2VOb2RlKiBjbGF1c2UpIHsg
cmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgQ2xhdXNlTGlzdE5vZGUoY2xhdXNlKTsgfQogICAg
IENsYXVzZUxpc3ROb2RlKiBjcmVhdGVDbGF1c2VMaXN0KENsYXVzZUxpc3ROb2RlKiB0YWlsLCBD
YXNlQ2xhdXNlTm9kZSogY2xhdXNlKSB7IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIENsYXVz
ZUxpc3ROb2RlKHRhaWwsIGNsYXVzZSk7IH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZ1
bmNEZWNsU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IFBh
cnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgaW5mbykKKyAgICBTdGF0ZW1lbnROb2RlKiBj
cmVhdGVGdW5jRGVjbFN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBj
b25zdCBQYXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4mIGZ1bmN0aW9uSW5mbykKICAgICB7
Ci0gICAgICAgIEZ1bmNEZWNsTm9kZSogZGVjbCA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRnVuY0Rl
Y2xOb2RlKGxvY2F0aW9uLCAqaW5mby5uYW1lLCBpbmZvLmJvZHksCi0gICAgICAgICAgICBtX3Nv
dXJjZUNvZGUtPnN1YkV4cHJlc3Npb24oaW5mby5zdGFydEZ1bmN0aW9uT2Zmc2V0LCBpbmZvLmVu
ZEZ1bmN0aW9uT2Zmc2V0LCBpbmZvLmJvZHlTdGFydExpbmUsIGluZm8uYm9keVN0YXJ0Q29sdW1u
KSwgaW5mby5wYXJhbWV0ZXJzKTsKLSAgICAgICAgaWYgKCppbmZvLm5hbWUgPT0gbV92bS0+cHJv
cGVydHlOYW1lcy0+YXJndW1lbnRzKQorICAgICAgICBGdW5jRGVjbE5vZGUqIGRlY2wgPSBuZXcg
KG1fcGFyc2VyQXJlbmEpIEZ1bmNEZWNsTm9kZShsb2NhdGlvbiwgKmZ1bmN0aW9uSW5mby5uYW1l
LCBmdW5jdGlvbkluZm8uYm9keSwKKyAgICAgICAgICAgIG1fc291cmNlQ29kZS0+c3ViRXhwcmVz
c2lvbihmdW5jdGlvbkluZm8uc3RhcnRPZmZzZXQsIGZ1bmN0aW9uSW5mby5lbmRPZmZzZXQsIGZ1
bmN0aW9uSW5mby5zdGFydExpbmUsIGZ1bmN0aW9uSW5mby5ib2R5U3RhcnRDb2x1bW4pKTsKKyAg
ICAgICAgaWYgKCpmdW5jdGlvbkluZm8ubmFtZSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcmd1
bWVudHMpCiAgICAgICAgICAgICB1c2VzQXJndW1lbnRzKCk7CiAgICAgICAgIG1fc2NvcGUubV9m
dW5jRGVjbGFyYXRpb25zLmFwcGVuZChkZWNsLT5ib2R5KCkpOwotICAgICAgICBpbmZvLmJvZHkt
PnNldExvYyhpbmZvLmJvZHlTdGFydExpbmUsIGluZm8uYm9keUVuZExpbmUsIGxvY2F0aW9uLnN0
YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOworICAgICAgICBmdW5jdGlvbklu
Zm8uYm9keS0+c2V0TG9jKGZ1bmN0aW9uSW5mby5zdGFydExpbmUsIGZ1bmN0aW9uSW5mby5lbmRM
aW5lLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKICAg
ICAgICAgcmV0dXJuIGRlY2w7CiAgICAgfQogCkBAIC00ODYsOSArNDgwLDkgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKLSAgICBTdGF0ZW1lbnROb2RlKiBj
cmVhdGVGb3JJbkxvb3AoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUGFzc1JlZlB0
cjxEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU+IHBhdHRlcm4sIEV4cHJlc3Npb25Ob2RlKiBpdGVy
LCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZVN0YXJ0
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZURpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZUVu
ZCwgaW50IHN0YXJ0LCBpbnQgZW5kKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZvckluTG9v
cChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBEZXN0cnVjdHVyaW5nUGF0dGVybiBw
YXR0ZXJuLCBFeHByZXNzaW9uTm9kZSogaXRlciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50cywg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGVTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVEaXZv
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVFbmQsIGludCBzdGFydCwgaW50IGVuZCkKICAgICB7
Ci0gICAgICAgIGF1dG8gbGV4cHIgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIERlc3RydWN0dXJpbmdB
c3NpZ25tZW50Tm9kZShsb2NhdGlvbiwgcGF0dGVybi5nZXQoKSwgMCk7CisgICAgICAgIGF1dG8g
bGV4cHIgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIERlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZShs
b2NhdGlvbiwgcGF0dGVybiwgMCk7CiAgICAgICAgIHJldHVybiBjcmVhdGVGb3JJbkxvb3AobG9j
YXRpb24sIGxleHByLCBpdGVyLCBzdGF0ZW1lbnRzLCBlU3RhcnQsIGVEaXZvdCwgZUVuZCwgc3Rh
cnQsIGVuZCk7CiAgICAgfQogICAgIApAQCAtNTAwLDkgKzQ5NCw5IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRl
Rm9yT2ZMb29wKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFBhc3NSZWZQdHI8RGVz
dHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlPiBwYXR0ZXJuLCBFeHByZXNzaW9uTm9kZSogaXRlciwgU3Rh
dGVtZW50Tm9kZSogc3RhdGVtZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVTdGFydCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGVEaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVFbmQsIGlu
dCBzdGFydCwgaW50IGVuZCkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVGb3JPZkxvb3AoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gcGF0dGVy
biwgRXhwcmVzc2lvbk5vZGUqIGl0ZXIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudHMsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBlU3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlRGl2b3QsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBlRW5kLCBpbnQgc3RhcnQsIGludCBlbmQpCiAgICAgewotICAg
ICAgICBhdXRvIGxleHByID0gbmV3IChtX3BhcnNlckFyZW5hKSBEZXN0cnVjdHVyaW5nQXNzaWdu
bWVudE5vZGUobG9jYXRpb24sIHBhdHRlcm4uZ2V0KCksIDApOworICAgICAgICBhdXRvIGxleHBy
ID0gbmV3IChtX3BhcnNlckFyZW5hKSBEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5vZGUobG9jYXRp
b24sIHBhdHRlcm4sIDApOwogICAgICAgICByZXR1cm4gY3JlYXRlRm9yT2ZMb29wKGxvY2F0aW9u
LCBsZXhwciwgaXRlciwgc3RhdGVtZW50cywgZVN0YXJ0LCBlRGl2b3QsIGVFbmQsIHN0YXJ0LCBl
bmQpOwogICAgIH0KIApAQCAtNzM4LDE0ICs3MzIsMTQgQEAgcHVibGljOgogCiAgICAgYm9vbCBp
c1Jlc29sdmUoRXhwcmVzc2lvbk5vZGUqIGV4cHIpIGNvbnN0IHsgcmV0dXJuIGV4cHItPmlzUmVz
b2x2ZU5vZGUoKTsgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZURlc3RydWN0dXJpbmdB
c3NpZ25tZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFBhc3NSZWZQdHI8RGVz
dHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlPiBwYXR0ZXJuLCBFeHByZXNzaW9uTm9kZSogaW5pdGlhbGl6
ZXIpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZURlc3RydWN0dXJpbmdBc3NpZ25tZW50KGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIERlc3RydWN0dXJpbmdQYXR0ZXJuIHBhdHRl
cm4sIEV4cHJlc3Npb25Ob2RlKiBpbml0aWFsaXplcikKICAgICB7Ci0gICAgICAgIHJldHVybiBu
ZXcgKG1fcGFyc2VyQXJlbmEpIERlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZShsb2NhdGlvbiwg
cGF0dGVybi5nZXQoKSwgaW5pdGlhbGl6ZXIpOworICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNl
ckFyZW5hKSBEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5vZGUobG9jYXRpb24sIHBhdHRlcm4sIGlu
aXRpYWxpemVyKTsKICAgICB9CiAgICAgCiAgICAgQXJyYXlQYXR0ZXJuIGNyZWF0ZUFycmF5UGF0
dGVybihjb25zdCBKU1Rva2VuTG9jYXRpb24mKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEFycmF5
UGF0dGVybk5vZGU6OmNyZWF0ZSgpOworICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5h
KSBBcnJheVBhdHRlcm5Ob2RlKCk7CiAgICAgfQogICAgIAogICAgIHZvaWQgYXBwZW5kQXJyYXlQ
YXR0ZXJuU2tpcEVudHJ5KEFycmF5UGF0dGVybiBub2RlLCBjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uKQpAQCAtNzU1LDMyICs3NDksMzIgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBl
bmRBcnJheVBhdHRlcm5FbnRyeShBcnJheVBhdHRlcm4gbm9kZSwgY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbiwgRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gcGF0dGVybiwgRXhwcmVzc2lvbk5v
ZGUqIGRlZmF1bHRWYWx1ZSkKICAgICB7Ci0gICAgICAgIG5vZGUtPmFwcGVuZEluZGV4KEFycmF5
UGF0dGVybk5vZGU6OkJpbmRpbmdUeXBlOjpFbGVtZW50LCBsb2NhdGlvbiwgcGF0dGVybi5nZXQo
KSwgZGVmYXVsdFZhbHVlKTsKKyAgICAgICAgbm9kZS0+YXBwZW5kSW5kZXgoQXJyYXlQYXR0ZXJu
Tm9kZTo6QmluZGluZ1R5cGU6OkVsZW1lbnQsIGxvY2F0aW9uLCBwYXR0ZXJuLCBkZWZhdWx0VmFs
dWUpOwogICAgIH0KIAogICAgIHZvaWQgYXBwZW5kQXJyYXlQYXR0ZXJuUmVzdEVudHJ5KEFycmF5
UGF0dGVybiBub2RlLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBEZXN0cnVjdHVy
aW5nUGF0dGVybiBwYXR0ZXJuKQogICAgIHsKLSAgICAgICAgbm9kZS0+YXBwZW5kSW5kZXgoQXJy
YXlQYXR0ZXJuTm9kZTo6QmluZGluZ1R5cGU6OlJlc3RFbGVtZW50LCBsb2NhdGlvbiwgcGF0dGVy
bi5nZXQoKSwgbnVsbHB0cik7CisgICAgICAgIG5vZGUtPmFwcGVuZEluZGV4KEFycmF5UGF0dGVy
bk5vZGU6OkJpbmRpbmdUeXBlOjpSZXN0RWxlbWVudCwgbG9jYXRpb24sIHBhdHRlcm4sIG51bGxw
dHIpOwogICAgIH0KIAogICAgIHZvaWQgZmluaXNoQXJyYXlQYXR0ZXJuKEFycmF5UGF0dGVybiBu
b2RlLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCiAgICAgewotICAgICAg
ICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLmdldCgpLCBkaXZvdFN0YXJ0LCBkaXZvdCwgZGl2
b3RFbmQpOworICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBkaXZvdFN0YXJ0LCBk
aXZvdCwgZGl2b3RFbmQpOwogICAgIH0KICAgICAKICAgICBPYmplY3RQYXR0ZXJuIGNyZWF0ZU9i
amVjdFBhdHRlcm4oY29uc3QgSlNUb2tlbkxvY2F0aW9uJikKICAgICB7Ci0gICAgICAgIHJldHVy
biBPYmplY3RQYXR0ZXJuTm9kZTo6Y3JlYXRlKCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fcGFy
c2VyQXJlbmEpIE9iamVjdFBhdHRlcm5Ob2RlKCk7CiAgICAgfQogICAgIAogICAgIHZvaWQgYXBw
ZW5kT2JqZWN0UGF0dGVybkVudHJ5KE9iamVjdFBhdHRlcm4gbm9kZSwgY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgYm9vbCB3YXNTdHJpbmcsIGNvbnN0IElkZW50aWZpZXImIGlkZW50
aWZpZXIsIERlc3RydWN0dXJpbmdQYXR0ZXJuIHBhdHRlcm4sIEV4cHJlc3Npb25Ob2RlKiBkZWZh
dWx0VmFsdWUpCiAgICAgewotICAgICAgICBub2RlLT5hcHBlbmRFbnRyeShsb2NhdGlvbiwgaWRl
bnRpZmllciwgd2FzU3RyaW5nLCBwYXR0ZXJuLmdldCgpLCBkZWZhdWx0VmFsdWUpOworICAgICAg
ICBub2RlLT5hcHBlbmRFbnRyeShsb2NhdGlvbiwgaWRlbnRpZmllciwgd2FzU3RyaW5nLCBwYXR0
ZXJuLCBkZWZhdWx0VmFsdWUpOwogICAgIH0KICAgICAKICAgICBCaW5kaW5nUGF0dGVybiBjcmVh
dGVCaW5kaW5nTG9jYXRpb24oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmll
ciYgYm91bmRQcm9wZXJ0eSwgY29uc3QgSlNUZXh0UG9zaXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZW5kKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEJpbmRpbmdOb2RlOjpjcmVh
dGUoYm91bmRQcm9wZXJ0eSwgc3RhcnQsIGVuZCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fcGFy
c2VyQXJlbmEpIEJpbmRpbmdOb2RlKGJvdW5kUHJvcGVydHksIHN0YXJ0LCBlbmQpOwogICAgIH0K
IAogICAgIHZvaWQgc2V0RW5kT2Zmc2V0KE5vZGUqIG5vZGUsIGludCBvZmZzZXQpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAkocmV2aXNpb24gMTg2ODA4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ5NCw3ICs0OTQsNyBAQCBzdGF0aWMgY29uc3QgTENoYXIgc2luZ2xlQ2hhcmFjdGVyRXNjYXBl
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogTGV4ZXI8VD46OkxleGVyKFZNKiB2bSwgSlNQYXJz
ZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSkKLSAgICA6IG1faXNSZXBhcnNpbmcoZmFsc2UpCisg
ICAgOiBtX2lzUmVwYXJzaW5nRnVuY3Rpb24oZmFsc2UpCiAgICAgLCBtX3ZtKHZtKQogICAgICwg
bV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKGJ1aWx0aW5Nb2RlID09IEpTUGFyc2VyQnVpbHRpbk1v
ZGU6OkJ1aWx0aW4pCiB7CkBAIC0xNzE1LDcgKzE3MTUsNiBAQCBib29sIExleGVyPFQ+OjpuZXh0
VG9rZW5Jc0NvbG9uKCkKICAgICByZXR1cm4gY29kZSA8IG1fY29kZUVuZCAmJiAqY29kZSA9PSAn
Oic7CiB9CiAKLSNpZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQogdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CiB2b2lkIExleGVyPFQ+OjpzZXRUb2tlblBvc2l0aW9uKEpTVG9rZW4qIHRv
a2VuUmVjb3JkKQogewpAQCAtMTcyNSw3ICsxNzI0LDYgQEAgdm9pZCBMZXhlcjxUPjo6c2V0VG9r
ZW5Qb3NpdGlvbihKU1Rva2VuKgogICAgIHRva2VuRGF0YS0+bGluZVN0YXJ0T2Zmc2V0ID0gY3Vy
cmVudExpbmVTdGFydE9mZnNldCgpOwogICAgIEFTU0VSVCh0b2tlbkRhdGEtPm9mZnNldCA+PSB0
b2tlbkRhdGEtPmxpbmVTdGFydE9mZnNldCk7CiB9Ci0jZW5kaWYKIAogdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CiBKU1Rva2VuVHlwZSBMZXhlcjxUPjo6bGV4KEpTVG9rZW4qIHRva2VuUmVjb3JkLCB1
bnNpZ25lZCBsZXhlckZsYWdzLCBib29sIHN0cmljdE1vZGUpCkBAIC0yNDExLDcgKzI0MDksNyBA
QCB2b2lkIExleGVyPFQ+OjpjbGVhcigpCiAgICAgVmVjdG9yPFVDaGFyPiBuZXdCdWZmZXJGb3JS
YXdUZW1wbGF0ZVN0cmluZzE2OwogICAgIG1fYnVmZmVyRm9yUmF3VGVtcGxhdGVTdHJpbmcxNi5z
d2FwKG5ld0J1ZmZlckZvclJhd1RlbXBsYXRlU3RyaW5nMTYpOwogCi0gICAgbV9pc1JlcGFyc2lu
ZyA9IGZhbHNlOworICAgIG1faXNSZXBhcnNpbmdGdW5jdGlvbiA9IGZhbHNlOwogfQogCiAvLyBJ
bnN0YW50aWF0ZSB0aGUgdHdvIGZsYXZvcnMgb2YgTGV4ZXIgd2UgbmVlZCBpbnN0ZWFkIG9mIHB1
dHRpbmcgbW9zdCBvZiB0aGlzIGZpbGUgaW4gTGV4ZXIuaApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9MZXhlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTGV4ZXIuaAkocmV2aXNpb24gMTg2ODA4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9MZXhlci5oCSh3b3JraW5nIGNvcHkpCkBAIC04NCwxMiArODQsMTAgQEAgcHVi
bGljOgogCiAgICAgLy8gRnVuY3Rpb25zIHRvIHNldCB1cCBwYXJzaW5nLgogICAgIHZvaWQgc2V0
Q29kZShjb25zdCBTb3VyY2VDb2RlJiwgUGFyc2VyQXJlbmEqKTsKLSAgICB2b2lkIHNldElzUmVw
YXJzaW5nKCkgeyBtX2lzUmVwYXJzaW5nID0gdHJ1ZTsgfQotICAgIGJvb2wgaXNSZXBhcnNpbmco
KSBjb25zdCB7IHJldHVybiBtX2lzUmVwYXJzaW5nOyB9CisgICAgdm9pZCBzZXRJc1JlcGFyc2lu
Z0Z1bmN0aW9uKCkgeyBtX2lzUmVwYXJzaW5nRnVuY3Rpb24gPSB0cnVlOyB9CisgICAgYm9vbCBp
c1JlcGFyc2luZ0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc1JlcGFyc2luZ0Z1bmN0aW9u
OyB9CiAKLSNpZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQogICAgIHZvaWQgc2V0
VG9rZW5Qb3NpdGlvbihKU1Rva2VuKiB0b2tlblJlY29yZCk7Ci0jZW5kaWYKICAgICBKU1Rva2Vu
VHlwZSBsZXgoSlNUb2tlbiosIHVuc2lnbmVkLCBib29sIHN0cmljdE1vZGUpOwogICAgIGJvb2wg
bmV4dFRva2VuSXNDb2xvbigpOwogICAgIGludCBsaW5lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4g
bV9saW5lTnVtYmVyOyB9CkBAIC0yMjQsNyArMjIyLDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBU
KiBtX2xpbmVTdGFydDsKICAgICBKU1RleHRQb3NpdGlvbiBtX3Bvc2l0aW9uQmVmb3JlTGFzdE5l
d2xpbmU7CiAgICAgSlNUb2tlbkxvY2F0aW9uIG1fbGFzdFRvY2tlbkxvY2F0aW9uOwotICAgIGJv
b2wgbV9pc1JlcGFyc2luZzsKKyAgICBib29sIG1faXNSZXBhcnNpbmdGdW5jdGlvbjsKICAgICBi
b29sIG1fYXRMaW5lU3RhcnQ7CiAgICAgYm9vbCBtX2Vycm9yOwogICAgIFN0cmluZyBtX2xleEVy
cm9yTWVzc2FnZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0
cnVjdG9ycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZUNvbnN0cnVjdG9ycy5oCShyZXZpc2lvbiAxODY4MDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAkod29ya2luZyBjb3B5KQpAQCAtODIwLDM0ICs4
MjAsMjIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBQYXJh
bWV0ZXJOb2RlOjpQYXJhbWV0ZXJOb2RlKFBhc3NSZWZQdHI8RGVzdHJ1Y3R1cmluZ1BhdHRlcm5O
b2RlPiBwYXR0ZXJuKQotICAgICAgICA6IG1fcGF0dGVybihwYXR0ZXJuKQotICAgICAgICAsIG1f
bmV4dCgwKQorICAgIGlubGluZSBGdW5jdGlvblBhcmFtZXRlcnM6OkZ1bmN0aW9uUGFyYW1ldGVy
cygpCiAgICAgewotICAgICAgICBBU1NFUlQobV9wYXR0ZXJuKTsKICAgICB9CiAKLSAgICBpbmxp
bmUgUGFyYW1ldGVyTm9kZTo6UGFyYW1ldGVyTm9kZShQYXJhbWV0ZXJOb2RlKiBwcmV2aW91cywg
UGFzc1JlZlB0cjxEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU+IHBhdHRlcm4pCi0gICAgICAgIDog
bV9wYXR0ZXJuKHBhdHRlcm4pCi0gICAgICAgICwgbV9uZXh0KDApCi0gICAgewotICAgICAgICBw
cmV2aW91cy0+bV9uZXh0ID0gdGhpczsKLSAgICAgICAgQVNTRVJUKG1fcGF0dGVybik7Ci0gICAg
ICAgIEFTU0VSVChwcmV2aW91cy0+bV9wYXR0ZXJuKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgRnVu
Y0V4cHJOb2RlOjpGdW5jRXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSwgUGFyYW1ldGVyTm9kZSogcGFyYW1ldGVyKQorICAgIGlubGluZSBG
dW5jRXhwck5vZGU6OkZ1bmNFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9u
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlKQogICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQog
ICAgICAgICAsIG1fYm9keShib2R5KQogICAgIHsKLSAgICAgICAgbV9ib2R5LT5maW5pc2hQYXJz
aW5nKHNvdXJjZSwgcGFyYW1ldGVyLCBpZGVudCwgRnVuY3Rpb25FeHByZXNzaW9uKTsKKyAgICAg
ICAgbV9ib2R5LT5maW5pc2hQYXJzaW5nKHNvdXJjZSwgaWRlbnQsIEZ1bmN0aW9uRXhwcmVzc2lv
bik7CiAgICAgfQogCi0gICAgaW5saW5lIEZ1bmNEZWNsTm9kZTo6RnVuY0RlY2xOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5j
dGlvbkJvZHlOb2RlKiBib2R5LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcmFtZXRlck5v
ZGUqIHBhcmFtZXRlcikKKyAgICBpbmxpbmUgRnVuY0RlY2xOb2RlOjpGdW5jRGVjbE5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEZ1
bmN0aW9uQm9keU5vZGUqIGJvZHksIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKICAgICAgICAg
OiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fYm9keShib2R5KQogICAgIHsK
LSAgICAgICAgbV9ib2R5LT5maW5pc2hQYXJzaW5nKHNvdXJjZSwgcGFyYW1ldGVyLCBpZGVudCwg
RnVuY3Rpb25EZWNsYXJhdGlvbik7CisgICAgICAgIG1fYm9keS0+ZmluaXNoUGFyc2luZyhzb3Vy
Y2UsIGlkZW50LCBGdW5jdGlvbkRlY2xhcmF0aW9uKTsKICAgICB9CiAKICNpZiBFTkFCTEUoRVM2
X0NMQVNTX1NZTlRBWCkKQEAgLTk0MywyNiArOTMxLDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IHsKICAgICB9CiAgICAgCi0gICAgaW5saW5lIFJlZjxBcnJheVBhdHRlcm5Ob2RlPiBBcnJheVBh
dHRlcm5Ob2RlOjpjcmVhdGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
QXJyYXlQYXR0ZXJuTm9kZSk7Ci0gICAgfQotICAgIAogICAgIGlubGluZSBPYmplY3RQYXR0ZXJu
Tm9kZTo6T2JqZWN0UGF0dGVybk5vZGUoKQogICAgICAgICA6IERlc3RydWN0dXJpbmdQYXR0ZXJu
Tm9kZSgpCiAgICAgewogICAgIH0KICAgICAKLSAgICBpbmxpbmUgUmVmPE9iamVjdFBhdHRlcm5O
b2RlPiBPYmplY3RQYXR0ZXJuTm9kZTo6Y3JlYXRlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IE9iamVjdFBhdHRlcm5Ob2RlKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgUmVm
PEJpbmRpbmdOb2RlPiBCaW5kaW5nTm9kZTo6Y3JlYXRlKGNvbnN0IElkZW50aWZpZXImIGJvdW5k
UHJvcGVydHksIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBzdGFydCwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGVuZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJpbmRpbmdOb2Rl
KGJvdW5kUHJvcGVydHksIHN0YXJ0LCBlbmQpKTsKLSAgICB9Ci0gICAgCiAgICAgaW5saW5lIEJp
bmRpbmdOb2RlOjpCaW5kaW5nTm9kZShjb25zdCBJZGVudGlmaWVyJiBib3VuZFByb3BlcnR5LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlbmQpCiAg
ICAgICAgIDogRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKCkKICAgICAgICAgLCBtX2Rpdm90U3Rh
cnQoc3RhcnQpCkBAIC05NzEsNyArOTQ0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAg
IH0KICAgICAKLSAgICBpbmxpbmUgRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlOjpEZXN0cnVj
dHVyaW5nQXNzaWdubWVudE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUGFz
c1JlZlB0cjxEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU+IGJpbmRpbmdzLCBFeHByZXNzaW9uTm9k
ZSogaW5pdGlhbGl6ZXIpCisgICAgaW5saW5lIERlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZTo6
RGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogYmluZGluZ3MsIEV4cHJlc3Npb25Ob2RlKiBp
bml0aWFsaXplcikKICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAg
LCBtX2JpbmRpbmdzKGJpbmRpbmdzKQogICAgICAgICAsIG1faW5pdGlhbGl6ZXIoaW5pdGlhbGl6
ZXIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAkocmV2aXNpb24g
MTg2ODA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTExNyw3ICsxMTcsNyBAQCBTdGF0ZW1lbnROb2RlKiBTY29wZU5vZGU6OnNp
bmdsZVN0YXRlbWVuCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm9ncmFt
Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1Qcm9ncmFtTm9kZTo6UHJvZ3Jh
bU5vZGUoUGFyc2VyQXJlbmEmIHBhcnNlckFyZW5hLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0
YXJ0TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVk
IHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJl
biwgVmFyU3RhY2smIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrJiBmdW5jU3RhY2ssIElkZW50aWZp
ZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVG
ZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKK1Byb2dyYW1Ob2RlOjpQcm9ncmFt
Tm9kZShQYXJzZXJBcmVuYSYgcGFyc2VyQXJlbmEsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3Rh
cnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5zaWduZWQg
c3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVu
LCBWYXJTdGFjayYgdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2smIGZ1bmNTdGFjaywgSWRlbnRpZmll
clNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQog
ICAgIDogU2NvcGVOb2RlKHBhcnNlckFyZW5hLCBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwg
c291cmNlLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMs
IGZlYXR1cmVzLCBudW1Db25zdGFudHMpCiAgICAgLCBtX3N0YXJ0Q29sdW1uKHN0YXJ0Q29sdW1u
KQogICAgICwgbV9lbmRDb2x1bW4oZW5kQ29sdW1uKQpAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQg
UHJvZ3JhbU5vZGU6OnNldENsb3NlZFZhcmlhYmxlcyhWZWMKIAogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tIEV2YWxOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAK
LUV2YWxOb2RlOjpFdmFsTm9kZShQYXJzZXJBcmVuYSYgcGFyc2VyQXJlbmEsIGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2Nh
dGlvbiwgdW5zaWduZWQsIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMqIGNoaWxk
cmVuLCBWYXJTdGFjayYgdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2smIGZ1bmNTdGFjaywgSWRlbnRp
ZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29k
ZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQorRXZhbE5vZGU6OkV2YWxOb2Rl
KFBhcnNlckFyZW5hJiBwYXJzZXJBcmVuYSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExv
Y2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCwgdW5z
aWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrJiB2YXJT
dGFjaywgRnVuY3Rpb25TdGFjayYgZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZh
cmlhYmxlcywgRnVuY3Rpb25QYXJhbWV0ZXJzKiwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBD
b2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCiAgICAgOiBTY29wZU5vZGUo
cGFyc2VyQXJlbmEsIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBzb3VyY2UsIGNoaWxkcmVu
LCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgZmVhdHVyZXMsIG51bUNv
bnN0YW50cykKICAgICAsIG1fZW5kQ29sdW1uKGVuZENvbHVtbikKIHsKQEAgLTEzOSwzOSArMTM5
LDExIEBAIEV2YWxOb2RlOjpFdmFsTm9kZShQYXJzZXJBcmVuYSYgcGFyc2VyQXIKIAogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9uQm9keU5vZGUgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIAotUmVmPEZ1bmN0aW9uUGFyYW1ldGVycz4gRnVuY3Rpb25QYXJh
bWV0ZXJzOjpjcmVhdGUoUGFyYW1ldGVyTm9kZSogZmlyc3RQYXJhbWV0ZXIpCi17Ci0gICAgdW5z
aWduZWQgcGFyYW1ldGVyQ291bnQgPSAwOwotICAgIGZvciAoUGFyYW1ldGVyTm9kZSogcGFyYW1l
dGVyID0gZmlyc3RQYXJhbWV0ZXI7IHBhcmFtZXRlcjsgcGFyYW1ldGVyID0gcGFyYW1ldGVyLT5u
ZXh0UGFyYW0oKSkKLSAgICAgICAgKytwYXJhbWV0ZXJDb3VudDsKLQotICAgIHNpemVfdCBvYmpl
Y3RTaXplID0gc2l6ZW9mKEZ1bmN0aW9uUGFyYW1ldGVycykgLSBzaXplb2Yodm9pZCopICsgc2l6
ZW9mKERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSopICogcGFyYW1ldGVyQ291bnQ7Ci0gICAgdm9p
ZCogc2xvdCA9IGZhc3RNYWxsb2Mob2JqZWN0U2l6ZSk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgKHNsb3QpIEZ1bmN0aW9uUGFyYW1ldGVycyhmaXJzdFBhcmFtZXRlciwgcGFyYW1ldGVyQ291
bnQpKTsKLX0KLQotRnVuY3Rpb25QYXJhbWV0ZXJzOjpGdW5jdGlvblBhcmFtZXRlcnMoUGFyYW1l
dGVyTm9kZSogZmlyc3RQYXJhbWV0ZXIsIHVuc2lnbmVkIHNpemUpCi0gICAgOiBtX3NpemUoc2l6
ZSkKLXsKLSAgICB1bnNpZ25lZCBpID0gMDsKLSAgICBmb3IgKFBhcmFtZXRlck5vZGUqIHBhcmFt
ZXRlciA9IGZpcnN0UGFyYW1ldGVyOyBwYXJhbWV0ZXI7IHBhcmFtZXRlciA9IHBhcmFtZXRlci0+
bmV4dFBhcmFtKCkpIHsKLSAgICAgICAgYXV0byBwYXR0ZXJuID0gcGFyYW1ldGVyLT5wYXR0ZXJu
KCk7Ci0gICAgICAgIHBhdHRlcm4tPnJlZigpOwotICAgICAgICBwYXR0ZXJucygpW2krK10gPSBw
YXR0ZXJuOwotICAgIH0KLX0KLQotRnVuY3Rpb25QYXJhbWV0ZXJzOjp+RnVuY3Rpb25QYXJhbWV0
ZXJzKCkKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCi0gICAg
ICAgIHBhdHRlcm5zKClbaV0tPmRlcmVmKCk7Ci19Ci0KIEZ1bmN0aW9uQm9keU5vZGU6OkZ1bmN0
aW9uQm9keU5vZGUoCiAgICAgUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0
YXJ0TG9jYXRpb24sIAogICAgIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVu
c2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIAotICAgIGludCBmdW5jdGlv
bktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0
LAotICAgIGJvb2wgaXNJblN0cmljdENvbnRleHQsIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3Rv
cktpbmQpCisgICAgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3Rh
cnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIAorICAgIENv
bnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBG
dW5jdGlvblBhcnNlTW9kZSBtb2RlKQogICAgICAgICA6IFN0YXRlbWVudE5vZGUoZW5kTG9jYXRp
b24pCiAgICAgICAgICwgbV9zdGFydENvbHVtbihzdGFydENvbHVtbikKICAgICAgICAgLCBtX2Vu
ZENvbHVtbihlbmRDb2x1bW4pCkBAIC0xNzksMTYgKzE1MSwxNyBAQCBGdW5jdGlvbkJvZHlOb2Rl
OjpGdW5jdGlvbkJvZHlOb2RlKAogICAgICAgICAsIG1fZnVuY3Rpb25OYW1lU3RhcnQoZnVuY3Rp
b25OYW1lU3RhcnQpCiAgICAgICAgICwgbV9wYXJhbWV0ZXJzU3RhcnQocGFyYW1ldGVyc1N0YXJ0
KQogICAgICAgICAsIG1fc3RhcnRTdGFydE9mZnNldChzdGFydExvY2F0aW9uLnN0YXJ0T2Zmc2V0
KQorICAgICAgICAsIG1fcGFyYW1ldGVyQ291bnQocGFyYW1ldGVyQ291bnQpCisgICAgICAgICwg
bV9wYXJzZU1vZGUobW9kZSkKICAgICAgICAgLCBtX2lzSW5TdHJpY3RDb250ZXh0KGlzSW5TdHJp
Y3RDb250ZXh0KQogICAgICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihjb25zdHJ1Y3RvcktpbmQpKQogewogICAgIEFTU0VSVChtX2NvbnN0cnVjdG9yS2luZCA9
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSk7CiB9CiAKLXZvaWQgRnVu
Y3Rpb25Cb2R5Tm9kZTo6ZmluaXNoUGFyc2luZyhjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBh
cmFtZXRlck5vZGUqIGZpcnN0UGFyYW1ldGVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgZW51
bSBGdW5jdGlvbk1vZGUgZnVuY3Rpb25Nb2RlKQordm9pZCBGdW5jdGlvbkJvZHlOb2RlOjpmaW5p
c2hQYXJzaW5nKGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgY29uc3QgSWRlbnRpZmllciYgaWRl
bnQsIGVudW0gRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSkKIHsKICAgICBtX3NvdXJjZSA9IHNv
dXJjZTsKLSAgICBtX3BhcmFtZXRlcnMgPSBGdW5jdGlvblBhcmFtZXRlcnM6OmNyZWF0ZShmaXJz
dFBhcmFtZXRlcik7CiAgICAgbV9pZGVudCA9IGlkZW50OwogICAgIG1fZnVuY3Rpb25Nb2RlID0g
ZnVuY3Rpb25Nb2RlOwogfQpAQCAtMjAxLDE3ICsxNzQsMTcgQEAgdm9pZCBGdW5jdGlvbkJvZHlO
b2RlOjpzZXRFbmRQb3NpdGlvbihKUwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0gRnVuY3Rpb25Ob2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUZ1bmN0aW9u
Tm9kZTo6RnVuY3Rpb25Ob2RlKFBhcnNlckFyZW5hJiBwYXJzZXJBcmVuYSwgY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0
aW9uLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVt
ZW50cyogY2hpbGRyZW4sIFZhclN0YWNrJiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayYgZnVuY1N0
YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYg
c291cmNlQ29kZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQorRnVu
Y3Rpb25Ob2RlOjpGdW5jdGlvbk5vZGUoUGFyc2VyQXJlbmEmIHBhcnNlckFyZW5hLCBjb25zdCBK
U1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5k
TG9jYXRpb24sIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJj
ZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2smIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrJiBm
dW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBGdW5jdGlvblBhcmFt
ZXRlcnMqIHBhcmFtZXRlcnMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIENvZGVGZWF0
dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKICAgICA6IFNjb3BlTm9kZShwYXJzZXJB
cmVuYSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIHNvdXJjZUNvZGUsIGNoaWxkcmVuLCB2
YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgZmVhdHVyZXMsIG51bUNvbnN0
YW50cykKKyAgICAsIG1fcGFyYW1ldGVycyhwYXJhbWV0ZXJzKQogICAgICwgbV9zdGFydENvbHVt
bihzdGFydENvbHVtbikKICAgICAsIG1fZW5kQ29sdW1uKGVuZENvbHVtbikKIHsKIH0KIAotdm9p
ZCBGdW5jdGlvbk5vZGU6OmZpbmlzaFBhcnNpbmcoUGFzc1JlZlB0cjxGdW5jdGlvblBhcmFtZXRl
cnM+IHBhcmFtZXRlcnMsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBlbnVtIEZ1bmN0aW9uTW9k
ZSBmdW5jdGlvbk1vZGUpCit2b2lkIEZ1bmN0aW9uTm9kZTo6ZmluaXNoUGFyc2luZyhjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCwgZW51bSBGdW5jdGlvbk1vZGUgZnVuY3Rpb25Nb2RlKQogewogICAg
IEFTU0VSVCghc291cmNlKCkuaXNOdWxsKCkpOwotICAgIG1fcGFyYW1ldGVycyA9IHBhcmFtZXRl
cnM7CiAgICAgbV9pZGVudCA9IGlkZW50OwogICAgIG1fZnVuY3Rpb25Nb2RlID0gZnVuY3Rpb25N
b2RlOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAkocmV2aXNpb24g
MTg2ODA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MSw2ICs0MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEFyZ3Vt
ZW50TGlzdE5vZGU7CiAgICAgY2xhc3MgQnl0ZWNvZGVHZW5lcmF0b3I7CiAgICAgY2xhc3MgRnVu
Y3Rpb25Cb2R5Tm9kZTsKKyAgICBjbGFzcyBGdW5jdGlvblBhcmFtZXRlcnM7CiAgICAgY2xhc3Mg
TGFiZWw7CiAgICAgY2xhc3MgUHJvcGVydHlMaXN0Tm9kZTsKICAgICBjbGFzcyBSZWFkTW9kaWZ5
UmVzb2x2ZU5vZGU7CkBAIC0xNTE2LDE5ICsxNTE3LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIFN0YXRlbWVudE5vZGUqIG1fZmluYWxseUJsb2NrOwogICAgIH07CiAKLSAgICBjbGFzcyBQ
YXJhbWV0ZXJOb2RlIDogcHVibGljIFBhcnNlckFyZW5hRGVsZXRhYmxlIHsKLSAgICBwdWJsaWM6
Ci0gICAgICAgIFBhcmFtZXRlck5vZGUoUGFzc1JlZlB0cjxEZXN0cnVjdHVyaW5nUGF0dGVybk5v
ZGU+KTsKLSAgICAgICAgUGFyYW1ldGVyTm9kZShQYXJhbWV0ZXJOb2RlKiwgUGFzc1JlZlB0cjxE
ZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU+KTsKLQotICAgICAgICBEZXN0cnVjdHVyaW5nUGF0dGVy
bk5vZGUqIHBhdHRlcm4oKSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm4uZ2V0KCk7IH0KLSAgICAg
ICAgUGFyYW1ldGVyTm9kZSogbmV4dFBhcmFtKCkgY29uc3QgeyByZXR1cm4gbV9uZXh0OyB9Ci0K
LSAgICBwcml2YXRlOgotICAgICAgICBSZWZQdHI8RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlPiBt
X3BhdHRlcm47Ci0gICAgICAgIFBhcmFtZXRlck5vZGUqIG1fbmV4dDsKLSAgICB9OwotCiAgICAg
Y2xhc3MgU2NvcGVOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUsIHB1YmxpYyBQYXJzZXJBcmVu
YVJvb3QgewogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBEZWNsYXJhdGlvblN0YWNrczo6
VmFyU3RhY2sgVmFyU3RhY2s7CkBAIC0xNTk4LDcgKzE1ODYsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIGNsYXNzIFByb2dyYW1Ob2RlIDogcHVibGljIFNjb3BlTm9kZSB7CiAgICAgcHVibGlj
OgotICAgICAgICBQcm9ncmFtTm9kZShQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCB1bnNpZ25lZCBzdGFydENvbHVt
biwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrJiwgRnVuY3Rp
b25TdGFjayYsIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVz
LCBpbnQgbnVtQ29uc3RhbnRzKTsKKyAgICAgICAgUHJvZ3JhbU5vZGUoUGFyc2VyQXJlbmEmLCBj
b25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwg
dW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMq
LCBWYXJTdGFjayYsIEZ1bmN0aW9uU3RhY2smLCBJZGVudGlmaWVyU2V0JiwgRnVuY3Rpb25QYXJh
bWV0ZXJzKiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50
cyk7CiAKICAgICAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4oKSBjb25zdCB7IHJldHVybiBtX3N0
YXJ0Q29sdW1uOyB9CiAgICAgICAgIHVuc2lnbmVkIGVuZENvbHVtbigpIGNvbnN0IHsgcmV0dXJu
IG1fZW5kQ29sdW1uOyB9CkBAIC0xNjE3LDcgKzE2MDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgIGNsYXNzIEV2YWxOb2RlIDogcHVibGljIFNjb3BlTm9kZSB7CiAgICAgcHVibGljOgotICAg
ICAgICBFdmFsTm9kZShQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQs
IGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWdu
ZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrJiwgRnVuY3Rpb25TdGFjayYs
IElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVt
Q29uc3RhbnRzKTsKKyAgICAgICAgRXZhbE5vZGUoUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgdW5zaWduZWQgc3Rh
cnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayYs
IEZ1bmN0aW9uU3RhY2smLCBJZGVudGlmaWVyU2V0JiwgRnVuY3Rpb25QYXJhbWV0ZXJzKiwgY29u
c3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CiAKICAgICAg
ICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBzdGFydENvbHVtbigpIGNvbnN0IHsgcmV0dXJuIDA7
IH0KICAgICAgICAgdW5zaWduZWQgZW5kQ29sdW1uKCkgY29uc3QgeyByZXR1cm4gbV9lbmRDb2x1
bW47IH0KQEAgLTE2MzAsMjMgKzE2MTgsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVu
c2lnbmVkIG1fZW5kQ29sdW1uOwogICAgIH07CiAKLSAgICBjbGFzcyBGdW5jdGlvblBhcmFtZXRl
cnMgOiBwdWJsaWMgUmVmQ291bnRlZDxGdW5jdGlvblBhcmFtZXRlcnM+IHsKLSAgICAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZ1bmN0
aW9uUGFyYW1ldGVycyk7CisgICAgY2xhc3MgRnVuY3Rpb25QYXJhbWV0ZXJzIDogcHVibGljIFBh
cnNlckFyZW5hRnJlZWFibGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFJlZjxGdW5j
dGlvblBhcmFtZXRlcnM+IGNyZWF0ZShQYXJhbWV0ZXJOb2RlKik7Ci0gICAgICAgIH5GdW5jdGlv
blBhcmFtZXRlcnMoKTsKLQotICAgICAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4g
bV9zaXplOyB9Ci0gICAgICAgIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogYXQodW5zaWduZWQg
aW5kZXgpIHsgQVNTRVJUKGluZGV4IDwgbV9zaXplKTsgcmV0dXJuIHBhdHRlcm5zKClbaW5kZXhd
OyB9CisgICAgICAgIEZ1bmN0aW9uUGFyYW1ldGVycygpOworICAgICAgICBBTFdBWVNfSU5MSU5F
IHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm5zLnNpemUoKTsgfQorICAg
ICAgICBBTFdBWVNfSU5MSU5FIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogYXQodW5zaWduZWQg
aW5kZXgpIHsgcmV0dXJuIG1fcGF0dGVybnNbaW5kZXhdOyB9CisgICAgICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBhcHBlbmQoRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiBwYXR0ZXJuKSB7IEFTU0VS
VChwYXR0ZXJuKTsgbV9wYXR0ZXJucy5hcHBlbmQocGF0dGVybik7IH0KIAogICAgIHByaXZhdGU6
Ci0gICAgICAgIEZ1bmN0aW9uUGFyYW1ldGVycyhQYXJhbWV0ZXJOb2RlKiwgdW5zaWduZWQgc2l6
ZSk7Ci0KLSAgICAgICAgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiogcGF0dGVybnMoKSB7IHJl
dHVybiAmbV9zdG9yYWdlOyB9CiAKLSAgICAgICAgdW5zaWduZWQgbV9zaXplOwotICAgICAgICBE
ZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUqIG1fc3RvcmFnZTsKKyAgICAgICAgVmVjdG9yPERlc3Ry
dWN0dXJpbmdQYXR0ZXJuTm9kZSosIDM+IG1fcGF0dGVybnM7CiAgICAgfTsKIAogICAgIGNsYXNz
IEZ1bmN0aW9uQm9keU5vZGUgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSwgcHVibGljIFBh
cnNlckFyZW5hRGVsZXRhYmxlIHsKQEAgLTE2NTcsMTMgKzE2MzgsMTEgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgICAgICBQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3Rh
cnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCAKICAgICAgICAgICAgIHVuc2lnbmVkIHN0
YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwg
CiAgICAgICAgICAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQs
IGJvb2wgaXNJblN0cmljdENvbnRleHQsIAotICAgICAgICAgICAgQ29uc3RydWN0b3JLaW5kKTsK
LQotICAgICAgICBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVy
biBtX3BhcmFtZXRlcnMuZ2V0KCk7IH0KKyAgICAgICAgICAgIENvbnN0cnVjdG9yS2luZCwgdW5z
aWduZWQsIEZ1bmN0aW9uUGFyc2VNb2RlKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKIAot
ICAgICAgICB2b2lkIGZpbmlzaFBhcnNpbmcoY29uc3QgU291cmNlQ29kZSYsIFBhcmFtZXRlck5v
ZGUqLCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25Nb2RlKTsKKyAgICAgICAgdm9pZCBmaW5p
c2hQYXJzaW5nKGNvbnN0IFNvdXJjZUNvZGUmLCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25N
b2RlKTsKICAgICAgICAgCiAgICAgICAgIHZvaWQgb3ZlcnJpZGVOYW1lKGNvbnN0IElkZW50aWZp
ZXImIGlkZW50KSB7IG1faWRlbnQgPSBpZGVudDsgfQogICAgICAgICBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCgpIHsgcmV0dXJuIG1faWRlbnQ7IH0KQEAgLTE2NzcsNiArMTY1Niw4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBpbnQgcGFyYW1ldGVyc1N0YXJ0KCkgY29uc3QgeyByZXR1cm4g
bV9wYXJhbWV0ZXJzU3RhcnQ7IH0KICAgICAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4oKSBjb25z
dCB7IHJldHVybiBtX3N0YXJ0Q29sdW1uOyB9CiAgICAgICAgIHVuc2lnbmVkIGVuZENvbHVtbigp
IGNvbnN0IHsgcmV0dXJuIG1fZW5kQ29sdW1uOyB9CisgICAgICAgIHVuc2lnbmVkIHBhcmFtZXRl
ckNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJDb3VudDsgfQorICAgICAgICBGdW5j
dGlvblBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3BhcnNlTW9kZTsgfQog
CiAgICAgICAgIHZvaWQgc2V0RW5kUG9zaXRpb24oSlNUZXh0UG9zaXRpb24pOwogCkBAIC0xNjkw
LDcgKzE2NzEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSWRlbnRpZmllciBtX2lkZW50
OwogICAgICAgICBJZGVudGlmaWVyIG1faW5mZXJyZWROYW1lOwogICAgICAgICBGdW5jdGlvbk1v
ZGUgbV9mdW5jdGlvbk1vZGU7Ci0gICAgICAgIFJlZlB0cjxGdW5jdGlvblBhcmFtZXRlcnM+IG1f
cGFyYW1ldGVyczsKICAgICAgICAgdW5zaWduZWQgbV9zdGFydENvbHVtbjsKICAgICAgICAgdW5z
aWduZWQgbV9lbmRDb2x1bW47CiAgICAgICAgIGludCBtX2Z1bmN0aW9uS2V5d29yZFN0YXJ0OwpA
QCAtMTY5OCwxOSArMTY3OCwyMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaW50IG1fcGFy
YW1ldGVyc1N0YXJ0OwogICAgICAgICBTb3VyY2VDb2RlIG1fc291cmNlOwogICAgICAgICBpbnQg
bV9zdGFydFN0YXJ0T2Zmc2V0OworICAgICAgICB1bnNpZ25lZCBtX3BhcmFtZXRlckNvdW50Owor
ICAgICAgICBGdW5jdGlvblBhcnNlTW9kZSBtX3BhcnNlTW9kZTsKICAgICAgICAgdW5zaWduZWQg
bV9pc0luU3RyaWN0Q29udGV4dCA6IDE7CiAgICAgICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JL
aW5kIDogMjsKICAgICB9OwogCiAgICAgY2xhc3MgRnVuY3Rpb25Ob2RlIGZpbmFsIDogcHVibGlj
IFNjb3BlTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBGdW5jdGlvbk5vZGUoUGFyc2VyQXJl
bmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGVuZCwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxl
bWVudHMqLCBWYXJTdGFjayYsIEZ1bmN0aW9uU3RhY2smLCBJZGVudGlmaWVyU2V0JiwgY29uc3Qg
U291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CisgICAgICAgIEZ1
bmN0aW9uTm9kZShQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQg
ZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrJiwgRnVuY3Rpb25TdGFjayYsIElk
ZW50aWZpZXJTZXQmLCBGdW5jdGlvblBhcmFtZXRlcnMqLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29k
ZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKIAotICAgICAgICBGdW5jdGlvblBhcmFtZXRl
cnMqIHBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMuZ2V0KCk7IH0KKyAg
ICAgICAgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9w
YXJhbWV0ZXJzOyB9CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CiAKLSAgICAgICAgdm9pZCBm
aW5pc2hQYXJzaW5nKFBhc3NSZWZQdHI8RnVuY3Rpb25QYXJhbWV0ZXJzPiwgY29uc3QgSWRlbnRp
ZmllciYsIEZ1bmN0aW9uTW9kZSk7CisgICAgICAgIHZvaWQgZmluaXNoUGFyc2luZyhjb25zdCBJ
ZGVudGlmaWVyJiwgRnVuY3Rpb25Nb2RlKTsKICAgICAgICAgCiAgICAgICAgIGNvbnN0IElkZW50
aWZpZXImIGlkZW50KCkgeyByZXR1cm4gbV9pZGVudDsgfQogCkBAIC0xNzI0LDE0ICsxNzA2LDE0
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByaXZhdGU6CiAgICAgICAgIElkZW50aWZpZXIgbV9p
ZGVudDsKICAgICAgICAgRnVuY3Rpb25Nb2RlIG1fZnVuY3Rpb25Nb2RlOwotICAgICAgICBSZWZQ
dHI8RnVuY3Rpb25QYXJhbWV0ZXJzPiBtX3BhcmFtZXRlcnM7CisgICAgICAgIEZ1bmN0aW9uUGFy
YW1ldGVycyogbV9wYXJhbWV0ZXJzOwogICAgICAgICB1bnNpZ25lZCBtX3N0YXJ0Q29sdW1uOwog
ICAgICAgICB1bnNpZ25lZCBtX2VuZENvbHVtbjsKICAgICB9OwogCiAgICAgY2xhc3MgRnVuY0V4
cHJOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEZ1
bmNFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRnVu
Y3Rpb25Cb2R5Tm9kZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJhbWV0ZXJOb2RlKiA9IDApOwor
ICAgICAgICBGdW5jRXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRp
ZmllciYsIEZ1bmN0aW9uQm9keU5vZGUqLCBjb25zdCBTb3VyY2VDb2RlJik7CiAKICAgICAgICAg
RnVuY3Rpb25Cb2R5Tm9kZSogYm9keSgpIHsgcmV0dXJuIG1fYm9keTsgfQogCkBAIC0xNzYyLDEx
ICsxNzQ0LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKICNlbmRpZgogCi0gICAgY2xhc3Mg
RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlIDogcHVibGljIFJlZkNvdW50ZWQ8RGVzdHJ1Y3R1cmlu
Z1BhdHRlcm5Ob2RlPiB7Ci0gICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERlc3RydWN0dXJp
bmdQYXR0ZXJuTm9kZSk7Ci0gICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotCisgICAg
Y2xhc3MgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlIDogcHVibGljIFBhcnNlckFyZW5hRnJlZWFi
bGUgewogICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+RGVzdHJ1Y3R1cmluZ1BhdHRlcm5O
b2RlKCkgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0Qm91bmRJZGVudGlmaWVycyhW
ZWN0b3I8SWRlbnRpZmllcj4mKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBiaW5k
VmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBzb3VyY2UpIGNvbnN0ID0gMDsK
ICAgICAgICAgdmlydHVhbCB2b2lkIHRvU3RyaW5nKFN0cmluZ0J1aWxkZXImKSBjb25zdCA9IDA7
CkBAIC0xNzc0LDIxICsxNzU0LDE5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFs
IGJvb2wgaXNCaW5kaW5nTm9kZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZp
cnR1YWwgUmVnaXN0ZXJJRCogZW1pdERpcmVjdEJpbmRpbmcoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiwgRXhwcmVzc2lvbk5vZGUqKSB7IHJldHVybiAwOyB9CiAgICAgICAgIAotICAg
ICAgICB2aXJ0dWFsIH5EZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUoKSA9IDA7Ci0gICAgICAgIAog
ICAgIHByb3RlY3RlZDoKICAgICAgICAgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKCk7CiAgICAg
fTsKIAogICAgIGNsYXNzIEFycmF5UGF0dGVybk5vZGUgOiBwdWJsaWMgRGVzdHJ1Y3R1cmluZ1Bh
dHRlcm5Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoK
KyAgICAgICAgQXJyYXlQYXR0ZXJuTm9kZSgpOwogICAgICAgICBlbnVtIGNsYXNzIEJpbmRpbmdU
eXBlIHsKICAgICAgICAgICAgIEVsaXNpb24sCiAgICAgICAgICAgICBFbGVtZW50LAogICAgICAg
ICAgICAgUmVzdEVsZW1lbnQKICAgICAgICAgfTsKIAotICAgICAgICBzdGF0aWMgUmVmPEFycmF5
UGF0dGVybk5vZGU+IGNyZWF0ZSgpOwogICAgICAgICB2b2lkIGFwcGVuZEluZGV4KEJpbmRpbmdU
eXBlIGJpbmRpbmdUeXBlLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBEZXN0cnVjdHVyaW5nUGF0
dGVybk5vZGUqIG5vZGUsIEV4cHJlc3Npb25Ob2RlKiBkZWZhdWx0VmFsdWUpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIG1fdGFyZ2V0UGF0dGVybnMuYXBwZW5kKHsgYmluZGluZ1R5cGUsIG5vZGUs
IGRlZmF1bHRWYWx1ZSB9KTsKQEAgLTE3OTcsMTAgKzE3NzUsOSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICBwcml2YXRlOgogICAgICAgICBzdHJ1Y3QgRW50cnkgewogICAgICAgICAgICAgQmluZGlu
Z1R5cGUgYmluZGluZ1R5cGU7Ci0gICAgICAgICAgICBSZWZQdHI8RGVzdHJ1Y3R1cmluZ1BhdHRl
cm5Ob2RlPiBwYXR0ZXJuOworICAgICAgICAgICAgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiBw
YXR0ZXJuOwogICAgICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGRlZmF1bHRWYWx1ZTsKICAgICAg
ICAgfTsKLSAgICAgICAgQXJyYXlQYXR0ZXJuTm9kZSgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
Y29sbGVjdEJvdW5kSWRlbnRpZmllcnMoVmVjdG9yPElkZW50aWZpZXI+JikgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBiaW5kVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCog
ZW1pdERpcmVjdEJpbmRpbmcoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkc3QsIEV4
cHJlc3Npb25Ob2RlKikgb3ZlcnJpZGU7CkBAIC0xODExLDIxICsxNzg4LDIwIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIAogICAgIGNsYXNzIE9iamVjdFBhdHRlcm5Ob2RlIDogcHVibGljIERlc3Ry
dWN0dXJpbmdQYXR0ZXJuTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUmVmPE9i
amVjdFBhdHRlcm5Ob2RlPiBjcmVhdGUoKTsKKyAgICAgICAgT2JqZWN0UGF0dGVybk5vZGUoKTsK
ICAgICAgICAgdm9pZCBhcHBlbmRFbnRyeShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudGlmaWVyLCBib29sIHdhc1N0cmluZywgRGVzdHJ1Y3R1cmluZ1BhdHRl
cm5Ob2RlKiBwYXR0ZXJuLCBFeHByZXNzaW9uTm9kZSogZGVmYXVsdFZhbHVlKQogICAgICAgICB7
CiAgICAgICAgICAgICBtX3RhcmdldFBhdHRlcm5zLmFwcGVuZChFbnRyeXsgaWRlbnRpZmllciwg
d2FzU3RyaW5nLCBwYXR0ZXJuLCBkZWZhdWx0VmFsdWUgfSk7CiAgICAgICAgIH0KICAgICAgICAg
CiAgICAgcHJpdmF0ZToKLSAgICAgICAgT2JqZWN0UGF0dGVybk5vZGUoKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIGNvbGxlY3RCb3VuZElkZW50aWZpZXJzKFZlY3RvcjxJZGVudGlmaWVyPiYpIGNv
bnN0IG92ZXJyaWRlOwogICAgICAgICB2aXJ0dWFsIHZvaWQgYmluZFZhbHVlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCopIGNvbnN0IG92ZXJyaWRlOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgdG9TdHJpbmcoU3RyaW5nQnVpbGRlciYpIGNvbnN0IG92ZXJyaWRlOwogICAgICAgICBzdHJ1
Y3QgRW50cnkgewogICAgICAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWU7CiAgICAgICAg
ICAgICBib29sIHdhc1N0cmluZzsKLSAgICAgICAgICAgIFJlZlB0cjxEZXN0cnVjdHVyaW5nUGF0
dGVybk5vZGU+IHBhdHRlcm47CisgICAgICAgICAgICBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUq
IHBhdHRlcm47CiAgICAgICAgICAgICBFeHByZXNzaW9uTm9kZSogZGVmYXVsdFZhbHVlOwogICAg
ICAgICB9OwogICAgICAgICBWZWN0b3I8RW50cnk+IG1fdGFyZ2V0UGF0dGVybnM7CkBAIC0xODMz
LDE0ICsxODA5LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQmluZGluZ05vZGUg
OiBwdWJsaWMgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IHN0YXRpYyBSZWY8QmluZGluZ05vZGU+IGNyZWF0ZShjb25zdCBJZGVudGlmaWVyJiBib3VuZFBy
b3BlcnR5LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBlbmQpOworICAgICAgICBCaW5kaW5nTm9kZShjb25zdCBJZGVudGlmaWVyJiBib3VuZFByb3Bl
cnR5LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBl
bmQpOwogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBib3VuZFByb3BlcnR5KCkgY29uc3QgeyBy
ZXR1cm4gbV9ib3VuZFByb3BlcnR5OyB9CiAKICAgICAgICAgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90U3RhcnQoKSBjb25zdCB7IHJldHVybiBtX2Rpdm90U3RhcnQ7IH0KICAgICAgICAgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKCkgY29uc3QgeyByZXR1cm4gbV9kaXZvdEVuZDsg
fQogICAgICAgICAKICAgICBwcml2YXRlOgotICAgICAgICBCaW5kaW5nTm9kZShjb25zdCBJZGVu
dGlmaWVyJiBib3VuZFByb3BlcnR5LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBlbmQpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0Qm91
bmRJZGVudGlmaWVycyhWZWN0b3I8SWRlbnRpZmllcj4mKSBjb25zdCBvdmVycmlkZTsKICAgICAg
ICAgdmlydHVhbCB2b2lkIGJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
KSBjb25zdCBvdmVycmlkZTsKQEAgLTE4NTUsOCArMTgzMCw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgY2xhc3MgRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlIDogcHVibGljIEV4cHJlc3Np
b25Ob2RlLCBwdWJsaWMgUGFyc2VyQXJlbmFEZWxldGFibGUgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFBh
c3NSZWZQdHI8RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlPiwgRXhwcmVzc2lvbk5vZGUqKTsKLSAg
ICAgICAgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiBiaW5kaW5ncygpIHsgcmV0dXJuIG1fYmlu
ZGluZ3MuZ2V0KCk7IH0KKyAgICAgICAgRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSosIEV4cHJlc3Npb25O
b2RlKik7CisgICAgICAgIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogYmluZGluZ3MoKSB7IHJl
dHVybiBtX2JpbmRpbmdzOyB9CiAgICAgICAgIAogICAgICAgICB1c2luZyBQYXJzZXJBcmVuYURl
bGV0YWJsZTo6b3BlcmF0b3IgbmV3OwogCkBAIC0xODY1LDEzICsxODQwLDEzIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNEZXN0cnVjdHVyaW5nTm9kZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRl
OwogCi0gICAgICAgIFJlZlB0cjxEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU+IG1fYmluZGluZ3M7
CisgICAgICAgIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogbV9iaW5kaW5nczsKICAgICAgICAg
RXhwcmVzc2lvbk5vZGUqIG1faW5pdGlhbGl6ZXI7CiAgICAgfTsKIAogICAgIGNsYXNzIEZ1bmNE
ZWNsTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEZ1
bmNEZWNsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRnVu
Y3Rpb25Cb2R5Tm9kZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJhbWV0ZXJOb2RlKiA9IDApOwor
ICAgICAgICBGdW5jRGVjbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRp
ZmllciYsIEZ1bmN0aW9uQm9keU5vZGUqLCBjb25zdCBTb3VyY2VDb2RlJik7CiAKICAgICAgICAg
dmlydHVhbCBib29sIGlzRnVuY0RlY2xOb2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQogICAgICAgICBGdW5jdGlvbkJvZHlOb2RlKiBib2R5KCkgeyByZXR1cm4gbV9ib2R5OyB9
CkBAIC0xOTY3LDExICsxOTQyLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIENvbnN0RGVj
bE5vZGUqIHRhaWw7CiAgICAgfTsKIAotICAgIHN0cnVjdCBQYXJhbWV0ZXJMaXN0IHsKLSAgICAg
ICAgUGFyYW1ldGVyTm9kZSogaGVhZDsKLSAgICAgICAgUGFyYW1ldGVyTm9kZSogdGFpbDsKLSAg
ICB9OwotCiAgICAgc3RydWN0IENsYXVzZUxpc3QgewogICAgICAgICBDbGF1c2VMaXN0Tm9kZSog
aGVhZDsKICAgICAgICAgQ2xhdXNlTGlzdE5vZGUqIHRhaWw7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCShyZXZpc2lvbiAxODY4MDgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MSw4ICsx
OTEsNyBAQCB2b2lkIFBhcnNlcjxMZXhlclR5cGU+Ojpsb2dFcnJvcihib29sIHNoCiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiBQYXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2VyKAotICAg
IFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvblBhcmFtZXRlcnMqIHBh
cmFtZXRlcnMsIAotICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIEpTUGFyc2VyQnVpbHRpbk1v
ZGUgYnVpbHRpbk1vZGUsIAorICAgIFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBK
U1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLCAKICAgICBKU1BhcnNlclN0cmljdE1vZGUg
c3RyaWN0TW9kZSwgSlNQYXJzZXJDb2RlVHlwZSBjb2RlVHlwZSwgCiAgICAgQ29uc3RydWN0b3JL
aW5kIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlKQogICAg
IDogbV92bSh2bSkKQEAgLTIyMywzMCArMjIyLDcgQEAgUGFyc2VyPExleGVyVHlwZT46OlBhcnNl
cigKICAgICAgICAgc2NvcGUtPnNldElzRnVuY3Rpb24oKTsKICAgICBpZiAoc3RyaWN0TW9kZSA9
PSBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCkKICAgICAgICAgc2NvcGUtPnNldFN0cmljdE1v
ZGUoKTsKLSAgICBpZiAocGFyYW1ldGVycykgewotICAgICAgICBib29sIGhhZEJpbmRpbmdQYXJh
bWV0ZXJzID0gZmFsc2U7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXJhbWV0
ZXJzLT5zaXplKCk7IGkrKykgewotICAgICAgICAgICAgYXV0byBwYXJhbWV0ZXIgPSBwYXJhbWV0
ZXJzLT5hdChpKTsKLSAgICAgICAgICAgIGlmICghcGFyYW1ldGVyLT5pc0JpbmRpbmdOb2RlKCkp
IHsKLSAgICAgICAgICAgICAgICBoYWRCaW5kaW5nUGFyYW1ldGVycyA9IHRydWU7Ci0gICAgICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzY29wZS0+ZGVj
bGFyZVBhcmFtZXRlcigmc3RhdGljX2Nhc3Q8QmluZGluZ05vZGUqPihwYXJhbWV0ZXIpLT5ib3Vu
ZFByb3BlcnR5KCkpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChoYWRCaW5kaW5nUGFyYW1ldGVy
cykgewotICAgICAgICAgICAgVmVjdG9yPElkZW50aWZpZXI+IGJvdW5kUGFyYW1ldGVyTmFtZXM7
Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFyYW1ldGVycy0+c2l6ZSgp
OyBpKyspIHsKLSAgICAgICAgICAgICAgICBhdXRvIHBhcmFtZXRlciA9IHBhcmFtZXRlcnMtPmF0
KGkpOwotICAgICAgICAgICAgICAgIGlmIChwYXJhbWV0ZXItPmlzQmluZGluZ05vZGUoKSkKLSAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgcGFyYW1ldGVyLT5j
b2xsZWN0Qm91bmRJZGVudGlmaWVycyhib3VuZFBhcmFtZXRlck5hbWVzKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGZvciAoYXV0byYgYm91bmRQYXJhbWV0ZXJOYW1lIDogYm91bmRQYXJh
bWV0ZXJOYW1lcykKLSAgICAgICAgICAgICAgICBzY29wZS0+ZGVjbGFyZVZhcmlhYmxlKCZib3Vu
ZFBhcmFtZXRlck5hbWUpOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmICghbmFtZS5pc051bGwo
KSkKLSAgICAgICAgc2NvcGUtPmRlY2xhcmVDYWxsZWUoJm5hbWUpOworCiAgICAgbmV4dCgpOwog
fQogCkBAIC0yNTYsMTYgKzIzMiw1NCBAQCBQYXJzZXI8TGV4ZXJUeXBlPjo6flBhcnNlcigpCiB9
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci1TdHJpbmcgUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlSW5uZXIoKQorU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKGNv
bnN0IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIEZ1bmN0aW9uUGFyc2VNb2RlIHBhcnNlTW9kZSkK
IHsKICAgICBTdHJpbmcgcGFyc2VFcnJvciA9IFN0cmluZygpOwogICAgIAogICAgIEFTVEJ1aWxk
ZXIgY29udGV4dChjb25zdF9jYXN0PFZNKj4obV92bSksIG1fcGFyc2VyQXJlbmEsIGNvbnN0X2Nh
c3Q8U291cmNlQ29kZSo+KG1fc291cmNlKSk7Ci0gICAgaWYgKG1fbGV4ZXItPmlzUmVwYXJzaW5n
KCkpCi0gICAgICAgIG1fc3RhdGVtZW50RGVwdGgtLTsKICAgICBTY29wZVJlZiBzY29wZSA9IGN1
cnJlbnRTY29wZSgpOwotICAgIFNvdXJjZUVsZW1lbnRzKiBzb3VyY2VFbGVtZW50cyA9IHBhcnNl
U291cmNlRWxlbWVudHMoY29udGV4dCwgQ2hlY2tGb3JTdHJpY3RNb2RlLCBTdGFuZGFyZEZ1bmN0
aW9uUGFyc2VUeXBlKTsKLSAgICBpZiAoIXNvdXJjZUVsZW1lbnRzIHx8ICFjb25zdW1lKEVPRlRP
SykpIHsKKworICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gPSBmYWxzZTsK
KyNpZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQorICAgIGlmIChtX2xleGVyLT5p
c1JlcGFyc2luZ0Z1bmN0aW9uKCkpIHsKKyAgICAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1
aWxkZXI+IGZ1bmN0aW9uSW5mbzsKKyAgICAgICAgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoY29u
dGV4dCwgcGFyc2VNb2RlLCBmdW5jdGlvbkluZm8pOworICAgICAgICBtX3BhcmFtZXRlcnMgPSBm
dW5jdGlvbkluZm8ucGFyYW1ldGVyczsKKworICAgICAgICBpZiAocGFyc2VNb2RlID09IEFycm93
RnVuY3Rpb25Nb2RlKSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChtYXRjaChBUlJPV0ZV
TkNUSU9OKSk7CisgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICBpc0Fycm93RnVuY3Rp
b25Cb2R5RXhwcmVzc2lvbiA9ICFtYXRjaChPUEVOQlJBQ0UpOworICAgICAgICB9CisgICAgfQor
I2VuZGlmCisKKyAgICBpZiAoIWNhbGxlZU5hbWUuaXNOdWxsKCkpCisgICAgICAgIHNjb3BlLT5k
ZWNsYXJlQ2FsbGVlKCZjYWxsZWVOYW1lKTsKKworICAgIGlmIChtX2xleGVyLT5pc1JlcGFyc2lu
Z0Z1bmN0aW9uKCkpCisgICAgICAgIG1fc3RhdGVtZW50RGVwdGgtLTsKKworICAgIFNvdXJjZUVs
ZW1lbnRzKiBzb3VyY2VFbGVtZW50cyA9IG51bGxwdHI7CisgICAgLy8gVGhlIG9ubHkgd2F5IHdl
IGNhbiBlcnJvciB0aGlzIGVhcmx5IGlzIGlmIHdlIHJlcGFyc2UgYSBmdW5jdGlvbiBhbmQgd2Ug
cnVuIG91dCBvZiBzdGFjayBzcGFjZS4KKyAgICBpZiAoIWhhc0Vycm9yKCkpIHsKKyAgICAgICAg
aWYgKGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQorICAgICAgICAgICAgc291cmNlRWxl
bWVudHMgPSBwYXJzZUFycm93RnVuY3Rpb25TaW5nbGVFeHByZXNzaW9uQm9keVNvdXJjZUVsZW1l
bnRzKGNvbnRleHQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzb3VyY2VFbGVtZW50cyA9
IHBhcnNlU291cmNlRWxlbWVudHMoY29udGV4dCwgQ2hlY2tGb3JTdHJpY3RNb2RlKTsKKyAgICB9
CisKKyAgICBib29sIHZhbGlkRW5kaW5nOworICAgIGlmIChpc0Fycm93RnVuY3Rpb25Cb2R5RXhw
cmVzc2lvbikgeworICAgICAgICBBU1NFUlQobV9sZXhlci0+aXNSZXBhcnNpbmdGdW5jdGlvbigp
KTsKKyAgICAgICAgLy8gV2hlbiB3ZSByZXBhcnNlIGFuZCBzdGFjayBvdmVyZmxvdywgd2UncmUg
bm90IGd1YXJhbnRlZWQgYSB2YWxpZCBlbmRpbmcuIElmIHdlIGRvbid0IHJ1biBvdXQgb2Ygc3Rh
Y2sgc3BhY2UsCisgICAgICAgIC8vIHRoZW4gb2YgY291cnNlIHRoaXMgd2lsbCBhbHdheXMgYmUg
dmFsaWQgYmVjYXVzZSB3ZSBhbHJlYWR5IHBhcnNlZCBmb3Igc3ludGF4IGVycm9ycy4gQnV0IHdl
IG11c3QKKyAgICAgICAgLy8gYmUgY2F1dGlvdXMgaW4gY2FzZSB3ZSBydW4gb3V0IG9mIHN0YWNr
IHNwYWNlLgorICAgICAgICB2YWxpZEVuZGluZyA9IGlzRW5kT2ZBcnJvd0Z1bmN0aW9uKCk7IAor
ICAgIH0gZWxzZQorICAgICAgICB2YWxpZEVuZGluZyA9IGNvbnN1bWUoRU9GVE9LKTsKKworICAg
IGlmICghc291cmNlRWxlbWVudHMgfHwgIXZhbGlkRW5kaW5nKSB7CiAgICAgICAgIGlmIChoYXNF
cnJvcigpKQogICAgICAgICAgICAgcGFyc2VFcnJvciA9IG1fZXJyb3JNZXNzYWdlOwogICAgICAg
ICBlbHNlCkBAIC0zNDMsNyArMzU3LDcgQEAgYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6YWxsb3dB
dXRvbWF0aWNTZQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgotdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46
OnBhcnNlU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImIGNvbnRleHQsIFNvdXJjZUVsZW1lbnRz
TW9kZSBtb2RlLCBGdW5jdGlvblBhcnNlVHlwZSBmdW5jdGlvblBhcnNlVHlwZSkKK3RlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZVNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBTb3VyY2VFbGVtZW50
c01vZGUgbW9kZSkKIHsKICAgICBjb25zdCB1bnNpZ25lZCBsZW5ndGhPZlVzZVN0cmljdExpdGVy
YWwgPSAxMjsgLy8gInVzZSBzdHJpY3QiLmxlbmd0aAogICAgIFRyZWVTb3VyY2VFbGVtZW50cyBz
b3VyY2VFbGVtZW50cyA9IGNvbnRleHQuY3JlYXRlU291cmNlRWxlbWVudHMoKTsKQEAgLTM1Mywy
MiArMzY3LDYgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRQogICAg
IGF1dG8gc2F2ZVBvaW50ID0gY3JlYXRlU2F2ZVBvaW50KCk7CiAgICAgYm9vbCBoYXNTZXRTdHJp
Y3QgPSBmYWxzZTsKICAgICAKLSNpZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQot
ICAgIGlmIChtYXRjaChBUlJPV0ZVTkNUSU9OKSkgewotICAgICAgICBUcmVlU3RhdGVtZW50IGFy
cm93ZnVuY3Rpb25TdGF0ZW1lbnQgPSBwYXJzZUFycm93RnVuY3Rpb25TaW5nbGVFeHByZXNzaW9u
Qm9keShjb250ZXh0LCBmdW5jdGlvblBhcnNlVHlwZSk7Ci0gICAgICAgICAgICAKLSAgICAgICAg
aWYgKGFycm93ZnVuY3Rpb25TdGF0ZW1lbnQpIHsKLSAgICAgICAgICAgIGNvbnRleHQuc2V0RW5k
T2Zmc2V0KGFycm93ZnVuY3Rpb25TdGF0ZW1lbnQsIG1fbGFzdFRva2VuRW5kUG9zaXRpb24ub2Zm
c2V0KTsKLSAgICAgICAgICAgIGNvbnRleHQuYXBwZW5kU3RhdGVtZW50KHNvdXJjZUVsZW1lbnRz
LCBhcnJvd2Z1bmN0aW9uU3RhdGVtZW50KTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAg
cHJvcGFnYXRlRXJyb3IoKTsKLSAgICAgICAgcmV0dXJuIHNvdXJjZUVsZW1lbnRzOwotICAgIH0K
LSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGZ1bmN0aW9uUGFyc2VUeXBlKTsKLSNlbmRpZgotICAg
IAogICAgIHdoaWxlIChUcmVlU3RhdGVtZW50IHN0YXRlbWVudCA9IHBhcnNlU3RhdGVtZW50TGlz
dEl0ZW0oY29udGV4dCwgZGlyZWN0aXZlLCAmZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCkpIHsKICAg
ICAgICAgaWYgKG1vZGUgPT0gQ2hlY2tGb3JTdHJpY3RNb2RlICYmICFzZWVuTm9uRGlyZWN0aXZl
KSB7CiAgICAgICAgICAgICBpZiAoZGlyZWN0aXZlKSB7CkBAIC02MjQsMjQgKzYyMiwxMyBAQCB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVEZXN0cnVjCiAgICAgcmV0dXJuIGNvbnRl
eHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKHRva2VuLm1fbG9jYXRpb24sIG5hbWUsIHRva2VuLm1f
c3RhcnRQb3NpdGlvbiwgdG9rZW4ubV9lbmRQb3NpdGlvbik7CiB9CiAKLSNpZiBFTkFCTEUoRVM2
X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KLXRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VBcnJvd0Z1bmN0aW9uU2luZ2xlRXhwcmVzc2lvbkJvZHkoVHJlZUJ1aWxkZXImIGNv
bnRleHQsIEZ1bmN0aW9uUGFyc2VUeXBlIHBhcnNlVHlwZSkKK3RlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUFycm93
RnVuY3Rpb25TaW5nbGVFeHByZXNzaW9uQm9keVNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJiBj
b250ZXh0KQogewotICAgIEFTU0VSVChtYXRjaChBUlJPV0ZVTkNUSU9OKSk7Ci0KLSAgICAvLyBX
aGVuIHJlcGFyc2luZyBwaGFzZSwgcGFyc2VUeXBlIGJlY29tZXMgU3RhbmRhcmRGdW5jdGlvblBh
cnNlVHlwZSBldmVuIGlmIHRoZSBmdW5jdGlvbiBpcyBhcnJvdyBmdW5jdGlvbi4KLSAgICAvLyBU
aGlzIGNvbmRpdGlvbiBjb25zaWRlcnMgdGhlIGZvbGxvd2luZyBzaXR1YXRpb25zLgotICAgIC8v
ICgxKTogSWYgd2UgYXJlIGluIHRoZSByZXBhcnNpbmcgcGhhc2UsIHRoaXMgYXJyb3cgZnVuY3Rp
b24gaXMgYWxyZWFkeSBwYXJzZWQgb25jZSwgc28gdGhlcmUgaXMgbm8gc3ludGF4IGVycm9yLgot
ICAgIC8vICgyKTogQnV0IGlmIHdlIGFyZSBub3QgaW4gdGhlIHJlcGFyc2luZyBwaGFzZSwgd2Ug
c2hvdWxkIGNoZWNrIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGluIHRoZSBjb250ZXh0IG9mIHRo
ZSBhcnJvdyBmdW5jdGlvbi4KLSAgICBpZiAoIW1fbGV4ZXItPmlzUmVwYXJzaW5nKCkgJiYgcGFy
c2VUeXBlICE9IEFycm93RnVuY3Rpb25QYXJzZVR5cGUpCi0gICAgICAgIGZhaWxEdWVUb1VuZXhw
ZWN0ZWRUb2tlbigpOwotICAgIAorICAgIEFTU0VSVCghbWF0Y2goT1BFTkJSQUNFKSk7CisgICAg
IAogICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIEpT
VGV4dFBvc2l0aW9uIHN0YXJ0ID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7Ci0gICAgSlNUZXh0UG9z
aXRpb24gZW5kID0gdG9rZW5FbmRQb3NpdGlvbigpOwotCi0gICAgbmV4dCgpOwogCiAgICAgZmFp
bElmU3RhY2tPdmVyZmxvdygpOwogICAgIFRyZWVFeHByZXNzaW9uIGV4cHIgPSBwYXJzZUFzc2ln
bm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwpAQCAtNjUxLDE0ICs2MzgsMTggQEAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZQogCiAgICAgZmFpbElmRmFsc2UoaXNFbmRP
ZkFycm93RnVuY3Rpb24oKSwgIkV4cGVjdGVkIGEgJzsnLCAnXScsICd9JywgJyknLCAnLCcsIGxp
bmUgdGVybWluYXRvciBvciBFT0YgZm9sbG93aW5nIGEgYXJyb3cgZnVuY3Rpb24gc3RhdGVtZW50
Iik7CiAKLSAgICBlbmQgPSB0b2tlbkVuZFBvc2l0aW9uKCk7CisgICAgSlNUZXh0UG9zaXRpb24g
ZW5kID0gdG9rZW5FbmRQb3NpdGlvbigpOwogICAgIAogICAgIGlmICghbV9sZXhlci0+cHJldlRl
cm1pbmF0b3IoKSkKICAgICAgICAgc2V0RW5kT2ZTdGF0ZW1lbnQoKTsKIAotICAgIHJldHVybiBj
b250ZXh0LmNyZWF0ZVJldHVyblN0YXRlbWVudChsb2NhdGlvbiwgZXhwciwgc3RhcnQsIGVuZCk7
CisgICAgVHJlZVNvdXJjZUVsZW1lbnRzIHNvdXJjZUVsZW1lbnRzID0gY29udGV4dC5jcmVhdGVT
b3VyY2VFbGVtZW50cygpOworICAgIFRyZWVTdGF0ZW1lbnQgYm9keSA9IGNvbnRleHQuY3JlYXRl
UmV0dXJuU3RhdGVtZW50KGxvY2F0aW9uLCBleHByLCBzdGFydCwgZW5kKTsKKyAgICBjb250ZXh0
LnNldEVuZE9mZnNldChib2R5LCBtX2xhc3RUb2tlbkVuZFBvc2l0aW9uLm9mZnNldCk7CisgICAg
Y29udGV4dC5hcHBlbmRTdGF0ZW1lbnQoc291cmNlRWxlbWVudHMsIGJvZHkpOworCisgICAgcmV0
dXJuIHNvdXJjZUVsZW1lbnRzOwogfQotI2VuZGlmCiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhl
clR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVEZXN0cnVjdHVyaW5nUGF0
dGVybiBQYXJzZXI8TGV4ZXJUeXBlPjo6dHJ5UGFyc2VEZXN0cnVjdHVyaW5nUGF0dGVybkV4cHJl
c3Npb24oVHJlZUJ1aWxkZXImIGNvbnRleHQpCkBAIC0xMTQyLDcgKzExMzMsNyBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVDbGF1c2VMCiAgICAgVHJlZUV4cHJlc3Npb24gY29u
ZGl0aW9uID0gcGFyc2VFeHByZXNzaW9uKGNvbnRleHQpOwogICAgIGZhaWxJZkZhbHNlKGNvbmRp
dGlvbiwgIkNhbm5vdCBwYXJzZSBzd2l0Y2ggY2xhdXNlIik7CiAgICAgY29uc3VtZU9yRmFpbChD
T0xPTiwgIkV4cGVjdGVkIGEgJzonIGFmdGVyIHN3aXRjaCBjbGF1c2UgZXhwcmVzc2lvbiIpOwot
ICAgIFRyZWVTb3VyY2VFbGVtZW50cyBzdGF0ZW1lbnRzID0gcGFyc2VTb3VyY2VFbGVtZW50cyhj
b250ZXh0LCBEb250Q2hlY2tGb3JTdHJpY3RNb2RlLCBTdGFuZGFyZEZ1bmN0aW9uUGFyc2VUeXBl
KTsKKyAgICBUcmVlU291cmNlRWxlbWVudHMgc3RhdGVtZW50cyA9IHBhcnNlU291cmNlRWxlbWVu
dHMoY29udGV4dCwgRG9udENoZWNrRm9yU3RyaWN0TW9kZSk7CiAgICAgZmFpbElmRmFsc2Uoc3Rh
dGVtZW50cywgIkNhbm5vdCBwYXJzZSB0aGUgYm9keSBvZiBhIHN3aXRjaCBjbGF1c2UiKTsKICAg
ICBUcmVlQ2xhdXNlIGNsYXVzZSA9IGNvbnRleHQuY3JlYXRlQ2xhdXNlKGNvbmRpdGlvbiwgc3Rh
dGVtZW50cyk7CiAgICAgY29udGV4dC5zZXRTdGFydE9mZnNldChjbGF1c2UsIHN0YXJ0T2Zmc2V0
KTsKQEAgLTExNTUsNyArMTE0Niw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZUNsYXVzZUwKICAgICAgICAgVHJlZUV4cHJlc3Npb24gY29uZGl0aW9uID0gcGFyc2VFeHByZXNz
aW9uKGNvbnRleHQpOwogICAgICAgICBmYWlsSWZGYWxzZShjb25kaXRpb24sICJDYW5ub3QgcGFy
c2Ugc3dpdGNoIGNhc2UgZXhwcmVzc2lvbiIpOwogICAgICAgICBjb25zdW1lT3JGYWlsKENPTE9O
LCAiRXhwZWN0ZWQgYSAnOicgYWZ0ZXIgc3dpdGNoIGNsYXVzZSBleHByZXNzaW9uIik7Ci0gICAg
ICAgIFRyZWVTb3VyY2VFbGVtZW50cyBzdGF0ZW1lbnRzID0gcGFyc2VTb3VyY2VFbGVtZW50cyhj
b250ZXh0LCBEb250Q2hlY2tGb3JTdHJpY3RNb2RlLCBTdGFuZGFyZEZ1bmN0aW9uUGFyc2VUeXBl
KTsKKyAgICAgICAgVHJlZVNvdXJjZUVsZW1lbnRzIHN0YXRlbWVudHMgPSBwYXJzZVNvdXJjZUVs
ZW1lbnRzKGNvbnRleHQsIERvbnRDaGVja0ZvclN0cmljdE1vZGUpOwogICAgICAgICBmYWlsSWZG
YWxzZShzdGF0ZW1lbnRzLCAiQ2Fubm90IHBhcnNlIHRoZSBib2R5IG9mIGEgc3dpdGNoIGNsYXVz
ZSIpOwogICAgICAgICBjbGF1c2UgPSBjb250ZXh0LmNyZWF0ZUNsYXVzZShjb25kaXRpb24sIHN0
YXRlbWVudHMpOwogICAgICAgICBjb250ZXh0LnNldFN0YXJ0T2Zmc2V0KGNsYXVzZSwgc3RhcnRP
ZmZzZXQpOwpAQCAtMTE3Miw3ICsxMTYzLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlQ2xhdXNlIAogICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gdG9rZW5TdGFydCgpOwog
ICAgIG5leHQoKTsKICAgICBjb25zdW1lT3JGYWlsKENPTE9OLCAiRXhwZWN0ZWQgYSAnOicgYWZ0
ZXIgc3dpdGNoIGRlZmF1bHQgY2xhdXNlIik7Ci0gICAgVHJlZVNvdXJjZUVsZW1lbnRzIHN0YXRl
bWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIERvbnRDaGVja0ZvclN0cmljdE1v
ZGUsIFN0YW5kYXJkRnVuY3Rpb25QYXJzZVR5cGUpOworICAgIFRyZWVTb3VyY2VFbGVtZW50cyBz
dGF0ZW1lbnRzID0gcGFyc2VTb3VyY2VFbGVtZW50cyhjb250ZXh0LCBEb250Q2hlY2tGb3JTdHJp
Y3RNb2RlKTsKICAgICBmYWlsSWZGYWxzZShzdGF0ZW1lbnRzLCAiQ2Fubm90IHBhcnNlIHRoZSBi
b2R5IG9mIGEgc3dpdGNoIGRlZmF1bHQgY2xhdXNlIik7CiAgICAgVHJlZUNsYXVzZSByZXN1bHQg
PSBjb250ZXh0LmNyZWF0ZUNsYXVzZSgwLCBzdGF0ZW1lbnRzKTsKICAgICBjb250ZXh0LnNldFN0
YXJ0T2Zmc2V0KHJlc3VsdCwgc3RhcnRPZmZzZXQpOwpAQCAtMTI1Nyw3ICsxMjQ4LDcgQEAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZQogICAgICAgICBjb250ZXh0LnNl
dEVuZE9mZnNldChyZXN1bHQsIGVuZE9mZnNldCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgfQotICAgIFRyZWVTb3VyY2VFbGVtZW50cyBzdWJ0cmVlID0gcGFyc2VTb3VyY2VFbGVtZW50
cyhjb250ZXh0LCBEb250Q2hlY2tGb3JTdHJpY3RNb2RlLCBTdGFuZGFyZEZ1bmN0aW9uUGFyc2VU
eXBlKTsKKyAgICBUcmVlU291cmNlRWxlbWVudHMgc3VidHJlZSA9IHBhcnNlU291cmNlRWxlbWVu
dHMoY29udGV4dCwgRG9udENoZWNrRm9yU3RyaWN0TW9kZSk7CiAgICAgZmFpbElmRmFsc2Uoc3Vi
dHJlZSwgIkNhbm5vdCBwYXJzZSB0aGUgYm9keSBvZiB0aGUgYmxvY2sgc3RhdGVtZW50Iik7CiAg
ICAgbWF0Y2hPckZhaWwoQ0xPU0VCUkFDRSwgIkV4cGVjdGVkIGEgY2xvc2luZyAnfScgYXQgdGhl
IGVuZCBvZiBhIGJsb2NrIHN0YXRlbWVudCIpOwogICAgIGludCBlbmRPZmZzZXQgPSBtX3Rva2Vu
Lm1fZGF0YS5vZmZzZXQ7CkBAIC0xMzYyLDQ2ICsxMzUzLDQzIEBAIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZVN0YXRlbWUKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlw
ZT4KLXRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUZvcm1hbFBhcmFtZXRlckxpc3Qg
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRm9ybWFsUGFyYW1ldGVycyhUcmVlQnVpbGRlciYgY29u
dGV4dCkKK3RlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VGb3JtYWxQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBUcmVlRm9ybWFs
UGFyYW1ldGVyTGlzdCBsaXN0LCB1bnNpZ25lZCYgcGFyYW1ldGVyQ291bnQpCiB7CiAgICAgYXV0
byBwYXJhbWV0ZXIgPSBwYXJzZURlc3RydWN0dXJpbmdQYXR0ZXJuKGNvbnRleHQsIERlc3RydWN0
dXJlVG9QYXJhbWV0ZXJzKTsKICAgICBmYWlsSWZGYWxzZShwYXJhbWV0ZXIsICJDYW5ub3QgcGFy
c2UgcGFyYW1ldGVyIHBhdHRlcm4iKTsKLSAgICBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCBsaXN0
ID0gY29udGV4dC5jcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KHBhcmFtZXRlcik7Ci0gICAgVHJl
ZUZvcm1hbFBhcmFtZXRlckxpc3QgdGFpbCA9IGxpc3Q7CisgICAgY29udGV4dC5hcHBlbmRQYXJh
bWV0ZXIobGlzdCwgcGFyYW1ldGVyKTsKKyAgICBwYXJhbWV0ZXJDb3VudCsrOwogICAgIHdoaWxl
IChjb25zdW1lKENPTU1BKSkgewogICAgICAgICBwYXJhbWV0ZXIgPSBwYXJzZURlc3RydWN0dXJp
bmdQYXR0ZXJuKGNvbnRleHQsIERlc3RydWN0dXJlVG9QYXJhbWV0ZXJzKTsKICAgICAgICAgZmFp
bElmRmFsc2UocGFyYW1ldGVyLCAiQ2Fubm90IHBhcnNlIHBhcmFtZXRlciBwYXR0ZXJuIik7Ci0g
ICAgICAgIHRhaWwgPSBjb250ZXh0LmNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QodGFpbCwgcGFy
YW1ldGVyKTsKKyAgICAgICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIobGlzdCwgcGFyYW1ldGVy
KTsKKyAgICAgICAgcGFyYW1ldGVyQ291bnQrKzsKICAgICB9Ci0gICAgcmV0dXJuIGxpc3Q7Cisg
ICAgcmV0dXJuIHRydWU7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVGdW5jdGlvbkJvZHkgUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlRnVuY3Rpb25Cb2R5KAotICAgIFRyZWVCdWlsZGVyJiBjb250ZXh0LCBpbnQgZnVu
Y3Rpb25LZXl3b3JkU3RhcnQsIGludCBmdW5jdGlvbk5hbWVTdGFydCwgCi0gICAgaW50IHBhcmFt
ZXRlcnNTdGFydCwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgRnVuY3Rpb25QYXJz
ZVR5cGUgcGFyc2VUeXBlKQorICAgIFRyZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGludCBzdGFydENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5
d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIAor
ICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIEZ1bmN0aW9uQm9keVR5cGUgYm9k
eVR5cGUsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBGdW5jdGlvblBhcnNlTW9kZSBwYXJzZU1v
ZGUpCiB7Ci0gICAgSlNUb2tlbkxvY2F0aW9uIHN0YXJ0TG9jYXRpb24odG9rZW5Mb2NhdGlvbigp
KTsKLSAgICB1bnNpZ25lZCBzdGFydENvbHVtbiA9IHRva2VuQ29sdW1uKCk7Ci0KLSAgICBpZiAo
cGFyc2VUeXBlID09IFN0YW5kYXJkRnVuY3Rpb25QYXJzZVR5cGUpIHsKKyAgICBpZiAoYm9keVR5
cGUgPT0gU3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jayB8fCBib2R5VHlwZSA9PSBBcnJvd0Z1bmN0
aW9uQm9keUJsb2NrKSB7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgaWYgKG1hdGNoKENMT1NF
QlJBQ0UpKSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBlbmRDb2x1bW4gPSB0b2tlbkNvbHVtbigp
OwotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25Cb2R5KHN0YXJ0TG9j
YXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25L
ZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1v
ZGUoKSwgY29uc3RydWN0b3JLaW5kKTsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0
ZUZ1bmN0aW9uQm9keShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1u
LCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFy
YW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291
bnQsIHBhcnNlTW9kZSk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBEZXB0aE1hbmFnZXIgc3Rh
dGVtZW50RGVwdGgoJm1fc3RhdGVtZW50RGVwdGgpOwogICAgIG1fc3RhdGVtZW50RGVwdGggPSAw
OwotICAgIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGdW5jdGlvbkJvZHlCdWlsZGVyIGJvZHlCdWls
ZGVyKGNvbnN0X2Nhc3Q8Vk0qPihtX3ZtKSwgbV9sZXhlci5nZXQoKSk7Ci0jaWYgRU5BQkxFKEVT
Nl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCkKLSAgICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVsZW1l
bnRzKGJvZHlCdWlsZGVyLCBDaGVja0ZvclN0cmljdE1vZGUsIHBhcnNlVHlwZSksIHBhcnNlVHlw
ZSA9PSBTdGFuZGFyZEZ1bmN0aW9uUGFyc2VUeXBlID8gIkNhbm5vdCBwYXJzZSBib2R5IG9mIHRo
aXMgZnVuY3Rpb24iIDogIkNhbm5vdCBwYXJzZSBib2R5IG9mIHRoaXMgYXJyb3cgZnVuY3Rpb24i
KTsKLSNlbHNlCi0gICAgZmFpbElmRmFsc2UocGFyc2VTb3VyY2VFbGVtZW50cyhib2R5QnVpbGRl
ciwgQ2hlY2tGb3JTdHJpY3RNb2RlLCBTdGFuZGFyZEZ1bmN0aW9uUGFyc2VUeXBlKSwgIkNhbm5v
dCBwYXJzZSBib2R5IG9mIHRoaXMgZnVuY3Rpb24iKTsKLSNlbmRpZgorICAgIFN5bnRheENoZWNr
ZXIgc3ludGF4Q2hlY2tlcihjb25zdF9jYXN0PFZNKj4obV92bSksIG1fbGV4ZXIuZ2V0KCkpOwor
ICAgIGlmIChib2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCisgICAgICAg
IGZhaWxJZkZhbHNlKHBhcnNlQXJyb3dGdW5jdGlvblNpbmdsZUV4cHJlc3Npb25Cb2R5U291cmNl
RWxlbWVudHMoc3ludGF4Q2hlY2tlciksICJDYW5ub3QgcGFyc2UgYm9keSBvZiB0aGlzIGFycm93
IGZ1bmN0aW9uIik7CisgICAgZWxzZQorICAgICAgICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVs
ZW1lbnRzKHN5bnRheENoZWNrZXIsIENoZWNrRm9yU3RyaWN0TW9kZSksIGJvZHlUeXBlID09IFN0
YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2sgPyAiQ2Fubm90IHBhcnNlIGJvZHkgb2YgdGhpcyBmdW5j
dGlvbiIgOiAiQ2Fubm90IHBhcnNlIGJvZHkgb2YgdGhpcyBhcnJvdyBmdW5jdGlvbiIpOwogICAg
IHVuc2lnbmVkIGVuZENvbHVtbiA9IHRva2VuQ29sdW1uKCk7Ci0gICAgcmV0dXJuIGNvbnRleHQu
Y3JlYXRlRnVuY3Rpb25Cb2R5KHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRD
b2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0
LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kKTsKKyAgICBy
ZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkJvZHkoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2Nh
dGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVu
Y3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBjb25zdHJ1Y3Rv
cktpbmQsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUpOwogfQogCiBzdGF0aWMgY29uc3QgY2hh
ciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKEZ1bmN0aW9uUGFyc2VNb2RlIG1vZGUpCkBAIC0xNDEx
LDI0ICsxMzk5LDI4IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUK
ICAgICAgICAgcmV0dXJuICJnZXR0ZXIiOwogICAgIGNhc2UgU2V0dGVyTW9kZToKICAgICAgICAg
cmV0dXJuICJzZXR0ZXIiOwotICAgIGNhc2UgRnVuY3Rpb25Nb2RlOgorICAgIGNhc2UgTm9ybWFs
RnVuY3Rpb25Nb2RlOgogICAgICAgICByZXR1cm4gImZ1bmN0aW9uIjsKICAgICBjYXNlIE1ldGhv
ZE1vZGU6CiAgICAgICAgIHJldHVybiAibWV0aG9kIjsKLSNpZiBFTkFCTEUoRVM2X0FSUk9XRlVO
Q1RJT05fU1lOVEFYKQogICAgIGNhc2UgQXJyb3dGdW5jdGlvbk1vZGU6CiAgICAgICAgIHJldHVy
biAiYXJyb3cgZnVuY3Rpb24iOwotI2VuZGlmCisgICAgY2FzZSBOb3RBRnVuY3Rpb25Nb2RlOgor
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gIiI7
CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+IHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gaW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uUGFyYW1l
dGVycyhUcmVlQnVpbGRlciYgY29udGV4dCwgRnVuY3Rpb25QYXJzZU1vZGUgbW9kZSwgUGFyc2Vy
RnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiYgaW5mbykKK3RlbXBsYXRlIDx0eXBlbmFtZSBMZXhl
clR5cGU+IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gaW50IFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhUcmVlQnVpbGRlciYgY29udGV4dCwgRnVuY3Rpb25Q
YXJzZU1vZGUgbW9kZSwgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiYgZnVuY3Rpb25J
bmZvKQogeworICAgIFJFTEVBU0VfQVNTRVJUKG1vZGUgIT0gTm90QUZ1bmN0aW9uTW9kZSk7CiAg
ICAgaW50IHBhcmFtZXRlcnNTdGFydCA9IG1fdG9rZW4ubV9sb2NhdGlvbi5zdGFydE9mZnNldDsK
KyAgICBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCBwYXJhbWV0ZXJMaXN0ID0gY29udGV4dC5jcmVh
dGVGb3JtYWxQYXJhbWV0ZXJMaXN0KCk7CisgICAgZnVuY3Rpb25JbmZvLnBhcmFtZXRlcnMgPSBw
YXJhbWV0ZXJMaXN0OworICAgIGZ1bmN0aW9uSW5mby5zdGFydE9mZnNldCA9IHBhcmFtZXRlcnNT
dGFydDsKICAgICAKLSNpZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQogICAgIGlm
IChtb2RlID09IEFycm93RnVuY3Rpb25Nb2RlKSB7CiAgICAgICAgIGlmICghbWF0Y2goSURFTlQp
ICYmICFtYXRjaChPUEVOUEFSRU4pKSB7CiAgICAgICAgICAgICBzZW1hbnRpY0ZhaWx1cmVEdWVU
b0tleXdvcmQoc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKG1vZGUpLCAiIG5hbWUiKTsKQEAgLTE0Mzcs
NzYgKzE0MjksODggQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4gdGVtcGxhdGUgPAog
ICAgICAgICAgICAgaWYgKG1hdGNoKE9QRU5QQVJFTikpIHsKICAgICAgICAgICAgICAgICBuZXh0
KCk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKCFtYXRjaChDTE9TRVBB
UkVOKSkgewotICAgICAgICAgICAgICAgICAgICBpbmZvLnBhcmFtZXRlcnMgPSBwYXJzZUZvcm1h
bFBhcmFtZXRlcnMoY29udGV4dCk7Ci0gICAgICAgICAgICAgICAgICAgIGZhaWxJZkZhbHNlKGlu
Zm8ucGFyYW1ldGVycywgIkNhbm5vdCBwYXJzZSBwYXJhbWV0ZXJzIGZvciB0aGlzICIsIHN0cmlu
Z0ZvckZ1bmN0aW9uTW9kZShtb2RlKSk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGlmIChtYXRjaChDTE9TRVBBUkVOKSkKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25J
bmZvLnBhcmFtZXRlckNvdW50ID0gMDsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgICAgIGZhaWxJZkZhbHNlKHBhcnNlRm9ybWFsUGFyYW1ldGVycyhjb250ZXh0LCBwYXJh
bWV0ZXJMaXN0LCBmdW5jdGlvbkluZm8ucGFyYW1ldGVyQ291bnQpLCAiQ2Fubm90IHBhcnNlIHBh
cmFtZXRlcnMgZm9yIHRoaXMgIiwgc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKG1vZGUpKTsKICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICBjb25zdW1lT3JGYWlsKENMT1NFUEFSRU4sICJF
eHBlY3RlZCBhICcpJyBvciBhICcsJyBhZnRlciBhIHBhcmFtZXRlciBkZWNsYXJhdGlvbiIpOwog
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBmdW5jdGlvbkluZm8ucGFyYW1l
dGVyQ291bnQgPSAxOwogICAgICAgICAgICAgICAgIGF1dG8gcGFyYW1ldGVyID0gcGFyc2VEZXN0
cnVjdHVyaW5nUGF0dGVybihjb250ZXh0LCBEZXN0cnVjdHVyZVRvUGFyYW1ldGVycyk7CiAgICAg
ICAgICAgICAgICAgZmFpbElmRmFsc2UocGFyYW1ldGVyLCAiQ2Fubm90IHBhcnNlIHBhcmFtZXRl
ciBwYXR0ZXJuIik7Ci0gICAgICAgICAgICAgICAgaW5mby5wYXJhbWV0ZXJzID0gY29udGV4dC5j
cmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KHBhcmFtZXRlcik7Ci0gICAgICAgICAgICAgICAgZmFp
bElmRmFsc2UoaW5mby5wYXJhbWV0ZXJzLCAiQ2Fubm90IHBhcnNlIHBhcmFtZXRlcnMgZm9yIHRo
aXMgIiwgc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKG1vZGUpKTsKKyAgICAgICAgICAgICAgICBjb250
ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJMaXN0LCBwYXJhbWV0ZXIpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIHJldHVybiBwYXJhbWV0ZXJzU3Rh
cnQ7CiAgICAgfQotI2VuZGlmCi0gICAgCisKICAgICBpZiAoIWNvbnN1bWUoT1BFTlBBUkVOKSkg
ewogICAgICAgICBzZW1hbnRpY0ZhaWx1cmVEdWVUb0tleXdvcmQoc3RyaW5nRm9yRnVuY3Rpb25N
b2RlKG1vZGUpLCAiIG5hbWUiKTsKICAgICAgICAgZmFpbFdpdGhNZXNzYWdlKCJFeHBlY3RlZCBh
biBvcGVuaW5nICcoJyBiZWZvcmUgYSAiLCBzdHJpbmdGb3JGdW5jdGlvbk1vZGUobW9kZSksICIn
cyBwYXJhbWV0ZXIgbGlzdCIpOwogICAgIH0KIAotICAgIGlmIChtb2RlID09IEdldHRlck1vZGUp
CisgICAgaWYgKG1vZGUgPT0gR2V0dGVyTW9kZSkgewogICAgICAgICBjb25zdW1lT3JGYWlsKENM
T1NFUEFSRU4sICJnZXR0ZXIgZnVuY3Rpb25zIG11c3QgaGF2ZSBubyBwYXJhbWV0ZXJzIik7Ci0g
ICAgZWxzZSBpZiAobW9kZSA9PSBTZXR0ZXJNb2RlKSB7CisgICAgICAgIGZ1bmN0aW9uSW5mby5w
YXJhbWV0ZXJDb3VudCA9IDA7CisgICAgfSBlbHNlIGlmIChtb2RlID09IFNldHRlck1vZGUpIHsK
ICAgICAgICAgZmFpbElmVHJ1ZShtYXRjaChDTE9TRVBBUkVOKSwgInNldHRlciBmdW5jdGlvbnMg
bXVzdCBoYXZlIG9uZSBwYXJhbWV0ZXIiKTsKICAgICAgICAgYXV0byBwYXJhbWV0ZXIgPSBwYXJz
ZURlc3RydWN0dXJpbmdQYXR0ZXJuKGNvbnRleHQsIERlc3RydWN0dXJlVG9QYXJhbWV0ZXJzKTsK
ICAgICAgICAgZmFpbElmRmFsc2UocGFyYW1ldGVyLCAic2V0dGVyIGZ1bmN0aW9ucyBtdXN0IGhh
dmUgb25lIHBhcmFtZXRlciIpOwotICAgICAgICBpbmZvLnBhcmFtZXRlcnMgPSBjb250ZXh0LmNy
ZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QocGFyYW1ldGVyKTsKKyAgICAgICAgY29udGV4dC5hcHBl
bmRQYXJhbWV0ZXIocGFyYW1ldGVyTGlzdCwgcGFyYW1ldGVyKTsKKyAgICAgICAgZnVuY3Rpb25J
bmZvLnBhcmFtZXRlckNvdW50ID0gMTsKICAgICAgICAgZmFpbElmVHJ1ZShtYXRjaChDT01NQSks
ICJzZXR0ZXIgZnVuY3Rpb25zIG11c3QgaGF2ZSBvbmUgcGFyYW1ldGVyIik7CiAgICAgICAgIGNv
bnN1bWVPckZhaWwoQ0xPU0VQQVJFTiwgIkV4cGVjdGVkIGEgJyknIGFmdGVyIGEgcGFyYW1ldGVy
IGRlY2xhcmF0aW9uIik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKCFtYXRjaChDTE9TRVBB
UkVOKSkgewotICAgICAgICAgICAgaW5mby5wYXJhbWV0ZXJzID0gcGFyc2VGb3JtYWxQYXJhbWV0
ZXJzKGNvbnRleHQpOwotICAgICAgICAgICAgZmFpbElmRmFsc2UoaW5mby5wYXJhbWV0ZXJzLCAi
Q2Fubm90IHBhcnNlIHBhcmFtZXRlcnMgZm9yIHRoaXMgIiwgc3RyaW5nRm9yRnVuY3Rpb25Nb2Rl
KG1vZGUpKTsKLSAgICAgICAgfQorICAgICAgICBpZiAobWF0Y2goQ0xPU0VQQVJFTikpCisgICAg
ICAgICAgICBmdW5jdGlvbkluZm8ucGFyYW1ldGVyQ291bnQgPSAwOworICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgZmFpbElmRmFsc2UocGFyc2VGb3JtYWxQYXJhbWV0ZXJzKGNvbnRleHQsIHBh
cmFtZXRlckxpc3QsIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJDb3VudCksICJDYW5ub3QgcGFyc2Ug
cGFyYW1ldGVycyBmb3IgdGhpcyAiLCBzdHJpbmdGb3JGdW5jdGlvbk1vZGUobW9kZSkpOwogICAg
ICAgICBjb25zdW1lT3JGYWlsKENMT1NFUEFSRU4sICJFeHBlY3RlZCBhICcpJyBvciBhICcsJyBh
ZnRlciBhIHBhcmFtZXRlciBkZWNsYXJhdGlvbiIpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVy
biBwYXJhbWV0ZXJzU3RhcnQ7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
RnVuY3Rpb25JbmZvKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBGdW5jdGlvblJlcXVpcmVtZW50cyBy
ZXF1aXJlbWVudHMsIEZ1bmN0aW9uUGFyc2VNb2RlIG1vZGUsIGJvb2wgbmFtZUlzSW5Db250YWlu
aW5nU2NvcGUsIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZyBl
eHBlY3RlZFN1cGVyQmluZGluZywgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBQYXJzZXJGdW5j
dGlvbkluZm88VHJlZUJ1aWxkZXI+JiBpbmZvLCBGdW5jdGlvblBhcnNlVHlwZSBwYXJzZVR5cGUp
Cit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBGdW5jdGlvblJlcXVpcmVtZW50
cyByZXF1aXJlbWVudHMsIEZ1bmN0aW9uUGFyc2VNb2RlIG1vZGUsIGJvb2wgbmFtZUlzSW5Db250
YWluaW5nU2NvcGUsIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGlu
ZyBleHBlY3RlZFN1cGVyQmluZGluZywgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBQYXJzZXJG
dW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+JiBmdW5jdGlvbkluZm8sIEZ1bmN0aW9uUGFyc2VUeXBl
IHBhcnNlVHlwZSkKIHsKKyAgICBSRUxFQVNFX0FTU0VSVChtb2RlICE9IE5vdEFGdW5jdGlvbk1v
ZGUpOworCiAgICAgQXV0b1BvcFNjb3BlUmVmIGZ1bmN0aW9uU2NvcGUodGhpcywgcHVzaFNjb3Bl
KCkpOwogICAgIGZ1bmN0aW9uU2NvcGUtPnNldElzRnVuY3Rpb24oKTsKICAgICBpbnQgZnVuY3Rp
b25OYW1lU3RhcnQgPSBtX3Rva2VuLm1fbG9jYXRpb24uc3RhcnRPZmZzZXQ7CiAgICAgY29uc3Qg
SWRlbnRpZmllciogbGFzdEZ1bmN0aW9uTmFtZSA9IG1fbGFzdEZ1bmN0aW9uTmFtZTsKICAgICBt
X2xhc3RGdW5jdGlvbk5hbWUgPSBudWxscHRyOwogICAgIGludCBwYXJhbWV0ZXJzU3RhcnQ7Cisg
ICAgSlNUb2tlbkxvY2F0aW9uIHN0YXJ0TG9jYXRpb247CisgICAgaW50IHN0YXJ0Q29sdW1uOwor
ICAgIEZ1bmN0aW9uQm9keVR5cGUgZnVuY3Rpb25Cb2R5VHlwZTsKICAgICAKICAgICBzd2l0Y2gg
KHBhcnNlVHlwZSkgewogICAgIGNhc2UgU3RhbmRhcmRGdW5jdGlvblBhcnNlVHlwZTogeworICAg
ICAgICBSRUxFQVNFX0FTU0VSVChtb2RlICE9IEFycm93RnVuY3Rpb25Nb2RlKTsKKwogICAgICAg
ICBpZiAobWF0Y2goSURFTlQpKSB7Ci0gICAgICAgICAgICBpbmZvLm5hbWUgPSBtX3Rva2VuLm1f
ZGF0YS5pZGVudDsKLSAgICAgICAgICAgIG1fbGFzdEZ1bmN0aW9uTmFtZSA9IGluZm8ubmFtZTsK
KyAgICAgICAgICAgIGZ1bmN0aW9uSW5mby5uYW1lID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7Cisg
ICAgICAgICAgICBtX2xhc3RGdW5jdGlvbk5hbWUgPSBmdW5jdGlvbkluZm8ubmFtZTsKICAgICAg
ICAgICAgIG5leHQoKTsKICAgICAgICAgICAgIGlmICghbmFtZUlzSW5Db250YWluaW5nU2NvcGUp
Ci0gICAgICAgICAgICAgICAgZmFpbElmRmFsc2VJZlN0cmljdChmdW5jdGlvblNjb3BlLT5kZWNs
YXJlVmFyaWFibGUoaW5mby5uYW1lKSwgIiciLCBpbmZvLm5hbWUtPmltcGwoKSwgIicgaXMgbm90
IGEgdmFsaWQgIiwgc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKG1vZGUpLCAiIG5hbWUgaW4gc3RyaWN0
IG1vZGUiKTsKKyAgICAgICAgICAgICAgICBmYWlsSWZGYWxzZUlmU3RyaWN0KGZ1bmN0aW9uU2Nv
cGUtPmRlY2xhcmVWYXJpYWJsZShmdW5jdGlvbkluZm8ubmFtZSksICInIiwgZnVuY3Rpb25JbmZv
Lm5hbWUtPmltcGwoKSwgIicgaXMgbm90IGEgdmFsaWQgIiwgc3RyaW5nRm9yRnVuY3Rpb25Nb2Rl
KG1vZGUpLCAiIG5hbWUgaW4gc3RyaWN0IG1vZGUiKTsKICAgICAgICAgfSBlbHNlIGlmIChyZXF1
aXJlbWVudHMgPT0gRnVuY3Rpb25OZWVkc05hbWUpIHsKLSAgICAgICAgICAgIGlmIChtYXRjaChP
UEVOUEFSRU4pICYmIG1vZGUgPT0gRnVuY3Rpb25Nb2RlKQorICAgICAgICAgICAgaWYgKG1hdGNo
KE9QRU5QQVJFTikgJiYgbW9kZSA9PSBOb3JtYWxGdW5jdGlvbk1vZGUpCiAgICAgICAgICAgICAg
ICAgc2VtYW50aWNGYWlsKCJGdW5jdGlvbiBzdGF0ZW1lbnRzIG11c3QgaGF2ZSBhIG5hbWUiKTsK
ICAgICAgICAgICAgIHNlbWFudGljRmFpbHVyZUR1ZVRvS2V5d29yZChzdHJpbmdGb3JGdW5jdGlv
bk1vZGUobW9kZSksICIgbmFtZSIpOwogICAgICAgICAgICAgZmFpbER1ZVRvVW5leHBlY3RlZFRv
a2VuKCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAgCi0g
ICAgICAgIHBhcmFtZXRlcnNTdGFydCA9IHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKGNvbnRleHQs
IG1vZGUsIGluZm8pOworCisgICAgICAgIHN0YXJ0TG9jYXRpb24gPSB0b2tlbkxvY2F0aW9uKCk7
CisgICAgICAgIGZ1bmN0aW9uSW5mby5zdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKKyAgICAgICAg
c3RhcnRDb2x1bW4gPSB0b2tlbkNvbHVtbigpOworCisgICAgICAgIHBhcmFtZXRlcnNTdGFydCA9
IHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKGNvbnRleHQsIG1vZGUsIGZ1bmN0aW9uSW5mbyk7CiAg
ICAgICAgIHByb3BhZ2F0ZUVycm9yKCk7CiAgICAgICAgIAogICAgICAgICBtYXRjaE9yRmFpbChP
UEVOQlJBQ0UsICJFeHBlY3RlZCBhbiBvcGVuaW5nICd7JyBhdCB0aGUgc3RhcnQgb2YgYSAiLCBz
dHJpbmdGb3JGdW5jdGlvbk1vZGUobW9kZSksICIgYm9keSIpOwpAQCAtMTUxOCwxNCArMTUyMiwy
MCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyCiAgICAgICAgICAg
ICBjb25zdHJ1Y3RvcktpbmQgPSBtX2RlZmF1bHRDb25zdHJ1Y3RvcktpbmQ7CiAgICAgICAgICAg
ICBleHBlY3RlZFN1cGVyQmluZGluZyA9IG1fZGVmYXVsdENvbnN0cnVjdG9yS2luZCA9PSBDb25z
dHJ1Y3RvcktpbmQ6OkRlcml2ZWQgPyBTdXBlckJpbmRpbmc6Ok5lZWRlZCA6IFN1cGVyQmluZGlu
Zzo6Tm90TmVlZGVkOwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpbmZvLnN0YXJ0RnVu
Y3Rpb25PZmZzZXQgPSBtX3Rva2VuLm1fZGF0YS5vZmZzZXQ7CisKKyAgICAgICAgZnVuY3Rpb25C
b2R5VHlwZSA9IFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2s7CiAgICAgICAgIAogICAgICAgICBi
cmVhazsKICAgICB9CiAjaWYgRU5BQkxFKEVTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCkKICAgICBj
YXNlIEFycm93RnVuY3Rpb25QYXJzZVR5cGU6IHsKLSAgICAgICAgcGFyYW1ldGVyc1N0YXJ0ID0g
cGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoY29udGV4dCwgQXJyb3dGdW5jdGlvbk1vZGUsIGluZm8p
OworICAgICAgICBSRUxFQVNFX0FTU0VSVChtb2RlID09IEFycm93RnVuY3Rpb25Nb2RlKTsKKwor
ICAgICAgICBzdGFydExvY2F0aW9uID0gdG9rZW5Mb2NhdGlvbigpOworICAgICAgICBmdW5jdGlv
bkluZm8uc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CisgICAgICAgIHN0YXJ0Q29sdW1uID0gdG9r
ZW5Db2x1bW4oKTsKKworICAgICAgICBwYXJhbWV0ZXJzU3RhcnQgPSBwYXJzZUZ1bmN0aW9uUGFy
YW1ldGVycyhjb250ZXh0LCBtb2RlLCBmdW5jdGlvbkluZm8pOwogICAgICAgICBwcm9wYWdhdGVF
cnJvcigpOwogICAgICAgICAKICAgICAgICAgbWF0Y2hPckZhaWwoQVJST1dGVU5DVElPTiwgIkV4
cGVjdGVkIGEgJz0+JyBhZnRlciBhcnJvdyBmdW5jdGlvbiBwYXJhbWV0ZXIgZGVjbGFyYXRpb24i
KTsKQEAgLTE1MzUsMzAgKzE1NDUsMjUgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBi
b29sIFBhcnNlcgogCiAgICAgICAgIEFTU0VSVChjb25zdHJ1Y3RvcktpbmQgPT0gQ29uc3RydWN0
b3JLaW5kOjpOb25lKTsKICAgICAgICAgCi0gICAgICAgIGluZm8uYXJyb3dGdW5jdGlvbk9mZnNl
dCA9IG1fdG9rZW4ubV9kYXRhLm9mZnNldDsKICAgICAgICAgLy8gQ2hlY2sgaWYgYXJyb3cgYm9k
eSBzdGFydCB3aXRoIHsuIElmIGl0IHRydWUgaXQgbWVhbiB0aGF0IGFycm93IGZ1bmN0aW9uIGlz
IEZhdCBhcnJvdyBmdW5jdGlvbgogICAgICAgICAvLyBhbmQgd2UgbmVlZCB1c2UgY29tbW9uIGFw
cHJvYWNoIHRvIHBhcnNlIGZ1bmN0aW9uIGJvZHkKLSAgICAgICAgU2F2ZVBvaW50IHNhdmVQb2lu
dCA9IGNyZWF0ZVNhdmVQb2ludCgpOwotICAgICAgICAKICAgICAgICAgbmV4dCgpOwotICAgICAg
ICBpbmZvLmZ1bmN0aW9uQm9keVR5cGUgPSBtYXRjaChPUEVOQlJBQ0UpID8gQXJyb3dGdW5jdGlv
bkJvZHlCbG9jayA6IEFycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbjsKLSAgICAgICAgaW5mby5z
dGFydEZ1bmN0aW9uT2Zmc2V0ID0gKGluZm8uZnVuY3Rpb25Cb2R5VHlwZSA9PSBBcnJvd0Z1bmN0
aW9uQm9keUJsb2NrKSA/IG1fdG9rZW4ubV9kYXRhLm9mZnNldCA6IGluZm8uYXJyb3dGdW5jdGlv
bk9mZnNldDsKKyAgICAgICAgZnVuY3Rpb25Cb2R5VHlwZSA9IG1hdGNoKE9QRU5CUkFDRSkgPyBB
cnJvd0Z1bmN0aW9uQm9keUJsb2NrIDogQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uOwogICAg
ICAgICAKLSAgICAgICAgcmVzdG9yZVNhdmVQb2ludChzYXZlUG9pbnQpOwotCiAgICAgICAgIGJy
ZWFrOwogICAgIH0KKyNlbHNlCisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICNlbmRpZgogICAgIH0KICAgICAKICAgICBib29sIGlzQ2xhc3NDb25z
dHJ1Y3RvciA9IGNvbnN0cnVjdG9yS2luZCAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmU7CiAKLSAg
ICBpbmZvLmJvZHlTdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKLSAgICBpbmZvLmJvZHlTdGFydENv
bHVtbiA9IG1fdG9rZW4ubV9kYXRhLm9mZnNldCAtIG1fdG9rZW4ubV9kYXRhLmxpbmVTdGFydE9m
ZnNldDsKLSAgICBKU1Rva2VuTG9jYXRpb24gc3RhcnRMb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkp
OworICAgIGZ1bmN0aW9uSW5mby5ib2R5U3RhcnRDb2x1bW4gPSBzdGFydENvbHVtbjsKICAgICAK
ICAgICAvLyBJZiB3ZSBrbm93IGFib3V0IHRoaXMgZnVuY3Rpb24gYWxyZWFkeSwgd2UgY2FuIHVz
ZSB0aGUgY2FjaGVkIGluZm8gYW5kIHNraXAgdGhlIHBhcnNlciB0byB0aGUgZW5kIG9mIHRoZSBm
dW5jdGlvbi4KLSAgICBpZiAoY29uc3QgU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0qIGNhY2hlZElu
Zm8gPSBUcmVlQnVpbGRlcjo6Q2FuVXNlRnVuY3Rpb25DYWNoZSA/IGZpbmRDYWNoZWRGdW5jdGlv
bkluZm8oaW5mby5zdGFydEZ1bmN0aW9uT2Zmc2V0KSA6IDApIHsKKyAgICBpZiAoY29uc3QgU291
cmNlUHJvdmlkZXJDYWNoZUl0ZW0qIGNhY2hlZEluZm8gPSBUcmVlQnVpbGRlcjo6Q2FuVXNlRnVu
Y3Rpb25DYWNoZSA/IGZpbmRDYWNoZWRGdW5jdGlvbkluZm8oZnVuY3Rpb25JbmZvLnN0YXJ0T2Zm
c2V0KSA6IDApIHsKICAgICAgICAgLy8gSWYgd2UncmUgaW4gYSBzdHJpY3QgY29udGV4dCwgdGhl
IGNhY2hlZCBmdW5jdGlvbiBpbmZvIG11c3Qgc2F5IGl0IHdhcyBzdHJpY3QgdG9vLgogICAgICAg
ICBBU1NFUlQoIXN0cmljdE1vZGUoKSB8fCBjYWNoZWRJbmZvLT5zdHJpY3RNb2RlKTsKICAgICAg
ICAgSlNUb2tlbkxvY2F0aW9uIGVuZExvY2F0aW9uOwpAQCAtMTU2NywxNyArMTU3MiwxNyBAQCB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyCiAgICAgICAgIGVuZExvY2F0
aW9uLnN0YXJ0T2Zmc2V0ID0gY2FjaGVkSW5mby0+bGFzdFRvY2tlblN0YXJ0T2Zmc2V0OwogICAg
ICAgICBlbmRMb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQgPSBjYWNoZWRJbmZvLT5sYXN0VG9ja2Vu
TGluZVN0YXJ0T2Zmc2V0OwogCi0gICAgICAgIGJvb2wgZW5kQ29sdW1uSXNPblN0YXJ0TGluZSA9
IChlbmRMb2NhdGlvbi5saW5lID09IGluZm8uYm9keVN0YXJ0TGluZSk7CisgICAgICAgIGJvb2wg
ZW5kQ29sdW1uSXNPblN0YXJ0TGluZSA9IChlbmRMb2NhdGlvbi5saW5lID09IGZ1bmN0aW9uSW5m
by5zdGFydExpbmUpOwogICAgICAgICBBU1NFUlQoZW5kTG9jYXRpb24uc3RhcnRPZmZzZXQgPj0g
ZW5kTG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKICAgICAgICAgdW5zaWduZWQgYm9keUVuZENv
bHVtbiA9IGVuZENvbHVtbklzT25TdGFydExpbmUgPwogICAgICAgICAgICAgZW5kTG9jYXRpb24u
c3RhcnRPZmZzZXQgLSBtX3Rva2VuLm1fZGF0YS5saW5lU3RhcnRPZmZzZXQgOgogICAgICAgICAg
ICAgZW5kTG9jYXRpb24uc3RhcnRPZmZzZXQgLSBlbmRMb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQ7
CiAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQgPSBtX3Rva2VuLm1fbG9j
YXRpb24ubGluZVN0YXJ0T2Zmc2V0OwogCi0gICAgICAgIGluZm8uYm9keSA9IGNvbnRleHQuY3Jl
YXRlRnVuY3Rpb25Cb2R5KAotICAgICAgICAgICAgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24s
IGluZm8uYm9keVN0YXJ0Q29sdW1uLCBib2R5RW5kQ29sdW1uLCAKKyAgICAgICAgZnVuY3Rpb25J
bmZvLmJvZHkgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uQm9keSgKKyAgICAgICAgICAgIHN0YXJ0
TG9jYXRpb24sIGVuZExvY2F0aW9uLCBmdW5jdGlvbkluZm8uYm9keVN0YXJ0Q29sdW1uLCBib2R5
RW5kQ29sdW1uLCAKICAgICAgICAgICAgIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5h
bWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCAKLSAgICAgICAgICAgIGNhY2hlZEluZm8tPnN0cmlj
dE1vZGUsIGNvbnN0cnVjdG9yS2luZCk7CisgICAgICAgICAgICBjYWNoZWRJbmZvLT5zdHJpY3RN
b2RlLCBjb25zdHJ1Y3RvcktpbmQsIGNhY2hlZEluZm8tPnBhcmFtZXRlckNvdW50LCBtb2RlKTsK
ICAgICAgICAgCiAgICAgICAgIGZ1bmN0aW9uU2NvcGUtPnJlc3RvcmVGcm9tU291cmNlUHJvdmlk
ZXJDYWNoZShjYWNoZWRJbmZvKTsKICAgICAgICAgZmFpbElmRmFsc2UocG9wU2NvcGUoZnVuY3Rp
b25TY29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbyksICJQYXJzZXIgZXJy
b3IiKTsKQEAgLTE1ODksNjQgKzE1OTQsNDAgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBib29sIFBhcnNlcgogCiAgICAgICAgIG1fbGV4ZXItPnNldE9mZnNldChtX3Rva2VuLm1fbG9j
YXRpb24uZW5kT2Zmc2V0LCBtX3Rva2VuLm1fbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKICAg
ICAgICAgbV9sZXhlci0+c2V0TGluZU51bWJlcihtX3Rva2VuLm1fbG9jYXRpb24ubGluZSk7Ci0g
ICAgICAgIGluZm8uZW5kRnVuY3Rpb25PZmZzZXQgPSBjYWNoZWRJbmZvLT5lbmRGdW5jdGlvbk9m
ZnNldDsKLSNpZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQorICAgICAgICBmdW5j
dGlvbkluZm8uZW5kT2Zmc2V0ID0gY2FjaGVkSW5mby0+ZW5kRnVuY3Rpb25PZmZzZXQ7CisKICAg
ICAgICAgaWYgKHBhcnNlVHlwZSA9PSBBcnJvd0Z1bmN0aW9uUGFyc2VUeXBlKQotICAgICAgICAg
ICAgaW5mby5mdW5jdGlvbkJvZHlUeXBlID0gY2FjaGVkSW5mby0+aXNCb2R5QXJyb3dFeHByZXNz
aW9uID8gIEFycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA6IEFycm93RnVuY3Rpb25Cb2R5Qmxv
Y2s7CisgICAgICAgICAgICBmdW5jdGlvbkJvZHlUeXBlID0gY2FjaGVkSW5mby0+aXNCb2R5QXJy
b3dFeHByZXNzaW9uID8gIEFycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA6IEFycm93RnVuY3Rp
b25Cb2R5QmxvY2s7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGluZm8uZnVuY3Rpb25Cb2R5
VHlwZSA9IFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2s7CisgICAgICAgICAgICBmdW5jdGlvbkJv
ZHlUeXBlID0gU3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jazsKICAgICAgICAgCi0gICAgICAgIHN3
aXRjaCAoaW5mby5mdW5jdGlvbkJvZHlUeXBlKSB7CisgICAgICAgIHN3aXRjaCAoZnVuY3Rpb25C
b2R5VHlwZSkgewogICAgICAgICBjYXNlIEFycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbjoKICAg
ICAgICAgICAgIG5leHQoKTsKLSAgICAgICAgICAgIGNvbnRleHQuc2V0RW5kT2Zmc2V0KGluZm8u
Ym9keSwgbV9sZXhlci0+Y3VycmVudE9mZnNldCgpKTsKKyAgICAgICAgICAgIGNvbnRleHQuc2V0
RW5kT2Zmc2V0KGZ1bmN0aW9uSW5mby5ib2R5LCBtX2xleGVyLT5jdXJyZW50T2Zmc2V0KCkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQXJyb3dGdW5jdGlvbkJvZHlCbG9jazoK
ICAgICAgICAgY2FzZSBTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrOgotICAgICAgICAgICAgY29u
dGV4dC5zZXRFbmRPZmZzZXQoaW5mby5ib2R5LCBtX2xleGVyLT5jdXJyZW50T2Zmc2V0KCkpOwor
ICAgICAgICAgICAgY29udGV4dC5zZXRFbmRPZmZzZXQoZnVuY3Rpb25JbmZvLmJvZHksIG1fbGV4
ZXItPmN1cnJlbnRPZmZzZXQoKSk7CiAgICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQotI2Vsc2UKLSAgICAgICAgY29udGV4dC5zZXRFbmRPZmZzZXQoaW5m
by5ib2R5LCBtX2xleGVyLT5jdXJyZW50T2Zmc2V0KCkpOwotICAgICAgICBuZXh0KCk7Ci0jZW5k
aWYKLSAgICAgICAgaW5mby5ib2R5RW5kTGluZSA9IG1fbGFzdFRva2VuRW5kUG9zaXRpb24ubGlu
ZTsKKyAgICAgICAgZnVuY3Rpb25JbmZvLmVuZExpbmUgPSBtX2xhc3RUb2tlbkVuZFBvc2l0aW9u
LmxpbmU7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAKICAgICBtX2xhc3RGdW5j
dGlvbk5hbWUgPSBsYXN0RnVuY3Rpb25OYW1lOwogICAgIFBhcnNlclN0YXRlIG9sZFN0YXRlID0g
c2F2ZVN0YXRlKCk7CiAgICAgCi0jaWYgRU5BQkxFKEVTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCkK
LSAgICBzd2l0Y2ggKGluZm8uZnVuY3Rpb25Cb2R5VHlwZSkgewotICAgIGNhc2UgQXJyb3dGdW5j
dGlvbkJvZHlCbG9jazogewotICAgICAgICAvLyBDb25zdW1lID0+IGluIGNhc2Ugb2YgYXJyb3cg
ZnVuY3Rpb24gYmxvY2sgZS5nLiB4ID0+IHsgcmV0dXJuIHg7IH0KLSAgICAgICAgbmV4dCgpOwot
ICAgIAotICAgICAgICBpbmZvLmJvZHlTdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKLSAgICAgICAg
aW5mby5ib2R5U3RhcnRDb2x1bW4gPSBtX3Rva2VuLm1fZGF0YS5vZmZzZXQgLSBtX3Rva2VuLm1f
ZGF0YS5saW5lU3RhcnRPZmZzZXQ7Ci0gICAgICAgICAgICAKLSAgICAgICAgaW5mby5ib2R5ID0g
cGFyc2VGdW5jdGlvbkJvZHkoY29udGV4dCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9u
TmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIGNvbnN0cnVjdG9yS2luZCwgU3RhbmRhcmRGdW5j
dGlvblBhcnNlVHlwZSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIFN0YW5kYXJk
RnVuY3Rpb25Cb2R5QmxvY2s6Ci0gICAgY2FzZSBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24g
OiB7Ci0gICAgICAgIGluZm8uYm9keSA9IHBhcnNlRnVuY3Rpb25Cb2R5KGNvbnRleHQsIGZ1bmN0
aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBjb25z
dHJ1Y3RvcktpbmQsIHBhcnNlVHlwZSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICB9Ci0j
ZWxzZQotICAgIGluZm8uYm9keSA9IHBhcnNlRnVuY3Rpb25Cb2R5KGNvbnRleHQsIGZ1bmN0aW9u
S2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBjb25zdHJ1
Y3RvcktpbmQsIFN0YW5kYXJkRnVuY3Rpb25QYXJzZVR5cGUpOwotI2VuZGlmCisgICAgZnVuY3Rp
b25JbmZvLmJvZHkgPSBwYXJzZUZ1bmN0aW9uQm9keShjb250ZXh0LCBzdGFydExvY2F0aW9uLCBz
dGFydENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJh
bWV0ZXJzU3RhcnQsIGNvbnN0cnVjdG9yS2luZCwgZnVuY3Rpb25Cb2R5VHlwZSwgZnVuY3Rpb25J
bmZvLnBhcmFtZXRlckNvdW50LCBtb2RlKTsKICAgICAKICAgICByZXN0b3JlU3RhdGUob2xkU3Rh
dGUpOwotICAgIGZhaWxJZkZhbHNlKGluZm8uYm9keSwgIkNhbm5vdCBwYXJzZSB0aGUgYm9keSBv
ZiB0aGlzICIsIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShtb2RlKSk7Ci0gICAgY29udGV4dC5zZXRF
bmRPZmZzZXQoaW5mby5ib2R5LCBtX2xleGVyLT5jdXJyZW50T2Zmc2V0KCkpOwotICAgIGlmIChm
dW5jdGlvblNjb3BlLT5zdHJpY3RNb2RlKCkgJiYgaW5mby5uYW1lKSB7Ci0gICAgICAgIFJFTEVB
U0VfQVNTRVJUKG1vZGUgPT0gRnVuY3Rpb25Nb2RlIHx8IG1vZGUgPT0gTWV0aG9kTW9kZSk7Ci0g
ICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMg
PT0gKmluZm8ubmFtZSwgIiciLCBpbmZvLm5hbWUtPmltcGwoKSwgIicgaXMgbm90IGEgdmFsaWQg
ZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgbW9kZSIpOwotICAgICAgICBzZW1hbnRpY0ZhaWxJZlRy
dWUobV92bS0+cHJvcGVydHlOYW1lcy0+ZXZhbCA9PSAqaW5mby5uYW1lLCAiJyIsIGluZm8ubmFt
ZS0+aW1wbCgpLCAiJyBpcyBub3QgYSB2YWxpZCBmdW5jdGlvbiBuYW1lIGluIHN0cmljdCBtb2Rl
Iik7CisgICAgZmFpbElmRmFsc2UoZnVuY3Rpb25JbmZvLmJvZHksICJDYW5ub3QgcGFyc2UgdGhl
IGJvZHkgb2YgdGhpcyAiLCBzdHJpbmdGb3JGdW5jdGlvbk1vZGUobW9kZSkpOworICAgIGNvbnRl
eHQuc2V0RW5kT2Zmc2V0KGZ1bmN0aW9uSW5mby5ib2R5LCBtX2xleGVyLT5jdXJyZW50T2Zmc2V0
KCkpOworICAgIGlmIChmdW5jdGlvblNjb3BlLT5zdHJpY3RNb2RlKCkgJiYgZnVuY3Rpb25JbmZv
Lm5hbWUpIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobW9kZSA9PSBOb3JtYWxGdW5jdGlvbk1v
ZGUgfHwgbW9kZSA9PSBNZXRob2RNb2RlIHx8IG1vZGUgPT0gQXJyb3dGdW5jdGlvbk1vZGUpOwor
ICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUobV92bS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRz
ID09ICpmdW5jdGlvbkluZm8ubmFtZSwgIiciLCBmdW5jdGlvbkluZm8ubmFtZS0+aW1wbCgpLCAi
JyBpcyBub3QgYSB2YWxpZCBmdW5jdGlvbiBuYW1lIGluIHN0cmljdCBtb2RlIik7CisgICAgICAg
IHNlbWFudGljRmFpbElmVHJ1ZShtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5ldmFsID09ICpmdW5jdGlv
bkluZm8ubmFtZSwgIiciLCBmdW5jdGlvbkluZm8ubmFtZS0+aW1wbCgpLCAiJyBpcyBub3QgYSB2
YWxpZCBmdW5jdGlvbiBuYW1lIGluIHN0cmljdCBtb2RlIik7CiAgICAgfQogICAgIGlmIChmdW5j
dGlvblNjb3BlLT5oYXNEaXJlY3RTdXBlcigpKSB7CiAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1
ZSghaXNDbGFzc0NvbnN0cnVjdG9yLCAiQ2Fubm90IGNhbGwgc3VwZXIoKSBvdXRzaWRlIG9mIGEg
Y2xhc3MgY29uc3RydWN0b3IiKTsKQEAgLTE2NTYsNTYgKzE2MzcsNDggQEAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcgogICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUo
ZXhwZWN0ZWRTdXBlckJpbmRpbmcgPT0gU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsICJzdXBlciBj
YW4gb25seSBiZSB1c2VkIGluIGEgbWV0aG9kIG9mIGEgZGVyaXZlZCBjbGFzcyIpOwogCiAgICAg
SlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uID0gSlNUb2tlbkxvY2F0aW9uKG1fdG9rZW4ubV9sb2Nh
dGlvbik7Ci0gICAgaW5mby5lbmRGdW5jdGlvbk9mZnNldCA9IG1fdG9rZW4ubV9kYXRhLm9mZnNl
dDsKKyAgICBmdW5jdGlvbkluZm8uZW5kT2Zmc2V0ID0gbV90b2tlbi5tX2RhdGEub2Zmc2V0Owog
ICAgIAotI2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCi0gICAgaWYgKGluZm8u
ZnVuY3Rpb25Cb2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pIHsKKyAgICBp
ZiAoZnVuY3Rpb25Cb2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pIHsKICAg
ICAgICAgbG9jYXRpb24gPSBsb2NhdGlvbkJlZm9yZUxhc3RUb2tlbigpOwotICAgICAgICBpbmZv
LmVuZEZ1bmN0aW9uT2Zmc2V0ID0gbG9jYXRpb24uZW5kT2Zmc2V0OworICAgICAgICBmdW5jdGlv
bkluZm8uZW5kT2Zmc2V0ID0gbG9jYXRpb24uZW5kT2Zmc2V0OwogICAgIH0KLSNlbmRpZgogICAg
IAogICAgIC8vIENhY2hlIHRoZSB0b2tlbml6ZXIgc3RhdGUgYW5kIHRoZSBmdW5jdGlvbiBzY29w
ZSB0aGUgZmlyc3QgdGltZSB0aGUgZnVuY3Rpb24gaXMgcGFyc2VkLgogICAgIC8vIEFueSBmdXR1
cmUgcmVwYXJzaW5nIGNhbiB0aGVuIHNraXAgdGhlIGZ1bmN0aW9uLgogICAgIHN0YXRpYyBjb25z
dCBpbnQgbWluaW11bUZ1bmN0aW9uTGVuZ3RoVG9DYWNoZSA9IDE2OwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxTb3VyY2VQcm92aWRlckNhY2hlSXRlbT4gbmV3SW5mbzsKLSAgICBpbnQgZnVuY3Rpb25M
ZW5ndGggPSBpbmZvLmVuZEZ1bmN0aW9uT2Zmc2V0IC0gaW5mby5zdGFydEZ1bmN0aW9uT2Zmc2V0
OworICAgIGludCBmdW5jdGlvbkxlbmd0aCA9IGZ1bmN0aW9uSW5mby5lbmRPZmZzZXQgLSBmdW5j
dGlvbkluZm8uc3RhcnRPZmZzZXQ7CiAgICAgaWYgKFRyZWVCdWlsZGVyOjpDYW5Vc2VGdW5jdGlv
bkNhY2hlICYmIG1fZnVuY3Rpb25DYWNoZSAmJiBmdW5jdGlvbkxlbmd0aCA+IG1pbmltdW1GdW5j
dGlvbkxlbmd0aFRvQ2FjaGUpIHsKICAgICAgICAgU291cmNlUHJvdmlkZXJDYWNoZUl0ZW1DcmVh
dGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLSAgICAgICAgcGFyYW1ldGVycy5lbmRGdW5jdGlv
bk9mZnNldCA9IGluZm8uZW5kRnVuY3Rpb25PZmZzZXQ7CisgICAgICAgIHBhcmFtZXRlcnMuZW5k
RnVuY3Rpb25PZmZzZXQgPSBmdW5jdGlvbkluZm8uZW5kT2Zmc2V0OwogICAgICAgICBwYXJhbWV0
ZXJzLmZ1bmN0aW9uTmFtZVN0YXJ0ID0gZnVuY3Rpb25OYW1lU3RhcnQ7CiAgICAgICAgIHBhcmFt
ZXRlcnMubGFzdFRvY2tlbkxpbmUgPSBsb2NhdGlvbi5saW5lOwogICAgICAgICBwYXJhbWV0ZXJz
Lmxhc3RUb2NrZW5TdGFydE9mZnNldCA9IGxvY2F0aW9uLnN0YXJ0T2Zmc2V0OwogICAgICAgICBw
YXJhbWV0ZXJzLmxhc3RUb2NrZW5FbmRPZmZzZXQgPSBsb2NhdGlvbi5lbmRPZmZzZXQ7CiAgICAg
ICAgIHBhcmFtZXRlcnMubGFzdFRvY2tlbkxpbmVTdGFydE9mZnNldCA9IGxvY2F0aW9uLmxpbmVT
dGFydE9mZnNldDsKLSNpZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQotICAgICAg
ICBpZiAoaW5mby5mdW5jdGlvbkJvZHlUeXBlID09IEFycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lv
bikgeworICAgICAgICBwYXJhbWV0ZXJzLnBhcmFtZXRlckNvdW50ID0gZnVuY3Rpb25JbmZvLnBh
cmFtZXRlckNvdW50OworICAgICAgICBpZiAoZnVuY3Rpb25Cb2R5VHlwZSA9PSBBcnJvd0Z1bmN0
aW9uQm9keUV4cHJlc3Npb24pIHsKICAgICAgICAgICAgIHBhcmFtZXRlcnMuaXNCb2R5QXJyb3dF
eHByZXNzaW9uID0gdHJ1ZTsKICAgICAgICAgICAgIHBhcmFtZXRlcnMudG9rZW5UeXBlID0gbV90
b2tlbi5tX3R5cGU7CiAgICAgICAgIH0KLSNlbmRpZgogICAgICAgICBmdW5jdGlvblNjb3BlLT5m
aWxsUGFyYW1ldGVyc0ZvclNvdXJjZVByb3ZpZGVyQ2FjaGUocGFyYW1ldGVycyk7CiAgICAgICAg
IG5ld0luZm8gPSBTb3VyY2VQcm92aWRlckNhY2hlSXRlbTo6Y3JlYXRlKHBhcmFtZXRlcnMpOwog
ICAgIH0KICAgICAKICAgICBmYWlsSWZGYWxzZShwb3BTY29wZShmdW5jdGlvblNjb3BlLCBUcmVl
QnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKSwgIlBhcnNlciBlcnJvciIpOwogICAgIAot
I2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCi0gICAgaWYgKGluZm8uZnVuY3Rp
b25Cb2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCisgICAgaWYgKGZ1bmN0
aW9uQm9keVR5cGUgPT0gQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQogICAgICAgICBmYWls
SWZGYWxzZShpc0VuZE9mQXJyb3dGdW5jdGlvbigpLCAiRXhwZWN0ZWQgdGhlIGNsb3NpbmcgJzsn
ICcsJyAnXScgJyknICd9JywgbGluZSB0ZXJtaW5hdG9yIG9yIEVPRiBhZnRlciBhcnJvdyBmdW5j
dGlvbiIpOwogICAgIGVsc2UgewogICAgICAgICBtYXRjaE9yRmFpbChDTE9TRUJSQUNFLCAiRXhw
ZWN0ZWQgYSBjbG9zaW5nICd9JyBhZnRlciBhICIsIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShtb2Rl
KSwgIiBib2R5Iik7CiAgICAgICAgIG5leHQoKTsKICAgICB9Ci0jZWxzZQotICAgIG1hdGNoT3JG
YWlsKENMT1NFQlJBQ0UsICJFeHBlY3RlZCBhIGNsb3NpbmcgJ30nIGFmdGVyIGEgIiwgc3RyaW5n
Rm9yRnVuY3Rpb25Nb2RlKG1vZGUpLCAiIGJvZHkiKTsKLSAgICBuZXh0KCk7Ci0jZW5kaWYKICAg
ICAKICAgICBpZiAobmV3SW5mbykKLSAgICAgICAgbV9mdW5jdGlvbkNhY2hlLT5hZGQoaW5mby5z
dGFydEZ1bmN0aW9uT2Zmc2V0LCBXVEY6Om1vdmUobmV3SW5mbykpOworICAgICAgICBtX2Z1bmN0
aW9uQ2FjaGUtPmFkZChmdW5jdGlvbkluZm8uc3RhcnRPZmZzZXQsIFdURjo6bW92ZShuZXdJbmZv
KSk7CiAgICAgCi0gICAgaW5mby5ib2R5RW5kTGluZSA9IG1fbGFzdFRva2VuRW5kUG9zaXRpb24u
bGluZTsKKyAgICBmdW5jdGlvbkluZm8uZW5kTGluZSA9IG1fbGFzdFRva2VuRW5kUG9zaXRpb24u
bGluZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTcxNiwxMiArMTY4OSwxMiBAQCB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lCiAgICAgSlNUb2tlbkxvY2F0aW9u
IGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgdW5zaWduZWQgZnVuY3Rpb25LZXl3b3Jk
U3RhcnQgPSB0b2tlblN0YXJ0KCk7CiAgICAgbmV4dCgpOwotICAgIFBhcnNlckZ1bmN0aW9uSW5m
bzxUcmVlQnVpbGRlcj4gaW5mbzsKLSAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8o
Y29udGV4dCwgRnVuY3Rpb25OZWVkc05hbWUsIEZ1bmN0aW9uTW9kZSwgdHJ1ZSwgQ29uc3RydWN0
b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwKLSAgICAgICAgZnVuY3Rpb25L
ZXl3b3JkU3RhcnQsIGluZm8sIFN0YW5kYXJkRnVuY3Rpb25QYXJzZVR5cGUpKSwgIkNhbm5vdCBw
YXJzZSB0aGlzIGZ1bmN0aW9uIik7Ci0gICAgZmFpbElmRmFsc2UoaW5mby5uYW1lLCAiRnVuY3Rp
b24gc3RhdGVtZW50cyBtdXN0IGhhdmUgYSBuYW1lIik7Ci0gICAgZmFpbElmRmFsc2VJZlN0cmlj
dChkZWNsYXJlVmFyaWFibGUoaW5mby5uYW1lKSwgIkNhbm5vdCBkZWNsYXJlIGEgZnVuY3Rpb24g
bmFtZWQgJyIsIGluZm8ubmFtZS0+aW1wbCgpLCAiJyBpbiBzdHJpY3QgbW9kZSIpOwotICAgIHJl
dHVybiBjb250ZXh0LmNyZWF0ZUZ1bmNEZWNsU3RhdGVtZW50KGxvY2F0aW9uLCBpbmZvKTsKKyAg
ICBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+IGZ1bmN0aW9uSW5mbzsKKyAgICBmYWls
SWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25OZWVkc05hbWUsIE5v
cm1hbEZ1bmN0aW9uTW9kZSwgdHJ1ZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRp
bmc6Ok5vdE5lZWRlZCwKKyAgICAgICAgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uSW5m
bywgU3RhbmRhcmRGdW5jdGlvblBhcnNlVHlwZSkpLCAiQ2Fubm90IHBhcnNlIHRoaXMgZnVuY3Rp
b24iKTsKKyAgICBmYWlsSWZGYWxzZShmdW5jdGlvbkluZm8ubmFtZSwgIkZ1bmN0aW9uIHN0YXRl
bWVudHMgbXVzdCBoYXZlIGEgbmFtZSIpOworICAgIGZhaWxJZkZhbHNlSWZTdHJpY3QoZGVjbGFy
ZVZhcmlhYmxlKGZ1bmN0aW9uSW5mby5uYW1lKSwgIkNhbm5vdCBkZWNsYXJlIGEgZnVuY3Rpb24g
bmFtZWQgJyIsIGZ1bmN0aW9uSW5mby5uYW1lLT5pbXBsKCksICInIGluIHN0cmljdCBtb2RlIik7
CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQobG9jYXRpb24sIGZ1
bmN0aW9uSW5mbyk7CiB9CiAKICNpZiBFTkFCTEUoRVM2X0NMQVNTX1NZTlRBWCkKQEAgLTE4Mzcs
NyArMTgxMCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUNsYXNzRXgKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRl
cj4gbWV0aG9kSW5mbzsKICAgICAgICAgICAgIGJvb2wgaXNDb25zdHJ1Y3RvciA9ICFpc1N0YXRp
Y01ldGhvZCAmJiAqaWRlbnQgPT0gcHJvcGVydHlOYW1lcy5jb25zdHJ1Y3RvcjsKLSAgICAgICAg
ICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5vUmVx
dWlyZW1lbnRzLCBpc1N0YXRpY01ldGhvZCA/IEZ1bmN0aW9uTW9kZSA6IE1ldGhvZE1vZGUsIGZh
bHNlLCBpc0NvbnN0cnVjdG9yID8gY29uc3RydWN0b3JLaW5kIDogQ29uc3RydWN0b3JLaW5kOjpO
b25lLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgbWV0aG9kU3RhcnQsIG1ldGhvZEluZm8sIFN0YW5k
YXJkRnVuY3Rpb25QYXJzZVR5cGUpKSwgIkNhbm5vdCBwYXJzZSB0aGlzIG1ldGhvZCIpOworICAg
ICAgICAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9u
Tm9SZXF1aXJlbWVudHMsIGlzU3RhdGljTWV0aG9kID8gTm9ybWFsRnVuY3Rpb25Nb2RlIDogTWV0
aG9kTW9kZSwgZmFsc2UsIGlzQ29uc3RydWN0b3IgPyBjb25zdHJ1Y3RvcktpbmQgOiBDb25zdHJ1
Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6TmVlZGVkLCBtZXRob2RTdGFydCwgbWV0aG9k
SW5mbywgU3RhbmRhcmRGdW5jdGlvblBhcnNlVHlwZSkpLCAiQ2Fubm90IHBhcnNlIHRoaXMgbWV0
aG9kIik7CiAgICAgICAgICAgICBmYWlsSWZGYWxzZShpZGVudCAmJiBkZWNsYXJlVmFyaWFibGUo
aWRlbnQpLCAiQ2Fubm90IGRlY2xhcmUgYSBtZXRob2QgbmFtZWQgJyIsIG1ldGhvZEluZm8ubmFt
ZS0+aW1wbCgpLCAiJyIpOwogICAgICAgICAgICAgbWV0aG9kSW5mby5uYW1lID0gaXNDb25zdHJ1
Y3RvciA/IGNsYXNzTmFtZSA6IGlkZW50OwogCkBAIC0yNjU0LDcgKzI2MjcsNyBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzCiAgICAgICAgIG5leHQoKTsKICAgICAg
ICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiBpbmZvOwogICAgICAgICBpbmZvLm5h
bWUgPSAmbV92bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXI7Ci0gICAgICAgIGZhaWxJ
ZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5vUmVxdWlyZW1lbnRz
LCBGdW5jdGlvbk1vZGUsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGlu
Zzo6Tm90TmVlZGVkLCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW5mbywgU3RhbmRhcmRGdW5jdGlv
blBhcnNlVHlwZSkpLCAiQ2Fubm90IHBhcnNlIGZ1bmN0aW9uIGV4cHJlc3Npb24iKTsKKyAgICAg
ICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTm9SZXF1
aXJlbWVudHMsIE5vcm1hbEZ1bmN0aW9uTW9kZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9u
ZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbmZvLCBT
dGFuZGFyZEZ1bmN0aW9uUGFyc2VUeXBlKSksICJDYW5ub3QgcGFyc2UgZnVuY3Rpb24gZXhwcmVz
c2lvbiIpOwogICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkV4cHIobG9jYXRp
b24sIGluZm8pOwogICAgIH0KICNpZiBFTkFCTEUoRVM2X0NMQVNTX1NZTlRBWCkKQEAgLTI4OTQs
NyArMjg2Nyw2IEBAIGVuZE1lbWJlckV4cHJlc3Npb246CiAgICAgcmV0dXJuIGJhc2U7CiB9CiAK
LSNpZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQogdGVtcGxhdGUgPHR5cGVuYW1l
IExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24g
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oVHJlZUJ1aWxk
ZXImIGNvbnRleHQpCiB7CkBAIC0yOTA0LDExICsyODc2LDEwIEBAIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZUV4cHJlc3MKICAgICBsb2NhdGlvbiA9IHRva2VuTG9jYXRpb24oKTsK
ICAgICBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+IGluZm87CiAgICAgaW5mby5uYW1l
ID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyOwotICAgIGZhaWxJZkZhbHNl
KChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5vUmVxdWlyZW1lbnRzLCBGdW5j
dGlvbk1vZGUsIHRydWUsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOb3RO
ZWVkZWQsIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbmZvLCBBcnJvd0Z1bmN0aW9uUGFyc2VUeXBl
KSksICJDYW5ub3QgcGFyc2UgYXJyb3cgZnVuY3Rpb24gZXhwcmVzc2lvbiIpOworICAgIGZhaWxJ
ZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5vUmVxdWlyZW1lbnRz
LCBBcnJvd0Z1bmN0aW9uTW9kZSwgdHJ1ZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJp
bmRpbmc6Ok5vdE5lZWRlZCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGluZm8sIEFycm93RnVuY3Rp
b25QYXJzZVR5cGUpKSwgIkNhbm5vdCBwYXJzZSBhcnJvdyBmdW5jdGlvbiBleHByZXNzaW9uIik7
CiAKICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVBcnJvd0Z1bmN0aW9uRXhwcihsb2NhdGlvbiwg
aW5mbyk7CiB9Ci0jZW5kaWYKIAogc3RhdGljIGNvbnN0IGNoYXIqIG9wZXJhdG9yU3RyaW5nKGJv
b2wgcHJlZml4LCB1bnNpZ25lZCB0b2spCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmgJKHJldmlzaW9uIDE4NjgwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDIxICs4MCw5IEBAIGNsYXNzIFNv
dXJjZUNvZGU7CiBDT01QSUxFX0FTU0VSVChMYXN0VW50YWdnZWRUb2tlbiA8IDY0LCBMZXNzVGhh
bjY0VW50YWdnZWRUb2tlbnMpOwogCiBlbnVtIFNvdXJjZUVsZW1lbnRzTW9kZSB7IENoZWNrRm9y
U3RyaWN0TW9kZSwgRG9udENoZWNrRm9yU3RyaWN0TW9kZSB9OwotI2lmIEVOQUJMRShFUzZfQVJS
T1dGVU5DVElPTl9TWU5UQVgpCiBlbnVtIEZ1bmN0aW9uUGFyc2VUeXBlIHsgU3RhbmRhcmRGdW5j
dGlvblBhcnNlVHlwZSwgQXJyb3dGdW5jdGlvblBhcnNlVHlwZSB9OwotI2Vsc2UKLWVudW0gRnVu
Y3Rpb25QYXJzZVR5cGUgeyBTdGFuZGFyZEZ1bmN0aW9uUGFyc2VUeXBlfTsKLSNlbmRpZgorZW51
bSBGdW5jdGlvbkJvZHlUeXBlIHsgQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uLCBBcnJvd0Z1
bmN0aW9uQm9keUJsb2NrLCBTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrIH07CiBlbnVtIEZ1bmN0
aW9uUmVxdWlyZW1lbnRzIHsgRnVuY3Rpb25Ob1JlcXVpcmVtZW50cywgRnVuY3Rpb25OZWVkc05h
bWUgfTsKLWVudW0gRnVuY3Rpb25QYXJzZU1vZGUgewotICAgIEZ1bmN0aW9uTW9kZSwKLSAgICBH
ZXR0ZXJNb2RlLAotICAgIFNldHRlck1vZGUsCi0gICAgTWV0aG9kTW9kZSwKLSNpZiBFTkFCTEUo
RVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQotICAgIEFycm93RnVuY3Rpb25Nb2RlCi0jZW5kaWYK
LX07CiBlbnVtIERlc3RydWN0dXJpbmdLaW5kIHsKICAgICBEZXN0cnVjdHVyZVRvVmFyaWFibGVz
LAogICAgIERlc3RydWN0dXJlVG9QYXJhbWV0ZXJzLApAQCAtNDI5LDEzICs0MTcsMTIgQEAgY2xh
c3MgUGFyc2VyIHsKIAogcHVibGljOgogICAgIFBhcnNlcigKLSAgICAgICAgVk0qLCBjb25zdCBT
b3VyY2VDb2RlJiwgRnVuY3Rpb25QYXJhbWV0ZXJzKiwgY29uc3QgSWRlbnRpZmllciYsIAotICAg
ICAgICBKU1BhcnNlckJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGUsIEpTUGFyc2VyQ29k
ZVR5cGUsCisgICAgICAgIFZNKiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFyc2VyQnVpbHRpbk1v
ZGUsIEpTUGFyc2VyU3RyaWN0TW9kZSwgSlNQYXJzZXJDb2RlVHlwZSwgCiAgICAgICAgIENvbnN0
cnVjdG9yS2luZCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kID0gQ29uc3RydWN0b3JLaW5kOjpOb25l
LCBUaGlzVERaTW9kZSA9IFRoaXNURFpNb2RlOjpDaGVja0lmTmVlZGVkKTsKICAgICB+UGFyc2Vy
KCk7CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgUGFyc2VkTm9kZT4KLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8UGFyc2VkTm9kZT4gcGFyc2UoUGFyc2VyRXJyb3ImKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
UGFyc2VkTm9kZT4gcGFyc2UoUGFyc2VyRXJyb3ImLCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rp
b25QYXJzZU1vZGUpOwogCiAgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb25CZWZvcmVMYXN0TmV3
bGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGV4ZXItPnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUo
KTsgfQogICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbkJlZm9yZUxhc3RUb2tlbigpIGNvbnN0
IHsgcmV0dXJuIG1fbGV4ZXItPmxhc3RUb2tlbkxvY2F0aW9uKCk7IH0KQEAgLTU2Myw3ICs1NTAs
NyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIFBhcnNlcigpOwotICAgIFN0cmluZyBwYXJzZUlu
bmVyKCk7CisgICAgU3RyaW5nIHBhcnNlSW5uZXIoY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9u
UGFyc2VNb2RlKTsKIAogICAgIHZvaWQgZGlkRmluaXNoUGFyc2luZyhTb3VyY2VFbGVtZW50cyos
IERlY2xhcmF0aW9uU3RhY2tzOjpWYXJTdGFjayYsIAogICAgICAgICBEZWNsYXJhdGlvblN0YWNr
czo6RnVuY3Rpb25TdGFjayYsIENvZGVGZWF0dXJlcywgaW50LCBJZGVudGlmaWVyU2V0JiwgY29u
c3QgVmVjdG9yPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+JiYpOwpAQCAtNjIxLDcgKzYwOCw2
IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBtX3Rva2VuLm1fdHlwZSA9PSBJREVOVCAmJiAq
bV90b2tlbi5tX2RhdGEuaWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+b2Y7CiAgICAgfQog
ICAgIAotI2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCiAgICAgQUxXQVlTX0lO
TElORSBib29sIGlzRW5kT2ZBcnJvd0Z1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiBt
YXRjaChTRU1JQ09MT04pIHx8IG1hdGNoKENPTU1BKSB8fCBtYXRjaChDTE9TRVBBUkVOKSB8fCBt
YXRjaChDTE9TRUJSQUNFKSB8fCBtYXRjaChDTE9TRUJSQUNLRVQpIHx8IG1hdGNoKEVPRlRPSykg
fHwgbV9sZXhlci0+cHJldlRlcm1pbmF0b3IoKTsKQEAgLTYyOSw2ICs2MTUsNyBAQCBwcml2YXRl
OgogICAgIAogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0Fycm93RnVuY3Rpb25QYXJhbXRlcnMo
KQogICAgIHsKKyNpZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQogICAgICAgICBi
b29sIGlzQXJyb3dGdW5jdGlvbiA9IGZhbHNlOwogICAgICAgICAKICAgICAgICAgaWYgKG1hdGNo
KEVPRlRPSykpCkBAIC02NTksOCArNjQ2LDEwIEBAIHByaXZhdGU6CiAgICAgICAgIHJlc3RvcmVT
YXZlUG9pbnQoc2F2ZUFycm93RnVuY3Rpb25Qb2ludCk7CiAgICAgICAgIAogICAgICAgICByZXR1
cm4gaXNBcnJvd0Z1bmN0aW9uOwotICAgIH0KKyNlbHNlCisgICAgICAgIHJldHVybiBmYWxzZTsK
ICNlbmRpZgorICAgIH0KICAgICAKICAgICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIHRva2VuU3Rh
cnQoKQogICAgIHsKQEAgLTc2Niw3ICs3NTUsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIH0KIAotICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNv
dXJjZUVsZW1lbnRzIHBhcnNlU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImLCBTb3VyY2VFbGVt
ZW50c01vZGUsIEZ1bmN0aW9uUGFyc2VUeXBlKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJzZVNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVy
JiwgU291cmNlRWxlbWVudHNNb2RlKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVTdGF0ZW1lbnQgcGFyc2VTdGF0ZW1lbnRMaXN0SXRlbShUcmVlQnVpbGRlciYsIGNvbnN0
IElkZW50aWZpZXIqJiBkaXJlY3RpdmUsIHVuc2lnbmVkKiBkaXJlY3RpdmVMaXRlcmFsTGVuZ3Ro
KTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VT
dGF0ZW1lbnQoVHJlZUJ1aWxkZXImLCBjb25zdCBJZGVudGlmaWVyKiYgZGlyZWN0aXZlLCB1bnNp
Z25lZCogZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCA9IDApOwogI2lmIEVOQUJMRShFUzZfQ0xBU1Nf
U1lOVEFYKQpAQCAtODA3LDE3ICs3OTYsMTMgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVQcm9wZXJ0eSBwYXJzZVByb3BlcnR5KFRyZWVCdWlsZGVyJiwg
Ym9vbCBzdHJpY3QpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJl
c3Npb24gcGFyc2VQcm9wZXJ0eU1ldGhvZChUcmVlQnVpbGRlciYgY29udGV4dCwgY29uc3QgSWRl
bnRpZmllciogbWV0aG9kTmFtZSk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlUHJvcGVydHkgcGFyc2VHZXR0ZXJTZXR0ZXIoVHJlZUJ1aWxkZXImLCBib29sIHN0cmljdCwg
UHJvcGVydHlOb2RlOjpUeXBlLCB1bnNpZ25lZCBnZXR0ZXJPclNldHRlclN0YXJ0T2Zmc2V0LCBD
b25zdHJ1Y3RvcktpbmQgPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZyA9IFN1
cGVyQmluZGluZzo6Tm90TmVlZGVkKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IEFMV0FZU19JTkxJTkUgVHJlZUZ1bmN0aW9uQm9keSBwYXJzZUZ1bmN0aW9uQm9keShUcmVlQnVp
bGRlciYsIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBp
bnQgcGFyYW1ldGVyc1N0YXJ0LCBDb25zdHJ1Y3RvcktpbmQsIEZ1bmN0aW9uUGFyc2VUeXBlKTsK
LSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgVHJlZUZvcm1h
bFBhcmFtZXRlckxpc3QgcGFyc2VGb3JtYWxQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJik7CisgICAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdBWVNfSU5MSU5FIFRyZWVGdW5jdGlvbkJv
ZHkgcGFyc2VGdW5jdGlvbkJvZHkoVHJlZUJ1aWxkZXImLCBjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBpbnQsIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBp
bnQgcGFyYW1ldGVyc1N0YXJ0LCBDb25zdHJ1Y3RvcktpbmQsIEZ1bmN0aW9uQm9keVR5cGUsIHVu
c2lnbmVkLCBGdW5jdGlvblBhcnNlTW9kZSk7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBBTFdBWVNfSU5MSU5FIGJvb2wgcGFyc2VGb3JtYWxQYXJhbWV0ZXJzKFRyZWVCdWlsZGVy
JiwgVHJlZUZvcm1hbFBhcmFtZXRlckxpc3QsIHVuc2lnbmVkJik7CiAgICAgZW51bSBWYXJEZWNs
YXJhdGlvbkxpc3RDb250ZXh0IHsgRm9yTG9vcENvbnRleHQsIFZhckRlY2xhcmF0aW9uQ29udGV4
dCB9OwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gcGFy
c2VWYXJEZWNsYXJhdGlvbkxpc3QoVHJlZUJ1aWxkZXImLCBpbnQmIGRlY2xhcmF0aW9ucywgVHJl
ZURlc3RydWN0dXJpbmdQYXR0ZXJuJiBsYXN0UGF0dGVybiwgVHJlZUV4cHJlc3Npb24mIGxhc3RJ
bml0aWFsaXplciwgSlNUZXh0UG9zaXRpb24mIGlkZW50U3RhcnQsIEpTVGV4dFBvc2l0aW9uJiBp
bml0U3RhcnQsIEpTVGV4dFBvc2l0aW9uJiBpbml0RW5kLCBWYXJEZWNsYXJhdGlvbkxpc3RDb250
ZXh0KTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBUcmVl
Q29uc3REZWNsTGlzdCBwYXJzZUNvbnN0RGVjbGFyYXRpb25MaXN0KFRyZWVCdWlsZGVyJik7Ci0K
LSNpZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQotICAgIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZUFycm93RnVuY3Rpb25TaW5nbGVFeHBy
ZXNzaW9uQm9keShUcmVlQnVpbGRlciYsIEZ1bmN0aW9uUGFyc2VUeXBlKTsKKyAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJzZUFycm93RnVuY3Rp
b25TaW5nbGVFeHByZXNzaW9uQm9keVNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJik7CiAgICAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBwYXJzZUFycm93RnVu
Y3Rpb25FeHByZXNzaW9uKFRyZWVCdWlsZGVyJik7Ci0jZW5kaWYKLQogICAgIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIFRyZWVEZXN0cnVjdHVyaW5nUGF0dGVybiBj
cmVhdGVCaW5kaW5nUGF0dGVybihUcmVlQnVpbGRlciYsIERlc3RydWN0dXJpbmdLaW5kLCBjb25z
dCBJZGVudGlmaWVyJiwgaW50IGRlcHRoLCBKU1Rva2VuKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBUcmVlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gcGFyc2VE
ZXN0cnVjdHVyaW5nUGF0dGVybihUcmVlQnVpbGRlciYsIERlc3RydWN0dXJpbmdLaW5kLCBpbnQg
ZGVwdGggPSAwKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElO
RSBUcmVlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gdHJ5UGFyc2VEZXN0cnVjdHVyaW5nUGF0dGVybkV4
cHJlc3Npb24oVHJlZUJ1aWxkZXImKTsKQEAgLTg1MCwxMyArODM1LDEwIEBAIHByaXZhdGU6CiAg
ICAgICAgIHJldHVybiBhbGxvd0F1dG9tYXRpY1NlbWljb2xvbigpOwogICAgIH0KICAgICAKLQot
I2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCiAgICAgdm9pZCBzZXRFbmRPZlN0
YXRlbWVudCgpCiAgICAgewogICAgICAgICBtX2xleGVyLT5zZXRUb2tlblBvc2l0aW9uKCZtX3Rv
a2VuKTsKICAgICB9Ci0jZW5kaWYKIAogICAgIGJvb2wgY2FuUmVjdXJzZSgpCiAgICAgewpAQCAt
OTI4LDYgKzkxMCw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgU291cmNlQ29kZSogbV9zb3VyY2U7
CiAgICAgUGFyc2VyQXJlbmEgbV9wYXJzZXJBcmVuYTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGV4
ZXJUeXBlPiBtX2xleGVyOworICAgIEZ1bmN0aW9uUGFyYW1ldGVycyogbV9wYXJhbWV0ZXJzIHsg
bnVsbHB0ciB9OwogICAgIAogICAgIGJvb2wgbV9oYXNTdGFja092ZXJmbG93OwogICAgIFN0cmlu
ZyBtX2Vycm9yTWVzc2FnZTsKQEAgLTk3NCwxMyArOTU3LDEzIEBAIHByaXZhdGU6CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyc2VkTm9kZT4KLXN0
ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UoUGFyc2Vy
RXJyb3ImIGVycm9yKQorc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZShQYXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0IElkZW50aWZpZXImIGNhbGxlZU5h
bWUsIEZ1bmN0aW9uUGFyc2VNb2RlIHBhcnNlTW9kZSkKIHsKICAgICBpbnQgZXJyTGluZTsKICAg
ICBTdHJpbmcgZXJyTXNnOwogCiAgICAgaWYgKFBhcnNlZE5vZGU6OnNjb3BlSXNGdW5jdGlvbikK
LSAgICAgICAgbV9sZXhlci0+c2V0SXNSZXBhcnNpbmcoKTsKKyAgICAgICAgbV9sZXhlci0+c2V0
SXNSZXBhcnNpbmdGdW5jdGlvbigpOwogCiAgICAgbV9zb3VyY2VFbGVtZW50cyA9IDA7CiAKQEAg
LTk5MSw3ICs5NzQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVy
CiAgICAgQVNTRVJUKG1fc291cmNlLT5zdGFydENvbHVtbigpID4gMCk7CiAgICAgdW5zaWduZWQg
c3RhcnRDb2x1bW4gPSBtX3NvdXJjZS0+c3RhcnRDb2x1bW4oKSAtIDE7CiAKLSAgICBTdHJpbmcg
cGFyc2VFcnJvciA9IHBhcnNlSW5uZXIoKTsKKyAgICBTdHJpbmcgcGFyc2VFcnJvciA9IHBhcnNl
SW5uZXIoY2FsbGVlTmFtZSwgcGFyc2VNb2RlKTsKIAogICAgIGludCBsaW5lTnVtYmVyID0gbV9s
ZXhlci0+bGluZU51bWJlcigpOwogICAgIGJvb2wgbGV4RXJyb3IgPSBtX2xleGVyLT5zYXdFcnJv
cigpOwpAQCAtMTAyMSw2ICsxMDA0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBh
cnNlcjxMZXhlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV92YXJEZWNs
YXJhdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2Z1bmNEZWNs
YXJhdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2NhcHR1cmVk
VmFyaWFibGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJhbWV0
ZXJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm1fc291cmNlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9mZWF0dXJlcywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fbnVtQ29uc3RhbnRzKTsKQEAgLTEwNTQsMTggKzEw
MzgsMTkgQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxMZXhlcgogCiB0ZW1w
bGF0ZSA8Y2xhc3MgUGFyc2VkTm9kZT4KIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJz
ZSgKLSAgICBWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25QYXJhbWV0
ZXJzKiBwYXJhbWV0ZXJzLAorICAgIFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLAog
ICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1v
ZGUsCiAgICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIEpTUGFyc2VyQ29kZVR5cGUg
Y29kZVR5cGUsCiAgICAgUGFyc2VyRXJyb3ImIGVycm9yLCBKU1RleHRQb3NpdGlvbiogcG9zaXRp
b25CZWZvcmVMYXN0TmV3bGluZSA9IDAsCi0gICAgQ29uc3RydWN0b3JLaW5kIGRlZmF1bHRDb25z
dHJ1Y3RvcktpbmQgPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFRoaXNURFpNb2RlIHRoaXNURFpN
b2RlID0gVGhpc1REWk1vZGU6OkNoZWNrSWZOZWVkZWQpCisgICAgRnVuY3Rpb25QYXJzZU1vZGUg
cGFyc2VNb2RlID0gTm90QUZ1bmN0aW9uTW9kZSwgQ29uc3RydWN0b3JLaW5kIGRlZmF1bHRDb25z
dHJ1Y3RvcktpbmQgPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIAorICAgIFRoaXNURFpNb2RlIHRo
aXNURFpNb2RlID0gVGhpc1REWk1vZGU6OkNoZWNrSWZOZWVkZWQpCiB7CiAgICAgU2FtcGxpbmdS
ZWdpb24gc2FtcGxpbmdSZWdpb24oIlBhcnNpbmciKTsKIAogICAgIEFTU0VSVCghc291cmNlLnBy
b3ZpZGVyKCktPnNvdXJjZSgpLmlzTnVsbCgpKTsKICAgICBpZiAoc291cmNlLnByb3ZpZGVyKCkt
PnNvdXJjZSgpLmlzOEJpdCgpKSB7Ci0gICAgICAgIFBhcnNlcjxMZXhlcjxMQ2hhcj4+IHBhcnNl
cih2bSwgc291cmNlLCBwYXJhbWV0ZXJzLCBuYW1lLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwg
Y29kZVR5cGUsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIHRoaXNURFpNb2RlKTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWRO
b2RlPihlcnJvcik7CisgICAgICAgIFBhcnNlcjxMZXhlcjxMQ2hhcj4+IHBhcnNlcih2bSwgc291
cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgY29kZVR5cGUsIGRlZmF1bHRDb25zdHJ1Y3Rv
cktpbmQsIHRoaXNURFpNb2RlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+
IHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJvciwgbmFtZSwgcGFyc2VNb2Rl
KTsKICAgICAgICAgaWYgKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpCiAgICAgICAgICAgICAq
cG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9IHBhcnNlci5wb3NpdGlvbkJlZm9yZUxhc3ROZXds
aW5lKCk7CiAgICAgICAgIGlmIChidWlsdGluTW9kZSA9PSBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpC
dWlsdGluKSB7CkBAIC0xMDc3LDggKzEwNjIsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9k
ZT4gcGFyc2UoCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIEFTU0VSVF9XSVRI
X01FU1NBR0UoZGVmYXVsdENvbnN0cnVjdG9yS2luZCA9PSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUs
ICJCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZURlZmF1bHRDb25zdHJ1Y3RvciBzaG91bGQgYWx3
YXlzIHVzZSBhIDgtYml0IHN0cmluZyIpOwotICAgIFBhcnNlcjxMZXhlcjxVQ2hhcj4+IHBhcnNl
cih2bSwgc291cmNlLCBwYXJhbWV0ZXJzLCBuYW1lLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwg
Y29kZVR5cGUsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIHRoaXNURFpNb2RlKTsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+
KGVycm9yKTsKKyAgICBQYXJzZXI8TGV4ZXI8VUNoYXI+PiBwYXJzZXIodm0sIHNvdXJjZSwgYnVp
bHRpbk1vZGUsIHN0cmljdE1vZGUsIGNvZGVUeXBlLCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kLCB0
aGlzVERaTW9kZSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHJlc3VsdCA9IHBh
cnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJvciwgbmFtZSwgcGFyc2VNb2RlKTsKICAgICBpZiAo
cG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSkKICAgICAgICAgKnBvc2l0aW9uQmVmb3JlTGFzdE5l
d2xpbmUgPSBwYXJzZXIucG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpOwogICAgIHJldHVybiBy
ZXN1bHQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckZ1bmN0aW9u
SW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
RnVuY3Rpb25JbmZvLmgJKHJldmlzaW9uIDE4NjgwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyRnVuY3Rpb25JbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDI3ICsy
OCwxNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotI2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElP
Tl9TWU5UQVgpCi1lbnVtIEZ1bmN0aW9uQm9keVR5cGUgeyBBcnJvd0Z1bmN0aW9uQm9keUV4cHJl
c3Npb24sIEFycm93RnVuY3Rpb25Cb2R5QmxvY2ssIFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2sg
fTsKLSNlbmRpZgotCiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+CiBzdHJ1Y3QgUGFyc2Vy
RnVuY3Rpb25JbmZvIHsKICAgICBjb25zdCBJZGVudGlmaWVyKiBuYW1lID0gMDsKICAgICB0eXBl
bmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBwYXJhbWV0ZXJzID0gMDsKICAg
ICB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6RnVuY3Rpb25Cb2R5IGJvZHkgPSAwOwotICAgIHVuc2ln
bmVkIHN0YXJ0RnVuY3Rpb25PZmZzZXQgPSAwOwotICAgIHVuc2lnbmVkIGVuZEZ1bmN0aW9uT2Zm
c2V0ID0gMDsKLSAgICBpbnQgYm9keVN0YXJ0TGluZSA9IDA7Ci0gICAgaW50IGJvZHlFbmRMaW5l
ID0gMDsKKyAgICB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCA9IDA7CisgICAgdW5zaWduZWQgc3Rh
cnRPZmZzZXQgPSAwOworICAgIHVuc2lnbmVkIGVuZE9mZnNldCA9IDA7CisgICAgaW50IHN0YXJ0
TGluZSA9IDA7CisgICAgaW50IGVuZExpbmUgPSAwOwogICAgIHVuc2lnbmVkIGJvZHlTdGFydENv
bHVtbiA9IDA7Ci0jaWYgRU5BQkxFKEVTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCkKLSAgICB1bnNp
Z25lZCBhcnJvd0Z1bmN0aW9uT2Zmc2V0ID0gMDsKLSAgICB1bnNpZ25lZCBhcnJvd0Z1bmN0aW9u
TmV4dFRvY2tlbkVuZE9mZnNldCA9IDA7Ci0gICAgYm9vbCBpc0Fycm93RnVuY3Rpb24geyBmYWxz
ZSB9OwotICAgIGJvb2wgaXNFbmRCeVRlcm1pbmF0b3IgeyBmYWxzZSB9OwotICAgIEZ1bmN0aW9u
Qm9keVR5cGUgZnVuY3Rpb25Cb2R5VHlwZSB7IFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2sgfTsK
LSNlbmRpZgogfTsKIAogI2lmIEVOQUJMRShFUzZfQ0xBU1NfU1lOVEFYKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAkocmV2aXNpb24gMTg2ODA4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC00NCw2ICs0NCwxNSBAQCBlbnVtIERlYnVnZ2VyTW9kZSB7IERlYnVnZ2VyT2ZmLCBE
ZWJ1Z2dlCiAKIGVudW0gRnVuY3Rpb25Nb2RlIHsgRnVuY3Rpb25FeHByZXNzaW9uLCBGdW5jdGlv
bkRlY2xhcmF0aW9uIH07CiAKK2VudW0gRnVuY3Rpb25QYXJzZU1vZGUgeworICAgIE5vcm1hbEZ1
bmN0aW9uTW9kZSwKKyAgICBHZXR0ZXJNb2RlLAorICAgIFNldHRlck1vZGUsCisgICAgTWV0aG9k
TW9kZSwKKyAgICBOb3RBRnVuY3Rpb25Nb2RlLAorICAgIEFycm93RnVuY3Rpb25Nb2RlCit9Owor
CiBpbmxpbmUgYm9vbCBmdW5jdGlvbk5hbWVJc0luU2NvcGUoY29uc3QgSWRlbnRpZmllciYgbmFt
ZSwgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSkKIHsKICAgICBpZiAobmFtZS5pc051bGwoKSkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZS5oCShyZXZpc2lv
biAxODY4MDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMTA1LDkgKzEwNSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAKICAgICAgICAgU291cmNlQ29kZSBzdWJFeHByZXNzaW9uKHVuc2lnbmVkIG9wZW5CcmFjZSwg
dW5zaWduZWQgY2xvc2VCcmFjZSwgaW50IGZpcnN0TGluZSwgaW50IHN0YXJ0Q29sdW1uKTsKIAot
I2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCi0gICAgICAgIFNvdXJjZUNvZGUg
c3ViQXJyb3dFeHByZXNzaW9uKHVuc2lnbmVkIHN0YXJ0QXJyb3dGdW5jdGlvbiwgdW5zaWduZWQg
ZW5kQXJyb3dGdW5jdGlvbiwgaW50IGZpcnN0TGluZSwgaW50IHN0YXJ0Q29sdW1uKTsKLSNlbmRp
ZgogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4gbV9wcm92aWRl
cjsKICAgICAgICAgaW50IG1fc3RhcnRDaGFyOwpAQCAtMTIxLDIwICsxMTgsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgcmV0dXJuIFNvdXJjZUNvZGUoU3RyaW5nU291cmNlUHJvdmlkZXI6
OmNyZWF0ZShzb3VyY2UsIHVybCwgc3RhcnRQb3NpdGlvbiksIHN0YXJ0UG9zaXRpb24ubV9saW5l
Lm9uZUJhc2VkSW50KCksIHN0YXJ0UG9zaXRpb24ubV9jb2x1bW4ub25lQmFzZWRJbnQoKSk7CiAg
ICAgfQogICAgIAotI2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCi0gICAgaW5s
aW5lIFNvdXJjZUNvZGUgU291cmNlQ29kZTo6c3ViQXJyb3dFeHByZXNzaW9uKHVuc2lnbmVkIHN0
YXJ0QXJyb3dGdW5jdGlvbiwgdW5zaWduZWQgZW5kQXJyb3dGdW5jdGlvbiwgaW50IGZpcnN0TGlu
ZSwgaW50IHN0YXJ0Q29sdW1uKQotICAgIHsKLSAgICAgICAgQVNTRVJUKHByb3ZpZGVyKCktPnNv
dXJjZSgpW3N0YXJ0QXJyb3dGdW5jdGlvbl0gPT0gJz0nICYmIHByb3ZpZGVyKCktPnNvdXJjZSgp
W3N0YXJ0QXJyb3dGdW5jdGlvbiArIDFdID09ICc+Jyk7Ci0KLSAgICAgICAgc3RhcnRDb2x1bW4g
Kz0gMTsgLy8gQ29udmVydCB0byBiYXNlIDEuCi0gICAgICAgIHJldHVybiBTb3VyY2VDb2RlKHBy
b3ZpZGVyKCksIHN0YXJ0QXJyb3dGdW5jdGlvbiwgZW5kQXJyb3dGdW5jdGlvbiwgZmlyc3RMaW5l
LCBzdGFydENvbHVtbik7Ci0gICAgfQotI2VuZGlmCi0KICAgICBpbmxpbmUgU291cmNlQ29kZSBT
b3VyY2VDb2RlOjpzdWJFeHByZXNzaW9uKHVuc2lnbmVkIG9wZW5CcmFjZSwgdW5zaWduZWQgY2xv
c2VCcmFjZSwgaW50IGZpcnN0TGluZSwgaW50IHN0YXJ0Q29sdW1uKQogICAgIHsKLSAgICAgICAg
QVNTRVJUKHByb3ZpZGVyKCktPnNvdXJjZSgpW29wZW5CcmFjZV0gPT0gJ3snKTsKLSAgICAgICAg
QVNTRVJUKHByb3ZpZGVyKCktPnNvdXJjZSgpW2Nsb3NlQnJhY2VdID09ICd9Jyk7CiAgICAgICAg
IHN0YXJ0Q29sdW1uICs9IDE7IC8vIENvbnZlcnQgdG8gYmFzZSAxLgogICAgICAgICByZXR1cm4g
U291cmNlQ29kZShwcm92aWRlcigpLCBvcGVuQnJhY2UsIGNsb3NlQnJhY2UgKyAxLCBmaXJzdExp
bmUsIHN0YXJ0Q29sdW1uKTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1NvdXJjZVByb3ZpZGVyQ2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyQ2FjaGUuaAkocmV2aXNpb24gMTg2ODA4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlckNhY2hlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIGNvbnN0IFNvdXJjZVByb3Zp
ZGVyQ2FjaGVJdGVtKiBnZXQoaW50IHNvdXJjZVBvc2l0aW9uKSBjb25zdCB7IHJldHVybiBtX21h
cC5nZXQoc291cmNlUG9zaXRpb24pOyB9CiAKIHByaXZhdGU6Ci0gICAgSGFzaE1hcDxpbnQsIHN0
ZDo6dW5pcXVlX3B0cjxTb3VyY2VQcm92aWRlckNhY2hlSXRlbT4+IG1fbWFwOworICAgIEhhc2hN
YXA8aW50LCBzdGQ6OnVuaXF1ZV9wdHI8U291cmNlUHJvdmlkZXJDYWNoZUl0ZW0+LCBXVEY6Oklu
dEhhc2g8aW50PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxpbnQ+PiBtX21h
cDsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJv
dmlkZXJDYWNoZUl0ZW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1NvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmgJKHJldmlzaW9uIDE4NjgwOCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDAsMTUgKzQwLDE0IEBAIHN0cnVjdCBTb3VyY2VQcm92aWRlckNhY2hlSXRl
bUNyZWF0aW9uUGEKICAgICB1bnNpZ25lZCBsYXN0VG9ja2VuRW5kT2Zmc2V0OwogICAgIHVuc2ln
bmVkIGxhc3RUb2NrZW5MaW5lU3RhcnRPZmZzZXQ7CiAgICAgdW5zaWduZWQgZW5kRnVuY3Rpb25P
ZmZzZXQ7CisgICAgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQ7CiAgICAgYm9vbCBuZWVkc0Z1bGxB
Y3RpdmF0aW9uOwogICAgIGJvb2wgdXNlc0V2YWw7CiAgICAgYm9vbCBzdHJpY3RNb2RlOwogICAg
IFZlY3RvcjxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiB1c2VkVmFyaWFibGVzOwogICAgIFZl
Y3RvcjxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiB3cml0dGVuVmFyaWFibGVzOwotI2lmIEVO
QUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCiAgICAgYm9vbCBpc0JvZHlBcnJvd0V4cHJl
c3Npb24geyBmYWxzZSB9OwogICAgIEpTVG9rZW5UeXBlIHRva2VuVHlwZSB7IENMT1NFQlJBQ0Ug
fTsKLSNlbmRpZgogfTsKIAogI2lmIENPTVBJTEVSKE1TVkMpCkBAIC02NSwxMSArNjQsNyBAQCBw
dWJsaWM6CiAgICAgSlNUb2tlbiBlbmRGdW5jdGlvblRva2VuKCkgY29uc3QgCiAgICAgewogICAg
ICAgICBKU1Rva2VuIHRva2VuOwotI2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgp
CiAgICAgICAgIHRva2VuLm1fdHlwZSA9IGlzQm9keUFycm93RXhwcmVzc2lvbiA/IHRva2VuVHlw
ZSA6IENMT1NFQlJBQ0U7Ci0jZWxzZQotICAgICAgICB0b2tlbi5tX3R5cGUgPSBDTE9TRUJSQUNF
OwotI2VuZGlmCiAgICAgICAgIHRva2VuLm1fZGF0YS5vZmZzZXQgPSBsYXN0VG9ja2VuU3RhcnRP
ZmZzZXQ7CiAgICAgICAgIHRva2VuLm1fbG9jYXRpb24uc3RhcnRPZmZzZXQgPSBsYXN0VG9ja2Vu
U3RhcnRPZmZzZXQ7CiAgICAgICAgIHRva2VuLm1fbG9jYXRpb24uZW5kT2Zmc2V0ID0gbGFzdFRv
Y2tlbkVuZE9mZnNldDsKQEAgLTg3LDYgKzgyLDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGxh
c3RUb2NrZW5MaW5lIDogMzE7CiAgICAgdW5zaWduZWQgbGFzdFRvY2tlblN0YXJ0T2Zmc2V0IDog
MzE7CiAgICAgdW5zaWduZWQgbGFzdFRvY2tlbkVuZE9mZnNldDogMzE7CisgICAgdW5zaWduZWQg
cGFyYW1ldGVyQ291bnQ7CiAgICAgCiAgICAgYm9vbCB1c2VzRXZhbCA6IDE7CiAKQEAgLTk4LDEw
ICs5NCw4IEBAIHB1YmxpYzoKIAogICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiogdXNlZFZhcmlhYmxl
cygpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8VW5pcXVlZFN0cmluZ0ltcGwqKj4obV92YXJp
YWJsZXMpOyB9CiAgICAgVW5pcXVlZFN0cmluZ0ltcGwqKiB3cml0dGVuVmFyaWFibGVzKCkgY29u
c3QgeyByZXR1cm4gY29uc3RfY2FzdDxVbmlxdWVkU3RyaW5nSW1wbCoqPigmbV92YXJpYWJsZXNb
dXNlZFZhcmlhYmxlc0NvdW50XSk7IH0KLSNpZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lO
VEFYKQogICAgIGJvb2wgaXNCb2R5QXJyb3dFeHByZXNzaW9uOwogICAgIEpTVG9rZW5UeXBlIHRv
a2VuVHlwZTsKLSNlbmRpZgogCiBwcml2YXRlOgogICAgIFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVt
KGNvbnN0IFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtQ3JlYXRpb25QYXJhbWV0ZXJzJik7CkBAIC0x
MzAsMTUgKzEyNCwxNCBAQCBpbmxpbmUgU291cmNlUHJvdmlkZXJDYWNoZUl0ZW06OlNvdXJjZVBy
CiAgICAgLCBsYXN0VG9ja2VuTGluZShwYXJhbWV0ZXJzLmxhc3RUb2NrZW5MaW5lKQogICAgICwg
bGFzdFRvY2tlblN0YXJ0T2Zmc2V0KHBhcmFtZXRlcnMubGFzdFRvY2tlblN0YXJ0T2Zmc2V0KQog
ICAgICwgbGFzdFRvY2tlbkVuZE9mZnNldChwYXJhbWV0ZXJzLmxhc3RUb2NrZW5FbmRPZmZzZXQp
CisgICAgLCBwYXJhbWV0ZXJDb3VudChwYXJhbWV0ZXJzLnBhcmFtZXRlckNvdW50KQogICAgICwg
dXNlc0V2YWwocGFyYW1ldGVycy51c2VzRXZhbCkKICAgICAsIHN0cmljdE1vZGUocGFyYW1ldGVy
cy5zdHJpY3RNb2RlKQogICAgICwgbGFzdFRvY2tlbkxpbmVTdGFydE9mZnNldChwYXJhbWV0ZXJz
Lmxhc3RUb2NrZW5MaW5lU3RhcnRPZmZzZXQpCiAgICAgLCB1c2VkVmFyaWFibGVzQ291bnQocGFy
YW1ldGVycy51c2VkVmFyaWFibGVzLnNpemUoKSkKICAgICAsIHdyaXR0ZW5WYXJpYWJsZXNDb3Vu
dChwYXJhbWV0ZXJzLndyaXR0ZW5WYXJpYWJsZXMuc2l6ZSgpKQotI2lmIEVOQUJMRShFUzZfQVJS
T1dGVU5DVElPTl9TWU5UQVgpCiAgICAgLCBpc0JvZHlBcnJvd0V4cHJlc3Npb24ocGFyYW1ldGVy
cy5pc0JvZHlBcnJvd0V4cHJlc3Npb24pCiAgICAgLCB0b2tlblR5cGUocGFyYW1ldGVycy50b2tl
blR5cGUpCi0jZW5kaWYKIHsKICAgICB1bnNpZ25lZCBqID0gMDsKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgdXNlZFZhcmlhYmxlc0NvdW50OyArK2ksICsraikgewpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgJKHJldmlzaW9uIDE4Njgw
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02OSw3ICs2OSw2IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAg
dHlwZWRlZiBTeW50YXhDaGVja2VyIEZ1bmN0aW9uQm9keUJ1aWxkZXI7CiAgICAgZW51bSB7IE5v
bmVFeHByID0gMCwKICAgICAgICAgUmVzb2x2ZUV2YWxFeHByLCBSZXNvbHZlRXhwciwgSW50ZWdl
ckV4cHIsIERvdWJsZUV4cHIsIFN0cmluZ0V4cHIsCiAgICAgICAgIFRoaXNFeHByLCBOdWxsRXhw
ciwgQm9vbEV4cHIsIFJlZ0V4cEV4cHIsIE9iamVjdExpdGVyYWxFeHByLApAQCAtMTc4LDEwICsx
NzcsOCBAQCBwdWJsaWM6CiAgICAgQ2xhc3NFeHByZXNzaW9uIGNyZWF0ZUNsYXNzRXhwcihjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvblR5cGUsIEV4
cHJlc3Npb25UeXBlLCBQcm9wZXJ0eUxpc3QsIFByb3BlcnR5TGlzdCkgeyByZXR1cm4gQ2xhc3NF
eHByOyB9CiAjZW5kaWYKICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVGdW5jdGlvbkV4cHIoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPFN5bnRheENoZWNr
ZXI+JikgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9Ci0gICAgaW50IGNyZWF0ZUZ1bmN0aW9uQm9k
eShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGlu
dCwgYm9vbCwgaW50LCBpbnQsIGludCwgQ29uc3RydWN0b3JLaW5kKSB7IHJldHVybiBGdW5jdGlv
bkJvZHlSZXN1bHQ7IH0KLSNpZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQorICAg
IGludCBjcmVhdGVGdW5jdGlvbkJvZHkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGJvb2wsIGludCwgaW50LCBpbnQsIENvbnN0cnVjdG9y
S2luZCwgdW5zaWduZWQsIGludCkgeyByZXR1cm4gRnVuY3Rpb25Cb2R5UmVzdWx0OyB9CiAgICAg
RXhwcmVzc2lvblR5cGUgY3JlYXRlQXJyb3dGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPFN5bnRheENoZWNrZXI+JikgeyByZXR1cm4g
RnVuY3Rpb25FeHByOyB9Ci0jZW5kaWYgCiAgICAgdm9pZCBzZXRGdW5jdGlvbk5hbWVTdGFydChp
bnQsIGludCkgeyB9CiAgICAgaW50IGNyZWF0ZUFyZ3VtZW50cygpIHsgcmV0dXJuIEFyZ3VtZW50
c1Jlc3VsdDsgfQogICAgIGludCBjcmVhdGVBcmd1bWVudHMoaW50KSB7IHJldHVybiBBcmd1bWVu
dHNSZXN1bHQ7IH0KQEAgLTIyMCw4ICsyMTcsOCBAQCBwdWJsaWM6CiAgICAgaW50IGNyZWF0ZVBy
b3BlcnR5TGlzdChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBQcm9wZXJ0eSwgaW50KSB7IHJldHVy
biBQcm9wZXJ0eUxpc3RSZXN1bHQ7IH0KICAgICBpbnQgY3JlYXRlRWxlbWVudExpc3QoaW50LCBp
bnQpIHsgcmV0dXJuIEVsZW1lbnRzTGlzdFJlc3VsdDsgfQogICAgIGludCBjcmVhdGVFbGVtZW50
TGlzdChpbnQsIGludCwgaW50KSB7IHJldHVybiBFbGVtZW50c0xpc3RSZXN1bHQ7IH0KLSAgICBp
bnQgY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdChEZXN0cnVjdHVyaW5nUGF0dGVybikgeyByZXR1
cm4gRm9ybWFsUGFyYW1ldGVyTGlzdFJlc3VsdDsgfQotICAgIGludCBjcmVhdGVGb3JtYWxQYXJh
bWV0ZXJMaXN0KGludCwgRGVzdHJ1Y3R1cmluZ1BhdHRlcm4pIHsgcmV0dXJuIEZvcm1hbFBhcmFt
ZXRlckxpc3RSZXN1bHQ7IH0KKyAgICBpbnQgY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdCgpIHsg
cmV0dXJuIEZvcm1hbFBhcmFtZXRlckxpc3RSZXN1bHQ7IH0KKyAgICB2b2lkIGFwcGVuZFBhcmFt
ZXRlcihpbnQsIERlc3RydWN0dXJpbmdQYXR0ZXJuKSB7IH0KICAgICBpbnQgY3JlYXRlQ2xhdXNl
KGludCwgaW50KSB7IHJldHVybiBDbGF1c2VSZXN1bHQ7IH0KICAgICBpbnQgY3JlYXRlQ2xhdXNl
TGlzdChpbnQpIHsgcmV0dXJuIENsYXVzZUxpc3RSZXN1bHQ7IH0KICAgICBpbnQgY3JlYXRlQ2xh
dXNlTGlzdChpbnQsIGludCkgeyByZXR1cm4gQ2xhdXNlTGlzdFJlc3VsdDsgfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCShyZXZpc2lvbiAxODY4
MDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05NCw4ICs5NCw4IEBAIFVubGlua2VkQ29kZUJsb2NrVHlwZSogQ29kZUNh
Y2hlOjpnZXRHbG8KIAogICAgIHR5cGVkZWYgdHlwZW5hbWUgQ2FjaGVUeXBlczxVbmxpbmtlZENv
ZGVCbG9ja1R5cGU+OjpSb290Tm9kZSBSb290Tm9kZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Um9v
dE5vZGU+IHJvb3ROb2RlID0gcGFyc2U8Um9vdE5vZGU+KAotICAgICAgICAmdm0sIHNvdXJjZSwg
MCwgSWRlbnRpZmllcigpLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgCi0gICAgICAgIEpTUGFy
c2VyQ29kZVR5cGU6OlByb2dyYW0sIGVycm9yLCAwLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIHRo
aXNURFpNb2RlKTsKKyAgICAgICAgJnZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgYnVpbHRpbk1v
ZGUsIHN0cmljdE1vZGUsIAorICAgICAgICBKU1BhcnNlckNvZGVUeXBlOjpQcm9ncmFtLCBlcnJv
ciwgMCwgRnVuY3Rpb25QYXJzZU1vZGU6Ok5vdEFGdW5jdGlvbk1vZGUsIENvbnN0cnVjdG9yS2lu
ZDo6Tm9uZSwgdGhpc1REWk1vZGUpOwogICAgIGlmICghcm9vdE5vZGUpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCkBAIC0xNDQsNyArMTQ0LDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUqIENvZGVDYWNoZTo6ZwogCiAgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb25CZWZvcmVMYXN0
TmV3bGluZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW0gPSBwYXJz
ZTxQcm9ncmFtTm9kZT4oCi0gICAgICAgICZ2bSwgc291cmNlLCAwLCBJZGVudGlmaWVyKCksIEpT
UGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIAorICAgICAgICAmdm0sIHNvdXJjZSwgSWRl
bnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCAKICAgICAgICAgSlNQ
YXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIEpTUGFyc2VyQ29kZVR5cGU6OlByb2dyYW0sIAog
ICAgICAgICBlcnJvciwgJnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOwogICAgIGlmICghcHJv
Z3JhbSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlv
bi5jcHAJKHJldmlzaW9uIDE4NjgwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbXBsZXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw3IEBAIGJvb2wgY2hl
Y2tTeW50YXgoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2QKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2
bSk7CiAgICAgUkVMRUFTRV9BU1NFUlQodm0uYXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJl
YWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CiAgICAgcmV0dXJuICEhcGFyc2U8UHJvZ3Jh
bU5vZGU+KAotICAgICAgICAmdm0sIHNvdXJjZSwgMCwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1
aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCAKKyAgICAgICAgJnZtLCBzb3VyY2UsIElkZW50aWZpZXIo
KSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgCiAgICAgICAgIEpTUGFyc2VyU3Ry
aWN0TW9kZTo6Tm90U3RyaWN0LCBKU1BhcnNlckNvZGVUeXBlOjpQcm9ncmFtLCBlcnJvcik7CiB9
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3Bw
CShyZXZpc2lvbiAxODY4MDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDc1LDcgKzQ3NSw3IEBAIEpTT2JqZWN0KiBQ
cm9ncmFtRXhlY3V0YWJsZTo6Y2hlY2tTeW50YXgKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsK
ICAgICBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW1O
b2RlID0gcGFyc2U8UHJvZ3JhbU5vZGU+KAotICAgICAgICB2bSwgbV9zb3VyY2UsIDAsIElkZW50
aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgCisgICAgICAgIHZtLCBt
X3NvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCAK
ICAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIEpTUGFyc2VyQ29kZVR5cGU6
OlByb2dyYW0sIGVycm9yKTsKICAgICBpZiAocHJvZ3JhbU5vZGUpCiAgICAgICAgIHJldHVybiAw
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTg2ODA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MSw2ICs5
MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Qcm8KICAgICAgICAg
U3RyaW5nIHNvdXJjZSA9IGV4ZWN1dGFibGUtPnNvdXJjZSgpLnByb3ZpZGVyKCktPmdldFJhbmdl
KAogICAgICAgICAgICAgZXhlY3V0YWJsZS0+cGFyYW1ldGVyc1N0YXJ0T2Zmc2V0KCksCiAgICAg
ICAgICAgICBleGVjdXRhYmxlLT50eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KCkgKyAxKTsgLy8gVHlw
ZSBwcm9maWxpbmcgZW5kIG9mZnNldCBpcyB0aGUgY2hhcmFjdGVyIGJlZm9yZSB0aGUgJ30nLgor
ICAgICAgICAgICAgLy9leGVjdXRhYmxlLT5wYXJhbWV0ZXJzU3RhcnRPZmZzZXQoKSArIGV4ZWN1
dGFibGUtPnNvdXJjZUxlbmd0aCgpKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICJmdW5jdGlvbiAiLCBmdW5jdGlvbi0+bmFtZShl
eGVjKSwgc291cmNlKSk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvY29udHJvbEZsb3dQcm9maWxlci9jb25kaXRpb25hbC1leHByZXNzaW9uLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9jb250cm9sRmxvd1Byb2ZpbGVyL2Nv
bmRpdGlvbmFsLWV4cHJlc3Npb24uanMJKHJldmlzaW9uIDE4NjgwOCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9jb250cm9sRmxvd1Byb2ZpbGVyL2NvbmRpdGlvbmFsLWV4cHJlc3Np
b24uanMJKHdvcmtpbmcgY29weSkKQEAgLTI0LDE3ICsyNCwxNyBAQCBmdW5jdGlvbiB0ZXN0Q29u
ZGl0aW9uYWxGdW5jdGlvbkNhbGwoeCwgCiAgICAgICAgIDogYmFyKCkKIH0KIHRlc3RDb25kaXRp
b25hbEZ1bmN0aW9uQ2FsbChmYWxzZSwgZmFsc2UpOwotY2hlY2tCYXNpY0Jsb2NrKHRlc3RDb25k
aXRpb25hbEZ1bmN0aW9uQ2FsbCwgIngiLCBTaG91bGRIYXZlRXhlY3V0ZWQpOworY2hlY2tCYXNp
Y0Jsb2NrKHRlc3RDb25kaXRpb25hbEZ1bmN0aW9uQ2FsbCwgInggPyIsIFNob3VsZEhhdmVFeGVj
dXRlZCk7CiBjaGVja0Jhc2ljQmxvY2sodGVzdENvbmRpdGlvbmFsRnVuY3Rpb25DYWxsLCAiPyB5
IiwgU2hvdWxkSGF2ZUV4ZWN1dGVkKTsKIGNoZWNrQmFzaWNCbG9jayh0ZXN0Q29uZGl0aW9uYWxG
dW5jdGlvbkNhbGwsICJiYXIiLCBTaG91bGRIYXZlRXhlY3V0ZWQpOwogY2hlY2tCYXNpY0Jsb2Nr
KHRlc3RDb25kaXRpb25hbEZ1bmN0aW9uQ2FsbCwgIjogYmFyIiwgU2hvdWxkSGF2ZUV4ZWN1dGVk
KTsKLWNoZWNrQmFzaWNCbG9jayh0ZXN0Q29uZGl0aW9uYWxGdW5jdGlvbkNhbGwsICJ5IiwgU2hv
dWxkTm90SGF2ZUV4ZWN1dGVkKTsKK2NoZWNrQmFzaWNCbG9jayh0ZXN0Q29uZGl0aW9uYWxGdW5j
dGlvbkNhbGwsICJ5ID8iLCBTaG91bGROb3RIYXZlRXhlY3V0ZWQpOwogY2hlY2tCYXNpY0Jsb2Nr
KHRlc3RDb25kaXRpb25hbEZ1bmN0aW9uQ2FsbCwgIj8gZm9vIiwgU2hvdWxkTm90SGF2ZUV4ZWN1
dGVkKTsKIGNoZWNrQmFzaWNCbG9jayh0ZXN0Q29uZGl0aW9uYWxGdW5jdGlvbkNhbGwsICJmb28i
LCBTaG91bGROb3RIYXZlRXhlY3V0ZWQpOwogY2hlY2tCYXNpY0Jsb2NrKHRlc3RDb25kaXRpb25h
bEZ1bmN0aW9uQ2FsbCwgImJheiIsIFNob3VsZE5vdEhhdmVFeGVjdXRlZCk7CiAKIHRlc3RDb25k
aXRpb25hbEZ1bmN0aW9uQ2FsbCh0cnVlLCBmYWxzZSk7Ci1jaGVja0Jhc2ljQmxvY2sodGVzdENv
bmRpdGlvbmFsRnVuY3Rpb25DYWxsLCAieSIsIFNob3VsZEhhdmVFeGVjdXRlZCk7CitjaGVja0Jh
c2ljQmxvY2sodGVzdENvbmRpdGlvbmFsRnVuY3Rpb25DYWxsLCAieSA/IiwgU2hvdWxkSGF2ZUV4
ZWN1dGVkKTsKIGNoZWNrQmFzaWNCbG9jayh0ZXN0Q29uZGl0aW9uYWxGdW5jdGlvbkNhbGwsICI/
IGZvbyIsIFNob3VsZEhhdmVFeGVjdXRlZCk7CiBjaGVja0Jhc2ljQmxvY2sodGVzdENvbmRpdGlv
bmFsRnVuY3Rpb25DYWxsLCAiOiBiYXoiLCBTaG91bGRIYXZlRXhlY3V0ZWQpOwogY2hlY2tCYXNp
Y0Jsb2NrKHRlc3RDb25kaXRpb25hbEZ1bmN0aW9uQ2FsbCwgImJheiIsIFNob3VsZEhhdmVFeGVj
dXRlZCk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODY4MjYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1MSBAQAorMjAxNS0wNy0xNCAgU2FhbSBiYXJh
dGkgIDxzYWFtYmFyYXRpMUBnbWFpbC5jb20+CisKKyAgICAgICAgRnVuY3Rpb24gcGFyYW1ldGVy
cyBzaG91bGQgYmUgcGFyc2VkIGluIHRoZSBzYW1lIHBhcnNlciBhcmVuYSBhcyB0aGUgZnVuY3Rp
b24gYm9keQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ1OTk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBmYXN0L3Byb2ZpbGVyL2Fub255bW91cy1ldmVudC1oYW5kbGVyLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBmYXN0L3Byb2ZpbGVyL2Fub255bW91cy1mdW5jdGlvbi1jYWxsZWQtZnJvbS1kaWZm
ZXJlbnQtY29udGV4dHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvYW5v
bnltb3VzLWZ1bmN0aW9uLWNhbGxzLWJ1aWx0LWluLWZ1bmN0aW9ucy1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogZmFzdC9wcm9maWxlci9hbm9ueW1vdXMtZnVuY3Rpb24tY2FsbHMtZXZhbC1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxlci9hbm9ueW1vdXMtZnVuY3Rpb25zLXdp
dGgtZGlzcGxheS1uYW1lcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxlci9h
cHBseS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxlci9idWlsdC1pbi1mdW5j
dGlvbi1jYWxscy1hbm9ueW1vdXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmls
ZXIvYnVpbHQtaW4tZnVuY3Rpb24tY2FsbHMtdXNlci1kZWZpbmVkLWZ1bmN0aW9uLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2ZpbGVyL2NhbGwtZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIGZhc3QvcHJvZmlsZXIvY2FsbGluZy10aGUtZnVuY3Rpb24tdGhhdC1zdGFydGVkLXRoZS1w
cm9maWxlci1mcm9tLWFub3RoZXItc2NvcGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3Qv
cHJvZmlsZXIvY29tcGFyZS1tdWx0aXBsZS1wcm9maWxlcy1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogZmFzdC9wcm9maWxlci9jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFz
dC9wcm9maWxlci9kZWFkLXRpbWUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmls
ZXIvZG9jdW1lbnQtZG90LXdyaXRlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2Zp
bGVyL2V2ZW50LWhhbmRsZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIv
ZXhlY3V0aW9uLWNvbnRleHQtYW5kLWV2YWwtb24tc2FtZS1saW5lLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBmYXN0L3Byb2ZpbGVyL2lubGluZS1ldmVudC1oYW5kbGVyLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBmYXN0L3Byb2ZpbGVyL21hbnktY2FsbHMtaW4tdGhlLXNhbWUtc2NvcGUtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvbXVsdGlwbGUtYW5kLWRpZmZlcmVu
dC1zY29wZWQtYW5vbnltb3VzLWZ1bmN0aW9uLWNhbGxzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBmYXN0L3Byb2ZpbGVyL211bHRpcGxlLWFuZC1kaWZmZXJlbnQtc2NvcGVkLWZ1bmN0aW9uLWNh
bGxzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2ZpbGVyL211bHRpcGxlLWFub255
bW91cy1mdW5jdGlvbnMtY2FsbGVkLWZyb20tdGhlLXNhbWUtZnVuY3Rpb24tZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvbXVsdGlwbGUtZnJhbWVzLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBmYXN0L3Byb2ZpbGVyL25hbWVkLWZ1bmN0aW9ucy13aXRoLWRpc3BsYXktbmFt
ZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvbmVzdGVkLWFub255bW91
cy1mdW5jdG9uLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2ZpbGVyL25lc3RlZC1z
dGFydC1hbmQtc3RvcC1wcm9maWxlci1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9m
aWxlci9vbmUtZXhlY3V0aW9uLWNvbnRleHQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3Qv
cHJvZmlsZXIvcHJvZmlsZS1jYWxscy1pbi1pbmNsdWRlZC1maWxlLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBmYXN0L3Byb2ZpbGVyL3Byb2ZpbGUtd2l0aC1uby10aXRsZS1leHBlY3RlZC50eHQ6
CisgICAgICAgICogZmFzdC9wcm9maWxlci9wcm9maWxpbmctZnJvbS1hLW5lc3RlZC1sb2NhdGlv
bi1idXQtc3RvcC1wcm9maWxpbmctb3V0c2lkZS10aGUtbmVzdGluZy1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogZmFzdC9wcm9maWxlci9wcm9maWxpbmctZnJvbS1hLW5lc3RlZC1sb2NhdGlvbi1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxlci9zaW1wbGUtZXZlbnQtY2FsbC1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxlci9zaW1wbGUtbm8tbGV2ZWwtY2hh
bmdlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2ZpbGVyL3N0YXJ0LWFuZC1zdG9w
LXByb2ZpbGVyLW11bHRpcGxlLXRpbWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3By
b2ZpbGVyL3N0YXJ0LWFuZC1zdG9wLXByb2ZpbGluZy1pbi10aGUtc2FtZS1mdW5jdGlvbi1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxlci9zdG9wLXByb2ZpbGluZy1hZnRlci1z
ZXRUaW1lb3V0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2ZpbGVyL3N0b3AtdGhl
bi1mdW5jdGlvbi1jYWxsLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2ZpbGVyL3R3
by1leGVjdXRpb24tY29udGV4dHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmls
ZXIvdXNlci1kZWZpbmVkLWZ1bmN0aW9uLWNhbGxzLWJ1aWx0LWluLWZ1bmN0aW9ucy1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxlci93aW5kb3ctZG90LWV2YWwtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGpzL2RvbS9zY3JpcHQtc3RhcnQtZW5kLWxvY2F0aW9ucy1leHBlY3Rl
ZC50eHQ6CisKIDIwMTUtMDctMTQgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxODY4MDkuCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2Fub255bW91cy1ldmVudC1oYW5kbGVyLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2Fub255bW91cy1l
dmVudC1oYW5kbGVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2ODA4KQorKysgTGF5b3V0VGVz
dHMvZmFzdC9wcm9maWxlci9hbm9ueW1vdXMtZXZlbnQtaGFuZGxlci1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTQsMTUgKzQsMTUgQEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwg
bG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiBBbm9ueW1vdXMgZXZlbnQgaGFuZGxlcgog
VGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCBhbm9ueW1vdXMtZXZl
bnQtaGFuZGxlci5odG1sIChsaW5lIDExOjEpCisgICBzdGFydFRlc3QgYW5vbnltb3VzLWV2ZW50
LWhhbmRsZXIuaHRtbCAobGluZSAxMDoxOSkKICAgICAgIGdldEVsZW1lbnRCeUlkIChubyBmaWxl
KSAobGluZSAwOjApCiAgICAgICBjbGljayAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgICAg
b25jbGljayBhbm9ueW1vdXMtZXZlbnQtaGFuZGxlci5odG1sIChsaW5lIDE1OjU0KQotICAgICAg
ICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAx
NzoyNikKKyAgICAgICAgIG9uY2xpY2sgYW5vbnltb3VzLWV2ZW50LWhhbmRsZXIuaHRtbCAobGlu
ZSAxNTo1MSkKKyAgICAgICAgICAgIGluc2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNv
dXJjZXMuanMgKGxpbmUgMTc6MjMpCiAgICAgICAgICAgICAgICBjcmVhdGVFbGVtZW50IChubyBm
aWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkg
KGxpbmUgMDowKQogICAgICAgICAgICAgICAgYXBwZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6
MCkKICAgICAgICAgICAgICAgIGdldEVsZW1lbnRCeUlkIChubyBmaWxlKSAobGluZSAwOjApCi0g
ICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MjApCisg
ICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MTcpCiAK
IApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9hbm9ueW1vdXMtZnVuY3Rpb24tY2Fs
bGVkLWZyb20tZGlmZmVyZW50LWNvbnRleHRzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2Fub255bW91cy1mdW5jdGlvbi1jYWxsZWQtZnJvbS1k
aWZmZXJlbnQtY29udGV4dHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY4MDgpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2Fub255bW91cy1mdW5jdGlvbi1jYWxsZWQtZnJvbS1kaWZm
ZXJlbnQtY29udGV4dHMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDIxICs0LDIx
IEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxvYWQgaXQgaW4gdGgKIAogUHJvZmlsZSB0
aXRsZTogU2FtZSBhbm9ueW1vdXMgZnVuY3Rpb24gY2FsbGVkIGZyb20gZGlmZmVyZW50IGNvbnRl
eHRzCiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgc3RhcnRUZXN0IGFub255bW91
cy1mdW5jdGlvbi1jYWxsZWQtZnJvbS1kaWZmZXJlbnQtY29udGV4dHMuaHRtbCAobGluZSAxMTox
KQotICAgICAgYW5vbnltb3VzRnVuY3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMg
KGxpbmUgMjk6MzcpCi0gICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVz
b3VyY2VzLmpzIChsaW5lIDE3OjI2KQorICAgc3RhcnRUZXN0IGFub255bW91cy1mdW5jdGlvbi1j
YWxsZWQtZnJvbS1kaWZmZXJlbnQtY29udGV4dHMuaHRtbCAobGluZSAxMDoxOSkKKyAgICAgIGFu
b255bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI5OjM0
KQorICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAo
bGluZSAxNzoyMykKICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQgKG5vIGZpbGUpIChsaW5lIDA6
MCkKICAgICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAg
ICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgZ2V0
RWxlbWVudEJ5SWQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgIGV2YWwgKG5vIGZpbGUpIChs
aW5lIDA6MCkKICAgICAgICAgIChwcm9ncmFtKSAobm8gZmlsZSkgKGxpbmUgMToxKQotICAgICAg
ICAgICAgYW5vbnltb3VzRnVuY3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxp
bmUgMjk6MzcpCi0gICAgICAgICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMt
cmVzb3VyY2VzLmpzIChsaW5lIDE3OjI2KQorICAgICAgICAgICAgYW5vbnltb3VzRnVuY3Rpb24g
cHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMjk6MzQpCisgICAgICAgICAgICAg
ICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjIz
KQogICAgICAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudCAobm8gZmlsZSkgKGxpbmUgMDowKQog
ICAgICAgICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAg
ICAgICAgICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAg
ICAgICAgICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgZW5k
VGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgICAgZW5k
VGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiAKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvYW5vbnltb3VzLWZ1bmN0aW9uLWNhbGxzLWJ1aWx0
LWluLWZ1bmN0aW9ucy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9wcm9maWxlci9hbm9ueW1vdXMtZnVuY3Rpb24tY2FsbHMtYnVpbHQtaW4tZnVuY3Rpb25zLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2ODA4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxl
ci9hbm9ueW1vdXMtZnVuY3Rpb24tY2FsbHMtYnVpbHQtaW4tZnVuY3Rpb25zLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtNCwxMyArNCwxMyBAQCBUbyBydW4gdGhpcyB0ZXN0IG1hbnVh
bGx5LCBsb2FkIGl0IGluIHRoCiAKIFByb2ZpbGUgdGl0bGU6IEFub255bW91cyBmdW5jdGlvbiBj
YWxscyBidWlsdC1pbiBmdW5jdGlvbnMKIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0g
ICBzdGFydFRlc3QgYW5vbnltb3VzLWZ1bmN0aW9uLWNhbGxzLWJ1aWx0LWluLWZ1bmN0aW9ucy5o
dG1sIChsaW5lIDExOjEpCi0gICAgICBhbm9ueW1vdXNGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpT
LXJlc291cmNlcy5qcyAobGluZSAyOTozNykKLSAgICAgICAgIGluc2VydE5ld1RleHQgcHJvZmls
ZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjYpCisgICBzdGFydFRlc3QgYW5vbnlt
b3VzLWZ1bmN0aW9uLWNhbGxzLWJ1aWx0LWluLWZ1bmN0aW9ucy5odG1sIChsaW5lIDEwOjE5KQor
ICAgICAgYW5vbnltb3VzRnVuY3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxp
bmUgMjk6MzQpCisgICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3Vy
Y2VzLmpzIChsaW5lIDE3OjIzKQogICAgICAgICAgICAgY3JlYXRlRWxlbWVudCAobm8gZmlsZSkg
KGxpbmUgMDowKQogICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6
MCkKICAgICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAg
ICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgZW5kVGVzdCBw
cm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgICAgZW5kVGVzdCBw
cm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiAKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvcHJvZmlsZXIvYW5vbnltb3VzLWZ1bmN0aW9uLWNhbGxzLWV2YWwtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvYW5vbnltb3Vz
LWZ1bmN0aW9uLWNhbGxzLWV2YWwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY4MDgpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2Fub255bW91cy1mdW5jdGlvbi1jYWxscy1ldmFsLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCwxNSArNCwxNSBAQCBUbyBydW4gdGhpcyB0
ZXN0IG1hbnVhbGx5LCBsb2FkIGl0IGluIHRoCiAKIFByb2ZpbGUgdGl0bGU6IEFub255bW91cyBm
dW5jdGlvbiBjYWxsZXMgZXZhbAogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0
YXJ0VGVzdCBhbm9ueW1vdXMtZnVuY3Rpb24tY2FsbHMtZXZhbC5odG1sIChsaW5lIDExOjEpCi0g
ICAgICB2YXJpYWJsZVRoYXRQb2ludHNUb0FuQW5vbnltb3VzRnVuY3Rpb24gYW5vbnltb3VzLWZ1
bmN0aW9uLWNhbGxzLWV2YWwuaHRtbCAobGluZSAxNDo2MikKKyAgIHN0YXJ0VGVzdCBhbm9ueW1v
dXMtZnVuY3Rpb24tY2FsbHMtZXZhbC5odG1sIChsaW5lIDEwOjE5KQorICAgICAgdmFyaWFibGVU
aGF0UG9pbnRzVG9BbkFub255bW91c0Z1bmN0aW9uIGFub255bW91cy1mdW5jdGlvbi1jYWxscy1l
dmFsLmh0bWwgKGxpbmUgMTQ6NTkpCiAgICAgICAgICBldmFsIChubyBmaWxlKSAobGluZSAwOjAp
CiAgICAgICAgICAgICAocHJvZ3JhbSkgKG5vIGZpbGUpIChsaW5lIDE6MSkKLSAgICAgICAgICAg
ICAgIGluc2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6
MjYpCisgICAgICAgICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3Vy
Y2VzLmpzIChsaW5lIDE3OjIzKQogICAgICAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudCAobm8g
ZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZp
bGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAo
bGluZSAwOjApCiAgICAgICAgICAgICAgICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmlsZSkgKGxp
bmUgMDowKQotICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGlu
ZSAxOjIwKQorICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGlu
ZSAxOjE3KQogCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvYW5vbnltb3VzLWZ1
bmN0aW9ucy13aXRoLWRpc3BsYXktbmFtZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvYW5vbnltb3VzLWZ1bmN0aW9ucy13aXRoLWRpc3BsYXkt
bmFtZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY4MDgpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L3Byb2ZpbGVyL2Fub255bW91cy1mdW5jdGlvbnMtd2l0aC1kaXNwbGF5LW5hbWVzLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCwxMyArNCwxMyBAQCBUbyBydW4gdGhpcyB0ZXN0IG1h
bnVhbGx5LCBsb2FkIGl0IGluIHRoCiAKIFByb2ZpbGUgdGl0bGU6IEFub255bW91cyBmdW5jdGlv
bnMgd2l0aCBkaXNwbGF5IG5hbWVzCiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAg
c3RhcnRUZXN0IGFub255bW91cy1mdW5jdGlvbnMtd2l0aC1kaXNwbGF5LW5hbWVzLmh0bWwgKGxp
bmUgMjM6MSkKLSAgICAgIGFub255bW91c0Z1bmN0aW9uR2VuZXJhdG9yIGFub255bW91cy1mdW5j
dGlvbnMtd2l0aC1kaXNwbGF5LW5hbWVzLmh0bWwgKGxpbmUgMTE6MSkKLSAgICAgIDAgaXRlcmF0
aW9ucyBmdW5jdGlvbiBhbm9ueW1vdXMtZnVuY3Rpb25zLXdpdGgtZGlzcGxheS1uYW1lcy5odG1s
IChsaW5lIDEzOjUpCi0gICAgICAxIGl0ZXJhdGlvbnMgZnVuY3Rpb24gYW5vbnltb3VzLWZ1bmN0
aW9ucy13aXRoLWRpc3BsYXktbmFtZXMuaHRtbCAobGluZSAxMzo1KQotICAgICAgMiBpdGVyYXRp
b25zIGZ1bmN0aW9uIGFub255bW91cy1mdW5jdGlvbnMtd2l0aC1kaXNwbGF5LW5hbWVzLmh0bWwg
KGxpbmUgMTM6NSkKLSAgICAgIDIwIGl0ZXJhdGlvbnMgZnVuY3Rpb24gYW5vbnltb3VzLWZ1bmN0
aW9ucy13aXRoLWRpc3BsYXktbmFtZXMuaHRtbCAobGluZSAxMzo1KQotICAgICAgMTAwMCBpdGVy
YXRpb25zIGZ1bmN0aW9uIGFub255bW91cy1mdW5jdGlvbnMtd2l0aC1kaXNwbGF5LW5hbWVzLmh0
bWwgKGxpbmUgMTM6NSkKLSAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMu
anMgKGxpbmUgMToyMCkKKyAgIHN0YXJ0VGVzdCBhbm9ueW1vdXMtZnVuY3Rpb25zLXdpdGgtZGlz
cGxheS1uYW1lcy5odG1sIChsaW5lIDIyOjE5KQorICAgICAgYW5vbnltb3VzRnVuY3Rpb25HZW5l
cmF0b3IgYW5vbnltb3VzLWZ1bmN0aW9ucy13aXRoLWRpc3BsYXktbmFtZXMuaHRtbCAobGluZSAx
MDozNikKKyAgICAgIDAgaXRlcmF0aW9ucyBmdW5jdGlvbiBhbm9ueW1vdXMtZnVuY3Rpb25zLXdp
dGgtZGlzcGxheS1uYW1lcy5odG1sIChsaW5lIDEyOjU5KQorICAgICAgMSBpdGVyYXRpb25zIGZ1
bmN0aW9uIGFub255bW91cy1mdW5jdGlvbnMtd2l0aC1kaXNwbGF5LW5hbWVzLmh0bWwgKGxpbmUg
MTI6NTkpCisgICAgICAyIGl0ZXJhdGlvbnMgZnVuY3Rpb24gYW5vbnltb3VzLWZ1bmN0aW9ucy13
aXRoLWRpc3BsYXktbmFtZXMuaHRtbCAobGluZSAxMjo1OSkKKyAgICAgIDIwIGl0ZXJhdGlvbnMg
ZnVuY3Rpb24gYW5vbnltb3VzLWZ1bmN0aW9ucy13aXRoLWRpc3BsYXktbmFtZXMuaHRtbCAobGlu
ZSAxMjo1OSkKKyAgICAgIDEwMDAgaXRlcmF0aW9ucyBmdW5jdGlvbiBhbm9ueW1vdXMtZnVuY3Rp
b25zLXdpdGgtZGlzcGxheS1uYW1lcy5odG1sIChsaW5lIDEyOjU5KQorICAgICAgZW5kVGVzdCBw
cm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiAKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvcHJvZmlsZXIvYXBwbHktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvYXBwbHktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY4
MDgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2FwcGx5LWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtNCw5ICs0LDkgQEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgbG9h
ZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiBVc2luZyB0aGUgYXBwbHkoKSBtZXRob2QKIFRo
cmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBzdGFydFRlc3QgYXBwbHkuaHRtbCAobGlu
ZSAxMToxKQotICAgICAgZmFrZU9iamVjdCBhcHBseS5odG1sIChsaW5lIDE4OjEpCi0gICAgICAg
ICBmYWtlSW50ZXJpb3JGdW5jdGlvbiBhcHBseS5odG1sIChsaW5lIDI0OjEpCi0gICAgICBlbmRU
ZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MjApCisgICBzdGFydFRl
c3QgYXBwbHkuaHRtbCAobGluZSAxMDoxOSkKKyAgICAgIGZha2VPYmplY3QgYXBwbHkuaHRtbCAo
bGluZSAxNzoyMSkKKyAgICAgICAgIGZha2VJbnRlcmlvckZ1bmN0aW9uIGFwcGx5Lmh0bWwgKGxp
bmUgMjM6MzApCisgICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChs
aW5lIDE6MTcpCiAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9idWlsdC1pbi1m
dW5jdGlvbi1jYWxscy1hbm9ueW1vdXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvcHJvZmlsZXIvYnVpbHQtaW4tZnVuY3Rpb24tY2FsbHMtYW5vbnltb3VzLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2ODA4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxl
ci9idWlsdC1pbi1mdW5jdGlvbi1jYWxscy1hbm9ueW1vdXMtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC00LDcgKzQsNyBAQCBUbyBydW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBsb2FkIGl0
IGluIHRoCiAKIFByb2ZpbGUgdGl0bGU6IEJ1aWx0LWluIGZ1bmN0aW9uIGNhbGxzIGFuIGFub255
bW91cyBmdW5jdGlvbgogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVz
dCBidWlsdC1pbi1mdW5jdGlvbi1jYWxscy1hbm9ueW1vdXMuaHRtbCAobGluZSAxMToxKQorICAg
c3RhcnRUZXN0IGJ1aWx0LWluLWZ1bmN0aW9uLWNhbGxzLWFub255bW91cy5odG1sIChsaW5lIDEw
OjE5KQogICAgICAgQXJyYXkgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgIG1hcCAobm8gZmls
ZSkgKGxpbmUgMDowKQogICAgICAgICAgT2JqZWN0IChubyBmaWxlKSAobGluZSAwOjApCkBAIC0x
Miw4ICsxMiw4IEBAIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICB0
b0ludGVnZXIgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgIE51bWJlciAobm8g
ZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgKGFub255bW91cyBmdW5jdGlvbikgKG5v
IGZpbGUpIChsaW5lIDA6MCkKLSAgICAgICAgIG15RnVuY3Rpb24gYnVpbHQtaW4tZnVuY3Rpb24t
Y2FsbHMtYW5vbnltb3VzLmh0bWwgKGxpbmUgMTQ6NDUpCi0gICAgICAgICAgICBhcnJheU9wZXJh
dG9yRnVuY3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMjU6NDYpCi0g
ICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MjApCisg
ICAgICAgICBteUZ1bmN0aW9uIGJ1aWx0LWluLWZ1bmN0aW9uLWNhbGxzLWFub255bW91cy5odG1s
IChsaW5lIDE0OjMwKQorICAgICAgICAgICAgYXJyYXlPcGVyYXRvckZ1bmN0aW9uIHByb2ZpbGVy
LXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI1OjMxKQorICAgICAgZW5kVGVzdCBwcm9maWxl
ci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiAKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvcHJvZmlsZXIvYnVpbHQtaW4tZnVuY3Rpb24tY2FsbHMtdXNlci1kZWZpbmVkLWZ1bmN0
aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVy
L2J1aWx0LWluLWZ1bmN0aW9uLWNhbGxzLXVzZXItZGVmaW5lZC1mdW5jdGlvbi1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDE4NjgwOCkKKysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvYnVpbHQt
aW4tZnVuY3Rpb24tY2FsbHMtdXNlci1kZWZpbmVkLWZ1bmN0aW9uLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtNCw3ICs0LDcgQEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgbG9h
ZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiBCdWlsdC1pbiBmdW5jdGlvbiBjYWxscyBhIHVz
ZXIgZGVmaW5lZCBmdW5jdGlvbgogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0
YXJ0VGVzdCBidWlsdC1pbi1mdW5jdGlvbi1jYWxscy11c2VyLWRlZmluZWQtZnVuY3Rpb24uaHRt
bCAobGluZSAxMToxKQorICAgc3RhcnRUZXN0IGJ1aWx0LWluLWZ1bmN0aW9uLWNhbGxzLXVzZXIt
ZGVmaW5lZC1mdW5jdGlvbi5odG1sIChsaW5lIDEwOjE5KQogICAgICAgQXJyYXkgKG5vIGZpbGUp
IChsaW5lIDA6MCkKICAgICAgIG1hcCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgT2Jq
ZWN0IChubyBmaWxlKSAobGluZSAwOjApCkBAIC0xMiw3ICsxMiw3IEBAIFRocmVhZF8xIChubyBm
aWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICB0b0ludGVnZXIgKG5vIGZpbGUpIChsaW5lIDA6
MCkKICAgICAgICAgICAgICAgIE51bWJlciAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAg
ICAgICAgKGFub255bW91cyBmdW5jdGlvbikgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAgICAg
IGFycmF5T3BlcmF0b3JGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGlu
ZSAyNTo0NikKLSAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxp
bmUgMToyMCkKKyAgICAgICAgIGFycmF5T3BlcmF0b3JGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpT
LXJlc291cmNlcy5qcyAobGluZSAyNTozMSkKKyAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1K
Uy1yZXNvdXJjZXMuanMgKGxpbmUgMToxNykKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3By
b2ZpbGVyL2NhbGwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
cHJvZmlsZXIvY2FsbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4NjgwOCkKKysrIExheW91dFRl
c3RzL2Zhc3QvcHJvZmlsZXIvY2FsbC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQs
OSArNCw5IEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxvYWQgaXQgaW4gdGgKIAogUHJv
ZmlsZSB0aXRsZTogVXNpbmcgdGhlIGNhbGwoKSBtZXRob2QKIFRocmVhZF8xIChubyBmaWxlKSAo
bGluZSAwOjApCi0gICBzdGFydFRlc3QgY2FsbC5odG1sIChsaW5lIDExOjEpCi0gICAgICBmYWtl
T2JqZWN0IGNhbGwuaHRtbCAobGluZSAyMDoxKQotICAgICAgICAgZmFrZUludGVyaW9yRnVuY3Rp
b24gY2FsbC5odG1sIChsaW5lIDI2OjEpCi0gICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMt
cmVzb3VyY2VzLmpzIChsaW5lIDE6MjApCisgICBzdGFydFRlc3QgY2FsbC5odG1sIChsaW5lIDEw
OjE5KQorICAgICAgZmFrZU9iamVjdCBjYWxsLmh0bWwgKGxpbmUgMTk6MjEpCisgICAgICAgICBm
YWtlSW50ZXJpb3JGdW5jdGlvbiBjYWxsLmh0bWwgKGxpbmUgMjU6MzApCisgICAgICBlbmRUZXN0
IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MTcpCiAKIApJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9wcm9maWxlci9jYWxsaW5nLXRoZS1mdW5jdGlvbi10aGF0LXN0YXJ0ZWQt
dGhlLXByb2ZpbGVyLWZyb20tYW5vdGhlci1zY29wZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9jYWxsaW5nLXRoZS1mdW5jdGlvbi10aGF0LXN0
YXJ0ZWQtdGhlLXByb2ZpbGVyLWZyb20tYW5vdGhlci1zY29wZS1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDE4NjgwOCkKKysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvY2FsbGluZy10aGUtZnVu
Y3Rpb24tdGhhdC1zdGFydGVkLXRoZS1wcm9maWxlci1mcm9tLWFub3RoZXItc2NvcGUtZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDkgKzQsOSBAQCBUbyBydW4gdGhpcyB0ZXN0IG1h
bnVhbGx5LCBsb2FkIGl0IGluIHRoCiAKIFByb2ZpbGUgdGl0bGU6IENhbGxpbmcgdGhlIHNhbWUg
ZnVuY3Rpb24gd2hlcmUgdGhlIHByb2ZpbGUgc3RhcnRlZCBmcm9tIGFub3RoZXIgZnVuY3Rpb24K
IFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBpbmRpcmVjdGlvbiBjYWxsaW5nLXRo
ZS1mdW5jdGlvbi10aGF0LXN0YXJ0ZWQtdGhlLXByb2ZpbGVyLWZyb20tYW5vdGhlci1zY29wZS5o
dG1sIChsaW5lIDE4OjEpCi0gICAgICBmdW5jdGlvbldpY2hTdGFydHNBbmRTdG9wc1RoZVByb2Zp
bGVyIGNhbGxpbmctdGhlLWZ1bmN0aW9uLXRoYXQtc3RhcnRlZC10aGUtcHJvZmlsZXItZnJvbS1h
bm90aGVyLXNjb3BlLmh0bWwgKGxpbmUgMjQ6MSkKLSAgIGZ1bmN0aW9uV2ljaFN0YXJ0c0FuZFN0
b3BzVGhlUHJvZmlsZXIgY2FsbGluZy10aGUtZnVuY3Rpb24tdGhhdC1zdGFydGVkLXRoZS1wcm9m
aWxlci1mcm9tLWFub3RoZXItc2NvcGUuaHRtbCAobGluZSAyNDoxKQotICAgZW5kVGVzdCBwcm9m
aWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgaW5kaXJlY3Rpb24gY2Fs
bGluZy10aGUtZnVuY3Rpb24tdGhhdC1zdGFydGVkLXRoZS1wcm9maWxlci1mcm9tLWFub3RoZXIt
c2NvcGUuaHRtbCAobGluZSAxNzoyMSkKKyAgICAgIGZ1bmN0aW9uV2ljaFN0YXJ0c0FuZFN0b3Bz
VGhlUHJvZmlsZXIgY2FsbGluZy10aGUtZnVuY3Rpb24tdGhhdC1zdGFydGVkLXRoZS1wcm9maWxl
ci1mcm9tLWFub3RoZXItc2NvcGUuaHRtbCAobGluZSAyMzo0NykKKyAgIGZ1bmN0aW9uV2ljaFN0
YXJ0c0FuZFN0b3BzVGhlUHJvZmlsZXIgY2FsbGluZy10aGUtZnVuY3Rpb24tdGhhdC1zdGFydGVk
LXRoZS1wcm9maWxlci1mcm9tLWFub3RoZXItc2NvcGUuaHRtbCAobGluZSAyMzo0NykKKyAgIGVu
ZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToxNykKIAogCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2NvbXBhcmUtbXVsdGlwbGUtcHJvZmlsZXMtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvY29tcGFy
ZS1tdWx0aXBsZS1wcm9maWxlcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4NjgwOCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvY29tcGFyZS1tdWx0aXBsZS1wcm9maWxlcy1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsMTQgKzQsMTQgQEAgVG8gcnVuIHRoaXMgdGVzdCBt
YW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiBUZXN0CiBUaHJlYWRfMSAo
bm8gZmlsZSkgKGxpbmUgMDowKQotICAgc3RhcnRUZXN0IGNvbXBhcmUtbXVsdGlwbGUtcHJvZmls
ZXMuaHRtbCAobGluZSAyMzoxKQotICAgICAgdGVzdCBjb21wYXJlLW11bHRpcGxlLXByb2ZpbGVz
Lmh0bWwgKGxpbmUgMTE6MjApCi0gICAgICAgICB0ZXN0MiBjb21wYXJlLW11bHRpcGxlLXByb2Zp
bGVzLmh0bWwgKGxpbmUgMTc6MjEpCisgICBzdGFydFRlc3QgY29tcGFyZS1tdWx0aXBsZS1wcm9m
aWxlcy5odG1sIChsaW5lIDIyOjE5KQorICAgICAgdGVzdCBjb21wYXJlLW11bHRpcGxlLXByb2Zp
bGVzLmh0bWwgKGxpbmUgMTE6MTQpCisgICAgICAgICB0ZXN0MiBjb21wYXJlLW11bHRpcGxlLXBy
b2ZpbGVzLmh0bWwgKGxpbmUgMTc6MTUpCiAKIFByb2ZpbGUgdGl0bGU6IFRlc3QKIFRocmVhZF8x
IChubyBmaWxlKSAobGluZSAwOjApCi0gICBzdGFydFRlc3QgY29tcGFyZS1tdWx0aXBsZS1wcm9m
aWxlcy5odG1sIChsaW5lIDIzOjEpCi0gICAgICB0ZXN0IGNvbXBhcmUtbXVsdGlwbGUtcHJvZmls
ZXMuaHRtbCAobGluZSAxMToyMCkKLSAgICAgICAgIHRlc3QyIGNvbXBhcmUtbXVsdGlwbGUtcHJv
ZmlsZXMuaHRtbCAobGluZSAxNzoyMSkKKyAgIHN0YXJ0VGVzdCBjb21wYXJlLW11bHRpcGxlLXBy
b2ZpbGVzLmh0bWwgKGxpbmUgMjI6MTkpCisgICAgICB0ZXN0IGNvbXBhcmUtbXVsdGlwbGUtcHJv
ZmlsZXMuaHRtbCAobGluZSAxMToxNCkKKyAgICAgICAgIHRlc3QyIGNvbXBhcmUtbXVsdGlwbGUt
cHJvZmlsZXMuaHRtbCAobGluZSAxNzoxNSkKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3By
b2ZpbGVyL2NvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L3Byb2ZpbGVyL2NvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2ODA4
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTQsOSArNCw5IEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHks
IGxvYWQgaXQgaW4gdGgKIAogUHJvZmlsZSB0aXRsZTogVXNpbmcgYSBjb25zdHJ1Y3Rvci4KIFRo
cmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBzdGFydFRlc3QgY29uc3RydWN0b3IuaHRt
bCAobGluZSAxMToxKQotICAgICAgZmFrZU9iamVjdCBjb25zdHJ1Y3Rvci5odG1sIChsaW5lIDIw
OjEpCisgICBzdGFydFRlc3QgY29uc3RydWN0b3IuaHRtbCAobGluZSAxMDoxOSkKKyAgICAgIGZh
a2VPYmplY3QgY29uc3RydWN0b3IuaHRtbCAobGluZSAxOToyMSkKICAgICAgICAgIEFycmF5IChu
byBmaWxlKSAobGluZSAwOjApCi0gICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3Vy
Y2VzLmpzIChsaW5lIDE6MjApCisgICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3Vy
Y2VzLmpzIChsaW5lIDE6MTcpCiAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9k
ZWFkLXRpbWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJv
ZmlsZXIvZGVhZC10aW1lLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2ODA4KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9wcm9maWxlci9kZWFkLXRpbWUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC00LDEwICs0LDEwIEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxvYWQgaXQgaW4g
dGgKIAogUHJvZmlsZSB0aXRsZTogRGVhZCB0aW1lIGluIHByb2ZpbGUuCiBUaHJlYWRfMSAobm8g
ZmlsZSkgKGxpbmUgMDowKQotICAgb25sb2FkIGRlYWQtdGltZS5odG1sIChsaW5lIDIxOjUyKQot
ICAgICAgc3RhcnRUZXN0IGRlYWQtdGltZS5odG1sIChsaW5lIDEzOjEpCisgICBvbmxvYWQgZGVh
ZC10aW1lLmh0bWwgKGxpbmUgMjE6NDQpCisgICAgICBzdGFydFRlc3QgZGVhZC10aW1lLmh0bWwg
KGxpbmUgMTI6MTkpCiAgICAgICAgICBzZXRUaW1lb3V0IChubyBmaWxlKSAobGluZSAwOjApCiAg
ICAocHJvZ3JhbSkgZGVhZC10aW1lLmh0bWwgKGxpbmUgMToxKQotICAgICAgZW5kVGVzdCBwcm9m
aWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgICAgZW5kVGVzdCBwcm9m
aWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiAKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvcHJvZmlsZXIvZG9jdW1lbnQtZG90LXdyaXRlLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2RvY3VtZW50LWRvdC13cml0ZS1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDE4NjgwOCkKKysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIv
ZG9jdW1lbnQtZG90LXdyaXRlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw4ICsx
LDggQEAKIAogUHJvZmlsZSB0aXRsZTogQ2FsbCBEb2N1bWVudC53cml0ZSgpCiBUaHJlYWRfMSAo
bm8gZmlsZSkgKGxpbmUgMDowKQotICAgc3RhcnRUZXN0IGRvY3VtZW50LWRvdC13cml0ZS5odG1s
IChsaW5lIDExOjEpCisgICBzdGFydFRlc3QgZG9jdW1lbnQtZG90LXdyaXRlLmh0bWwgKGxpbmUg
MTA6MTkpCiAgICAgICB3cml0ZSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgZW5kVGVzdCBw
cm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgICAgZW5kVGVzdCBw
cm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiAKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvcHJvZmlsZXIvZXZlbnQtaGFuZGxlci1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9ldmVudC1oYW5kbGVyLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMTg2ODA4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9ldmVudC1o
YW5kbGVyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCwxNSArNCwxNSBAQCBUbyBy
dW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBsb2FkIGl0IGluIHRoCiAKIFByb2ZpbGUgdGl0bGU6IEV2
ZW50IGhhbmRsZXIKIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBzdGFydFRlc3Qg
ZXZlbnQtaGFuZGxlci5odG1sIChsaW5lIDExOjEpCisgICBzdGFydFRlc3QgZXZlbnQtaGFuZGxl
ci5odG1sIChsaW5lIDEwOjE5KQogICAgICAgZ2V0RWxlbWVudEJ5SWQgKG5vIGZpbGUpIChsaW5l
IDA6MCkKICAgICAgIGFkZEV2ZW50TGlzdGVuZXIgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAg
IGNsaWNrIChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICAgICBpbnNlcnROZXdUZXh0IHByb2Zp
bGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjI2KQorICAgICAgICAgaW5zZXJ0TmV3
VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyMykKICAgICAgICAg
ICAgIGNyZWF0ZUVsZW1lbnQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIGNyZWF0
ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICBhcHBlbmRDaGlsZCAo
bm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgZ2V0RWxlbWVudEJ5SWQgKG5vIGZpbGUp
IChsaW5lIDA6MCkKLSAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMg
KGxpbmUgMToyMCkKKyAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMg
KGxpbmUgMToxNykKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2V4ZWN1dGlv
bi1jb250ZXh0LWFuZC1ldmFsLW9uLXNhbWUtbGluZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9leGVjdXRpb24tY29udGV4dC1hbmQtZXZhbC1v
bi1zYW1lLWxpbmUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY4MDgpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L3Byb2ZpbGVyL2V4ZWN1dGlvbi1jb250ZXh0LWFuZC1ldmFsLW9uLXNhbWUtbGluZS1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsMTMgKzQsMTMgQEAgVG8gcnVuIHRoaXMg
dGVzdCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiBUd28gRXhlY3V0
aW9uIENvbnRleHRzIG9uIHRoZSBzYW1lIGxpbmUKIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAw
OjApCi0gICBzdGFydFRlc3QgZXhlY3V0aW9uLWNvbnRleHQtYW5kLWV2YWwtb24tc2FtZS1saW5l
Lmh0bWwgKGxpbmUgMTE6MSkKLSAgICAgIGV2YWxGdW5jdGlvbiAobm8gZmlsZSkgKGxpbmUgMToy
NSkKLSAgICAgICAgIGluc2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMg
KGxpbmUgMTc6MjYpCisgICBzdGFydFRlc3QgZXhlY3V0aW9uLWNvbnRleHQtYW5kLWV2YWwtb24t
c2FtZS1saW5lLmh0bWwgKGxpbmUgMTA6MTkpCisgICAgICBldmFsRnVuY3Rpb24gKG5vIGZpbGUp
IChsaW5lIDE6MjIpCisgICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVz
b3VyY2VzLmpzIChsaW5lIDE3OjIzKQogICAgICAgICAgICAgY3JlYXRlRWxlbWVudCAobm8gZmls
ZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5l
IDA6MCkKICAgICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjApCiAgICAg
ICAgICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgZW5kVGVz
dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgICAgZW5kVGVz
dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiAKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvaW5saW5lLWV2ZW50LWhhbmRsZXItZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvaW5saW5lLWV2ZW50LWhh
bmRsZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY4MDgpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L3Byb2ZpbGVyL2lubGluZS1ldmVudC1oYW5kbGVyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtNCwxNyArNCwxNyBAQCBUbyBydW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBsb2FkIGl0IGlu
IHRoCiAKIFByb2ZpbGUgdGl0bGU6IElubGluZSBldmVudCBoYW5kbGVyCiBUaHJlYWRfMSAobm8g
ZmlsZSkgKGxpbmUgMDowKQotICAgc3RhcnRUZXN0IGlubGluZS1ldmVudC1oYW5kbGVyLmh0bWwg
KGxpbmUgMTE6MSkKKyAgIHN0YXJ0VGVzdCBpbmxpbmUtZXZlbnQtaGFuZGxlci5odG1sIChsaW5l
IDEwOjE5KQogICAgICAgZ2V0RWxlbWVudEJ5SWQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAg
IGNsaWNrIChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICAgICBvbmNsaWNrIGlubGluZS1ldmVu
dC1oYW5kbGVyLmh0bWwgKGxpbmUgMzE6MTM1KQotICAgICAgICAgICAgZXZlbnRMaXN0ZW5lciBp
bmxpbmUtZXZlbnQtaGFuZGxlci5odG1sIChsaW5lIDE3OjI2KQotICAgICAgICAgICAgICAgYW5v
bnltb3VzRnVuY3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMjk6Mzcp
Ci0gICAgICAgICAgICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3Vy
Y2VzLmpzIChsaW5lIDE3OjI2KQorICAgICAgICAgb25jbGljayBpbmxpbmUtZXZlbnQtaGFuZGxl
ci5odG1sIChsaW5lIDMxOjEyNykKKyAgICAgICAgICAgIGV2ZW50TGlzdGVuZXIgaW5saW5lLWV2
ZW50LWhhbmRsZXIuaHRtbCAobGluZSAxNzoyMykKKyAgICAgICAgICAgICAgIGFub255bW91c0Z1
bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI5OjM0KQorICAgICAg
ICAgICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAo
bGluZSAxNzoyMykKICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQgKG5vIGZpbGUp
IChsaW5lIDA6MCkKICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxl
KSAobGluZSAwOjApCiAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkg
KGxpbmUgMDowKQogICAgICAgICAgICAgICAgICAgICAgZ2V0RWxlbWVudEJ5SWQgKG5vIGZpbGUp
IChsaW5lIDA6MCkKLSAgICAgICAgICAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNv
dXJjZXMuanMgKGxpbmUgMToyMCkKKyAgICAgICAgICAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVz
dC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToxNykKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L3Byb2ZpbGVyL21hbnktY2FsbHMtaW4tdGhlLXNhbWUtc2NvcGUtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvbWFueS1jYWxscy1pbi10aGUtc2Ft
ZS1zY29wZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4NjgwOCkKKysrIExheW91dFRlc3RzL2Zh
c3QvcHJvZmlsZXIvbWFueS1jYWxscy1pbi10aGUtc2FtZS1zY29wZS1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTQsMzMgKzQsMzMgQEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwg
bG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiBNYW55IENhbGxzIEluIFRoZSBTYW1lIFNj
b3BlCiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgc3RhcnRUZXN0IG1hbnktY2Fs
bHMtaW4tdGhlLXNhbWUtc2NvcGUuaHRtbCAobGluZSAxMToxKQotICAgICAgaW5zZXJ0TmV3VGV4
dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyNikKKyAgIHN0YXJ0VGVz
dCBtYW55LWNhbGxzLWluLXRoZS1zYW1lLXNjb3BlLmh0bWwgKGxpbmUgMTA6MTkpCisgICAgICBp
bnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjIzKQog
ICAgICAgICAgY3JlYXRlRWxlbWVudCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgY3Jl
YXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgIGFwcGVuZENoaWxkIChu
byBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmlsZSkgKGxp
bmUgMDowKQotICAgICAgaW5zZXJ0R2l2ZW5UZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2Vz
LmpzIChsaW5lIDk6MzIpCisgICAgICBpbnNlcnRHaXZlblRleHQgcHJvZmlsZXItdGVzdC1KUy1y
ZXNvdXJjZXMuanMgKGxpbmUgOToyNSkKICAgICAgICAgIGNyZWF0ZUVsZW1lbnQgKG5vIGZpbGUp
IChsaW5lIDA6MCkKICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAwOjAp
CiAgICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgZ2V0
RWxlbWVudEJ5SWQgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAgIGFycmF5T3BlcmF0b3JGdW5j
dGlvbiBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAyNTo0NikKLSAgICAgIGlu
dGVybWVkaWFyeUZ1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDMz
OjEpCi0gICAgICAgICBhbm9ueW1vdXNGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpTLXJlc291cmNl
cy5qcyAobGluZSAyOTozNykKLSAgICAgICAgICAgIGluc2VydE5ld1RleHQgcHJvZmlsZXItdGVz
dC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjYpCisgICAgICBhcnJheU9wZXJhdG9yRnVuY3Rp
b24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMjU6MzEpCisgICAgICBpbnRl
cm1lZGlhcnlGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAzMjoz
MCkKKyAgICAgICAgIGFub255bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2Vz
LmpzIChsaW5lIDI5OjM0KQorICAgICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0
LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyMykKICAgICAgICAgICAgICAgIGNyZWF0ZUVsZW1l
bnQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChu
byBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkg
KGxpbmUgMDowKQogICAgICAgICAgICAgICAgZ2V0RWxlbWVudEJ5SWQgKG5vIGZpbGUpIChsaW5l
IDA6MCkKLSAgICAgIGFub255bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2Vz
LmpzIChsaW5lIDI5OjM3KQotICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpT
LXJlc291cmNlcy5qcyAobGluZSAxNzoyNikKKyAgICAgIGFub255bW91c0Z1bmN0aW9uIHByb2Zp
bGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI5OjM0KQorICAgICAgICAgaW5zZXJ0TmV3
VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyMykKICAgICAgICAg
ICAgIGNyZWF0ZUVsZW1lbnQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIGNyZWF0
ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICBhcHBlbmRDaGlsZCAo
bm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgZ2V0RWxlbWVudEJ5SWQgKG5vIGZpbGUp
IChsaW5lIDA6MCkKLSAgICAgIGVuZCBtYW55LWNhbGxzLWluLXRoZS1zYW1lLXNjb3BlLmh0bWwg
KGxpbmUgMjc6MSkKLSAgICAgIGVuZFQgbWFueS1jYWxscy1pbi10aGUtc2FtZS1zY29wZS5odG1s
IChsaW5lIDMyOjEpCi0gICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpz
IChsaW5lIDE6MjApCisgICAgICBlbmQgbWFueS1jYWxscy1pbi10aGUtc2FtZS1zY29wZS5odG1s
IChsaW5lIDI2OjEzKQorICAgICAgZW5kVCBtYW55LWNhbGxzLWluLXRoZS1zYW1lLXNjb3BlLmh0
bWwgKGxpbmUgMzE6MTQpCisgICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2Vz
LmpzIChsaW5lIDE6MTcpCiAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9tdWx0
aXBsZS1hbmQtZGlmZmVyZW50LXNjb3BlZC1hbm9ueW1vdXMtZnVuY3Rpb24tY2FsbHMtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvbXVsdGlwbGUt
YW5kLWRpZmZlcmVudC1zY29wZWQtYW5vbnltb3VzLWZ1bmN0aW9uLWNhbGxzLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMTg2ODA4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9tdWx0aXBs
ZS1hbmQtZGlmZmVyZW50LXNjb3BlZC1hbm9ueW1vdXMtZnVuY3Rpb24tY2FsbHMtZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDIwICs0LDIwIEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFu
dWFsbHksIGxvYWQgaXQgaW4gdGgKIAogUHJvZmlsZSB0aXRsZTogTXVsdGlwbGUgYW5kIGRpZmZl
cmVudCBzY29wZWQgY2FsbHMgdG8gdGhlIHNhbWUgYW5vbnltb3VzIGZ1bmN0aW9uCiBUaHJlYWRf
MSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgc3RhcnRUZXN0IG11bHRpcGxlLWFuZC1kaWZmZXJl
bnQtc2NvcGVkLWFub255bW91cy1mdW5jdGlvbi1jYWxscy5odG1sIChsaW5lIDExOjEpCi0gICAg
ICBhbm9ueW1vdXNGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAy
OTozNykKLSAgICAgICAgIGluc2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMu
anMgKGxpbmUgMTc6MjYpCisgICBzdGFydFRlc3QgbXVsdGlwbGUtYW5kLWRpZmZlcmVudC1zY29w
ZWQtYW5vbnltb3VzLWZ1bmN0aW9uLWNhbGxzLmh0bWwgKGxpbmUgMTA6MTkpCisgICAgICBhbm9u
eW1vdXNGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAyOTozNCkK
KyAgICAgICAgIGluc2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxp
bmUgMTc6MjMpCiAgICAgICAgICAgICBjcmVhdGVFbGVtZW50IChubyBmaWxlKSAobGluZSAwOjAp
CiAgICAgICAgICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAg
ICAgICAgYXBwZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIGdldEVs
ZW1lbnRCeUlkIChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICBpbnRlcm1lZGlhcnlGdW5jdGlv
biBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAzMzoxKQotICAgICAgICAgYW5v
bnltb3VzRnVuY3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMjk6Mzcp
Ci0gICAgICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpz
IChsaW5lIDE3OjI2KQorICAgICAgaW50ZXJtZWRpYXJ5RnVuY3Rpb24gcHJvZmlsZXItdGVzdC1K
Uy1yZXNvdXJjZXMuanMgKGxpbmUgMzI6MzApCisgICAgICAgICBhbm9ueW1vdXNGdW5jdGlvbiBw
cm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAyOTozNCkKKyAgICAgICAgICAgIGlu
c2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjMpCiAg
ICAgICAgICAgICAgICBjcmVhdGVFbGVtZW50IChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAg
ICAgICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAg
ICAgYXBwZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgIGdldEVs
ZW1lbnRCeUlkIChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICBlbmRUZXN0IHByb2ZpbGVyLXRl
c3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MjApCisgICAgICBlbmRUZXN0IHByb2ZpbGVyLXRl
c3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MTcpCiAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9wcm9maWxlci9tdWx0aXBsZS1hbmQtZGlmZmVyZW50LXNjb3BlZC1mdW5jdGlvbi1jYWxscy1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9tdWx0
aXBsZS1hbmQtZGlmZmVyZW50LXNjb3BlZC1mdW5jdGlvbi1jYWxscy1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDE4NjgwOCkKKysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvbXVsdGlwbGUtYW5k
LWRpZmZlcmVudC1zY29wZWQtZnVuY3Rpb24tY2FsbHMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC00LDE5ICs0LDE5IEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxvYWQgaXQg
aW4gdGgKIAogUHJvZmlsZSB0aXRsZTogTXVsdGlwbGUgYW5kIGRpZmZlcmVudCBzY29wZWQgY2Fs
bHMgdG8gdGhlIHNhbWUgZnVuY3Rpb24KIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0g
ICBzdGFydFRlc3QgbXVsdGlwbGUtYW5kLWRpZmZlcmVudC1zY29wZWQtZnVuY3Rpb24tY2FsbHMu
aHRtbCAobGluZSAxMToxKQotICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJl
c291cmNlcy5qcyAobGluZSAxNzoyNikKKyAgIHN0YXJ0VGVzdCBtdWx0aXBsZS1hbmQtZGlmZmVy
ZW50LXNjb3BlZC1mdW5jdGlvbi1jYWxscy5odG1sIChsaW5lIDEwOjE5KQorICAgICAgaW5zZXJ0
TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyMykKICAgICAg
ICAgIGNyZWF0ZUVsZW1lbnQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgIGNyZWF0ZVRl
eHROb2RlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmls
ZSkgKGxpbmUgMDowKQogICAgICAgICAgZ2V0RWxlbWVudEJ5SWQgKG5vIGZpbGUpIChsaW5lIDA6
MCkKLSAgICAgIGludGVybWVkaWFyeUZ1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2Vz
LmpzIChsaW5lIDMzOjEpCi0gICAgICAgICBhbm9ueW1vdXNGdW5jdGlvbiBwcm9maWxlci10ZXN0
LUpTLXJlc291cmNlcy5qcyAobGluZSAyOTozNykKLSAgICAgICAgICAgIGluc2VydE5ld1RleHQg
cHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjYpCisgICAgICBpbnRlcm1l
ZGlhcnlGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAzMjozMCkK
KyAgICAgICAgIGFub255bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpz
IChsaW5lIDI5OjM0KQorICAgICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpT
LXJlc291cmNlcy5qcyAobGluZSAxNzoyMykKICAgICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQg
KG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBm
aWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxp
bmUgMDowKQogICAgICAgICAgICAgICAgZ2V0RWxlbWVudEJ5SWQgKG5vIGZpbGUpIChsaW5lIDA6
MCkKLSAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToy
MCkKKyAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTox
NykKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL211bHRpcGxlLWFub255bW91
cy1mdW5jdGlvbnMtY2FsbGVkLWZyb20tdGhlLXNhbWUtZnVuY3Rpb24tZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvbXVsdGlwbGUtYW5vbnltb3Vz
LWZ1bmN0aW9ucy1jYWxsZWQtZnJvbS10aGUtc2FtZS1mdW5jdGlvbi1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDE4NjgwOCkKKysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvbXVsdGlwbGUtYW5v
bnltb3VzLWZ1bmN0aW9ucy1jYWxsZWQtZnJvbS10aGUtc2FtZS1mdW5jdGlvbi1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsMTkgKzQsMTkgQEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51
YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiBNdWx0aXBsZSBjYWxscyB0byBk
aWZmZXJlbnQgYW5vbnltb3VzIGZ1bmN0aW9ucwogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6
MCkKLSAgIHN0YXJ0VGVzdCBtdWx0aXBsZS1hbm9ueW1vdXMtZnVuY3Rpb25zLWNhbGxlZC1mcm9t
LXRoZS1zYW1lLWZ1bmN0aW9uLmh0bWwgKGxpbmUgMTE6MSkKLSAgICAgIGFub255bW91c0Z1bmN0
aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI5OjM3KQotICAgICAgICAg
aW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyNikK
KyAgIHN0YXJ0VGVzdCBtdWx0aXBsZS1hbm9ueW1vdXMtZnVuY3Rpb25zLWNhbGxlZC1mcm9tLXRo
ZS1zYW1lLWZ1bmN0aW9uLmh0bWwgKGxpbmUgMTA6MTkpCisgICAgICBhbm9ueW1vdXNGdW5jdGlv
biBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAyOTozNCkKKyAgICAgICAgIGlu
c2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjMpCiAg
ICAgICAgICAgICBjcmVhdGVFbGVtZW50IChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAg
ICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgYXBwZW5k
Q2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIGdldEVsZW1lbnRCeUlkIChu
byBmaWxlKSAobGluZSAwOjApCi0gICAgICBhbm90aGVyQW5vbnltb3VzRnVuY3Rpb24gcHJvZmls
ZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMzA6NDQpCi0gICAgICAgICBpbnNlcnRHaXZl
blRleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgOTozMikKKyAgICAgIGFu
b3RoZXJBbm9ueW1vdXNGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGlu
ZSAzMDo0MSkKKyAgICAgICAgIGluc2VydEdpdmVuVGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291
cmNlcy5qcyAobGluZSA5OjI1KQogICAgICAgICAgICAgY3JlYXRlRWxlbWVudCAobm8gZmlsZSkg
KGxpbmUgMDowKQogICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6
MCkKICAgICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAg
ICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgZW5kVGVzdCBw
cm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgICAgZW5kVGVzdCBw
cm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiAKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvcHJvZmlsZXIvbXVsdGlwbGUtZnJhbWVzLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL211bHRpcGxlLWZyYW1lcy1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDE4NjgwOCkKKysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvbXVs
dGlwbGUtZnJhbWVzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCwxNSArNCwxNSBA
QCBUbyBydW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBsb2FkIGl0IGluIHRoCiAKIFByb2ZpbGUgdGl0
bGU6IE90aGVyIHdpbmRvdyBleGVjdXRpbmcgSmF2YVNjcmlwdAogVGhyZWFkXzEgKG5vIGZpbGUp
IChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCBtdWx0aXBsZS1mcmFtZXMuaHRtbCAobGluZSAxMTox
KQorICAgc3RhcnRUZXN0IG11bHRpcGxlLWZyYW1lcy5odG1sIChsaW5lIDEwOjE5KQogICAgICAg
Z2V0RWxlbWVudEJ5SWQgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAgIGZ1bmN0aW9uSW5PdGhl
ckZyYW1lIG90aGVyLWZyYW1lLmh0bWwgKGxpbmUgNDozMykKLSAgICAgICAgIGZ1bmN0aW9uSW5Q
YXJlbnRGcmFtZSBtdWx0aXBsZS1mcmFtZXMuaHRtbCAobGluZSAyMTozNCkKLSAgICAgIGluc2Vy
dEdpdmVuVGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA5OjMyKQorICAg
ICAgZnVuY3Rpb25Jbk90aGVyRnJhbWUgb3RoZXItZnJhbWUuaHRtbCAobGluZSA0OjMwKQorICAg
ICAgICAgZnVuY3Rpb25JblBhcmVudEZyYW1lIG11bHRpcGxlLWZyYW1lcy5odG1sIChsaW5lIDIx
OjMxKQorICAgICAgaW5zZXJ0R2l2ZW5UZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpz
IChsaW5lIDk6MjUpCiAgICAgICAgICBjcmVhdGVFbGVtZW50IChubyBmaWxlKSAobGluZSAwOjAp
CiAgICAgICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAg
YXBwZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgIGdldEVsZW1lbnRCeUlk
IChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVz
b3VyY2VzLmpzIChsaW5lIDE6MjApCisgICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVz
b3VyY2VzLmpzIChsaW5lIDE6MTcpCiAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxl
ci9uYW1lZC1mdW5jdGlvbnMtd2l0aC1kaXNwbGF5LW5hbWVzLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL25hbWVkLWZ1bmN0aW9ucy13aXRoLWRp
c3BsYXktbmFtZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY4MDgpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L3Byb2ZpbGVyL25hbWVkLWZ1bmN0aW9ucy13aXRoLWRpc3BsYXktbmFtZXMtZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDEzICs0LDEzIEBAIFRvIHJ1biB0aGlzIHRlc3Qg
bWFudWFsbHksIGxvYWQgaXQgaW4gdGgKIAogUHJvZmlsZSB0aXRsZTogTmFtZWQgZnVuY3Rpb25z
IHdpdGggZGlzcGxheSBuYW1lcwogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0
YXJ0VGVzdCBuYW1lZC1mdW5jdGlvbnMtd2l0aC1kaXNwbGF5LW5hbWVzLmh0bWwgKGxpbmUgNTQ6
MSkKLSAgICAgIDAgaXRlcmF0aW9ucyBmdW5jdGlvbiBuYW1lZC1mdW5jdGlvbnMtd2l0aC1kaXNw
bGF5LW5hbWVzLmh0bWwgKGxpbmUgMTE6MSkKLSAgICAgIDEgaXRlcmF0aW9uIGZ1bmN0aW9uIG5h
bWVkLWZ1bmN0aW9ucy13aXRoLWRpc3BsYXktbmFtZXMuaHRtbCAobGluZSAxODoxKQotICAgICAg
MiBpdGVyYXRpb25zIGZ1bmN0aW9uIG5hbWVkLWZ1bmN0aW9ucy13aXRoLWRpc3BsYXktbmFtZXMu
aHRtbCAobGluZSAyNToxKQotICAgICAgMjAgaXRlcmF0aW9ucyBmdW5jdGlvbiBuYW1lZC1mdW5j
dGlvbnMtd2l0aC1kaXNwbGF5LW5hbWVzLmh0bWwgKGxpbmUgMzI6MSkKLSAgICAgIDEwMDAgaXRl
cmF0aW9ucyBmdW5jdGlvbiBuYW1lZC1mdW5jdGlvbnMtd2l0aC1kaXNwbGF5LW5hbWVzLmh0bWwg
KGxpbmUgMzk6MSkKLSAgICAgIGJvZ3VzRGlzcGxheU5hbWVGdW5jdGlvbiBuYW1lZC1mdW5jdGlv
bnMtd2l0aC1kaXNwbGF5LW5hbWVzLmh0bWwgKGxpbmUgNDc6MSkKLSAgICAgIGVuZFRlc3QgcHJv
ZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAgIHN0YXJ0VGVzdCBuYW1l
ZC1mdW5jdGlvbnMtd2l0aC1kaXNwbGF5LW5hbWVzLmh0bWwgKGxpbmUgNTM6MTkpCisgICAgICAw
IGl0ZXJhdGlvbnMgZnVuY3Rpb24gbmFtZWQtZnVuY3Rpb25zLXdpdGgtZGlzcGxheS1uYW1lcy5o
dG1sIChsaW5lIDEwOjE5KQorICAgICAgMSBpdGVyYXRpb24gZnVuY3Rpb24gbmFtZWQtZnVuY3Rp
b25zLXdpdGgtZGlzcGxheS1uYW1lcy5odG1sIChsaW5lIDE3OjE5KQorICAgICAgMiBpdGVyYXRp
b25zIGZ1bmN0aW9uIG5hbWVkLWZ1bmN0aW9ucy13aXRoLWRpc3BsYXktbmFtZXMuaHRtbCAobGlu
ZSAyNDoxOSkKKyAgICAgIDIwIGl0ZXJhdGlvbnMgZnVuY3Rpb24gbmFtZWQtZnVuY3Rpb25zLXdp
dGgtZGlzcGxheS1uYW1lcy5odG1sIChsaW5lIDMxOjIwKQorICAgICAgMTAwMCBpdGVyYXRpb25z
IGZ1bmN0aW9uIG5hbWVkLWZ1bmN0aW9ucy13aXRoLWRpc3BsYXktbmFtZXMuaHRtbCAobGluZSAz
ODoyMikKKyAgICAgIGJvZ3VzRGlzcGxheU5hbWVGdW5jdGlvbiBuYW1lZC1mdW5jdGlvbnMtd2l0
aC1kaXNwbGF5LW5hbWVzLmh0bWwgKGxpbmUgNDY6MzQpCisgICAgICBlbmRUZXN0IHByb2ZpbGVy
LXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MTcpCiAKIApJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9wcm9maWxlci9uZXN0ZWQtYW5vbnltb3VzLWZ1bmN0b24tZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvbmVzdGVkLWFub255bW91cy1mdW5j
dG9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2ODA4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9w
cm9maWxlci9uZXN0ZWQtYW5vbnltb3VzLWZ1bmN0b24tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC00LDE0ICs0LDE0IEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxvYWQgaXQg
aW4gdGgKIAogUHJvZmlsZSB0aXRsZTogTmVzdGVkIGFub255bW91cyBmdW5jdGlvbnMgY2FsbGVk
CiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgc3RhcnRUZXN0IG5lc3RlZC1hbm9u
eW1vdXMtZnVuY3Rvbi5odG1sIChsaW5lIDExOjEpCi0gICAgICBBbm9ueW1vdXNGdW5jdGlvbldp
Y2hDYWxsc0FuQW5vbnltb3VzRnVuY3Rpb24gbmVzdGVkLWFub255bW91cy1mdW5jdG9uLmh0bWwg
KGxpbmUgMTQ6NjgpCi0gICAgICAgICBhbm9ueW1vdXNGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpT
LXJlc291cmNlcy5qcyAobGluZSAyOTozNykKLSAgICAgICAgICAgIGluc2VydE5ld1RleHQgcHJv
ZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjYpCisgICBzdGFydFRlc3QgbmVz
dGVkLWFub255bW91cy1mdW5jdG9uLmh0bWwgKGxpbmUgMTA6MTkpCisgICAgICBBbm9ueW1vdXNG
dW5jdGlvbldpY2hDYWxsc0FuQW5vbnltb3VzRnVuY3Rpb24gbmVzdGVkLWFub255bW91cy1mdW5j
dG9uLmh0bWwgKGxpbmUgMTQ6NjUpCisgICAgICAgICBhbm9ueW1vdXNGdW5jdGlvbiBwcm9maWxl
ci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAyOTozNCkKKyAgICAgICAgICAgIGluc2VydE5l
d1RleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjMpCiAgICAgICAg
ICAgICAgICBjcmVhdGVFbGVtZW50IChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAg
ICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgYXBw
ZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgIGdldEVsZW1lbnRC
eUlkIChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMt
cmVzb3VyY2VzLmpzIChsaW5lIDE6MjApCisgICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMt
cmVzb3VyY2VzLmpzIChsaW5lIDE6MTcpCiAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9m
aWxlci9uZXN0ZWQtc3RhcnQtYW5kLXN0b3AtcHJvZmlsZXItZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvbmVzdGVkLXN0YXJ0LWFuZC1zdG9wLXBy
b2ZpbGVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2ODA4KQorKysgTGF5b3V0VGVzdHMvZmFz
dC9wcm9maWxlci9uZXN0ZWQtc3RhcnQtYW5kLXN0b3AtcHJvZmlsZXItZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC00LDM1ICs0LDM1IEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHks
IGxvYWQgaXQgaW4gdGgKIAogUHJvZmlsZSB0aXRsZTogU3RhcnQgdGhlIHByb2ZpbGVyIHRoZSB0
aGlyZCB0aW1lLgogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCBu
ZXN0ZWQtc3RhcnQtYW5kLXN0b3AtcHJvZmlsZXIuaHRtbCAobGluZSAxMToxKQotICAgICAgZW5k
VGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgc3RhcnRU
ZXN0IG5lc3RlZC1zdGFydC1hbmQtc3RvcC1wcm9maWxlci5odG1sIChsaW5lIDEwOjE5KQorICAg
ICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiAK
IFByb2ZpbGUgdGl0bGU6IFN0YXJ0IHRoZSBwcm9maWxlciB0aGUgdGhpcmQgdGltZS4KIFRocmVh
ZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBzdGFydFRlc3QgbmVzdGVkLXN0YXJ0LWFuZC1z
dG9wLXByb2ZpbGVyLmh0bWwgKGxpbmUgMTE6MSkKLSAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVz
dC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAgIHN0YXJ0VGVzdCBuZXN0ZWQtc3RhcnQt
YW5kLXN0b3AtcHJvZmlsZXIuaHRtbCAobGluZSAxMDoxOSkKKyAgICAgIGVuZFRlc3QgcHJvZmls
ZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToxNykKIAogUHJvZmlsZSB0aXRsZTogU3Rh
cnQgdGhlIHByb2ZpbGVyIHRoZSBzZWNvbmQgdGltZS4KIFRocmVhZF8xIChubyBmaWxlKSAobGlu
ZSAwOjApCi0gICBzdGFydFRlc3QgbmVzdGVkLXN0YXJ0LWFuZC1zdG9wLXByb2ZpbGVyLmh0bWwg
KGxpbmUgMTE6MSkKLSAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMg
KGxpbmUgMToyMCkKKyAgIHN0YXJ0VGVzdCBuZXN0ZWQtc3RhcnQtYW5kLXN0b3AtcHJvZmlsZXIu
aHRtbCAobGluZSAxMDoxOSkKKyAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJj
ZXMuanMgKGxpbmUgMToxNykKICAgICAgICAgIHByb2ZpbGVFbmQgKG5vIGZpbGUpIChsaW5lIDA6
MCkKLSAgICAgICAgIHByaW50UHJvZmlsZXNEYXRhV2l0aG91dFRpbWUgcHJvZmlsZXItdGVzdC1K
Uy1yZXNvdXJjZXMuanMgKGxpbmUgNjM6MSkKKyAgICAgICAgIHByaW50UHJvZmlsZXNEYXRhV2l0
aG91dFRpbWUgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgNjI6MzgpCiAgICAg
ICAgICAgICBjcmVhdGVFbGVtZW50IChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICBj
cmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgYXBwZW5kQ2hp
bGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAgICAgICAgIHByaW50UHJvZmlsZU5vZGVXaXRo
b3V0VGltZSBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA3ODoxKQorICAgICAg
ICAgICAgcHJpbnRQcm9maWxlTm9kZVdpdGhvdXRUaW1lIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3Vy
Y2VzLmpzIChsaW5lIDc3OjM3KQogICAgICAgICAgICAgICAgcmVwbGFjZSAobm8gZmlsZSkgKGxp
bmUgMDowKQogICAgICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6
MCkKICAgICAgICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjApCiAgICAg
ICAgICAgICAgICBjaGlsZHJlbiAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgICAgICAgICAg
cHJpbnRQcm9maWxlTm9kZVdpdGhvdXRUaW1lIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpz
IChsaW5lIDc4OjEpCisgICAgICAgICAgICAgICBwcmludFByb2ZpbGVOb2RlV2l0aG91dFRpbWUg
cHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgNzc6MzcpCiAgICAgICAgICAgICAg
ICAgICByZXBsYWNlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICAgICBjcmVh
dGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgICAgYXBwZW5k
Q2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuIChu
byBmaWxlKSAobGluZSAwOjApCi0gICAgICAgICAgICAgICAgICBwcmludFByb2ZpbGVOb2RlV2l0
aG91dFRpbWUgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgNzg6MSkKKyAgICAg
ICAgICAgICAgICAgIHByaW50UHJvZmlsZU5vZGVXaXRob3V0VGltZSBwcm9maWxlci10ZXN0LUpT
LXJlc291cmNlcy5qcyAobGluZSA3NzozNykKICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2Ug
KG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZVRleHROb2Rl
IChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRDaGlsZCAo
bm8gZmlsZSkgKGxpbmUgMDowKQpAQCAtNDMsMjkgKzQzLDI5IEBAIFRocmVhZF8xIChubyBmaWxl
KSAobGluZSAwOjApCiAKIFByb2ZpbGUgdGl0bGU6IFN0YXJ0IHRoZSBwcm9maWxlciB0aGUgdGhp
cmQgdGltZS4KIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBzdGFydFRlc3QgbmVz
dGVkLXN0YXJ0LWFuZC1zdG9wLXByb2ZpbGVyLmh0bWwgKGxpbmUgMTE6MSkKLSAgICAgIGVuZFRl
c3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAgIHN0YXJ0VGVz
dCBuZXN0ZWQtc3RhcnQtYW5kLXN0b3AtcHJvZmlsZXIuaHRtbCAobGluZSAxMDoxOSkKKyAgICAg
IGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToxNykKIAogUHJv
ZmlsZSB0aXRsZTogU3RhcnQgdGhlIHByb2ZpbGVyIHRoZSBzZWNvbmQgdGltZS4KIFRocmVhZF8x
IChubyBmaWxlKSAobGluZSAwOjApCi0gICBzdGFydFRlc3QgbmVzdGVkLXN0YXJ0LWFuZC1zdG9w
LXByb2ZpbGVyLmh0bWwgKGxpbmUgMTE6MSkKLSAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1K
Uy1yZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAgIHN0YXJ0VGVzdCBuZXN0ZWQtc3RhcnQtYW5k
LXN0b3AtcHJvZmlsZXIuaHRtbCAobGluZSAxMDoxOSkKKyAgICAgIGVuZFRlc3QgcHJvZmlsZXIt
dGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToxNykKICAgICAgICAgIHByb2ZpbGVFbmQgKG5v
IGZpbGUpIChsaW5lIDA6MCkKLSAgICAgICAgIHByaW50UHJvZmlsZXNEYXRhV2l0aG91dFRpbWUg
cHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgNjM6MSkKKyAgICAgICAgIHByaW50
UHJvZmlsZXNEYXRhV2l0aG91dFRpbWUgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxp
bmUgNjI6MzgpCiAgICAgICAgICAgICBjcmVhdGVFbGVtZW50IChubyBmaWxlKSAobGluZSAwOjAp
CiAgICAgICAgICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAg
ICAgICAgYXBwZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAgICAgICAgIHByaW50
UHJvZmlsZU5vZGVXaXRob3V0VGltZSBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGlu
ZSA3ODoxKQorICAgICAgICAgICAgcHJpbnRQcm9maWxlTm9kZVdpdGhvdXRUaW1lIHByb2ZpbGVy
LXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDc3OjM3KQogICAgICAgICAgICAgICAgcmVwbGFj
ZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5v
IGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAo
bGluZSAwOjApCiAgICAgICAgICAgICAgICBjaGlsZHJlbiAobm8gZmlsZSkgKGxpbmUgMDowKQot
ICAgICAgICAgICAgICAgcHJpbnRQcm9maWxlTm9kZVdpdGhvdXRUaW1lIHByb2ZpbGVyLXRlc3Qt
SlMtcmVzb3VyY2VzLmpzIChsaW5lIDc4OjEpCisgICAgICAgICAgICAgICBwcmludFByb2ZpbGVO
b2RlV2l0aG91dFRpbWUgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgNzc6Mzcp
CiAgICAgICAgICAgICAgICAgICByZXBsYWNlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAg
ICAgICAgICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAg
ICAgICAgICAgYXBwZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAg
ICAgIGNoaWxkcmVuIChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICAgICAgICAgICAgICBwcmlu
dFByb2ZpbGVOb2RlV2l0aG91dFRpbWUgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxp
bmUgNzg6MSkKKyAgICAgICAgICAgICAgICAgIHByaW50UHJvZmlsZU5vZGVXaXRob3V0VGltZSBw
cm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA3NzozNykKICAgICAgICAgICAgICAg
ICAgICAgIHJlcGxhY2UgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgICAgICAg
IGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICAgICAg
ICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQpAQCAtNzUsNDkgKzc1LDQ5IEBAIFRo
cmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCiAKIFByb2ZpbGUgdGl0bGU6IFN0YXJ0IHRoZSBw
cm9maWxlciB0aGUgZmlyc3QgdGltZS4KIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0g
ICBzdGFydFRlc3QgbmVzdGVkLXN0YXJ0LWFuZC1zdG9wLXByb2ZpbGVyLmh0bWwgKGxpbmUgMTE6
MSkKLSAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToy
MCkKKyAgIHN0YXJ0VGVzdCBuZXN0ZWQtc3RhcnQtYW5kLXN0b3AtcHJvZmlsZXIuaHRtbCAobGlu
ZSAxMDoxOSkKKyAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxp
bmUgMToxNykKICAgICAgICAgIHByb2ZpbGVFbmQgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAg
ICAgIHByaW50UHJvZmlsZXNEYXRhV2l0aG91dFRpbWUgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJj
ZXMuanMgKGxpbmUgNjM6MSkKKyAgICAgICAgIHByaW50UHJvZmlsZXNEYXRhV2l0aG91dFRpbWUg
cHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgNjI6MzgpCiAgICAgICAgICAgICBj
cmVhdGVFbGVtZW50IChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICBjcmVhdGVUZXh0
Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgYXBwZW5kQ2hpbGQgKG5vIGZp
bGUpIChsaW5lIDA6MCkKLSAgICAgICAgICAgIHByaW50UHJvZmlsZU5vZGVXaXRob3V0VGltZSBw
cm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA3ODoxKQorICAgICAgICAgICAgcHJp
bnRQcm9maWxlTm9kZVdpdGhvdXRUaW1lIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChs
aW5lIDc3OjM3KQogICAgICAgICAgICAgICAgcmVwbGFjZSAobm8gZmlsZSkgKGxpbmUgMDowKQog
ICAgICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAg
ICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAg
ICBjaGlsZHJlbiAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgICAgICAgICAgcHJpbnRQcm9m
aWxlTm9kZVdpdGhvdXRUaW1lIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDc4
OjEpCisgICAgICAgICAgICAgICBwcmludFByb2ZpbGVOb2RlV2l0aG91dFRpbWUgcHJvZmlsZXIt
dGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgNzc6MzcpCiAgICAgICAgICAgICAgICAgICByZXBs
YWNlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICAgICBjcmVhdGVUZXh0Tm9k
ZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgICAgYXBwZW5kQ2hpbGQgKG5v
IGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuIChubyBmaWxlKSAo
bGluZSAwOjApCi0gICAgICAgICAgICAgICAgICBwcmludFByb2ZpbGVOb2RlV2l0aG91dFRpbWUg
cHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgNzg6MSkKKyAgICAgICAgICAgICAg
ICAgIHByaW50UHJvZmlsZU5vZGVXaXRob3V0VGltZSBwcm9maWxlci10ZXN0LUpTLXJlc291cmNl
cy5qcyAobGluZSA3NzozNykKICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2UgKG5vIGZpbGUp
IChsaW5lIDA6MCkKICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxl
KSAobGluZSAwOjApCiAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkg
KGxpbmUgMDowKQogICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gKG5vIGZpbGUpIChsaW5l
IDA6MCkKLSAgICAgICAgICAgICAgICAgICAgIHByaW50UHJvZmlsZU5vZGVXaXRob3V0VGltZSBw
cm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA3ODoxKQorICAgICAgICAgICAgICAg
ICAgICAgcHJpbnRQcm9maWxlTm9kZVdpdGhvdXRUaW1lIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3Vy
Y2VzLmpzIChsaW5lIDc3OjM3KQogICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZSAobm8g
ZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUg
KG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZENoaWxk
IChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiAo
bm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRQcm9maWxl
Tm9kZVdpdGhvdXRUaW1lIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDc4OjEp
CisgICAgICAgICAgICAgICAgICAgICAgICBwcmludFByb2ZpbGVOb2RlV2l0aG91dFRpbWUgcHJv
ZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgNzc6MzcpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXBsYWNlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYXBwZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuIChubyBmaWxlKSAobGluZSAwOjApCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICBwcmludFByb2ZpbGVOb2RlV2l0aG91dFRpbWUgcHJvZmls
ZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgNzg6MSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHByaW50UHJvZmlsZU5vZGVXaXRob3V0VGltZSBwcm9maWxlci10ZXN0LUpTLXJlc291
cmNlcy5qcyAobGluZSA3NzozNykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxh
Y2UgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNy
ZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hpbGRyZW4gKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHByaW50UHJvZmlsZU5vZGVXaXRob3V0VGltZSBwcm9maWxlci10
ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA3ODoxKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHJpbnRQcm9maWxlTm9kZVdpdGhvdXRUaW1lIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3Vy
Y2VzLmpzIChsaW5lIDc3OjM3KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVw
bGFjZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiAobm8gZmlsZSkgKGxpbmUgMDowKQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRQcm9maWxlTm9kZVdpdGhvdXRU
aW1lIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDc4OjEpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwcmludFByb2ZpbGVOb2RlV2l0aG91dFRpbWUgcHJvZmls
ZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgNzc6MzcpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXBsYWNlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUg
MDowKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kQ2hpbGQgKG5v
IGZpbGUpIChsaW5lIDA6MCkKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvb25lLWV4
ZWN1dGlvbi1jb250ZXh0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L3Byb2ZpbGVyL29uZS1leGVjdXRpb24tY29udGV4dC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDE4NjgwOCkKKysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvb25lLWV4ZWN1dGlvbi1jb250
ZXh0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCw3ICs0LDcgQEAgVG8gcnVuIHRo
aXMgdGVzdCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiBPbmUgRXhl
Y3V0aW9uIENvbnRleHQKIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBzdGFydFRl
c3Qgb25lLWV4ZWN1dGlvbi1jb250ZXh0Lmh0bWwgKGxpbmUgMTE6MSkKLSAgICAgIGVuZFRlc3Qg
cHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAgIHN0YXJ0VGVzdCBv
bmUtZXhlY3V0aW9uLWNvbnRleHQuaHRtbCAobGluZSAxMDoxOSkKKyAgICAgIGVuZFRlc3QgcHJv
ZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToxNykKIAogCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L3Byb2ZpbGVyL3Byb2ZpbGUtY2FsbHMtaW4taW5jbHVkZWQtZmlsZS1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9wcm9maWxlLWNh
bGxzLWluLWluY2x1ZGVkLWZpbGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY4MDgpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3Byb2ZpbGUtY2FsbHMtaW4taW5jbHVkZWQtZmlsZS1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsNyArNCw3IEBAIFRvIHJ1biB0aGlzIHRl
c3QgbWFudWFsbHksIGxvYWQgaXQgaW4gdGgKIAogUHJvZmlsZSB0aXRsZTogUHJvZmlsZSBjYWxs
IGluIGluY2x1ZGVkIGZpbGUKIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBzdGFy
dFByb2ZpbGUgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgNDM6MSkKLSAgIGVu
ZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAgIHN0YXJ0
UHJvZmlsZSBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA0MjoyMikKKyAgIGVu
ZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToxNykKIAogCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3Byb2ZpbGUtd2l0aC1uby10aXRsZS1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9wcm9maWxlLXdp
dGgtbm8tdGl0bGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY4MDgpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L3Byb2ZpbGVyL3Byb2ZpbGUtd2l0aC1uby10aXRsZS1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTQsNyArNCw3IEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxvYWQg
aXQgaW4gdGgKIAogUHJvZmlsZSB0aXRsZTogCiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDow
KQotICAgc3RhcnRUZXN0IHByb2ZpbGUtd2l0aC1uby10aXRsZS5odG1sIChsaW5lIDExOjEpCi0g
ICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MjApCisg
ICBzdGFydFRlc3QgcHJvZmlsZS13aXRoLW5vLXRpdGxlLmh0bWwgKGxpbmUgMTA6MTkpCisgICAg
ICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MTcpCiAKIApJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9wcm9maWxpbmctZnJvbS1hLW5lc3RlZC1s
b2NhdGlvbi1idXQtc3RvcC1wcm9maWxpbmctb3V0c2lkZS10aGUtbmVzdGluZy1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9wcm9maWxpbmctZnJv
bS1hLW5lc3RlZC1sb2NhdGlvbi1idXQtc3RvcC1wcm9maWxpbmctb3V0c2lkZS10aGUtbmVzdGlu
Zy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4NjgwOCkKKysrIExheW91dFRlc3RzL2Zhc3QvcHJv
ZmlsZXIvcHJvZmlsaW5nLWZyb20tYS1uZXN0ZWQtbG9jYXRpb24tYnV0LXN0b3AtcHJvZmlsaW5n
LW91dHNpZGUtdGhlLW5lc3RpbmctZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDcg
KzQsNyBAQCBUbyBydW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBsb2FkIGl0IGluIHRoCiAKIFByb2Zp
bGUgdGl0bGU6IFByb2ZpbGluZyBGcm9tIEEgTmVzdGVkIExvY2F0aW9uIEJ1dCBTdG9wIFByb2Zp
bGluZyBPdXRzaWRlIFRoZSBOZXN0aW5nCiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDowKQot
ICAgZnVuY3Rpb25XaWNoU3RhcnRzVGhlUHJvZmlsZXIgcHJvZmlsaW5nLWZyb20tYS1uZXN0ZWQt
bG9jYXRpb24tYnV0LXN0b3AtcHJvZmlsaW5nLW91dHNpZGUtdGhlLW5lc3RpbmcuaHRtbCAobGlu
ZSAxNzoxKQotICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAx
OjIwKQorICAgZnVuY3Rpb25XaWNoU3RhcnRzVGhlUHJvZmlsZXIgcHJvZmlsaW5nLWZyb20tYS1u
ZXN0ZWQtbG9jYXRpb24tYnV0LXN0b3AtcHJvZmlsaW5nLW91dHNpZGUtdGhlLW5lc3RpbmcuaHRt
bCAobGluZSAxNjozOSkKKyAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMg
KGxpbmUgMToxNykKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3Byb2ZpbGlu
Zy1mcm9tLWEtbmVzdGVkLWxvY2F0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3Byb2ZpbGluZy1mcm9tLWEtbmVzdGVkLWxvY2F0aW9uLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2ODA4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxl
ci9wcm9maWxpbmctZnJvbS1hLW5lc3RlZC1sb2NhdGlvbi1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTQsNyArNCw3IEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxvYWQgaXQg
aW4gdGgKIAogUHJvZmlsZSB0aXRsZTogUHJvZmlsaW5nIEZyb20gQSBOZXN0ZWQgTG9jYXRpb24K
IFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBmdW5jdGlvbldpY2hTdGFydHNBbmRT
dG9wc1RoZVByb2ZpbGVyIHByb2ZpbGluZy1mcm9tLWEtbmVzdGVkLWxvY2F0aW9uLmh0bWwgKGxp
bmUgMTY6MSkKLSAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxp
bmUgMToyMCkKKyAgIGZ1bmN0aW9uV2ljaFN0YXJ0c0FuZFN0b3BzVGhlUHJvZmlsZXIgcHJvZmls
aW5nLWZyb20tYS1uZXN0ZWQtbG9jYXRpb24uaHRtbCAobGluZSAxNTo0NykKKyAgICAgIGVuZFRl
c3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToxNykKIAogCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3NpbXBsZS1ldmVudC1jYWxsLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3NpbXBsZS1ldmVudC1jYWxs
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2ODA4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9m
aWxlci9zaW1wbGUtZXZlbnQtY2FsbC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQs
NyArNCw3IEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxvYWQgaXQgaW4gdGgKIAogUHJv
ZmlsZSB0aXRsZTogQSBzaW1wbGUgcHJvZmlsZSB0ZXN0IHdoZXJlIGFuIGV2ZW50IGhhcHBlbnMu
CiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgc3RhcnRUZXN0IHNpbXBsZS1ldmVu
dC1jYWxsLmh0bWwgKGxpbmUgMTE6MSkKLSAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1y
ZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAgIHN0YXJ0VGVzdCBzaW1wbGUtZXZlbnQtY2FsbC5o
dG1sIChsaW5lIDEwOjE5KQorICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNl
cy5qcyAobGluZSAxOjE3KQogCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvc2lt
cGxlLW5vLWxldmVsLWNoYW5nZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9wcm9maWxlci9zaW1wbGUtbm8tbGV2ZWwtY2hhbmdlLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMTg2ODA4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9zaW1wbGUtbm8tbGV2
ZWwtY2hhbmdlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCw3ICs0LDcgQEAgVG8g
cnVuIHRoaXMgdGVzdCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiBB
IHNpbXBsZSBwcm9maWxlIHRlc3Qgd2hlcmUgbm8gc2NvcGUgY2hhZ25lcwogVGhyZWFkXzEgKG5v
IGZpbGUpIChsaW5lIDA6MCkKLSAgIGZ1bmN0aW9uV2ljaFN0YXJ0c0FuZFN0b3BzVGhlUHJvZmls
ZXIgc2ltcGxlLW5vLWxldmVsLWNoYW5nZS5odG1sIChsaW5lIDE2OjEpCisgICBmdW5jdGlvbldp
Y2hTdGFydHNBbmRTdG9wc1RoZVByb2ZpbGVyIHNpbXBsZS1uby1sZXZlbC1jaGFuZ2UuaHRtbCAo
bGluZSAxNTo0NykKICAgICAgIGdldEVsZW1lbnRCeUlkIChubyBmaWxlKSAobGluZSAwOjApCiAK
IApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9zdGFydC1hbmQtc3RvcC1wcm9maWxl
ci1tdWx0aXBsZS10aW1lcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9wcm9maWxlci9zdGFydC1hbmQtc3RvcC1wcm9maWxlci1tdWx0aXBsZS10aW1lcy1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDE4NjgwOCkKKysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIv
c3RhcnQtYW5kLXN0b3AtcHJvZmlsZXItbXVsdGlwbGUtdGltZXMtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC00LDcwICs0LDcwIEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxv
YWQgaXQgaW4gdGgKIAogUHJvZmlsZSB0aXRsZTogU3RhcnQgdGhlIHByb2ZpbGVyIHRoZSBmaXJz
dCB0aW1lLgogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCBzdGFy
dC1hbmQtc3RvcC1wcm9maWxlci1tdWx0aXBsZS10aW1lcy5odG1sIChsaW5lIDExOjEpCi0gICAg
ICBhbm9ueW1vdXNGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAy
OTozNykKLSAgICAgICAgIGluc2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMu
anMgKGxpbmUgMTc6MjYpCisgICBzdGFydFRlc3Qgc3RhcnQtYW5kLXN0b3AtcHJvZmlsZXItbXVs
dGlwbGUtdGltZXMuaHRtbCAobGluZSAxMDoxOSkKKyAgICAgIGFub255bW91c0Z1bmN0aW9uIHBy
b2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI5OjM0KQorICAgICAgICAgaW5zZXJ0
TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyMykKICAgICAg
ICAgICAgIGNyZWF0ZUVsZW1lbnQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIGNy
ZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICBhcHBlbmRDaGls
ZCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgZ2V0RWxlbWVudEJ5SWQgKG5vIGZp
bGUpIChsaW5lIDA6MCkKLSAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMu
anMgKGxpbmUgMToyMCkKKyAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMu
anMgKGxpbmUgMToxNykKIAogCiBQcm9maWxlIHRpdGxlOiBTdGFydCB0aGUgcHJvZmlsZXIgdGhl
IGZpcnN0IHRpbWUuCiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgc3RhcnRUZXN0
IHN0YXJ0LWFuZC1zdG9wLXByb2ZpbGVyLW11bHRpcGxlLXRpbWVzLmh0bWwgKGxpbmUgMTE6MSkK
LSAgICAgIGFub255bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChs
aW5lIDI5OjM3KQotICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291
cmNlcy5qcyAobGluZSAxNzoyNikKKyAgIHN0YXJ0VGVzdCBzdGFydC1hbmQtc3RvcC1wcm9maWxl
ci1tdWx0aXBsZS10aW1lcy5odG1sIChsaW5lIDEwOjE5KQorICAgICAgYW5vbnltb3VzRnVuY3Rp
b24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMjk6MzQpCisgICAgICAgICBp
bnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjIzKQog
ICAgICAgICAgICAgY3JlYXRlRWxlbWVudCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAg
ICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIGFwcGVu
ZENoaWxkIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICBnZXRFbGVtZW50QnlJZCAo
bm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291
cmNlcy5qcyAobGluZSAxOjIwKQorICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291
cmNlcy5qcyAobGluZSAxOjE3KQogCiBQcm9maWxlIHRpdGxlOiBTdGFydCB0aGUgcHJvZmlsZXIg
dGhlIHNlY29uZCB0aW1lLgogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0
VGVzdCBzdGFydC1hbmQtc3RvcC1wcm9maWxlci1tdWx0aXBsZS10aW1lcy5odG1sIChsaW5lIDEx
OjEpCi0gICAgICBhbm9ueW1vdXNGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5q
cyAobGluZSAyOTozNykKLSAgICAgICAgIGluc2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1KUy1y
ZXNvdXJjZXMuanMgKGxpbmUgMTc6MjYpCisgICBzdGFydFRlc3Qgc3RhcnQtYW5kLXN0b3AtcHJv
ZmlsZXItbXVsdGlwbGUtdGltZXMuaHRtbCAobGluZSAxMDoxOSkKKyAgICAgIGFub255bW91c0Z1
bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI5OjM0KQorICAgICAg
ICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoy
MykKICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAg
ICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICBh
cHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgZ2V0RWxlbWVudEJ5
SWQgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1y
ZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1y
ZXNvdXJjZXMuanMgKGxpbmUgMToxNykKIAogCiBQcm9maWxlIHRpdGxlOiBTdGFydCB0aGUgcHJv
ZmlsZXIgdGhlIGZpcnN0IHRpbWUuCiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAg
c3RhcnRUZXN0IHN0YXJ0LWFuZC1zdG9wLXByb2ZpbGVyLW11bHRpcGxlLXRpbWVzLmh0bWwgKGxp
bmUgMTE6MSkKLSAgICAgIGFub255bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3Vy
Y2VzLmpzIChsaW5lIDI5OjM3KQotICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0
LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyNikKKyAgIHN0YXJ0VGVzdCBzdGFydC1hbmQtc3Rv
cC1wcm9maWxlci1tdWx0aXBsZS10aW1lcy5odG1sIChsaW5lIDEwOjE5KQorICAgICAgYW5vbnlt
b3VzRnVuY3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMjk6MzQpCisg
ICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5l
IDE3OjIzKQogICAgICAgICAgICAgY3JlYXRlRWxlbWVudCAobm8gZmlsZSkgKGxpbmUgMDowKQog
ICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAg
ICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICBnZXRFbGVt
ZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0
LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0
LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiBQcm9maWxlIHRpdGxlOiBTdGFydCB0aGUg
cHJvZmlsZXIgdGhlIHNlY29uZCB0aW1lLgogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkK
LSAgIHN0YXJ0VGVzdCBzdGFydC1hbmQtc3RvcC1wcm9maWxlci1tdWx0aXBsZS10aW1lcy5odG1s
IChsaW5lIDExOjEpCi0gICAgICBhbm9ueW1vdXNGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpTLXJl
c291cmNlcy5qcyAobGluZSAyOTozNykKLSAgICAgICAgIGluc2VydE5ld1RleHQgcHJvZmlsZXIt
dGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjYpCisgICBzdGFydFRlc3Qgc3RhcnQtYW5k
LXN0b3AtcHJvZmlsZXItbXVsdGlwbGUtdGltZXMuaHRtbCAobGluZSAxMDoxOSkKKyAgICAgIGFu
b255bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI5OjM0
KQorICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAo
bGluZSAxNzoyMykKICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQgKG5vIGZpbGUpIChsaW5lIDA6
MCkKICAgICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAg
ICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgZ2V0
RWxlbWVudEJ5SWQgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAgIGVuZFRlc3QgcHJvZmlsZXIt
dGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAgICAgIGVuZFRlc3QgcHJvZmlsZXIt
dGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToxNykKIAogUHJvZmlsZSB0aXRsZTogU3RhcnQg
dGhlIHByb2ZpbGVyIHRoZSB0aGlyZCB0aW1lLgogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6
MCkKLSAgIHN0YXJ0VGVzdCBzdGFydC1hbmQtc3RvcC1wcm9maWxlci1tdWx0aXBsZS10aW1lcy5o
dG1sIChsaW5lIDExOjEpCi0gICAgICBhbm9ueW1vdXNGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpT
LXJlc291cmNlcy5qcyAobGluZSAyOTozNykKLSAgICAgICAgIGluc2VydE5ld1RleHQgcHJvZmls
ZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjYpCisgICBzdGFydFRlc3Qgc3RhcnQt
YW5kLXN0b3AtcHJvZmlsZXItbXVsdGlwbGUtdGltZXMuaHRtbCAobGluZSAxMDoxOSkKKyAgICAg
IGFub255bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI5
OjM0KQorICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5q
cyAobGluZSAxNzoyMykKICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQgKG5vIGZpbGUpIChsaW5l
IDA6MCkKICAgICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAwOjApCiAg
ICAgICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAg
Z2V0RWxlbWVudEJ5SWQgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAgIGVuZFRlc3QgcHJvZmls
ZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAgICAgIGVuZFRlc3QgcHJvZmls
ZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToxNykKIAogCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L3Byb2ZpbGVyL3N0YXJ0LWFuZC1zdG9wLXByb2ZpbGluZy1pbi10aGUtc2FtZS1mdW5j
dGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxl
ci9zdGFydC1hbmQtc3RvcC1wcm9maWxpbmctaW4tdGhlLXNhbWUtZnVuY3Rpb24tZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAxODY4MDgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3N0YXJ0
LWFuZC1zdG9wLXByb2ZpbGluZy1pbi10aGUtc2FtZS1mdW5jdGlvbi1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTQsNyArNCw3IEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxv
YWQgaXQgaW4gdGgKIAogUHJvZmlsZSB0aXRsZTogUHJvZmlsaW5nIEZyb20gQSBOZXN0ZWQgTG9j
YXRpb24KIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBzdGFydFRlc3Qgc3RhcnQt
YW5kLXN0b3AtcHJvZmlsaW5nLWluLXRoZS1zYW1lLWZ1bmN0aW9uLmh0bWwgKGxpbmUgMTE6MSkK
LSAgICAgIGZ1bmN0aW9uV2ljaFN0b3BzVGhlUHJvZmlsZXIgc3RhcnQtYW5kLXN0b3AtcHJvZmls
aW5nLWluLXRoZS1zYW1lLWZ1bmN0aW9uLmh0bWwgKGxpbmUgMTg6MSkKKyAgIHN0YXJ0VGVzdCBz
dGFydC1hbmQtc3RvcC1wcm9maWxpbmctaW4tdGhlLXNhbWUtZnVuY3Rpb24uaHRtbCAobGluZSAx
MDoxOSkKKyAgICAgIGZ1bmN0aW9uV2ljaFN0b3BzVGhlUHJvZmlsZXIgc3RhcnQtYW5kLXN0b3At
cHJvZmlsaW5nLWluLXRoZS1zYW1lLWZ1bmN0aW9uLmh0bWwgKGxpbmUgMTc6MzgpCiAKIApJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9zdG9wLXByb2ZpbGluZy1hZnRlci1zZXRUaW1l
b3V0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVy
L3N0b3AtcHJvZmlsaW5nLWFmdGVyLXNldFRpbWVvdXQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAx
ODY4MDgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3N0b3AtcHJvZmlsaW5nLWFmdGVy
LXNldFRpbWVvdXQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDEwICs0LDEwIEBA
IFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxvYWQgaXQgaW4gdGgKIAogUHJvZmlsZSB0aXRs
ZTogU3RvcCBwcm9maWxpbmcgZnJvbSBhIHRpbWVvdXQKIFRocmVhZF8xIChubyBmaWxlKSAobGlu
ZSAwOjApCi0gICBvbmxvYWQgc3RvcC1wcm9maWxpbmctYWZ0ZXItc2V0VGltZW91dC5odG1sIChs
aW5lIDIxOjUyKQotICAgICAgc3RhcnRUZXN0IHN0b3AtcHJvZmlsaW5nLWFmdGVyLXNldFRpbWVv
dXQuaHRtbCAobGluZSAxMzoxKQorICAgb25sb2FkIHN0b3AtcHJvZmlsaW5nLWFmdGVyLXNldFRp
bWVvdXQuaHRtbCAobGluZSAyMTo0NCkKKyAgICAgIHN0YXJ0VGVzdCBzdG9wLXByb2ZpbGluZy1h
ZnRlci1zZXRUaW1lb3V0Lmh0bWwgKGxpbmUgMTI6MTkpCiAgICAgICAgICBzZXRUaW1lb3V0IChu
byBmaWxlKSAobGluZSAwOjApCiAgICAocHJvZ3JhbSkgc3RvcC1wcm9maWxpbmctYWZ0ZXItc2V0
VGltZW91dC5odG1sIChsaW5lIDE6MSkKLSAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1y
ZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1y
ZXNvdXJjZXMuanMgKGxpbmUgMToxNykKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2Zp
bGVyL3N0b3AtdGhlbi1mdW5jdGlvbi1jYWxsLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3N0b3AtdGhlbi1mdW5jdGlvbi1jYWxsLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMTg2ODA4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9zdG9w
LXRoZW4tZnVuY3Rpb24tY2FsbC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUsNiAr
NSw2IEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxvYWQgaXQgaW4gdGgKIFByb2ZpbGUg
dGl0bGU6IFRlc3QKIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCiAgICAocHJvZ3JhbSkg
KG5vIGZpbGUpIChsaW5lIDE6MTYpCi0gICAgICB0ZXN0IHN0b3AtdGhlbi1mdW5jdGlvbi1jYWxs
Lmh0bWwgKGxpbmUgMTE6MjApCisgICAgICB0ZXN0IHN0b3AtdGhlbi1mdW5jdGlvbi1jYWxsLmh0
bWwgKGxpbmUgMTE6MTQpCiAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci90d28t
ZXhlY3V0aW9uLWNvbnRleHRzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L3Byb2ZpbGVyL3R3by1leGVjdXRpb24tY29udGV4dHMtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAxODY4MDgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3R3by1leGVjdXRpb24t
Y29udGV4dHMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDggKzQsOCBAQCBUbyBy
dW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBsb2FkIGl0IGluIHRoCiAKIFByb2ZpbGUgdGl0bGU6IFR3
byBFeGVjdXRpb24gQ29udGV4dHMKIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBz
dGFydFRlc3QgdHdvLWV4ZWN1dGlvbi1jb250ZXh0cy5odG1sIChsaW5lIDExOjEpCi0gICAgICBp
bnRlcm1lZGlhcnlGdW5jdGlvbiB0d28tZXhlY3V0aW9uLWNvbnRleHRzLmh0bWwgKGxpbmUgMTg6
MSkKLSAgICAgICAgIHRlc3RFbmQgdHdvLWV4ZWN1dGlvbi1jb250ZXh0cy5odG1sIChsaW5lIDMz
OjIwKQorICAgc3RhcnRUZXN0IHR3by1leGVjdXRpb24tY29udGV4dHMuaHRtbCAobGluZSAxMDox
OSkKKyAgICAgIGludGVybWVkaWFyeUZ1bmN0aW9uIHR3by1leGVjdXRpb24tY29udGV4dHMuaHRt
bCAobGluZSAxNzozMCkKKyAgICAgICAgIHRlc3RFbmQgdHdvLWV4ZWN1dGlvbi1jb250ZXh0cy5o
dG1sIChsaW5lIDMzOjE3KQogCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvdXNl
ci1kZWZpbmVkLWZ1bmN0aW9uLWNhbGxzLWJ1aWx0LWluLWZ1bmN0aW9ucy1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci91c2VyLWRlZmluZWQtZnVu
Y3Rpb24tY2FsbHMtYnVpbHQtaW4tZnVuY3Rpb25zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2
ODA4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci91c2VyLWRlZmluZWQtZnVuY3Rpb24t
Y2FsbHMtYnVpbHQtaW4tZnVuY3Rpb25zLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
NiwxMSArNiwxMSBAQCBUaGlzIGlzIGluc2VydGVkIFRleHQKIAogUHJvZmlsZSB0aXRsZTogVXNl
ciBkZWZpbmVkIGZ1bmN0aW9uIGNhbGxlcyBidWlsdC1pbiBmdW5jdGlvbnMKIFRocmVhZF8xIChu
byBmaWxlKSAobGluZSAwOjApCi0gICBzdGFydFRlc3QgdXNlci1kZWZpbmVkLWZ1bmN0aW9uLWNh
bGxzLWJ1aWx0LWluLWZ1bmN0aW9ucy5odG1sIChsaW5lIDExOjEpCisgICBzdGFydFRlc3QgdXNl
ci1kZWZpbmVkLWZ1bmN0aW9uLWNhbGxzLWJ1aWx0LWluLWZ1bmN0aW9ucy5odG1sIChsaW5lIDEw
OjE5KQogICAgICAgY3JlYXRlRWxlbWVudCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgY3Jl
YXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgIGFwcGVuZENoaWxkIChubyBm
aWxlKSAobGluZSAwOjApCiAgICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMDow
KQotICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIw
KQorICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3
KQogCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvd2luZG93LWRvdC1ldmFsLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3dpbmRv
dy1kb3QtZXZhbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4NjgwOCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvcHJvZmlsZXIvd2luZG93LWRvdC1ldmFsLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtNCwxMyArNCwxMyBAQCBUbyBydW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBsb2FkIGl0IGlu
IHRoCiAKIFByb2ZpbGUgdGl0bGU6IENhbGwgd2luZG93LmV2YWwoKQogVGhyZWFkXzEgKG5vIGZp
bGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCB3aW5kb3ctZG90LWV2YWwuaHRtbCAobGluZSAx
MToxKQotICAgICAgZXZhbEZ1bmN0aW9uIChubyBmaWxlKSAobGluZSAxOjI1KQotICAgICAgICAg
aW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyNikK
KyAgIHN0YXJ0VGVzdCB3aW5kb3ctZG90LWV2YWwuaHRtbCAobGluZSAxMDoxOSkKKyAgICAgIGV2
YWxGdW5jdGlvbiAobm8gZmlsZSkgKGxpbmUgMToyMikKKyAgICAgICAgIGluc2VydE5ld1RleHQg
cHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjMpCiAgICAgICAgICAgICBj
cmVhdGVFbGVtZW50IChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICBjcmVhdGVUZXh0
Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgYXBwZW5kQ2hpbGQgKG5vIGZp
bGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIGdldEVsZW1lbnRCeUlkIChubyBmaWxlKSAobGlu
ZSAwOjApCi0gICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5l
IDE6MjApCisgICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5l
IDE6MTcpCiAKIApJbmRleDogTGF5b3V0VGVzdHMvanMvZG9tL3NjcmlwdC1zdGFydC1lbmQtbG9j
YXRpb25zLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9kb20vc2Ny
aXB0LXN0YXJ0LWVuZC1sb2NhdGlvbnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY4MDgpCisr
KyBMYXlvdXRUZXN0cy9qcy9kb20vc2NyaXB0LXN0YXJ0LWVuZC1sb2NhdGlvbnMtZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC01LDI3MyArNSwyNzMgQEAgcHJvZ3JhbSB7IDIzOjkgLSAy
Mzo1MCB9CiBwcm9ncmFtIHsgMjM6NjggLSAyMzoxMDkgfQogcHJvZ3JhbSB7IDI1OjkgLSAyNjox
IH0KIHByb2dyYW0geyAyNzoxMyAtIDI4OjEgfQotZnVuY3Rpb24gImhmMSIgeyAzMDoyNCAtIDMw
OjM4IH0KLWZ1bmN0aW9uICJoZjIiIHsgMzE6MjggLSAzMTo0MiB9Ci1mdW5jdGlvbiAiaGYzIiB7
IDMyOjMyIC0gMzI6NDYgfQotZnVuY3Rpb24gImhmNCIgeyAzNDoyNCAtIDM2OjkgfQotZnVuY3Rp
b24gImhmNSIgeyAzNzoyOCAtIDM5OjkgfQotZnVuY3Rpb24gImhmNiIgeyA0MDozMiAtIDQyOjkg
fQotZnVuY3Rpb24gImhmNyIgeyA0NToxNiAtIDQ3OjUgfQotZnVuY3Rpb24gImhmOCIgeyA0OToz
NSAtIDQ5OjQ1IH0KLWZ1bmN0aW9uICJoZjkiIHsgNDk6OTcgLSA0OToxMDcgfQorZnVuY3Rpb24g
ImhmMSIgeyAzMDoyMSAtIDMwOjM4IH0KK2Z1bmN0aW9uICJoZjIiIHsgMzE6MjUgLSAzMTo0MiB9
CitmdW5jdGlvbiAiaGYzIiB7IDMyOjI5IC0gMzI6NDYgfQorZnVuY3Rpb24gImhmNCIgeyAzNDoy
MSAtIDM2OjkgfQorZnVuY3Rpb24gImhmNSIgeyAzNzoyNSAtIDM5OjkgfQorZnVuY3Rpb24gImhm
NiIgeyA0MDoyOSAtIDQyOjkgfQorZnVuY3Rpb24gImhmNyIgeyA0NToxMyAtIDQ3OjUgfQorZnVu
Y3Rpb24gImhmOCIgeyA0OTozMiAtIDQ5OjQ1IH0KK2Z1bmN0aW9uICJoZjkiIHsgNDk6OTQgLSA0
OToxMDcgfQogCiBwcm9ncmFtIHsgMToxIC0gNDc0OjEgfQogCiAgIE9uIGZpcnN0IGxpbmU6Ci1m
dW5jdGlvbiAiZjAiIHsgMToxMTUgLSAxOjI2NiB9Ci1mdW5jdGlvbiAiZjBhIiB7IDE6MTQyIC0g
MToyNTcgfQotZnVuY3Rpb24gImYwYiIgeyAxOjE3MCAtIDE6MjQ4IH0KLWV2YWwgeyAxOjEgLSAx
OjU2IH0KLWZ1bmN0aW9uICJ4MCIgeyAxOjI5OCAtIDE6NDc2IH0KLWZ1bmN0aW9uICJ4MGEiIHsg
MTozMzAgLSAxOjQ2NiB9Ci1mdW5jdGlvbiAieDBiIiB7IDE6MzY0IC0gMTo0NTYgfQorZnVuY3Rp
b24gImYwIiB7IDE6MTEyIC0gMToyNjYgfQorZnVuY3Rpb24gImYwYSIgeyAxOjEzOSAtIDE6MjU3
IH0KK2Z1bmN0aW9uICJmMGIiIHsgMToxNjcgLSAxOjI0OCB9CitldmFsIHsgMToxIC0gMTo1NiB9
CitmdW5jdGlvbiAieDAiIHsgMToyOTIgLSAxOjQ3NiB9CitmdW5jdGlvbiAieDBhIiB7IDE6MzI3
IC0gMTo0NjYgfQorZnVuY3Rpb24gIngwYiIgeyAxOjM2MSAtIDE6NDU2IH0KIGV2YWwgeyAxOjEg
LSAxOjU2IH0KIAogICBGdW5jdGlvbnMgRGVjbGFyYXRpb25zIGluIGEgZnVuY3Rpb246Ci1mdW5j
dGlvbiAiZjEiIHsgOToyMiAtIDk6MTEzIH0KK2Z1bmN0aW9uICJmMSIgeyA5OjE2IC0gOToxMTMg
fQogZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gImYyIiB7IDEyOjIyIC0gMTY6NSB9Ci1m
dW5jdGlvbiAiZjJhIiB7IDE0OjI0IC0gMTQ6MTE2IH0KK2Z1bmN0aW9uICJmMiIgeyAxMjoxNiAt
IDE2OjUgfQorZnVuY3Rpb24gImYyYSIgeyAxNDoyMSAtIDE0OjExNiB9CiBldmFsIHsgMToxIC0g
MTo1NiB9Ci1mdW5jdGlvbiAiZjMiIHsgMTk6MjIgLSAzMTo1IH0KLWZ1bmN0aW9uICJmM2EiIHsg
MjE6MjQgLSAyOTo5IH0KLWZ1bmN0aW9uICJmM2IiIHsgMjM6MjggLSAyNzoxMyB9Ci1ldmFsIHsg
MToxIC0gMTo1NiB9Ci1mdW5jdGlvbiAiZjQiIHsgMzQ6MjIgLSAzNDo3MSB9Ci1mdW5jdGlvbiAi
ZjRhIiB7IDM0OjQ5IC0gMzQ6NTAgfQotZnVuY3Rpb24gImY1IiB7IDM2OjIyIC0gMzY6MTUxIH0K
LWZ1bmN0aW9uICJmNWEiIHsgMzY6NDkgLSAzNjoxNDEgfQotZXZhbCB7IDE6MSAtIDE6NTYgfQot
ZnVuY3Rpb24gImY2IiB7IDM4OjIyIC0gMzg6MTg5IH0KLWZ1bmN0aW9uICJmNmEiIHsgMzg6NDkg
LSAzODoxNzkgfQotZnVuY3Rpb24gImY2YiIgeyAzODo3NyAtIDM4OjE2OSB9CitmdW5jdGlvbiAi
ZjMiIHsgMTk6MTYgLSAzMTo1IH0KK2Z1bmN0aW9uICJmM2EiIHsgMjE6MjEgLSAyOTo5IH0KK2Z1
bmN0aW9uICJmM2IiIHsgMjM6MjUgLSAyNzoxMyB9CitldmFsIHsgMToxIC0gMTo1NiB9CitmdW5j
dGlvbiAiZjQiIHsgMzQ6MTYgLSAzNDo3MSB9CitmdW5jdGlvbiAiZjRhIiB7IDM0OjQ2IC0gMzQ6
NTAgfQorZnVuY3Rpb24gImY1IiB7IDM2OjE2IC0gMzY6MTUxIH0KK2Z1bmN0aW9uICJmNWEiIHsg
MzY6NDYgLSAzNjoxNDEgfQorZXZhbCB7IDE6MSAtIDE6NTYgfQorZnVuY3Rpb24gImY2IiB7IDM4
OjE2IC0gMzg6MTg5IH0KK2Z1bmN0aW9uICJmNmEiIHsgMzg6NDYgLSAzODoxNzkgfQorZnVuY3Rp
b24gImY2YiIgeyAzODo3NCAtIDM4OjE2OSB9CiBldmFsIHsgMToxIC0gMTo1NiB9CiAKICAgSW5k
ZW50ZWQgRnVuY3Rpb25zIERlY2xhcmF0aW9ucyBpbiBhIGZ1bmN0aW9uOgotZnVuY3Rpb24gImZp
MSIgeyA0MzoyNyAtIDQzOjExOSB9CitmdW5jdGlvbiAiZmkxIiB7IDQzOjIxIC0gNDM6MTE5IH0K
IGV2YWwgeyAxOjEgLSAxOjU2IH0KLWZ1bmN0aW9uICJmaTIiIHsgNDY6MjcgLSA1MDo5IH0KLWZ1
bmN0aW9uICJmaTJhIiB7IDQ4OjI5IC0gNDg6MTIyIH0KK2Z1bmN0aW9uICJmaTIiIHsgNDY6MjEg
LSA1MDo5IH0KK2Z1bmN0aW9uICJmaTJhIiB7IDQ4OjI2IC0gNDg6MTIyIH0KIGV2YWwgeyAxOjEg
LSAxOjU2IH0KLWZ1bmN0aW9uICJmaTMiIHsgNTM6MjcgLSA2NTo5IH0KLWZ1bmN0aW9uICJmaTNh
IiB7IDU1OjI5IC0gNjM6MTMgfQotZnVuY3Rpb24gImZpM2IiIHsgNTc6MzMgLSA2MToxNyB9Ci1l
dmFsIHsgMToxIC0gMTo1NiB9Ci1mdW5jdGlvbiAiZmk0IiB7IDY4OjI3IC0gNjg6ODAgfQotZnVu
Y3Rpb24gImZpNGEiIHsgNjg6NTYgLSA2ODo1NyB9Ci1mdW5jdGlvbiAiZmk1IiB7IDcwOjI3IC0g
NzA6MTYwIH0KLWZ1bmN0aW9uICJmaTVhIiB7IDcwOjU2IC0gNzA6MTQ5IH0KLWV2YWwgeyAxOjEg
LSAxOjU2IH0KLWZ1bmN0aW9uICJmaTYiIHsgNzI6MjcgLSA3MjoyMDEgfQotZnVuY3Rpb24gImZp
NmEiIHsgNzI6NTYgLSA3MjoxOTAgfQotZnVuY3Rpb24gImZpNmIiIHsgNzI6ODYgLSA3MjoxNzkg
fQorZnVuY3Rpb24gImZpMyIgeyA1MzoyMSAtIDY1OjkgfQorZnVuY3Rpb24gImZpM2EiIHsgNTU6
MjYgLSA2MzoxMyB9CitmdW5jdGlvbiAiZmkzYiIgeyA1NzozMCAtIDYxOjE3IH0KK2V2YWwgeyAx
OjEgLSAxOjU2IH0KK2Z1bmN0aW9uICJmaTQiIHsgNjg6MjEgLSA2ODo4MCB9CitmdW5jdGlvbiAi
Zmk0YSIgeyA2ODo1MyAtIDY4OjU3IH0KK2Z1bmN0aW9uICJmaTUiIHsgNzA6MjEgLSA3MDoxNjAg
fQorZnVuY3Rpb24gImZpNWEiIHsgNzA6NTMgLSA3MDoxNDkgfQorZXZhbCB7IDE6MSAtIDE6NTYg
fQorZnVuY3Rpb24gImZpNiIgeyA3MjoyMSAtIDcyOjIwMSB9CitmdW5jdGlvbiAiZmk2YSIgeyA3
Mjo1MyAtIDcyOjE5MCB9CitmdW5jdGlvbiAiZmk2YiIgeyA3Mjo4MyAtIDcyOjE3OSB9CiBldmFs
IHsgMToxIC0gMTo1NiB9CiAKICAgRnVuY3Rpb25zIEV4cHJlc3Npb25zIGluIGEgZnVuY3Rpb246
Ci1mdW5jdGlvbiAieDEiIHsgNzc6MjggLSA3NzoxMTkgfQorZnVuY3Rpb24gIngxIiB7IDc3OjIy
IC0gNzc6MTE5IH0KIGV2YWwgeyAxOjEgLSAxOjU2IH0KLWZ1bmN0aW9uICJ4MiIgeyA4MDoyOCAt
IDg0OjUgfQotZnVuY3Rpb24gIngyYSIgeyA4MjozMCAtIDgyOjEyMiB9CitmdW5jdGlvbiAieDIi
IHsgODA6MjIgLSA4NDo1IH0KK2Z1bmN0aW9uICJ4MmEiIHsgODI6MjcgLSA4MjoxMjIgfQogZXZh
bCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gIngzIiB7IDg3OjI4IC0gOTk6NSB9Ci1mdW5jdGlv
biAieDNhIiB7IDg5OjMwIC0gOTc6OSB9Ci1mdW5jdGlvbiAieDNiIiB7IDkxOjM0IC0gOTU6MTMg
fQotZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gIng0IiB7IDEwMjoyOCAtIDEwMjo4MyB9
Ci1mdW5jdGlvbiAieDRhIiB7IDEwMjo2MSAtIDEwMjo2MiB9Ci1mdW5jdGlvbiAieDUiIHsgMTA0
OjI4IC0gMTA0OjE2MyB9Ci1mdW5jdGlvbiAieDVhIiB7IDEwNDo2MSAtIDEwNDoxNTMgfQotZXZh
bCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gIng2IiB7IDEwNjoyOCAtIDEwNjoyMDcgfQotZnVu
Y3Rpb24gIng2YSIgeyAxMDY6NjEgLSAxMDY6MTk3IH0KLWZ1bmN0aW9uICJ4NmIiIHsgMTA2Ojk1
IC0gMTA2OjE4NyB9CitmdW5jdGlvbiAieDMiIHsgODc6MjIgLSA5OTo1IH0KK2Z1bmN0aW9uICJ4
M2EiIHsgODk6MjcgLSA5Nzo5IH0KK2Z1bmN0aW9uICJ4M2IiIHsgOTE6MzEgLSA5NToxMyB9Citl
dmFsIHsgMToxIC0gMTo1NiB9CitmdW5jdGlvbiAieDQiIHsgMTAyOjIyIC0gMTAyOjgzIH0KK2Z1
bmN0aW9uICJ4NGEiIHsgMTAyOjU4IC0gMTAyOjYyIH0KK2Z1bmN0aW9uICJ4NSIgeyAxMDQ6MjIg
LSAxMDQ6MTYzIH0KK2Z1bmN0aW9uICJ4NWEiIHsgMTA0OjU4IC0gMTA0OjE1MyB9CitldmFsIHsg
MToxIC0gMTo1NiB9CitmdW5jdGlvbiAieDYiIHsgMTA2OjIyIC0gMTA2OjIwNyB9CitmdW5jdGlv
biAieDZhIiB7IDEwNjo1OCAtIDEwNjoxOTcgfQorZnVuY3Rpb24gIng2YiIgeyAxMDY6OTIgLSAx
MDY6MTg3IH0KIGV2YWwgeyAxOjEgLSAxOjU2IH0KIAogICBJbmRlbnRlZCBGdW5jdGlvbnMgRXhw
cmVzc2lvbnMgaW4gYSBmdW5jdGlvbjoKLWZ1bmN0aW9uICJ4aTEiIHsgMTExOjMzIC0gMTExOjEy
NSB9CitmdW5jdGlvbiAieGkxIiB7IDExMToyNyAtIDExMToxMjUgfQogZXZhbCB7IDE6MSAtIDE6
NTYgfQotZnVuY3Rpb24gInhpMiIgeyAxMTQ6MzMgLSAxMTg6OSB9Ci1mdW5jdGlvbiAieGkyYSIg
eyAxMTY6MzUgLSAxMTY6MTI4IH0KK2Z1bmN0aW9uICJ4aTIiIHsgMTE0OjI3IC0gMTE4OjkgfQor
ZnVuY3Rpb24gInhpMmEiIHsgMTE2OjMyIC0gMTE2OjEyOCB9CiBldmFsIHsgMToxIC0gMTo1NiB9
Ci1mdW5jdGlvbiAieGkzIiB7IDEyMTozMyAtIDEzMzo5IH0KLWZ1bmN0aW9uICJ4aTNhIiB7IDEy
MzozNSAtIDEzMToxMyB9Ci1mdW5jdGlvbiAieGkzYiIgeyAxMjU6MzkgLSAxMjk6MTcgfQotZXZh
bCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gInhpNCIgeyAxMzY6MzMgLSAxMzY6OTIgfQotZnVu
Y3Rpb24gInhpNGEiIHsgMTM2OjY4IC0gMTM2OjY5IH0KLWZ1bmN0aW9uICJ4aTUiIHsgMTM4OjMz
IC0gMTM4OjE3MiB9Ci1mdW5jdGlvbiAieGk1YSIgeyAxMzg6NjggLSAxMzg6MTYxIH0KLWV2YWwg
eyAxOjEgLSAxOjU2IH0KLWZ1bmN0aW9uICJ4aTYiIHsgMTQwOjMzIC0gMTQwOjIxOSB9Ci1mdW5j
dGlvbiAieGk2YSIgeyAxNDA6NjggLSAxNDA6MjA4IH0KLWZ1bmN0aW9uICJ4aTZiIiB7IDE0MDox
MDQgLSAxNDA6MTk3IH0KK2Z1bmN0aW9uICJ4aTMiIHsgMTIxOjI3IC0gMTMzOjkgfQorZnVuY3Rp
b24gInhpM2EiIHsgMTIzOjMyIC0gMTMxOjEzIH0KK2Z1bmN0aW9uICJ4aTNiIiB7IDEyNTozNiAt
IDEyOToxNyB9CitldmFsIHsgMToxIC0gMTo1NiB9CitmdW5jdGlvbiAieGk0IiB7IDEzNjoyNyAt
IDEzNjo5MiB9CitmdW5jdGlvbiAieGk0YSIgeyAxMzY6NjUgLSAxMzY6NjkgfQorZnVuY3Rpb24g
InhpNSIgeyAxMzg6MjcgLSAxMzg6MTcyIH0KK2Z1bmN0aW9uICJ4aTVhIiB7IDEzODo2NSAtIDEz
ODoxNjEgfQorZXZhbCB7IDE6MSAtIDE6NTYgfQorZnVuY3Rpb24gInhpNiIgeyAxNDA6MjcgLSAx
NDA6MjE5IH0KK2Z1bmN0aW9uICJ4aTZhIiB7IDE0MDo2NSAtIDE0MDoyMDggfQorZnVuY3Rpb24g
InhpNmIiIHsgMTQwOjEwMSAtIDE0MDoxOTcgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQogCiAgIEFu
b255bW91cyBGdW5jdGlvbiBEZWNsYXJhdGlvbiBpbiBhIGZ1bmN0aW9uOgotZnVuY3Rpb24gIiIg
eyAxNDY6NTggLSAxNTE6NSB9CitmdW5jdGlvbiAiIiB7IDE0Njo1MiAtIDE1MTo1IH0KIGV2YWwg
eyAxOjEgLSAxOjU2IH0KIAogICBHbG9iYWwgZXZhbDoKIGV2YWwgeyAxOjEgLSAxOjU2IH0KIAog
ICBHbG9iYWwgRnVuY3Rpb25zIERlY2xhcmF0aW9uczoKLWZ1bmN0aW9uICJnZjEiIHsgMTYxOjE5
IC0gMTYxOjExMSB9CitmdW5jdGlvbiAiZ2YxIiB7IDE2MToxMyAtIDE2MToxMTEgfQogZXZhbCB7
IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gImdmMiIgeyAxNjQ6MTkgLSAxNjg6MSB9Ci1mdW5jdGlv
biAiZ2YyYSIgeyAxNjY6MjEgLSAxNjY6MTE0IH0KK2Z1bmN0aW9uICJnZjIiIHsgMTY0OjEzIC0g
MTY4OjEgfQorZnVuY3Rpb24gImdmMmEiIHsgMTY2OjE4IC0gMTY2OjExNCB9CiBldmFsIHsgMTox
IC0gMTo1NiB9Ci1mdW5jdGlvbiAiZ2YzIiB7IDE3MToxOSAtIDE4MzoxIH0KLWZ1bmN0aW9uICJn
ZjNhIiB7IDE3MzoyMSAtIDE4MTo1IH0KLWZ1bmN0aW9uICJnZjNiIiB7IDE3NToyNSAtIDE3OTo5
IH0KLWV2YWwgeyAxOjEgLSAxOjU2IH0KLWZ1bmN0aW9uICJnZjQiIHsgMTg2OjE5IC0gMTg2Ojcy
IH0KLWZ1bmN0aW9uICJnZjRhIiB7IDE4Njo0OCAtIDE4Njo0OSB9Ci1mdW5jdGlvbiAiZ2Y1IiB7
IDE4ODoxOSAtIDE4ODoxNTIgfQotZnVuY3Rpb24gImdmNWEiIHsgMTg4OjQ4IC0gMTg4OjE0MSB9
Ci1ldmFsIHsgMToxIC0gMTo1NiB9Ci1mdW5jdGlvbiAiZ2Y2IiB7IDE5MDoxOSAtIDE5MDoxOTMg
fQotZnVuY3Rpb24gImdmNmEiIHsgMTkwOjQ4IC0gMTkwOjE4MiB9Ci1mdW5jdGlvbiAiZ2Y2YiIg
eyAxOTA6NzggLSAxOTA6MTcxIH0KK2Z1bmN0aW9uICJnZjMiIHsgMTcxOjEzIC0gMTgzOjEgfQor
ZnVuY3Rpb24gImdmM2EiIHsgMTczOjE4IC0gMTgxOjUgfQorZnVuY3Rpb24gImdmM2IiIHsgMTc1
OjIyIC0gMTc5OjkgfQorZXZhbCB7IDE6MSAtIDE6NTYgfQorZnVuY3Rpb24gImdmNCIgeyAxODY6
MTMgLSAxODY6NzIgfQorZnVuY3Rpb24gImdmNGEiIHsgMTg2OjQ1IC0gMTg2OjQ5IH0KK2Z1bmN0
aW9uICJnZjUiIHsgMTg4OjEzIC0gMTg4OjE1MiB9CitmdW5jdGlvbiAiZ2Y1YSIgeyAxODg6NDUg
LSAxODg6MTQxIH0KK2V2YWwgeyAxOjEgLSAxOjU2IH0KK2Z1bmN0aW9uICJnZjYiIHsgMTkwOjEz
IC0gMTkwOjE5MyB9CitmdW5jdGlvbiAiZ2Y2YSIgeyAxOTA6NDUgLSAxOTA6MTgyIH0KK2Z1bmN0
aW9uICJnZjZiIiB7IDE5MDo3NSAtIDE5MDoxNzEgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQogCiAg
IEluZGVudGVkIEdsb2JhbCBGdW5jdGlvbnMgRGVjbGFyYXRpb25zOgotZnVuY3Rpb24gImdmaTEi
IHsgMTk1OjI0IC0gMTk1OjExNyB9CitmdW5jdGlvbiAiZ2ZpMSIgeyAxOTU6MTggLSAxOTU6MTE3
IH0KIGV2YWwgeyAxOjEgLSAxOjU2IH0KLWZ1bmN0aW9uICJnZmkyIiB7IDE5ODoyNCAtIDIwMjo1
IH0KLWZ1bmN0aW9uICJnZmkyYSIgeyAyMDA6MjYgLSAyMDA6MTIwIH0KK2Z1bmN0aW9uICJnZmky
IiB7IDE5ODoxOCAtIDIwMjo1IH0KK2Z1bmN0aW9uICJnZmkyYSIgeyAyMDA6MjMgLSAyMDA6MTIw
IH0KIGV2YWwgeyAxOjEgLSAxOjU2IH0KLWZ1bmN0aW9uICJnZmkzIiB7IDIwNToyNCAtIDIxNzo1
IH0KLWZ1bmN0aW9uICJnZmkzYSIgeyAyMDc6MjYgLSAyMTU6OSB9Ci1mdW5jdGlvbiAiZ2ZpM2Ii
IHsgMjA5OjMwIC0gMjEzOjEzIH0KLWV2YWwgeyAxOjEgLSAxOjU2IH0KLWZ1bmN0aW9uICJnZmk0
IiB7IDIyMDoyNCAtIDIyMDo4MSB9Ci1mdW5jdGlvbiAiZ2ZpNGEiIHsgMjIwOjU1IC0gMjIwOjU2
IH0KLWZ1bmN0aW9uICJnZmk1IiB7IDIyMjoyNCAtIDIyMjoxNjEgfQotZnVuY3Rpb24gImdmaTVh
IiB7IDIyMjo1NSAtIDIyMjoxNDkgfQotZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gImdm
aTYiIHsgMjI0OjI0IC0gMjI0OjIwNSB9Ci1mdW5jdGlvbiAiZ2ZpNmEiIHsgMjI0OjU1IC0gMjI0
OjE5MyB9Ci1mdW5jdGlvbiAiZ2ZpNmIiIHsgMjI0Ojg3IC0gMjI0OjE4MSB9CitmdW5jdGlvbiAi
Z2ZpMyIgeyAyMDU6MTggLSAyMTc6NSB9CitmdW5jdGlvbiAiZ2ZpM2EiIHsgMjA3OjIzIC0gMjE1
OjkgfQorZnVuY3Rpb24gImdmaTNiIiB7IDIwOToyNyAtIDIxMzoxMyB9CitldmFsIHsgMToxIC0g
MTo1NiB9CitmdW5jdGlvbiAiZ2ZpNCIgeyAyMjA6MTggLSAyMjA6ODEgfQorZnVuY3Rpb24gImdm
aTRhIiB7IDIyMDo1MiAtIDIyMDo1NiB9CitmdW5jdGlvbiAiZ2ZpNSIgeyAyMjI6MTggLSAyMjI6
MTYxIH0KK2Z1bmN0aW9uICJnZmk1YSIgeyAyMjI6NTIgLSAyMjI6MTQ5IH0KK2V2YWwgeyAxOjEg
LSAxOjU2IH0KK2Z1bmN0aW9uICJnZmk2IiB7IDIyNDoxOCAtIDIyNDoyMDUgfQorZnVuY3Rpb24g
ImdmaTZhIiB7IDIyNDo1MiAtIDIyNDoxOTMgfQorZnVuY3Rpb24gImdmaTZiIiB7IDIyNDo4NCAt
IDIyNDoxODEgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQogCiAgIEdsb2JhbCBGdW5jdGlvbnMgRXhw
cmVzc2lvbnM6Ci1mdW5jdGlvbiAiZ3gxIiB7IDIyOToyNSAtIDIyOToxMTcgfQorZnVuY3Rpb24g
Imd4MSIgeyAyMjk6MTkgLSAyMjk6MTE3IH0KIGV2YWwgeyAxOjEgLSAxOjU2IH0KLWZ1bmN0aW9u
ICJneDIiIHsgMjMyOjI1IC0gMjM2OjEgfQotZnVuY3Rpb24gImd4MmEiIHsgMjM0OjI3IC0gMjM0
OjEyMCB9CitmdW5jdGlvbiAiZ3gyIiB7IDIzMjoxOSAtIDIzNjoxIH0KK2Z1bmN0aW9uICJneDJh
IiB7IDIzNDoyNCAtIDIzNDoxMjAgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gImd4
MyIgeyAyMzk6MjUgLSAyNTE6MSB9Ci1mdW5jdGlvbiAiZ3gzYSIgeyAyNDE6MjcgLSAyNDk6NSB9
Ci1mdW5jdGlvbiAiZ3gzYiIgeyAyNDM6MzEgLSAyNDc6OSB9Ci1ldmFsIHsgMToxIC0gMTo1NiB9
Ci1mdW5jdGlvbiAiZ3g0IiB7IDI1NDoyNSAtIDI1NDo4NCB9Ci1mdW5jdGlvbiAiZ3g0YSIgeyAy
NTQ6NjAgLSAyNTQ6NjEgfQotZnVuY3Rpb24gImd4NSIgeyAyNTY6MjUgLSAyNTY6MTY0IH0KLWZ1
bmN0aW9uICJneDVhIiB7IDI1Njo2MCAtIDI1NjoxNTMgfQotZXZhbCB7IDE6MSAtIDE6NTYgfQot
ZnVuY3Rpb24gImd4NiIgeyAyNTg6MjUgLSAyNTg6MjExIH0KLWZ1bmN0aW9uICJneDZhIiB7IDI1
ODo2MCAtIDI1ODoyMDAgfQotZnVuY3Rpb24gImd4NmIiIHsgMjU4Ojk2IC0gMjU4OjE4OSB9Citm
dW5jdGlvbiAiZ3gzIiB7IDIzOToxOSAtIDI1MToxIH0KK2Z1bmN0aW9uICJneDNhIiB7IDI0MToy
NCAtIDI0OTo1IH0KK2Z1bmN0aW9uICJneDNiIiB7IDI0MzoyOCAtIDI0Nzo5IH0KK2V2YWwgeyAx
OjEgLSAxOjU2IH0KK2Z1bmN0aW9uICJneDQiIHsgMjU0OjE5IC0gMjU0Ojg0IH0KK2Z1bmN0aW9u
ICJneDRhIiB7IDI1NDo1NyAtIDI1NDo2MSB9CitmdW5jdGlvbiAiZ3g1IiB7IDI1NjoxOSAtIDI1
NjoxNjQgfQorZnVuY3Rpb24gImd4NWEiIHsgMjU2OjU3IC0gMjU2OjE1MyB9CitldmFsIHsgMTox
IC0gMTo1NiB9CitmdW5jdGlvbiAiZ3g2IiB7IDI1ODoxOSAtIDI1ODoyMTEgfQorZnVuY3Rpb24g
Imd4NmEiIHsgMjU4OjU3IC0gMjU4OjIwMCB9CitmdW5jdGlvbiAiZ3g2YiIgeyAyNTg6OTMgLSAy
NTg6MTg5IH0KIGV2YWwgeyAxOjEgLSAxOjU2IH0KIAogICBJbmRlbnRlZCBGdW5jdGlvbnMgRGVj
bGFyYXRpb25zOgotZnVuY3Rpb24gImd4aTEiIHsgMjYzOjMwIC0gMjYzOjEyMyB9CitmdW5jdGlv
biAiZ3hpMSIgeyAyNjM6MjQgLSAyNjM6MTIzIH0KIGV2YWwgeyAxOjEgLSAxOjU2IH0KLWZ1bmN0
aW9uICJneGkyIiB7IDI2NjozMCAtIDI3MDo1IH0KLWZ1bmN0aW9uICJneGkyYSIgeyAyNjg6MzIg
LSAyNjg6MTI2IH0KK2Z1bmN0aW9uICJneGkyIiB7IDI2NjoyNCAtIDI3MDo1IH0KK2Z1bmN0aW9u
ICJneGkyYSIgeyAyNjg6MjkgLSAyNjg6MTI2IH0KIGV2YWwgeyAxOjEgLSAxOjU2IH0KLWZ1bmN0
aW9uICJneGkzIiB7IDI3MzozMCAtIDI4NTo1IH0KLWZ1bmN0aW9uICJneGkzYSIgeyAyNzU6MzIg
LSAyODM6OSB9Ci1mdW5jdGlvbiAiZ3hpM2IiIHsgMjc3OjM2IC0gMjgxOjEzIH0KLWV2YWwgeyAx
OjEgLSAxOjU2IH0KLWZ1bmN0aW9uICJneGk0IiB7IDI4ODozMCAtIDI4ODo5MyB9Ci1mdW5jdGlv
biAiZ3hpNGEiIHsgMjg4OjY3IC0gMjg4OjY4IH0KLWZ1bmN0aW9uICJneGk1IiB7IDI5MDozMCAt
IDI5MDoxNzMgfQotZnVuY3Rpb24gImd4aTVhIiB7IDI5MDo2NyAtIDI5MDoxNjEgfQotZXZhbCB7
IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gImd4aTYiIHsgMjkyOjMwIC0gMjkyOjIyMyB9Ci1mdW5j
dGlvbiAiZ3hpNmEiIHsgMjkyOjY3IC0gMjkyOjIxMSB9Ci1mdW5jdGlvbiAiZ3hpNmIiIHsgMjky
OjEwNSAtIDI5MjoxOTkgfQorZnVuY3Rpb24gImd4aTMiIHsgMjczOjI0IC0gMjg1OjUgfQorZnVu
Y3Rpb24gImd4aTNhIiB7IDI3NToyOSAtIDI4Mzo5IH0KK2Z1bmN0aW9uICJneGkzYiIgeyAyNzc6
MzMgLSAyODE6MTMgfQorZXZhbCB7IDE6MSAtIDE6NTYgfQorZnVuY3Rpb24gImd4aTQiIHsgMjg4
OjI0IC0gMjg4OjkzIH0KK2Z1bmN0aW9uICJneGk0YSIgeyAyODg6NjQgLSAyODg6NjggfQorZnVu
Y3Rpb24gImd4aTUiIHsgMjkwOjI0IC0gMjkwOjE3MyB9CitmdW5jdGlvbiAiZ3hpNWEiIHsgMjkw
OjY0IC0gMjkwOjE2MSB9CitldmFsIHsgMToxIC0gMTo1NiB9CitmdW5jdGlvbiAiZ3hpNiIgeyAy
OTI6MjQgLSAyOTI6MjIzIH0KK2Z1bmN0aW9uICJneGk2YSIgeyAyOTI6NjQgLSAyOTI6MjExIH0K
K2Z1bmN0aW9uICJneGk2YiIgeyAyOTI6MTAyIC0gMjkyOjE5OSB9CiBldmFsIHsgMToxIC0gMTo1
NiB9CiAKICAgQW5vbnltb3VzIEdsb2JhbCBGdW5jdGlvbiBEZWNsYXJhdGlvbnM6Ci1mdW5jdGlv
biAiIiB7IDI5OTo1NiAtIDMwNDoxIH0KK2Z1bmN0aW9uICIiIHsgMjk5OjUwIC0gMzA0OjEgfQog
ZXZhbCB7IDE6MSAtIDE6NTYgfQogCiAgIEZ1bmN0aW9uIERlY2xhcmF0aW9ucyBpbiBhbiBldmFs
OgogZXZhbCB7IDE6MSAtIDE2OjcgfQotZnVuY3Rpb24gImVmMSIgeyAzOjIwIC0gMTQ6NSB9Ci1m
dW5jdGlvbiAiZWYxYSIgeyA1OjI1IC0gMTI6OSB9Ci1mdW5jdGlvbiAiZWYxYiIgeyA3OjI5IC0g
MTA6MTMgfQorZnVuY3Rpb24gImVmMSIgeyAzOjE3IC0gMTQ6NSB9CitmdW5jdGlvbiAiZWYxYSIg
eyA1OjIyIC0gMTI6OSB9CitmdW5jdGlvbiAiZWYxYiIgeyA3OjI2IC0gMTA6MTMgfQogZXZhbCB7
IDE6MSAtIDE6NTYgfQogZXZhbCB7IDE6MSAtIDE6MjI1IH0KLWZ1bmN0aW9uICJlZjIiIHsgMTo1
OSAtIDE6MjE3IH0KLWZ1bmN0aW9uICJlZjJhIiB7IDE6ODggLSAxOjIwNyB9Ci1mdW5jdGlvbiAi
ZWYyYiIgeyAxOjExOCAtIDE6MTk3IH0KK2Z1bmN0aW9uICJlZjIiIHsgMTo1NiAtIDE6MjE3IH0K
K2Z1bmN0aW9uICJlZjJhIiB7IDE6ODUgLSAxOjIwNyB9CitmdW5jdGlvbiAiZWYyYiIgeyAxOjEx
NSAtIDE6MTk3IH0KIGV2YWwgeyAxOjEgLSAxOjU2IH0KIGV2YWwgeyAxOjEgLSAxNzo4IH0KLWZ1
bmN0aW9uICJlZmkxIiB7IDQ6MjEgLSAxNTo1IH0KLWZ1bmN0aW9uICJlZmkxYSIgeyA2OjI2IC0g
MTM6OSB9Ci1mdW5jdGlvbiAiZWZpMWIiIHsgODozMCAtIDExOjEzIH0KK2Z1bmN0aW9uICJlZmkx
IiB7IDQ6MTggLSAxNTo1IH0KK2Z1bmN0aW9uICJlZmkxYSIgeyA2OjIzIC0gMTM6OSB9CitmdW5j
dGlvbiAiZWZpMWIiIHsgODoyNyAtIDExOjEzIH0KIGV2YWwgeyAxOjEgLSAxOjU2IH0KIGV2YWwg
eyAxOjEgLSAxOjIzNCB9Ci1mdW5jdGlvbiAiZWZpMiIgeyAxOjYwIC0gMToyMjUgfQotZnVuY3Rp
b24gImVmaTJhIiB7IDE6OTEgLSAxOjIxNCB9Ci1mdW5jdGlvbiAiZWZpMmIiIHsgMToxMjMgLSAx
OjIwMyB9CitmdW5jdGlvbiAiZWZpMiIgeyAxOjU3IC0gMToyMjUgfQorZnVuY3Rpb24gImVmaTJh
IiB7IDE6ODggLSAxOjIxNCB9CitmdW5jdGlvbiAiZWZpMmIiIHsgMToxMjAgLSAxOjIwMyB9CiBl
dmFsIHsgMToxIC0gMTo1NiB9CiAKICAgRnVuY3Rpb24gRXhwcmVzc2lvbnMgaW4gYW4gZXZhbDoK
IGV2YWwgeyAxOjEgLSAxNjo3IH0KLWZ1bmN0aW9uICJleDEiIHsgMzoyNiAtIDE0OjUgfQotZnVu
Y3Rpb24gImV4MWEiIHsgNTozMSAtIDEyOjkgfQotZnVuY3Rpb24gImV4MWIiIHsgNzozNSAtIDEw
OjEzIH0KK2Z1bmN0aW9uICJleDEiIHsgMzoyMyAtIDE0OjUgfQorZnVuY3Rpb24gImV4MWEiIHsg
NToyOCAtIDEyOjkgfQorZnVuY3Rpb24gImV4MWIiIHsgNzozMiAtIDEwOjEzIH0KIGV2YWwgeyAx
OjEgLSAxOjU2IH0KIGV2YWwgeyAxOjEgLSAxOjI0NiB9Ci1mdW5jdGlvbiAiZXgyIiB7IDE6NjUg
LSAxOjIzNyB9Ci1mdW5jdGlvbiAiZXgyYSIgeyAxOjEwMCAtIDE6MjI2IH0KLWZ1bmN0aW9uICJl
eDJiIiB7IDE6MTM2IC0gMToyMTUgfQorZnVuY3Rpb24gImV4MiIgeyAxOjYyIC0gMToyMzcgfQor
ZnVuY3Rpb24gImV4MmEiIHsgMTo5NyAtIDE6MjI2IH0KK2Z1bmN0aW9uICJleDJiIiB7IDE6MTMz
IC0gMToyMTUgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQogZXZhbCB7IDE6MSAtIDE3OjggfQotZnVu
Y3Rpb24gImV4aTEiIHsgNDoyNyAtIDE1OjUgfQotZnVuY3Rpb24gImV4aTFhIiB7IDY6MzIgLSAx
Mzo5IH0KLWZ1bmN0aW9uICJleGkxYiIgeyA4OjM2IC0gMTE6MTMgfQorZnVuY3Rpb24gImV4aTEi
IHsgNDoyNCAtIDE1OjUgfQorZnVuY3Rpb24gImV4aTFhIiB7IDY6MjkgLSAxMzo5IH0KK2Z1bmN0
aW9uICJleGkxYiIgeyA4OjMzIC0gMTE6MTMgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQogZXZhbCB7
IDE6MSAtIDE6MjU1IH0KLWZ1bmN0aW9uICJleGkyIiB7IDE6NjYgLSAxOjI0NSB9Ci1mdW5jdGlv
biAiZXhpMmEiIHsgMToxMDMgLSAxOjIzMyB9Ci1mdW5jdGlvbiAiZXhpMmIiIHsgMToxNDEgLSAx
OjIyMSB9CitmdW5jdGlvbiAiZXhpMiIgeyAxOjYzIC0gMToyNDUgfQorZnVuY3Rpb24gImV4aTJh
IiB7IDE6MTAwIC0gMToyMzMgfQorZnVuY3Rpb24gImV4aTJiIiB7IDE6MTM4IC0gMToyMjEgfQog
ZXZhbCB7IDE6MSAtIDE6NTYgfQogCiAgIG5ldyBGdW5jdGlvbiBPYmplY3Q6Ci1mdW5jdGlvbiAi
YW5vbnltb3VzIiB7IDE6MjcgLSAyOjIyOCB9Ci1mdW5jdGlvbiAibmYxYSIgeyAyOjYwIC0gMjoy
MTkgfQotZnVuY3Rpb24gIm5mMWIiIHsgMjo5MCAtIDI6MjA5IH0KLWZ1bmN0aW9uICJuZjFjIiB7
IDI6MTIwIC0gMjoxOTkgfQotZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gImFub255bW91
cyIgeyAxOjI3IC0gMTg6OCB9Ci1mdW5jdGlvbiAibmYyYSIgeyA1OjIxIC0gMTY6NSB9Ci1mdW5j
dGlvbiAibmYyYiIgeyA3OjI1IC0gMTQ6OSB9Ci1mdW5jdGlvbiAibmYyYyIgeyA5OjI5IC0gMTI6
MTMgfQotZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gImFub255bW91cyIgeyAxOjI3IC0g
MjoyMjggfQotZnVuY3Rpb24gIm5mMWEiIHsgMjo2MCAtIDI6MjE5IH0KLWZ1bmN0aW9uICJuZjFi
IiB7IDI6OTAgLSAyOjIwOSB9Ci1mdW5jdGlvbiAibmYxYyIgeyAyOjEyMCAtIDI6MTk5IH0KLWV2
YWwgeyAxOjEgLSAxOjU2IH0KLWZ1bmN0aW9uICJhbm9ueW1vdXMiIHsgMToyNyAtIDI6MjM3IH0K
LWZ1bmN0aW9uICJuZmkxYSIgeyAyOjYxIC0gMjoyMjcgfQotZnVuY3Rpb24gIm5maTFiIiB7IDI6
OTMgLSAyOjIxNiB9Ci1mdW5jdGlvbiAibmZpMWMiIHsgMjoxMjUgLSAyOjIwNSB9Ci1ldmFsIHsg
MToxIC0gMTo1NiB9Ci1mdW5jdGlvbiAiYW5vbnltb3VzIiB7IDE6MjcgLSAxODo4IH0KLWZ1bmN0
aW9uICJuZjJhIiB7IDU6MjEgLSAxNjo1IH0KLWZ1bmN0aW9uICJuZjJiIiB7IDc6MjUgLSAxNDo5
IH0KLWZ1bmN0aW9uICJuZjJjIiB7IDk6MjkgLSAxMjoxMyB9Ci1ldmFsIHsgMToxIC0gMTo1NiB9
Ci1mdW5jdGlvbiAiYW5vbnltb3VzIiB7IDE6MjcgLSAxODo5IH0KLWZ1bmN0aW9uICJuZmkyYSIg
eyA1OjIyIC0gMTY6NSB9Ci1mdW5jdGlvbiAibmZpMmIiIHsgNzoyNiAtIDE0OjkgfQotZnVuY3Rp
b24gIm5maTJjIiB7IDk6MzAgLSAxMjoxMyB9CitmdW5jdGlvbiAiYW5vbnltb3VzIiB7IDE6MjAg
LSAyOjIyOCB9CitmdW5jdGlvbiAibmYxYSIgeyAyOjU3IC0gMjoyMTkgfQorZnVuY3Rpb24gIm5m
MWIiIHsgMjo4NyAtIDI6MjA5IH0KK2Z1bmN0aW9uICJuZjFjIiB7IDI6MTE3IC0gMjoxOTkgfQor
ZXZhbCB7IDE6MSAtIDE6NTYgfQorZnVuY3Rpb24gImFub255bW91cyIgeyAxOjIwIC0gMTg6OCB9
CitmdW5jdGlvbiAibmYyYSIgeyA1OjE4IC0gMTY6NSB9CitmdW5jdGlvbiAibmYyYiIgeyA3OjIy
IC0gMTQ6OSB9CitmdW5jdGlvbiAibmYyYyIgeyA5OjI2IC0gMTI6MTMgfQorZXZhbCB7IDE6MSAt
IDE6NTYgfQorZnVuY3Rpb24gImFub255bW91cyIgeyAxOjIwIC0gMjoyMjggfQorZnVuY3Rpb24g
Im5mMWEiIHsgMjo1NyAtIDI6MjE5IH0KK2Z1bmN0aW9uICJuZjFiIiB7IDI6ODcgLSAyOjIwOSB9
CitmdW5jdGlvbiAibmYxYyIgeyAyOjExNyAtIDI6MTk5IH0KK2V2YWwgeyAxOjEgLSAxOjU2IH0K
K2Z1bmN0aW9uICJhbm9ueW1vdXMiIHsgMToyMCAtIDI6MjM3IH0KK2Z1bmN0aW9uICJuZmkxYSIg
eyAyOjU4IC0gMjoyMjcgfQorZnVuY3Rpb24gIm5maTFiIiB7IDI6OTAgLSAyOjIxNiB9CitmdW5j
dGlvbiAibmZpMWMiIHsgMjoxMjIgLSAyOjIwNSB9CitldmFsIHsgMToxIC0gMTo1NiB9CitmdW5j
dGlvbiAiYW5vbnltb3VzIiB7IDE6MjAgLSAxODo4IH0KK2Z1bmN0aW9uICJuZjJhIiB7IDU6MTgg
LSAxNjo1IH0KK2Z1bmN0aW9uICJuZjJiIiB7IDc6MjIgLSAxNDo5IH0KK2Z1bmN0aW9uICJuZjJj
IiB7IDk6MjYgLSAxMjoxMyB9CitldmFsIHsgMToxIC0gMTo1NiB9CitmdW5jdGlvbiAiYW5vbnlt
b3VzIiB7IDE6MjAgLSAxODo5IH0KK2Z1bmN0aW9uICJuZmkyYSIgeyA1OjE5IC0gMTY6NSB9Citm
dW5jdGlvbiAibmZpMmIiIHsgNzoyMyAtIDE0OjkgfQorZnVuY3Rpb24gIm5maTJjIiB7IDk6Mjcg
LSAxMjoxMyB9CiBldmFsIHsgMToxIC0gMTo1NiB9CiAKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256815</attachid>
            <date>2015-07-14 18:19:55 -0700</date>
            <delta_ts>2015-07-16 15:18:02 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>194747</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg2ODI2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxNCBA
QAorMjAxNS0wNy0xNCAgU2FhbSBiYXJhdGkgIDxzYWFtYmFyYXRpMUBnbWFpbC5jb20+CisKKyAg
ICAgICAgRnVuY3Rpb24gcGFyYW1ldGVycyBzaG91bGQgYmUgcGFyc2VkIGluIHRoZSBzYW1lIHBh
cnNlciBhcmVuYSBhcyB0aGUgZnVuY3Rpb24gYm9keQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1OTk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICBUaGlzIHBhdGNoIGNoYW5nZXMgaG93IGZ1bmN0aW9ucyBh
cmUgcGFyc2VkIGluIEpTQy4gQSBmdW5jdGlvbidzCisgICAgICAgcGFyYW1ldGVycyBhcmUgbm93
IHBhcnNlZCBpbiB0aGUgc2FtZSBhcmVuYSBhcyB0aGUgZnVuY3Rpb24gaXRzZWxmLgorICAgICAg
IFRoaXMgYWxsb3dzIHVzIHRvIGFyZW5hIGFsbG9jYXRlIGFsbCBkZXN0cnVjdHVyaW5nIEFTVCBu
b2RlcyBhbmQKKyAgICAgICB0aGUgRnVuY3Rpb25QYXJhbWV0ZXJzIG5vZGUuIFRoaXMgd2lsbCBo
ZWxwIG1ha2UgaW1wbGVtZW50aW5nIEVTNgorICAgICAgIGRlZmF1bHQgcGFyYW1ldGVyIHZhbHVl
cyBzYW5lLgorCisgICAgICAgQSBzb3VyY2UgY29kZSB0aGF0IHJlcHJlc2VudHMgYSBmdW5jdGlv
biBub3cgaW5jbHVkZXMgdGhlIHRleHQgb2YgdGhlIGZ1bmN0aW9uJ3MgCisgICAgICAgcGFyYW1l
dGVycy4gVGhlIHN0YXJ0aW5nIG9mZnNldCBpcyBhdCB0aGUgb3BlbmluZyBwYXJlbnRoZXNpcyBv
ZiB0aGUgcGFyYW1ldGVyCisgICAgICAgbGlzdCBvciBhdCB0aGUgc3RhcnRpbmcgY2hhcmFjdGVy
IG9mIHRoZSBpZGVudGlmaWVyIGZvciBhcnJvdyBmdW5jdGlvbnMgdGhhdAorICAgICAgIGhhdmUg
c2luZ2xlIGFyZ3VtZW50cyBhbmQgZG9uJ3Qgc3RhcnQgd2l0aCBwYXJlbnRoZXNpcy4KKworICAg
ICAgIEZvciBleGFtcGxlOgorCisgICAgICAgImZ1bmN0aW9uIChwYXJhbTEsIHBhcmFtMikgeyAu
Li4gfSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCBUaGlzIG9mZnNldCB1c2VkIHRvIGJlIHRoZSBzdGFydGlu
ZyBvZmZzZXQgb2YgYSBmdW5jdGlvbidzIFNvdXJjZUNvZGUKKyAgICAgICAgICAgICAgICAgXgor
ICAgICAgICAgICAgICAgICB8IFRoaXMgaXMgdGhlIG5ldyBzdGFydGluZyBvZmZzZXQgZm9yIGEg
ZnVuY3Rpb24ncyBTb3VyY2VDb2RlLgorCisgICAgICAgVGhpcyByZXF1aXJlcyB1cyB0byBjaGFu
Z2UgaG93IHNvbWUgb2Zmc2V0cyBhcmUgY2FsY3VsYXRlZAorICAgICAgIGFuZCBhbHNvIHJlcXVp
cmVzIHVzIHRvIHJlcG9ydCBzb21lIGRpZmZlcmVudCBsaW5lIG51bWJlcnMgZm9yIGludGVybmFs
CisgICAgICAgbWV0cmljcyB0aGF0IHVzZSBhIFNvdXJjZUNvZGUncyBzdGFydGluZyBsaW5lIGFu
ZCBjb2x1bW4gbnVtYmVycy4KKworICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBkb2VzIGEgYml0IG9m
IGNsZWFudXAgd2l0aCByZWdhcmRzIHRvIGhvdworICAgICAgIGZ1bmN0aW9ucyBhcmUgcGFyc2Vk
IGluIGdlbmVyYWwgKGVzcGVjaWFsbHkgYXJyb3cgZnVuY3Rpb25zKS4KKyAgICAgICBJdCByZW1v
dmVzIHNvbWUgdW5uZWNlc3NhcnkgI2lmZGVmcyBhbmQgdGhlIGxpa2VzIGZvciBhcnJvdworICAg
ICAgIHRvIG1ha2UgdGhpbmdzIGNsZWFyZXIgYW5kIG1vcmUgZGVsaWJlcmF0ZS4KKworICAgICAg
ICAqIEFQSS9KU1NjcmlwdFJlZi5jcHA6CisgICAgICAgIChwYXJzZVNjcmlwdCk6CisgICAgICAg
ICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDoKKyAgICAgICAgKEpTQzo6QnVpbHRp
bkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlSW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVGdW5jdGlv
bkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OnBhcmFtZXRlckNvdW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0Nv
ZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5vZGU6OmVt
aXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OmFzc2lnbkRlZmF1bHRWYWx1ZUlmVW5kZWZpbmVk
KToKKyAgICAgICAgKEpTQzo6QXJyYXlQYXR0ZXJuTm9kZTo6Y29sbGVjdEJvdW5kSWRlbnRpZmll
cnMpOgorICAgICAgICAoSlNDOjpEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU6On5EZXN0cnVjdHVy
aW5nUGF0dGVybk5vZGUpOiBEZWxldGVkLgorICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUNsYXNzRXhwcik6CisgICAgICAgIChK
U0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmN0aW9uRXhwcik6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6OmNyZWF0ZUZ1bmN0aW9uQm9keSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNy
ZWF0ZUFycm93RnVuY3Rpb25FeHByKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRl
R2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0
ZUVsZW1lbnRMaXN0KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRm9ybWFsUGFy
YW1ldGVyTGlzdCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmFwcGVuZFBhcmFtZXRlcik6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUNsYXVzZSk6CisgICAgICAgIChKU0M6
OkFTVEJ1aWxkZXI6OmNyZWF0ZUNsYXVzZUxpc3QpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVy
OjpjcmVhdGVGdW5jRGVjbFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNy
ZWF0ZUZvckluTG9vcCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZvck9mTG9v
cCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmlzUmVzb2x2ZSk6CisgICAgICAgIChKU0M6
OkFTVEJ1aWxkZXI6OmNyZWF0ZURlc3RydWN0dXJpbmdBc3NpZ25tZW50KToKKyAgICAgICAgKEpT
Qzo6QVNUQnVpbGRlcjo6Y3JlYXRlQXJyYXlQYXR0ZXJuKToKKyAgICAgICAgKEpTQzo6QVNUQnVp
bGRlcjo6YXBwZW5kQXJyYXlQYXR0ZXJuU2tpcEVudHJ5KToKKyAgICAgICAgKEpTQzo6QVNUQnVp
bGRlcjo6YXBwZW5kQXJyYXlQYXR0ZXJuRW50cnkpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVy
OjphcHBlbmRBcnJheVBhdHRlcm5SZXN0RW50cnkpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVy
OjpmaW5pc2hBcnJheVBhdHRlcm4pOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVP
YmplY3RQYXR0ZXJuKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6YXBwZW5kT2JqZWN0UGF0
dGVybkVudHJ5KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlQmluZGluZ0xvY2F0
aW9uKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6c2V0RW5kT2Zmc2V0KToKKyAgICAgICAg
KiBwYXJzZXIvTGV4ZXIuY3BwOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6TGV4ZXIpOgorICAg
ICAgICAoSlNDOjpMZXhlcjxUPjo6bmV4dFRva2VuSXNDb2xvbik6CisgICAgICAgIChKU0M6Okxl
eGVyPFQ+OjpzZXRUb2tlblBvc2l0aW9uKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleCk6
CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpjbGVhcik6CisgICAgICAgICogcGFyc2VyL0xleGVy
Lmg6CisgICAgICAgIChKU0M6OkxleGVyOjpzZXRJc1JlcGFyc2luZ0Z1bmN0aW9uKToKKyAgICAg
ICAgKEpTQzo6TGV4ZXI6OmlzUmVwYXJzaW5nRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpMZXhl
cjo6bGluZU51bWJlcik6CisgICAgICAgIChKU0M6OkxleGVyOjpzZXRJc1JlcGFyc2luZyk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkxleGVyOjppc1JlcGFyc2luZyk6IERlbGV0ZWQuCisgICAg
ICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpTQzo6VHJ5Tm9kZTo6
VHJ5Tm9kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uUGFyYW1ldGVyczo6RnVuY3Rpb25QYXJh
bWV0ZXJzKToKKyAgICAgICAgKEpTQzo6RnVuY0V4cHJOb2RlOjpGdW5jRXhwck5vZGUpOgorICAg
ICAgICAoSlNDOjpGdW5jRGVjbE5vZGU6OkZ1bmNEZWNsTm9kZSk6CisgICAgICAgIChKU0M6OkFy
cmF5UGF0dGVybk5vZGU6OkFycmF5UGF0dGVybk5vZGUpOgorICAgICAgICAoSlNDOjpPYmplY3RQ
YXR0ZXJuTm9kZTo6T2JqZWN0UGF0dGVybk5vZGUpOgorICAgICAgICAoSlNDOjpCaW5kaW5nTm9k
ZTo6QmluZGluZ05vZGUpOgorICAgICAgICAoSlNDOjpEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5v
ZGU6OkRlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZSk6CisgICAgICAgIChKU0M6OlBhcmFtZXRl
ck5vZGU6OlBhcmFtZXRlck5vZGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpBcnJheVBhdHRl
cm5Ob2RlOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpPYmplY3RQYXR0ZXJuTm9k
ZTo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QmluZGluZ05vZGU6OmNyZWF0ZSk6
IERlbGV0ZWQuCisgICAgICAgICogcGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHJv
Z3JhbU5vZGU6OlByb2dyYW1Ob2RlKToKKyAgICAgICAgKEpTQzo6RXZhbE5vZGU6OkV2YWxOb2Rl
KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Cb2R5Tm9kZTo6RnVuY3Rpb25Cb2R5Tm9kZSk6Cisg
ICAgICAgIChKU0M6OkZ1bmN0aW9uQm9keU5vZGU6OmZpbmlzaFBhcnNpbmcpOgorICAgICAgICAo
SlNDOjpGdW5jdGlvbk5vZGU6OkZ1bmN0aW9uTm9kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9u
Tm9kZTo6ZmluaXNoUGFyc2luZyk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uUGFyYW1ldGVyczo6
Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RnVuY3Rpb25QYXJhbWV0ZXJzOjpGdW5j
dGlvblBhcmFtZXRlcnMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGdW5jdGlvblBhcmFtZXRl
cnM6On5GdW5jdGlvblBhcmFtZXRlcnMpOiBEZWxldGVkLgorICAgICAgICAqIHBhcnNlci9Ob2Rl
cy5oOgorICAgICAgICAoSlNDOjpQcm9ncmFtTm9kZTo6c3RhcnRDb2x1bW4pOgorICAgICAgICAo
SlNDOjpQcm9ncmFtTm9kZTo6ZW5kQ29sdW1uKToKKyAgICAgICAgKEpTQzo6RXZhbE5vZGU6OnN0
YXJ0Q29sdW1uKToKKyAgICAgICAgKEpTQzo6RXZhbE5vZGU6OmVuZENvbHVtbik6CisgICAgICAg
IChKU0M6OkZ1bmN0aW9uUGFyYW1ldGVyczo6c2l6ZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9u
UGFyYW1ldGVyczo6YXQpOgorICAgICAgICAoSlNDOjpGdW5jdGlvblBhcmFtZXRlcnM6OmFwcGVu
ZCk6CisgICAgICAgIChKU0M6OkZ1bmNFeHByTm9kZTo6Ym9keSk6CisgICAgICAgIChKU0M6OkRl
c3RydWN0dXJpbmdQYXR0ZXJuTm9kZTo6fkRlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSk6CisgICAg
ICAgIChKU0M6OkRlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZTo6aXNCaW5kaW5nTm9kZSk6CisgICAg
ICAgIChKU0M6OkRlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZTo6ZW1pdERpcmVjdEJpbmRpbmcpOgor
ICAgICAgICAoSlNDOjpBcnJheVBhdHRlcm5Ob2RlOjphcHBlbmRJbmRleCk6CisgICAgICAgIChK
U0M6Ok9iamVjdFBhdHRlcm5Ob2RlOjphcHBlbmRFbnRyeSk6CisgICAgICAgIChKU0M6OkJpbmRp
bmdOb2RlOjpib3VuZFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6QmluZGluZ05vZGU6OmRpdm90
U3RhcnQpOgorICAgICAgICAoSlNDOjpCaW5kaW5nTm9kZTo6ZGl2b3RFbmQpOgorICAgICAgICAo
SlNDOjpEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5vZGU6OmJpbmRpbmdzKToKKyAgICAgICAgKEpT
Qzo6RnVuY0RlY2xOb2RlOjpib2R5KToKKyAgICAgICAgKEpTQzo6UGFyYW1ldGVyTm9kZTo6cGF0
dGVybik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlBhcmFtZXRlck5vZGU6Om5leHRQYXJhbSk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZ1bmN0aW9uUGFyYW1ldGVyczo6cGF0dGVybnMpOiBE
ZWxldGVkLgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJz
ZXI8TGV4ZXJUeXBlPjo6UGFyc2VyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46
On5QYXJzZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcik6
CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjphbGxvd0F1dG9tYXRpY1NlbWljb2xv
bik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVNvdXJjZUVsZW1lbnRz
KToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZUJpbmRpbmdQYXR0ZXJu
KToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXJyb3dGdW5jdGlvblNp
bmdsZUV4cHJlc3Npb25Cb2R5U291cmNlRWxlbWVudHMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8
TGV4ZXJUeXBlPjo6dHJ5UGFyc2VEZXN0cnVjdHVyaW5nUGF0dGVybkV4cHJlc3Npb24pOgorICAg
ICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTd2l0Y2hDbGF1c2VzKToKKyAgICAg
ICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlU3dpdGNoRGVmYXVsdENsYXVzZSk6Cisg
ICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUJsb2NrU3RhdGVtZW50KToKKyAg
ICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlU3RhdGVtZW50KToKKyAgICAgICAg
KEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRm9ybWFsUGFyYW1ldGVycyk6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSk6CisgICAgICAgIChK
U0M6OnN0cmluZ0ZvckZ1bmN0aW9uTW9kZSk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VDbGFzcyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZVByaW1hcnlFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46
OnBhcnNlTWVtYmVyRXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUFycm93RnVuY3Rpb25FeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6b3BlcmF0b3JT
dHJpbmcpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBcnJvd0Z1bmN0
aW9uU2luZ2xlRXhwcmVzc2lvbkJvZHkpOiBEZWxldGVkLgorICAgICAgICAqIHBhcnNlci9QYXJz
ZXIuaDoKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKToK
KyAgICAgICAgKEpTQzo6UGFyc2VyOjpsb2NhdGlvbkJlZm9yZUxhc3RUb2tlbik6CisgICAgICAg
IChKU0M6OlBhcnNlcjo6ZmluZENhY2hlZEZ1bmN0aW9uSW5mbyk6CisgICAgICAgIChKU0M6OlBh
cnNlcjo6aXNvZlRva2VuKToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjppc0VuZE9mQXJyb3dGdW5j
dGlvbik6CisgICAgICAgIChKU0M6OlBhcnNlcjo6aXNBcnJvd0Z1bmN0aW9uUGFyYW10ZXJzKToK
KyAgICAgICAgKEpTQzo6UGFyc2VyOjp0b2tlblN0YXJ0KToKKyAgICAgICAgKEpTQzo6UGFyc2Vy
OjpnZXRMYWJlbCk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6YXV0b1NlbWlDb2xvbik6CisgICAg
ICAgIChKU0M6OlBhcnNlcjo6c2V0RW5kT2ZTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpQYXJz
ZXI6OmNhblJlY3Vyc2UpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2Up
OgorICAgICAgICAoSlNDOjpwYXJzZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlckZ1bmN0aW9u
SW5mby5oOgorICAgICAgICAqIHBhcnNlci9QYXJzZXJNb2Rlcy5oOgorICAgICAgICAoSlNDOjpm
dW5jdGlvbk5hbWVJc0luU2NvcGUpOgorICAgICAgICAqIHBhcnNlci9Tb3VyY2VDb2RlLmg6Cisg
ICAgICAgIChKU0M6Om1ha2VTb3VyY2UpOgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlOjpzdWJF
eHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZTo6c3ViQXJyb3dFeHByZXNzaW9u
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYXJzZXIvU291cmNlUHJvdmlkZXJDYWNoZS5oOgorICAg
ICAgICAoSlNDOjpTb3VyY2VQcm92aWRlckNhY2hlOjpnZXQpOgorICAgICAgICAqIHBhcnNlci9T
b3VyY2VQcm92aWRlckNhY2hlSXRlbS5oOgorICAgICAgICAoSlNDOjpTb3VyY2VQcm92aWRlckNh
Y2hlSXRlbTo6ZW5kRnVuY3Rpb25Ub2tlbik6CisgICAgICAgIChKU0M6OlNvdXJjZVByb3ZpZGVy
Q2FjaGVJdGVtOjp1c2VkVmFyaWFibGVzKToKKyAgICAgICAgKEpTQzo6U291cmNlUHJvdmlkZXJD
YWNoZUl0ZW06OndyaXR0ZW5WYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpTb3VyY2VQcm92aWRl
ckNhY2hlSXRlbTo6U291cmNlUHJvdmlkZXJDYWNoZUl0ZW0pOgorICAgICAgICAqIHBhcnNlci9T
eW50YXhDaGVja2VyLmg6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OlN5bnRheENoZWNr
ZXIpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVDbGFzc0V4cHIpOgorICAg
ICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVGdW5jdGlvbkV4cHIpOgorICAgICAgICAo
SlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVGdW5jdGlvbkJvZHkpOgorICAgICAgICAoSlNDOjpT
eW50YXhDaGVja2VyOjpjcmVhdGVBcnJvd0Z1bmN0aW9uRXhwcik6CisgICAgICAgIChKU0M6OlN5
bnRheENoZWNrZXI6OnNldEZ1bmN0aW9uTmFtZVN0YXJ0KToKKyAgICAgICAgKEpTQzo6U3ludGF4
Q2hlY2tlcjo6Y3JlYXRlQXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6
Y3JlYXRlUHJvcGVydHlMaXN0KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRl
RWxlbWVudExpc3QpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVGb3JtYWxQ
YXJhbWV0ZXJMaXN0KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6YXBwZW5kUGFyYW1l
dGVyKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlQ2xhdXNlKToKKyAgICAg
ICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlQ2xhdXNlTGlzdCk6CisgICAgICAgICogcnVu
dGltZS9Db2RlQ2FjaGUuY3BwOgorICAgICAgICAoSlNDOjpDb2RlQ2FjaGU6OmdldEdsb2JhbENv
ZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0RnVuY3Rpb25FeGVjdXRhYmxl
RnJvbUdsb2JhbENvZGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5jcHA6CisgICAg
ICAgIChKU0M6OmNoZWNrU3ludGF4KToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3Bw
OgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6Y2hlY2tTeW50YXgpOgorICAgICAg
ICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpmdW5jdGlv
blByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKiB0ZXN0cy9jb250cm9sRmxvd1Byb2ZpbGVy
L2NvbmRpdGlvbmFsLWV4cHJlc3Npb24uanM6CisgICAgICAgICh0ZXN0Q29uZGl0aW9uYWxGdW5j
dGlvbkNhbGwpOgorCiAyMDE1LTA3LTE0ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBs
ZS5jb20+CiAKICAgICAgICAgQXNzZXJ0aW9ucy5oIHNob3VsZCBpbmNsdWRlIEV4cG9ydE1hY3Jv
cy5oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcAkocmV2
aXNpb24gMTg2ODA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgcHJpdmF0ZToKIHN0YXRpYyBib29s
IHBhcnNlU2NyaXB0KFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJv
ciYgZXJyb3IpCiB7CiAgICAgcmV0dXJuICEhSlNDOjpwYXJzZTxKU0M6OlByb2dyYW1Ob2RlPigK
LSAgICAgICAgdm0sIHNvdXJjZSwgMCwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2Rl
OjpOb3RCdWlsdGluLCAKKyAgICAgICAgdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNl
ckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCAKICAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpO
b3RTdHJpY3QsIEpTUGFyc2VyQ29kZVR5cGU6OlByb2dyYW0sIAogICAgICAgICBlcnJvcik7CiB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRp
bkV4ZWN1dGFibGVzLmNwcAkocmV2aXNpb24gMTg2ODA4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5
LDEwICs2OSw5IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3UKICAg
ICBVbmxpbmtlZEZ1bmN0aW9uS2luZCBraW5kID0gaXNQYXJzaW5nRGVmYXVsdENvbnN0cnVjdG9y
ID8gVW5saW5rZWROb3JtYWxGdW5jdGlvbiA6IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uOwogICAg
IFJlZlB0cjxTb3VyY2VQcm92aWRlcj4gc291cmNlT3ZlcnJpZGUgPSBpc1BhcnNpbmdEZWZhdWx0
Q29uc3RydWN0b3IgPyBzb3VyY2UucHJvdmlkZXIoKSA6IG51bGxwdHI7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFByb2dyYW1Ob2RlPiBwcm9ncmFtID0gcGFyc2U8UHJvZ3JhbU5vZGU+KAotICAgICAg
ICAmbV92bSwgc291cmNlLCAwLCBJZGVudGlmaWVyKCksIGJ1aWx0aW5Nb2RlLCAKLSAgICAgICAg
SlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIAotICAgICAgICBKU1BhcnNlckNvZGVUeXBl
OjpQcm9ncmFtLAotICAgICAgICBlcnJvciwgJnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUsIGNv
bnN0cnVjdG9yS2luZCk7CisgICAgICAgICZtX3ZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgYnVp
bHRpbk1vZGUsIAorICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgSlNQYXJz
ZXJDb2RlVHlwZTo6UHJvZ3JhbSwgZXJyb3IsIAorICAgICAgICAmcG9zaXRpb25CZWZvcmVMYXN0
TmV3bGluZSwgRnVuY3Rpb25QYXJzZU1vZGU6Ok5vdEFGdW5jdGlvbk1vZGUsIGNvbnN0cnVjdG9y
S2luZCk7CiAKICAgICBpZiAoIXByb2dyYW0pIHsKICAgICAgICAgZGF0YUxvZygiRmF0YWwgZXJy
b3IgY29tcGlsaW5nIGJ1aWx0aW4gZnVuY3Rpb24gJyIsIG5hbWUuc3RyaW5nKCksICInOiAiLCBl
cnJvci5tZXNzYWdlKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCShyZXZpc2lvbiAxODY4MDgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02MCwxNSArNjAsMTUgQEAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2sqIGdlbmVyYQogICAgIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUgPSBleGVjdXRh
YmxlLT5pc0J1aWx0aW5GdW5jdGlvbigpID8gSlNQYXJzZXJCdWlsdGluTW9kZTo6QnVpbHRpbiA6
IEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW47CiAgICAgSlNQYXJzZXJTdHJpY3RNb2Rl
IHN0cmljdE1vZGUgPSBleGVjdXRhYmxlLT5pc0luU3RyaWN0Q29udGV4dCgpID8gSlNQYXJzZXJT
dHJpY3RNb2RlOjpTdHJpY3QgOiBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdDsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8RnVuY3Rpb25Ob2RlPiBmdW5jdGlvbiA9IHBhcnNlPEZ1bmN0aW9uTm9k
ZT4oCi0gICAgICAgICZ2bSwgc291cmNlLCBleGVjdXRhYmxlLT5wYXJhbWV0ZXJzKCksIGV4ZWN1
dGFibGUtPm5hbWUoKSwgYnVpbHRpbk1vZGUsCi0gICAgICAgIHN0cmljdE1vZGUsIEpTUGFyc2Vy
Q29kZVR5cGU6OkZ1bmN0aW9uLCBlcnJvciwgMCk7CisgICAgICAgICZ2bSwgc291cmNlLCBleGVj
dXRhYmxlLT5uYW1lKCksIGJ1aWx0aW5Nb2RlLAorICAgICAgICBzdHJpY3RNb2RlLCBKU1BhcnNl
ckNvZGVUeXBlOjpGdW5jdGlvbiwgZXJyb3IsIDAsIGV4ZWN1dGFibGUtPnBhcnNlTW9kZSgpKTsK
IAogICAgIGlmICghZnVuY3Rpb24pIHsKICAgICAgICAgQVNTRVJUKGVycm9yLmlzVmFsaWQoKSk7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGZ1bmN0aW9uLT5maW5pc2hQ
YXJzaW5nKGV4ZWN1dGFibGUtPnBhcmFtZXRlcnMoKSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBleGVj
dXRhYmxlLT5mdW5jdGlvbk1vZGUoKSk7CisgICAgZnVuY3Rpb24tPmZpbmlzaFBhcnNpbmcoZXhl
Y3V0YWJsZS0+bmFtZSgpLCBleGVjdXRhYmxlLT5mdW5jdGlvbk1vZGUoKSk7CiAgICAgZXhlY3V0
YWJsZS0+cmVjb3JkUGFyc2UoZnVuY3Rpb24tPmZlYXR1cmVzKCksIGZ1bmN0aW9uLT5oYXNDYXB0
dXJlZFZhcmlhYmxlcygpKTsKICAgICAKICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBy
ZXN1bHQgPSBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVhdGUoJnZtLCBGdW5jdGlvbkNv
ZGUsCkBAIC04NCw3ICs4NCw2IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtl
ZEZ1bmMKICAgICA6IEJhc2UoKnZtLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX25hbWUobm9kZS0+aWRl
bnQoKSkKICAgICAsIG1faW5mZXJyZWROYW1lKG5vZGUtPmluZmVycmVkTmFtZSgpKQotICAgICwg
bV9wYXJhbWV0ZXJzKG5vZGUtPnBhcmFtZXRlcnMoKSkKICAgICAsIG1fc291cmNlT3ZlcnJpZGUo
V1RGOjptb3ZlKHNvdXJjZU92ZXJyaWRlKSkKICAgICAsIG1fZmlyc3RMaW5lT2Zmc2V0KG5vZGUt
PmZpcnN0TGluZSgpIC0gc291cmNlLmZpcnN0TGluZSgpKQogICAgICwgbV9saW5lQ291bnQobm9k
ZS0+bGFzdExpbmUoKSAtIG5vZGUtPmZpcnN0TGluZSgpKQpAQCAtOTYsNiArOTUsOCBAQCBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jCiAgICAgLCBtX3BhcmFtZXRlcnNT
dGFydE9mZnNldChub2RlLT5wYXJhbWV0ZXJzU3RhcnQoKSkKICAgICAsIG1fdHlwZVByb2ZpbGlu
Z1N0YXJ0T2Zmc2V0KG5vZGUtPmZ1bmN0aW9uS2V5d29yZFN0YXJ0KCkpCiAgICAgLCBtX3R5cGVQ
cm9maWxpbmdFbmRPZmZzZXQobm9kZS0+c3RhcnRTdGFydE9mZnNldCgpICsgbm9kZS0+c291cmNl
KCkubGVuZ3RoKCkgLSAxKQorICAgICwgbV9wYXJhbWV0ZXJDb3VudChub2RlLT5wYXJhbWV0ZXJD
b3VudCgpKQorICAgICwgbV9wYXJzZU1vZGUobm9kZS0+cGFyc2VNb2RlKCkpCiAgICAgLCBtX2Zl
YXR1cmVzKDApCiAgICAgLCBtX2lzSW5TdHJpY3RDb250ZXh0KG5vZGUtPmlzSW5TdHJpY3RDb250
ZXh0KCkpCiAgICAgLCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzKGZhbHNlKQpAQCAtMTA2LDExICsx
MDcsNiBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jCiAgICAgQVNT
RVJUKG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihub2RlLT5jb25z
dHJ1Y3RvcktpbmQoKSkpOwogfQogCi1zaXplX3QgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6
OnBhcmFtZXRlckNvdW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wYXJhbWV0ZXJzLT5zaXpl
KCk7Ci19Ci0KIHZvaWQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSogdGhpc09iamVjdCA9IGpzQ2FzdDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSo+KGNlbGwpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmgJKHJldmlzaW9uIDE4NjgwOCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBA
IC00OCw3ICs0OCw2IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgRGVidWdnZXI7CiBjbGFzcyBG
dW5jdGlvbkJvZHlOb2RlOwogY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwotY2xhc3MgRnVuY3Rp
b25QYXJhbWV0ZXJzOwogY2xhc3MgSlNTY29wZTsKIGNsYXNzIFBhcnNlckVycm9yOwogY2xhc3Mg
U2NyaXB0RXhlY3V0YWJsZTsKQEAgLTEyMiw3ICsxMjEsOCBAQCBwdWJsaWM6CiAgICAgewogICAg
ICAgICByZXR1cm4gKGtpbmQgPT0gQ29kZUZvckNhbGwpID8gbV9zeW1ib2xUYWJsZUZvckNhbGwu
Z2V0KCkgOiBtX3N5bWJvbFRhYmxlRm9yQ29uc3RydWN0LmdldCgpOwogICAgIH0KLSAgICBzaXpl
X3QgcGFyYW1ldGVyQ291bnQoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVyQ291bnQ7IH07CisgICAgRnVuY3Rpb25QYXJzZU1v
ZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZU1vZGU7IH07CiAgICAgYm9vbCBp
c0luU3RyaWN0Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJblN0cmljdENvbnRleHQ7IH0K
ICAgICBGdW5jdGlvbk1vZGUgZnVuY3Rpb25Nb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8RnVuY3Rpb25Nb2RlPihtX2Z1bmN0aW9uTW9kZSk7IH0KICAgICBDb25zdHJ1Y3RvcktpbmQg
Y29uc3RydWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JL
aW5kPihtX2NvbnN0cnVjdG9yS2luZCk7IH0KQEAgLTE1NCw4ICsxNTQsNiBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LmNsZWFyKCk7CiAgICAgfQogCi0gICAgRnVu
Y3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzKCkgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLmdldCgp
OyB9Ci0KICAgICB2b2lkIHJlY29yZFBhcnNlKENvZGVGZWF0dXJlcyBmZWF0dXJlcywgYm9vbCBo
YXNDYXB0dXJlZFZhcmlhYmxlcykKICAgICB7CiAgICAgICAgIG1fZmVhdHVyZXMgPSBmZWF0dXJl
czsKQEAgLTE4MSw3ICsxNzksNiBAQCBwcml2YXRlOgogICAgIFdyaXRlQmFycmllcjxKU1N0cmlu
Zz4gbV9uYW1lVmFsdWU7CiAgICAgV3JpdGVCYXJyaWVyPFN5bWJvbFRhYmxlPiBtX3N5bWJvbFRh
YmxlRm9yQ2FsbDsKICAgICBXcml0ZUJhcnJpZXI8U3ltYm9sVGFibGU+IG1fc3ltYm9sVGFibGVG
b3JDb25zdHJ1Y3Q7Ci0gICAgUmVmUHRyPEZ1bmN0aW9uUGFyYW1ldGVycz4gbV9wYXJhbWV0ZXJz
OwogICAgIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4gbV9zb3VyY2VPdmVycmlkZTsKICAgICB1bnNp
Z25lZCBtX2ZpcnN0TGluZU9mZnNldDsKICAgICB1bnNpZ25lZCBtX2xpbmVDb3VudDsKQEAgLTE5
Myw2ICsxOTAsOCBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fcGFyYW1ldGVyc1N0YXJ0T2Zm
c2V0OwogICAgIHVuc2lnbmVkIG1fdHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0OwogICAgIHVuc2ln
bmVkIG1fdHlwZVByb2ZpbGluZ0VuZE9mZnNldDsKKyAgICB1bnNpZ25lZCBtX3BhcmFtZXRlckNv
dW50OworICAgIEZ1bmN0aW9uUGFyc2VNb2RlIG1fcGFyc2VNb2RlOwogCiAgICAgQ29kZUZlYXR1
cmVzIG1fZmVhdHVyZXM7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHJldmlzaW9uIDE4NjgwOCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzExNiwxMCArMzExNiw2IEBAIFJlZ2lzdGVySUQqIERlc3RydWN0dXJpbmdBc3Np
Z25tZW50Tm9kZToKICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVk
ZWQoZHN0LCBpbml0aWFsaXplci5nZXQoKSk7CiB9CiAKLURlc3RydWN0dXJpbmdQYXR0ZXJuTm9k
ZTo6fkRlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSgpCi17Ci19Ci0KIHN0YXRpYyB2b2lkIGFzc2ln
bkRlZmF1bHRWYWx1ZUlmVW5kZWZpbmVkKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIG1heWJlVW5kZWZpbmVkLCBFeHByZXNzaW9uTm9kZSogZGVmYXVsdFZhbHVlKQog
ewogICAgIEFTU0VSVChkZWZhdWx0VmFsdWUpOwpAQCAtMzI3Nyw3ICszMjczLDcgQEAgdm9pZCBB
cnJheVBhdHRlcm5Ob2RlOjp0b1N0cmluZyhTdHJpbmdCdQogdm9pZCBBcnJheVBhdHRlcm5Ob2Rl
Ojpjb2xsZWN0Qm91bmRJZGVudGlmaWVycyhWZWN0b3I8SWRlbnRpZmllcj4mIGlkZW50aWZpZXJz
KSBjb25zdAogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90YXJnZXRQYXR0ZXJucy5z
aXplKCk7IGkrKykgewotICAgICAgICBpZiAoRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiBub2Rl
ID0gbV90YXJnZXRQYXR0ZXJuc1tpXS5wYXR0ZXJuLmdldCgpKQorICAgICAgICBpZiAoRGVzdHJ1
Y3R1cmluZ1BhdHRlcm5Ob2RlKiBub2RlID0gbV90YXJnZXRQYXR0ZXJuc1tpXS5wYXR0ZXJuKQog
ICAgICAgICAgICAgbm9kZS0+Y29sbGVjdEJvdW5kSWRlbnRpZmllcnMoaWRlbnRpZmllcnMpOwog
ICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5o
CShyZXZpc2lvbiAxODY4MDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1
aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtOTMsOCArOTMsNiBAQCBwdWJsaWM6CiAgICAgfTsK
IAogCi0gICAgdHlwZWRlZiBTeW50YXhDaGVja2VyIEZ1bmN0aW9uQm9keUJ1aWxkZXI7Ci0KICAg
ICB0eXBlZGVmIEV4cHJlc3Npb25Ob2RlKiBFeHByZXNzaW9uOwogICAgIHR5cGVkZWYgSlNDOjpT
b3VyY2VFbGVtZW50cyogU291cmNlRWxlbWVudHM7CiAgICAgdHlwZWRlZiBBcmd1bWVudHNOb2Rl
KiBBcmd1bWVudHM7CkBAIC0xMDksNyArMTA3LDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYgVGVt
cGxhdGVTdHJpbmdMaXN0Tm9kZSogVGVtcGxhdGVTdHJpbmdMaXN0OwogICAgIHR5cGVkZWYgVGVt
cGxhdGVMaXRlcmFsTm9kZSogVGVtcGxhdGVMaXRlcmFsOwogI2VuZGlmCi0gICAgdHlwZWRlZiBQ
YXJhbWV0ZXJOb2RlKiBGb3JtYWxQYXJhbWV0ZXJMaXN0OworICAgIHR5cGVkZWYgRnVuY3Rpb25Q
YXJhbWV0ZXJzKiBGb3JtYWxQYXJhbWV0ZXJMaXN0OwogICAgIHR5cGVkZWYgRnVuY3Rpb25Cb2R5
Tm9kZSogRnVuY3Rpb25Cb2R5OwogI2lmIEVOQUJMRShFUzZfQ0xBU1NfU1lOVEFYKQogICAgIHR5
cGVkZWYgQ2xhc3NFeHByTm9kZSogQ2xhc3NFeHByZXNzaW9uOwpAQCAtMTE5LDEwICsxMTcsMTAg
QEAgcHVibGljOgogICAgIHR5cGVkZWYgQ2FzZUNsYXVzZU5vZGUqIENsYXVzZTsKICAgICB0eXBl
ZGVmIENvbnN0RGVjbE5vZGUqIENvbnN0RGVjbExpc3Q7CiAgICAgdHlwZWRlZiBzdGQ6OnBhaXI8
RXhwcmVzc2lvbk5vZGUqLCBCaW5hcnlPcEluZm8+IEJpbmFyeU9wZXJhbmQ7Ci0gICAgdHlwZWRl
ZiBSZWZQdHI8RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlPiBEZXN0cnVjdHVyaW5nUGF0dGVybjsK
LSAgICB0eXBlZGVmIFJlZlB0cjxBcnJheVBhdHRlcm5Ob2RlPiBBcnJheVBhdHRlcm47Ci0gICAg
dHlwZWRlZiBSZWZQdHI8T2JqZWN0UGF0dGVybk5vZGU+IE9iamVjdFBhdHRlcm47Ci0gICAgdHlw
ZWRlZiBSZWZQdHI8QmluZGluZ05vZGU+IEJpbmRpbmdQYXR0ZXJuOworICAgIHR5cGVkZWYgRGVz
dHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiBEZXN0cnVjdHVyaW5nUGF0dGVybjsKKyAgICB0eXBlZGVm
IEFycmF5UGF0dGVybk5vZGUqIEFycmF5UGF0dGVybjsKKyAgICB0eXBlZGVmIE9iamVjdFBhdHRl
cm5Ob2RlKiBPYmplY3RQYXR0ZXJuOworICAgIHR5cGVkZWYgQmluZGluZ05vZGUqIEJpbmRpbmdQ
YXR0ZXJuOwogICAgIHN0YXRpYyBjb25zdCBib29sIENyZWF0ZXNBU1QgPSB0cnVlOwogICAgIHN0
YXRpYyBjb25zdCBib29sIE5lZWRzRnJlZVZhcmlhYmxlSW5mbyA9IHRydWU7CiAgICAgc3RhdGlj
IGNvbnN0IGJvb2wgQ2FuVXNlRnVuY3Rpb25DYWNoZSA9IHRydWU7CkBAIC0zNDQsMTEgKzM0Miwx
MSBAQCBwdWJsaWM6CiAgICAgfQogI2VuZGlmCiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRl
RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IFBhcnNl
ckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgaW5mbykKKyAgICBFeHByZXNzaW9uTm9kZSogY3Jl
YXRlRnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IFBh
cnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgZnVuY3Rpb25JbmZvKQogICAgIHsKLSAgICAg
ICAgRnVuY0V4cHJOb2RlKiByZXN1bHQgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIEZ1bmNFeHByTm9k
ZShsb2NhdGlvbiwgKmluZm8ubmFtZSwgaW5mby5ib2R5LAotICAgICAgICAgICAgbV9zb3VyY2VD
b2RlLT5zdWJFeHByZXNzaW9uKGluZm8uc3RhcnRGdW5jdGlvbk9mZnNldCwgaW5mby5lbmRGdW5j
dGlvbk9mZnNldCwgaW5mby5ib2R5U3RhcnRMaW5lLCBpbmZvLmJvZHlTdGFydENvbHVtbiksIGlu
Zm8ucGFyYW1ldGVycyk7Ci0gICAgICAgIGluZm8uYm9keS0+c2V0TG9jKGluZm8uYm9keVN0YXJ0
TGluZSwgaW5mby5ib2R5RW5kTGluZSwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxp
bmVTdGFydE9mZnNldCk7CisgICAgICAgIEZ1bmNFeHByTm9kZSogcmVzdWx0ID0gbmV3IChtX3Bh
cnNlckFyZW5hKSBGdW5jRXhwck5vZGUobG9jYXRpb24sICpmdW5jdGlvbkluZm8ubmFtZSwgZnVu
Y3Rpb25JbmZvLmJvZHksCisgICAgICAgICAgICBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24o
ZnVuY3Rpb25JbmZvLnN0YXJ0T2Zmc2V0LCBmdW5jdGlvbkluZm8uZW5kT2Zmc2V0LCBmdW5jdGlv
bkluZm8uc3RhcnRMaW5lLCBmdW5jdGlvbkluZm8uYm9keVN0YXJ0Q29sdW1uKSk7CisgICAgICAg
IGZ1bmN0aW9uSW5mby5ib2R5LT5zZXRMb2MoZnVuY3Rpb25JbmZvLnN0YXJ0TGluZSwgZnVuY3Rp
b25JbmZvLmVuZExpbmUsIGxvY2F0aW9uLnN0YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRP
ZmZzZXQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMzU2LDQ1ICszNTQs
NDEgQEAgcHVibGljOgogICAgICAgICBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRp
b24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIAogICAgICAgICB1bnNpZ25l
ZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3Rh
cnQsIAogICAgICAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQs
IGJvb2wgaW5TdHJpY3RDb250ZXh0LCAKLSAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVj
dG9yS2luZCkKKyAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgdW5zaWdu
ZWQgcGFyYW1ldGVyQ291bnQsIEZ1bmN0aW9uUGFyc2VNb2RlIG1vZGUpCiAgICAgewogICAgICAg
ICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5jdGlvbkJvZHlOb2RlKAogICAgICAgICAg
ICAgbV9wYXJzZXJBcmVuYSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIHN0YXJ0Q29sdW1u
LCBlbmRDb2x1bW4sIAogICAgICAgICAgICAgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9u
TmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIAotICAgICAgICAgICAgaW5TdHJpY3RDb250ZXh0
LCBjb25zdHJ1Y3RvcktpbmQpOworICAgICAgICAgICAgaW5TdHJpY3RDb250ZXh0LCBjb25zdHJ1
Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBtb2RlKTsKICAgICB9CiAKLSNpZiBFTkFCTEUoRVM2
X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVBcnJvd0Z1
bmN0aW9uRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBQYXJzZXJG
dW5jdGlvbkluZm88QVNUQnVpbGRlcj4mIGluZm8pCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0
ZUFycm93RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0
IFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgZnVuY3Rpb25JbmZvKQogICAgIHsKLSAg
ICAgICAgU291cmNlQ29kZSBzb3VyY2UgPSBpbmZvLmZ1bmN0aW9uQm9keVR5cGUgPT0gQXJyb3dG
dW5jdGlvbkJvZHlFeHByZXNzaW9uCi0gICAgICAgICAgICA/IG1fc291cmNlQ29kZS0+c3ViQXJy
b3dFeHByZXNzaW9uKGluZm8uYXJyb3dGdW5jdGlvbk9mZnNldCwgaW5mby5lbmRGdW5jdGlvbk9m
ZnNldCwgaW5mby5ib2R5U3RhcnRMaW5lLCBpbmZvLmJvZHlTdGFydENvbHVtbikKLSAgICAgICAg
ICAgIDogbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKGluZm8uc3RhcnRGdW5jdGlvbk9mZnNl
dCwgaW5mby5lbmRGdW5jdGlvbk9mZnNldCwgaW5mby5ib2R5U3RhcnRMaW5lLCBpbmZvLmJvZHlT
dGFydENvbHVtbik7CisgICAgICAgIFNvdXJjZUNvZGUgc291cmNlID0gbV9zb3VyY2VDb2RlLT5z
dWJFeHByZXNzaW9uKGZ1bmN0aW9uSW5mby5zdGFydE9mZnNldCwgZnVuY3Rpb25JbmZvLmVuZE9m
ZnNldCwgZnVuY3Rpb25JbmZvLnN0YXJ0TGluZSwgZnVuY3Rpb25JbmZvLmJvZHlTdGFydENvbHVt
bik7CiAKLSAgICAgICAgRnVuY0V4cHJOb2RlKiByZXN1bHQgPSBuZXcgKG1fcGFyc2VyQXJlbmEp
IEZ1bmNFeHByTm9kZShsb2NhdGlvbiwgKmluZm8ubmFtZSwgaW5mby5ib2R5LCBzb3VyY2UsIGlu
Zm8ucGFyYW1ldGVycyk7Ci0gICAgICAgIGluZm8uYm9keS0+c2V0TG9jKGluZm8uYm9keVN0YXJ0
TGluZSwgaW5mby5ib2R5RW5kTGluZSwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxp
bmVTdGFydE9mZnNldCk7CisgICAgICAgIEZ1bmNFeHByTm9kZSogcmVzdWx0ID0gbmV3IChtX3Bh
cnNlckFyZW5hKSBGdW5jRXhwck5vZGUobG9jYXRpb24sICpmdW5jdGlvbkluZm8ubmFtZSwgZnVu
Y3Rpb25JbmZvLmJvZHksIHNvdXJjZSk7CisgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5LT5zZXRM
b2MoZnVuY3Rpb25JbmZvLnN0YXJ0TGluZSwgZnVuY3Rpb25JbmZvLmVuZExpbmUsIGxvY2F0aW9u
LnN0YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOwogICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIH0KLSNlbmRpZgogCiAgICAgTkVWRVJfSU5MSU5FIFByb3BlcnR5Tm9kZSog
Y3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgYm9vbCwKLSAgICAgICAgY29uc3QgSWRlbnRp
ZmllciogbmFtZSwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+JiBpbmZvLCBT
dXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKQorICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBuYW1l
LCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4mIGZ1bmN0aW9uSW5mbywgU3Vw
ZXJCaW5kaW5nIHN1cGVyQmluZGluZykKICAgICB7CiAgICAgICAgIEFTU0VSVChuYW1lKTsKLSAg
ICAgICAgaW5mby5ib2R5LT5zZXRMb2MoaW5mby5ib2R5U3RhcnRMaW5lLCBpbmZvLmJvZHlFbmRM
aW5lLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKLSAg
ICAgICAgaW5mby5ib2R5LT5zZXRJbmZlcnJlZE5hbWUoKm5hbWUpOwotICAgICAgICBTb3VyY2VD
b2RlIHNvdXJjZSA9IG1fc291cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihpbmZvLnN0YXJ0RnVuY3Rp
b25PZmZzZXQsIGluZm8uZW5kRnVuY3Rpb25PZmZzZXQsIGluZm8uYm9keVN0YXJ0TGluZSwgaW5m
by5ib2R5U3RhcnRDb2x1bW4pOwotICAgICAgICBGdW5jRXhwck5vZGUqIGZ1bmNFeHByID0gbmV3
IChtX3BhcnNlckFyZW5hKSBGdW5jRXhwck5vZGUobG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFt
ZXMtPm51bGxJZGVudGlmaWVyLCBpbmZvLmJvZHksIHNvdXJjZSwgaW5mby5wYXJhbWV0ZXJzKTsK
KyAgICAgICAgZnVuY3Rpb25JbmZvLmJvZHktPnNldExvYyhmdW5jdGlvbkluZm8uc3RhcnRMaW5l
LCBmdW5jdGlvbkluZm8uZW5kTGluZSwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxp
bmVTdGFydE9mZnNldCk7CisgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5LT5zZXRJbmZlcnJlZE5h
bWUoKm5hbWUpOworICAgICAgICBTb3VyY2VDb2RlIHNvdXJjZSA9IG1fc291cmNlQ29kZS0+c3Vi
RXhwcmVzc2lvbihmdW5jdGlvbkluZm8uc3RhcnRPZmZzZXQsIGZ1bmN0aW9uSW5mby5lbmRPZmZz
ZXQsIGZ1bmN0aW9uSW5mby5zdGFydExpbmUsIGZ1bmN0aW9uSW5mby5ib2R5U3RhcnRDb2x1bW4p
OworICAgICAgICBGdW5jRXhwck5vZGUqIGZ1bmNFeHByID0gbmV3IChtX3BhcnNlckFyZW5hKSBG
dW5jRXhwck5vZGUobG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVy
LCBmdW5jdGlvbkluZm8uYm9keSwgc291cmNlKTsKICAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJz
ZXJBcmVuYSkgUHJvcGVydHlOb2RlKCpuYW1lLCBmdW5jRXhwciwgdHlwZSwgUHJvcGVydHlOb2Rl
OjpVbmtub3duLCBzdXBlckJpbmRpbmcpOwogICAgIH0KICAgICAKICAgICBORVZFUl9JTkxJTkUg
UHJvcGVydHlOb2RlKiBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KFZNKiB2bSwgUGFyc2Vy
QXJlbmEmIHBhcnNlckFyZW5hLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQcm9w
ZXJ0eU5vZGU6OlR5cGUgdHlwZSwgYm9vbCwKLSAgICAgICAgZG91YmxlIG5hbWUsIGNvbnN0IFBh
cnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgaW5mbywgU3VwZXJCaW5kaW5nIHN1cGVyQmlu
ZGluZykKKyAgICAgICAgZG91YmxlIG5hbWUsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RC
dWlsZGVyPiYgZnVuY3Rpb25JbmZvLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKQogICAgIHsK
LSAgICAgICAgaW5mby5ib2R5LT5zZXRMb2MoaW5mby5ib2R5U3RhcnRMaW5lLCBpbmZvLmJvZHlF
bmRMaW5lLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsK
KyAgICAgICAgZnVuY3Rpb25JbmZvLmJvZHktPnNldExvYyhmdW5jdGlvbkluZm8uc3RhcnRMaW5l
LCBmdW5jdGlvbkluZm8uZW5kTGluZSwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxp
bmVTdGFydE9mZnNldCk7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gcGFyc2Vy
QXJlbmEuaWRlbnRpZmllckFyZW5hKCkubWFrZU51bWVyaWNJZGVudGlmaWVyKHZtLCBuYW1lKTsK
LSAgICAgICAgU291cmNlQ29kZSBzb3VyY2UgPSBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24o
aW5mby5zdGFydEZ1bmN0aW9uT2Zmc2V0LCBpbmZvLmVuZEZ1bmN0aW9uT2Zmc2V0LCBpbmZvLmJv
ZHlTdGFydExpbmUsIGluZm8uYm9keVN0YXJ0Q29sdW1uKTsKLSAgICAgICAgRnVuY0V4cHJOb2Rl
KiBmdW5jRXhwciA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRnVuY0V4cHJOb2RlKGxvY2F0aW9uLCB2
bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIsIGluZm8uYm9keSwgc291cmNlLCBpbmZv
LnBhcmFtZXRlcnMpOworICAgICAgICBTb3VyY2VDb2RlIHNvdXJjZSA9IG1fc291cmNlQ29kZS0+
c3ViRXhwcmVzc2lvbihmdW5jdGlvbkluZm8uc3RhcnRPZmZzZXQsIGZ1bmN0aW9uSW5mby5lbmRP
ZmZzZXQsIGZ1bmN0aW9uSW5mby5zdGFydExpbmUsIGZ1bmN0aW9uSW5mby5ib2R5U3RhcnRDb2x1
bW4pOworICAgICAgICBGdW5jRXhwck5vZGUqIGZ1bmNFeHByID0gbmV3IChtX3BhcnNlckFyZW5h
KSBGdW5jRXhwck5vZGUobG9jYXRpb24sIHZtLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmll
ciwgZnVuY3Rpb25JbmZvLmJvZHksIHNvdXJjZSk7CiAgICAgICAgIHJldHVybiBuZXcgKG1fcGFy
c2VyQXJlbmEpIFByb3BlcnR5Tm9kZShpZGVudCwgZnVuY0V4cHIsIHR5cGUsIFByb3BlcnR5Tm9k
ZTo6VW5rbm93biwgc3VwZXJCaW5kaW5nKTsKICAgICB9CiAKQEAgLTQyMCwyMSArNDE0LDIxIEBA
IHB1YmxpYzoKICAgICBFbGVtZW50Tm9kZSogY3JlYXRlRWxlbWVudExpc3QoaW50IGVsaXNpb25z
LCBFeHByZXNzaW9uTm9kZSogZXhwcikgeyByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBFbGVt
ZW50Tm9kZShlbGlzaW9ucywgZXhwcik7IH0KICAgICBFbGVtZW50Tm9kZSogY3JlYXRlRWxlbWVu
dExpc3QoRWxlbWVudE5vZGUqIGVsZW1zLCBpbnQgZWxpc2lvbnMsIEV4cHJlc3Npb25Ob2RlKiBl
eHByKSB7IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEVsZW1lbnROb2RlKGVsZW1zLCBlbGlz
aW9ucywgZXhwcik7IH0KIAotICAgIFBhcmFtZXRlck5vZGUqIGNyZWF0ZUZvcm1hbFBhcmFtZXRl
ckxpc3QoRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gcGF0dGVybikgeyByZXR1cm4gbmV3IChtX3BhcnNl
ckFyZW5hKSBQYXJhbWV0ZXJOb2RlKHBhdHRlcm4pOyB9Ci0gICAgUGFyYW1ldGVyTm9kZSogY3Jl
YXRlRm9ybWFsUGFyYW1ldGVyTGlzdChQYXJhbWV0ZXJOb2RlKiBsaXN0LCBEZXN0cnVjdHVyaW5n
UGF0dGVybiBwYXR0ZXJuKSB7IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFBhcmFtZXRlck5v
ZGUobGlzdCwgcGF0dGVybik7IH0KKyAgICBGb3JtYWxQYXJhbWV0ZXJMaXN0IGNyZWF0ZUZvcm1h
bFBhcmFtZXRlckxpc3QoKSB7IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEZ1bmN0aW9uUGFy
YW1ldGVycygpOyB9CisgICAgdm9pZCBhcHBlbmRQYXJhbWV0ZXIoRm9ybWFsUGFyYW1ldGVyTGlz
dCBsaXN0LCBEZXN0cnVjdHVyaW5nUGF0dGVybiBwYXR0ZXJuKSB7IGxpc3QtPmFwcGVuZChwYXR0
ZXJuKTsgfQogCiAgICAgQ2FzZUNsYXVzZU5vZGUqIGNyZWF0ZUNsYXVzZShFeHByZXNzaW9uTm9k
ZSogZXhwciwgSlNDOjpTb3VyY2VFbGVtZW50cyogc3RhdGVtZW50cykgeyByZXR1cm4gbmV3ICht
X3BhcnNlckFyZW5hKSBDYXNlQ2xhdXNlTm9kZShleHByLCBzdGF0ZW1lbnRzKTsgfQogICAgIENs
YXVzZUxpc3ROb2RlKiBjcmVhdGVDbGF1c2VMaXN0KENhc2VDbGF1c2VOb2RlKiBjbGF1c2UpIHsg
cmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgQ2xhdXNlTGlzdE5vZGUoY2xhdXNlKTsgfQogICAg
IENsYXVzZUxpc3ROb2RlKiBjcmVhdGVDbGF1c2VMaXN0KENsYXVzZUxpc3ROb2RlKiB0YWlsLCBD
YXNlQ2xhdXNlTm9kZSogY2xhdXNlKSB7IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIENsYXVz
ZUxpc3ROb2RlKHRhaWwsIGNsYXVzZSk7IH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZ1
bmNEZWNsU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IFBh
cnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgaW5mbykKKyAgICBTdGF0ZW1lbnROb2RlKiBj
cmVhdGVGdW5jRGVjbFN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBj
b25zdCBQYXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4mIGZ1bmN0aW9uSW5mbykKICAgICB7
Ci0gICAgICAgIEZ1bmNEZWNsTm9kZSogZGVjbCA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRnVuY0Rl
Y2xOb2RlKGxvY2F0aW9uLCAqaW5mby5uYW1lLCBpbmZvLmJvZHksCi0gICAgICAgICAgICBtX3Nv
dXJjZUNvZGUtPnN1YkV4cHJlc3Npb24oaW5mby5zdGFydEZ1bmN0aW9uT2Zmc2V0LCBpbmZvLmVu
ZEZ1bmN0aW9uT2Zmc2V0LCBpbmZvLmJvZHlTdGFydExpbmUsIGluZm8uYm9keVN0YXJ0Q29sdW1u
KSwgaW5mby5wYXJhbWV0ZXJzKTsKLSAgICAgICAgaWYgKCppbmZvLm5hbWUgPT0gbV92bS0+cHJv
cGVydHlOYW1lcy0+YXJndW1lbnRzKQorICAgICAgICBGdW5jRGVjbE5vZGUqIGRlY2wgPSBuZXcg
KG1fcGFyc2VyQXJlbmEpIEZ1bmNEZWNsTm9kZShsb2NhdGlvbiwgKmZ1bmN0aW9uSW5mby5uYW1l
LCBmdW5jdGlvbkluZm8uYm9keSwKKyAgICAgICAgICAgIG1fc291cmNlQ29kZS0+c3ViRXhwcmVz
c2lvbihmdW5jdGlvbkluZm8uc3RhcnRPZmZzZXQsIGZ1bmN0aW9uSW5mby5lbmRPZmZzZXQsIGZ1
bmN0aW9uSW5mby5zdGFydExpbmUsIGZ1bmN0aW9uSW5mby5ib2R5U3RhcnRDb2x1bW4pKTsKKyAg
ICAgICAgaWYgKCpmdW5jdGlvbkluZm8ubmFtZSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcmd1
bWVudHMpCiAgICAgICAgICAgICB1c2VzQXJndW1lbnRzKCk7CiAgICAgICAgIG1fc2NvcGUubV9m
dW5jRGVjbGFyYXRpb25zLmFwcGVuZChkZWNsLT5ib2R5KCkpOwotICAgICAgICBpbmZvLmJvZHkt
PnNldExvYyhpbmZvLmJvZHlTdGFydExpbmUsIGluZm8uYm9keUVuZExpbmUsIGxvY2F0aW9uLnN0
YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOworICAgICAgICBmdW5jdGlvbklu
Zm8uYm9keS0+c2V0TG9jKGZ1bmN0aW9uSW5mby5zdGFydExpbmUsIGZ1bmN0aW9uSW5mby5lbmRM
aW5lLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKICAg
ICAgICAgcmV0dXJuIGRlY2w7CiAgICAgfQogCkBAIC00ODYsOSArNDgwLDkgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKLSAgICBTdGF0ZW1lbnROb2RlKiBj
cmVhdGVGb3JJbkxvb3AoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUGFzc1JlZlB0
cjxEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU+IHBhdHRlcm4sIEV4cHJlc3Npb25Ob2RlKiBpdGVy
LCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZVN0YXJ0
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZURpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZUVu
ZCwgaW50IHN0YXJ0LCBpbnQgZW5kKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZvckluTG9v
cChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBEZXN0cnVjdHVyaW5nUGF0dGVybiBw
YXR0ZXJuLCBFeHByZXNzaW9uTm9kZSogaXRlciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50cywg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGVTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVEaXZv
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVFbmQsIGludCBzdGFydCwgaW50IGVuZCkKICAgICB7
Ci0gICAgICAgIGF1dG8gbGV4cHIgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIERlc3RydWN0dXJpbmdB
c3NpZ25tZW50Tm9kZShsb2NhdGlvbiwgcGF0dGVybi5nZXQoKSwgMCk7CisgICAgICAgIGF1dG8g
bGV4cHIgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIERlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZShs
b2NhdGlvbiwgcGF0dGVybiwgMCk7CiAgICAgICAgIHJldHVybiBjcmVhdGVGb3JJbkxvb3AobG9j
YXRpb24sIGxleHByLCBpdGVyLCBzdGF0ZW1lbnRzLCBlU3RhcnQsIGVEaXZvdCwgZUVuZCwgc3Rh
cnQsIGVuZCk7CiAgICAgfQogICAgIApAQCAtNTAwLDkgKzQ5NCw5IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRl
Rm9yT2ZMb29wKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFBhc3NSZWZQdHI8RGVz
dHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlPiBwYXR0ZXJuLCBFeHByZXNzaW9uTm9kZSogaXRlciwgU3Rh
dGVtZW50Tm9kZSogc3RhdGVtZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVTdGFydCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGVEaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVFbmQsIGlu
dCBzdGFydCwgaW50IGVuZCkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVGb3JPZkxvb3AoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gcGF0dGVy
biwgRXhwcmVzc2lvbk5vZGUqIGl0ZXIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudHMsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBlU3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlRGl2b3QsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBlRW5kLCBpbnQgc3RhcnQsIGludCBlbmQpCiAgICAgewotICAg
ICAgICBhdXRvIGxleHByID0gbmV3IChtX3BhcnNlckFyZW5hKSBEZXN0cnVjdHVyaW5nQXNzaWdu
bWVudE5vZGUobG9jYXRpb24sIHBhdHRlcm4uZ2V0KCksIDApOworICAgICAgICBhdXRvIGxleHBy
ID0gbmV3IChtX3BhcnNlckFyZW5hKSBEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5vZGUobG9jYXRp
b24sIHBhdHRlcm4sIDApOwogICAgICAgICByZXR1cm4gY3JlYXRlRm9yT2ZMb29wKGxvY2F0aW9u
LCBsZXhwciwgaXRlciwgc3RhdGVtZW50cywgZVN0YXJ0LCBlRGl2b3QsIGVFbmQsIHN0YXJ0LCBl
bmQpOwogICAgIH0KIApAQCAtNzM4LDE0ICs3MzIsMTQgQEAgcHVibGljOgogCiAgICAgYm9vbCBp
c1Jlc29sdmUoRXhwcmVzc2lvbk5vZGUqIGV4cHIpIGNvbnN0IHsgcmV0dXJuIGV4cHItPmlzUmVz
b2x2ZU5vZGUoKTsgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZURlc3RydWN0dXJpbmdB
c3NpZ25tZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFBhc3NSZWZQdHI8RGVz
dHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlPiBwYXR0ZXJuLCBFeHByZXNzaW9uTm9kZSogaW5pdGlhbGl6
ZXIpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZURlc3RydWN0dXJpbmdBc3NpZ25tZW50KGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIERlc3RydWN0dXJpbmdQYXR0ZXJuIHBhdHRl
cm4sIEV4cHJlc3Npb25Ob2RlKiBpbml0aWFsaXplcikKICAgICB7Ci0gICAgICAgIHJldHVybiBu
ZXcgKG1fcGFyc2VyQXJlbmEpIERlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZShsb2NhdGlvbiwg
cGF0dGVybi5nZXQoKSwgaW5pdGlhbGl6ZXIpOworICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNl
ckFyZW5hKSBEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5vZGUobG9jYXRpb24sIHBhdHRlcm4sIGlu
aXRpYWxpemVyKTsKICAgICB9CiAgICAgCiAgICAgQXJyYXlQYXR0ZXJuIGNyZWF0ZUFycmF5UGF0
dGVybihjb25zdCBKU1Rva2VuTG9jYXRpb24mKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEFycmF5
UGF0dGVybk5vZGU6OmNyZWF0ZSgpOworICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5h
KSBBcnJheVBhdHRlcm5Ob2RlKCk7CiAgICAgfQogICAgIAogICAgIHZvaWQgYXBwZW5kQXJyYXlQ
YXR0ZXJuU2tpcEVudHJ5KEFycmF5UGF0dGVybiBub2RlLCBjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uKQpAQCAtNzU1LDMyICs3NDksMzIgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBl
bmRBcnJheVBhdHRlcm5FbnRyeShBcnJheVBhdHRlcm4gbm9kZSwgY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbiwgRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gcGF0dGVybiwgRXhwcmVzc2lvbk5v
ZGUqIGRlZmF1bHRWYWx1ZSkKICAgICB7Ci0gICAgICAgIG5vZGUtPmFwcGVuZEluZGV4KEFycmF5
UGF0dGVybk5vZGU6OkJpbmRpbmdUeXBlOjpFbGVtZW50LCBsb2NhdGlvbiwgcGF0dGVybi5nZXQo
KSwgZGVmYXVsdFZhbHVlKTsKKyAgICAgICAgbm9kZS0+YXBwZW5kSW5kZXgoQXJyYXlQYXR0ZXJu
Tm9kZTo6QmluZGluZ1R5cGU6OkVsZW1lbnQsIGxvY2F0aW9uLCBwYXR0ZXJuLCBkZWZhdWx0VmFs
dWUpOwogICAgIH0KIAogICAgIHZvaWQgYXBwZW5kQXJyYXlQYXR0ZXJuUmVzdEVudHJ5KEFycmF5
UGF0dGVybiBub2RlLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBEZXN0cnVjdHVy
aW5nUGF0dGVybiBwYXR0ZXJuKQogICAgIHsKLSAgICAgICAgbm9kZS0+YXBwZW5kSW5kZXgoQXJy
YXlQYXR0ZXJuTm9kZTo6QmluZGluZ1R5cGU6OlJlc3RFbGVtZW50LCBsb2NhdGlvbiwgcGF0dGVy
bi5nZXQoKSwgbnVsbHB0cik7CisgICAgICAgIG5vZGUtPmFwcGVuZEluZGV4KEFycmF5UGF0dGVy
bk5vZGU6OkJpbmRpbmdUeXBlOjpSZXN0RWxlbWVudCwgbG9jYXRpb24sIHBhdHRlcm4sIG51bGxw
dHIpOwogICAgIH0KIAogICAgIHZvaWQgZmluaXNoQXJyYXlQYXR0ZXJuKEFycmF5UGF0dGVybiBu
b2RlLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCiAgICAgewotICAgICAg
ICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLmdldCgpLCBkaXZvdFN0YXJ0LCBkaXZvdCwgZGl2
b3RFbmQpOworICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBkaXZvdFN0YXJ0LCBk
aXZvdCwgZGl2b3RFbmQpOwogICAgIH0KICAgICAKICAgICBPYmplY3RQYXR0ZXJuIGNyZWF0ZU9i
amVjdFBhdHRlcm4oY29uc3QgSlNUb2tlbkxvY2F0aW9uJikKICAgICB7Ci0gICAgICAgIHJldHVy
biBPYmplY3RQYXR0ZXJuTm9kZTo6Y3JlYXRlKCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fcGFy
c2VyQXJlbmEpIE9iamVjdFBhdHRlcm5Ob2RlKCk7CiAgICAgfQogICAgIAogICAgIHZvaWQgYXBw
ZW5kT2JqZWN0UGF0dGVybkVudHJ5KE9iamVjdFBhdHRlcm4gbm9kZSwgY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgYm9vbCB3YXNTdHJpbmcsIGNvbnN0IElkZW50aWZpZXImIGlkZW50
aWZpZXIsIERlc3RydWN0dXJpbmdQYXR0ZXJuIHBhdHRlcm4sIEV4cHJlc3Npb25Ob2RlKiBkZWZh
dWx0VmFsdWUpCiAgICAgewotICAgICAgICBub2RlLT5hcHBlbmRFbnRyeShsb2NhdGlvbiwgaWRl
bnRpZmllciwgd2FzU3RyaW5nLCBwYXR0ZXJuLmdldCgpLCBkZWZhdWx0VmFsdWUpOworICAgICAg
ICBub2RlLT5hcHBlbmRFbnRyeShsb2NhdGlvbiwgaWRlbnRpZmllciwgd2FzU3RyaW5nLCBwYXR0
ZXJuLCBkZWZhdWx0VmFsdWUpOwogICAgIH0KICAgICAKICAgICBCaW5kaW5nUGF0dGVybiBjcmVh
dGVCaW5kaW5nTG9jYXRpb24oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmll
ciYgYm91bmRQcm9wZXJ0eSwgY29uc3QgSlNUZXh0UG9zaXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZW5kKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEJpbmRpbmdOb2RlOjpjcmVh
dGUoYm91bmRQcm9wZXJ0eSwgc3RhcnQsIGVuZCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fcGFy
c2VyQXJlbmEpIEJpbmRpbmdOb2RlKGJvdW5kUHJvcGVydHksIHN0YXJ0LCBlbmQpOwogICAgIH0K
IAogICAgIHZvaWQgc2V0RW5kT2Zmc2V0KE5vZGUqIG5vZGUsIGludCBvZmZzZXQpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAkocmV2aXNpb24gMTg2ODA4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ5NCw3ICs0OTQsNyBAQCBzdGF0aWMgY29uc3QgTENoYXIgc2luZ2xlQ2hhcmFjdGVyRXNjYXBl
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogTGV4ZXI8VD46OkxleGVyKFZNKiB2bSwgSlNQYXJz
ZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSkKLSAgICA6IG1faXNSZXBhcnNpbmcoZmFsc2UpCisg
ICAgOiBtX2lzUmVwYXJzaW5nRnVuY3Rpb24oZmFsc2UpCiAgICAgLCBtX3ZtKHZtKQogICAgICwg
bV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKGJ1aWx0aW5Nb2RlID09IEpTUGFyc2VyQnVpbHRpbk1v
ZGU6OkJ1aWx0aW4pCiB7CkBAIC0xNzE1LDcgKzE3MTUsNiBAQCBib29sIExleGVyPFQ+OjpuZXh0
VG9rZW5Jc0NvbG9uKCkKICAgICByZXR1cm4gY29kZSA8IG1fY29kZUVuZCAmJiAqY29kZSA9PSAn
Oic7CiB9CiAKLSNpZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQogdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CiB2b2lkIExleGVyPFQ+OjpzZXRUb2tlblBvc2l0aW9uKEpTVG9rZW4qIHRv
a2VuUmVjb3JkKQogewpAQCAtMTcyNSw3ICsxNzI0LDYgQEAgdm9pZCBMZXhlcjxUPjo6c2V0VG9r
ZW5Qb3NpdGlvbihKU1Rva2VuKgogICAgIHRva2VuRGF0YS0+bGluZVN0YXJ0T2Zmc2V0ID0gY3Vy
cmVudExpbmVTdGFydE9mZnNldCgpOwogICAgIEFTU0VSVCh0b2tlbkRhdGEtPm9mZnNldCA+PSB0
b2tlbkRhdGEtPmxpbmVTdGFydE9mZnNldCk7CiB9Ci0jZW5kaWYKIAogdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CiBKU1Rva2VuVHlwZSBMZXhlcjxUPjo6bGV4KEpTVG9rZW4qIHRva2VuUmVjb3JkLCB1
bnNpZ25lZCBsZXhlckZsYWdzLCBib29sIHN0cmljdE1vZGUpCkBAIC0yNDExLDcgKzI0MDksNyBA
QCB2b2lkIExleGVyPFQ+OjpjbGVhcigpCiAgICAgVmVjdG9yPFVDaGFyPiBuZXdCdWZmZXJGb3JS
YXdUZW1wbGF0ZVN0cmluZzE2OwogICAgIG1fYnVmZmVyRm9yUmF3VGVtcGxhdGVTdHJpbmcxNi5z
d2FwKG5ld0J1ZmZlckZvclJhd1RlbXBsYXRlU3RyaW5nMTYpOwogCi0gICAgbV9pc1JlcGFyc2lu
ZyA9IGZhbHNlOworICAgIG1faXNSZXBhcnNpbmdGdW5jdGlvbiA9IGZhbHNlOwogfQogCiAvLyBJ
bnN0YW50aWF0ZSB0aGUgdHdvIGZsYXZvcnMgb2YgTGV4ZXIgd2UgbmVlZCBpbnN0ZWFkIG9mIHB1
dHRpbmcgbW9zdCBvZiB0aGlzIGZpbGUgaW4gTGV4ZXIuaApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9MZXhlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTGV4ZXIuaAkocmV2aXNpb24gMTg2ODA4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9MZXhlci5oCSh3b3JraW5nIGNvcHkpCkBAIC04NCwxMiArODQsMTAgQEAgcHVi
bGljOgogCiAgICAgLy8gRnVuY3Rpb25zIHRvIHNldCB1cCBwYXJzaW5nLgogICAgIHZvaWQgc2V0
Q29kZShjb25zdCBTb3VyY2VDb2RlJiwgUGFyc2VyQXJlbmEqKTsKLSAgICB2b2lkIHNldElzUmVw
YXJzaW5nKCkgeyBtX2lzUmVwYXJzaW5nID0gdHJ1ZTsgfQotICAgIGJvb2wgaXNSZXBhcnNpbmco
KSBjb25zdCB7IHJldHVybiBtX2lzUmVwYXJzaW5nOyB9CisgICAgdm9pZCBzZXRJc1JlcGFyc2lu
Z0Z1bmN0aW9uKCkgeyBtX2lzUmVwYXJzaW5nRnVuY3Rpb24gPSB0cnVlOyB9CisgICAgYm9vbCBp
c1JlcGFyc2luZ0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc1JlcGFyc2luZ0Z1bmN0aW9u
OyB9CiAKLSNpZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQogICAgIHZvaWQgc2V0
VG9rZW5Qb3NpdGlvbihKU1Rva2VuKiB0b2tlblJlY29yZCk7Ci0jZW5kaWYKICAgICBKU1Rva2Vu
VHlwZSBsZXgoSlNUb2tlbiosIHVuc2lnbmVkLCBib29sIHN0cmljdE1vZGUpOwogICAgIGJvb2wg
bmV4dFRva2VuSXNDb2xvbigpOwogICAgIGludCBsaW5lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4g
bV9saW5lTnVtYmVyOyB9CkBAIC0yMjQsNyArMjIyLDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBU
KiBtX2xpbmVTdGFydDsKICAgICBKU1RleHRQb3NpdGlvbiBtX3Bvc2l0aW9uQmVmb3JlTGFzdE5l
d2xpbmU7CiAgICAgSlNUb2tlbkxvY2F0aW9uIG1fbGFzdFRvY2tlbkxvY2F0aW9uOwotICAgIGJv
b2wgbV9pc1JlcGFyc2luZzsKKyAgICBib29sIG1faXNSZXBhcnNpbmdGdW5jdGlvbjsKICAgICBi
b29sIG1fYXRMaW5lU3RhcnQ7CiAgICAgYm9vbCBtX2Vycm9yOwogICAgIFN0cmluZyBtX2xleEVy
cm9yTWVzc2FnZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0
cnVjdG9ycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZUNvbnN0cnVjdG9ycy5oCShyZXZpc2lvbiAxODY4MDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAkod29ya2luZyBjb3B5KQpAQCAtODIwLDM0ICs4
MjAsMjIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBQYXJh
bWV0ZXJOb2RlOjpQYXJhbWV0ZXJOb2RlKFBhc3NSZWZQdHI8RGVzdHJ1Y3R1cmluZ1BhdHRlcm5O
b2RlPiBwYXR0ZXJuKQotICAgICAgICA6IG1fcGF0dGVybihwYXR0ZXJuKQotICAgICAgICAsIG1f
bmV4dCgwKQorICAgIGlubGluZSBGdW5jdGlvblBhcmFtZXRlcnM6OkZ1bmN0aW9uUGFyYW1ldGVy
cygpCiAgICAgewotICAgICAgICBBU1NFUlQobV9wYXR0ZXJuKTsKICAgICB9CiAKLSAgICBpbmxp
bmUgUGFyYW1ldGVyTm9kZTo6UGFyYW1ldGVyTm9kZShQYXJhbWV0ZXJOb2RlKiBwcmV2aW91cywg
UGFzc1JlZlB0cjxEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU+IHBhdHRlcm4pCi0gICAgICAgIDog
bV9wYXR0ZXJuKHBhdHRlcm4pCi0gICAgICAgICwgbV9uZXh0KDApCi0gICAgewotICAgICAgICBw
cmV2aW91cy0+bV9uZXh0ID0gdGhpczsKLSAgICAgICAgQVNTRVJUKG1fcGF0dGVybik7Ci0gICAg
ICAgIEFTU0VSVChwcmV2aW91cy0+bV9wYXR0ZXJuKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgRnVu
Y0V4cHJOb2RlOjpGdW5jRXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSwgUGFyYW1ldGVyTm9kZSogcGFyYW1ldGVyKQorICAgIGlubGluZSBG
dW5jRXhwck5vZGU6OkZ1bmNFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9u
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlKQogICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQog
ICAgICAgICAsIG1fYm9keShib2R5KQogICAgIHsKLSAgICAgICAgbV9ib2R5LT5maW5pc2hQYXJz
aW5nKHNvdXJjZSwgcGFyYW1ldGVyLCBpZGVudCwgRnVuY3Rpb25FeHByZXNzaW9uKTsKKyAgICAg
ICAgbV9ib2R5LT5maW5pc2hQYXJzaW5nKHNvdXJjZSwgaWRlbnQsIEZ1bmN0aW9uRXhwcmVzc2lv
bik7CiAgICAgfQogCi0gICAgaW5saW5lIEZ1bmNEZWNsTm9kZTo6RnVuY0RlY2xOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5j
dGlvbkJvZHlOb2RlKiBib2R5LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcmFtZXRlck5v
ZGUqIHBhcmFtZXRlcikKKyAgICBpbmxpbmUgRnVuY0RlY2xOb2RlOjpGdW5jRGVjbE5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEZ1
bmN0aW9uQm9keU5vZGUqIGJvZHksIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKICAgICAgICAg
OiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fYm9keShib2R5KQogICAgIHsK
LSAgICAgICAgbV9ib2R5LT5maW5pc2hQYXJzaW5nKHNvdXJjZSwgcGFyYW1ldGVyLCBpZGVudCwg
RnVuY3Rpb25EZWNsYXJhdGlvbik7CisgICAgICAgIG1fYm9keS0+ZmluaXNoUGFyc2luZyhzb3Vy
Y2UsIGlkZW50LCBGdW5jdGlvbkRlY2xhcmF0aW9uKTsKICAgICB9CiAKICNpZiBFTkFCTEUoRVM2
X0NMQVNTX1NZTlRBWCkKQEAgLTk0MywyNiArOTMxLDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IHsKICAgICB9CiAgICAgCi0gICAgaW5saW5lIFJlZjxBcnJheVBhdHRlcm5Ob2RlPiBBcnJheVBh
dHRlcm5Ob2RlOjpjcmVhdGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
QXJyYXlQYXR0ZXJuTm9kZSk7Ci0gICAgfQotICAgIAogICAgIGlubGluZSBPYmplY3RQYXR0ZXJu
Tm9kZTo6T2JqZWN0UGF0dGVybk5vZGUoKQogICAgICAgICA6IERlc3RydWN0dXJpbmdQYXR0ZXJu
Tm9kZSgpCiAgICAgewogICAgIH0KICAgICAKLSAgICBpbmxpbmUgUmVmPE9iamVjdFBhdHRlcm5O
b2RlPiBPYmplY3RQYXR0ZXJuTm9kZTo6Y3JlYXRlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IE9iamVjdFBhdHRlcm5Ob2RlKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgUmVm
PEJpbmRpbmdOb2RlPiBCaW5kaW5nTm9kZTo6Y3JlYXRlKGNvbnN0IElkZW50aWZpZXImIGJvdW5k
UHJvcGVydHksIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBzdGFydCwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGVuZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJpbmRpbmdOb2Rl
KGJvdW5kUHJvcGVydHksIHN0YXJ0LCBlbmQpKTsKLSAgICB9Ci0gICAgCiAgICAgaW5saW5lIEJp
bmRpbmdOb2RlOjpCaW5kaW5nTm9kZShjb25zdCBJZGVudGlmaWVyJiBib3VuZFByb3BlcnR5LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlbmQpCiAg
ICAgICAgIDogRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKCkKICAgICAgICAgLCBtX2Rpdm90U3Rh
cnQoc3RhcnQpCkBAIC05NzEsNyArOTQ0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAg
IH0KICAgICAKLSAgICBpbmxpbmUgRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlOjpEZXN0cnVj
dHVyaW5nQXNzaWdubWVudE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUGFz
c1JlZlB0cjxEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU+IGJpbmRpbmdzLCBFeHByZXNzaW9uTm9k
ZSogaW5pdGlhbGl6ZXIpCisgICAgaW5saW5lIERlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZTo6
RGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogYmluZGluZ3MsIEV4cHJlc3Npb25Ob2RlKiBp
bml0aWFsaXplcikKICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAg
LCBtX2JpbmRpbmdzKGJpbmRpbmdzKQogICAgICAgICAsIG1faW5pdGlhbGl6ZXIoaW5pdGlhbGl6
ZXIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAkocmV2aXNpb24g
MTg2ODA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTExNyw3ICsxMTcsNyBAQCBTdGF0ZW1lbnROb2RlKiBTY29wZU5vZGU6OnNp
bmdsZVN0YXRlbWVuCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm9ncmFt
Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1Qcm9ncmFtTm9kZTo6UHJvZ3Jh
bU5vZGUoUGFyc2VyQXJlbmEmIHBhcnNlckFyZW5hLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0
YXJ0TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVk
IHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJl
biwgVmFyU3RhY2smIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrJiBmdW5jU3RhY2ssIElkZW50aWZp
ZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVG
ZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKK1Byb2dyYW1Ob2RlOjpQcm9ncmFt
Tm9kZShQYXJzZXJBcmVuYSYgcGFyc2VyQXJlbmEsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3Rh
cnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5zaWduZWQg
c3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVu
LCBWYXJTdGFjayYgdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2smIGZ1bmNTdGFjaywgSWRlbnRpZmll
clNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQog
ICAgIDogU2NvcGVOb2RlKHBhcnNlckFyZW5hLCBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwg
c291cmNlLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMs
IGZlYXR1cmVzLCBudW1Db25zdGFudHMpCiAgICAgLCBtX3N0YXJ0Q29sdW1uKHN0YXJ0Q29sdW1u
KQogICAgICwgbV9lbmRDb2x1bW4oZW5kQ29sdW1uKQpAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQg
UHJvZ3JhbU5vZGU6OnNldENsb3NlZFZhcmlhYmxlcyhWZWMKIAogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tIEV2YWxOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAK
LUV2YWxOb2RlOjpFdmFsTm9kZShQYXJzZXJBcmVuYSYgcGFyc2VyQXJlbmEsIGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2Nh
dGlvbiwgdW5zaWduZWQsIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMqIGNoaWxk
cmVuLCBWYXJTdGFjayYgdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2smIGZ1bmNTdGFjaywgSWRlbnRp
ZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29k
ZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQorRXZhbE5vZGU6OkV2YWxOb2Rl
KFBhcnNlckFyZW5hJiBwYXJzZXJBcmVuYSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExv
Y2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCwgdW5z
aWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrJiB2YXJT
dGFjaywgRnVuY3Rpb25TdGFjayYgZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZh
cmlhYmxlcywgRnVuY3Rpb25QYXJhbWV0ZXJzKiwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBD
b2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCiAgICAgOiBTY29wZU5vZGUo
cGFyc2VyQXJlbmEsIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBzb3VyY2UsIGNoaWxkcmVu
LCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgZmVhdHVyZXMsIG51bUNv
bnN0YW50cykKICAgICAsIG1fZW5kQ29sdW1uKGVuZENvbHVtbikKIHsKQEAgLTEzOSwzOSArMTM5
LDExIEBAIEV2YWxOb2RlOjpFdmFsTm9kZShQYXJzZXJBcmVuYSYgcGFyc2VyQXIKIAogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9uQm9keU5vZGUgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIAotUmVmPEZ1bmN0aW9uUGFyYW1ldGVycz4gRnVuY3Rpb25QYXJh
bWV0ZXJzOjpjcmVhdGUoUGFyYW1ldGVyTm9kZSogZmlyc3RQYXJhbWV0ZXIpCi17Ci0gICAgdW5z
aWduZWQgcGFyYW1ldGVyQ291bnQgPSAwOwotICAgIGZvciAoUGFyYW1ldGVyTm9kZSogcGFyYW1l
dGVyID0gZmlyc3RQYXJhbWV0ZXI7IHBhcmFtZXRlcjsgcGFyYW1ldGVyID0gcGFyYW1ldGVyLT5u
ZXh0UGFyYW0oKSkKLSAgICAgICAgKytwYXJhbWV0ZXJDb3VudDsKLQotICAgIHNpemVfdCBvYmpl
Y3RTaXplID0gc2l6ZW9mKEZ1bmN0aW9uUGFyYW1ldGVycykgLSBzaXplb2Yodm9pZCopICsgc2l6
ZW9mKERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSopICogcGFyYW1ldGVyQ291bnQ7Ci0gICAgdm9p
ZCogc2xvdCA9IGZhc3RNYWxsb2Mob2JqZWN0U2l6ZSk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgKHNsb3QpIEZ1bmN0aW9uUGFyYW1ldGVycyhmaXJzdFBhcmFtZXRlciwgcGFyYW1ldGVyQ291
bnQpKTsKLX0KLQotRnVuY3Rpb25QYXJhbWV0ZXJzOjpGdW5jdGlvblBhcmFtZXRlcnMoUGFyYW1l
dGVyTm9kZSogZmlyc3RQYXJhbWV0ZXIsIHVuc2lnbmVkIHNpemUpCi0gICAgOiBtX3NpemUoc2l6
ZSkKLXsKLSAgICB1bnNpZ25lZCBpID0gMDsKLSAgICBmb3IgKFBhcmFtZXRlck5vZGUqIHBhcmFt
ZXRlciA9IGZpcnN0UGFyYW1ldGVyOyBwYXJhbWV0ZXI7IHBhcmFtZXRlciA9IHBhcmFtZXRlci0+
bmV4dFBhcmFtKCkpIHsKLSAgICAgICAgYXV0byBwYXR0ZXJuID0gcGFyYW1ldGVyLT5wYXR0ZXJu
KCk7Ci0gICAgICAgIHBhdHRlcm4tPnJlZigpOwotICAgICAgICBwYXR0ZXJucygpW2krK10gPSBw
YXR0ZXJuOwotICAgIH0KLX0KLQotRnVuY3Rpb25QYXJhbWV0ZXJzOjp+RnVuY3Rpb25QYXJhbWV0
ZXJzKCkKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCi0gICAg
ICAgIHBhdHRlcm5zKClbaV0tPmRlcmVmKCk7Ci19Ci0KIEZ1bmN0aW9uQm9keU5vZGU6OkZ1bmN0
aW9uQm9keU5vZGUoCiAgICAgUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0
YXJ0TG9jYXRpb24sIAogICAgIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVu
c2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIAotICAgIGludCBmdW5jdGlv
bktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0
LAotICAgIGJvb2wgaXNJblN0cmljdENvbnRleHQsIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3Rv
cktpbmQpCisgICAgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3Rh
cnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIAorICAgIENv
bnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBG
dW5jdGlvblBhcnNlTW9kZSBtb2RlKQogICAgICAgICA6IFN0YXRlbWVudE5vZGUoZW5kTG9jYXRp
b24pCiAgICAgICAgICwgbV9zdGFydENvbHVtbihzdGFydENvbHVtbikKICAgICAgICAgLCBtX2Vu
ZENvbHVtbihlbmRDb2x1bW4pCkBAIC0xNzksMTYgKzE1MSwxNyBAQCBGdW5jdGlvbkJvZHlOb2Rl
OjpGdW5jdGlvbkJvZHlOb2RlKAogICAgICAgICAsIG1fZnVuY3Rpb25OYW1lU3RhcnQoZnVuY3Rp
b25OYW1lU3RhcnQpCiAgICAgICAgICwgbV9wYXJhbWV0ZXJzU3RhcnQocGFyYW1ldGVyc1N0YXJ0
KQogICAgICAgICAsIG1fc3RhcnRTdGFydE9mZnNldChzdGFydExvY2F0aW9uLnN0YXJ0T2Zmc2V0
KQorICAgICAgICAsIG1fcGFyYW1ldGVyQ291bnQocGFyYW1ldGVyQ291bnQpCisgICAgICAgICwg
bV9wYXJzZU1vZGUobW9kZSkKICAgICAgICAgLCBtX2lzSW5TdHJpY3RDb250ZXh0KGlzSW5TdHJp
Y3RDb250ZXh0KQogICAgICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihjb25zdHJ1Y3RvcktpbmQpKQogewogICAgIEFTU0VSVChtX2NvbnN0cnVjdG9yS2luZCA9
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSk7CiB9CiAKLXZvaWQgRnVu
Y3Rpb25Cb2R5Tm9kZTo6ZmluaXNoUGFyc2luZyhjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBh
cmFtZXRlck5vZGUqIGZpcnN0UGFyYW1ldGVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgZW51
bSBGdW5jdGlvbk1vZGUgZnVuY3Rpb25Nb2RlKQordm9pZCBGdW5jdGlvbkJvZHlOb2RlOjpmaW5p
c2hQYXJzaW5nKGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgY29uc3QgSWRlbnRpZmllciYgaWRl
bnQsIGVudW0gRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSkKIHsKICAgICBtX3NvdXJjZSA9IHNv
dXJjZTsKLSAgICBtX3BhcmFtZXRlcnMgPSBGdW5jdGlvblBhcmFtZXRlcnM6OmNyZWF0ZShmaXJz
dFBhcmFtZXRlcik7CiAgICAgbV9pZGVudCA9IGlkZW50OwogICAgIG1fZnVuY3Rpb25Nb2RlID0g
ZnVuY3Rpb25Nb2RlOwogfQpAQCAtMjAxLDE3ICsxNzQsMTcgQEAgdm9pZCBGdW5jdGlvbkJvZHlO
b2RlOjpzZXRFbmRQb3NpdGlvbihKUwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0gRnVuY3Rpb25Ob2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUZ1bmN0aW9u
Tm9kZTo6RnVuY3Rpb25Ob2RlKFBhcnNlckFyZW5hJiBwYXJzZXJBcmVuYSwgY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0
aW9uLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVt
ZW50cyogY2hpbGRyZW4sIFZhclN0YWNrJiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayYgZnVuY1N0
YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYg
c291cmNlQ29kZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQorRnVu
Y3Rpb25Ob2RlOjpGdW5jdGlvbk5vZGUoUGFyc2VyQXJlbmEmIHBhcnNlckFyZW5hLCBjb25zdCBK
U1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5k
TG9jYXRpb24sIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJj
ZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2smIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrJiBm
dW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBGdW5jdGlvblBhcmFt
ZXRlcnMqIHBhcmFtZXRlcnMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIENvZGVGZWF0
dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKICAgICA6IFNjb3BlTm9kZShwYXJzZXJB
cmVuYSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIHNvdXJjZUNvZGUsIGNoaWxkcmVuLCB2
YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgZmVhdHVyZXMsIG51bUNvbnN0
YW50cykKKyAgICAsIG1fcGFyYW1ldGVycyhwYXJhbWV0ZXJzKQogICAgICwgbV9zdGFydENvbHVt
bihzdGFydENvbHVtbikKICAgICAsIG1fZW5kQ29sdW1uKGVuZENvbHVtbikKIHsKIH0KIAotdm9p
ZCBGdW5jdGlvbk5vZGU6OmZpbmlzaFBhcnNpbmcoUGFzc1JlZlB0cjxGdW5jdGlvblBhcmFtZXRl
cnM+IHBhcmFtZXRlcnMsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBlbnVtIEZ1bmN0aW9uTW9k
ZSBmdW5jdGlvbk1vZGUpCit2b2lkIEZ1bmN0aW9uTm9kZTo6ZmluaXNoUGFyc2luZyhjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCwgZW51bSBGdW5jdGlvbk1vZGUgZnVuY3Rpb25Nb2RlKQogewogICAg
IEFTU0VSVCghc291cmNlKCkuaXNOdWxsKCkpOwotICAgIG1fcGFyYW1ldGVycyA9IHBhcmFtZXRl
cnM7CiAgICAgbV9pZGVudCA9IGlkZW50OwogICAgIG1fZnVuY3Rpb25Nb2RlID0gZnVuY3Rpb25N
b2RlOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAkocmV2aXNpb24g
MTg2ODA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MSw2ICs0MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEFyZ3Vt
ZW50TGlzdE5vZGU7CiAgICAgY2xhc3MgQnl0ZWNvZGVHZW5lcmF0b3I7CiAgICAgY2xhc3MgRnVu
Y3Rpb25Cb2R5Tm9kZTsKKyAgICBjbGFzcyBGdW5jdGlvblBhcmFtZXRlcnM7CiAgICAgY2xhc3Mg
TGFiZWw7CiAgICAgY2xhc3MgUHJvcGVydHlMaXN0Tm9kZTsKICAgICBjbGFzcyBSZWFkTW9kaWZ5
UmVzb2x2ZU5vZGU7CkBAIC0xNTE2LDE5ICsxNTE3LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIFN0YXRlbWVudE5vZGUqIG1fZmluYWxseUJsb2NrOwogICAgIH07CiAKLSAgICBjbGFzcyBQ
YXJhbWV0ZXJOb2RlIDogcHVibGljIFBhcnNlckFyZW5hRGVsZXRhYmxlIHsKLSAgICBwdWJsaWM6
Ci0gICAgICAgIFBhcmFtZXRlck5vZGUoUGFzc1JlZlB0cjxEZXN0cnVjdHVyaW5nUGF0dGVybk5v
ZGU+KTsKLSAgICAgICAgUGFyYW1ldGVyTm9kZShQYXJhbWV0ZXJOb2RlKiwgUGFzc1JlZlB0cjxE
ZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU+KTsKLQotICAgICAgICBEZXN0cnVjdHVyaW5nUGF0dGVy
bk5vZGUqIHBhdHRlcm4oKSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm4uZ2V0KCk7IH0KLSAgICAg
ICAgUGFyYW1ldGVyTm9kZSogbmV4dFBhcmFtKCkgY29uc3QgeyByZXR1cm4gbV9uZXh0OyB9Ci0K
LSAgICBwcml2YXRlOgotICAgICAgICBSZWZQdHI8RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlPiBt
X3BhdHRlcm47Ci0gICAgICAgIFBhcmFtZXRlck5vZGUqIG1fbmV4dDsKLSAgICB9OwotCiAgICAg
Y2xhc3MgU2NvcGVOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUsIHB1YmxpYyBQYXJzZXJBcmVu
YVJvb3QgewogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBEZWNsYXJhdGlvblN0YWNrczo6
VmFyU3RhY2sgVmFyU3RhY2s7CkBAIC0xNTk4LDcgKzE1ODYsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIGNsYXNzIFByb2dyYW1Ob2RlIDogcHVibGljIFNjb3BlTm9kZSB7CiAgICAgcHVibGlj
OgotICAgICAgICBQcm9ncmFtTm9kZShQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCB1bnNpZ25lZCBzdGFydENvbHVt
biwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrJiwgRnVuY3Rp
b25TdGFjayYsIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVz
LCBpbnQgbnVtQ29uc3RhbnRzKTsKKyAgICAgICAgUHJvZ3JhbU5vZGUoUGFyc2VyQXJlbmEmLCBj
b25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwg
dW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMq
LCBWYXJTdGFjayYsIEZ1bmN0aW9uU3RhY2smLCBJZGVudGlmaWVyU2V0JiwgRnVuY3Rpb25QYXJh
bWV0ZXJzKiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50
cyk7CiAKICAgICAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4oKSBjb25zdCB7IHJldHVybiBtX3N0
YXJ0Q29sdW1uOyB9CiAgICAgICAgIHVuc2lnbmVkIGVuZENvbHVtbigpIGNvbnN0IHsgcmV0dXJu
IG1fZW5kQ29sdW1uOyB9CkBAIC0xNjE3LDcgKzE2MDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgIGNsYXNzIEV2YWxOb2RlIDogcHVibGljIFNjb3BlTm9kZSB7CiAgICAgcHVibGljOgotICAg
ICAgICBFdmFsTm9kZShQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQs
IGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWdu
ZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrJiwgRnVuY3Rpb25TdGFjayYs
IElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVt
Q29uc3RhbnRzKTsKKyAgICAgICAgRXZhbE5vZGUoUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgdW5zaWduZWQgc3Rh
cnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayYs
IEZ1bmN0aW9uU3RhY2smLCBJZGVudGlmaWVyU2V0JiwgRnVuY3Rpb25QYXJhbWV0ZXJzKiwgY29u
c3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CiAKICAgICAg
ICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBzdGFydENvbHVtbigpIGNvbnN0IHsgcmV0dXJuIDA7
IH0KICAgICAgICAgdW5zaWduZWQgZW5kQ29sdW1uKCkgY29uc3QgeyByZXR1cm4gbV9lbmRDb2x1
bW47IH0KQEAgLTE2MzAsMjMgKzE2MTgsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVu
c2lnbmVkIG1fZW5kQ29sdW1uOwogICAgIH07CiAKLSAgICBjbGFzcyBGdW5jdGlvblBhcmFtZXRl
cnMgOiBwdWJsaWMgUmVmQ291bnRlZDxGdW5jdGlvblBhcmFtZXRlcnM+IHsKLSAgICAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZ1bmN0
aW9uUGFyYW1ldGVycyk7CisgICAgY2xhc3MgRnVuY3Rpb25QYXJhbWV0ZXJzIDogcHVibGljIFBh
cnNlckFyZW5hRnJlZWFibGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFJlZjxGdW5j
dGlvblBhcmFtZXRlcnM+IGNyZWF0ZShQYXJhbWV0ZXJOb2RlKik7Ci0gICAgICAgIH5GdW5jdGlv
blBhcmFtZXRlcnMoKTsKLQotICAgICAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4g
bV9zaXplOyB9Ci0gICAgICAgIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogYXQodW5zaWduZWQg
aW5kZXgpIHsgQVNTRVJUKGluZGV4IDwgbV9zaXplKTsgcmV0dXJuIHBhdHRlcm5zKClbaW5kZXhd
OyB9CisgICAgICAgIEZ1bmN0aW9uUGFyYW1ldGVycygpOworICAgICAgICBBTFdBWVNfSU5MSU5F
IHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm5zLnNpemUoKTsgfQorICAg
ICAgICBBTFdBWVNfSU5MSU5FIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogYXQodW5zaWduZWQg
aW5kZXgpIHsgcmV0dXJuIG1fcGF0dGVybnNbaW5kZXhdOyB9CisgICAgICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBhcHBlbmQoRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiBwYXR0ZXJuKSB7IEFTU0VS
VChwYXR0ZXJuKTsgbV9wYXR0ZXJucy5hcHBlbmQocGF0dGVybik7IH0KIAogICAgIHByaXZhdGU6
Ci0gICAgICAgIEZ1bmN0aW9uUGFyYW1ldGVycyhQYXJhbWV0ZXJOb2RlKiwgdW5zaWduZWQgc2l6
ZSk7Ci0KLSAgICAgICAgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiogcGF0dGVybnMoKSB7IHJl
dHVybiAmbV9zdG9yYWdlOyB9CiAKLSAgICAgICAgdW5zaWduZWQgbV9zaXplOwotICAgICAgICBE
ZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUqIG1fc3RvcmFnZTsKKyAgICAgICAgVmVjdG9yPERlc3Ry
dWN0dXJpbmdQYXR0ZXJuTm9kZSosIDM+IG1fcGF0dGVybnM7CiAgICAgfTsKIAogICAgIGNsYXNz
IEZ1bmN0aW9uQm9keU5vZGUgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSwgcHVibGljIFBh
cnNlckFyZW5hRGVsZXRhYmxlIHsKQEAgLTE2NTcsMTMgKzE2MzgsMTEgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgICAgICBQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3Rh
cnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCAKICAgICAgICAgICAgIHVuc2lnbmVkIHN0
YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwg
CiAgICAgICAgICAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQs
IGJvb2wgaXNJblN0cmljdENvbnRleHQsIAotICAgICAgICAgICAgQ29uc3RydWN0b3JLaW5kKTsK
LQotICAgICAgICBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVy
biBtX3BhcmFtZXRlcnMuZ2V0KCk7IH0KKyAgICAgICAgICAgIENvbnN0cnVjdG9yS2luZCwgdW5z
aWduZWQsIEZ1bmN0aW9uUGFyc2VNb2RlKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKIAot
ICAgICAgICB2b2lkIGZpbmlzaFBhcnNpbmcoY29uc3QgU291cmNlQ29kZSYsIFBhcmFtZXRlck5v
ZGUqLCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25Nb2RlKTsKKyAgICAgICAgdm9pZCBmaW5p
c2hQYXJzaW5nKGNvbnN0IFNvdXJjZUNvZGUmLCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25N
b2RlKTsKICAgICAgICAgCiAgICAgICAgIHZvaWQgb3ZlcnJpZGVOYW1lKGNvbnN0IElkZW50aWZp
ZXImIGlkZW50KSB7IG1faWRlbnQgPSBpZGVudDsgfQogICAgICAgICBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCgpIHsgcmV0dXJuIG1faWRlbnQ7IH0KQEAgLTE2NzcsNiArMTY1Niw4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBpbnQgcGFyYW1ldGVyc1N0YXJ0KCkgY29uc3QgeyByZXR1cm4g
bV9wYXJhbWV0ZXJzU3RhcnQ7IH0KICAgICAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4oKSBjb25z
dCB7IHJldHVybiBtX3N0YXJ0Q29sdW1uOyB9CiAgICAgICAgIHVuc2lnbmVkIGVuZENvbHVtbigp
IGNvbnN0IHsgcmV0dXJuIG1fZW5kQ29sdW1uOyB9CisgICAgICAgIHVuc2lnbmVkIHBhcmFtZXRl
ckNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJDb3VudDsgfQorICAgICAgICBGdW5j
dGlvblBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3BhcnNlTW9kZTsgfQog
CiAgICAgICAgIHZvaWQgc2V0RW5kUG9zaXRpb24oSlNUZXh0UG9zaXRpb24pOwogCkBAIC0xNjkw
LDcgKzE2NzEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSWRlbnRpZmllciBtX2lkZW50
OwogICAgICAgICBJZGVudGlmaWVyIG1faW5mZXJyZWROYW1lOwogICAgICAgICBGdW5jdGlvbk1v
ZGUgbV9mdW5jdGlvbk1vZGU7Ci0gICAgICAgIFJlZlB0cjxGdW5jdGlvblBhcmFtZXRlcnM+IG1f
cGFyYW1ldGVyczsKICAgICAgICAgdW5zaWduZWQgbV9zdGFydENvbHVtbjsKICAgICAgICAgdW5z
aWduZWQgbV9lbmRDb2x1bW47CiAgICAgICAgIGludCBtX2Z1bmN0aW9uS2V5d29yZFN0YXJ0OwpA
QCAtMTY5OCwxOSArMTY3OCwyMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaW50IG1fcGFy
YW1ldGVyc1N0YXJ0OwogICAgICAgICBTb3VyY2VDb2RlIG1fc291cmNlOwogICAgICAgICBpbnQg
bV9zdGFydFN0YXJ0T2Zmc2V0OworICAgICAgICB1bnNpZ25lZCBtX3BhcmFtZXRlckNvdW50Owor
ICAgICAgICBGdW5jdGlvblBhcnNlTW9kZSBtX3BhcnNlTW9kZTsKICAgICAgICAgdW5zaWduZWQg
bV9pc0luU3RyaWN0Q29udGV4dCA6IDE7CiAgICAgICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JL
aW5kIDogMjsKICAgICB9OwogCiAgICAgY2xhc3MgRnVuY3Rpb25Ob2RlIGZpbmFsIDogcHVibGlj
IFNjb3BlTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBGdW5jdGlvbk5vZGUoUGFyc2VyQXJl
bmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGVuZCwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxl
bWVudHMqLCBWYXJTdGFjayYsIEZ1bmN0aW9uU3RhY2smLCBJZGVudGlmaWVyU2V0JiwgY29uc3Qg
U291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CisgICAgICAgIEZ1
bmN0aW9uTm9kZShQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQg
ZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrJiwgRnVuY3Rpb25TdGFjayYsIElk
ZW50aWZpZXJTZXQmLCBGdW5jdGlvblBhcmFtZXRlcnMqLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29k
ZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKIAotICAgICAgICBGdW5jdGlvblBhcmFtZXRl
cnMqIHBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMuZ2V0KCk7IH0KKyAg
ICAgICAgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9w
YXJhbWV0ZXJzOyB9CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CiAKLSAgICAgICAgdm9pZCBm
aW5pc2hQYXJzaW5nKFBhc3NSZWZQdHI8RnVuY3Rpb25QYXJhbWV0ZXJzPiwgY29uc3QgSWRlbnRp
ZmllciYsIEZ1bmN0aW9uTW9kZSk7CisgICAgICAgIHZvaWQgZmluaXNoUGFyc2luZyhjb25zdCBJ
ZGVudGlmaWVyJiwgRnVuY3Rpb25Nb2RlKTsKICAgICAgICAgCiAgICAgICAgIGNvbnN0IElkZW50
aWZpZXImIGlkZW50KCkgeyByZXR1cm4gbV9pZGVudDsgfQogCkBAIC0xNzI0LDE0ICsxNzA2LDE0
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByaXZhdGU6CiAgICAgICAgIElkZW50aWZpZXIgbV9p
ZGVudDsKICAgICAgICAgRnVuY3Rpb25Nb2RlIG1fZnVuY3Rpb25Nb2RlOwotICAgICAgICBSZWZQ
dHI8RnVuY3Rpb25QYXJhbWV0ZXJzPiBtX3BhcmFtZXRlcnM7CisgICAgICAgIEZ1bmN0aW9uUGFy
YW1ldGVycyogbV9wYXJhbWV0ZXJzOwogICAgICAgICB1bnNpZ25lZCBtX3N0YXJ0Q29sdW1uOwog
ICAgICAgICB1bnNpZ25lZCBtX2VuZENvbHVtbjsKICAgICB9OwogCiAgICAgY2xhc3MgRnVuY0V4
cHJOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEZ1
bmNFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRnVu
Y3Rpb25Cb2R5Tm9kZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJhbWV0ZXJOb2RlKiA9IDApOwor
ICAgICAgICBGdW5jRXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRp
ZmllciYsIEZ1bmN0aW9uQm9keU5vZGUqLCBjb25zdCBTb3VyY2VDb2RlJik7CiAKICAgICAgICAg
RnVuY3Rpb25Cb2R5Tm9kZSogYm9keSgpIHsgcmV0dXJuIG1fYm9keTsgfQogCkBAIC0xNzYyLDEx
ICsxNzQ0LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKICNlbmRpZgogCi0gICAgY2xhc3Mg
RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlIDogcHVibGljIFJlZkNvdW50ZWQ8RGVzdHJ1Y3R1cmlu
Z1BhdHRlcm5Ob2RlPiB7Ci0gICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERlc3RydWN0dXJp
bmdQYXR0ZXJuTm9kZSk7Ci0gICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotCisgICAg
Y2xhc3MgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlIDogcHVibGljIFBhcnNlckFyZW5hRnJlZWFi
bGUgewogICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+RGVzdHJ1Y3R1cmluZ1BhdHRlcm5O
b2RlKCkgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0Qm91bmRJZGVudGlmaWVycyhW
ZWN0b3I8SWRlbnRpZmllcj4mKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBiaW5k
VmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBzb3VyY2UpIGNvbnN0ID0gMDsK
ICAgICAgICAgdmlydHVhbCB2b2lkIHRvU3RyaW5nKFN0cmluZ0J1aWxkZXImKSBjb25zdCA9IDA7
CkBAIC0xNzc0LDIxICsxNzU0LDE5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFs
IGJvb2wgaXNCaW5kaW5nTm9kZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZp
cnR1YWwgUmVnaXN0ZXJJRCogZW1pdERpcmVjdEJpbmRpbmcoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiwgRXhwcmVzc2lvbk5vZGUqKSB7IHJldHVybiAwOyB9CiAgICAgICAgIAotICAg
ICAgICB2aXJ0dWFsIH5EZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUoKSA9IDA7Ci0gICAgICAgIAog
ICAgIHByb3RlY3RlZDoKICAgICAgICAgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKCk7CiAgICAg
fTsKIAogICAgIGNsYXNzIEFycmF5UGF0dGVybk5vZGUgOiBwdWJsaWMgRGVzdHJ1Y3R1cmluZ1Bh
dHRlcm5Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoK
KyAgICAgICAgQXJyYXlQYXR0ZXJuTm9kZSgpOwogICAgICAgICBlbnVtIGNsYXNzIEJpbmRpbmdU
eXBlIHsKICAgICAgICAgICAgIEVsaXNpb24sCiAgICAgICAgICAgICBFbGVtZW50LAogICAgICAg
ICAgICAgUmVzdEVsZW1lbnQKICAgICAgICAgfTsKIAotICAgICAgICBzdGF0aWMgUmVmPEFycmF5
UGF0dGVybk5vZGU+IGNyZWF0ZSgpOwogICAgICAgICB2b2lkIGFwcGVuZEluZGV4KEJpbmRpbmdU
eXBlIGJpbmRpbmdUeXBlLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBEZXN0cnVjdHVyaW5nUGF0
dGVybk5vZGUqIG5vZGUsIEV4cHJlc3Npb25Ob2RlKiBkZWZhdWx0VmFsdWUpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIG1fdGFyZ2V0UGF0dGVybnMuYXBwZW5kKHsgYmluZGluZ1R5cGUsIG5vZGUs
IGRlZmF1bHRWYWx1ZSB9KTsKQEAgLTE3OTcsMTAgKzE3NzUsOSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICBwcml2YXRlOgogICAgICAgICBzdHJ1Y3QgRW50cnkgewogICAgICAgICAgICAgQmluZGlu
Z1R5cGUgYmluZGluZ1R5cGU7Ci0gICAgICAgICAgICBSZWZQdHI8RGVzdHJ1Y3R1cmluZ1BhdHRl
cm5Ob2RlPiBwYXR0ZXJuOworICAgICAgICAgICAgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiBw
YXR0ZXJuOwogICAgICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGRlZmF1bHRWYWx1ZTsKICAgICAg
ICAgfTsKLSAgICAgICAgQXJyYXlQYXR0ZXJuTm9kZSgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
Y29sbGVjdEJvdW5kSWRlbnRpZmllcnMoVmVjdG9yPElkZW50aWZpZXI+JikgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBiaW5kVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCog
ZW1pdERpcmVjdEJpbmRpbmcoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkc3QsIEV4
cHJlc3Npb25Ob2RlKikgb3ZlcnJpZGU7CkBAIC0xODExLDIxICsxNzg4LDIwIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIAogICAgIGNsYXNzIE9iamVjdFBhdHRlcm5Ob2RlIDogcHVibGljIERlc3Ry
dWN0dXJpbmdQYXR0ZXJuTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUmVmPE9i
amVjdFBhdHRlcm5Ob2RlPiBjcmVhdGUoKTsKKyAgICAgICAgT2JqZWN0UGF0dGVybk5vZGUoKTsK
ICAgICAgICAgdm9pZCBhcHBlbmRFbnRyeShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudGlmaWVyLCBib29sIHdhc1N0cmluZywgRGVzdHJ1Y3R1cmluZ1BhdHRl
cm5Ob2RlKiBwYXR0ZXJuLCBFeHByZXNzaW9uTm9kZSogZGVmYXVsdFZhbHVlKQogICAgICAgICB7
CiAgICAgICAgICAgICBtX3RhcmdldFBhdHRlcm5zLmFwcGVuZChFbnRyeXsgaWRlbnRpZmllciwg
d2FzU3RyaW5nLCBwYXR0ZXJuLCBkZWZhdWx0VmFsdWUgfSk7CiAgICAgICAgIH0KICAgICAgICAg
CiAgICAgcHJpdmF0ZToKLSAgICAgICAgT2JqZWN0UGF0dGVybk5vZGUoKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIGNvbGxlY3RCb3VuZElkZW50aWZpZXJzKFZlY3RvcjxJZGVudGlmaWVyPiYpIGNv
bnN0IG92ZXJyaWRlOwogICAgICAgICB2aXJ0dWFsIHZvaWQgYmluZFZhbHVlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCopIGNvbnN0IG92ZXJyaWRlOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgdG9TdHJpbmcoU3RyaW5nQnVpbGRlciYpIGNvbnN0IG92ZXJyaWRlOwogICAgICAgICBzdHJ1
Y3QgRW50cnkgewogICAgICAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWU7CiAgICAgICAg
ICAgICBib29sIHdhc1N0cmluZzsKLSAgICAgICAgICAgIFJlZlB0cjxEZXN0cnVjdHVyaW5nUGF0
dGVybk5vZGU+IHBhdHRlcm47CisgICAgICAgICAgICBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUq
IHBhdHRlcm47CiAgICAgICAgICAgICBFeHByZXNzaW9uTm9kZSogZGVmYXVsdFZhbHVlOwogICAg
ICAgICB9OwogICAgICAgICBWZWN0b3I8RW50cnk+IG1fdGFyZ2V0UGF0dGVybnM7CkBAIC0xODMz
LDE0ICsxODA5LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQmluZGluZ05vZGUg
OiBwdWJsaWMgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IHN0YXRpYyBSZWY8QmluZGluZ05vZGU+IGNyZWF0ZShjb25zdCBJZGVudGlmaWVyJiBib3VuZFBy
b3BlcnR5LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBlbmQpOworICAgICAgICBCaW5kaW5nTm9kZShjb25zdCBJZGVudGlmaWVyJiBib3VuZFByb3Bl
cnR5LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBl
bmQpOwogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBib3VuZFByb3BlcnR5KCkgY29uc3QgeyBy
ZXR1cm4gbV9ib3VuZFByb3BlcnR5OyB9CiAKICAgICAgICAgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90U3RhcnQoKSBjb25zdCB7IHJldHVybiBtX2Rpdm90U3RhcnQ7IH0KICAgICAgICAgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKCkgY29uc3QgeyByZXR1cm4gbV9kaXZvdEVuZDsg
fQogICAgICAgICAKICAgICBwcml2YXRlOgotICAgICAgICBCaW5kaW5nTm9kZShjb25zdCBJZGVu
dGlmaWVyJiBib3VuZFByb3BlcnR5LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBlbmQpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0Qm91
bmRJZGVudGlmaWVycyhWZWN0b3I8SWRlbnRpZmllcj4mKSBjb25zdCBvdmVycmlkZTsKICAgICAg
ICAgdmlydHVhbCB2b2lkIGJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
KSBjb25zdCBvdmVycmlkZTsKQEAgLTE4NTUsOCArMTgzMCw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgY2xhc3MgRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlIDogcHVibGljIEV4cHJlc3Np
b25Ob2RlLCBwdWJsaWMgUGFyc2VyQXJlbmFEZWxldGFibGUgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFBh
c3NSZWZQdHI8RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlPiwgRXhwcmVzc2lvbk5vZGUqKTsKLSAg
ICAgICAgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiBiaW5kaW5ncygpIHsgcmV0dXJuIG1fYmlu
ZGluZ3MuZ2V0KCk7IH0KKyAgICAgICAgRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSosIEV4cHJlc3Npb25O
b2RlKik7CisgICAgICAgIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogYmluZGluZ3MoKSB7IHJl
dHVybiBtX2JpbmRpbmdzOyB9CiAgICAgICAgIAogICAgICAgICB1c2luZyBQYXJzZXJBcmVuYURl
bGV0YWJsZTo6b3BlcmF0b3IgbmV3OwogCkBAIC0xODY1LDEzICsxODQwLDEzIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNEZXN0cnVjdHVyaW5nTm9kZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRl
OwogCi0gICAgICAgIFJlZlB0cjxEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU+IG1fYmluZGluZ3M7
CisgICAgICAgIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogbV9iaW5kaW5nczsKICAgICAgICAg
RXhwcmVzc2lvbk5vZGUqIG1faW5pdGlhbGl6ZXI7CiAgICAgfTsKIAogICAgIGNsYXNzIEZ1bmNE
ZWNsTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEZ1
bmNEZWNsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRnVu
Y3Rpb25Cb2R5Tm9kZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJhbWV0ZXJOb2RlKiA9IDApOwor
ICAgICAgICBGdW5jRGVjbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRp
ZmllciYsIEZ1bmN0aW9uQm9keU5vZGUqLCBjb25zdCBTb3VyY2VDb2RlJik7CiAKICAgICAgICAg
dmlydHVhbCBib29sIGlzRnVuY0RlY2xOb2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQogICAgICAgICBGdW5jdGlvbkJvZHlOb2RlKiBib2R5KCkgeyByZXR1cm4gbV9ib2R5OyB9
CkBAIC0xOTY3LDExICsxOTQyLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIENvbnN0RGVj
bE5vZGUqIHRhaWw7CiAgICAgfTsKIAotICAgIHN0cnVjdCBQYXJhbWV0ZXJMaXN0IHsKLSAgICAg
ICAgUGFyYW1ldGVyTm9kZSogaGVhZDsKLSAgICAgICAgUGFyYW1ldGVyTm9kZSogdGFpbDsKLSAg
ICB9OwotCiAgICAgc3RydWN0IENsYXVzZUxpc3QgewogICAgICAgICBDbGF1c2VMaXN0Tm9kZSog
aGVhZDsKICAgICAgICAgQ2xhdXNlTGlzdE5vZGUqIHRhaWw7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCShyZXZpc2lvbiAxODY4MDgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MSw4ICsx
OTEsNyBAQCB2b2lkIFBhcnNlcjxMZXhlclR5cGU+Ojpsb2dFcnJvcihib29sIHNoCiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiBQYXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2VyKAotICAg
IFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvblBhcmFtZXRlcnMqIHBh
cmFtZXRlcnMsIAotICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIEpTUGFyc2VyQnVpbHRpbk1v
ZGUgYnVpbHRpbk1vZGUsIAorICAgIFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBK
U1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLCAKICAgICBKU1BhcnNlclN0cmljdE1vZGUg
c3RyaWN0TW9kZSwgSlNQYXJzZXJDb2RlVHlwZSBjb2RlVHlwZSwgCiAgICAgQ29uc3RydWN0b3JL
aW5kIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlKQogICAg
IDogbV92bSh2bSkKQEAgLTIyMywzMCArMjIyLDcgQEAgUGFyc2VyPExleGVyVHlwZT46OlBhcnNl
cigKICAgICAgICAgc2NvcGUtPnNldElzRnVuY3Rpb24oKTsKICAgICBpZiAoc3RyaWN0TW9kZSA9
PSBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCkKICAgICAgICAgc2NvcGUtPnNldFN0cmljdE1v
ZGUoKTsKLSAgICBpZiAocGFyYW1ldGVycykgewotICAgICAgICBib29sIGhhZEJpbmRpbmdQYXJh
bWV0ZXJzID0gZmFsc2U7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXJhbWV0
ZXJzLT5zaXplKCk7IGkrKykgewotICAgICAgICAgICAgYXV0byBwYXJhbWV0ZXIgPSBwYXJhbWV0
ZXJzLT5hdChpKTsKLSAgICAgICAgICAgIGlmICghcGFyYW1ldGVyLT5pc0JpbmRpbmdOb2RlKCkp
IHsKLSAgICAgICAgICAgICAgICBoYWRCaW5kaW5nUGFyYW1ldGVycyA9IHRydWU7Ci0gICAgICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzY29wZS0+ZGVj
bGFyZVBhcmFtZXRlcigmc3RhdGljX2Nhc3Q8QmluZGluZ05vZGUqPihwYXJhbWV0ZXIpLT5ib3Vu
ZFByb3BlcnR5KCkpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChoYWRCaW5kaW5nUGFyYW1ldGVy
cykgewotICAgICAgICAgICAgVmVjdG9yPElkZW50aWZpZXI+IGJvdW5kUGFyYW1ldGVyTmFtZXM7
Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFyYW1ldGVycy0+c2l6ZSgp
OyBpKyspIHsKLSAgICAgICAgICAgICAgICBhdXRvIHBhcmFtZXRlciA9IHBhcmFtZXRlcnMtPmF0
KGkpOwotICAgICAgICAgICAgICAgIGlmIChwYXJhbWV0ZXItPmlzQmluZGluZ05vZGUoKSkKLSAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgcGFyYW1ldGVyLT5j
b2xsZWN0Qm91bmRJZGVudGlmaWVycyhib3VuZFBhcmFtZXRlck5hbWVzKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGZvciAoYXV0byYgYm91bmRQYXJhbWV0ZXJOYW1lIDogYm91bmRQYXJh
bWV0ZXJOYW1lcykKLSAgICAgICAgICAgICAgICBzY29wZS0+ZGVjbGFyZVZhcmlhYmxlKCZib3Vu
ZFBhcmFtZXRlck5hbWUpOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmICghbmFtZS5pc051bGwo
KSkKLSAgICAgICAgc2NvcGUtPmRlY2xhcmVDYWxsZWUoJm5hbWUpOworCiAgICAgbmV4dCgpOwog
fQogCkBAIC0yNTYsMTYgKzIzMiw1NCBAQCBQYXJzZXI8TGV4ZXJUeXBlPjo6flBhcnNlcigpCiB9
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci1TdHJpbmcgUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlSW5uZXIoKQorU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKGNv
bnN0IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIEZ1bmN0aW9uUGFyc2VNb2RlIHBhcnNlTW9kZSkK
IHsKICAgICBTdHJpbmcgcGFyc2VFcnJvciA9IFN0cmluZygpOwogICAgIAogICAgIEFTVEJ1aWxk
ZXIgY29udGV4dChjb25zdF9jYXN0PFZNKj4obV92bSksIG1fcGFyc2VyQXJlbmEsIGNvbnN0X2Nh
c3Q8U291cmNlQ29kZSo+KG1fc291cmNlKSk7Ci0gICAgaWYgKG1fbGV4ZXItPmlzUmVwYXJzaW5n
KCkpCi0gICAgICAgIG1fc3RhdGVtZW50RGVwdGgtLTsKICAgICBTY29wZVJlZiBzY29wZSA9IGN1
cnJlbnRTY29wZSgpOwotICAgIFNvdXJjZUVsZW1lbnRzKiBzb3VyY2VFbGVtZW50cyA9IHBhcnNl
U291cmNlRWxlbWVudHMoY29udGV4dCwgQ2hlY2tGb3JTdHJpY3RNb2RlLCBTdGFuZGFyZEZ1bmN0
aW9uUGFyc2VUeXBlKTsKLSAgICBpZiAoIXNvdXJjZUVsZW1lbnRzIHx8ICFjb25zdW1lKEVPRlRP
SykpIHsKKworICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gPSBmYWxzZTsK
KyNpZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQorICAgIGlmIChtX2xleGVyLT5p
c1JlcGFyc2luZ0Z1bmN0aW9uKCkpIHsKKyAgICAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1
aWxkZXI+IGZ1bmN0aW9uSW5mbzsKKyAgICAgICAgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoY29u
dGV4dCwgcGFyc2VNb2RlLCBmdW5jdGlvbkluZm8pOworICAgICAgICBtX3BhcmFtZXRlcnMgPSBm
dW5jdGlvbkluZm8ucGFyYW1ldGVyczsKKworICAgICAgICBpZiAocGFyc2VNb2RlID09IEFycm93
RnVuY3Rpb25Nb2RlKSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChtYXRjaChBUlJPV0ZV
TkNUSU9OKSk7CisgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICBpc0Fycm93RnVuY3Rp
b25Cb2R5RXhwcmVzc2lvbiA9ICFtYXRjaChPUEVOQlJBQ0UpOworICAgICAgICB9CisgICAgfQor
I2VuZGlmCisKKyAgICBpZiAoIWNhbGxlZU5hbWUuaXNOdWxsKCkpCisgICAgICAgIHNjb3BlLT5k
ZWNsYXJlQ2FsbGVlKCZjYWxsZWVOYW1lKTsKKworICAgIGlmIChtX2xleGVyLT5pc1JlcGFyc2lu
Z0Z1bmN0aW9uKCkpCisgICAgICAgIG1fc3RhdGVtZW50RGVwdGgtLTsKKworICAgIFNvdXJjZUVs
ZW1lbnRzKiBzb3VyY2VFbGVtZW50cyA9IG51bGxwdHI7CisgICAgLy8gVGhlIG9ubHkgd2F5IHdl
IGNhbiBlcnJvciB0aGlzIGVhcmx5IGlzIGlmIHdlIHJlcGFyc2UgYSBmdW5jdGlvbiBhbmQgd2Ug
cnVuIG91dCBvZiBzdGFjayBzcGFjZS4KKyAgICBpZiAoIWhhc0Vycm9yKCkpIHsKKyAgICAgICAg
aWYgKGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQorICAgICAgICAgICAgc291cmNlRWxl
bWVudHMgPSBwYXJzZUFycm93RnVuY3Rpb25TaW5nbGVFeHByZXNzaW9uQm9keVNvdXJjZUVsZW1l
bnRzKGNvbnRleHQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzb3VyY2VFbGVtZW50cyA9
IHBhcnNlU291cmNlRWxlbWVudHMoY29udGV4dCwgQ2hlY2tGb3JTdHJpY3RNb2RlKTsKKyAgICB9
CisKKyAgICBib29sIHZhbGlkRW5kaW5nOworICAgIGlmIChpc0Fycm93RnVuY3Rpb25Cb2R5RXhw
cmVzc2lvbikgeworICAgICAgICBBU1NFUlQobV9sZXhlci0+aXNSZXBhcnNpbmdGdW5jdGlvbigp
KTsKKyAgICAgICAgLy8gV2hlbiB3ZSByZXBhcnNlIGFuZCBzdGFjayBvdmVyZmxvdywgd2UncmUg
bm90IGd1YXJhbnRlZWQgYSB2YWxpZCBlbmRpbmcuIElmIHdlIGRvbid0IHJ1biBvdXQgb2Ygc3Rh
Y2sgc3BhY2UsCisgICAgICAgIC8vIHRoZW4gb2YgY291cnNlIHRoaXMgd2lsbCBhbHdheXMgYmUg
dmFsaWQgYmVjYXVzZSB3ZSBhbHJlYWR5IHBhcnNlZCBmb3Igc3ludGF4IGVycm9ycy4gQnV0IHdl
IG11c3QKKyAgICAgICAgLy8gYmUgY2F1dGlvdXMgaW4gY2FzZSB3ZSBydW4gb3V0IG9mIHN0YWNr
IHNwYWNlLgorICAgICAgICB2YWxpZEVuZGluZyA9IGlzRW5kT2ZBcnJvd0Z1bmN0aW9uKCk7IAor
ICAgIH0gZWxzZQorICAgICAgICB2YWxpZEVuZGluZyA9IGNvbnN1bWUoRU9GVE9LKTsKKworICAg
IGlmICghc291cmNlRWxlbWVudHMgfHwgIXZhbGlkRW5kaW5nKSB7CiAgICAgICAgIGlmIChoYXNF
cnJvcigpKQogICAgICAgICAgICAgcGFyc2VFcnJvciA9IG1fZXJyb3JNZXNzYWdlOwogICAgICAg
ICBlbHNlCkBAIC0zNDMsNyArMzU3LDcgQEAgYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6YWxsb3dB
dXRvbWF0aWNTZQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgotdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46
OnBhcnNlU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImIGNvbnRleHQsIFNvdXJjZUVsZW1lbnRz
TW9kZSBtb2RlLCBGdW5jdGlvblBhcnNlVHlwZSBmdW5jdGlvblBhcnNlVHlwZSkKK3RlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZVNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBTb3VyY2VFbGVtZW50
c01vZGUgbW9kZSkKIHsKICAgICBjb25zdCB1bnNpZ25lZCBsZW5ndGhPZlVzZVN0cmljdExpdGVy
YWwgPSAxMjsgLy8gInVzZSBzdHJpY3QiLmxlbmd0aAogICAgIFRyZWVTb3VyY2VFbGVtZW50cyBz
b3VyY2VFbGVtZW50cyA9IGNvbnRleHQuY3JlYXRlU291cmNlRWxlbWVudHMoKTsKQEAgLTM1Mywy
MiArMzY3LDYgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRQogICAg
IGF1dG8gc2F2ZVBvaW50ID0gY3JlYXRlU2F2ZVBvaW50KCk7CiAgICAgYm9vbCBoYXNTZXRTdHJp
Y3QgPSBmYWxzZTsKICAgICAKLSNpZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQot
ICAgIGlmIChtYXRjaChBUlJPV0ZVTkNUSU9OKSkgewotICAgICAgICBUcmVlU3RhdGVtZW50IGFy
cm93ZnVuY3Rpb25TdGF0ZW1lbnQgPSBwYXJzZUFycm93RnVuY3Rpb25TaW5nbGVFeHByZXNzaW9u
Qm9keShjb250ZXh0LCBmdW5jdGlvblBhcnNlVHlwZSk7Ci0gICAgICAgICAgICAKLSAgICAgICAg
aWYgKGFycm93ZnVuY3Rpb25TdGF0ZW1lbnQpIHsKLSAgICAgICAgICAgIGNvbnRleHQuc2V0RW5k
T2Zmc2V0KGFycm93ZnVuY3Rpb25TdGF0ZW1lbnQsIG1fbGFzdFRva2VuRW5kUG9zaXRpb24ub2Zm
c2V0KTsKLSAgICAgICAgICAgIGNvbnRleHQuYXBwZW5kU3RhdGVtZW50KHNvdXJjZUVsZW1lbnRz
LCBhcnJvd2Z1bmN0aW9uU3RhdGVtZW50KTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAg
cHJvcGFnYXRlRXJyb3IoKTsKLSAgICAgICAgcmV0dXJuIHNvdXJjZUVsZW1lbnRzOwotICAgIH0K
LSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGZ1bmN0aW9uUGFyc2VUeXBlKTsKLSNlbmRpZgotICAg
IAogICAgIHdoaWxlIChUcmVlU3RhdGVtZW50IHN0YXRlbWVudCA9IHBhcnNlU3RhdGVtZW50TGlz
dEl0ZW0oY29udGV4dCwgZGlyZWN0aXZlLCAmZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCkpIHsKICAg
ICAgICAgaWYgKG1vZGUgPT0gQ2hlY2tGb3JTdHJpY3RNb2RlICYmICFzZWVuTm9uRGlyZWN0aXZl
KSB7CiAgICAgICAgICAgICBpZiAoZGlyZWN0aXZlKSB7CkBAIC02MjQsMjQgKzYyMiwxMyBAQCB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVEZXN0cnVjCiAgICAgcmV0dXJuIGNvbnRl
eHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKHRva2VuLm1fbG9jYXRpb24sIG5hbWUsIHRva2VuLm1f
c3RhcnRQb3NpdGlvbiwgdG9rZW4ubV9lbmRQb3NpdGlvbik7CiB9CiAKLSNpZiBFTkFCTEUoRVM2
X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KLXRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VBcnJvd0Z1bmN0aW9uU2luZ2xlRXhwcmVzc2lvbkJvZHkoVHJlZUJ1aWxkZXImIGNv
bnRleHQsIEZ1bmN0aW9uUGFyc2VUeXBlIHBhcnNlVHlwZSkKK3RlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUFycm93
RnVuY3Rpb25TaW5nbGVFeHByZXNzaW9uQm9keVNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJiBj
b250ZXh0KQogewotICAgIEFTU0VSVChtYXRjaChBUlJPV0ZVTkNUSU9OKSk7CisgICAgQVNTRVJU
KCFtYXRjaChPUEVOQlJBQ0UpKTsKIAotICAgIC8vIFdoZW4gcmVwYXJzaW5nIHBoYXNlLCBwYXJz
ZVR5cGUgYmVjb21lcyBTdGFuZGFyZEZ1bmN0aW9uUGFyc2VUeXBlIGV2ZW4gaWYgdGhlIGZ1bmN0
aW9uIGlzIGFycm93IGZ1bmN0aW9uLgotICAgIC8vIFRoaXMgY29uZGl0aW9uIGNvbnNpZGVycyB0
aGUgZm9sbG93aW5nIHNpdHVhdGlvbnMuCi0gICAgLy8gKDEpOiBJZiB3ZSBhcmUgaW4gdGhlIHJl
cGFyc2luZyBwaGFzZSwgdGhpcyBhcnJvdyBmdW5jdGlvbiBpcyBhbHJlYWR5IHBhcnNlZCBvbmNl
LCBzbyB0aGVyZSBpcyBubyBzeW50YXggZXJyb3IuCi0gICAgLy8gKDIpOiBCdXQgaWYgd2UgYXJl
IG5vdCBpbiB0aGUgcmVwYXJzaW5nIHBoYXNlLCB3ZSBzaG91bGQgY2hlY2sgdGhpcyBmdW5jdGlv
biBpcyBjYWxsZWQgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGFycm93IGZ1bmN0aW9uLgotICAgIGlm
ICghbV9sZXhlci0+aXNSZXBhcnNpbmcoKSAmJiBwYXJzZVR5cGUgIT0gQXJyb3dGdW5jdGlvblBh
cnNlVHlwZSkKLSAgICAgICAgZmFpbER1ZVRvVW5leHBlY3RlZFRva2VuKCk7Ci0gICAgCiAgICAg
SlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgSlNUZXh0UG9z
aXRpb24gc3RhcnQgPSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKLSAgICBKU1RleHRQb3NpdGlvbiBl
bmQgPSB0b2tlbkVuZFBvc2l0aW9uKCk7Ci0KLSAgICBuZXh0KCk7CiAKICAgICBmYWlsSWZTdGFj
a092ZXJmbG93KCk7CiAgICAgVHJlZUV4cHJlc3Npb24gZXhwciA9IHBhcnNlQXNzaWdubWVudEV4
cHJlc3Npb24oY29udGV4dCk7CkBAIC02NTEsMTQgKzYzOCwxOCBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lCiAKICAgICBmYWlsSWZGYWxzZShpc0VuZE9mQXJyb3dG
dW5jdGlvbigpLCAiRXhwZWN0ZWQgYSAnOycsICddJywgJ30nLCAnKScsICcsJywgbGluZSB0ZXJt
aW5hdG9yIG9yIEVPRiBmb2xsb3dpbmcgYSBhcnJvdyBmdW5jdGlvbiBzdGF0ZW1lbnQiKTsKIAot
ICAgIGVuZCA9IHRva2VuRW5kUG9zaXRpb24oKTsKKyAgICBKU1RleHRQb3NpdGlvbiBlbmQgPSB0
b2tlbkVuZFBvc2l0aW9uKCk7CiAgICAgCiAgICAgaWYgKCFtX2xleGVyLT5wcmV2VGVybWluYXRv
cigpKQogICAgICAgICBzZXRFbmRPZlN0YXRlbWVudCgpOwogCi0gICAgcmV0dXJuIGNvbnRleHQu
Y3JlYXRlUmV0dXJuU3RhdGVtZW50KGxvY2F0aW9uLCBleHByLCBzdGFydCwgZW5kKTsKKyAgICBU
cmVlU291cmNlRWxlbWVudHMgc291cmNlRWxlbWVudHMgPSBjb250ZXh0LmNyZWF0ZVNvdXJjZUVs
ZW1lbnRzKCk7CisgICAgVHJlZVN0YXRlbWVudCBib2R5ID0gY29udGV4dC5jcmVhdGVSZXR1cm5T
dGF0ZW1lbnQobG9jYXRpb24sIGV4cHIsIHN0YXJ0LCBlbmQpOworICAgIGNvbnRleHQuc2V0RW5k
T2Zmc2V0KGJvZHksIG1fbGFzdFRva2VuRW5kUG9zaXRpb24ub2Zmc2V0KTsKKyAgICBjb250ZXh0
LmFwcGVuZFN0YXRlbWVudChzb3VyY2VFbGVtZW50cywgYm9keSk7CisKKyAgICByZXR1cm4gc291
cmNlRWxlbWVudHM7CiB9Ci0jZW5kaWYKIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4K
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZURlc3RydWN0dXJpbmdQYXR0ZXJuIFBh
cnNlcjxMZXhlclR5cGU+Ojp0cnlQYXJzZURlc3RydWN0dXJpbmdQYXR0ZXJuRXhwcmVzc2lvbihU
cmVlQnVpbGRlciYgY29udGV4dCkKQEAgLTExNDIsNyArMTEzMyw3IEBAIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZUNsYXVzZUwKICAgICBUcmVlRXhwcmVzc2lvbiBjb25kaXRpb24g
PSBwYXJzZUV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2UoY29uZGl0aW9uLCAi
Q2Fubm90IHBhcnNlIHN3aXRjaCBjbGF1c2UiKTsKICAgICBjb25zdW1lT3JGYWlsKENPTE9OLCAi
RXhwZWN0ZWQgYSAnOicgYWZ0ZXIgc3dpdGNoIGNsYXVzZSBleHByZXNzaW9uIik7Ci0gICAgVHJl
ZVNvdXJjZUVsZW1lbnRzIHN0YXRlbWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQs
IERvbnRDaGVja0ZvclN0cmljdE1vZGUsIFN0YW5kYXJkRnVuY3Rpb25QYXJzZVR5cGUpOworICAg
IFRyZWVTb3VyY2VFbGVtZW50cyBzdGF0ZW1lbnRzID0gcGFyc2VTb3VyY2VFbGVtZW50cyhjb250
ZXh0LCBEb250Q2hlY2tGb3JTdHJpY3RNb2RlKTsKICAgICBmYWlsSWZGYWxzZShzdGF0ZW1lbnRz
LCAiQ2Fubm90IHBhcnNlIHRoZSBib2R5IG9mIGEgc3dpdGNoIGNsYXVzZSIpOwogICAgIFRyZWVD
bGF1c2UgY2xhdXNlID0gY29udGV4dC5jcmVhdGVDbGF1c2UoY29uZGl0aW9uLCBzdGF0ZW1lbnRz
KTsKICAgICBjb250ZXh0LnNldFN0YXJ0T2Zmc2V0KGNsYXVzZSwgc3RhcnRPZmZzZXQpOwpAQCAt
MTE1NSw3ICsxMTQ2LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlQ2xhdXNl
TAogICAgICAgICBUcmVlRXhwcmVzc2lvbiBjb25kaXRpb24gPSBwYXJzZUV4cHJlc3Npb24oY29u
dGV4dCk7CiAgICAgICAgIGZhaWxJZkZhbHNlKGNvbmRpdGlvbiwgIkNhbm5vdCBwYXJzZSBzd2l0
Y2ggY2FzZSBleHByZXNzaW9uIik7CiAgICAgICAgIGNvbnN1bWVPckZhaWwoQ09MT04sICJFeHBl
Y3RlZCBhICc6JyBhZnRlciBzd2l0Y2ggY2xhdXNlIGV4cHJlc3Npb24iKTsKLSAgICAgICAgVHJl
ZVNvdXJjZUVsZW1lbnRzIHN0YXRlbWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQs
IERvbnRDaGVja0ZvclN0cmljdE1vZGUsIFN0YW5kYXJkRnVuY3Rpb25QYXJzZVR5cGUpOworICAg
ICAgICBUcmVlU291cmNlRWxlbWVudHMgc3RhdGVtZW50cyA9IHBhcnNlU291cmNlRWxlbWVudHMo
Y29udGV4dCwgRG9udENoZWNrRm9yU3RyaWN0TW9kZSk7CiAgICAgICAgIGZhaWxJZkZhbHNlKHN0
YXRlbWVudHMsICJDYW5ub3QgcGFyc2UgdGhlIGJvZHkgb2YgYSBzd2l0Y2ggY2xhdXNlIik7CiAg
ICAgICAgIGNsYXVzZSA9IGNvbnRleHQuY3JlYXRlQ2xhdXNlKGNvbmRpdGlvbiwgc3RhdGVtZW50
cyk7CiAgICAgICAgIGNvbnRleHQuc2V0U3RhcnRPZmZzZXQoY2xhdXNlLCBzdGFydE9mZnNldCk7
CkBAIC0xMTcyLDcgKzExNjMsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVD
bGF1c2UgCiAgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSB0b2tlblN0YXJ0KCk7CiAgICAgbmV4
dCgpOwogICAgIGNvbnN1bWVPckZhaWwoQ09MT04sICJFeHBlY3RlZCBhICc6JyBhZnRlciBzd2l0
Y2ggZGVmYXVsdCBjbGF1c2UiKTsKLSAgICBUcmVlU291cmNlRWxlbWVudHMgc3RhdGVtZW50cyA9
IHBhcnNlU291cmNlRWxlbWVudHMoY29udGV4dCwgRG9udENoZWNrRm9yU3RyaWN0TW9kZSwgU3Rh
bmRhcmRGdW5jdGlvblBhcnNlVHlwZSk7CisgICAgVHJlZVNvdXJjZUVsZW1lbnRzIHN0YXRlbWVu
dHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIERvbnRDaGVja0ZvclN0cmljdE1vZGUp
OwogICAgIGZhaWxJZkZhbHNlKHN0YXRlbWVudHMsICJDYW5ub3QgcGFyc2UgdGhlIGJvZHkgb2Yg
YSBzd2l0Y2ggZGVmYXVsdCBjbGF1c2UiKTsKICAgICBUcmVlQ2xhdXNlIHJlc3VsdCA9IGNvbnRl
eHQuY3JlYXRlQ2xhdXNlKDAsIHN0YXRlbWVudHMpOwogICAgIGNvbnRleHQuc2V0U3RhcnRPZmZz
ZXQocmVzdWx0LCBzdGFydE9mZnNldCk7CkBAIC0xMjU3LDcgKzEyNDgsNyBAQCB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lCiAgICAgICAgIGNvbnRleHQuc2V0RW5kT2Zm
c2V0KHJlc3VsdCwgZW5kT2Zmc2V0KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9Ci0g
ICAgVHJlZVNvdXJjZUVsZW1lbnRzIHN1YnRyZWUgPSBwYXJzZVNvdXJjZUVsZW1lbnRzKGNvbnRl
eHQsIERvbnRDaGVja0ZvclN0cmljdE1vZGUsIFN0YW5kYXJkRnVuY3Rpb25QYXJzZVR5cGUpOwor
ICAgIFRyZWVTb3VyY2VFbGVtZW50cyBzdWJ0cmVlID0gcGFyc2VTb3VyY2VFbGVtZW50cyhjb250
ZXh0LCBEb250Q2hlY2tGb3JTdHJpY3RNb2RlKTsKICAgICBmYWlsSWZGYWxzZShzdWJ0cmVlLCAi
Q2Fubm90IHBhcnNlIHRoZSBib2R5IG9mIHRoZSBibG9jayBzdGF0ZW1lbnQiKTsKICAgICBtYXRj
aE9yRmFpbChDTE9TRUJSQUNFLCAiRXhwZWN0ZWQgYSBjbG9zaW5nICd9JyBhdCB0aGUgZW5kIG9m
IGEgYmxvY2sgc3RhdGVtZW50Iik7CiAgICAgaW50IGVuZE9mZnNldCA9IG1fdG9rZW4ubV9kYXRh
Lm9mZnNldDsKQEAgLTEzNjIsNDYgKzEzNTMsNDMgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlU3RhdGVtZQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgotdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCBQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VGb3JtYWxQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiBjb250ZXh0KQor
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZUZvcm1hbFBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImIGNvbnRleHQsIFRyZWVGb3JtYWxQYXJhbWV0
ZXJMaXN0IGxpc3QsIHVuc2lnbmVkJiBwYXJhbWV0ZXJDb3VudCkKIHsKICAgICBhdXRvIHBhcmFt
ZXRlciA9IHBhcnNlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4oY29udGV4dCwgRGVzdHJ1Y3R1cmVUb1Bh
cmFtZXRlcnMpOwogICAgIGZhaWxJZkZhbHNlKHBhcmFtZXRlciwgIkNhbm5vdCBwYXJzZSBwYXJh
bWV0ZXIgcGF0dGVybiIpOwotICAgIFRyZWVGb3JtYWxQYXJhbWV0ZXJMaXN0IGxpc3QgPSBjb250
ZXh0LmNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QocGFyYW1ldGVyKTsKLSAgICBUcmVlRm9ybWFs
UGFyYW1ldGVyTGlzdCB0YWlsID0gbGlzdDsKKyAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihs
aXN0LCBwYXJhbWV0ZXIpOworICAgIHBhcmFtZXRlckNvdW50Kys7CiAgICAgd2hpbGUgKGNvbnN1
bWUoQ09NTUEpKSB7CiAgICAgICAgIHBhcmFtZXRlciA9IHBhcnNlRGVzdHJ1Y3R1cmluZ1BhdHRl
cm4oY29udGV4dCwgRGVzdHJ1Y3R1cmVUb1BhcmFtZXRlcnMpOwogICAgICAgICBmYWlsSWZGYWxz
ZShwYXJhbWV0ZXIsICJDYW5ub3QgcGFyc2UgcGFyYW1ldGVyIHBhdHRlcm4iKTsKLSAgICAgICAg
dGFpbCA9IGNvbnRleHQuY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdCh0YWlsLCBwYXJhbWV0ZXIp
OworICAgICAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihsaXN0LCBwYXJhbWV0ZXIpOworICAg
ICAgICBwYXJhbWV0ZXJDb3VudCsrOwogICAgIH0KLSAgICByZXR1cm4gbGlzdDsKKyAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZUZ1bmN0aW9uQm9keSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VGdW5jdGlvbkJvZHkoCi0gICAgVHJlZUJ1aWxkZXImIGNvbnRleHQsIGludCBmdW5jdGlvbktl
eXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCAKLSAgICBpbnQgcGFyYW1ldGVyc1N0
YXJ0LCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBGdW5jdGlvblBhcnNlVHlwZSBw
YXJzZVR5cGUpCisgICAgVHJlZUJ1aWxkZXImIGNvbnRleHQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgc3RhcnRMb2NhdGlvbiwgaW50IHN0YXJ0Q29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3Rh
cnQsIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgCisgICAgQ29u
c3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgRnVuY3Rpb25Cb2R5VHlwZSBib2R5VHlwZSwg
dW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIEZ1bmN0aW9uUGFyc2VNb2RlIHBhcnNlTW9kZSkKIHsK
LSAgICBKU1Rva2VuTG9jYXRpb24gc3RhcnRMb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwotICAg
IHVuc2lnbmVkIHN0YXJ0Q29sdW1uID0gdG9rZW5Db2x1bW4oKTsKLQotICAgIGlmIChwYXJzZVR5
cGUgPT0gU3RhbmRhcmRGdW5jdGlvblBhcnNlVHlwZSkgeworICAgIGlmIChib2R5VHlwZSA9PSBT
dGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrIHx8IGJvZHlUeXBlID09IEFycm93RnVuY3Rpb25Cb2R5
QmxvY2spIHsKICAgICAgICAgbmV4dCgpOwogICAgICAgICBpZiAobWF0Y2goQ0xPU0VCUkFDRSkp
IHsKICAgICAgICAgICAgIHVuc2lnbmVkIGVuZENvbHVtbiA9IHRva2VuQ29sdW1uKCk7Ci0gICAg
ICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkJvZHkoc3RhcnRMb2NhdGlvbiwg
dG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktleXdvcmRT
dGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBj
b25zdHJ1Y3RvcktpbmQpOworICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rp
b25Cb2R5KHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENv
bHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJz
U3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgcGFy
c2VNb2RlKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIERlcHRoTWFuYWdlciBzdGF0ZW1lbnRE
ZXB0aCgmbV9zdGF0ZW1lbnREZXB0aCk7CiAgICAgbV9zdGF0ZW1lbnREZXB0aCA9IDA7Ci0gICAg
dHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZ1bmN0aW9uQm9keUJ1aWxkZXIgYm9keUJ1aWxkZXIoY29u
c3RfY2FzdDxWTSo+KG1fdm0pLCBtX2xleGVyLmdldCgpKTsKLSNpZiBFTkFCTEUoRVM2X0FSUk9X
RlVOQ1RJT05fU1lOVEFYKQotICAgIGZhaWxJZkZhbHNlKHBhcnNlU291cmNlRWxlbWVudHMoYm9k
eUJ1aWxkZXIsIENoZWNrRm9yU3RyaWN0TW9kZSwgcGFyc2VUeXBlKSwgcGFyc2VUeXBlID09IFN0
YW5kYXJkRnVuY3Rpb25QYXJzZVR5cGUgPyAiQ2Fubm90IHBhcnNlIGJvZHkgb2YgdGhpcyBmdW5j
dGlvbiIgOiAiQ2Fubm90IHBhcnNlIGJvZHkgb2YgdGhpcyBhcnJvdyBmdW5jdGlvbiIpOwotI2Vs
c2UKLSAgICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVsZW1lbnRzKGJvZHlCdWlsZGVyLCBDaGVj
a0ZvclN0cmljdE1vZGUsIFN0YW5kYXJkRnVuY3Rpb25QYXJzZVR5cGUpLCAiQ2Fubm90IHBhcnNl
IGJvZHkgb2YgdGhpcyBmdW5jdGlvbiIpOwotI2VuZGlmCisgICAgU3ludGF4Q2hlY2tlciBzeW50
YXhDaGVja2VyKGNvbnN0X2Nhc3Q8Vk0qPihtX3ZtKSwgbV9sZXhlci5nZXQoKSk7CisgICAgaWYg
KGJvZHlUeXBlID09IEFycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKKyAgICAgICAgZmFpbElm
RmFsc2UocGFyc2VBcnJvd0Z1bmN0aW9uU2luZ2xlRXhwcmVzc2lvbkJvZHlTb3VyY2VFbGVtZW50
cyhzeW50YXhDaGVja2VyKSwgIkNhbm5vdCBwYXJzZSBib2R5IG9mIHRoaXMgYXJyb3cgZnVuY3Rp
b24iKTsKKyAgICBlbHNlCisgICAgICAgIGZhaWxJZkZhbHNlKHBhcnNlU291cmNlRWxlbWVudHMo
c3ludGF4Q2hlY2tlciwgQ2hlY2tGb3JTdHJpY3RNb2RlKSwgYm9keVR5cGUgPT0gU3RhbmRhcmRG
dW5jdGlvbkJvZHlCbG9jayA/ICJDYW5ub3QgcGFyc2UgYm9keSBvZiB0aGlzIGZ1bmN0aW9uIiA6
ICJDYW5ub3QgcGFyc2UgYm9keSBvZiB0aGlzIGFycm93IGZ1bmN0aW9uIik7CiAgICAgdW5zaWdu
ZWQgZW5kQ29sdW1uID0gdG9rZW5Db2x1bW4oKTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVG
dW5jdGlvbkJvZHkoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwg
ZW5kQ29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFt
ZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBjb25zdHJ1Y3RvcktpbmQpOworICAgIHJldHVybiBj
b250ZXh0LmNyZWF0ZUZ1bmN0aW9uQm9keShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCks
IHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5h
bWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCwg
cGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSk7CiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJp
bmdGb3JGdW5jdGlvbk1vZGUoRnVuY3Rpb25QYXJzZU1vZGUgbW9kZSkKQEAgLTE0MTEsMjQgKzEz
OTksMjggQEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZQogICAgICAg
ICByZXR1cm4gImdldHRlciI7CiAgICAgY2FzZSBTZXR0ZXJNb2RlOgogICAgICAgICByZXR1cm4g
InNldHRlciI7Ci0gICAgY2FzZSBGdW5jdGlvbk1vZGU6CisgICAgY2FzZSBOb3JtYWxGdW5jdGlv
bk1vZGU6CiAgICAgICAgIHJldHVybiAiZnVuY3Rpb24iOwogICAgIGNhc2UgTWV0aG9kTW9kZToK
ICAgICAgICAgcmV0dXJuICJtZXRob2QiOwotI2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9T
WU5UQVgpCiAgICAgY2FzZSBBcnJvd0Z1bmN0aW9uTW9kZToKICAgICAgICAgcmV0dXJuICJhcnJv
dyBmdW5jdGlvbiI7Ci0jZW5kaWYKKyAgICBjYXNlIE5vdEFGdW5jdGlvbk1vZGU6CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAiIjsKICAgICB9
CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4gdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBpbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKFRy
ZWVCdWlsZGVyJiBjb250ZXh0LCBGdW5jdGlvblBhcnNlTW9kZSBtb2RlLCBQYXJzZXJGdW5jdGlv
bkluZm88VHJlZUJ1aWxkZXI+JiBpbmZvKQordGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4g
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBpbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
RnVuY3Rpb25QYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBGdW5jdGlvblBhcnNlTW9k
ZSBtb2RlLCBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+JiBmdW5jdGlvbkluZm8pCiB7
CisgICAgUkVMRUFTRV9BU1NFUlQobW9kZSAhPSBOb3RBRnVuY3Rpb25Nb2RlKTsKICAgICBpbnQg
cGFyYW1ldGVyc1N0YXJ0ID0gbV90b2tlbi5tX2xvY2F0aW9uLnN0YXJ0T2Zmc2V0OworICAgIFRy
ZWVGb3JtYWxQYXJhbWV0ZXJMaXN0IHBhcmFtZXRlckxpc3QgPSBjb250ZXh0LmNyZWF0ZUZvcm1h
bFBhcmFtZXRlckxpc3QoKTsKKyAgICBmdW5jdGlvbkluZm8ucGFyYW1ldGVycyA9IHBhcmFtZXRl
ckxpc3Q7CisgICAgZnVuY3Rpb25JbmZvLnN0YXJ0T2Zmc2V0ID0gcGFyYW1ldGVyc1N0YXJ0Owog
ICAgIAotI2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCiAgICAgaWYgKG1vZGUg
PT0gQXJyb3dGdW5jdGlvbk1vZGUpIHsKICAgICAgICAgaWYgKCFtYXRjaChJREVOVCkgJiYgIW1h
dGNoKE9QRU5QQVJFTikpIHsKICAgICAgICAgICAgIHNlbWFudGljRmFpbHVyZUR1ZVRvS2V5d29y
ZChzdHJpbmdGb3JGdW5jdGlvbk1vZGUobW9kZSksICIgbmFtZSIpOwpAQCAtMTQzNyw3NiArMTQy
OSw4OCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPiB0ZW1wbGF0ZSA8CiAgICAgICAg
ICAgICBpZiAobWF0Y2goT1BFTlBBUkVOKSkgewogICAgICAgICAgICAgICAgIG5leHQoKTsKICAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAoIW1hdGNoKENMT1NFUEFSRU4pKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGluZm8ucGFyYW1ldGVycyA9IHBhcnNlRm9ybWFsUGFyYW1l
dGVycyhjb250ZXh0KTsKLSAgICAgICAgICAgICAgICAgICAgZmFpbElmRmFsc2UoaW5mby5wYXJh
bWV0ZXJzLCAiQ2Fubm90IHBhcnNlIHBhcmFtZXRlcnMgZm9yIHRoaXMgIiwgc3RyaW5nRm9yRnVu
Y3Rpb25Nb2RlKG1vZGUpKTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYg
KG1hdGNoKENMT1NFUEFSRU4pKQorICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbkluZm8ucGFy
YW1ldGVyQ291bnQgPSAwOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgZmFpbElmRmFsc2UocGFyc2VGb3JtYWxQYXJhbWV0ZXJzKGNvbnRleHQsIHBhcmFtZXRlckxp
c3QsIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJDb3VudCksICJDYW5ub3QgcGFyc2UgcGFyYW1ldGVy
cyBmb3IgdGhpcyAiLCBzdHJpbmdGb3JGdW5jdGlvbk1vZGUobW9kZSkpOwogICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VQQVJFTiwgIkV4cGVjdGVk
IGEgJyknIG9yIGEgJywnIGFmdGVyIGEgcGFyYW1ldGVyIGRlY2xhcmF0aW9uIik7CiAgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJDb3Vu
dCA9IDE7CiAgICAgICAgICAgICAgICAgYXV0byBwYXJhbWV0ZXIgPSBwYXJzZURlc3RydWN0dXJp
bmdQYXR0ZXJuKGNvbnRleHQsIERlc3RydWN0dXJlVG9QYXJhbWV0ZXJzKTsKICAgICAgICAgICAg
ICAgICBmYWlsSWZGYWxzZShwYXJhbWV0ZXIsICJDYW5ub3QgcGFyc2UgcGFyYW1ldGVyIHBhdHRl
cm4iKTsKLSAgICAgICAgICAgICAgICBpbmZvLnBhcmFtZXRlcnMgPSBjb250ZXh0LmNyZWF0ZUZv
cm1hbFBhcmFtZXRlckxpc3QocGFyYW1ldGVyKTsKLSAgICAgICAgICAgICAgICBmYWlsSWZGYWxz
ZShpbmZvLnBhcmFtZXRlcnMsICJDYW5ub3QgcGFyc2UgcGFyYW1ldGVycyBmb3IgdGhpcyAiLCBz
dHJpbmdGb3JGdW5jdGlvbk1vZGUobW9kZSkpOworICAgICAgICAgICAgICAgIGNvbnRleHQuYXBw
ZW5kUGFyYW1ldGVyKHBhcmFtZXRlckxpc3QsIHBhcmFtZXRlcik7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgcmV0dXJuIHBhcmFtZXRlcnNTdGFydDsKICAg
ICB9Ci0jZW5kaWYKLSAgICAKKwogICAgIGlmICghY29uc3VtZShPUEVOUEFSRU4pKSB7CiAgICAg
ICAgIHNlbWFudGljRmFpbHVyZUR1ZVRvS2V5d29yZChzdHJpbmdGb3JGdW5jdGlvbk1vZGUobW9k
ZSksICIgbmFtZSIpOwogICAgICAgICBmYWlsV2l0aE1lc3NhZ2UoIkV4cGVjdGVkIGFuIG9wZW5p
bmcgJygnIGJlZm9yZSBhICIsIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShtb2RlKSwgIidzIHBhcmFt
ZXRlciBsaXN0Iik7CiAgICAgfQogCi0gICAgaWYgKG1vZGUgPT0gR2V0dGVyTW9kZSkKKyAgICBp
ZiAobW9kZSA9PSBHZXR0ZXJNb2RlKSB7CiAgICAgICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VQQVJF
TiwgImdldHRlciBmdW5jdGlvbnMgbXVzdCBoYXZlIG5vIHBhcmFtZXRlcnMiKTsKLSAgICBlbHNl
IGlmIChtb2RlID09IFNldHRlck1vZGUpIHsKKyAgICAgICAgZnVuY3Rpb25JbmZvLnBhcmFtZXRl
ckNvdW50ID0gMDsKKyAgICB9IGVsc2UgaWYgKG1vZGUgPT0gU2V0dGVyTW9kZSkgewogICAgICAg
ICBmYWlsSWZUcnVlKG1hdGNoKENMT1NFUEFSRU4pLCAic2V0dGVyIGZ1bmN0aW9ucyBtdXN0IGhh
dmUgb25lIHBhcmFtZXRlciIpOwogICAgICAgICBhdXRvIHBhcmFtZXRlciA9IHBhcnNlRGVzdHJ1
Y3R1cmluZ1BhdHRlcm4oY29udGV4dCwgRGVzdHJ1Y3R1cmVUb1BhcmFtZXRlcnMpOwogICAgICAg
ICBmYWlsSWZGYWxzZShwYXJhbWV0ZXIsICJzZXR0ZXIgZnVuY3Rpb25zIG11c3QgaGF2ZSBvbmUg
cGFyYW1ldGVyIik7Ci0gICAgICAgIGluZm8ucGFyYW1ldGVycyA9IGNvbnRleHQuY3JlYXRlRm9y
bWFsUGFyYW1ldGVyTGlzdChwYXJhbWV0ZXIpOworICAgICAgICBjb250ZXh0LmFwcGVuZFBhcmFt
ZXRlcihwYXJhbWV0ZXJMaXN0LCBwYXJhbWV0ZXIpOworICAgICAgICBmdW5jdGlvbkluZm8ucGFy
YW1ldGVyQ291bnQgPSAxOwogICAgICAgICBmYWlsSWZUcnVlKG1hdGNoKENPTU1BKSwgInNldHRl
ciBmdW5jdGlvbnMgbXVzdCBoYXZlIG9uZSBwYXJhbWV0ZXIiKTsKICAgICAgICAgY29uc3VtZU9y
RmFpbChDTE9TRVBBUkVOLCAiRXhwZWN0ZWQgYSAnKScgYWZ0ZXIgYSBwYXJhbWV0ZXIgZGVjbGFy
YXRpb24iKTsKICAgICB9IGVsc2UgewotICAgICAgICBpZiAoIW1hdGNoKENMT1NFUEFSRU4pKSB7
Ci0gICAgICAgICAgICBpbmZvLnBhcmFtZXRlcnMgPSBwYXJzZUZvcm1hbFBhcmFtZXRlcnMoY29u
dGV4dCk7Ci0gICAgICAgICAgICBmYWlsSWZGYWxzZShpbmZvLnBhcmFtZXRlcnMsICJDYW5ub3Qg
cGFyc2UgcGFyYW1ldGVycyBmb3IgdGhpcyAiLCBzdHJpbmdGb3JGdW5jdGlvbk1vZGUobW9kZSkp
OwotICAgICAgICB9CisgICAgICAgIGlmIChtYXRjaChDTE9TRVBBUkVOKSkKKyAgICAgICAgICAg
IGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJDb3VudCA9IDA7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGZhaWxJZkZhbHNlKHBhcnNlRm9ybWFsUGFyYW1ldGVycyhjb250ZXh0LCBwYXJhbWV0ZXJM
aXN0LCBmdW5jdGlvbkluZm8ucGFyYW1ldGVyQ291bnQpLCAiQ2Fubm90IHBhcnNlIHBhcmFtZXRl
cnMgZm9yIHRoaXMgIiwgc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKG1vZGUpKTsKICAgICAgICAgY29u
c3VtZU9yRmFpbChDTE9TRVBBUkVOLCAiRXhwZWN0ZWQgYSAnKScgb3IgYSAnLCcgYWZ0ZXIgYSBw
YXJhbWV0ZXIgZGVjbGFyYXRpb24iKTsKICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gcGFyYW1l
dGVyc1N0YXJ0OwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgotdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9u
SW5mbyhUcmVlQnVpbGRlciYgY29udGV4dCwgRnVuY3Rpb25SZXF1aXJlbWVudHMgcmVxdWlyZW1l
bnRzLCBGdW5jdGlvblBhcnNlTW9kZSBtb2RlLCBib29sIG5hbWVJc0luQ29udGFpbmluZ1Njb3Bl
LCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcgZXhwZWN0ZWRT
dXBlckJpbmRpbmcsIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgUGFyc2VyRnVuY3Rpb25JbmZv
PFRyZWVCdWlsZGVyPiYgaW5mbywgRnVuY3Rpb25QYXJzZVR5cGUgcGFyc2VUeXBlKQordGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0
aW9uSW5mbyhUcmVlQnVpbGRlciYgY29udGV4dCwgRnVuY3Rpb25SZXF1aXJlbWVudHMgcmVxdWly
ZW1lbnRzLCBGdW5jdGlvblBhcnNlTW9kZSBtb2RlLCBib29sIG5hbWVJc0luQ29udGFpbmluZ1Nj
b3BlLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcgZXhwZWN0
ZWRTdXBlckJpbmRpbmcsIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgUGFyc2VyRnVuY3Rpb25J
bmZvPFRyZWVCdWlsZGVyPiYgZnVuY3Rpb25JbmZvLCBGdW5jdGlvblBhcnNlVHlwZSBwYXJzZVR5
cGUpCiB7CisgICAgUkVMRUFTRV9BU1NFUlQobW9kZSAhPSBOb3RBRnVuY3Rpb25Nb2RlKTsKKwog
ICAgIEF1dG9Qb3BTY29wZVJlZiBmdW5jdGlvblNjb3BlKHRoaXMsIHB1c2hTY29wZSgpKTsKICAg
ICBmdW5jdGlvblNjb3BlLT5zZXRJc0Z1bmN0aW9uKCk7CiAgICAgaW50IGZ1bmN0aW9uTmFtZVN0
YXJ0ID0gbV90b2tlbi5tX2xvY2F0aW9uLnN0YXJ0T2Zmc2V0OwogICAgIGNvbnN0IElkZW50aWZp
ZXIqIGxhc3RGdW5jdGlvbk5hbWUgPSBtX2xhc3RGdW5jdGlvbk5hbWU7CiAgICAgbV9sYXN0RnVu
Y3Rpb25OYW1lID0gbnVsbHB0cjsKICAgICBpbnQgcGFyYW1ldGVyc1N0YXJ0OworICAgIEpTVG9r
ZW5Mb2NhdGlvbiBzdGFydExvY2F0aW9uOworICAgIGludCBzdGFydENvbHVtbjsKKyAgICBGdW5j
dGlvbkJvZHlUeXBlIGZ1bmN0aW9uQm9keVR5cGU7CiAgICAgCiAgICAgc3dpdGNoIChwYXJzZVR5
cGUpIHsKICAgICBjYXNlIFN0YW5kYXJkRnVuY3Rpb25QYXJzZVR5cGU6IHsKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQobW9kZSAhPSBBcnJvd0Z1bmN0aW9uTW9kZSk7CisKICAgICAgICAgaWYgKG1h
dGNoKElERU5UKSkgewotICAgICAgICAgICAgaW5mby5uYW1lID0gbV90b2tlbi5tX2RhdGEuaWRl
bnQ7Ci0gICAgICAgICAgICBtX2xhc3RGdW5jdGlvbk5hbWUgPSBpbmZvLm5hbWU7CisgICAgICAg
ICAgICBmdW5jdGlvbkluZm8ubmFtZSA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OworICAgICAgICAg
ICAgbV9sYXN0RnVuY3Rpb25OYW1lID0gZnVuY3Rpb25JbmZvLm5hbWU7CiAgICAgICAgICAgICBu
ZXh0KCk7CiAgICAgICAgICAgICBpZiAoIW5hbWVJc0luQ29udGFpbmluZ1Njb3BlKQotICAgICAg
ICAgICAgICAgIGZhaWxJZkZhbHNlSWZTdHJpY3QoZnVuY3Rpb25TY29wZS0+ZGVjbGFyZVZhcmlh
YmxlKGluZm8ubmFtZSksICInIiwgaW5mby5uYW1lLT5pbXBsKCksICInIGlzIG5vdCBhIHZhbGlk
ICIsIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShtb2RlKSwgIiBuYW1lIGluIHN0cmljdCBtb2RlIik7
CisgICAgICAgICAgICAgICAgZmFpbElmRmFsc2VJZlN0cmljdChmdW5jdGlvblNjb3BlLT5kZWNs
YXJlVmFyaWFibGUoZnVuY3Rpb25JbmZvLm5hbWUpLCAiJyIsIGZ1bmN0aW9uSW5mby5uYW1lLT5p
bXBsKCksICInIGlzIG5vdCBhIHZhbGlkICIsIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShtb2RlKSwg
IiBuYW1lIGluIHN0cmljdCBtb2RlIik7CiAgICAgICAgIH0gZWxzZSBpZiAocmVxdWlyZW1lbnRz
ID09IEZ1bmN0aW9uTmVlZHNOYW1lKSB7Ci0gICAgICAgICAgICBpZiAobWF0Y2goT1BFTlBBUkVO
KSAmJiBtb2RlID09IEZ1bmN0aW9uTW9kZSkKKyAgICAgICAgICAgIGlmIChtYXRjaChPUEVOUEFS
RU4pICYmIG1vZGUgPT0gTm9ybWFsRnVuY3Rpb25Nb2RlKQogICAgICAgICAgICAgICAgIHNlbWFu
dGljRmFpbCgiRnVuY3Rpb24gc3RhdGVtZW50cyBtdXN0IGhhdmUgYSBuYW1lIik7CiAgICAgICAg
ICAgICBzZW1hbnRpY0ZhaWx1cmVEdWVUb0tleXdvcmQoc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKG1v
ZGUpLCAiIG5hbWUiKTsKICAgICAgICAgICAgIGZhaWxEdWVUb1VuZXhwZWN0ZWRUb2tlbigpOwog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBw
YXJhbWV0ZXJzU3RhcnQgPSBwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhjb250ZXh0LCBtb2RlLCBp
bmZvKTsKKworICAgICAgICBzdGFydExvY2F0aW9uID0gdG9rZW5Mb2NhdGlvbigpOworICAgICAg
ICBmdW5jdGlvbkluZm8uc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CisgICAgICAgIHN0YXJ0Q29s
dW1uID0gdG9rZW5Db2x1bW4oKTsKKworICAgICAgICBwYXJhbWV0ZXJzU3RhcnQgPSBwYXJzZUZ1
bmN0aW9uUGFyYW1ldGVycyhjb250ZXh0LCBtb2RlLCBmdW5jdGlvbkluZm8pOwogICAgICAgICBw
cm9wYWdhdGVFcnJvcigpOwogICAgICAgICAKICAgICAgICAgbWF0Y2hPckZhaWwoT1BFTkJSQUNF
LCAiRXhwZWN0ZWQgYW4gb3BlbmluZyAneycgYXQgdGhlIHN0YXJ0IG9mIGEgIiwgc3RyaW5nRm9y
RnVuY3Rpb25Nb2RlKG1vZGUpLCAiIGJvZHkiKTsKQEAgLTE1MTgsMTQgKzE1MjIsMjAgQEAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcgogICAgICAgICAgICAgY29uc3Ry
dWN0b3JLaW5kID0gbV9kZWZhdWx0Q29uc3RydWN0b3JLaW5kOwogICAgICAgICAgICAgZXhwZWN0
ZWRTdXBlckJpbmRpbmcgPSBtX2RlZmF1bHRDb25zdHJ1Y3RvcktpbmQgPT0gQ29uc3RydWN0b3JL
aW5kOjpEZXJpdmVkID8gU3VwZXJCaW5kaW5nOjpOZWVkZWQgOiBTdXBlckJpbmRpbmc6Ok5vdE5l
ZWRlZDsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaW5mby5zdGFydEZ1bmN0aW9uT2Zm
c2V0ID0gbV90b2tlbi5tX2RhdGEub2Zmc2V0OworCisgICAgICAgIGZ1bmN0aW9uQm9keVR5cGUg
PSBTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrOwogICAgICAgICAKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogI2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCiAgICAgY2FzZSBBcnJv
d0Z1bmN0aW9uUGFyc2VUeXBlOiB7Ci0gICAgICAgIHBhcmFtZXRlcnNTdGFydCA9IHBhcnNlRnVu
Y3Rpb25QYXJhbWV0ZXJzKGNvbnRleHQsIEFycm93RnVuY3Rpb25Nb2RlLCBpbmZvKTsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQobW9kZSA9PSBBcnJvd0Z1bmN0aW9uTW9kZSk7CisKKyAgICAgICAg
c3RhcnRMb2NhdGlvbiA9IHRva2VuTG9jYXRpb24oKTsKKyAgICAgICAgZnVuY3Rpb25JbmZvLnN0
YXJ0TGluZSA9IHRva2VuTGluZSgpOworICAgICAgICBzdGFydENvbHVtbiA9IHRva2VuQ29sdW1u
KCk7CisKKyAgICAgICAgcGFyYW1ldGVyc1N0YXJ0ID0gcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMo
Y29udGV4dCwgbW9kZSwgZnVuY3Rpb25JbmZvKTsKICAgICAgICAgcHJvcGFnYXRlRXJyb3IoKTsK
ICAgICAgICAgCiAgICAgICAgIG1hdGNoT3JGYWlsKEFSUk9XRlVOQ1RJT04sICJFeHBlY3RlZCBh
ICc9PicgYWZ0ZXIgYXJyb3cgZnVuY3Rpb24gcGFyYW1ldGVyIGRlY2xhcmF0aW9uIik7CkBAIC0x
NTM1LDMwICsxNTQ1LDI1IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJz
ZXIKIAogICAgICAgICBBU1NFUlQoY29uc3RydWN0b3JLaW5kID09IENvbnN0cnVjdG9yS2luZDo6
Tm9uZSk7CiAgICAgICAgIAotICAgICAgICBpbmZvLmFycm93RnVuY3Rpb25PZmZzZXQgPSBtX3Rv
a2VuLm1fZGF0YS5vZmZzZXQ7CiAgICAgICAgIC8vIENoZWNrIGlmIGFycm93IGJvZHkgc3RhcnQg
d2l0aCB7LiBJZiBpdCB0cnVlIGl0IG1lYW4gdGhhdCBhcnJvdyBmdW5jdGlvbiBpcyBGYXQgYXJy
b3cgZnVuY3Rpb24KICAgICAgICAgLy8gYW5kIHdlIG5lZWQgdXNlIGNvbW1vbiBhcHByb2FjaCB0
byBwYXJzZSBmdW5jdGlvbiBib2R5Ci0gICAgICAgIFNhdmVQb2ludCBzYXZlUG9pbnQgPSBjcmVh
dGVTYXZlUG9pbnQoKTsKLSAgICAgICAgCiAgICAgICAgIG5leHQoKTsKLSAgICAgICAgaW5mby5m
dW5jdGlvbkJvZHlUeXBlID0gbWF0Y2goT1BFTkJSQUNFKSA/IEFycm93RnVuY3Rpb25Cb2R5Qmxv
Y2sgOiBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb247Ci0gICAgICAgIGluZm8uc3RhcnRGdW5j
dGlvbk9mZnNldCA9IChpbmZvLmZ1bmN0aW9uQm9keVR5cGUgPT0gQXJyb3dGdW5jdGlvbkJvZHlC
bG9jaykgPyBtX3Rva2VuLm1fZGF0YS5vZmZzZXQgOiBpbmZvLmFycm93RnVuY3Rpb25PZmZzZXQ7
CisgICAgICAgIGZ1bmN0aW9uQm9keVR5cGUgPSBtYXRjaChPUEVOQlJBQ0UpID8gQXJyb3dGdW5j
dGlvbkJvZHlCbG9jayA6IEFycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbjsKICAgICAgICAgCi0g
ICAgICAgIHJlc3RvcmVTYXZlUG9pbnQoc2F2ZVBvaW50KTsKLQogICAgICAgICBicmVhazsKICAg
ICB9CisjZWxzZQorICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAjZW5kaWYKICAgICB9CiAgICAgCiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3Ig
PSBjb25zdHJ1Y3RvcktpbmQgIT0gQ29uc3RydWN0b3JLaW5kOjpOb25lOwogCi0gICAgaW5mby5i
b2R5U3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7Ci0gICAgaW5mby5ib2R5U3RhcnRDb2x1bW4gPSBt
X3Rva2VuLm1fZGF0YS5vZmZzZXQgLSBtX3Rva2VuLm1fZGF0YS5saW5lU3RhcnRPZmZzZXQ7Ci0g
ICAgSlNUb2tlbkxvY2F0aW9uIHN0YXJ0TG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKKyAgICBm
dW5jdGlvbkluZm8uYm9keVN0YXJ0Q29sdW1uID0gc3RhcnRDb2x1bW47CiAgICAgCiAgICAgLy8g
SWYgd2Uga25vdyBhYm91dCB0aGlzIGZ1bmN0aW9uIGFscmVhZHksIHdlIGNhbiB1c2UgdGhlIGNh
Y2hlZCBpbmZvIGFuZCBza2lwIHRoZSBwYXJzZXIgdG8gdGhlIGVuZCBvZiB0aGUgZnVuY3Rpb24u
Ci0gICAgaWYgKGNvbnN0IFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtKiBjYWNoZWRJbmZvID0gVHJl
ZUJ1aWxkZXI6OkNhblVzZUZ1bmN0aW9uQ2FjaGUgPyBmaW5kQ2FjaGVkRnVuY3Rpb25JbmZvKGlu
Zm8uc3RhcnRGdW5jdGlvbk9mZnNldCkgOiAwKSB7CisgICAgaWYgKGNvbnN0IFNvdXJjZVByb3Zp
ZGVyQ2FjaGVJdGVtKiBjYWNoZWRJbmZvID0gVHJlZUJ1aWxkZXI6OkNhblVzZUZ1bmN0aW9uQ2Fj
aGUgPyBmaW5kQ2FjaGVkRnVuY3Rpb25JbmZvKGZ1bmN0aW9uSW5mby5zdGFydE9mZnNldCkgOiAw
KSB7CiAgICAgICAgIC8vIElmIHdlJ3JlIGluIGEgc3RyaWN0IGNvbnRleHQsIHRoZSBjYWNoZWQg
ZnVuY3Rpb24gaW5mbyBtdXN0IHNheSBpdCB3YXMgc3RyaWN0IHRvby4KICAgICAgICAgQVNTRVJU
KCFzdHJpY3RNb2RlKCkgfHwgY2FjaGVkSW5mby0+c3RyaWN0TW9kZSk7CiAgICAgICAgIEpTVG9r
ZW5Mb2NhdGlvbiBlbmRMb2NhdGlvbjsKQEAgLTE1NjcsMTcgKzE1NzIsMTcgQEAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcgogICAgICAgICBlbmRMb2NhdGlvbi5zdGFy
dE9mZnNldCA9IGNhY2hlZEluZm8tPmxhc3RUb2NrZW5TdGFydE9mZnNldDsKICAgICAgICAgZW5k
TG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0ID0gY2FjaGVkSW5mby0+bGFzdFRvY2tlbkxpbmVTdGFy
dE9mZnNldDsKIAotICAgICAgICBib29sIGVuZENvbHVtbklzT25TdGFydExpbmUgPSAoZW5kTG9j
YXRpb24ubGluZSA9PSBpbmZvLmJvZHlTdGFydExpbmUpOworICAgICAgICBib29sIGVuZENvbHVt
bklzT25TdGFydExpbmUgPSAoZW5kTG9jYXRpb24ubGluZSA9PSBmdW5jdGlvbkluZm8uc3RhcnRM
aW5lKTsKICAgICAgICAgQVNTRVJUKGVuZExvY2F0aW9uLnN0YXJ0T2Zmc2V0ID49IGVuZExvY2F0
aW9uLmxpbmVTdGFydE9mZnNldCk7CiAgICAgICAgIHVuc2lnbmVkIGJvZHlFbmRDb2x1bW4gPSBl
bmRDb2x1bW5Jc09uU3RhcnRMaW5lID8KICAgICAgICAgICAgIGVuZExvY2F0aW9uLnN0YXJ0T2Zm
c2V0IC0gbV90b2tlbi5tX2RhdGEubGluZVN0YXJ0T2Zmc2V0IDoKICAgICAgICAgICAgIGVuZExv
Y2F0aW9uLnN0YXJ0T2Zmc2V0IC0gZW5kTG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0OwogICAgICAg
ICB1bnNpZ25lZCBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0ID0gbV90b2tlbi5tX2xvY2F0aW9uLmxp
bmVTdGFydE9mZnNldDsKIAotICAgICAgICBpbmZvLmJvZHkgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0
aW9uQm9keSgKLSAgICAgICAgICAgIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBpbmZvLmJv
ZHlTdGFydENvbHVtbiwgYm9keUVuZENvbHVtbiwgCisgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5
ID0gY29udGV4dC5jcmVhdGVGdW5jdGlvbkJvZHkoCisgICAgICAgICAgICBzdGFydExvY2F0aW9u
LCBlbmRMb2NhdGlvbiwgZnVuY3Rpb25JbmZvLmJvZHlTdGFydENvbHVtbiwgYm9keUVuZENvbHVt
biwgCiAgICAgICAgICAgICBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQs
IHBhcmFtZXRlcnNTdGFydCwgCi0gICAgICAgICAgICBjYWNoZWRJbmZvLT5zdHJpY3RNb2RlLCBj
b25zdHJ1Y3RvcktpbmQpOworICAgICAgICAgICAgY2FjaGVkSW5mby0+c3RyaWN0TW9kZSwgY29u
c3RydWN0b3JLaW5kLCBjYWNoZWRJbmZvLT5wYXJhbWV0ZXJDb3VudCwgbW9kZSk7CiAgICAgICAg
IAogICAgICAgICBmdW5jdGlvblNjb3BlLT5yZXN0b3JlRnJvbVNvdXJjZVByb3ZpZGVyQ2FjaGUo
Y2FjaGVkSW5mbyk7CiAgICAgICAgIGZhaWxJZkZhbHNlKHBvcFNjb3BlKGZ1bmN0aW9uU2NvcGUs
IFRyZWVCdWlsZGVyOjpOZWVkc0ZyZWVWYXJpYWJsZUluZm8pLCAiUGFyc2VyIGVycm9yIik7CkBA
IC0xNTg5LDY0ICsxNTk0LDQwIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQ
YXJzZXIKIAogICAgICAgICBtX2xleGVyLT5zZXRPZmZzZXQobV90b2tlbi5tX2xvY2F0aW9uLmVu
ZE9mZnNldCwgbV90b2tlbi5tX2xvY2F0aW9uLmxpbmVTdGFydE9mZnNldCk7CiAgICAgICAgIG1f
bGV4ZXItPnNldExpbmVOdW1iZXIobV90b2tlbi5tX2xvY2F0aW9uLmxpbmUpOwotICAgICAgICBp
bmZvLmVuZEZ1bmN0aW9uT2Zmc2V0ID0gY2FjaGVkSW5mby0+ZW5kRnVuY3Rpb25PZmZzZXQ7Ci0j
aWYgRU5BQkxFKEVTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCkKKyAgICAgICAgZnVuY3Rpb25JbmZv
LmVuZE9mZnNldCA9IGNhY2hlZEluZm8tPmVuZEZ1bmN0aW9uT2Zmc2V0OworCiAgICAgICAgIGlm
IChwYXJzZVR5cGUgPT0gQXJyb3dGdW5jdGlvblBhcnNlVHlwZSkKLSAgICAgICAgICAgIGluZm8u
ZnVuY3Rpb25Cb2R5VHlwZSA9IGNhY2hlZEluZm8tPmlzQm9keUFycm93RXhwcmVzc2lvbiA/ICBB
cnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gOiBBcnJvd0Z1bmN0aW9uQm9keUJsb2NrOworICAg
ICAgICAgICAgZnVuY3Rpb25Cb2R5VHlwZSA9IGNhY2hlZEluZm8tPmlzQm9keUFycm93RXhwcmVz
c2lvbiA/ICBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gOiBBcnJvd0Z1bmN0aW9uQm9keUJs
b2NrOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBpbmZvLmZ1bmN0aW9uQm9keVR5cGUgPSBT
dGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrOworICAgICAgICAgICAgZnVuY3Rpb25Cb2R5VHlwZSA9
IFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2s7CiAgICAgICAgIAotICAgICAgICBzd2l0Y2ggKGlu
Zm8uZnVuY3Rpb25Cb2R5VHlwZSkgeworICAgICAgICBzd2l0Y2ggKGZ1bmN0aW9uQm9keVR5cGUp
IHsKICAgICAgICAgY2FzZSBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb246CiAgICAgICAgICAg
ICBuZXh0KCk7Ci0gICAgICAgICAgICBjb250ZXh0LnNldEVuZE9mZnNldChpbmZvLmJvZHksIG1f
bGV4ZXItPmN1cnJlbnRPZmZzZXQoKSk7CisgICAgICAgICAgICBjb250ZXh0LnNldEVuZE9mZnNl
dChmdW5jdGlvbkluZm8uYm9keSwgbV9sZXhlci0+Y3VycmVudE9mZnNldCgpKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFycm93RnVuY3Rpb25Cb2R5QmxvY2s6CiAgICAgICAg
IGNhc2UgU3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jazoKLSAgICAgICAgICAgIGNvbnRleHQuc2V0
RW5kT2Zmc2V0KGluZm8uYm9keSwgbV9sZXhlci0+Y3VycmVudE9mZnNldCgpKTsKKyAgICAgICAg
ICAgIGNvbnRleHQuc2V0RW5kT2Zmc2V0KGZ1bmN0aW9uSW5mby5ib2R5LCBtX2xleGVyLT5jdXJy
ZW50T2Zmc2V0KCkpOwogICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KLSNlbHNlCi0gICAgICAgIGNvbnRleHQuc2V0RW5kT2Zmc2V0KGluZm8uYm9keSwg
bV9sZXhlci0+Y3VycmVudE9mZnNldCgpKTsKLSAgICAgICAgbmV4dCgpOwotI2VuZGlmCi0gICAg
ICAgIGluZm8uYm9keUVuZExpbmUgPSBtX2xhc3RUb2tlbkVuZFBvc2l0aW9uLmxpbmU7CisgICAg
ICAgIGZ1bmN0aW9uSW5mby5lbmRMaW5lID0gbV9sYXN0VG9rZW5FbmRQb3NpdGlvbi5saW5lOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCiAgICAgbV9sYXN0RnVuY3Rpb25OYW1l
ID0gbGFzdEZ1bmN0aW9uTmFtZTsKICAgICBQYXJzZXJTdGF0ZSBvbGRTdGF0ZSA9IHNhdmVTdGF0
ZSgpOwogICAgIAotI2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCi0gICAgc3dp
dGNoIChpbmZvLmZ1bmN0aW9uQm9keVR5cGUpIHsKLSAgICBjYXNlIEFycm93RnVuY3Rpb25Cb2R5
QmxvY2s6IHsKLSAgICAgICAgLy8gQ29uc3VtZSA9PiBpbiBjYXNlIG9mIGFycm93IGZ1bmN0aW9u
IGJsb2NrIGUuZy4geCA9PiB7IHJldHVybiB4OyB9Ci0gICAgICAgIG5leHQoKTsKLSAgICAKLSAg
ICAgICAgaW5mby5ib2R5U3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7Ci0gICAgICAgIGluZm8uYm9k
eVN0YXJ0Q29sdW1uID0gbV90b2tlbi5tX2RhdGEub2Zmc2V0IC0gbV90b2tlbi5tX2RhdGEubGlu
ZVN0YXJ0T2Zmc2V0OwotICAgICAgICAgICAgCi0gICAgICAgIGluZm8uYm9keSA9IHBhcnNlRnVu
Y3Rpb25Cb2R5KGNvbnRleHQsIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFy
dCwgcGFyYW1ldGVyc1N0YXJ0LCBjb25zdHJ1Y3RvcktpbmQsIFN0YW5kYXJkRnVuY3Rpb25QYXJz
ZVR5cGUpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBTdGFuZGFyZEZ1bmN0aW9u
Qm9keUJsb2NrOgotICAgIGNhc2UgQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uIDogewotICAg
ICAgICBpbmZvLmJvZHkgPSBwYXJzZUZ1bmN0aW9uQm9keShjb250ZXh0LCBmdW5jdGlvbktleXdv
cmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgY29uc3RydWN0b3JL
aW5kLCBwYXJzZVR5cGUpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgfQotI2Vsc2UKLSAg
ICBpbmZvLmJvZHkgPSBwYXJzZUZ1bmN0aW9uQm9keShjb250ZXh0LCBmdW5jdGlvbktleXdvcmRT
dGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgY29uc3RydWN0b3JLaW5k
LCBTdGFuZGFyZEZ1bmN0aW9uUGFyc2VUeXBlKTsKLSNlbmRpZgorICAgIGZ1bmN0aW9uSW5mby5i
b2R5ID0gcGFyc2VGdW5jdGlvbkJvZHkoY29udGV4dCwgc3RhcnRMb2NhdGlvbiwgc3RhcnRDb2x1
bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0
YXJ0LCBjb25zdHJ1Y3RvcktpbmQsIGZ1bmN0aW9uQm9keVR5cGUsIGZ1bmN0aW9uSW5mby5wYXJh
bWV0ZXJDb3VudCwgbW9kZSk7CiAgICAgCiAgICAgcmVzdG9yZVN0YXRlKG9sZFN0YXRlKTsKLSAg
ICBmYWlsSWZGYWxzZShpbmZvLmJvZHksICJDYW5ub3QgcGFyc2UgdGhlIGJvZHkgb2YgdGhpcyAi
LCBzdHJpbmdGb3JGdW5jdGlvbk1vZGUobW9kZSkpOwotICAgIGNvbnRleHQuc2V0RW5kT2Zmc2V0
KGluZm8uYm9keSwgbV9sZXhlci0+Y3VycmVudE9mZnNldCgpKTsKLSAgICBpZiAoZnVuY3Rpb25T
Y29wZS0+c3RyaWN0TW9kZSgpICYmIGluZm8ubmFtZSkgewotICAgICAgICBSRUxFQVNFX0FTU0VS
VChtb2RlID09IEZ1bmN0aW9uTW9kZSB8fCBtb2RlID09IE1ldGhvZE1vZGUpOwotICAgICAgICBz
ZW1hbnRpY0ZhaWxJZlRydWUobV92bS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzID09ICppbmZv
Lm5hbWUsICInIiwgaW5mby5uYW1lLT5pbXBsKCksICInIGlzIG5vdCBhIHZhbGlkIGZ1bmN0aW9u
IG5hbWUgaW4gc3RyaWN0IG1vZGUiKTsKLSAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKG1fdm0t
PnByb3BlcnR5TmFtZXMtPmV2YWwgPT0gKmluZm8ubmFtZSwgIiciLCBpbmZvLm5hbWUtPmltcGwo
KSwgIicgaXMgbm90IGEgdmFsaWQgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgbW9kZSIpOworICAg
IGZhaWxJZkZhbHNlKGZ1bmN0aW9uSW5mby5ib2R5LCAiQ2Fubm90IHBhcnNlIHRoZSBib2R5IG9m
IHRoaXMgIiwgc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKG1vZGUpKTsKKyAgICBjb250ZXh0LnNldEVu
ZE9mZnNldChmdW5jdGlvbkluZm8uYm9keSwgbV9sZXhlci0+Y3VycmVudE9mZnNldCgpKTsKKyAg
ICBpZiAoZnVuY3Rpb25TY29wZS0+c3RyaWN0TW9kZSgpICYmIGZ1bmN0aW9uSW5mby5uYW1lKSB7
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1vZGUgPT0gTm9ybWFsRnVuY3Rpb25Nb2RlIHx8IG1v
ZGUgPT0gTWV0aG9kTW9kZSB8fCBtb2RlID09IEFycm93RnVuY3Rpb25Nb2RlKTsKKyAgICAgICAg
c2VtYW50aWNGYWlsSWZUcnVlKG1fdm0tPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cyA9PSAqZnVu
Y3Rpb25JbmZvLm5hbWUsICInIiwgZnVuY3Rpb25JbmZvLm5hbWUtPmltcGwoKSwgIicgaXMgbm90
IGEgdmFsaWQgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgbW9kZSIpOworICAgICAgICBzZW1hbnRp
Y0ZhaWxJZlRydWUobV92bS0+cHJvcGVydHlOYW1lcy0+ZXZhbCA9PSAqZnVuY3Rpb25JbmZvLm5h
bWUsICInIiwgZnVuY3Rpb25JbmZvLm5hbWUtPmltcGwoKSwgIicgaXMgbm90IGEgdmFsaWQgZnVu
Y3Rpb24gbmFtZSBpbiBzdHJpY3QgbW9kZSIpOwogICAgIH0KICAgICBpZiAoZnVuY3Rpb25TY29w
ZS0+aGFzRGlyZWN0U3VwZXIoKSkgewogICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoIWlzQ2xh
c3NDb25zdHJ1Y3RvciwgIkNhbm5vdCBjYWxsIHN1cGVyKCkgb3V0c2lkZSBvZiBhIGNsYXNzIGNv
bnN0cnVjdG9yIik7CkBAIC0xNjU2LDU2ICsxNjM3LDQ4IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gYm9vbCBQYXJzZXIKICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGV4cGVjdGVk
U3VwZXJCaW5kaW5nID09IFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCAic3VwZXIgY2FuIG9ubHkg
YmUgdXNlZCBpbiBhIG1ldGhvZCBvZiBhIGRlcml2ZWQgY2xhc3MiKTsKIAogICAgIEpTVG9rZW5M
b2NhdGlvbiBsb2NhdGlvbiA9IEpTVG9rZW5Mb2NhdGlvbihtX3Rva2VuLm1fbG9jYXRpb24pOwot
ICAgIGluZm8uZW5kRnVuY3Rpb25PZmZzZXQgPSBtX3Rva2VuLm1fZGF0YS5vZmZzZXQ7CisgICAg
ZnVuY3Rpb25JbmZvLmVuZE9mZnNldCA9IG1fdG9rZW4ubV9kYXRhLm9mZnNldDsKICAgICAKLSNp
ZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQotICAgIGlmIChpbmZvLmZ1bmN0aW9u
Qm9keVR5cGUgPT0gQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKSB7CisgICAgaWYgKGZ1bmN0
aW9uQm9keVR5cGUgPT0gQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKSB7CiAgICAgICAgIGxv
Y2F0aW9uID0gbG9jYXRpb25CZWZvcmVMYXN0VG9rZW4oKTsKLSAgICAgICAgaW5mby5lbmRGdW5j
dGlvbk9mZnNldCA9IGxvY2F0aW9uLmVuZE9mZnNldDsKKyAgICAgICAgZnVuY3Rpb25JbmZvLmVu
ZE9mZnNldCA9IGxvY2F0aW9uLmVuZE9mZnNldDsKICAgICB9Ci0jZW5kaWYKICAgICAKICAgICAv
LyBDYWNoZSB0aGUgdG9rZW5pemVyIHN0YXRlIGFuZCB0aGUgZnVuY3Rpb24gc2NvcGUgdGhlIGZp
cnN0IHRpbWUgdGhlIGZ1bmN0aW9uIGlzIHBhcnNlZC4KICAgICAvLyBBbnkgZnV0dXJlIHJlcGFy
c2luZyBjYW4gdGhlbiBza2lwIHRoZSBmdW5jdGlvbi4KICAgICBzdGF0aWMgY29uc3QgaW50IG1p
bmltdW1GdW5jdGlvbkxlbmd0aFRvQ2FjaGUgPSAxNjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U291
cmNlUHJvdmlkZXJDYWNoZUl0ZW0+IG5ld0luZm87Ci0gICAgaW50IGZ1bmN0aW9uTGVuZ3RoID0g
aW5mby5lbmRGdW5jdGlvbk9mZnNldCAtIGluZm8uc3RhcnRGdW5jdGlvbk9mZnNldDsKKyAgICBp
bnQgZnVuY3Rpb25MZW5ndGggPSBmdW5jdGlvbkluZm8uZW5kT2Zmc2V0IC0gZnVuY3Rpb25JbmZv
LnN0YXJ0T2Zmc2V0OwogICAgIGlmIChUcmVlQnVpbGRlcjo6Q2FuVXNlRnVuY3Rpb25DYWNoZSAm
JiBtX2Z1bmN0aW9uQ2FjaGUgJiYgZnVuY3Rpb25MZW5ndGggPiBtaW5pbXVtRnVuY3Rpb25MZW5n
dGhUb0NhY2hlKSB7CiAgICAgICAgIFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtQ3JlYXRpb25QYXJh
bWV0ZXJzIHBhcmFtZXRlcnM7Ci0gICAgICAgIHBhcmFtZXRlcnMuZW5kRnVuY3Rpb25PZmZzZXQg
PSBpbmZvLmVuZEZ1bmN0aW9uT2Zmc2V0OworICAgICAgICBwYXJhbWV0ZXJzLmVuZEZ1bmN0aW9u
T2Zmc2V0ID0gZnVuY3Rpb25JbmZvLmVuZE9mZnNldDsKICAgICAgICAgcGFyYW1ldGVycy5mdW5j
dGlvbk5hbWVTdGFydCA9IGZ1bmN0aW9uTmFtZVN0YXJ0OwogICAgICAgICBwYXJhbWV0ZXJzLmxh
c3RUb2NrZW5MaW5lID0gbG9jYXRpb24ubGluZTsKICAgICAgICAgcGFyYW1ldGVycy5sYXN0VG9j
a2VuU3RhcnRPZmZzZXQgPSBsb2NhdGlvbi5zdGFydE9mZnNldDsKICAgICAgICAgcGFyYW1ldGVy
cy5sYXN0VG9ja2VuRW5kT2Zmc2V0ID0gbG9jYXRpb24uZW5kT2Zmc2V0OwogICAgICAgICBwYXJh
bWV0ZXJzLmxhc3RUb2NrZW5MaW5lU3RhcnRPZmZzZXQgPSBsb2NhdGlvbi5saW5lU3RhcnRPZmZz
ZXQ7Ci0jaWYgRU5BQkxFKEVTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCkKLSAgICAgICAgaWYgKGlu
Zm8uZnVuY3Rpb25Cb2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pIHsKKyAg
ICAgICAgcGFyYW1ldGVycy5wYXJhbWV0ZXJDb3VudCA9IGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJD
b3VudDsKKyAgICAgICAgaWYgKGZ1bmN0aW9uQm9keVR5cGUgPT0gQXJyb3dGdW5jdGlvbkJvZHlF
eHByZXNzaW9uKSB7CiAgICAgICAgICAgICBwYXJhbWV0ZXJzLmlzQm9keUFycm93RXhwcmVzc2lv
biA9IHRydWU7CiAgICAgICAgICAgICBwYXJhbWV0ZXJzLnRva2VuVHlwZSA9IG1fdG9rZW4ubV90
eXBlOwogICAgICAgICB9Ci0jZW5kaWYKICAgICAgICAgZnVuY3Rpb25TY29wZS0+ZmlsbFBhcmFt
ZXRlcnNGb3JTb3VyY2VQcm92aWRlckNhY2hlKHBhcmFtZXRlcnMpOwogICAgICAgICBuZXdJbmZv
ID0gU291cmNlUHJvdmlkZXJDYWNoZUl0ZW06OmNyZWF0ZShwYXJhbWV0ZXJzKTsKICAgICB9CiAg
ICAgCiAgICAgZmFpbElmRmFsc2UocG9wU2NvcGUoZnVuY3Rpb25TY29wZSwgVHJlZUJ1aWxkZXI6
Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbyksICJQYXJzZXIgZXJyb3IiKTsKICAgICAKLSNpZiBFTkFC
TEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQotICAgIGlmIChpbmZvLmZ1bmN0aW9uQm9keVR5
cGUgPT0gQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQorICAgIGlmIChmdW5jdGlvbkJvZHlU
eXBlID09IEFycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKICAgICAgICAgZmFpbElmRmFsc2Uo
aXNFbmRPZkFycm93RnVuY3Rpb24oKSwgIkV4cGVjdGVkIHRoZSBjbG9zaW5nICc7JyAnLCcgJ10n
ICcpJyAnfScsIGxpbmUgdGVybWluYXRvciBvciBFT0YgYWZ0ZXIgYXJyb3cgZnVuY3Rpb24iKTsK
ICAgICBlbHNlIHsKICAgICAgICAgbWF0Y2hPckZhaWwoQ0xPU0VCUkFDRSwgIkV4cGVjdGVkIGEg
Y2xvc2luZyAnfScgYWZ0ZXIgYSAiLCBzdHJpbmdGb3JGdW5jdGlvbk1vZGUobW9kZSksICIgYm9k
eSIpOwogICAgICAgICBuZXh0KCk7CiAgICAgfQotI2Vsc2UKLSAgICBtYXRjaE9yRmFpbChDTE9T
RUJSQUNFLCAiRXhwZWN0ZWQgYSBjbG9zaW5nICd9JyBhZnRlciBhICIsIHN0cmluZ0ZvckZ1bmN0
aW9uTW9kZShtb2RlKSwgIiBib2R5Iik7Ci0gICAgbmV4dCgpOwotI2VuZGlmCiAgICAgCiAgICAg
aWYgKG5ld0luZm8pCi0gICAgICAgIG1fZnVuY3Rpb25DYWNoZS0+YWRkKGluZm8uc3RhcnRGdW5j
dGlvbk9mZnNldCwgV1RGOjptb3ZlKG5ld0luZm8pKTsKKyAgICAgICAgbV9mdW5jdGlvbkNhY2hl
LT5hZGQoZnVuY3Rpb25JbmZvLnN0YXJ0T2Zmc2V0LCBXVEY6Om1vdmUobmV3SW5mbykpOwogICAg
IAotICAgIGluZm8uYm9keUVuZExpbmUgPSBtX2xhc3RUb2tlbkVuZFBvc2l0aW9uLmxpbmU7Cisg
ICAgZnVuY3Rpb25JbmZvLmVuZExpbmUgPSBtX2xhc3RUb2tlbkVuZFBvc2l0aW9uLmxpbmU7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTE3MTYsMTIgKzE2ODksMTIgQEAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZQogICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlv
bih0b2tlbkxvY2F0aW9uKCkpOwogICAgIHVuc2lnbmVkIGZ1bmN0aW9uS2V5d29yZFN0YXJ0ID0g
dG9rZW5TdGFydCgpOwogICAgIG5leHQoKTsKLSAgICBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1
aWxkZXI+IGluZm87Ci0gICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQs
IEZ1bmN0aW9uTmVlZHNOYW1lLCBGdW5jdGlvbk1vZGUsIHRydWUsIENvbnN0cnVjdG9yS2luZDo6
Tm9uZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsCi0gICAgICAgIGZ1bmN0aW9uS2V5d29yZFN0
YXJ0LCBpbmZvLCBTdGFuZGFyZEZ1bmN0aW9uUGFyc2VUeXBlKSksICJDYW5ub3QgcGFyc2UgdGhp
cyBmdW5jdGlvbiIpOwotICAgIGZhaWxJZkZhbHNlKGluZm8ubmFtZSwgIkZ1bmN0aW9uIHN0YXRl
bWVudHMgbXVzdCBoYXZlIGEgbmFtZSIpOwotICAgIGZhaWxJZkZhbHNlSWZTdHJpY3QoZGVjbGFy
ZVZhcmlhYmxlKGluZm8ubmFtZSksICJDYW5ub3QgZGVjbGFyZSBhIGZ1bmN0aW9uIG5hbWVkICci
LCBpbmZvLm5hbWUtPmltcGwoKSwgIicgaW4gc3RyaWN0IG1vZGUiKTsKLSAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVGdW5jRGVjbFN0YXRlbWVudChsb2NhdGlvbiwgaW5mbyk7CisgICAgUGFyc2Vy
RnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiBmdW5jdGlvbkluZm87CisgICAgZmFpbElmRmFsc2Uo
KHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTmVlZHNOYW1lLCBOb3JtYWxGdW5j
dGlvbk1vZGUsIHRydWUsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOb3RO
ZWVkZWQsCisgICAgICAgIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbkluZm8sIFN0YW5k
YXJkRnVuY3Rpb25QYXJzZVR5cGUpKSwgIkNhbm5vdCBwYXJzZSB0aGlzIGZ1bmN0aW9uIik7Cisg
ICAgZmFpbElmRmFsc2UoZnVuY3Rpb25JbmZvLm5hbWUsICJGdW5jdGlvbiBzdGF0ZW1lbnRzIG11
c3QgaGF2ZSBhIG5hbWUiKTsKKyAgICBmYWlsSWZGYWxzZUlmU3RyaWN0KGRlY2xhcmVWYXJpYWJs
ZShmdW5jdGlvbkluZm8ubmFtZSksICJDYW5ub3QgZGVjbGFyZSBhIGZ1bmN0aW9uIG5hbWVkICci
LCBmdW5jdGlvbkluZm8ubmFtZS0+aW1wbCgpLCAiJyBpbiBzdHJpY3QgbW9kZSIpOworICAgIHJl
dHVybiBjb250ZXh0LmNyZWF0ZUZ1bmNEZWNsU3RhdGVtZW50KGxvY2F0aW9uLCBmdW5jdGlvbklu
Zm8pOwogfQogCiAjaWYgRU5BQkxFKEVTNl9DTEFTU19TWU5UQVgpCkBAIC0xODM3LDcgKzE4MTAs
NyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVDbGFzc0V4CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+IG1ldGhv
ZEluZm87CiAgICAgICAgICAgICBib29sIGlzQ29uc3RydWN0b3IgPSAhaXNTdGF0aWNNZXRob2Qg
JiYgKmlkZW50ID09IHByb3BlcnR5TmFtZXMuY29uc3RydWN0b3I7Ci0gICAgICAgICAgICBmYWls
SWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25Ob1JlcXVpcmVtZW50
cywgaXNTdGF0aWNNZXRob2QgPyBGdW5jdGlvbk1vZGUgOiBNZXRob2RNb2RlLCBmYWxzZSwgaXND
b25zdHJ1Y3RvciA/IGNvbnN0cnVjdG9yS2luZCA6IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3Vw
ZXJCaW5kaW5nOjpOZWVkZWQsIG1ldGhvZFN0YXJ0LCBtZXRob2RJbmZvLCBTdGFuZGFyZEZ1bmN0
aW9uUGFyc2VUeXBlKSksICJDYW5ub3QgcGFyc2UgdGhpcyBtZXRob2QiKTsKKyAgICAgICAgICAg
IGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5vUmVxdWly
ZW1lbnRzLCBpc1N0YXRpY01ldGhvZCA/IE5vcm1hbEZ1bmN0aW9uTW9kZSA6IE1ldGhvZE1vZGUs
IGZhbHNlLCBpc0NvbnN0cnVjdG9yID8gY29uc3RydWN0b3JLaW5kIDogQ29uc3RydWN0b3JLaW5k
OjpOb25lLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgbWV0aG9kU3RhcnQsIG1ldGhvZEluZm8sIFN0
YW5kYXJkRnVuY3Rpb25QYXJzZVR5cGUpKSwgIkNhbm5vdCBwYXJzZSB0aGlzIG1ldGhvZCIpOwog
ICAgICAgICAgICAgZmFpbElmRmFsc2UoaWRlbnQgJiYgZGVjbGFyZVZhcmlhYmxlKGlkZW50KSwg
IkNhbm5vdCBkZWNsYXJlIGEgbWV0aG9kIG5hbWVkICciLCBtZXRob2RJbmZvLm5hbWUtPmltcGwo
KSwgIiciKTsKICAgICAgICAgICAgIG1ldGhvZEluZm8ubmFtZSA9IGlzQ29uc3RydWN0b3IgPyBj
bGFzc05hbWUgOiBpZGVudDsKIApAQCAtMjY1NCw3ICsyNjI3LDcgQEAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzcwogICAgICAgICBuZXh0KCk7CiAgICAgICAgIFBhcnNl
ckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4gaW5mbzsKICAgICAgICAgaW5mby5uYW1lID0gJm1f
dm0tPnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyOwotICAgICAgICBmYWlsSWZGYWxzZSgo
cGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25Ob1JlcXVpcmVtZW50cywgRnVuY3Rp
b25Nb2RlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5vdE5l
ZWRlZCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGluZm8sIFN0YW5kYXJkRnVuY3Rpb25QYXJzZVR5
cGUpKSwgIkNhbm5vdCBwYXJzZSBmdW5jdGlvbiBleHByZXNzaW9uIik7CisgICAgICAgIGZhaWxJ
ZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5vUmVxdWlyZW1lbnRz
LCBOb3JtYWxGdW5jdGlvbk1vZGUsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVy
QmluZGluZzo6Tm90TmVlZGVkLCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW5mbywgU3RhbmRhcmRG
dW5jdGlvblBhcnNlVHlwZSkpLCAiQ2Fubm90IHBhcnNlIGZ1bmN0aW9uIGV4cHJlc3Npb24iKTsK
ICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25FeHByKGxvY2F0aW9uLCBpbmZv
KTsKICAgICB9CiAjaWYgRU5BQkxFKEVTNl9DTEFTU19TWU5UQVgpCkBAIC0yODk0LDcgKzI4Njcs
NiBAQCBlbmRNZW1iZXJFeHByZXNzaW9uOgogICAgIHJldHVybiBiYXNlOwogfQogCi0jaWYgRU5B
QkxFKEVTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCkKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5
cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUFycm93RnVuY3Rpb25FeHByZXNzaW9uKFRyZWVCdWlsZGVyJiBjb250
ZXh0KQogewpAQCAtMjkwNCwxMSArMjg3NiwxMCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVFeHByZXNzCiAgICAgbG9jYXRpb24gPSB0b2tlbkxvY2F0aW9uKCk7CiAgICAgUGFy
c2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiBpbmZvOwogICAgIGluZm8ubmFtZSA9ICZtX3Zt
LT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllcjsKLSAgICBmYWlsSWZGYWxzZSgocGFyc2VG
dW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25Ob1JlcXVpcmVtZW50cywgRnVuY3Rpb25Nb2Rl
LCB0cnVlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBm
dW5jdGlvbktleXdvcmRTdGFydCwgaW5mbywgQXJyb3dGdW5jdGlvblBhcnNlVHlwZSkpLCAiQ2Fu
bm90IHBhcnNlIGFycm93IGZ1bmN0aW9uIGV4cHJlc3Npb24iKTsKKyAgICBmYWlsSWZGYWxzZSgo
cGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25Ob1JlcXVpcmVtZW50cywgQXJyb3dG
dW5jdGlvbk1vZGUsIHRydWUsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpO
b3ROZWVkZWQsIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbmZvLCBBcnJvd0Z1bmN0aW9uUGFyc2VU
eXBlKSksICJDYW5ub3QgcGFyc2UgYXJyb3cgZnVuY3Rpb24gZXhwcmVzc2lvbiIpOwogCiAgICAg
cmV0dXJuIGNvbnRleHQuY3JlYXRlQXJyb3dGdW5jdGlvbkV4cHIobG9jYXRpb24sIGluZm8pOwog
fQotI2VuZGlmCiAKIHN0YXRpYyBjb25zdCBjaGFyKiBvcGVyYXRvclN0cmluZyhib29sIHByZWZp
eCwgdW5zaWduZWQgdG9rKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5oCShyZXZpc2lvbiAxODY4MDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC04MCwyMSArODAsOSBAQCBjbGFzcyBTb3VyY2VDb2Rl
OwogQ09NUElMRV9BU1NFUlQoTGFzdFVudGFnZ2VkVG9rZW4gPCA2NCwgTGVzc1RoYW42NFVudGFn
Z2VkVG9rZW5zKTsKIAogZW51bSBTb3VyY2VFbGVtZW50c01vZGUgeyBDaGVja0ZvclN0cmljdE1v
ZGUsIERvbnRDaGVja0ZvclN0cmljdE1vZGUgfTsKLSNpZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJ
T05fU1lOVEFYKQogZW51bSBGdW5jdGlvblBhcnNlVHlwZSB7IFN0YW5kYXJkRnVuY3Rpb25QYXJz
ZVR5cGUsIEFycm93RnVuY3Rpb25QYXJzZVR5cGUgfTsKLSNlbHNlCi1lbnVtIEZ1bmN0aW9uUGFy
c2VUeXBlIHsgU3RhbmRhcmRGdW5jdGlvblBhcnNlVHlwZX07Ci0jZW5kaWYKK2VudW0gRnVuY3Rp
b25Cb2R5VHlwZSB7IEFycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiwgQXJyb3dGdW5jdGlvbkJv
ZHlCbG9jaywgU3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jayB9OwogZW51bSBGdW5jdGlvblJlcXVp
cmVtZW50cyB7IEZ1bmN0aW9uTm9SZXF1aXJlbWVudHMsIEZ1bmN0aW9uTmVlZHNOYW1lIH07Ci1l
bnVtIEZ1bmN0aW9uUGFyc2VNb2RlIHsKLSAgICBGdW5jdGlvbk1vZGUsCi0gICAgR2V0dGVyTW9k
ZSwKLSAgICBTZXR0ZXJNb2RlLAotICAgIE1ldGhvZE1vZGUsCi0jaWYgRU5BQkxFKEVTNl9BUlJP
V0ZVTkNUSU9OX1NZTlRBWCkKLSAgICBBcnJvd0Z1bmN0aW9uTW9kZQotI2VuZGlmCi19OwogZW51
bSBEZXN0cnVjdHVyaW5nS2luZCB7CiAgICAgRGVzdHJ1Y3R1cmVUb1ZhcmlhYmxlcywKICAgICBE
ZXN0cnVjdHVyZVRvUGFyYW1ldGVycywKQEAgLTQyOSwxMyArNDE3LDEyIEBAIGNsYXNzIFBhcnNl
ciB7CiAKIHB1YmxpYzoKICAgICBQYXJzZXIoCi0gICAgICAgIFZNKiwgY29uc3QgU291cmNlQ29k
ZSYsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGNvbnN0IElkZW50aWZpZXImLCAKLSAgICAgICAgSlNQ
YXJzZXJCdWlsdGluTW9kZSwgSlNQYXJzZXJTdHJpY3RNb2RlLCBKU1BhcnNlckNvZGVUeXBlLAor
ICAgICAgICBWTSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1BhcnNlckJ1aWx0aW5Nb2RlLCBKU1Bh
cnNlclN0cmljdE1vZGUsIEpTUGFyc2VyQ29kZVR5cGUsIAogICAgICAgICBDb25zdHJ1Y3Rvcktp
bmQgZGVmYXVsdENvbnN0cnVjdG9yS2luZCA9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgVGhpc1RE
Wk1vZGUgPSBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRlZCk7CiAgICAgflBhcnNlcigpOwogCiAg
ICAgdGVtcGxhdGUgPGNsYXNzIFBhcnNlZE5vZGU+Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNl
ZE5vZGU+IHBhcnNlKFBhcnNlckVycm9yJik7CisgICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5v
ZGU+IHBhcnNlKFBhcnNlckVycm9yJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uUGFyc2VN
b2RlKTsKIAogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKSBj
b25zdCB7IHJldHVybiBtX2xleGVyLT5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7IH0KICAg
ICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb25CZWZvcmVMYXN0VG9rZW4oKSBjb25zdCB7IHJldHVy
biBtX2xleGVyLT5sYXN0VG9rZW5Mb2NhdGlvbigpOyB9CkBAIC01NjMsNyArNTUwLDcgQEAgcHJp
dmF0ZToKICAgICB9CiAKICAgICBQYXJzZXIoKTsKLSAgICBTdHJpbmcgcGFyc2VJbm5lcigpOwor
ICAgIFN0cmluZyBwYXJzZUlubmVyKGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlvblBhcnNlTW9k
ZSk7CiAKICAgICB2b2lkIGRpZEZpbmlzaFBhcnNpbmcoU291cmNlRWxlbWVudHMqLCBEZWNsYXJh
dGlvblN0YWNrczo6VmFyU3RhY2smLCAKICAgICAgICAgRGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0
aW9uU3RhY2smLCBDb2RlRmVhdHVyZXMsIGludCwgSWRlbnRpZmllclNldCYsIGNvbnN0IFZlY3Rv
cjxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiYmKTsKQEAgLTYyMSw3ICs2MDgsNiBAQCBwcml2
YXRlOgogICAgICAgICByZXR1cm4gbV90b2tlbi5tX3R5cGUgPT0gSURFTlQgJiYgKm1fdG9rZW4u
bV9kYXRhLmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPm9mOwogICAgIH0KICAgICAKLSNp
ZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQogICAgIEFMV0FZU19JTkxJTkUgYm9v
bCBpc0VuZE9mQXJyb3dGdW5jdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gbWF0Y2goU0VN
SUNPTE9OKSB8fCBtYXRjaChDT01NQSkgfHwgbWF0Y2goQ0xPU0VQQVJFTikgfHwgbWF0Y2goQ0xP
U0VCUkFDRSkgfHwgbWF0Y2goQ0xPU0VCUkFDS0VUKSB8fCBtYXRjaChFT0ZUT0spIHx8IG1fbGV4
ZXItPnByZXZUZXJtaW5hdG9yKCk7CkBAIC02MjksNiArNjE1LDcgQEAgcHJpdmF0ZToKICAgICAK
ICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNBcnJvd0Z1bmN0aW9uUGFyYW10ZXJzKCkKICAgICB7
CisjaWYgRU5BQkxFKEVTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCkKICAgICAgICAgYm9vbCBpc0Fy
cm93RnVuY3Rpb24gPSBmYWxzZTsKICAgICAgICAgCiAgICAgICAgIGlmIChtYXRjaChFT0ZUT0sp
KQpAQCAtNjU5LDggKzY0NiwxMCBAQCBwcml2YXRlOgogICAgICAgICByZXN0b3JlU2F2ZVBvaW50
KHNhdmVBcnJvd0Z1bmN0aW9uUG9pbnQpOwogICAgICAgICAKICAgICAgICAgcmV0dXJuIGlzQXJy
b3dGdW5jdGlvbjsKLSAgICB9CisjZWxzZQorICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYK
KyAgICB9CiAgICAgCiAgICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCB0b2tlblN0YXJ0KCkKICAg
ICB7CkBAIC03NjYsNyArNzU1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVt
ZW50cyBwYXJzZVNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJiwgU291cmNlRWxlbWVudHNNb2Rl
LCBGdW5jdGlvblBhcnNlVHlwZSk7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlU291cmNlRWxlbWVudHMgcGFyc2VTb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYsIFNvdXJj
ZUVsZW1lbnRzTW9kZSk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3Rh
dGVtZW50IHBhcnNlU3RhdGVtZW50TGlzdEl0ZW0oVHJlZUJ1aWxkZXImLCBjb25zdCBJZGVudGlm
aWVyKiYgZGlyZWN0aXZlLCB1bnNpZ25lZCogZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCk7CiAgICAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IHBhcnNlU3RhdGVtZW50
KFRyZWVCdWlsZGVyJiwgY29uc3QgSWRlbnRpZmllciomIGRpcmVjdGl2ZSwgdW5zaWduZWQqIGRp
cmVjdGl2ZUxpdGVyYWxMZW5ndGggPSAwKTsKICNpZiBFTkFCTEUoRVM2X0NMQVNTX1NZTlRBWCkK
QEAgLTgwNywxNyArNzk2LDEzIEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlUHJvcGVydHkgcGFyc2VQcm9wZXJ0eShUcmVlQnVpbGRlciYsIGJvb2wgc3Ry
aWN0KTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIHBh
cnNlUHJvcGVydHlNZXRob2QoVHJlZUJ1aWxkZXImIGNvbnRleHQsIGNvbnN0IElkZW50aWZpZXIq
IG1ldGhvZE5hbWUpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVByb3Bl
cnR5IHBhcnNlR2V0dGVyU2V0dGVyKFRyZWVCdWlsZGVyJiwgYm9vbCBzdHJpY3QsIFByb3BlcnR5
Tm9kZTo6VHlwZSwgdW5zaWduZWQgZ2V0dGVyT3JTZXR0ZXJTdGFydE9mZnNldCwgQ29uc3RydWN0
b3JLaW5kID0gQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmcgPSBTdXBlckJpbmRp
bmc6Ok5vdE5lZWRlZCk7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdBWVNf
SU5MSU5FIFRyZWVGdW5jdGlvbkJvZHkgcGFyc2VGdW5jdGlvbkJvZHkoVHJlZUJ1aWxkZXImLCBp
bnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFt
ZXRlcnNTdGFydCwgQ29uc3RydWN0b3JLaW5kLCBGdW5jdGlvblBhcnNlVHlwZSk7Ci0gICAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdBWVNfSU5MSU5FIFRyZWVGb3JtYWxQYXJhbWV0
ZXJMaXN0IHBhcnNlRm9ybWFsUGFyYW1ldGVycyhUcmVlQnVpbGRlciYpOworICAgIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBUcmVlRnVuY3Rpb25Cb2R5IHBhcnNl
RnVuY3Rpb25Cb2R5KFRyZWVCdWlsZGVyJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBp
bnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFt
ZXRlcnNTdGFydCwgQ29uc3RydWN0b3JLaW5kLCBGdW5jdGlvbkJvZHlUeXBlLCB1bnNpZ25lZCwg
RnVuY3Rpb25QYXJzZU1vZGUpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxX
QVlTX0lOTElORSBib29sIHBhcnNlRm9ybWFsUGFyYW1ldGVycyhUcmVlQnVpbGRlciYsIFRyZWVG
b3JtYWxQYXJhbWV0ZXJMaXN0LCB1bnNpZ25lZCYpOwogICAgIGVudW0gVmFyRGVjbGFyYXRpb25M
aXN0Q29udGV4dCB7IEZvckxvb3BDb250ZXh0LCBWYXJEZWNsYXJhdGlvbkNvbnRleHQgfTsKICAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIHBhcnNlVmFyRGVj
bGFyYXRpb25MaXN0KFRyZWVCdWlsZGVyJiwgaW50JiBkZWNsYXJhdGlvbnMsIFRyZWVEZXN0cnVj
dHVyaW5nUGF0dGVybiYgbGFzdFBhdHRlcm4sIFRyZWVFeHByZXNzaW9uJiBsYXN0SW5pdGlhbGl6
ZXIsIEpTVGV4dFBvc2l0aW9uJiBpZGVudFN0YXJ0LCBKU1RleHRQb3NpdGlvbiYgaW5pdFN0YXJ0
LCBKU1RleHRQb3NpdGlvbiYgaW5pdEVuZCwgVmFyRGVjbGFyYXRpb25MaXN0Q29udGV4dCk7CiAg
ICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgVHJlZUNvbnN0RGVj
bExpc3QgcGFyc2VDb25zdERlY2xhcmF0aW9uTGlzdChUcmVlQnVpbGRlciYpOwotCi0jaWYgRU5B
QkxFKEVTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCkKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VBcnJvd0Z1bmN0aW9uU2luZ2xlRXhwcmVzc2lvbkJv
ZHkoVHJlZUJ1aWxkZXImLCBGdW5jdGlvblBhcnNlVHlwZSk7CisgICAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgcGFyc2VBcnJvd0Z1bmN0aW9uU2luZ2xl
RXhwcmVzc2lvbkJvZHlTb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYpOwogICAgIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gcGFyc2VBcnJvd0Z1bmN0aW9uRXhw
cmVzc2lvbihUcmVlQnVpbGRlciYpOwotI2VuZGlmCi0KICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBUcmVlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gY3JlYXRlQmlu
ZGluZ1BhdHRlcm4oVHJlZUJ1aWxkZXImLCBEZXN0cnVjdHVyaW5nS2luZCwgY29uc3QgSWRlbnRp
ZmllciYsIGludCBkZXB0aCwgSlNUb2tlbik7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBORVZFUl9JTkxJTkUgVHJlZURlc3RydWN0dXJpbmdQYXR0ZXJuIHBhcnNlRGVzdHJ1Y3R1
cmluZ1BhdHRlcm4oVHJlZUJ1aWxkZXImLCBEZXN0cnVjdHVyaW5nS2luZCwgaW50IGRlcHRoID0g
MCk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgVHJlZURl
c3RydWN0dXJpbmdQYXR0ZXJuIHRyeVBhcnNlRGVzdHJ1Y3R1cmluZ1BhdHRlcm5FeHByZXNzaW9u
KFRyZWVCdWlsZGVyJik7CkBAIC04NTAsMTMgKzgzNSwxMCBAQCBwcml2YXRlOgogICAgICAgICBy
ZXR1cm4gYWxsb3dBdXRvbWF0aWNTZW1pY29sb24oKTsKICAgICB9CiAgICAgCi0KLSNpZiBFTkFC
TEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQogICAgIHZvaWQgc2V0RW5kT2ZTdGF0ZW1lbnQo
KQogICAgIHsKICAgICAgICAgbV9sZXhlci0+c2V0VG9rZW5Qb3NpdGlvbigmbV90b2tlbik7CiAg
ICAgfQotI2VuZGlmCiAKICAgICBib29sIGNhblJlY3Vyc2UoKQogICAgIHsKQEAgLTkyOCw2ICs5
MTAsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IFNvdXJjZUNvZGUqIG1fc291cmNlOwogICAgIFBh
cnNlckFyZW5hIG1fcGFyc2VyQXJlbmE7CiAgICAgc3RkOjp1bmlxdWVfcHRyPExleGVyVHlwZT4g
bV9sZXhlcjsKKyAgICBGdW5jdGlvblBhcmFtZXRlcnMqIG1fcGFyYW1ldGVycyB7IG51bGxwdHIg
fTsKICAgICAKICAgICBib29sIG1faGFzU3RhY2tPdmVyZmxvdzsKICAgICBTdHJpbmcgbV9lcnJv
ck1lc3NhZ2U7CkBAIC05NzQsMTMgKzk1NywxMyBAQCBwcml2YXRlOgogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFBhcnNlZE5vZGU+Ci1zdGQ6OnVuaXF1
ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlKFBhcnNlckVycm9yJiBl
cnJvcikKK3N0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2UoUGFyc2VyRXJyb3ImIGVycm9yLCBjb25zdCBJZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBGdW5j
dGlvblBhcnNlTW9kZSBwYXJzZU1vZGUpCiB7CiAgICAgaW50IGVyckxpbmU7CiAgICAgU3RyaW5n
IGVyck1zZzsKIAogICAgIGlmIChQYXJzZWROb2RlOjpzY29wZUlzRnVuY3Rpb24pCi0gICAgICAg
IG1fbGV4ZXItPnNldElzUmVwYXJzaW5nKCk7CisgICAgICAgIG1fbGV4ZXItPnNldElzUmVwYXJz
aW5nRnVuY3Rpb24oKTsKIAogICAgIG1fc291cmNlRWxlbWVudHMgPSAwOwogCkBAIC05OTEsNyAr
OTc0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxMZXhlcgogICAgIEFT
U0VSVChtX3NvdXJjZS0+c3RhcnRDb2x1bW4oKSA+IDApOwogICAgIHVuc2lnbmVkIHN0YXJ0Q29s
dW1uID0gbV9zb3VyY2UtPnN0YXJ0Q29sdW1uKCkgLSAxOwogCi0gICAgU3RyaW5nIHBhcnNlRXJy
b3IgPSBwYXJzZUlubmVyKCk7CisgICAgU3RyaW5nIHBhcnNlRXJyb3IgPSBwYXJzZUlubmVyKGNh
bGxlZU5hbWUsIHBhcnNlTW9kZSk7CiAKICAgICBpbnQgbGluZU51bWJlciA9IG1fbGV4ZXItPmxp
bmVOdW1iZXIoKTsKICAgICBib29sIGxleEVycm9yID0gbV9sZXhlci0+c2F3RXJyb3IoKTsKQEAg
LTEwMjEsNiArMTAwNCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4
ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdmFyRGVjbGFyYXRpb25z
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9mdW5jRGVjbGFyYXRpb25z
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jYXB0dXJlZFZhcmlhYmxl
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyYW1ldGVycywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICptX3NvdXJjZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fZmVhdHVyZXMsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX251bUNvbnN0YW50cyk7CkBAIC0xMDU0LDE4ICsxMDM4LDE5IEBA
IHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4ZXIKIAogdGVtcGxhdGUgPGNs
YXNzIFBhcnNlZE5vZGU+CiBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoCi0gICAg
Vk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uUGFyYW1ldGVycyogcGFy
YW1ldGVycywKKyAgICBWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwKICAgICBjb25z
dCBJZGVudGlmaWVyJiBuYW1lLCBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLAogICAg
IEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBKU1BhcnNlckNvZGVUeXBlIGNvZGVUeXBl
LAogICAgIFBhcnNlckVycm9yJiBlcnJvciwgSlNUZXh0UG9zaXRpb24qIHBvc2l0aW9uQmVmb3Jl
TGFzdE5ld2xpbmUgPSAwLAotICAgIENvbnN0cnVjdG9yS2luZCBkZWZhdWx0Q29uc3RydWN0b3JL
aW5kID0gQ29uc3RydWN0b3JLaW5kOjpOb25lLCBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSA9IFRo
aXNURFpNb2RlOjpDaGVja0lmTmVlZGVkKQorICAgIEZ1bmN0aW9uUGFyc2VNb2RlIHBhcnNlTW9k
ZSA9IE5vdEFGdW5jdGlvbk1vZGUsIENvbnN0cnVjdG9yS2luZCBkZWZhdWx0Q29uc3RydWN0b3JL
aW5kID0gQ29uc3RydWN0b3JLaW5kOjpOb25lLCAKKyAgICBUaGlzVERaTW9kZSB0aGlzVERaTW9k
ZSA9IFRoaXNURFpNb2RlOjpDaGVja0lmTmVlZGVkKQogewogICAgIFNhbXBsaW5nUmVnaW9uIHNh
bXBsaW5nUmVnaW9uKCJQYXJzaW5nIik7CiAKICAgICBBU1NFUlQoIXNvdXJjZS5wcm92aWRlcigp
LT5zb3VyY2UoKS5pc051bGwoKSk7CiAgICAgaWYgKHNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2Uo
KS5pczhCaXQoKSkgewotICAgICAgICBQYXJzZXI8TGV4ZXI8TENoYXI+PiBwYXJzZXIodm0sIHNv
dXJjZSwgcGFyYW1ldGVycywgbmFtZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIGNvZGVUeXBl
LCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kLCB0aGlzVERaTW9kZSk7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxQYXJzZWROb2RlPiByZXN1bHQgPSBwYXJzZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJy
b3IpOworICAgICAgICBQYXJzZXI8TGV4ZXI8TENoYXI+PiBwYXJzZXIodm0sIHNvdXJjZSwgYnVp
bHRpbk1vZGUsIHN0cmljdE1vZGUsIGNvZGVUeXBlLCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kLCB0
aGlzVERaTW9kZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiByZXN1bHQg
PSBwYXJzZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3IsIG5hbWUsIHBhcnNlTW9kZSk7CiAgICAg
ICAgIGlmIChwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKQogICAgICAgICAgICAgKnBvc2l0aW9u
QmVmb3JlTGFzdE5ld2xpbmUgPSBwYXJzZXIucG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpOwog
ICAgICAgICBpZiAoYnVpbHRpbk1vZGUgPT0gSlNQYXJzZXJCdWlsdGluTW9kZTo6QnVpbHRpbikg
ewpAQCAtMTA3Nyw4ICsxMDYyLDggQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNl
KAogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICBBU1NFUlRfV0lUSF9NRVNTQUdF
KGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQgPT0gQ29uc3RydWN0b3JLaW5kOjpOb25lLCAiQnVpbHRp
bkV4ZWN1dGFibGVzOjpjcmVhdGVEZWZhdWx0Q29uc3RydWN0b3Igc2hvdWxkIGFsd2F5cyB1c2Ug
YSA4LWJpdCBzdHJpbmciKTsKLSAgICBQYXJzZXI8TGV4ZXI8VUNoYXI+PiBwYXJzZXIodm0sIHNv
dXJjZSwgcGFyYW1ldGVycywgbmFtZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIGNvZGVUeXBl
LCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kLCB0aGlzVERaTW9kZSk7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPFBhcnNlZE5vZGU+IHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJvcik7
CisgICAgUGFyc2VyPExleGVyPFVDaGFyPj4gcGFyc2VyKHZtLCBzb3VyY2UsIGJ1aWx0aW5Nb2Rl
LCBzdHJpY3RNb2RlLCBjb2RlVHlwZSwgZGVmYXVsdENvbnN0cnVjdG9yS2luZCwgdGhpc1REWk1v
ZGUpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiByZXN1bHQgPSBwYXJzZXIucGFy
c2U8UGFyc2VkTm9kZT4oZXJyb3IsIG5hbWUsIHBhcnNlTW9kZSk7CiAgICAgaWYgKHBvc2l0aW9u
QmVmb3JlTGFzdE5ld2xpbmUpCiAgICAgICAgICpwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lID0g
cGFyc2VyLnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsKICAgICByZXR1cm4gcmVzdWx0OwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJGdW5jdGlvbkluZm8uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckZ1bmN0aW9u
SW5mby5oCShyZXZpc2lvbiAxODY4MDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlckZ1bmN0aW9uSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwyNyArMjgsMTcgQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKLSNpZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFY
KQotZW51bSBGdW5jdGlvbkJvZHlUeXBlIHsgQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uLCBB
cnJvd0Z1bmN0aW9uQm9keUJsb2NrLCBTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrIH07Ci0jZW5k
aWYKLQogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPgogc3RydWN0IFBhcnNlckZ1bmN0aW9u
SW5mbyB7CiAgICAgY29uc3QgSWRlbnRpZmllciogbmFtZSA9IDA7CiAgICAgdHlwZW5hbWUgVHJl
ZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgcGFyYW1ldGVycyA9IDA7CiAgICAgdHlwZW5h
bWUgVHJlZUJ1aWxkZXI6OkZ1bmN0aW9uQm9keSBib2R5ID0gMDsKLSAgICB1bnNpZ25lZCBzdGFy
dEZ1bmN0aW9uT2Zmc2V0ID0gMDsKLSAgICB1bnNpZ25lZCBlbmRGdW5jdGlvbk9mZnNldCA9IDA7
Ci0gICAgaW50IGJvZHlTdGFydExpbmUgPSAwOwotICAgIGludCBib2R5RW5kTGluZSA9IDA7Cisg
ICAgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQgPSAwOworICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
ID0gMDsKKyAgICB1bnNpZ25lZCBlbmRPZmZzZXQgPSAwOworICAgIGludCBzdGFydExpbmUgPSAw
OworICAgIGludCBlbmRMaW5lID0gMDsKICAgICB1bnNpZ25lZCBib2R5U3RhcnRDb2x1bW4gPSAw
OwotI2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCi0gICAgdW5zaWduZWQgYXJy
b3dGdW5jdGlvbk9mZnNldCA9IDA7Ci0gICAgdW5zaWduZWQgYXJyb3dGdW5jdGlvbk5leHRUb2Nr
ZW5FbmRPZmZzZXQgPSAwOwotICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uIHsgZmFsc2UgfTsKLSAg
ICBib29sIGlzRW5kQnlUZXJtaW5hdG9yIHsgZmFsc2UgfTsKLSAgICBGdW5jdGlvbkJvZHlUeXBl
IGZ1bmN0aW9uQm9keVR5cGUgeyBTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrIH07Ci0jZW5kaWYK
IH07CiAKICNpZiBFTkFCTEUoRVM2X0NMQVNTX1NZTlRBWCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgJKHJldmlzaW9uIDE4NjgwOCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAkod29ya2luZyBjb3B5KQpAQCAt
NDQsNiArNDQsMTUgQEAgZW51bSBEZWJ1Z2dlck1vZGUgeyBEZWJ1Z2dlck9mZiwgRGVidWdnZQog
CiBlbnVtIEZ1bmN0aW9uTW9kZSB7IEZ1bmN0aW9uRXhwcmVzc2lvbiwgRnVuY3Rpb25EZWNsYXJh
dGlvbiB9OwogCitlbnVtIEZ1bmN0aW9uUGFyc2VNb2RlIHsKKyAgICBOb3JtYWxGdW5jdGlvbk1v
ZGUsCisgICAgR2V0dGVyTW9kZSwKKyAgICBTZXR0ZXJNb2RlLAorICAgIE1ldGhvZE1vZGUsCisg
ICAgTm90QUZ1bmN0aW9uTW9kZSwKKyAgICBBcnJvd0Z1bmN0aW9uTW9kZQorfTsKKwogaW5saW5l
IGJvb2wgZnVuY3Rpb25OYW1lSXNJblNjb3BlKGNvbnN0IElkZW50aWZpZXImIG5hbWUsIEZ1bmN0
aW9uTW9kZSBmdW5jdGlvbk1vZGUpCiB7CiAgICAgaWYgKG5hbWUuaXNOdWxsKCkpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGUuaAkocmV2aXNpb24gMTg2ODA4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEwNSw5ICsxMDUsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAg
ICAgIFNvdXJjZUNvZGUgc3ViRXhwcmVzc2lvbih1bnNpZ25lZCBvcGVuQnJhY2UsIHVuc2lnbmVk
IGNsb3NlQnJhY2UsIGludCBmaXJzdExpbmUsIGludCBzdGFydENvbHVtbik7CiAKLSNpZiBFTkFC
TEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQotICAgICAgICBTb3VyY2VDb2RlIHN1YkFycm93
RXhwcmVzc2lvbih1bnNpZ25lZCBzdGFydEFycm93RnVuY3Rpb24sIHVuc2lnbmVkIGVuZEFycm93
RnVuY3Rpb24sIGludCBmaXJzdExpbmUsIGludCBzdGFydENvbHVtbik7Ci0jZW5kaWYKICAgICBw
cml2YXRlOgogICAgICAgICBSZWZQdHI8U291cmNlUHJvdmlkZXI+IG1fcHJvdmlkZXI7CiAgICAg
ICAgIGludCBtX3N0YXJ0Q2hhcjsKQEAgLTEyMSwyMCArMTE4LDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHJldHVybiBTb3VyY2VDb2RlKFN0cmluZ1NvdXJjZVByb3ZpZGVyOjpjcmVhdGUo
c291cmNlLCB1cmwsIHN0YXJ0UG9zaXRpb24pLCBzdGFydFBvc2l0aW9uLm1fbGluZS5vbmVCYXNl
ZEludCgpLCBzdGFydFBvc2l0aW9uLm1fY29sdW1uLm9uZUJhc2VkSW50KCkpOwogICAgIH0KICAg
ICAKLSNpZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQotICAgIGlubGluZSBTb3Vy
Y2VDb2RlIFNvdXJjZUNvZGU6OnN1YkFycm93RXhwcmVzc2lvbih1bnNpZ25lZCBzdGFydEFycm93
RnVuY3Rpb24sIHVuc2lnbmVkIGVuZEFycm93RnVuY3Rpb24sIGludCBmaXJzdExpbmUsIGludCBz
dGFydENvbHVtbikKLSAgICB7Ci0gICAgICAgIEFTU0VSVChwcm92aWRlcigpLT5zb3VyY2UoKVtz
dGFydEFycm93RnVuY3Rpb25dID09ICc9JyAmJiBwcm92aWRlcigpLT5zb3VyY2UoKVtzdGFydEFy
cm93RnVuY3Rpb24gKyAxXSA9PSAnPicpOwotCi0gICAgICAgIHN0YXJ0Q29sdW1uICs9IDE7IC8v
IENvbnZlcnQgdG8gYmFzZSAxLgotICAgICAgICByZXR1cm4gU291cmNlQ29kZShwcm92aWRlcigp
LCBzdGFydEFycm93RnVuY3Rpb24sIGVuZEFycm93RnVuY3Rpb24sIGZpcnN0TGluZSwgc3RhcnRD
b2x1bW4pOwotICAgIH0KLSNlbmRpZgotCiAgICAgaW5saW5lIFNvdXJjZUNvZGUgU291cmNlQ29k
ZTo6c3ViRXhwcmVzc2lvbih1bnNpZ25lZCBvcGVuQnJhY2UsIHVuc2lnbmVkIGNsb3NlQnJhY2Us
IGludCBmaXJzdExpbmUsIGludCBzdGFydENvbHVtbikKICAgICB7Ci0gICAgICAgIEFTU0VSVChw
cm92aWRlcigpLT5zb3VyY2UoKVtvcGVuQnJhY2VdID09ICd7Jyk7Ci0gICAgICAgIEFTU0VSVChw
cm92aWRlcigpLT5zb3VyY2UoKVtjbG9zZUJyYWNlXSA9PSAnfScpOwogICAgICAgICBzdGFydENv
bHVtbiArPSAxOyAvLyBDb252ZXJ0IHRvIGJhc2UgMS4KICAgICAgICAgcmV0dXJuIFNvdXJjZUNv
ZGUocHJvdmlkZXIoKSwgb3BlbkJyYWNlLCBjbG9zZUJyYWNlICsgMSwgZmlyc3RMaW5lLCBzdGFy
dENvbHVtbik7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3Vy
Y2VQcm92aWRlckNhY2hlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Tb3VyY2VQcm92aWRlckNhY2hlLmgJKHJldmlzaW9uIDE4NjgwOCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXJDYWNoZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBTb3VyY2VQcm92aWRlckNhY2hl
SXRlbSogZ2V0KGludCBzb3VyY2VQb3NpdGlvbikgY29uc3QgeyByZXR1cm4gbV9tYXAuZ2V0KHNv
dXJjZVBvc2l0aW9uKTsgfQogCiBwcml2YXRlOgotICAgIEhhc2hNYXA8aW50LCBzdGQ6OnVuaXF1
ZV9wdHI8U291cmNlUHJvdmlkZXJDYWNoZUl0ZW0+PiBtX21hcDsKKyAgICBIYXNoTWFwPGludCwg
c3RkOjp1bmlxdWVfcHRyPFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtPiwgV1RGOjpJbnRIYXNoPGlu
dD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8aW50Pj4gbV9tYXA7CiB9Owog
CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyQ2Fj
aGVJdGVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3Vy
Y2VQcm92aWRlckNhY2hlSXRlbS5oCShyZXZpc2lvbiAxODY4MDgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQwLDE1ICs0MCwxNCBAQCBzdHJ1Y3QgU291cmNlUHJvdmlkZXJDYWNoZUl0ZW1DcmVhdGlv
blBhCiAgICAgdW5zaWduZWQgbGFzdFRvY2tlbkVuZE9mZnNldDsKICAgICB1bnNpZ25lZCBsYXN0
VG9ja2VuTGluZVN0YXJ0T2Zmc2V0OwogICAgIHVuc2lnbmVkIGVuZEZ1bmN0aW9uT2Zmc2V0Owor
ICAgIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50OwogICAgIGJvb2wgbmVlZHNGdWxsQWN0aXZhdGlv
bjsKICAgICBib29sIHVzZXNFdmFsOwogICAgIGJvb2wgc3RyaWN0TW9kZTsKICAgICBWZWN0b3I8
UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4gdXNlZFZhcmlhYmxlczsKICAgICBWZWN0b3I8UmVm
UHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4gd3JpdHRlblZhcmlhYmxlczsKLSNpZiBFTkFCTEUoRVM2
X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQogICAgIGJvb2wgaXNCb2R5QXJyb3dFeHByZXNzaW9uIHsg
ZmFsc2UgfTsKICAgICBKU1Rva2VuVHlwZSB0b2tlblR5cGUgeyBDTE9TRUJSQUNFIH07Ci0jZW5k
aWYKIH07CiAKICNpZiBDT01QSUxFUihNU1ZDKQpAQCAtNjUsMTEgKzY0LDcgQEAgcHVibGljOgog
ICAgIEpTVG9rZW4gZW5kRnVuY3Rpb25Ub2tlbigpIGNvbnN0IAogICAgIHsKICAgICAgICAgSlNU
b2tlbiB0b2tlbjsKLSNpZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQogICAgICAg
ICB0b2tlbi5tX3R5cGUgPSBpc0JvZHlBcnJvd0V4cHJlc3Npb24gPyB0b2tlblR5cGUgOiBDTE9T
RUJSQUNFOwotI2Vsc2UKLSAgICAgICAgdG9rZW4ubV90eXBlID0gQ0xPU0VCUkFDRTsKLSNlbmRp
ZgogICAgICAgICB0b2tlbi5tX2RhdGEub2Zmc2V0ID0gbGFzdFRvY2tlblN0YXJ0T2Zmc2V0Owog
ICAgICAgICB0b2tlbi5tX2xvY2F0aW9uLnN0YXJ0T2Zmc2V0ID0gbGFzdFRvY2tlblN0YXJ0T2Zm
c2V0OwogICAgICAgICB0b2tlbi5tX2xvY2F0aW9uLmVuZE9mZnNldCA9IGxhc3RUb2NrZW5FbmRP
ZmZzZXQ7CkBAIC04Nyw2ICs4Miw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBsYXN0VG9ja2Vu
TGluZSA6IDMxOwogICAgIHVuc2lnbmVkIGxhc3RUb2NrZW5TdGFydE9mZnNldCA6IDMxOwogICAg
IHVuc2lnbmVkIGxhc3RUb2NrZW5FbmRPZmZzZXQ6IDMxOworICAgIHVuc2lnbmVkIHBhcmFtZXRl
ckNvdW50OwogICAgIAogICAgIGJvb2wgdXNlc0V2YWwgOiAxOwogCkBAIC05OCwxMCArOTQsOCBA
QCBwdWJsaWM6CiAKICAgICBVbmlxdWVkU3RyaW5nSW1wbCoqIHVzZWRWYXJpYWJsZXMoKSBjb25z
dCB7IHJldHVybiBjb25zdF9jYXN0PFVuaXF1ZWRTdHJpbmdJbXBsKio+KG1fdmFyaWFibGVzKTsg
fQogICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiogd3JpdHRlblZhcmlhYmxlcygpIGNvbnN0IHsgcmV0
dXJuIGNvbnN0X2Nhc3Q8VW5pcXVlZFN0cmluZ0ltcGwqKj4oJm1fdmFyaWFibGVzW3VzZWRWYXJp
YWJsZXNDb3VudF0pOyB9Ci0jaWYgRU5BQkxFKEVTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCkKICAg
ICBib29sIGlzQm9keUFycm93RXhwcmVzc2lvbjsKICAgICBKU1Rva2VuVHlwZSB0b2tlblR5cGU7
Ci0jZW5kaWYKIAogcHJpdmF0ZToKICAgICBTb3VyY2VQcm92aWRlckNhY2hlSXRlbShjb25zdCBT
b3VyY2VQcm92aWRlckNhY2hlSXRlbUNyZWF0aW9uUGFyYW1ldGVycyYpOwpAQCAtMTMwLDE1ICsx
MjQsMTQgQEAgaW5saW5lIFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtOjpTb3VyY2VQcgogICAgICwg
bGFzdFRvY2tlbkxpbmUocGFyYW1ldGVycy5sYXN0VG9ja2VuTGluZSkKICAgICAsIGxhc3RUb2Nr
ZW5TdGFydE9mZnNldChwYXJhbWV0ZXJzLmxhc3RUb2NrZW5TdGFydE9mZnNldCkKICAgICAsIGxh
c3RUb2NrZW5FbmRPZmZzZXQocGFyYW1ldGVycy5sYXN0VG9ja2VuRW5kT2Zmc2V0KQorICAgICwg
cGFyYW1ldGVyQ291bnQocGFyYW1ldGVycy5wYXJhbWV0ZXJDb3VudCkKICAgICAsIHVzZXNFdmFs
KHBhcmFtZXRlcnMudXNlc0V2YWwpCiAgICAgLCBzdHJpY3RNb2RlKHBhcmFtZXRlcnMuc3RyaWN0
TW9kZSkKICAgICAsIGxhc3RUb2NrZW5MaW5lU3RhcnRPZmZzZXQocGFyYW1ldGVycy5sYXN0VG9j
a2VuTGluZVN0YXJ0T2Zmc2V0KQogICAgICwgdXNlZFZhcmlhYmxlc0NvdW50KHBhcmFtZXRlcnMu
dXNlZFZhcmlhYmxlcy5zaXplKCkpCiAgICAgLCB3cml0dGVuVmFyaWFibGVzQ291bnQocGFyYW1l
dGVycy53cml0dGVuVmFyaWFibGVzLnNpemUoKSkKLSNpZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJ
T05fU1lOVEFYKQogICAgICwgaXNCb2R5QXJyb3dFeHByZXNzaW9uKHBhcmFtZXRlcnMuaXNCb2R5
QXJyb3dFeHByZXNzaW9uKQogICAgICwgdG9rZW5UeXBlKHBhcmFtZXRlcnMudG9rZW5UeXBlKQot
I2VuZGlmCiB7CiAgICAgdW5zaWduZWQgaiA9IDA7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHVzZWRWYXJpYWJsZXNDb3VudDsgKytpLCArK2opIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCShyZXZpc2lvbiAxODY4MDgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtNjksNyArNjksNiBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHR5cGVkZWYg
U3ludGF4Q2hlY2tlciBGdW5jdGlvbkJvZHlCdWlsZGVyOwogICAgIGVudW0geyBOb25lRXhwciA9
IDAsCiAgICAgICAgIFJlc29sdmVFdmFsRXhwciwgUmVzb2x2ZUV4cHIsIEludGVnZXJFeHByLCBE
b3VibGVFeHByLCBTdHJpbmdFeHByLAogICAgICAgICBUaGlzRXhwciwgTnVsbEV4cHIsIEJvb2xF
eHByLCBSZWdFeHBFeHByLCBPYmplY3RMaXRlcmFsRXhwciwKQEAgLTE3OCwxMCArMTc3LDggQEAg
cHVibGljOgogICAgIENsYXNzRXhwcmVzc2lvbiBjcmVhdGVDbGFzc0V4cHIoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9u
VHlwZSwgUHJvcGVydHlMaXN0LCBQcm9wZXJ0eUxpc3QpIHsgcmV0dXJuIENsYXNzRXhwcjsgfQog
I2VuZGlmCiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRnVuY3Rpb25FeHByKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYpIHsg
cmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQotICAgIGludCBjcmVhdGVGdW5jdGlvbkJvZHkoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGJvb2ws
IGludCwgaW50LCBpbnQsIENvbnN0cnVjdG9yS2luZCkgeyByZXR1cm4gRnVuY3Rpb25Cb2R5UmVz
dWx0OyB9Ci0jaWYgRU5BQkxFKEVTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCkKKyAgICBpbnQgY3Jl
YXRlRnVuY3Rpb25Cb2R5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIGludCwgaW50LCBib29sLCBpbnQsIGludCwgaW50LCBDb25zdHJ1Y3RvcktpbmQsIHVu
c2lnbmVkLCBpbnQpIHsgcmV0dXJuIEZ1bmN0aW9uQm9keVJlc3VsdDsgfQogICAgIEV4cHJlc3Np
b25UeXBlIGNyZWF0ZUFycm93RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNv
bnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYpIHsgcmV0dXJuIEZ1bmN0aW9u
RXhwcjsgfQotI2VuZGlmIAogICAgIHZvaWQgc2V0RnVuY3Rpb25OYW1lU3RhcnQoaW50LCBpbnQp
IHsgfQogICAgIGludCBjcmVhdGVBcmd1bWVudHMoKSB7IHJldHVybiBBcmd1bWVudHNSZXN1bHQ7
IH0KICAgICBpbnQgY3JlYXRlQXJndW1lbnRzKGludCkgeyByZXR1cm4gQXJndW1lbnRzUmVzdWx0
OyB9CkBAIC0yMjAsOCArMjE3LDggQEAgcHVibGljOgogICAgIGludCBjcmVhdGVQcm9wZXJ0eUxp
c3QoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgUHJvcGVydHksIGludCkgeyByZXR1cm4gUHJvcGVy
dHlMaXN0UmVzdWx0OyB9CiAgICAgaW50IGNyZWF0ZUVsZW1lbnRMaXN0KGludCwgaW50KSB7IHJl
dHVybiBFbGVtZW50c0xpc3RSZXN1bHQ7IH0KICAgICBpbnQgY3JlYXRlRWxlbWVudExpc3QoaW50
LCBpbnQsIGludCkgeyByZXR1cm4gRWxlbWVudHNMaXN0UmVzdWx0OyB9Ci0gICAgaW50IGNyZWF0
ZUZvcm1hbFBhcmFtZXRlckxpc3QoRGVzdHJ1Y3R1cmluZ1BhdHRlcm4pIHsgcmV0dXJuIEZvcm1h
bFBhcmFtZXRlckxpc3RSZXN1bHQ7IH0KLSAgICBpbnQgY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlz
dChpbnQsIERlc3RydWN0dXJpbmdQYXR0ZXJuKSB7IHJldHVybiBGb3JtYWxQYXJhbWV0ZXJMaXN0
UmVzdWx0OyB9CisgICAgaW50IGNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QoKSB7IHJldHVybiBG
b3JtYWxQYXJhbWV0ZXJMaXN0UmVzdWx0OyB9CisgICAgdm9pZCBhcHBlbmRQYXJhbWV0ZXIoaW50
LCBEZXN0cnVjdHVyaW5nUGF0dGVybikgeyB9CiAgICAgaW50IGNyZWF0ZUNsYXVzZShpbnQsIGlu
dCkgeyByZXR1cm4gQ2xhdXNlUmVzdWx0OyB9CiAgICAgaW50IGNyZWF0ZUNsYXVzZUxpc3QoaW50
KSB7IHJldHVybiBDbGF1c2VMaXN0UmVzdWx0OyB9CiAgICAgaW50IGNyZWF0ZUNsYXVzZUxpc3Qo
aW50LCBpbnQpIHsgcmV0dXJuIENsYXVzZUxpc3RSZXN1bHQ7IH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAkocmV2aXNpb24gMTg2ODA4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTQsOCArOTQsOCBAQCBVbmxpbmtlZENvZGVCbG9ja1R5cGUqIENvZGVDYWNoZTo6Z2V0
R2xvCiAKICAgICB0eXBlZGVmIHR5cGVuYW1lIENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tU
eXBlPjo6Um9vdE5vZGUgUm9vdE5vZGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJvb3ROb2RlPiBy
b290Tm9kZSA9IHBhcnNlPFJvb3ROb2RlPigKLSAgICAgICAgJnZtLCBzb3VyY2UsIDAsIElkZW50
aWZpZXIoKSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIAotICAgICAgICBKU1BhcnNlckNvZGVU
eXBlOjpQcm9ncmFtLCBlcnJvciwgMCwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCB0aGlzVERaTW9k
ZSk7CisgICAgICAgICZ2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIGJ1aWx0aW5Nb2RlLCBzdHJp
Y3RNb2RlLCAKKyAgICAgICAgSlNQYXJzZXJDb2RlVHlwZTo6UHJvZ3JhbSwgZXJyb3IsIDAsIEZ1
bmN0aW9uUGFyc2VNb2RlOjpOb3RBRnVuY3Rpb25Nb2RlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUs
IHRoaXNURFpNb2RlKTsKICAgICBpZiAoIXJvb3ROb2RlKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIApAQCAtMTQ0LDcgKzE0NCw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBDb2Rl
Q2FjaGU6OmcKIAogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmU7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFByb2dyYW1Ob2RlPiBwcm9ncmFtID0gcGFyc2U8UHJvZ3Jh
bU5vZGU+KAotICAgICAgICAmdm0sIHNvdXJjZSwgMCwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1
aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCAKKyAgICAgICAgJnZtLCBzb3VyY2UsIElkZW50aWZpZXIo
KSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgCiAgICAgICAgIEpTUGFyc2VyU3Ry
aWN0TW9kZTo6Tm90U3RyaWN0LCBKU1BhcnNlckNvZGVUeXBlOjpQcm9ncmFtLCAKICAgICAgICAg
ZXJyb3IsICZwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsKICAgICBpZiAoIXByb2dyYW0pIHsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCShy
ZXZpc2lvbiAxODY4MDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQCBib29sIGNoZWNrU3ludGF4
KFZNJiB2bSwgY29uc3QgU291cmNlQ29kCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAg
IFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgp
LmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIHJldHVybiAhIXBhcnNlPFByb2dyYW1Ob2RlPigK
LSAgICAgICAgJnZtLCBzb3VyY2UsIDAsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9k
ZTo6Tm90QnVpbHRpbiwgCisgICAgICAgICZ2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIEpTUGFy
c2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIAogICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6
Ok5vdFN0cmljdCwgSlNQYXJzZXJDb2RlVHlwZTo6UHJvZ3JhbSwgZXJyb3IpOwogfQogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAkocmV2aXNp
b24gMTg2ODA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3NSw3ICs0NzUsNyBAQCBKU09iamVjdCogUHJvZ3JhbUV4
ZWN1dGFibGU6OmNoZWNrU3ludGF4CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFByb2dyYW1Ob2RlPiBwcm9ncmFtTm9kZSA9IHBh
cnNlPFByb2dyYW1Ob2RlPigKLSAgICAgICAgdm0sIG1fc291cmNlLCAwLCBJZGVudGlmaWVyKCks
IEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIAorICAgICAgICB2bSwgbV9zb3VyY2Us
IElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgCiAgICAgICAg
IEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBKU1BhcnNlckNvZGVUeXBlOjpQcm9ncmFt
LCBlcnJvcik7CiAgICAgaWYgKHByb2dyYW1Ob2RlKQogICAgICAgICByZXR1cm4gMDsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9jb250cm9sRmxvd1Byb2ZpbGVyL2NvbmRpdGlv
bmFsLWV4cHJlc3Npb24uanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL2NvbnRyb2xGbG93UHJvZmlsZXIvY29uZGl0aW9uYWwtZXhwcmVzc2lvbi5qcwkocmV2aXNp
b24gMTg2ODA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2NvbnRyb2xGbG93UHJv
ZmlsZXIvY29uZGl0aW9uYWwtZXhwcmVzc2lvbi5qcwkod29ya2luZyBjb3B5KQpAQCAtMjQsMTcg
KzI0LDE3IEBAIGZ1bmN0aW9uIHRlc3RDb25kaXRpb25hbEZ1bmN0aW9uQ2FsbCh4LCAKICAgICAg
ICAgOiBiYXIoKQogfQogdGVzdENvbmRpdGlvbmFsRnVuY3Rpb25DYWxsKGZhbHNlLCBmYWxzZSk7
Ci1jaGVja0Jhc2ljQmxvY2sodGVzdENvbmRpdGlvbmFsRnVuY3Rpb25DYWxsLCAieCIsIFNob3Vs
ZEhhdmVFeGVjdXRlZCk7CitjaGVja0Jhc2ljQmxvY2sodGVzdENvbmRpdGlvbmFsRnVuY3Rpb25D
YWxsLCAieCA/IiwgU2hvdWxkSGF2ZUV4ZWN1dGVkKTsKIGNoZWNrQmFzaWNCbG9jayh0ZXN0Q29u
ZGl0aW9uYWxGdW5jdGlvbkNhbGwsICI/IHkiLCBTaG91bGRIYXZlRXhlY3V0ZWQpOwogY2hlY2tC
YXNpY0Jsb2NrKHRlc3RDb25kaXRpb25hbEZ1bmN0aW9uQ2FsbCwgImJhciIsIFNob3VsZEhhdmVF
eGVjdXRlZCk7CiBjaGVja0Jhc2ljQmxvY2sodGVzdENvbmRpdGlvbmFsRnVuY3Rpb25DYWxsLCAi
OiBiYXIiLCBTaG91bGRIYXZlRXhlY3V0ZWQpOwotY2hlY2tCYXNpY0Jsb2NrKHRlc3RDb25kaXRp
b25hbEZ1bmN0aW9uQ2FsbCwgInkiLCBTaG91bGROb3RIYXZlRXhlY3V0ZWQpOworY2hlY2tCYXNp
Y0Jsb2NrKHRlc3RDb25kaXRpb25hbEZ1bmN0aW9uQ2FsbCwgInkgPyIsIFNob3VsZE5vdEhhdmVF
eGVjdXRlZCk7CiBjaGVja0Jhc2ljQmxvY2sodGVzdENvbmRpdGlvbmFsRnVuY3Rpb25DYWxsLCAi
PyBmb28iLCBTaG91bGROb3RIYXZlRXhlY3V0ZWQpOwogY2hlY2tCYXNpY0Jsb2NrKHRlc3RDb25k
aXRpb25hbEZ1bmN0aW9uQ2FsbCwgImZvbyIsIFNob3VsZE5vdEhhdmVFeGVjdXRlZCk7CiBjaGVj
a0Jhc2ljQmxvY2sodGVzdENvbmRpdGlvbmFsRnVuY3Rpb25DYWxsLCAiYmF6IiwgU2hvdWxkTm90
SGF2ZUV4ZWN1dGVkKTsKIAogdGVzdENvbmRpdGlvbmFsRnVuY3Rpb25DYWxsKHRydWUsIGZhbHNl
KTsKLWNoZWNrQmFzaWNCbG9jayh0ZXN0Q29uZGl0aW9uYWxGdW5jdGlvbkNhbGwsICJ5IiwgU2hv
dWxkSGF2ZUV4ZWN1dGVkKTsKK2NoZWNrQmFzaWNCbG9jayh0ZXN0Q29uZGl0aW9uYWxGdW5jdGlv
bkNhbGwsICJ5ID8iLCBTaG91bGRIYXZlRXhlY3V0ZWQpOwogY2hlY2tCYXNpY0Jsb2NrKHRlc3RD
b25kaXRpb25hbEZ1bmN0aW9uQ2FsbCwgIj8gZm9vIiwgU2hvdWxkSGF2ZUV4ZWN1dGVkKTsKIGNo
ZWNrQmFzaWNCbG9jayh0ZXN0Q29uZGl0aW9uYWxGdW5jdGlvbkNhbGwsICI6IGJheiIsIFNob3Vs
ZEhhdmVFeGVjdXRlZCk7CiBjaGVja0Jhc2ljQmxvY2sodGVzdENvbmRpdGlvbmFsRnVuY3Rpb25D
YWxsLCAiYmF6IiwgU2hvdWxkSGF2ZUV4ZWN1dGVkKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4Njgy
NikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUx
IEBACisyMDE1LTA3LTE0ICBTYWFtIGJhcmF0aSAgPHNhYW1iYXJhdGkxQGdtYWlsLmNvbT4KKwor
ICAgICAgICBGdW5jdGlvbiBwYXJhbWV0ZXJzIHNob3VsZCBiZSBwYXJzZWQgaW4gdGhlIHNhbWUg
cGFyc2VyIGFyZW5hIGFzIHRoZSBmdW5jdGlvbiBib2R5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDU5OTUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvcHJvZmlsZXIvYW5vbnltb3VzLWV2ZW50
LWhhbmRsZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvYW5vbnltb3Vz
LWZ1bmN0aW9uLWNhbGxlZC1mcm9tLWRpZmZlcmVudC1jb250ZXh0cy1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogZmFzdC9wcm9maWxlci9hbm9ueW1vdXMtZnVuY3Rpb24tY2FsbHMtYnVpbHQtaW4t
ZnVuY3Rpb25zLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2ZpbGVyL2Fub255bW91
cy1mdW5jdGlvbi1jYWxscy1ldmFsLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2Zp
bGVyL2Fub255bW91cy1mdW5jdGlvbnMtd2l0aC1kaXNwbGF5LW5hbWVzLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBmYXN0L3Byb2ZpbGVyL2FwcGx5LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBm
YXN0L3Byb2ZpbGVyL2J1aWx0LWluLWZ1bmN0aW9uLWNhbGxzLWFub255bW91cy1leHBlY3RlZC50
eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxlci9idWlsdC1pbi1mdW5jdGlvbi1jYWxscy11c2Vy
LWRlZmluZWQtZnVuY3Rpb24tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIv
Y2FsbC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxlci9jYWxsaW5nLXRoZS1m
dW5jdGlvbi10aGF0LXN0YXJ0ZWQtdGhlLXByb2ZpbGVyLWZyb20tYW5vdGhlci1zY29wZS1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxlci9jb21wYXJlLW11bHRpcGxlLXByb2Zp
bGVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2ZpbGVyL2NvbnN0cnVjdG9yLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2ZpbGVyL2RlYWQtdGltZS1leHBlY3RlZC50
eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxlci9kb2N1bWVudC1kb3Qtd3JpdGUtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvZXZlbnQtaGFuZGxlci1leHBlY3RlZC50eHQ6
CisgICAgICAgICogZmFzdC9wcm9maWxlci9leGVjdXRpb24tY29udGV4dC1hbmQtZXZhbC1vbi1z
YW1lLWxpbmUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvaW5saW5lLWV2
ZW50LWhhbmRsZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvbWFueS1j
YWxscy1pbi10aGUtc2FtZS1zY29wZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9m
aWxlci9tdWx0aXBsZS1hbmQtZGlmZmVyZW50LXNjb3BlZC1hbm9ueW1vdXMtZnVuY3Rpb24tY2Fs
bHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvbXVsdGlwbGUtYW5kLWRp
ZmZlcmVudC1zY29wZWQtZnVuY3Rpb24tY2FsbHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZh
c3QvcHJvZmlsZXIvbXVsdGlwbGUtYW5vbnltb3VzLWZ1bmN0aW9ucy1jYWxsZWQtZnJvbS10aGUt
c2FtZS1mdW5jdGlvbi1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxlci9tdWx0
aXBsZS1mcmFtZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvbmFtZWQt
ZnVuY3Rpb25zLXdpdGgtZGlzcGxheS1uYW1lcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFz
dC9wcm9maWxlci9uZXN0ZWQtYW5vbnltb3VzLWZ1bmN0b24tZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIGZhc3QvcHJvZmlsZXIvbmVzdGVkLXN0YXJ0LWFuZC1zdG9wLXByb2ZpbGVyLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2ZpbGVyL29uZS1leGVjdXRpb24tY29udGV4dC1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxlci9wcm9maWxlLWNhbGxzLWluLWluY2x1
ZGVkLWZpbGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvcHJvZmlsZS13
aXRoLW5vLXRpdGxlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2ZpbGVyL3Byb2Zp
bGluZy1mcm9tLWEtbmVzdGVkLWxvY2F0aW9uLWJ1dC1zdG9wLXByb2ZpbGluZy1vdXRzaWRlLXRo
ZS1uZXN0aW5nLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2ZpbGVyL3Byb2ZpbGlu
Zy1mcm9tLWEtbmVzdGVkLWxvY2F0aW9uLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3By
b2ZpbGVyL3NpbXBsZS1ldmVudC1jYWxsLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3By
b2ZpbGVyL3NpbXBsZS1uby1sZXZlbC1jaGFuZ2UtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZh
c3QvcHJvZmlsZXIvc3RhcnQtYW5kLXN0b3AtcHJvZmlsZXItbXVsdGlwbGUtdGltZXMtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvc3RhcnQtYW5kLXN0b3AtcHJvZmlsaW5n
LWluLXRoZS1zYW1lLWZ1bmN0aW9uLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2Zp
bGVyL3N0b3AtcHJvZmlsaW5nLWFmdGVyLXNldFRpbWVvdXQtZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIGZhc3QvcHJvZmlsZXIvc3RvcC10aGVuLWZ1bmN0aW9uLWNhbGwtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIGZhc3QvcHJvZmlsZXIvdHdvLWV4ZWN1dGlvbi1jb250ZXh0cy1leHBlY3RlZC50
eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxlci91c2VyLWRlZmluZWQtZnVuY3Rpb24tY2FsbHMt
YnVpbHQtaW4tZnVuY3Rpb25zLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2ZpbGVy
L3dpbmRvdy1kb3QtZXZhbC1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMvZG9tL3NjcmlwdC1z
dGFydC1lbmQtbG9jYXRpb25zLWV4cGVjdGVkLnR4dDoKKwogMjAxNS0wNy0xNCAgQ29tbWl0IFF1
ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjE4NjgwOS4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvYW5vbnlt
b3VzLWV2ZW50LWhhbmRsZXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvcHJvZmlsZXIvYW5vbnltb3VzLWV2ZW50LWhhbmRsZXItZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAxODY4MDgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2Fub255bW91cy1ldmVu
dC1oYW5kbGVyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCwxNSArNCwxNSBAQCBU
byBydW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBsb2FkIGl0IGluIHRoCiAKIFByb2ZpbGUgdGl0bGU6
IEFub255bW91cyBldmVudCBoYW5kbGVyCiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDowKQot
ICAgc3RhcnRUZXN0IGFub255bW91cy1ldmVudC1oYW5kbGVyLmh0bWwgKGxpbmUgMTE6MSkKKyAg
IHN0YXJ0VGVzdCBhbm9ueW1vdXMtZXZlbnQtaGFuZGxlci5odG1sIChsaW5lIDEwOjE5KQogICAg
ICAgZ2V0RWxlbWVudEJ5SWQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgIGNsaWNrIChubyBm
aWxlKSAobGluZSAwOjApCi0gICAgICAgICBvbmNsaWNrIGFub255bW91cy1ldmVudC1oYW5kbGVy
Lmh0bWwgKGxpbmUgMTU6NTQpCi0gICAgICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRl
c3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjI2KQorICAgICAgICAgb25jbGljayBhbm9ueW1v
dXMtZXZlbnQtaGFuZGxlci5odG1sIChsaW5lIDE1OjUxKQorICAgICAgICAgICAgaW5zZXJ0TmV3
VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyMykKICAgICAgICAg
ICAgICAgIGNyZWF0ZUVsZW1lbnQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAg
IGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICBhcHBl
bmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgZ2V0RWxlbWVudEJ5
SWQgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1y
ZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1y
ZXNvdXJjZXMuanMgKGxpbmUgMToxNykKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2Zp
bGVyL2Fub255bW91cy1mdW5jdGlvbi1jYWxsZWQtZnJvbS1kaWZmZXJlbnQtY29udGV4dHMtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvYW5vbnlt
b3VzLWZ1bmN0aW9uLWNhbGxlZC1mcm9tLWRpZmZlcmVudC1jb250ZXh0cy1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDE4NjgwOCkKKysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvYW5vbnltb3Vz
LWZ1bmN0aW9uLWNhbGxlZC1mcm9tLWRpZmZlcmVudC1jb250ZXh0cy1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTQsMjEgKzQsMjEgQEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwg
bG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiBTYW1lIGFub255bW91cyBmdW5jdGlvbiBj
YWxsZWQgZnJvbSBkaWZmZXJlbnQgY29udGV4dHMKIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAw
OjApCi0gICBzdGFydFRlc3QgYW5vbnltb3VzLWZ1bmN0aW9uLWNhbGxlZC1mcm9tLWRpZmZlcmVu
dC1jb250ZXh0cy5odG1sIChsaW5lIDExOjEpCi0gICAgICBhbm9ueW1vdXNGdW5jdGlvbiBwcm9m
aWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAyOTozNykKLSAgICAgICAgIGluc2VydE5l
d1RleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjYpCisgICBzdGFy
dFRlc3QgYW5vbnltb3VzLWZ1bmN0aW9uLWNhbGxlZC1mcm9tLWRpZmZlcmVudC1jb250ZXh0cy5o
dG1sIChsaW5lIDEwOjE5KQorICAgICAgYW5vbnltb3VzRnVuY3Rpb24gcHJvZmlsZXItdGVzdC1K
Uy1yZXNvdXJjZXMuanMgKGxpbmUgMjk6MzQpCisgICAgICAgICBpbnNlcnROZXdUZXh0IHByb2Zp
bGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjIzKQogICAgICAgICAgICAgY3JlYXRl
RWxlbWVudCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUg
KG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAo
bGluZSAwOjApCiAgICAgICAgICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMDow
KQogICAgICAgZXZhbCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgKHByb2dyYW0pIChu
byBmaWxlKSAobGluZSAxOjEpCi0gICAgICAgICAgICBhbm9ueW1vdXNGdW5jdGlvbiBwcm9maWxl
ci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAyOTozNykKLSAgICAgICAgICAgICAgIGluc2Vy
dE5ld1RleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjYpCisgICAg
ICAgICAgICBhbm9ueW1vdXNGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAo
bGluZSAyOTozNCkKKyAgICAgICAgICAgICAgIGluc2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1K
Uy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjMpCiAgICAgICAgICAgICAgICAgICBjcmVhdGVFbGVt
ZW50IChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICAgICBjcmVhdGVUZXh0Tm9k
ZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgICAgYXBwZW5kQ2hpbGQgKG5v
IGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgICAgIGdldEVsZW1lbnRCeUlkIChubyBm
aWxlKSAobGluZSAwOjApCi0gICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2Vz
LmpzIChsaW5lIDE6MjApCisgICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2Vz
LmpzIChsaW5lIDE6MTcpCiAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9hbm9u
eW1vdXMtZnVuY3Rpb24tY2FsbHMtYnVpbHQtaW4tZnVuY3Rpb25zLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2Fub255bW91cy1mdW5jdGlvbi1j
YWxscy1idWlsdC1pbi1mdW5jdGlvbnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY4MDgpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2Fub255bW91cy1mdW5jdGlvbi1jYWxscy1idWls
dC1pbi1mdW5jdGlvbnMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDEzICs0LDEz
IEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxvYWQgaXQgaW4gdGgKIAogUHJvZmlsZSB0
aXRsZTogQW5vbnltb3VzIGZ1bmN0aW9uIGNhbGxzIGJ1aWx0LWluIGZ1bmN0aW9ucwogVGhyZWFk
XzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCBhbm9ueW1vdXMtZnVuY3Rpb24t
Y2FsbHMtYnVpbHQtaW4tZnVuY3Rpb25zLmh0bWwgKGxpbmUgMTE6MSkKLSAgICAgIGFub255bW91
c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI5OjM3KQotICAg
ICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAx
NzoyNikKKyAgIHN0YXJ0VGVzdCBhbm9ueW1vdXMtZnVuY3Rpb24tY2FsbHMtYnVpbHQtaW4tZnVu
Y3Rpb25zLmh0bWwgKGxpbmUgMTA6MTkpCisgICAgICBhbm9ueW1vdXNGdW5jdGlvbiBwcm9maWxl
ci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAyOTozNCkKKyAgICAgICAgIGluc2VydE5ld1Rl
eHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjMpCiAgICAgICAgICAg
ICBjcmVhdGVFbGVtZW50IChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICBjcmVhdGVU
ZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgYXBwZW5kQ2hpbGQgKG5v
IGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIGdldEVsZW1lbnRCeUlkIChubyBmaWxlKSAo
bGluZSAwOjApCi0gICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChs
aW5lIDE6MjApCisgICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChs
aW5lIDE6MTcpCiAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9hbm9ueW1vdXMt
ZnVuY3Rpb24tY2FsbHMtZXZhbC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9wcm9maWxlci9hbm9ueW1vdXMtZnVuY3Rpb24tY2FsbHMtZXZhbC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDE4NjgwOCkKKysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvYW5vbnlt
b3VzLWZ1bmN0aW9uLWNhbGxzLWV2YWwtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00
LDE1ICs0LDE1IEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxvYWQgaXQgaW4gdGgKIAog
UHJvZmlsZSB0aXRsZTogQW5vbnltb3VzIGZ1bmN0aW9uIGNhbGxlcyBldmFsCiBUaHJlYWRfMSAo
bm8gZmlsZSkgKGxpbmUgMDowKQotICAgc3RhcnRUZXN0IGFub255bW91cy1mdW5jdGlvbi1jYWxs
cy1ldmFsLmh0bWwgKGxpbmUgMTE6MSkKLSAgICAgIHZhcmlhYmxlVGhhdFBvaW50c1RvQW5Bbm9u
eW1vdXNGdW5jdGlvbiBhbm9ueW1vdXMtZnVuY3Rpb24tY2FsbHMtZXZhbC5odG1sIChsaW5lIDE0
OjYyKQorICAgc3RhcnRUZXN0IGFub255bW91cy1mdW5jdGlvbi1jYWxscy1ldmFsLmh0bWwgKGxp
bmUgMTA6MTkpCisgICAgICB2YXJpYWJsZVRoYXRQb2ludHNUb0FuQW5vbnltb3VzRnVuY3Rpb24g
YW5vbnltb3VzLWZ1bmN0aW9uLWNhbGxzLWV2YWwuaHRtbCAobGluZSAxNDo1OSkKICAgICAgICAg
IGV2YWwgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIChwcm9ncmFtKSAobm8gZmls
ZSkgKGxpbmUgMToxKQotICAgICAgICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0
LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyNikKKyAgICAgICAgICAgICAgIGluc2VydE5ld1Rl
eHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjMpCiAgICAgICAgICAg
ICAgICAgICBjcmVhdGVFbGVtZW50IChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAg
ICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAg
ICAgYXBwZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgICAgIGdl
dEVsZW1lbnRCeUlkIChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICBlbmRUZXN0IHByb2ZpbGVy
LXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MjApCisgICAgICBlbmRUZXN0IHByb2ZpbGVy
LXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MTcpCiAKIApJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9wcm9maWxlci9hbm9ueW1vdXMtZnVuY3Rpb25zLXdpdGgtZGlzcGxheS1uYW1lcy1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9hbm9ueW1v
dXMtZnVuY3Rpb25zLXdpdGgtZGlzcGxheS1uYW1lcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4
NjgwOCkKKysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvYW5vbnltb3VzLWZ1bmN0aW9ucy13
aXRoLWRpc3BsYXktbmFtZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDEzICs0
LDEzIEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxvYWQgaXQgaW4gdGgKIAogUHJvZmls
ZSB0aXRsZTogQW5vbnltb3VzIGZ1bmN0aW9ucyB3aXRoIGRpc3BsYXkgbmFtZXMKIFRocmVhZF8x
IChubyBmaWxlKSAobGluZSAwOjApCi0gICBzdGFydFRlc3QgYW5vbnltb3VzLWZ1bmN0aW9ucy13
aXRoLWRpc3BsYXktbmFtZXMuaHRtbCAobGluZSAyMzoxKQotICAgICAgYW5vbnltb3VzRnVuY3Rp
b25HZW5lcmF0b3IgYW5vbnltb3VzLWZ1bmN0aW9ucy13aXRoLWRpc3BsYXktbmFtZXMuaHRtbCAo
bGluZSAxMToxKQotICAgICAgMCBpdGVyYXRpb25zIGZ1bmN0aW9uIGFub255bW91cy1mdW5jdGlv
bnMtd2l0aC1kaXNwbGF5LW5hbWVzLmh0bWwgKGxpbmUgMTM6NSkKLSAgICAgIDEgaXRlcmF0aW9u
cyBmdW5jdGlvbiBhbm9ueW1vdXMtZnVuY3Rpb25zLXdpdGgtZGlzcGxheS1uYW1lcy5odG1sIChs
aW5lIDEzOjUpCi0gICAgICAyIGl0ZXJhdGlvbnMgZnVuY3Rpb24gYW5vbnltb3VzLWZ1bmN0aW9u
cy13aXRoLWRpc3BsYXktbmFtZXMuaHRtbCAobGluZSAxMzo1KQotICAgICAgMjAgaXRlcmF0aW9u
cyBmdW5jdGlvbiBhbm9ueW1vdXMtZnVuY3Rpb25zLXdpdGgtZGlzcGxheS1uYW1lcy5odG1sIChs
aW5lIDEzOjUpCi0gICAgICAxMDAwIGl0ZXJhdGlvbnMgZnVuY3Rpb24gYW5vbnltb3VzLWZ1bmN0
aW9ucy13aXRoLWRpc3BsYXktbmFtZXMuaHRtbCAobGluZSAxMzo1KQotICAgICAgZW5kVGVzdCBw
cm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgc3RhcnRUZXN0IGFu
b255bW91cy1mdW5jdGlvbnMtd2l0aC1kaXNwbGF5LW5hbWVzLmh0bWwgKGxpbmUgMjI6MTkpCisg
ICAgICBhbm9ueW1vdXNGdW5jdGlvbkdlbmVyYXRvciBhbm9ueW1vdXMtZnVuY3Rpb25zLXdpdGgt
ZGlzcGxheS1uYW1lcy5odG1sIChsaW5lIDEwOjM2KQorICAgICAgMCBpdGVyYXRpb25zIGZ1bmN0
aW9uIGFub255bW91cy1mdW5jdGlvbnMtd2l0aC1kaXNwbGF5LW5hbWVzLmh0bWwgKGxpbmUgMTI6
NTkpCisgICAgICAxIGl0ZXJhdGlvbnMgZnVuY3Rpb24gYW5vbnltb3VzLWZ1bmN0aW9ucy13aXRo
LWRpc3BsYXktbmFtZXMuaHRtbCAobGluZSAxMjo1OSkKKyAgICAgIDIgaXRlcmF0aW9ucyBmdW5j
dGlvbiBhbm9ueW1vdXMtZnVuY3Rpb25zLXdpdGgtZGlzcGxheS1uYW1lcy5odG1sIChsaW5lIDEy
OjU5KQorICAgICAgMjAgaXRlcmF0aW9ucyBmdW5jdGlvbiBhbm9ueW1vdXMtZnVuY3Rpb25zLXdp
dGgtZGlzcGxheS1uYW1lcy5odG1sIChsaW5lIDEyOjU5KQorICAgICAgMTAwMCBpdGVyYXRpb25z
IGZ1bmN0aW9uIGFub255bW91cy1mdW5jdGlvbnMtd2l0aC1kaXNwbGF5LW5hbWVzLmh0bWwgKGxp
bmUgMTI6NTkpCisgICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChs
aW5lIDE6MTcpCiAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9hcHBseS1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9hcHBseS1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDE4NjgwOCkKKysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmls
ZXIvYXBwbHktZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDkgKzQsOSBAQCBUbyBy
dW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBsb2FkIGl0IGluIHRoCiAKIFByb2ZpbGUgdGl0bGU6IFVz
aW5nIHRoZSBhcHBseSgpIG1ldGhvZAogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAg
IHN0YXJ0VGVzdCBhcHBseS5odG1sIChsaW5lIDExOjEpCi0gICAgICBmYWtlT2JqZWN0IGFwcGx5
Lmh0bWwgKGxpbmUgMTg6MSkKLSAgICAgICAgIGZha2VJbnRlcmlvckZ1bmN0aW9uIGFwcGx5Lmh0
bWwgKGxpbmUgMjQ6MSkKLSAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMu
anMgKGxpbmUgMToyMCkKKyAgIHN0YXJ0VGVzdCBhcHBseS5odG1sIChsaW5lIDEwOjE5KQorICAg
ICAgZmFrZU9iamVjdCBhcHBseS5odG1sIChsaW5lIDE3OjIxKQorICAgICAgICAgZmFrZUludGVy
aW9yRnVuY3Rpb24gYXBwbHkuaHRtbCAobGluZSAyMzozMCkKKyAgICAgIGVuZFRlc3QgcHJvZmls
ZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToxNykKIAogCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L3Byb2ZpbGVyL2J1aWx0LWluLWZ1bmN0aW9uLWNhbGxzLWFub255bW91cy1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9idWlsdC1pbi1m
dW5jdGlvbi1jYWxscy1hbm9ueW1vdXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY4MDgpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2J1aWx0LWluLWZ1bmN0aW9uLWNhbGxzLWFub255
bW91cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsNyArNCw3IEBAIFRvIHJ1biB0
aGlzIHRlc3QgbWFudWFsbHksIGxvYWQgaXQgaW4gdGgKIAogUHJvZmlsZSB0aXRsZTogQnVpbHQt
aW4gZnVuY3Rpb24gY2FsbHMgYW4gYW5vbnltb3VzIGZ1bmN0aW9uCiBUaHJlYWRfMSAobm8gZmls
ZSkgKGxpbmUgMDowKQotICAgc3RhcnRUZXN0IGJ1aWx0LWluLWZ1bmN0aW9uLWNhbGxzLWFub255
bW91cy5odG1sIChsaW5lIDExOjEpCisgICBzdGFydFRlc3QgYnVpbHQtaW4tZnVuY3Rpb24tY2Fs
bHMtYW5vbnltb3VzLmh0bWwgKGxpbmUgMTA6MTkpCiAgICAgICBBcnJheSAobm8gZmlsZSkgKGxp
bmUgMDowKQogICAgICAgbWFwIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICBPYmplY3Qg
KG5vIGZpbGUpIChsaW5lIDA6MCkKQEAgLTEyLDggKzEyLDggQEAgVGhyZWFkXzEgKG5vIGZpbGUp
IChsaW5lIDA6MCkKICAgICAgICAgICAgIHRvSW50ZWdlciAobm8gZmlsZSkgKGxpbmUgMDowKQog
ICAgICAgICAgICAgICAgTnVtYmVyIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAg
ICAoYW5vbnltb3VzIGZ1bmN0aW9uKSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgICAgbXlG
dW5jdGlvbiBidWlsdC1pbi1mdW5jdGlvbi1jYWxscy1hbm9ueW1vdXMuaHRtbCAobGluZSAxNDo0
NSkKLSAgICAgICAgICAgIGFycmF5T3BlcmF0b3JGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpTLXJl
c291cmNlcy5qcyAobGluZSAyNTo0NikKLSAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1y
ZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAgICAgICAgIG15RnVuY3Rpb24gYnVpbHQtaW4tZnVu
Y3Rpb24tY2FsbHMtYW5vbnltb3VzLmh0bWwgKGxpbmUgMTQ6MzApCisgICAgICAgICAgICBhcnJh
eU9wZXJhdG9yRnVuY3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMjU6
MzEpCisgICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6
MTcpCiAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9idWlsdC1pbi1mdW5jdGlv
bi1jYWxscy11c2VyLWRlZmluZWQtZnVuY3Rpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvYnVpbHQtaW4tZnVuY3Rpb24tY2FsbHMtdXNlci1k
ZWZpbmVkLWZ1bmN0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2ODA4KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9wcm9maWxlci9idWlsdC1pbi1mdW5jdGlvbi1jYWxscy11c2VyLWRlZmluZWQt
ZnVuY3Rpb24tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDcgKzQsNyBAQCBUbyBy
dW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBsb2FkIGl0IGluIHRoCiAKIFByb2ZpbGUgdGl0bGU6IEJ1
aWx0LWluIGZ1bmN0aW9uIGNhbGxzIGEgdXNlciBkZWZpbmVkIGZ1bmN0aW9uCiBUaHJlYWRfMSAo
bm8gZmlsZSkgKGxpbmUgMDowKQotICAgc3RhcnRUZXN0IGJ1aWx0LWluLWZ1bmN0aW9uLWNhbGxz
LXVzZXItZGVmaW5lZC1mdW5jdGlvbi5odG1sIChsaW5lIDExOjEpCisgICBzdGFydFRlc3QgYnVp
bHQtaW4tZnVuY3Rpb24tY2FsbHMtdXNlci1kZWZpbmVkLWZ1bmN0aW9uLmh0bWwgKGxpbmUgMTA6
MTkpCiAgICAgICBBcnJheSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgbWFwIChubyBmaWxl
KSAobGluZSAwOjApCiAgICAgICAgICBPYmplY3QgKG5vIGZpbGUpIChsaW5lIDA6MCkKQEAgLTEy
LDcgKzEyLDcgQEAgVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIHRv
SW50ZWdlciAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgTnVtYmVyIChubyBm
aWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICAoYW5vbnltb3VzIGZ1bmN0aW9uKSAobm8g
ZmlsZSkgKGxpbmUgMDowKQotICAgICAgICAgYXJyYXlPcGVyYXRvckZ1bmN0aW9uIHByb2ZpbGVy
LXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI1OjQ2KQotICAgICAgZW5kVGVzdCBwcm9maWxl
ci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgICAgICAgYXJyYXlPcGVyYXRv
ckZ1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI1OjMxKQorICAg
ICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiAK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvY2FsbC1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9jYWxsLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMTg2ODA4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9jYWxsLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCw5ICs0LDkgQEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51
YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiBVc2luZyB0aGUgY2FsbCgpIG1l
dGhvZAogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCBjYWxsLmh0
bWwgKGxpbmUgMTE6MSkKLSAgICAgIGZha2VPYmplY3QgY2FsbC5odG1sIChsaW5lIDIwOjEpCi0g
ICAgICAgICBmYWtlSW50ZXJpb3JGdW5jdGlvbiBjYWxsLmh0bWwgKGxpbmUgMjY6MSkKLSAgICAg
IGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAgIHN0
YXJ0VGVzdCBjYWxsLmh0bWwgKGxpbmUgMTA6MTkpCisgICAgICBmYWtlT2JqZWN0IGNhbGwuaHRt
bCAobGluZSAxOToyMSkKKyAgICAgICAgIGZha2VJbnRlcmlvckZ1bmN0aW9uIGNhbGwuaHRtbCAo
bGluZSAyNTozMCkKKyAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMg
KGxpbmUgMToxNykKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2NhbGxpbmct
dGhlLWZ1bmN0aW9uLXRoYXQtc3RhcnRlZC10aGUtcHJvZmlsZXItZnJvbS1hbm90aGVyLXNjb3Bl
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2Nh
bGxpbmctdGhlLWZ1bmN0aW9uLXRoYXQtc3RhcnRlZC10aGUtcHJvZmlsZXItZnJvbS1hbm90aGVy
LXNjb3BlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2ODA4KQorKysgTGF5b3V0VGVzdHMvZmFz
dC9wcm9maWxlci9jYWxsaW5nLXRoZS1mdW5jdGlvbi10aGF0LXN0YXJ0ZWQtdGhlLXByb2ZpbGVy
LWZyb20tYW5vdGhlci1zY29wZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsOSAr
NCw5IEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxvYWQgaXQgaW4gdGgKIAogUHJvZmls
ZSB0aXRsZTogQ2FsbGluZyB0aGUgc2FtZSBmdW5jdGlvbiB3aGVyZSB0aGUgcHJvZmlsZSBzdGFy
dGVkIGZyb20gYW5vdGhlciBmdW5jdGlvbgogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkK
LSAgIGluZGlyZWN0aW9uIGNhbGxpbmctdGhlLWZ1bmN0aW9uLXRoYXQtc3RhcnRlZC10aGUtcHJv
ZmlsZXItZnJvbS1hbm90aGVyLXNjb3BlLmh0bWwgKGxpbmUgMTg6MSkKLSAgICAgIGZ1bmN0aW9u
V2ljaFN0YXJ0c0FuZFN0b3BzVGhlUHJvZmlsZXIgY2FsbGluZy10aGUtZnVuY3Rpb24tdGhhdC1z
dGFydGVkLXRoZS1wcm9maWxlci1mcm9tLWFub3RoZXItc2NvcGUuaHRtbCAobGluZSAyNDoxKQot
ICAgZnVuY3Rpb25XaWNoU3RhcnRzQW5kU3RvcHNUaGVQcm9maWxlciBjYWxsaW5nLXRoZS1mdW5j
dGlvbi10aGF0LXN0YXJ0ZWQtdGhlLXByb2ZpbGVyLWZyb20tYW5vdGhlci1zY29wZS5odG1sIChs
aW5lIDI0OjEpCi0gICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5l
IDE6MjApCisgICBpbmRpcmVjdGlvbiBjYWxsaW5nLXRoZS1mdW5jdGlvbi10aGF0LXN0YXJ0ZWQt
dGhlLXByb2ZpbGVyLWZyb20tYW5vdGhlci1zY29wZS5odG1sIChsaW5lIDE3OjIxKQorICAgICAg
ZnVuY3Rpb25XaWNoU3RhcnRzQW5kU3RvcHNUaGVQcm9maWxlciBjYWxsaW5nLXRoZS1mdW5jdGlv
bi10aGF0LXN0YXJ0ZWQtdGhlLXByb2ZpbGVyLWZyb20tYW5vdGhlci1zY29wZS5odG1sIChsaW5l
IDIzOjQ3KQorICAgZnVuY3Rpb25XaWNoU3RhcnRzQW5kU3RvcHNUaGVQcm9maWxlciBjYWxsaW5n
LXRoZS1mdW5jdGlvbi10aGF0LXN0YXJ0ZWQtdGhlLXByb2ZpbGVyLWZyb20tYW5vdGhlci1zY29w
ZS5odG1sIChsaW5lIDIzOjQ3KQorICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNl
cy5qcyAobGluZSAxOjE3KQogCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvY29t
cGFyZS1tdWx0aXBsZS1wcm9maWxlcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9wcm9maWxlci9jb21wYXJlLW11bHRpcGxlLXByb2ZpbGVzLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMTg2ODA4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9jb21wYXJl
LW11bHRpcGxlLXByb2ZpbGVzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCwxNCAr
NCwxNCBAQCBUbyBydW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBsb2FkIGl0IGluIHRoCiAKIFByb2Zp
bGUgdGl0bGU6IFRlc3QKIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBzdGFydFRl
c3QgY29tcGFyZS1tdWx0aXBsZS1wcm9maWxlcy5odG1sIChsaW5lIDIzOjEpCi0gICAgICB0ZXN0
IGNvbXBhcmUtbXVsdGlwbGUtcHJvZmlsZXMuaHRtbCAobGluZSAxMToyMCkKLSAgICAgICAgIHRl
c3QyIGNvbXBhcmUtbXVsdGlwbGUtcHJvZmlsZXMuaHRtbCAobGluZSAxNzoyMSkKKyAgIHN0YXJ0
VGVzdCBjb21wYXJlLW11bHRpcGxlLXByb2ZpbGVzLmh0bWwgKGxpbmUgMjI6MTkpCisgICAgICB0
ZXN0IGNvbXBhcmUtbXVsdGlwbGUtcHJvZmlsZXMuaHRtbCAobGluZSAxMToxNCkKKyAgICAgICAg
IHRlc3QyIGNvbXBhcmUtbXVsdGlwbGUtcHJvZmlsZXMuaHRtbCAobGluZSAxNzoxNSkKIAogUHJv
ZmlsZSB0aXRsZTogVGVzdAogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0
VGVzdCBjb21wYXJlLW11bHRpcGxlLXByb2ZpbGVzLmh0bWwgKGxpbmUgMjM6MSkKLSAgICAgIHRl
c3QgY29tcGFyZS1tdWx0aXBsZS1wcm9maWxlcy5odG1sIChsaW5lIDExOjIwKQotICAgICAgICAg
dGVzdDIgY29tcGFyZS1tdWx0aXBsZS1wcm9maWxlcy5odG1sIChsaW5lIDE3OjIxKQorICAgc3Rh
cnRUZXN0IGNvbXBhcmUtbXVsdGlwbGUtcHJvZmlsZXMuaHRtbCAobGluZSAyMjoxOSkKKyAgICAg
IHRlc3QgY29tcGFyZS1tdWx0aXBsZS1wcm9maWxlcy5odG1sIChsaW5lIDExOjE0KQorICAgICAg
ICAgdGVzdDIgY29tcGFyZS1tdWx0aXBsZS1wcm9maWxlcy5odG1sIChsaW5lIDE3OjE1KQogCiAK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvY29uc3RydWN0b3ItZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAxODY4MDgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVy
L2NvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCw5ICs0LDkgQEAg
VG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxl
OiBVc2luZyBhIGNvbnN0cnVjdG9yLgogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAg
IHN0YXJ0VGVzdCBjb25zdHJ1Y3Rvci5odG1sIChsaW5lIDExOjEpCi0gICAgICBmYWtlT2JqZWN0
IGNvbnN0cnVjdG9yLmh0bWwgKGxpbmUgMjA6MSkKKyAgIHN0YXJ0VGVzdCBjb25zdHJ1Y3Rvci5o
dG1sIChsaW5lIDEwOjE5KQorICAgICAgZmFrZU9iamVjdCBjb25zdHJ1Y3Rvci5odG1sIChsaW5l
IDE5OjIxKQogICAgICAgICAgQXJyYXkgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAgIGVuZFRl
c3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAgICAgIGVuZFRl
c3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToxNykKIAogCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2RlYWQtdGltZS1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9kZWFkLXRpbWUtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAxODY4MDgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2RlYWQtdGltZS1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsMTAgKzQsMTAgQEAgVG8gcnVuIHRoaXMg
dGVzdCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiBEZWFkIHRpbWUg
aW4gcHJvZmlsZS4KIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBvbmxvYWQgZGVh
ZC10aW1lLmh0bWwgKGxpbmUgMjE6NTIpCi0gICAgICBzdGFydFRlc3QgZGVhZC10aW1lLmh0bWwg
KGxpbmUgMTM6MSkKKyAgIG9ubG9hZCBkZWFkLXRpbWUuaHRtbCAobGluZSAyMTo0NCkKKyAgICAg
IHN0YXJ0VGVzdCBkZWFkLXRpbWUuaHRtbCAobGluZSAxMjoxOSkKICAgICAgICAgIHNldFRpbWVv
dXQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgIChwcm9ncmFtKSBkZWFkLXRpbWUuaHRtbCAobGlu
ZSAxOjEpCi0gICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5l
IDE6MjApCisgICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5l
IDE6MTcpCiAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9kb2N1bWVudC1kb3Qt
d3JpdGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmls
ZXIvZG9jdW1lbnQtZG90LXdyaXRlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2ODA4KQorKysg
TGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9kb2N1bWVudC1kb3Qtd3JpdGUtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsOCBAQAogCiBQcm9maWxlIHRpdGxlOiBDYWxsIERv
Y3VtZW50LndyaXRlKCkKIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBzdGFydFRl
c3QgZG9jdW1lbnQtZG90LXdyaXRlLmh0bWwgKGxpbmUgMTE6MSkKKyAgIHN0YXJ0VGVzdCBkb2N1
bWVudC1kb3Qtd3JpdGUuaHRtbCAobGluZSAxMDoxOSkKICAgICAgIHdyaXRlIChubyBmaWxlKSAo
bGluZSAwOjApCi0gICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChs
aW5lIDE6MjApCisgICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChs
aW5lIDE6MTcpCiAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9ldmVudC1oYW5k
bGVyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVy
L2V2ZW50LWhhbmRsZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY4MDgpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L3Byb2ZpbGVyL2V2ZW50LWhhbmRsZXItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC00LDE1ICs0LDE1IEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxvYWQgaXQg
aW4gdGgKIAogUHJvZmlsZSB0aXRsZTogRXZlbnQgaGFuZGxlcgogVGhyZWFkXzEgKG5vIGZpbGUp
IChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCBldmVudC1oYW5kbGVyLmh0bWwgKGxpbmUgMTE6MSkK
KyAgIHN0YXJ0VGVzdCBldmVudC1oYW5kbGVyLmh0bWwgKGxpbmUgMTA6MTkpCiAgICAgICBnZXRF
bGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgYWRkRXZlbnRMaXN0ZW5lciAo
bm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgY2xpY2sgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAg
ICAgICAgIGluc2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUg
MTc6MjYpCisgICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2Vz
LmpzIChsaW5lIDE3OjIzKQogICAgICAgICAgICAgY3JlYXRlRWxlbWVudCAobm8gZmlsZSkgKGxp
bmUgMDowKQogICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkK
ICAgICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAg
ICBnZXRFbGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgZW5kVGVzdCBwcm9m
aWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgICAgZW5kVGVzdCBwcm9m
aWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiAKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvcHJvZmlsZXIvZXhlY3V0aW9uLWNvbnRleHQtYW5kLWV2YWwtb24tc2FtZS1saW5l
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2V4
ZWN1dGlvbi1jb250ZXh0LWFuZC1ldmFsLW9uLXNhbWUtbGluZS1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDE4NjgwOCkKKysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvZXhlY3V0aW9uLWNvbnRl
eHQtYW5kLWV2YWwtb24tc2FtZS1saW5lLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
NCwxMyArNCwxMyBAQCBUbyBydW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBsb2FkIGl0IGluIHRoCiAK
IFByb2ZpbGUgdGl0bGU6IFR3byBFeGVjdXRpb24gQ29udGV4dHMgb24gdGhlIHNhbWUgbGluZQog
VGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCBleGVjdXRpb24tY29u
dGV4dC1hbmQtZXZhbC1vbi1zYW1lLWxpbmUuaHRtbCAobGluZSAxMToxKQotICAgICAgZXZhbEZ1
bmN0aW9uIChubyBmaWxlKSAobGluZSAxOjI1KQotICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9m
aWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyNikKKyAgIHN0YXJ0VGVzdCBleGVj
dXRpb24tY29udGV4dC1hbmQtZXZhbC1vbi1zYW1lLWxpbmUuaHRtbCAobGluZSAxMDoxOSkKKyAg
ICAgIGV2YWxGdW5jdGlvbiAobm8gZmlsZSkgKGxpbmUgMToyMikKKyAgICAgICAgIGluc2VydE5l
d1RleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjMpCiAgICAgICAg
ICAgICBjcmVhdGVFbGVtZW50IChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICBjcmVh
dGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgYXBwZW5kQ2hpbGQg
KG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIGdldEVsZW1lbnRCeUlkIChubyBmaWxl
KSAobGluZSAwOjApCi0gICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpz
IChsaW5lIDE6MjApCisgICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpz
IChsaW5lIDE6MTcpCiAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9pbmxpbmUt
ZXZlbnQtaGFuZGxlci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9wcm9maWxlci9pbmxpbmUtZXZlbnQtaGFuZGxlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4
NjgwOCkKKysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvaW5saW5lLWV2ZW50LWhhbmRsZXIt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDE3ICs0LDE3IEBAIFRvIHJ1biB0aGlz
IHRlc3QgbWFudWFsbHksIGxvYWQgaXQgaW4gdGgKIAogUHJvZmlsZSB0aXRsZTogSW5saW5lIGV2
ZW50IGhhbmRsZXIKIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBzdGFydFRlc3Qg
aW5saW5lLWV2ZW50LWhhbmRsZXIuaHRtbCAobGluZSAxMToxKQorICAgc3RhcnRUZXN0IGlubGlu
ZS1ldmVudC1oYW5kbGVyLmh0bWwgKGxpbmUgMTA6MTkpCiAgICAgICBnZXRFbGVtZW50QnlJZCAo
bm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgY2xpY2sgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAg
ICAgICAgIG9uY2xpY2sgaW5saW5lLWV2ZW50LWhhbmRsZXIuaHRtbCAobGluZSAzMToxMzUpCi0g
ICAgICAgICAgICBldmVudExpc3RlbmVyIGlubGluZS1ldmVudC1oYW5kbGVyLmh0bWwgKGxpbmUg
MTc6MjYpCi0gICAgICAgICAgICAgICBhbm9ueW1vdXNGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpT
LXJlc291cmNlcy5qcyAobGluZSAyOTozNykKLSAgICAgICAgICAgICAgICAgIGluc2VydE5ld1Rl
eHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjYpCisgICAgICAgICBv
bmNsaWNrIGlubGluZS1ldmVudC1oYW5kbGVyLmh0bWwgKGxpbmUgMzE6MTI3KQorICAgICAgICAg
ICAgZXZlbnRMaXN0ZW5lciBpbmxpbmUtZXZlbnQtaGFuZGxlci5odG1sIChsaW5lIDE3OjIzKQor
ICAgICAgICAgICAgICAgYW5vbnltb3VzRnVuY3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJj
ZXMuanMgKGxpbmUgMjk6MzQpCisgICAgICAgICAgICAgICAgICBpbnNlcnROZXdUZXh0IHByb2Zp
bGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjIzKQogICAgICAgICAgICAgICAgICAg
ICAgY3JlYXRlRWxlbWVudCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgICAg
ICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgICAg
ICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICAgICAg
ICBnZXRFbGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgICAgICAgICAgZW5k
VGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgICAgICAg
ICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQog
CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvbWFueS1jYWxscy1pbi10aGUtc2Ft
ZS1zY29wZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9m
aWxlci9tYW55LWNhbGxzLWluLXRoZS1zYW1lLXNjb3BlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MTg2ODA4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9tYW55LWNhbGxzLWluLXRoZS1z
YW1lLXNjb3BlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCwzMyArNCwzMyBAQCBU
byBydW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBsb2FkIGl0IGluIHRoCiAKIFByb2ZpbGUgdGl0bGU6
IE1hbnkgQ2FsbHMgSW4gVGhlIFNhbWUgU2NvcGUKIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAw
OjApCi0gICBzdGFydFRlc3QgbWFueS1jYWxscy1pbi10aGUtc2FtZS1zY29wZS5odG1sIChsaW5l
IDExOjEpCi0gICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpz
IChsaW5lIDE3OjI2KQorICAgc3RhcnRUZXN0IG1hbnktY2FsbHMtaW4tdGhlLXNhbWUtc2NvcGUu
aHRtbCAobGluZSAxMDoxOSkKKyAgICAgIGluc2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1KUy1y
ZXNvdXJjZXMuanMgKGxpbmUgMTc6MjMpCiAgICAgICAgICBjcmVhdGVFbGVtZW50IChubyBmaWxl
KSAobGluZSAwOjApCiAgICAgICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDow
KQogICAgICAgICAgYXBwZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgIGdl
dEVsZW1lbnRCeUlkIChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICBpbnNlcnRHaXZlblRleHQg
cHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgOTozMikKKyAgICAgIGluc2VydEdp
dmVuVGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA5OjI1KQogICAgICAg
ICAgY3JlYXRlRWxlbWVudCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgY3JlYXRlVGV4
dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxl
KSAobGluZSAwOjApCiAgICAgICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMDow
KQotICAgICAgYXJyYXlPcGVyYXRvckZ1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2Vz
LmpzIChsaW5lIDI1OjQ2KQotICAgICAgaW50ZXJtZWRpYXJ5RnVuY3Rpb24gcHJvZmlsZXItdGVz
dC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMzM6MSkKLSAgICAgICAgIGFub255bW91c0Z1bmN0aW9u
IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI5OjM3KQotICAgICAgICAgICAg
aW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyNikK
KyAgICAgIGFycmF5T3BlcmF0b3JGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5q
cyAobGluZSAyNTozMSkKKyAgICAgIGludGVybWVkaWFyeUZ1bmN0aW9uIHByb2ZpbGVyLXRlc3Qt
SlMtcmVzb3VyY2VzLmpzIChsaW5lIDMyOjMwKQorICAgICAgICAgYW5vbnltb3VzRnVuY3Rpb24g
cHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMjk6MzQpCisgICAgICAgICAgICBp
bnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjIzKQog
ICAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAg
ICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAg
ICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICBnZXRF
bGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgYW5vbnltb3VzRnVuY3Rpb24g
cHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMjk6MzcpCi0gICAgICAgICBpbnNl
cnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjI2KQorICAg
ICAgYW5vbnltb3VzRnVuY3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUg
Mjk6MzQpCisgICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2Vz
LmpzIChsaW5lIDE3OjIzKQogICAgICAgICAgICAgY3JlYXRlRWxlbWVudCAobm8gZmlsZSkgKGxp
bmUgMDowKQogICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkK
ICAgICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAg
ICBnZXRFbGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgZW5kIG1hbnktY2Fs
bHMtaW4tdGhlLXNhbWUtc2NvcGUuaHRtbCAobGluZSAyNzoxKQotICAgICAgZW5kVCBtYW55LWNh
bGxzLWluLXRoZS1zYW1lLXNjb3BlLmh0bWwgKGxpbmUgMzI6MSkKLSAgICAgIGVuZFRlc3QgcHJv
ZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAgICAgIGVuZCBtYW55LWNh
bGxzLWluLXRoZS1zYW1lLXNjb3BlLmh0bWwgKGxpbmUgMjY6MTMpCisgICAgICBlbmRUIG1hbnkt
Y2FsbHMtaW4tdGhlLXNhbWUtc2NvcGUuaHRtbCAobGluZSAzMToxNCkKKyAgICAgIGVuZFRlc3Qg
cHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToxNykKIAogCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L3Byb2ZpbGVyL211bHRpcGxlLWFuZC1kaWZmZXJlbnQtc2NvcGVkLWFub255
bW91cy1mdW5jdGlvbi1jYWxscy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9wcm9maWxlci9tdWx0aXBsZS1hbmQtZGlmZmVyZW50LXNjb3BlZC1hbm9ueW1vdXMt
ZnVuY3Rpb24tY2FsbHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY4MDgpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L3Byb2ZpbGVyL211bHRpcGxlLWFuZC1kaWZmZXJlbnQtc2NvcGVkLWFub255bW91
cy1mdW5jdGlvbi1jYWxscy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsMjAgKzQs
MjAgQEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxl
IHRpdGxlOiBNdWx0aXBsZSBhbmQgZGlmZmVyZW50IHNjb3BlZCBjYWxscyB0byB0aGUgc2FtZSBh
bm9ueW1vdXMgZnVuY3Rpb24KIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBzdGFy
dFRlc3QgbXVsdGlwbGUtYW5kLWRpZmZlcmVudC1zY29wZWQtYW5vbnltb3VzLWZ1bmN0aW9uLWNh
bGxzLmh0bWwgKGxpbmUgMTE6MSkKLSAgICAgIGFub255bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRl
c3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI5OjM3KQotICAgICAgICAgaW5zZXJ0TmV3VGV4dCBw
cm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyNikKKyAgIHN0YXJ0VGVzdCBt
dWx0aXBsZS1hbmQtZGlmZmVyZW50LXNjb3BlZC1hbm9ueW1vdXMtZnVuY3Rpb24tY2FsbHMuaHRt
bCAobGluZSAxMDoxOSkKKyAgICAgIGFub255bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMt
cmVzb3VyY2VzLmpzIChsaW5lIDI5OjM0KQorICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxl
ci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyMykKICAgICAgICAgICAgIGNyZWF0ZUVs
ZW1lbnQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChu
byBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxp
bmUgMDowKQogICAgICAgICAgICAgZ2V0RWxlbWVudEJ5SWQgKG5vIGZpbGUpIChsaW5lIDA6MCkK
LSAgICAgIGludGVybWVkaWFyeUZ1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpz
IChsaW5lIDMzOjEpCi0gICAgICAgICBhbm9ueW1vdXNGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpT
LXJlc291cmNlcy5qcyAobGluZSAyOTozNykKLSAgICAgICAgICAgIGluc2VydE5ld1RleHQgcHJv
ZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjYpCisgICAgICBpbnRlcm1lZGlh
cnlGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAzMjozMCkKKyAg
ICAgICAgIGFub255bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChs
aW5lIDI5OjM0KQorICAgICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJl
c291cmNlcy5qcyAobGluZSAxNzoyMykKICAgICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQgKG5v
IGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxl
KSAobGluZSAwOjApCiAgICAgICAgICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUg
MDowKQogICAgICAgICAgICAgICAgZ2V0RWxlbWVudEJ5SWQgKG5vIGZpbGUpIChsaW5lIDA6MCkK
LSAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToyMCkK
KyAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToxNykK
IAogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL211bHRpcGxlLWFuZC1kaWZmZXJl
bnQtc2NvcGVkLWZ1bmN0aW9uLWNhbGxzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L3Byb2ZpbGVyL211bHRpcGxlLWFuZC1kaWZmZXJlbnQtc2NvcGVkLWZ1bmN0
aW9uLWNhbGxzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2ODA4KQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9wcm9maWxlci9tdWx0aXBsZS1hbmQtZGlmZmVyZW50LXNjb3BlZC1mdW5jdGlvbi1jYWxs
cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsMTkgKzQsMTkgQEAgVG8gcnVuIHRo
aXMgdGVzdCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiBNdWx0aXBs
ZSBhbmQgZGlmZmVyZW50IHNjb3BlZCBjYWxscyB0byB0aGUgc2FtZSBmdW5jdGlvbgogVGhyZWFk
XzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCBtdWx0aXBsZS1hbmQtZGlmZmVy
ZW50LXNjb3BlZC1mdW5jdGlvbi1jYWxscy5odG1sIChsaW5lIDExOjEpCi0gICAgICBpbnNlcnRO
ZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjI2KQorICAgc3Rh
cnRUZXN0IG11bHRpcGxlLWFuZC1kaWZmZXJlbnQtc2NvcGVkLWZ1bmN0aW9uLWNhbGxzLmh0bWwg
KGxpbmUgMTA6MTkpCisgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3Vy
Y2VzLmpzIChsaW5lIDE3OjIzKQogICAgICAgICAgY3JlYXRlRWxlbWVudCAobm8gZmlsZSkgKGxp
bmUgMDowKQogICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAg
ICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICBnZXRFbGVt
ZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgaW50ZXJtZWRpYXJ5RnVuY3Rpb24g
cHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMzM6MSkKLSAgICAgICAgIGFub255
bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI5OjM3KQot
ICAgICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAo
bGluZSAxNzoyNikKKyAgICAgIGludGVybWVkaWFyeUZ1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMt
cmVzb3VyY2VzLmpzIChsaW5lIDMyOjMwKQorICAgICAgICAgYW5vbnltb3VzRnVuY3Rpb24gcHJv
ZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMjk6MzQpCisgICAgICAgICAgICBpbnNl
cnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjIzKQogICAg
ICAgICAgICAgICAgY3JlYXRlRWxlbWVudCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAg
ICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAg
IGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICBnZXRFbGVt
ZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0
LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0
LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
cHJvZmlsZXIvbXVsdGlwbGUtYW5vbnltb3VzLWZ1bmN0aW9ucy1jYWxsZWQtZnJvbS10aGUtc2Ft
ZS1mdW5jdGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9w
cm9maWxlci9tdWx0aXBsZS1hbm9ueW1vdXMtZnVuY3Rpb25zLWNhbGxlZC1mcm9tLXRoZS1zYW1l
LWZ1bmN0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2ODA4KQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9wcm9maWxlci9tdWx0aXBsZS1hbm9ueW1vdXMtZnVuY3Rpb25zLWNhbGxlZC1mcm9tLXRo
ZS1zYW1lLWZ1bmN0aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCwxOSArNCwx
OSBAQCBUbyBydW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBsb2FkIGl0IGluIHRoCiAKIFByb2ZpbGUg
dGl0bGU6IE11bHRpcGxlIGNhbGxzIHRvIGRpZmZlcmVudCBhbm9ueW1vdXMgZnVuY3Rpb25zCiBU
aHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgc3RhcnRUZXN0IG11bHRpcGxlLWFub255
bW91cy1mdW5jdGlvbnMtY2FsbGVkLWZyb20tdGhlLXNhbWUtZnVuY3Rpb24uaHRtbCAobGluZSAx
MToxKQotICAgICAgYW5vbnltb3VzRnVuY3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMu
anMgKGxpbmUgMjk6MzcpCi0gICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMt
cmVzb3VyY2VzLmpzIChsaW5lIDE3OjI2KQorICAgc3RhcnRUZXN0IG11bHRpcGxlLWFub255bW91
cy1mdW5jdGlvbnMtY2FsbGVkLWZyb20tdGhlLXNhbWUtZnVuY3Rpb24uaHRtbCAobGluZSAxMDox
OSkKKyAgICAgIGFub255bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpz
IChsaW5lIDI5OjM0KQorICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJl
c291cmNlcy5qcyAobGluZSAxNzoyMykKICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQgKG5vIGZp
bGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGlu
ZSAwOjApCiAgICAgICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAg
ICAgICAgICAgZ2V0RWxlbWVudEJ5SWQgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAgIGFub3Ro
ZXJBbm9ueW1vdXNGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAz
MDo0NCkKLSAgICAgICAgIGluc2VydEdpdmVuVGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNl
cy5qcyAobGluZSA5OjMyKQorICAgICAgYW5vdGhlckFub255bW91c0Z1bmN0aW9uIHByb2ZpbGVy
LXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDMwOjQxKQorICAgICAgICAgaW5zZXJ0R2l2ZW5U
ZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDk6MjUpCiAgICAgICAgICAg
ICBjcmVhdGVFbGVtZW50IChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICBjcmVhdGVU
ZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgYXBwZW5kQ2hpbGQgKG5v
IGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIGdldEVsZW1lbnRCeUlkIChubyBmaWxlKSAo
bGluZSAwOjApCi0gICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChs
aW5lIDE6MjApCisgICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChs
aW5lIDE6MTcpCiAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9tdWx0aXBsZS1m
cmFtZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmls
ZXIvbXVsdGlwbGUtZnJhbWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2ODA4KQorKysgTGF5
b3V0VGVzdHMvZmFzdC9wcm9maWxlci9tdWx0aXBsZS1mcmFtZXMtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC00LDE1ICs0LDE1IEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxv
YWQgaXQgaW4gdGgKIAogUHJvZmlsZSB0aXRsZTogT3RoZXIgd2luZG93IGV4ZWN1dGluZyBKYXZh
U2NyaXB0CiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgc3RhcnRUZXN0IG11bHRp
cGxlLWZyYW1lcy5odG1sIChsaW5lIDExOjEpCisgICBzdGFydFRlc3QgbXVsdGlwbGUtZnJhbWVz
Lmh0bWwgKGxpbmUgMTA6MTkpCiAgICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUg
MDowKQotICAgICAgZnVuY3Rpb25Jbk90aGVyRnJhbWUgb3RoZXItZnJhbWUuaHRtbCAobGluZSA0
OjMzKQotICAgICAgICAgZnVuY3Rpb25JblBhcmVudEZyYW1lIG11bHRpcGxlLWZyYW1lcy5odG1s
IChsaW5lIDIxOjM0KQotICAgICAgaW5zZXJ0R2l2ZW5UZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVz
b3VyY2VzLmpzIChsaW5lIDk6MzIpCisgICAgICBmdW5jdGlvbkluT3RoZXJGcmFtZSBvdGhlci1m
cmFtZS5odG1sIChsaW5lIDQ6MzApCisgICAgICAgICBmdW5jdGlvbkluUGFyZW50RnJhbWUgbXVs
dGlwbGUtZnJhbWVzLmh0bWwgKGxpbmUgMjE6MzEpCisgICAgICBpbnNlcnRHaXZlblRleHQgcHJv
ZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgOToyNSkKICAgICAgICAgIGNyZWF0ZUVs
ZW1lbnQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBm
aWxlKSAobGluZSAwOjApCiAgICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDow
KQogICAgICAgICAgZ2V0RWxlbWVudEJ5SWQgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAgIGVu
ZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAgICAgIGVu
ZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToxNykKIAogCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL25hbWVkLWZ1bmN0aW9ucy13aXRoLWRpc3BsYXkt
bmFtZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmls
ZXIvbmFtZWQtZnVuY3Rpb25zLXdpdGgtZGlzcGxheS1uYW1lcy1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDE4NjgwOCkKKysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvbmFtZWQtZnVuY3Rpb25z
LXdpdGgtZGlzcGxheS1uYW1lcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsMTMg
KzQsMTMgQEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9m
aWxlIHRpdGxlOiBOYW1lZCBmdW5jdGlvbnMgd2l0aCBkaXNwbGF5IG5hbWVzCiBUaHJlYWRfMSAo
bm8gZmlsZSkgKGxpbmUgMDowKQotICAgc3RhcnRUZXN0IG5hbWVkLWZ1bmN0aW9ucy13aXRoLWRp
c3BsYXktbmFtZXMuaHRtbCAobGluZSA1NDoxKQotICAgICAgMCBpdGVyYXRpb25zIGZ1bmN0aW9u
IG5hbWVkLWZ1bmN0aW9ucy13aXRoLWRpc3BsYXktbmFtZXMuaHRtbCAobGluZSAxMToxKQotICAg
ICAgMSBpdGVyYXRpb24gZnVuY3Rpb24gbmFtZWQtZnVuY3Rpb25zLXdpdGgtZGlzcGxheS1uYW1l
cy5odG1sIChsaW5lIDE4OjEpCi0gICAgICAyIGl0ZXJhdGlvbnMgZnVuY3Rpb24gbmFtZWQtZnVu
Y3Rpb25zLXdpdGgtZGlzcGxheS1uYW1lcy5odG1sIChsaW5lIDI1OjEpCi0gICAgICAyMCBpdGVy
YXRpb25zIGZ1bmN0aW9uIG5hbWVkLWZ1bmN0aW9ucy13aXRoLWRpc3BsYXktbmFtZXMuaHRtbCAo
bGluZSAzMjoxKQotICAgICAgMTAwMCBpdGVyYXRpb25zIGZ1bmN0aW9uIG5hbWVkLWZ1bmN0aW9u
cy13aXRoLWRpc3BsYXktbmFtZXMuaHRtbCAobGluZSAzOToxKQotICAgICAgYm9ndXNEaXNwbGF5
TmFtZUZ1bmN0aW9uIG5hbWVkLWZ1bmN0aW9ucy13aXRoLWRpc3BsYXktbmFtZXMuaHRtbCAobGlu
ZSA0NzoxKQotICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGlu
ZSAxOjIwKQorICAgc3RhcnRUZXN0IG5hbWVkLWZ1bmN0aW9ucy13aXRoLWRpc3BsYXktbmFtZXMu
aHRtbCAobGluZSA1MzoxOSkKKyAgICAgIDAgaXRlcmF0aW9ucyBmdW5jdGlvbiBuYW1lZC1mdW5j
dGlvbnMtd2l0aC1kaXNwbGF5LW5hbWVzLmh0bWwgKGxpbmUgMTA6MTkpCisgICAgICAxIGl0ZXJh
dGlvbiBmdW5jdGlvbiBuYW1lZC1mdW5jdGlvbnMtd2l0aC1kaXNwbGF5LW5hbWVzLmh0bWwgKGxp
bmUgMTc6MTkpCisgICAgICAyIGl0ZXJhdGlvbnMgZnVuY3Rpb24gbmFtZWQtZnVuY3Rpb25zLXdp
dGgtZGlzcGxheS1uYW1lcy5odG1sIChsaW5lIDI0OjE5KQorICAgICAgMjAgaXRlcmF0aW9ucyBm
dW5jdGlvbiBuYW1lZC1mdW5jdGlvbnMtd2l0aC1kaXNwbGF5LW5hbWVzLmh0bWwgKGxpbmUgMzE6
MjApCisgICAgICAxMDAwIGl0ZXJhdGlvbnMgZnVuY3Rpb24gbmFtZWQtZnVuY3Rpb25zLXdpdGgt
ZGlzcGxheS1uYW1lcy5odG1sIChsaW5lIDM4OjIyKQorICAgICAgYm9ndXNEaXNwbGF5TmFtZUZ1
bmN0aW9uIG5hbWVkLWZ1bmN0aW9ucy13aXRoLWRpc3BsYXktbmFtZXMuaHRtbCAobGluZSA0Njoz
NCkKKyAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTox
NykKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL25lc3RlZC1hbm9ueW1vdXMt
ZnVuY3Rvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9m
aWxlci9uZXN0ZWQtYW5vbnltb3VzLWZ1bmN0b24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY4
MDgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL25lc3RlZC1hbm9ueW1vdXMtZnVuY3Rv
bi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsMTQgKzQsMTQgQEAgVG8gcnVuIHRo
aXMgdGVzdCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiBOZXN0ZWQg
YW5vbnltb3VzIGZ1bmN0aW9ucyBjYWxsZWQKIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjAp
Ci0gICBzdGFydFRlc3QgbmVzdGVkLWFub255bW91cy1mdW5jdG9uLmh0bWwgKGxpbmUgMTE6MSkK
LSAgICAgIEFub255bW91c0Z1bmN0aW9uV2ljaENhbGxzQW5Bbm9ueW1vdXNGdW5jdGlvbiBuZXN0
ZWQtYW5vbnltb3VzLWZ1bmN0b24uaHRtbCAobGluZSAxNDo2OCkKLSAgICAgICAgIGFub255bW91
c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI5OjM3KQotICAg
ICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGlu
ZSAxNzoyNikKKyAgIHN0YXJ0VGVzdCBuZXN0ZWQtYW5vbnltb3VzLWZ1bmN0b24uaHRtbCAobGlu
ZSAxMDoxOSkKKyAgICAgIEFub255bW91c0Z1bmN0aW9uV2ljaENhbGxzQW5Bbm9ueW1vdXNGdW5j
dGlvbiBuZXN0ZWQtYW5vbnltb3VzLWZ1bmN0b24uaHRtbCAobGluZSAxNDo2NSkKKyAgICAgICAg
IGFub255bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI5
OjM0KQorICAgICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNl
cy5qcyAobGluZSAxNzoyMykKICAgICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQgKG5vIGZpbGUp
IChsaW5lIDA6MCkKICAgICAgICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGlu
ZSAwOjApCiAgICAgICAgICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQog
ICAgICAgICAgICAgICAgZ2V0RWxlbWVudEJ5SWQgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAg
IGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAgICAg
IGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToxNykKIAogCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL25lc3RlZC1zdGFydC1hbmQtc3RvcC1wcm9m
aWxlci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxl
ci9uZXN0ZWQtc3RhcnQtYW5kLXN0b3AtcHJvZmlsZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAx
ODY4MDgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL25lc3RlZC1zdGFydC1hbmQtc3Rv
cC1wcm9maWxlci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsMzUgKzQsMzUgQEAg
VG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxl
OiBTdGFydCB0aGUgcHJvZmlsZXIgdGhlIHRoaXJkIHRpbWUuCiBUaHJlYWRfMSAobm8gZmlsZSkg
KGxpbmUgMDowKQotICAgc3RhcnRUZXN0IG5lc3RlZC1zdGFydC1hbmQtc3RvcC1wcm9maWxlci5o
dG1sIChsaW5lIDExOjEpCi0gICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2Vz
LmpzIChsaW5lIDE6MjApCisgICBzdGFydFRlc3QgbmVzdGVkLXN0YXJ0LWFuZC1zdG9wLXByb2Zp
bGVyLmh0bWwgKGxpbmUgMTA6MTkpCisgICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVz
b3VyY2VzLmpzIChsaW5lIDE6MTcpCiAKIAogUHJvZmlsZSB0aXRsZTogU3RhcnQgdGhlIHByb2Zp
bGVyIHRoZSB0aGlyZCB0aW1lLgogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0
YXJ0VGVzdCBuZXN0ZWQtc3RhcnQtYW5kLXN0b3AtcHJvZmlsZXIuaHRtbCAobGluZSAxMToxKQot
ICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQor
ICAgc3RhcnRUZXN0IG5lc3RlZC1zdGFydC1hbmQtc3RvcC1wcm9maWxlci5odG1sIChsaW5lIDEw
OjE5KQorICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAx
OjE3KQogCiBQcm9maWxlIHRpdGxlOiBTdGFydCB0aGUgcHJvZmlsZXIgdGhlIHNlY29uZCB0aW1l
LgogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCBuZXN0ZWQtc3Rh
cnQtYW5kLXN0b3AtcHJvZmlsZXIuaHRtbCAobGluZSAxMToxKQotICAgICAgZW5kVGVzdCBwcm9m
aWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgc3RhcnRUZXN0IG5lc3Rl
ZC1zdGFydC1hbmQtc3RvcC1wcm9maWxlci5odG1sIChsaW5lIDEwOjE5KQorICAgICAgZW5kVGVz
dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogICAgICAgICAgcHJv
ZmlsZUVuZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgICAgcHJpbnRQcm9maWxlc0RhdGFX
aXRob3V0VGltZSBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA2MzoxKQorICAg
ICAgICAgcHJpbnRQcm9maWxlc0RhdGFXaXRob3V0VGltZSBwcm9maWxlci10ZXN0LUpTLXJlc291
cmNlcy5qcyAobGluZSA2MjozOCkKICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQgKG5vIGZpbGUp
IChsaW5lIDA6MCkKICAgICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAw
OjApCiAgICAgICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAg
ICAgICAgcHJpbnRQcm9maWxlTm9kZVdpdGhvdXRUaW1lIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3Vy
Y2VzLmpzIChsaW5lIDc4OjEpCisgICAgICAgICAgICBwcmludFByb2ZpbGVOb2RlV2l0aG91dFRp
bWUgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgNzc6MzcpCiAgICAgICAgICAg
ICAgICByZXBsYWNlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICBjcmVhdGVU
ZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgYXBwZW5kQ2hpbGQg
KG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgIGNoaWxkcmVuIChubyBmaWxlKSAo
bGluZSAwOjApCi0gICAgICAgICAgICAgICBwcmludFByb2ZpbGVOb2RlV2l0aG91dFRpbWUgcHJv
ZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgNzg6MSkKKyAgICAgICAgICAgICAgIHBy
aW50UHJvZmlsZU5vZGVXaXRob3V0VGltZSBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAo
bGluZSA3NzozNykKICAgICAgICAgICAgICAgICAgIHJlcGxhY2UgKG5vIGZpbGUpIChsaW5lIDA6
MCkKICAgICAgICAgICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAwOjAp
CiAgICAgICAgICAgICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAg
ICAgICAgICAgICAgICAgY2hpbGRyZW4gKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAgICAgICAg
ICAgICAgIHByaW50UHJvZmlsZU5vZGVXaXRob3V0VGltZSBwcm9maWxlci10ZXN0LUpTLXJlc291
cmNlcy5qcyAobGluZSA3ODoxKQorICAgICAgICAgICAgICAgICAgcHJpbnRQcm9maWxlTm9kZVdp
dGhvdXRUaW1lIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDc3OjM3KQogICAg
ICAgICAgICAgICAgICAgICAgcmVwbGFjZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAg
ICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAg
ICAgICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjApCkBAIC00MywyOSAr
NDMsMjkgQEAgVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKIAogUHJvZmlsZSB0aXRsZTog
U3RhcnQgdGhlIHByb2ZpbGVyIHRoZSB0aGlyZCB0aW1lLgogVGhyZWFkXzEgKG5vIGZpbGUpIChs
aW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCBuZXN0ZWQtc3RhcnQtYW5kLXN0b3AtcHJvZmlsZXIuaHRt
bCAobGluZSAxMToxKQotICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5q
cyAobGluZSAxOjIwKQorICAgc3RhcnRUZXN0IG5lc3RlZC1zdGFydC1hbmQtc3RvcC1wcm9maWxl
ci5odG1sIChsaW5lIDEwOjE5KQorICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291
cmNlcy5qcyAobGluZSAxOjE3KQogCiBQcm9maWxlIHRpdGxlOiBTdGFydCB0aGUgcHJvZmlsZXIg
dGhlIHNlY29uZCB0aW1lLgogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0
VGVzdCBuZXN0ZWQtc3RhcnQtYW5kLXN0b3AtcHJvZmlsZXIuaHRtbCAobGluZSAxMToxKQotICAg
ICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAg
c3RhcnRUZXN0IG5lc3RlZC1zdGFydC1hbmQtc3RvcC1wcm9maWxlci5odG1sIChsaW5lIDEwOjE5
KQorICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3
KQogICAgICAgICAgcHJvZmlsZUVuZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgICAgcHJp
bnRQcm9maWxlc0RhdGFXaXRob3V0VGltZSBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAo
bGluZSA2MzoxKQorICAgICAgICAgcHJpbnRQcm9maWxlc0RhdGFXaXRob3V0VGltZSBwcm9maWxl
ci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA2MjozOCkKICAgICAgICAgICAgIGNyZWF0ZUVs
ZW1lbnQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChu
byBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxp
bmUgMDowKQotICAgICAgICAgICAgcHJpbnRQcm9maWxlTm9kZVdpdGhvdXRUaW1lIHByb2ZpbGVy
LXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDc4OjEpCisgICAgICAgICAgICBwcmludFByb2Zp
bGVOb2RlV2l0aG91dFRpbWUgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgNzc6
MzcpCiAgICAgICAgICAgICAgICByZXBsYWNlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAg
ICAgICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAg
ICAgYXBwZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgIGNoaWxk
cmVuIChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICAgICAgICAgICBwcmludFByb2ZpbGVOb2Rl
V2l0aG91dFRpbWUgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgNzg6MSkKKyAg
ICAgICAgICAgICAgIHByaW50UHJvZmlsZU5vZGVXaXRob3V0VGltZSBwcm9maWxlci10ZXN0LUpT
LXJlc291cmNlcy5qcyAobGluZSA3NzozNykKICAgICAgICAgICAgICAgICAgIHJlcGxhY2UgKG5v
IGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBm
aWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkg
KGxpbmUgMDowKQogICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gKG5vIGZpbGUpIChsaW5lIDA6
MCkKLSAgICAgICAgICAgICAgICAgIHByaW50UHJvZmlsZU5vZGVXaXRob3V0VGltZSBwcm9maWxl
ci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA3ODoxKQorICAgICAgICAgICAgICAgICAgcHJp
bnRQcm9maWxlTm9kZVdpdGhvdXRUaW1lIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChs
aW5lIDc3OjM3KQogICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZSAobm8gZmlsZSkgKGxpbmUg
MDowKQogICAgICAgICAgICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5l
IDA6MCkKICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAw
OjApCkBAIC03NSw0OSArNzUsNDkgQEAgVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKIAog
UHJvZmlsZSB0aXRsZTogU3RhcnQgdGhlIHByb2ZpbGVyIHRoZSBmaXJzdCB0aW1lLgogVGhyZWFk
XzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCBuZXN0ZWQtc3RhcnQtYW5kLXN0
b3AtcHJvZmlsZXIuaHRtbCAobGluZSAxMToxKQotICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0
LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgc3RhcnRUZXN0IG5lc3RlZC1zdGFydC1h
bmQtc3RvcC1wcm9maWxlci5odG1sIChsaW5lIDEwOjE5KQorICAgICAgZW5kVGVzdCBwcm9maWxl
ci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogICAgICAgICAgcHJvZmlsZUVuZCAo
bm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgICAgcHJpbnRQcm9maWxlc0RhdGFXaXRob3V0VGlt
ZSBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA2MzoxKQorICAgICAgICAgcHJp
bnRQcm9maWxlc0RhdGFXaXRob3V0VGltZSBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAo
bGluZSA2MjozOCkKICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQgKG5vIGZpbGUpIChsaW5lIDA6
MCkKICAgICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAg
ICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgICAgICAgcHJp
bnRQcm9maWxlTm9kZVdpdGhvdXRUaW1lIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChs
aW5lIDc4OjEpCisgICAgICAgICAgICBwcmludFByb2ZpbGVOb2RlV2l0aG91dFRpbWUgcHJvZmls
ZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgNzc6MzcpCiAgICAgICAgICAgICAgICByZXBs
YWNlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICBjcmVhdGVUZXh0Tm9kZSAo
bm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgYXBwZW5kQ2hpbGQgKG5vIGZpbGUp
IChsaW5lIDA6MCkKICAgICAgICAgICAgICAgIGNoaWxkcmVuIChubyBmaWxlKSAobGluZSAwOjAp
Ci0gICAgICAgICAgICAgICBwcmludFByb2ZpbGVOb2RlV2l0aG91dFRpbWUgcHJvZmlsZXItdGVz
dC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgNzg6MSkKKyAgICAgICAgICAgICAgIHByaW50UHJvZmls
ZU5vZGVXaXRob3V0VGltZSBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA3Nzoz
NykKICAgICAgICAgICAgICAgICAgIHJlcGxhY2UgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAg
ICAgICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAg
ICAgICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAg
ICAgICAgY2hpbGRyZW4gKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAgICAgICAgICAgICAgIHBy
aW50UHJvZmlsZU5vZGVXaXRob3V0VGltZSBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAo
bGluZSA3ODoxKQorICAgICAgICAgICAgICAgICAgcHJpbnRQcm9maWxlTm9kZVdpdGhvdXRUaW1l
IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDc3OjM3KQogICAgICAgICAgICAg
ICAgICAgICAgcmVwbGFjZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgICAg
ICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgICAg
ICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICAgICAg
ICBjaGlsZHJlbiAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgICAgICAgICAgICAgICAgcHJp
bnRQcm9maWxlTm9kZVdpdGhvdXRUaW1lIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChs
aW5lIDc4OjEpCisgICAgICAgICAgICAgICAgICAgICBwcmludFByb2ZpbGVOb2RlV2l0aG91dFRp
bWUgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgNzc6MzcpCiAgICAgICAgICAg
ICAgICAgICAgICAgICByZXBsYWNlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAg
ICAgICAgICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAg
ICAgICAgICAgICAgICAgYXBwZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAg
ICAgICAgICAgICAgICAgIGNoaWxkcmVuIChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICAgICAg
ICAgICAgICAgICAgICBwcmludFByb2ZpbGVOb2RlV2l0aG91dFRpbWUgcHJvZmlsZXItdGVzdC1K
Uy1yZXNvdXJjZXMuanMgKGxpbmUgNzg6MSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50
UHJvZmlsZU5vZGVXaXRob3V0VGltZSBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGlu
ZSA3NzozNykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2UgKG5vIGZpbGUpIChs
aW5lIDA6MCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBm
aWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRDaGlsZCAo
bm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4g
KG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50UHJv
ZmlsZU5vZGVXaXRob3V0VGltZSBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA3
ODoxKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRQcm9maWxlTm9kZVdpdGhvdXRU
aW1lIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDc3OjM3KQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6
MCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAo
bGluZSAwOjApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiAobm8gZmls
ZSkgKGxpbmUgMDowKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRQcm9maWxl
Tm9kZVdpdGhvdXRUaW1lIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDc4OjEp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludFByb2ZpbGVOb2RlV2l0aG91dFRp
bWUgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgNzc6MzcpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxp
bmUgMDowKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kQ2hpbGQgKG5v
IGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxk
cmVuIChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwcmludFByb2ZpbGVOb2RlV2l0aG91dFRpbWUgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMu
anMgKGxpbmUgNzg6MSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50UHJv
ZmlsZU5vZGVXaXRob3V0VGltZSBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA3
NzozNykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2UgKG5vIGZp
bGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0
ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9wcm9maWxlci9vbmUtZXhlY3V0aW9uLWNvbnRleHQtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvb25lLWV4ZWN1dGlvbi1jb250
ZXh0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2ODA4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9w
cm9maWxlci9vbmUtZXhlY3V0aW9uLWNvbnRleHQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC00LDcgKzQsNyBAQCBUbyBydW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBsb2FkIGl0IGluIHRo
CiAKIFByb2ZpbGUgdGl0bGU6IE9uZSBFeGVjdXRpb24gQ29udGV4dAogVGhyZWFkXzEgKG5vIGZp
bGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCBvbmUtZXhlY3V0aW9uLWNvbnRleHQuaHRtbCAo
bGluZSAxMToxKQotICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAo
bGluZSAxOjIwKQorICAgc3RhcnRUZXN0IG9uZS1leGVjdXRpb24tY29udGV4dC5odG1sIChsaW5l
IDEwOjE5KQorICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGlu
ZSAxOjE3KQogCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvcHJvZmlsZS1jYWxs
cy1pbi1pbmNsdWRlZC1maWxlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L3Byb2ZpbGVyL3Byb2ZpbGUtY2FsbHMtaW4taW5jbHVkZWQtZmlsZS1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDE4NjgwOCkKKysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvcHJvZmls
ZS1jYWxscy1pbi1pbmNsdWRlZC1maWxlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
NCw3ICs0LDcgQEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQ
cm9maWxlIHRpdGxlOiBQcm9maWxlIGNhbGwgaW4gaW5jbHVkZWQgZmlsZQogVGhyZWFkXzEgKG5v
IGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0UHJvZmlsZSBwcm9maWxlci10ZXN0LUpTLXJlc291
cmNlcy5qcyAobGluZSA0MzoxKQotICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNl
cy5qcyAobGluZSAxOjIwKQorICAgc3RhcnRQcm9maWxlIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3Vy
Y2VzLmpzIChsaW5lIDQyOjIyKQorICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNl
cy5qcyAobGluZSAxOjE3KQogCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvcHJv
ZmlsZS13aXRoLW5vLXRpdGxlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L3Byb2ZpbGVyL3Byb2ZpbGUtd2l0aC1uby10aXRsZS1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDE4NjgwOCkKKysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvcHJvZmlsZS13aXRoLW5v
LXRpdGxlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCw3ICs0LDcgQEAgVG8gcnVu
IHRoaXMgdGVzdCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiAKIFRo
cmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBzdGFydFRlc3QgcHJvZmlsZS13aXRoLW5v
LXRpdGxlLmh0bWwgKGxpbmUgMTE6MSkKLSAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1y
ZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAgIHN0YXJ0VGVzdCBwcm9maWxlLXdpdGgtbm8tdGl0
bGUuaHRtbCAobGluZSAxMDoxOSkKKyAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNv
dXJjZXMuanMgKGxpbmUgMToxNykKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVy
L3Byb2ZpbGluZy1mcm9tLWEtbmVzdGVkLWxvY2F0aW9uLWJ1dC1zdG9wLXByb2ZpbGluZy1vdXRz
aWRlLXRoZS1uZXN0aW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L3Byb2ZpbGVyL3Byb2ZpbGluZy1mcm9tLWEtbmVzdGVkLWxvY2F0aW9uLWJ1dC1zdG9wLXBy
b2ZpbGluZy1vdXRzaWRlLXRoZS1uZXN0aW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2ODA4
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9wcm9maWxpbmctZnJvbS1hLW5lc3RlZC1s
b2NhdGlvbi1idXQtc3RvcC1wcm9maWxpbmctb3V0c2lkZS10aGUtbmVzdGluZy1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsNyArNCw3IEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFs
bHksIGxvYWQgaXQgaW4gdGgKIAogUHJvZmlsZSB0aXRsZTogUHJvZmlsaW5nIEZyb20gQSBOZXN0
ZWQgTG9jYXRpb24gQnV0IFN0b3AgUHJvZmlsaW5nIE91dHNpZGUgVGhlIE5lc3RpbmcKIFRocmVh
ZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBmdW5jdGlvbldpY2hTdGFydHNUaGVQcm9maWxl
ciBwcm9maWxpbmctZnJvbS1hLW5lc3RlZC1sb2NhdGlvbi1idXQtc3RvcC1wcm9maWxpbmctb3V0
c2lkZS10aGUtbmVzdGluZy5odG1sIChsaW5lIDE3OjEpCi0gICBlbmRUZXN0IHByb2ZpbGVyLXRl
c3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MjApCisgICBmdW5jdGlvbldpY2hTdGFydHNUaGVQ
cm9maWxlciBwcm9maWxpbmctZnJvbS1hLW5lc3RlZC1sb2NhdGlvbi1idXQtc3RvcC1wcm9maWxp
bmctb3V0c2lkZS10aGUtbmVzdGluZy5odG1sIChsaW5lIDE2OjM5KQorICAgZW5kVGVzdCBwcm9m
aWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiAKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvcHJvZmlsZXIvcHJvZmlsaW5nLWZyb20tYS1uZXN0ZWQtbG9jYXRpb24tZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvcHJvZmlsaW5n
LWZyb20tYS1uZXN0ZWQtbG9jYXRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY4MDgpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3Byb2ZpbGluZy1mcm9tLWEtbmVzdGVkLWxvY2F0
aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCw3ICs0LDcgQEAgVG8gcnVuIHRo
aXMgdGVzdCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiBQcm9maWxp
bmcgRnJvbSBBIE5lc3RlZCBMb2NhdGlvbgogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkK
LSAgIGZ1bmN0aW9uV2ljaFN0YXJ0c0FuZFN0b3BzVGhlUHJvZmlsZXIgcHJvZmlsaW5nLWZyb20t
YS1uZXN0ZWQtbG9jYXRpb24uaHRtbCAobGluZSAxNjoxKQotICAgICAgZW5kVGVzdCBwcm9maWxl
ci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgZnVuY3Rpb25XaWNoU3RhcnRz
QW5kU3RvcHNUaGVQcm9maWxlciBwcm9maWxpbmctZnJvbS1hLW5lc3RlZC1sb2NhdGlvbi5odG1s
IChsaW5lIDE1OjQ3KQorICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5q
cyAobGluZSAxOjE3KQogCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvc2ltcGxl
LWV2ZW50LWNhbGwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
cHJvZmlsZXIvc2ltcGxlLWV2ZW50LWNhbGwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY4MDgp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3NpbXBsZS1ldmVudC1jYWxsLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCw3ICs0LDcgQEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51
YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiBBIHNpbXBsZSBwcm9maWxlIHRl
c3Qgd2hlcmUgYW4gZXZlbnQgaGFwcGVucy4KIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjAp
Ci0gICBzdGFydFRlc3Qgc2ltcGxlLWV2ZW50LWNhbGwuaHRtbCAobGluZSAxMToxKQotICAgICAg
ZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgc3Rh
cnRUZXN0IHNpbXBsZS1ldmVudC1jYWxsLmh0bWwgKGxpbmUgMTA6MTkpCisgICAgICBlbmRUZXN0
IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MTcpCiAKIApJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9wcm9maWxlci9zaW1wbGUtbm8tbGV2ZWwtY2hhbmdlLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3NpbXBsZS1uby1sZXZl
bC1jaGFuZ2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY4MDgpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L3Byb2ZpbGVyL3NpbXBsZS1uby1sZXZlbC1jaGFuZ2UtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC00LDcgKzQsNyBAQCBUbyBydW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBsb2FkIGl0
IGluIHRoCiAKIFByb2ZpbGUgdGl0bGU6IEEgc2ltcGxlIHByb2ZpbGUgdGVzdCB3aGVyZSBubyBz
Y29wZSBjaGFnbmVzCiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgZnVuY3Rpb25X
aWNoU3RhcnRzQW5kU3RvcHNUaGVQcm9maWxlciBzaW1wbGUtbm8tbGV2ZWwtY2hhbmdlLmh0bWwg
KGxpbmUgMTY6MSkKKyAgIGZ1bmN0aW9uV2ljaFN0YXJ0c0FuZFN0b3BzVGhlUHJvZmlsZXIgc2lt
cGxlLW5vLWxldmVsLWNoYW5nZS5odG1sIChsaW5lIDE1OjQ3KQogICAgICAgZ2V0RWxlbWVudEJ5
SWQgKG5vIGZpbGUpIChsaW5lIDA6MCkKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2Zp
bGVyL3N0YXJ0LWFuZC1zdG9wLXByb2ZpbGVyLW11bHRpcGxlLXRpbWVzLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3N0YXJ0LWFuZC1zdG9wLXBy
b2ZpbGVyLW11bHRpcGxlLXRpbWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2ODA4KQorKysg
TGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9zdGFydC1hbmQtc3RvcC1wcm9maWxlci1tdWx0aXBs
ZS10aW1lcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsNzAgKzQsNzAgQEAgVG8g
cnVuIHRoaXMgdGVzdCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiBT
dGFydCB0aGUgcHJvZmlsZXIgdGhlIGZpcnN0IHRpbWUuCiBUaHJlYWRfMSAobm8gZmlsZSkgKGxp
bmUgMDowKQotICAgc3RhcnRUZXN0IHN0YXJ0LWFuZC1zdG9wLXByb2ZpbGVyLW11bHRpcGxlLXRp
bWVzLmh0bWwgKGxpbmUgMTE6MSkKLSAgICAgIGFub255bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRl
c3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI5OjM3KQotICAgICAgICAgaW5zZXJ0TmV3VGV4dCBw
cm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyNikKKyAgIHN0YXJ0VGVzdCBz
dGFydC1hbmQtc3RvcC1wcm9maWxlci1tdWx0aXBsZS10aW1lcy5odG1sIChsaW5lIDEwOjE5KQor
ICAgICAgYW5vbnltb3VzRnVuY3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxp
bmUgMjk6MzQpCisgICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3Vy
Y2VzLmpzIChsaW5lIDE3OjIzKQogICAgICAgICAgICAgY3JlYXRlRWxlbWVudCAobm8gZmlsZSkg
KGxpbmUgMDowKQogICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6
MCkKICAgICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAg
ICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgZW5kVGVzdCBw
cm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgICAgZW5kVGVzdCBw
cm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiAKIFByb2ZpbGUgdGl0
bGU6IFN0YXJ0IHRoZSBwcm9maWxlciB0aGUgZmlyc3QgdGltZS4KIFRocmVhZF8xIChubyBmaWxl
KSAobGluZSAwOjApCi0gICBzdGFydFRlc3Qgc3RhcnQtYW5kLXN0b3AtcHJvZmlsZXItbXVsdGlw
bGUtdGltZXMuaHRtbCAobGluZSAxMToxKQotICAgICAgYW5vbnltb3VzRnVuY3Rpb24gcHJvZmls
ZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMjk6MzcpCi0gICAgICAgICBpbnNlcnROZXdU
ZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjI2KQorICAgc3RhcnRU
ZXN0IHN0YXJ0LWFuZC1zdG9wLXByb2ZpbGVyLW11bHRpcGxlLXRpbWVzLmh0bWwgKGxpbmUgMTA6
MTkpCisgICAgICBhbm9ueW1vdXNGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5q
cyAobGluZSAyOTozNCkKKyAgICAgICAgIGluc2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1KUy1y
ZXNvdXJjZXMuanMgKGxpbmUgMTc6MjMpCiAgICAgICAgICAgICBjcmVhdGVFbGVtZW50IChubyBm
aWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxp
bmUgMDowKQogICAgICAgICAgICAgYXBwZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAg
ICAgICAgICAgIGdldEVsZW1lbnRCeUlkIChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICBlbmRU
ZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MjApCisgICAgICBlbmRU
ZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MTcpCiAKIFByb2ZpbGUg
dGl0bGU6IFN0YXJ0IHRoZSBwcm9maWxlciB0aGUgc2Vjb25kIHRpbWUuCiBUaHJlYWRfMSAobm8g
ZmlsZSkgKGxpbmUgMDowKQotICAgc3RhcnRUZXN0IHN0YXJ0LWFuZC1zdG9wLXByb2ZpbGVyLW11
bHRpcGxlLXRpbWVzLmh0bWwgKGxpbmUgMTE6MSkKLSAgICAgIGFub255bW91c0Z1bmN0aW9uIHBy
b2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI5OjM3KQotICAgICAgICAgaW5zZXJ0
TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyNikKKyAgIHN0
YXJ0VGVzdCBzdGFydC1hbmQtc3RvcC1wcm9maWxlci1tdWx0aXBsZS10aW1lcy5odG1sIChsaW5l
IDEwOjE5KQorICAgICAgYW5vbnltb3VzRnVuY3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJj
ZXMuanMgKGxpbmUgMjk6MzQpCisgICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3Qt
SlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjIzKQogICAgICAgICAgICAgY3JlYXRlRWxlbWVudCAo
bm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUp
IChsaW5lIDA6MCkKICAgICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjAp
CiAgICAgICAgICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAg
ZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgICAg
ZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiAKIFBy
b2ZpbGUgdGl0bGU6IFN0YXJ0IHRoZSBwcm9maWxlciB0aGUgZmlyc3QgdGltZS4KIFRocmVhZF8x
IChubyBmaWxlKSAobGluZSAwOjApCi0gICBzdGFydFRlc3Qgc3RhcnQtYW5kLXN0b3AtcHJvZmls
ZXItbXVsdGlwbGUtdGltZXMuaHRtbCAobGluZSAxMToxKQotICAgICAgYW5vbnltb3VzRnVuY3Rp
b24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMjk6MzcpCi0gICAgICAgICBp
bnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjI2KQor
ICAgc3RhcnRUZXN0IHN0YXJ0LWFuZC1zdG9wLXByb2ZpbGVyLW11bHRpcGxlLXRpbWVzLmh0bWwg
KGxpbmUgMTA6MTkpCisgICAgICBhbm9ueW1vdXNGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpTLXJl
c291cmNlcy5qcyAobGluZSAyOTozNCkKKyAgICAgICAgIGluc2VydE5ld1RleHQgcHJvZmlsZXIt
dGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjMpCiAgICAgICAgICAgICBjcmVhdGVFbGVt
ZW50IChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICBjcmVhdGVUZXh0Tm9kZSAobm8g
ZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgYXBwZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5l
IDA6MCkKICAgICAgICAgICAgIGdldEVsZW1lbnRCeUlkIChubyBmaWxlKSAobGluZSAwOjApCi0g
ICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MjApCisg
ICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MTcpCiAK
IFByb2ZpbGUgdGl0bGU6IFN0YXJ0IHRoZSBwcm9maWxlciB0aGUgc2Vjb25kIHRpbWUuCiBUaHJl
YWRfMSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgc3RhcnRUZXN0IHN0YXJ0LWFuZC1zdG9wLXBy
b2ZpbGVyLW11bHRpcGxlLXRpbWVzLmh0bWwgKGxpbmUgMTE6MSkKLSAgICAgIGFub255bW91c0Z1
bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI5OjM3KQotICAgICAg
ICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoy
NikKKyAgIHN0YXJ0VGVzdCBzdGFydC1hbmQtc3RvcC1wcm9maWxlci1tdWx0aXBsZS10aW1lcy5o
dG1sIChsaW5lIDEwOjE5KQorICAgICAgYW5vbnltb3VzRnVuY3Rpb24gcHJvZmlsZXItdGVzdC1K
Uy1yZXNvdXJjZXMuanMgKGxpbmUgMjk6MzQpCisgICAgICAgICBpbnNlcnROZXdUZXh0IHByb2Zp
bGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjIzKQogICAgICAgICAgICAgY3JlYXRl
RWxlbWVudCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUg
KG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAo
bGluZSAwOjApCiAgICAgICAgICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMDow
KQotICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIw
KQorICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3
KQogCiBQcm9maWxlIHRpdGxlOiBTdGFydCB0aGUgcHJvZmlsZXIgdGhlIHRoaXJkIHRpbWUuCiBU
aHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgc3RhcnRUZXN0IHN0YXJ0LWFuZC1zdG9w
LXByb2ZpbGVyLW11bHRpcGxlLXRpbWVzLmh0bWwgKGxpbmUgMTE6MSkKLSAgICAgIGFub255bW91
c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI5OjM3KQotICAg
ICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAx
NzoyNikKKyAgIHN0YXJ0VGVzdCBzdGFydC1hbmQtc3RvcC1wcm9maWxlci1tdWx0aXBsZS10aW1l
cy5odG1sIChsaW5lIDEwOjE5KQorICAgICAgYW5vbnltb3VzRnVuY3Rpb24gcHJvZmlsZXItdGVz
dC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMjk6MzQpCisgICAgICAgICBpbnNlcnROZXdUZXh0IHBy
b2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjIzKQogICAgICAgICAgICAgY3Jl
YXRlRWxlbWVudCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgY3JlYXRlVGV4dE5v
ZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxl
KSAobGluZSAwOjApCiAgICAgICAgICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUg
MDowKQotICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAx
OjIwKQorICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAx
OjE3KQogCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvc3RhcnQtYW5kLXN0b3At
cHJvZmlsaW5nLWluLXRoZS1zYW1lLWZ1bmN0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3N0YXJ0LWFuZC1zdG9wLXByb2ZpbGluZy1pbi10
aGUtc2FtZS1mdW5jdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4NjgwOCkKKysrIExheW91
dFRlc3RzL2Zhc3QvcHJvZmlsZXIvc3RhcnQtYW5kLXN0b3AtcHJvZmlsaW5nLWluLXRoZS1zYW1l
LWZ1bmN0aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCw3ICs0LDcgQEAgVG8g
cnVuIHRoaXMgdGVzdCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiBQ
cm9maWxpbmcgRnJvbSBBIE5lc3RlZCBMb2NhdGlvbgogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5l
IDA6MCkKLSAgIHN0YXJ0VGVzdCBzdGFydC1hbmQtc3RvcC1wcm9maWxpbmctaW4tdGhlLXNhbWUt
ZnVuY3Rpb24uaHRtbCAobGluZSAxMToxKQotICAgICAgZnVuY3Rpb25XaWNoU3RvcHNUaGVQcm9m
aWxlciBzdGFydC1hbmQtc3RvcC1wcm9maWxpbmctaW4tdGhlLXNhbWUtZnVuY3Rpb24uaHRtbCAo
bGluZSAxODoxKQorICAgc3RhcnRUZXN0IHN0YXJ0LWFuZC1zdG9wLXByb2ZpbGluZy1pbi10aGUt
c2FtZS1mdW5jdGlvbi5odG1sIChsaW5lIDEwOjE5KQorICAgICAgZnVuY3Rpb25XaWNoU3RvcHNU
aGVQcm9maWxlciBzdGFydC1hbmQtc3RvcC1wcm9maWxpbmctaW4tdGhlLXNhbWUtZnVuY3Rpb24u
aHRtbCAobGluZSAxNzozOCkKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3N0
b3AtcHJvZmlsaW5nLWFmdGVyLXNldFRpbWVvdXQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvc3RvcC1wcm9maWxpbmctYWZ0ZXItc2V0VGltZW91
dC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4NjgwOCkKKysrIExheW91dFRlc3RzL2Zhc3QvcHJv
ZmlsZXIvc3RvcC1wcm9maWxpbmctYWZ0ZXItc2V0VGltZW91dC1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTQsMTAgKzQsMTAgQEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgbG9h
ZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiBTdG9wIHByb2ZpbGluZyBmcm9tIGEgdGltZW91
dAogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIG9ubG9hZCBzdG9wLXByb2ZpbGlu
Zy1hZnRlci1zZXRUaW1lb3V0Lmh0bWwgKGxpbmUgMjE6NTIpCi0gICAgICBzdGFydFRlc3Qgc3Rv
cC1wcm9maWxpbmctYWZ0ZXItc2V0VGltZW91dC5odG1sIChsaW5lIDEzOjEpCisgICBvbmxvYWQg
c3RvcC1wcm9maWxpbmctYWZ0ZXItc2V0VGltZW91dC5odG1sIChsaW5lIDIxOjQ0KQorICAgICAg
c3RhcnRUZXN0IHN0b3AtcHJvZmlsaW5nLWFmdGVyLXNldFRpbWVvdXQuaHRtbCAobGluZSAxMjox
OSkKICAgICAgICAgIHNldFRpbWVvdXQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgIChwcm9ncmFt
KSBzdG9wLXByb2ZpbGluZy1hZnRlci1zZXRUaW1lb3V0Lmh0bWwgKGxpbmUgMToxKQotICAgICAg
ZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgICAg
ZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiAKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvc3RvcC10aGVuLWZ1bmN0aW9uLWNhbGwtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvc3RvcC10
aGVuLWZ1bmN0aW9uLWNhbGwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY4MDgpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3N0b3AtdGhlbi1mdW5jdGlvbi1jYWxsLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtNSw2ICs1LDYgQEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxs
eSwgbG9hZCBpdCBpbiB0aAogUHJvZmlsZSB0aXRsZTogVGVzdAogVGhyZWFkXzEgKG5vIGZpbGUp
IChsaW5lIDA6MCkKICAgIChwcm9ncmFtKSAobm8gZmlsZSkgKGxpbmUgMToxNikKLSAgICAgIHRl
c3Qgc3RvcC10aGVuLWZ1bmN0aW9uLWNhbGwuaHRtbCAobGluZSAxMToyMCkKKyAgICAgIHRlc3Qg
c3RvcC10aGVuLWZ1bmN0aW9uLWNhbGwuaHRtbCAobGluZSAxMToxNCkKIAogCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3R3by1leGVjdXRpb24tY29udGV4dHMtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvdHdvLWV4ZWN1dGlvbi1j
b250ZXh0cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4NjgwOCkKKysrIExheW91dFRlc3RzL2Zh
c3QvcHJvZmlsZXIvdHdvLWV4ZWN1dGlvbi1jb250ZXh0cy1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTQsOCArNCw4IEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxvYWQgaXQg
aW4gdGgKIAogUHJvZmlsZSB0aXRsZTogVHdvIEV4ZWN1dGlvbiBDb250ZXh0cwogVGhyZWFkXzEg
KG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCB0d28tZXhlY3V0aW9uLWNvbnRleHRz
Lmh0bWwgKGxpbmUgMTE6MSkKLSAgICAgIGludGVybWVkaWFyeUZ1bmN0aW9uIHR3by1leGVjdXRp
b24tY29udGV4dHMuaHRtbCAobGluZSAxODoxKQotICAgICAgICAgdGVzdEVuZCB0d28tZXhlY3V0
aW9uLWNvbnRleHRzLmh0bWwgKGxpbmUgMzM6MjApCisgICBzdGFydFRlc3QgdHdvLWV4ZWN1dGlv
bi1jb250ZXh0cy5odG1sIChsaW5lIDEwOjE5KQorICAgICAgaW50ZXJtZWRpYXJ5RnVuY3Rpb24g
dHdvLWV4ZWN1dGlvbi1jb250ZXh0cy5odG1sIChsaW5lIDE3OjMwKQorICAgICAgICAgdGVzdEVu
ZCB0d28tZXhlY3V0aW9uLWNvbnRleHRzLmh0bWwgKGxpbmUgMzM6MTcpCiAKIApJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9wcm9maWxlci91c2VyLWRlZmluZWQtZnVuY3Rpb24tY2FsbHMtYnVpbHQt
aW4tZnVuY3Rpb25zLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L3Byb2ZpbGVyL3VzZXItZGVmaW5lZC1mdW5jdGlvbi1jYWxscy1idWlsdC1pbi1mdW5jdGlvbnMt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY4MDgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2Zp
bGVyL3VzZXItZGVmaW5lZC1mdW5jdGlvbi1jYWxscy1idWlsdC1pbi1mdW5jdGlvbnMtZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02LDExICs2LDExIEBAIFRoaXMgaXMgaW5zZXJ0ZWQg
VGV4dAogCiBQcm9maWxlIHRpdGxlOiBVc2VyIGRlZmluZWQgZnVuY3Rpb24gY2FsbGVzIGJ1aWx0
LWluIGZ1bmN0aW9ucwogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVz
dCB1c2VyLWRlZmluZWQtZnVuY3Rpb24tY2FsbHMtYnVpbHQtaW4tZnVuY3Rpb25zLmh0bWwgKGxp
bmUgMTE6MSkKKyAgIHN0YXJ0VGVzdCB1c2VyLWRlZmluZWQtZnVuY3Rpb24tY2FsbHMtYnVpbHQt
aW4tZnVuY3Rpb25zLmh0bWwgKGxpbmUgMTA6MTkpCiAgICAgICBjcmVhdGVFbGVtZW50IChubyBm
aWxlKSAobGluZSAwOjApCiAgICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDow
KQogICAgICAgYXBwZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgIGdldEVsZW1l
bnRCeUlkIChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3Qt
SlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MjApCisgICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3Qt
SlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MTcpCiAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9w
cm9maWxlci93aW5kb3ctZG90LWV2YWwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvcHJvZmlsZXIvd2luZG93LWRvdC1ldmFsLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMTg2ODA4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci93aW5kb3ctZG90LWV2YWwt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDEzICs0LDEzIEBAIFRvIHJ1biB0aGlz
IHRlc3QgbWFudWFsbHksIGxvYWQgaXQgaW4gdGgKIAogUHJvZmlsZSB0aXRsZTogQ2FsbCB3aW5k
b3cuZXZhbCgpCiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgc3RhcnRUZXN0IHdp
bmRvdy1kb3QtZXZhbC5odG1sIChsaW5lIDExOjEpCi0gICAgICBldmFsRnVuY3Rpb24gKG5vIGZp
bGUpIChsaW5lIDE6MjUpCi0gICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMt
cmVzb3VyY2VzLmpzIChsaW5lIDE3OjI2KQorICAgc3RhcnRUZXN0IHdpbmRvdy1kb3QtZXZhbC5o
dG1sIChsaW5lIDEwOjE5KQorICAgICAgZXZhbEZ1bmN0aW9uIChubyBmaWxlKSAobGluZSAxOjIy
KQorICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAo
bGluZSAxNzoyMykKICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQgKG5vIGZpbGUpIChsaW5lIDA6
MCkKICAgICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAg
ICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgZ2V0
RWxlbWVudEJ5SWQgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAgIGVuZFRlc3QgcHJvZmlsZXIt
dGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAgICAgIGVuZFRlc3QgcHJvZmlsZXIt
dGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToxNykKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9q
cy9kb20vc2NyaXB0LXN0YXJ0LWVuZC1sb2NhdGlvbnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2pzL2RvbS9zY3JpcHQtc3RhcnQtZW5kLWxvY2F0aW9ucy1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDE4NjgwOCkKKysrIExheW91dFRlc3RzL2pzL2RvbS9zY3JpcHQtc3Rh
cnQtZW5kLWxvY2F0aW9ucy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUsMjczICs1
LDI3MyBAQCBwcm9ncmFtIHsgMjM6OSAtIDIzOjUwIH0KIHByb2dyYW0geyAyMzo2OCAtIDIzOjEw
OSB9CiBwcm9ncmFtIHsgMjU6OSAtIDI2OjEgfQogcHJvZ3JhbSB7IDI3OjEzIC0gMjg6MSB9Ci1m
dW5jdGlvbiAiaGYxIiB7IDMwOjI0IC0gMzA6MzggfQotZnVuY3Rpb24gImhmMiIgeyAzMToyOCAt
IDMxOjQyIH0KLWZ1bmN0aW9uICJoZjMiIHsgMzI6MzIgLSAzMjo0NiB9Ci1mdW5jdGlvbiAiaGY0
IiB7IDM0OjI0IC0gMzY6OSB9Ci1mdW5jdGlvbiAiaGY1IiB7IDM3OjI4IC0gMzk6OSB9Ci1mdW5j
dGlvbiAiaGY2IiB7IDQwOjMyIC0gNDI6OSB9Ci1mdW5jdGlvbiAiaGY3IiB7IDQ1OjE2IC0gNDc6
NSB9Ci1mdW5jdGlvbiAiaGY4IiB7IDQ5OjM1IC0gNDk6NDUgfQotZnVuY3Rpb24gImhmOSIgeyA0
OTo5NyAtIDQ5OjEwNyB9CitmdW5jdGlvbiAiaGYxIiB7IDMwOjIxIC0gMzA6MzggfQorZnVuY3Rp
b24gImhmMiIgeyAzMToyNSAtIDMxOjQyIH0KK2Z1bmN0aW9uICJoZjMiIHsgMzI6MjkgLSAzMjo0
NiB9CitmdW5jdGlvbiAiaGY0IiB7IDM0OjIxIC0gMzY6OSB9CitmdW5jdGlvbiAiaGY1IiB7IDM3
OjI1IC0gMzk6OSB9CitmdW5jdGlvbiAiaGY2IiB7IDQwOjI5IC0gNDI6OSB9CitmdW5jdGlvbiAi
aGY3IiB7IDQ1OjEzIC0gNDc6NSB9CitmdW5jdGlvbiAiaGY4IiB7IDQ5OjMyIC0gNDk6NDUgfQor
ZnVuY3Rpb24gImhmOSIgeyA0OTo5NCAtIDQ5OjEwNyB9CiAKIHByb2dyYW0geyAxOjEgLSA0NzQ6
MSB9CiAKICAgT24gZmlyc3QgbGluZToKLWZ1bmN0aW9uICJmMCIgeyAxOjExNSAtIDE6MjY2IH0K
LWZ1bmN0aW9uICJmMGEiIHsgMToxNDIgLSAxOjI1NyB9Ci1mdW5jdGlvbiAiZjBiIiB7IDE6MTcw
IC0gMToyNDggfQotZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gIngwIiB7IDE6Mjk4IC0g
MTo0NzYgfQotZnVuY3Rpb24gIngwYSIgeyAxOjMzMCAtIDE6NDY2IH0KLWZ1bmN0aW9uICJ4MGIi
IHsgMTozNjQgLSAxOjQ1NiB9CitmdW5jdGlvbiAiZjAiIHsgMToxMTIgLSAxOjI2NiB9CitmdW5j
dGlvbiAiZjBhIiB7IDE6MTM5IC0gMToyNTcgfQorZnVuY3Rpb24gImYwYiIgeyAxOjE2NyAtIDE6
MjQ4IH0KK2V2YWwgeyAxOjEgLSAxOjU2IH0KK2Z1bmN0aW9uICJ4MCIgeyAxOjI5MiAtIDE6NDc2
IH0KK2Z1bmN0aW9uICJ4MGEiIHsgMTozMjcgLSAxOjQ2NiB9CitmdW5jdGlvbiAieDBiIiB7IDE6
MzYxIC0gMTo0NTYgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQogCiAgIEZ1bmN0aW9ucyBEZWNsYXJh
dGlvbnMgaW4gYSBmdW5jdGlvbjoKLWZ1bmN0aW9uICJmMSIgeyA5OjIyIC0gOToxMTMgfQorZnVu
Y3Rpb24gImYxIiB7IDk6MTYgLSA5OjExMyB9CiBldmFsIHsgMToxIC0gMTo1NiB9Ci1mdW5jdGlv
biAiZjIiIHsgMTI6MjIgLSAxNjo1IH0KLWZ1bmN0aW9uICJmMmEiIHsgMTQ6MjQgLSAxNDoxMTYg
fQorZnVuY3Rpb24gImYyIiB7IDEyOjE2IC0gMTY6NSB9CitmdW5jdGlvbiAiZjJhIiB7IDE0OjIx
IC0gMTQ6MTE2IH0KIGV2YWwgeyAxOjEgLSAxOjU2IH0KLWZ1bmN0aW9uICJmMyIgeyAxOToyMiAt
IDMxOjUgfQotZnVuY3Rpb24gImYzYSIgeyAyMToyNCAtIDI5OjkgfQotZnVuY3Rpb24gImYzYiIg
eyAyMzoyOCAtIDI3OjEzIH0KLWV2YWwgeyAxOjEgLSAxOjU2IH0KLWZ1bmN0aW9uICJmNCIgeyAz
NDoyMiAtIDM0OjcxIH0KLWZ1bmN0aW9uICJmNGEiIHsgMzQ6NDkgLSAzNDo1MCB9Ci1mdW5jdGlv
biAiZjUiIHsgMzY6MjIgLSAzNjoxNTEgfQotZnVuY3Rpb24gImY1YSIgeyAzNjo0OSAtIDM2OjE0
MSB9Ci1ldmFsIHsgMToxIC0gMTo1NiB9Ci1mdW5jdGlvbiAiZjYiIHsgMzg6MjIgLSAzODoxODkg
fQotZnVuY3Rpb24gImY2YSIgeyAzODo0OSAtIDM4OjE3OSB9Ci1mdW5jdGlvbiAiZjZiIiB7IDM4
Ojc3IC0gMzg6MTY5IH0KK2Z1bmN0aW9uICJmMyIgeyAxOToxNiAtIDMxOjUgfQorZnVuY3Rpb24g
ImYzYSIgeyAyMToyMSAtIDI5OjkgfQorZnVuY3Rpb24gImYzYiIgeyAyMzoyNSAtIDI3OjEzIH0K
K2V2YWwgeyAxOjEgLSAxOjU2IH0KK2Z1bmN0aW9uICJmNCIgeyAzNDoxNiAtIDM0OjcxIH0KK2Z1
bmN0aW9uICJmNGEiIHsgMzQ6NDYgLSAzNDo1MCB9CitmdW5jdGlvbiAiZjUiIHsgMzY6MTYgLSAz
NjoxNTEgfQorZnVuY3Rpb24gImY1YSIgeyAzNjo0NiAtIDM2OjE0MSB9CitldmFsIHsgMToxIC0g
MTo1NiB9CitmdW5jdGlvbiAiZjYiIHsgMzg6MTYgLSAzODoxODkgfQorZnVuY3Rpb24gImY2YSIg
eyAzODo0NiAtIDM4OjE3OSB9CitmdW5jdGlvbiAiZjZiIiB7IDM4Ojc0IC0gMzg6MTY5IH0KIGV2
YWwgeyAxOjEgLSAxOjU2IH0KIAogICBJbmRlbnRlZCBGdW5jdGlvbnMgRGVjbGFyYXRpb25zIGlu
IGEgZnVuY3Rpb246Ci1mdW5jdGlvbiAiZmkxIiB7IDQzOjI3IC0gNDM6MTE5IH0KK2Z1bmN0aW9u
ICJmaTEiIHsgNDM6MjEgLSA0MzoxMTkgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24g
ImZpMiIgeyA0NjoyNyAtIDUwOjkgfQotZnVuY3Rpb24gImZpMmEiIHsgNDg6MjkgLSA0ODoxMjIg
fQorZnVuY3Rpb24gImZpMiIgeyA0NjoyMSAtIDUwOjkgfQorZnVuY3Rpb24gImZpMmEiIHsgNDg6
MjYgLSA0ODoxMjIgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gImZpMyIgeyA1Mzoy
NyAtIDY1OjkgfQotZnVuY3Rpb24gImZpM2EiIHsgNTU6MjkgLSA2MzoxMyB9Ci1mdW5jdGlvbiAi
ZmkzYiIgeyA1NzozMyAtIDYxOjE3IH0KLWV2YWwgeyAxOjEgLSAxOjU2IH0KLWZ1bmN0aW9uICJm
aTQiIHsgNjg6MjcgLSA2ODo4MCB9Ci1mdW5jdGlvbiAiZmk0YSIgeyA2ODo1NiAtIDY4OjU3IH0K
LWZ1bmN0aW9uICJmaTUiIHsgNzA6MjcgLSA3MDoxNjAgfQotZnVuY3Rpb24gImZpNWEiIHsgNzA6
NTYgLSA3MDoxNDkgfQotZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gImZpNiIgeyA3Mjoy
NyAtIDcyOjIwMSB9Ci1mdW5jdGlvbiAiZmk2YSIgeyA3Mjo1NiAtIDcyOjE5MCB9Ci1mdW5jdGlv
biAiZmk2YiIgeyA3Mjo4NiAtIDcyOjE3OSB9CitmdW5jdGlvbiAiZmkzIiB7IDUzOjIxIC0gNjU6
OSB9CitmdW5jdGlvbiAiZmkzYSIgeyA1NToyNiAtIDYzOjEzIH0KK2Z1bmN0aW9uICJmaTNiIiB7
IDU3OjMwIC0gNjE6MTcgfQorZXZhbCB7IDE6MSAtIDE6NTYgfQorZnVuY3Rpb24gImZpNCIgeyA2
ODoyMSAtIDY4OjgwIH0KK2Z1bmN0aW9uICJmaTRhIiB7IDY4OjUzIC0gNjg6NTcgfQorZnVuY3Rp
b24gImZpNSIgeyA3MDoyMSAtIDcwOjE2MCB9CitmdW5jdGlvbiAiZmk1YSIgeyA3MDo1MyAtIDcw
OjE0OSB9CitldmFsIHsgMToxIC0gMTo1NiB9CitmdW5jdGlvbiAiZmk2IiB7IDcyOjIxIC0gNzI6
MjAxIH0KK2Z1bmN0aW9uICJmaTZhIiB7IDcyOjUzIC0gNzI6MTkwIH0KK2Z1bmN0aW9uICJmaTZi
IiB7IDcyOjgzIC0gNzI6MTc5IH0KIGV2YWwgeyAxOjEgLSAxOjU2IH0KIAogICBGdW5jdGlvbnMg
RXhwcmVzc2lvbnMgaW4gYSBmdW5jdGlvbjoKLWZ1bmN0aW9uICJ4MSIgeyA3NzoyOCAtIDc3OjEx
OSB9CitmdW5jdGlvbiAieDEiIHsgNzc6MjIgLSA3NzoxMTkgfQogZXZhbCB7IDE6MSAtIDE6NTYg
fQotZnVuY3Rpb24gIngyIiB7IDgwOjI4IC0gODQ6NSB9Ci1mdW5jdGlvbiAieDJhIiB7IDgyOjMw
IC0gODI6MTIyIH0KK2Z1bmN0aW9uICJ4MiIgeyA4MDoyMiAtIDg0OjUgfQorZnVuY3Rpb24gIngy
YSIgeyA4MjoyNyAtIDgyOjEyMiB9CiBldmFsIHsgMToxIC0gMTo1NiB9Ci1mdW5jdGlvbiAieDMi
IHsgODc6MjggLSA5OTo1IH0KLWZ1bmN0aW9uICJ4M2EiIHsgODk6MzAgLSA5Nzo5IH0KLWZ1bmN0
aW9uICJ4M2IiIHsgOTE6MzQgLSA5NToxMyB9Ci1ldmFsIHsgMToxIC0gMTo1NiB9Ci1mdW5jdGlv
biAieDQiIHsgMTAyOjI4IC0gMTAyOjgzIH0KLWZ1bmN0aW9uICJ4NGEiIHsgMTAyOjYxIC0gMTAy
OjYyIH0KLWZ1bmN0aW9uICJ4NSIgeyAxMDQ6MjggLSAxMDQ6MTYzIH0KLWZ1bmN0aW9uICJ4NWEi
IHsgMTA0OjYxIC0gMTA0OjE1MyB9Ci1ldmFsIHsgMToxIC0gMTo1NiB9Ci1mdW5jdGlvbiAieDYi
IHsgMTA2OjI4IC0gMTA2OjIwNyB9Ci1mdW5jdGlvbiAieDZhIiB7IDEwNjo2MSAtIDEwNjoxOTcg
fQotZnVuY3Rpb24gIng2YiIgeyAxMDY6OTUgLSAxMDY6MTg3IH0KK2Z1bmN0aW9uICJ4MyIgeyA4
NzoyMiAtIDk5OjUgfQorZnVuY3Rpb24gIngzYSIgeyA4OToyNyAtIDk3OjkgfQorZnVuY3Rpb24g
IngzYiIgeyA5MTozMSAtIDk1OjEzIH0KK2V2YWwgeyAxOjEgLSAxOjU2IH0KK2Z1bmN0aW9uICJ4
NCIgeyAxMDI6MjIgLSAxMDI6ODMgfQorZnVuY3Rpb24gIng0YSIgeyAxMDI6NTggLSAxMDI6NjIg
fQorZnVuY3Rpb24gIng1IiB7IDEwNDoyMiAtIDEwNDoxNjMgfQorZnVuY3Rpb24gIng1YSIgeyAx
MDQ6NTggLSAxMDQ6MTUzIH0KK2V2YWwgeyAxOjEgLSAxOjU2IH0KK2Z1bmN0aW9uICJ4NiIgeyAx
MDY6MjIgLSAxMDY6MjA3IH0KK2Z1bmN0aW9uICJ4NmEiIHsgMTA2OjU4IC0gMTA2OjE5NyB9Citm
dW5jdGlvbiAieDZiIiB7IDEwNjo5MiAtIDEwNjoxODcgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQog
CiAgIEluZGVudGVkIEZ1bmN0aW9ucyBFeHByZXNzaW9ucyBpbiBhIGZ1bmN0aW9uOgotZnVuY3Rp
b24gInhpMSIgeyAxMTE6MzMgLSAxMTE6MTI1IH0KK2Z1bmN0aW9uICJ4aTEiIHsgMTExOjI3IC0g
MTExOjEyNSB9CiBldmFsIHsgMToxIC0gMTo1NiB9Ci1mdW5jdGlvbiAieGkyIiB7IDExNDozMyAt
IDExODo5IH0KLWZ1bmN0aW9uICJ4aTJhIiB7IDExNjozNSAtIDExNjoxMjggfQorZnVuY3Rpb24g
InhpMiIgeyAxMTQ6MjcgLSAxMTg6OSB9CitmdW5jdGlvbiAieGkyYSIgeyAxMTY6MzIgLSAxMTY6
MTI4IH0KIGV2YWwgeyAxOjEgLSAxOjU2IH0KLWZ1bmN0aW9uICJ4aTMiIHsgMTIxOjMzIC0gMTMz
OjkgfQotZnVuY3Rpb24gInhpM2EiIHsgMTIzOjM1IC0gMTMxOjEzIH0KLWZ1bmN0aW9uICJ4aTNi
IiB7IDEyNTozOSAtIDEyOToxNyB9Ci1ldmFsIHsgMToxIC0gMTo1NiB9Ci1mdW5jdGlvbiAieGk0
IiB7IDEzNjozMyAtIDEzNjo5MiB9Ci1mdW5jdGlvbiAieGk0YSIgeyAxMzY6NjggLSAxMzY6Njkg
fQotZnVuY3Rpb24gInhpNSIgeyAxMzg6MzMgLSAxMzg6MTcyIH0KLWZ1bmN0aW9uICJ4aTVhIiB7
IDEzODo2OCAtIDEzODoxNjEgfQotZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gInhpNiIg
eyAxNDA6MzMgLSAxNDA6MjE5IH0KLWZ1bmN0aW9uICJ4aTZhIiB7IDE0MDo2OCAtIDE0MDoyMDgg
fQotZnVuY3Rpb24gInhpNmIiIHsgMTQwOjEwNCAtIDE0MDoxOTcgfQorZnVuY3Rpb24gInhpMyIg
eyAxMjE6MjcgLSAxMzM6OSB9CitmdW5jdGlvbiAieGkzYSIgeyAxMjM6MzIgLSAxMzE6MTMgfQor
ZnVuY3Rpb24gInhpM2IiIHsgMTI1OjM2IC0gMTI5OjE3IH0KK2V2YWwgeyAxOjEgLSAxOjU2IH0K
K2Z1bmN0aW9uICJ4aTQiIHsgMTM2OjI3IC0gMTM2OjkyIH0KK2Z1bmN0aW9uICJ4aTRhIiB7IDEz
Njo2NSAtIDEzNjo2OSB9CitmdW5jdGlvbiAieGk1IiB7IDEzODoyNyAtIDEzODoxNzIgfQorZnVu
Y3Rpb24gInhpNWEiIHsgMTM4OjY1IC0gMTM4OjE2MSB9CitldmFsIHsgMToxIC0gMTo1NiB9Citm
dW5jdGlvbiAieGk2IiB7IDE0MDoyNyAtIDE0MDoyMTkgfQorZnVuY3Rpb24gInhpNmEiIHsgMTQw
OjY1IC0gMTQwOjIwOCB9CitmdW5jdGlvbiAieGk2YiIgeyAxNDA6MTAxIC0gMTQwOjE5NyB9CiBl
dmFsIHsgMToxIC0gMTo1NiB9CiAKICAgQW5vbnltb3VzIEZ1bmN0aW9uIERlY2xhcmF0aW9uIGlu
IGEgZnVuY3Rpb246Ci1mdW5jdGlvbiAiIiB7IDE0Njo1OCAtIDE1MTo1IH0KK2Z1bmN0aW9uICIi
IHsgMTQ2OjUyIC0gMTUxOjUgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQogCiAgIEdsb2JhbCBldmFs
OgogZXZhbCB7IDE6MSAtIDE6NTYgfQogCiAgIEdsb2JhbCBGdW5jdGlvbnMgRGVjbGFyYXRpb25z
OgotZnVuY3Rpb24gImdmMSIgeyAxNjE6MTkgLSAxNjE6MTExIH0KK2Z1bmN0aW9uICJnZjEiIHsg
MTYxOjEzIC0gMTYxOjExMSB9CiBldmFsIHsgMToxIC0gMTo1NiB9Ci1mdW5jdGlvbiAiZ2YyIiB7
IDE2NDoxOSAtIDE2ODoxIH0KLWZ1bmN0aW9uICJnZjJhIiB7IDE2NjoyMSAtIDE2NjoxMTQgfQor
ZnVuY3Rpb24gImdmMiIgeyAxNjQ6MTMgLSAxNjg6MSB9CitmdW5jdGlvbiAiZ2YyYSIgeyAxNjY6
MTggLSAxNjY6MTE0IH0KIGV2YWwgeyAxOjEgLSAxOjU2IH0KLWZ1bmN0aW9uICJnZjMiIHsgMTcx
OjE5IC0gMTgzOjEgfQotZnVuY3Rpb24gImdmM2EiIHsgMTczOjIxIC0gMTgxOjUgfQotZnVuY3Rp
b24gImdmM2IiIHsgMTc1OjI1IC0gMTc5OjkgfQotZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rp
b24gImdmNCIgeyAxODY6MTkgLSAxODY6NzIgfQotZnVuY3Rpb24gImdmNGEiIHsgMTg2OjQ4IC0g
MTg2OjQ5IH0KLWZ1bmN0aW9uICJnZjUiIHsgMTg4OjE5IC0gMTg4OjE1MiB9Ci1mdW5jdGlvbiAi
Z2Y1YSIgeyAxODg6NDggLSAxODg6MTQxIH0KLWV2YWwgeyAxOjEgLSAxOjU2IH0KLWZ1bmN0aW9u
ICJnZjYiIHsgMTkwOjE5IC0gMTkwOjE5MyB9Ci1mdW5jdGlvbiAiZ2Y2YSIgeyAxOTA6NDggLSAx
OTA6MTgyIH0KLWZ1bmN0aW9uICJnZjZiIiB7IDE5MDo3OCAtIDE5MDoxNzEgfQorZnVuY3Rpb24g
ImdmMyIgeyAxNzE6MTMgLSAxODM6MSB9CitmdW5jdGlvbiAiZ2YzYSIgeyAxNzM6MTggLSAxODE6
NSB9CitmdW5jdGlvbiAiZ2YzYiIgeyAxNzU6MjIgLSAxNzk6OSB9CitldmFsIHsgMToxIC0gMTo1
NiB9CitmdW5jdGlvbiAiZ2Y0IiB7IDE4NjoxMyAtIDE4Njo3MiB9CitmdW5jdGlvbiAiZ2Y0YSIg
eyAxODY6NDUgLSAxODY6NDkgfQorZnVuY3Rpb24gImdmNSIgeyAxODg6MTMgLSAxODg6MTUyIH0K
K2Z1bmN0aW9uICJnZjVhIiB7IDE4ODo0NSAtIDE4ODoxNDEgfQorZXZhbCB7IDE6MSAtIDE6NTYg
fQorZnVuY3Rpb24gImdmNiIgeyAxOTA6MTMgLSAxOTA6MTkzIH0KK2Z1bmN0aW9uICJnZjZhIiB7
IDE5MDo0NSAtIDE5MDoxODIgfQorZnVuY3Rpb24gImdmNmIiIHsgMTkwOjc1IC0gMTkwOjE3MSB9
CiBldmFsIHsgMToxIC0gMTo1NiB9CiAKICAgSW5kZW50ZWQgR2xvYmFsIEZ1bmN0aW9ucyBEZWNs
YXJhdGlvbnM6Ci1mdW5jdGlvbiAiZ2ZpMSIgeyAxOTU6MjQgLSAxOTU6MTE3IH0KK2Z1bmN0aW9u
ICJnZmkxIiB7IDE5NToxOCAtIDE5NToxMTcgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rp
b24gImdmaTIiIHsgMTk4OjI0IC0gMjAyOjUgfQotZnVuY3Rpb24gImdmaTJhIiB7IDIwMDoyNiAt
IDIwMDoxMjAgfQorZnVuY3Rpb24gImdmaTIiIHsgMTk4OjE4IC0gMjAyOjUgfQorZnVuY3Rpb24g
ImdmaTJhIiB7IDIwMDoyMyAtIDIwMDoxMjAgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rp
b24gImdmaTMiIHsgMjA1OjI0IC0gMjE3OjUgfQotZnVuY3Rpb24gImdmaTNhIiB7IDIwNzoyNiAt
IDIxNTo5IH0KLWZ1bmN0aW9uICJnZmkzYiIgeyAyMDk6MzAgLSAyMTM6MTMgfQotZXZhbCB7IDE6
MSAtIDE6NTYgfQotZnVuY3Rpb24gImdmaTQiIHsgMjIwOjI0IC0gMjIwOjgxIH0KLWZ1bmN0aW9u
ICJnZmk0YSIgeyAyMjA6NTUgLSAyMjA6NTYgfQotZnVuY3Rpb24gImdmaTUiIHsgMjIyOjI0IC0g
MjIyOjE2MSB9Ci1mdW5jdGlvbiAiZ2ZpNWEiIHsgMjIyOjU1IC0gMjIyOjE0OSB9Ci1ldmFsIHsg
MToxIC0gMTo1NiB9Ci1mdW5jdGlvbiAiZ2ZpNiIgeyAyMjQ6MjQgLSAyMjQ6MjA1IH0KLWZ1bmN0
aW9uICJnZmk2YSIgeyAyMjQ6NTUgLSAyMjQ6MTkzIH0KLWZ1bmN0aW9uICJnZmk2YiIgeyAyMjQ6
ODcgLSAyMjQ6MTgxIH0KK2Z1bmN0aW9uICJnZmkzIiB7IDIwNToxOCAtIDIxNzo1IH0KK2Z1bmN0
aW9uICJnZmkzYSIgeyAyMDc6MjMgLSAyMTU6OSB9CitmdW5jdGlvbiAiZ2ZpM2IiIHsgMjA5OjI3
IC0gMjEzOjEzIH0KK2V2YWwgeyAxOjEgLSAxOjU2IH0KK2Z1bmN0aW9uICJnZmk0IiB7IDIyMDox
OCAtIDIyMDo4MSB9CitmdW5jdGlvbiAiZ2ZpNGEiIHsgMjIwOjUyIC0gMjIwOjU2IH0KK2Z1bmN0
aW9uICJnZmk1IiB7IDIyMjoxOCAtIDIyMjoxNjEgfQorZnVuY3Rpb24gImdmaTVhIiB7IDIyMjo1
MiAtIDIyMjoxNDkgfQorZXZhbCB7IDE6MSAtIDE6NTYgfQorZnVuY3Rpb24gImdmaTYiIHsgMjI0
OjE4IC0gMjI0OjIwNSB9CitmdW5jdGlvbiAiZ2ZpNmEiIHsgMjI0OjUyIC0gMjI0OjE5MyB9Citm
dW5jdGlvbiAiZ2ZpNmIiIHsgMjI0Ojg0IC0gMjI0OjE4MSB9CiBldmFsIHsgMToxIC0gMTo1NiB9
CiAKICAgR2xvYmFsIEZ1bmN0aW9ucyBFeHByZXNzaW9uczoKLWZ1bmN0aW9uICJneDEiIHsgMjI5
OjI1IC0gMjI5OjExNyB9CitmdW5jdGlvbiAiZ3gxIiB7IDIyOToxOSAtIDIyOToxMTcgfQogZXZh
bCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gImd4MiIgeyAyMzI6MjUgLSAyMzY6MSB9Ci1mdW5j
dGlvbiAiZ3gyYSIgeyAyMzQ6MjcgLSAyMzQ6MTIwIH0KK2Z1bmN0aW9uICJneDIiIHsgMjMyOjE5
IC0gMjM2OjEgfQorZnVuY3Rpb24gImd4MmEiIHsgMjM0OjI0IC0gMjM0OjEyMCB9CiBldmFsIHsg
MToxIC0gMTo1NiB9Ci1mdW5jdGlvbiAiZ3gzIiB7IDIzOToyNSAtIDI1MToxIH0KLWZ1bmN0aW9u
ICJneDNhIiB7IDI0MToyNyAtIDI0OTo1IH0KLWZ1bmN0aW9uICJneDNiIiB7IDI0MzozMSAtIDI0
Nzo5IH0KLWV2YWwgeyAxOjEgLSAxOjU2IH0KLWZ1bmN0aW9uICJneDQiIHsgMjU0OjI1IC0gMjU0
Ojg0IH0KLWZ1bmN0aW9uICJneDRhIiB7IDI1NDo2MCAtIDI1NDo2MSB9Ci1mdW5jdGlvbiAiZ3g1
IiB7IDI1NjoyNSAtIDI1NjoxNjQgfQotZnVuY3Rpb24gImd4NWEiIHsgMjU2OjYwIC0gMjU2OjE1
MyB9Ci1ldmFsIHsgMToxIC0gMTo1NiB9Ci1mdW5jdGlvbiAiZ3g2IiB7IDI1ODoyNSAtIDI1ODoy
MTEgfQotZnVuY3Rpb24gImd4NmEiIHsgMjU4OjYwIC0gMjU4OjIwMCB9Ci1mdW5jdGlvbiAiZ3g2
YiIgeyAyNTg6OTYgLSAyNTg6MTg5IH0KK2Z1bmN0aW9uICJneDMiIHsgMjM5OjE5IC0gMjUxOjEg
fQorZnVuY3Rpb24gImd4M2EiIHsgMjQxOjI0IC0gMjQ5OjUgfQorZnVuY3Rpb24gImd4M2IiIHsg
MjQzOjI4IC0gMjQ3OjkgfQorZXZhbCB7IDE6MSAtIDE6NTYgfQorZnVuY3Rpb24gImd4NCIgeyAy
NTQ6MTkgLSAyNTQ6ODQgfQorZnVuY3Rpb24gImd4NGEiIHsgMjU0OjU3IC0gMjU0OjYxIH0KK2Z1
bmN0aW9uICJneDUiIHsgMjU2OjE5IC0gMjU2OjE2NCB9CitmdW5jdGlvbiAiZ3g1YSIgeyAyNTY6
NTcgLSAyNTY6MTUzIH0KK2V2YWwgeyAxOjEgLSAxOjU2IH0KK2Z1bmN0aW9uICJneDYiIHsgMjU4
OjE5IC0gMjU4OjIxMSB9CitmdW5jdGlvbiAiZ3g2YSIgeyAyNTg6NTcgLSAyNTg6MjAwIH0KK2Z1
bmN0aW9uICJneDZiIiB7IDI1ODo5MyAtIDI1ODoxODkgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQog
CiAgIEluZGVudGVkIEZ1bmN0aW9ucyBEZWNsYXJhdGlvbnM6Ci1mdW5jdGlvbiAiZ3hpMSIgeyAy
NjM6MzAgLSAyNjM6MTIzIH0KK2Z1bmN0aW9uICJneGkxIiB7IDI2MzoyNCAtIDI2MzoxMjMgfQog
ZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gImd4aTIiIHsgMjY2OjMwIC0gMjcwOjUgfQot
ZnVuY3Rpb24gImd4aTJhIiB7IDI2ODozMiAtIDI2ODoxMjYgfQorZnVuY3Rpb24gImd4aTIiIHsg
MjY2OjI0IC0gMjcwOjUgfQorZnVuY3Rpb24gImd4aTJhIiB7IDI2ODoyOSAtIDI2ODoxMjYgfQog
ZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gImd4aTMiIHsgMjczOjMwIC0gMjg1OjUgfQot
ZnVuY3Rpb24gImd4aTNhIiB7IDI3NTozMiAtIDI4Mzo5IH0KLWZ1bmN0aW9uICJneGkzYiIgeyAy
Nzc6MzYgLSAyODE6MTMgfQotZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gImd4aTQiIHsg
Mjg4OjMwIC0gMjg4OjkzIH0KLWZ1bmN0aW9uICJneGk0YSIgeyAyODg6NjcgLSAyODg6NjggfQot
ZnVuY3Rpb24gImd4aTUiIHsgMjkwOjMwIC0gMjkwOjE3MyB9Ci1mdW5jdGlvbiAiZ3hpNWEiIHsg
MjkwOjY3IC0gMjkwOjE2MSB9Ci1ldmFsIHsgMToxIC0gMTo1NiB9Ci1mdW5jdGlvbiAiZ3hpNiIg
eyAyOTI6MzAgLSAyOTI6MjIzIH0KLWZ1bmN0aW9uICJneGk2YSIgeyAyOTI6NjcgLSAyOTI6MjEx
IH0KLWZ1bmN0aW9uICJneGk2YiIgeyAyOTI6MTA1IC0gMjkyOjE5OSB9CitmdW5jdGlvbiAiZ3hp
MyIgeyAyNzM6MjQgLSAyODU6NSB9CitmdW5jdGlvbiAiZ3hpM2EiIHsgMjc1OjI5IC0gMjgzOjkg
fQorZnVuY3Rpb24gImd4aTNiIiB7IDI3NzozMyAtIDI4MToxMyB9CitldmFsIHsgMToxIC0gMTo1
NiB9CitmdW5jdGlvbiAiZ3hpNCIgeyAyODg6MjQgLSAyODg6OTMgfQorZnVuY3Rpb24gImd4aTRh
IiB7IDI4ODo2NCAtIDI4ODo2OCB9CitmdW5jdGlvbiAiZ3hpNSIgeyAyOTA6MjQgLSAyOTA6MTcz
IH0KK2Z1bmN0aW9uICJneGk1YSIgeyAyOTA6NjQgLSAyOTA6MTYxIH0KK2V2YWwgeyAxOjEgLSAx
OjU2IH0KK2Z1bmN0aW9uICJneGk2IiB7IDI5MjoyNCAtIDI5MjoyMjMgfQorZnVuY3Rpb24gImd4
aTZhIiB7IDI5Mjo2NCAtIDI5MjoyMTEgfQorZnVuY3Rpb24gImd4aTZiIiB7IDI5MjoxMDIgLSAy
OTI6MTk5IH0KIGV2YWwgeyAxOjEgLSAxOjU2IH0KIAogICBBbm9ueW1vdXMgR2xvYmFsIEZ1bmN0
aW9uIERlY2xhcmF0aW9uczoKLWZ1bmN0aW9uICIiIHsgMjk5OjU2IC0gMzA0OjEgfQorZnVuY3Rp
b24gIiIgeyAyOTk6NTAgLSAzMDQ6MSB9CiBldmFsIHsgMToxIC0gMTo1NiB9CiAKICAgRnVuY3Rp
b24gRGVjbGFyYXRpb25zIGluIGFuIGV2YWw6CiBldmFsIHsgMToxIC0gMTY6NyB9Ci1mdW5jdGlv
biAiZWYxIiB7IDM6MjAgLSAxNDo1IH0KLWZ1bmN0aW9uICJlZjFhIiB7IDU6MjUgLSAxMjo5IH0K
LWZ1bmN0aW9uICJlZjFiIiB7IDc6MjkgLSAxMDoxMyB9CitmdW5jdGlvbiAiZWYxIiB7IDM6MTcg
LSAxNDo1IH0KK2Z1bmN0aW9uICJlZjFhIiB7IDU6MjIgLSAxMjo5IH0KK2Z1bmN0aW9uICJlZjFi
IiB7IDc6MjYgLSAxMDoxMyB9CiBldmFsIHsgMToxIC0gMTo1NiB9CiBldmFsIHsgMToxIC0gMToy
MjUgfQotZnVuY3Rpb24gImVmMiIgeyAxOjU5IC0gMToyMTcgfQotZnVuY3Rpb24gImVmMmEiIHsg
MTo4OCAtIDE6MjA3IH0KLWZ1bmN0aW9uICJlZjJiIiB7IDE6MTE4IC0gMToxOTcgfQorZnVuY3Rp
b24gImVmMiIgeyAxOjU2IC0gMToyMTcgfQorZnVuY3Rpb24gImVmMmEiIHsgMTo4NSAtIDE6MjA3
IH0KK2Z1bmN0aW9uICJlZjJiIiB7IDE6MTE1IC0gMToxOTcgfQogZXZhbCB7IDE6MSAtIDE6NTYg
fQogZXZhbCB7IDE6MSAtIDE3OjggfQotZnVuY3Rpb24gImVmaTEiIHsgNDoyMSAtIDE1OjUgfQot
ZnVuY3Rpb24gImVmaTFhIiB7IDY6MjYgLSAxMzo5IH0KLWZ1bmN0aW9uICJlZmkxYiIgeyA4OjMw
IC0gMTE6MTMgfQorZnVuY3Rpb24gImVmaTEiIHsgNDoxOCAtIDE1OjUgfQorZnVuY3Rpb24gImVm
aTFhIiB7IDY6MjMgLSAxMzo5IH0KK2Z1bmN0aW9uICJlZmkxYiIgeyA4OjI3IC0gMTE6MTMgfQog
ZXZhbCB7IDE6MSAtIDE6NTYgfQogZXZhbCB7IDE6MSAtIDE6MjM0IH0KLWZ1bmN0aW9uICJlZmky
IiB7IDE6NjAgLSAxOjIyNSB9Ci1mdW5jdGlvbiAiZWZpMmEiIHsgMTo5MSAtIDE6MjE0IH0KLWZ1
bmN0aW9uICJlZmkyYiIgeyAxOjEyMyAtIDE6MjAzIH0KK2Z1bmN0aW9uICJlZmkyIiB7IDE6NTcg
LSAxOjIyNSB9CitmdW5jdGlvbiAiZWZpMmEiIHsgMTo4OCAtIDE6MjE0IH0KK2Z1bmN0aW9uICJl
ZmkyYiIgeyAxOjEyMCAtIDE6MjAzIH0KIGV2YWwgeyAxOjEgLSAxOjU2IH0KIAogICBGdW5jdGlv
biBFeHByZXNzaW9ucyBpbiBhbiBldmFsOgogZXZhbCB7IDE6MSAtIDE2OjcgfQotZnVuY3Rpb24g
ImV4MSIgeyAzOjI2IC0gMTQ6NSB9Ci1mdW5jdGlvbiAiZXgxYSIgeyA1OjMxIC0gMTI6OSB9Ci1m
dW5jdGlvbiAiZXgxYiIgeyA3OjM1IC0gMTA6MTMgfQorZnVuY3Rpb24gImV4MSIgeyAzOjIzIC0g
MTQ6NSB9CitmdW5jdGlvbiAiZXgxYSIgeyA1OjI4IC0gMTI6OSB9CitmdW5jdGlvbiAiZXgxYiIg
eyA3OjMyIC0gMTA6MTMgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQogZXZhbCB7IDE6MSAtIDE6MjQ2
IH0KLWZ1bmN0aW9uICJleDIiIHsgMTo2NSAtIDE6MjM3IH0KLWZ1bmN0aW9uICJleDJhIiB7IDE6
MTAwIC0gMToyMjYgfQotZnVuY3Rpb24gImV4MmIiIHsgMToxMzYgLSAxOjIxNSB9CitmdW5jdGlv
biAiZXgyIiB7IDE6NjIgLSAxOjIzNyB9CitmdW5jdGlvbiAiZXgyYSIgeyAxOjk3IC0gMToyMjYg
fQorZnVuY3Rpb24gImV4MmIiIHsgMToxMzMgLSAxOjIxNSB9CiBldmFsIHsgMToxIC0gMTo1NiB9
CiBldmFsIHsgMToxIC0gMTc6OCB9Ci1mdW5jdGlvbiAiZXhpMSIgeyA0OjI3IC0gMTU6NSB9Ci1m
dW5jdGlvbiAiZXhpMWEiIHsgNjozMiAtIDEzOjkgfQotZnVuY3Rpb24gImV4aTFiIiB7IDg6MzYg
LSAxMToxMyB9CitmdW5jdGlvbiAiZXhpMSIgeyA0OjI0IC0gMTU6NSB9CitmdW5jdGlvbiAiZXhp
MWEiIHsgNjoyOSAtIDEzOjkgfQorZnVuY3Rpb24gImV4aTFiIiB7IDg6MzMgLSAxMToxMyB9CiBl
dmFsIHsgMToxIC0gMTo1NiB9CiBldmFsIHsgMToxIC0gMToyNTUgfQotZnVuY3Rpb24gImV4aTIi
IHsgMTo2NiAtIDE6MjQ1IH0KLWZ1bmN0aW9uICJleGkyYSIgeyAxOjEwMyAtIDE6MjMzIH0KLWZ1
bmN0aW9uICJleGkyYiIgeyAxOjE0MSAtIDE6MjIxIH0KK2Z1bmN0aW9uICJleGkyIiB7IDE6NjMg
LSAxOjI0NSB9CitmdW5jdGlvbiAiZXhpMmEiIHsgMToxMDAgLSAxOjIzMyB9CitmdW5jdGlvbiAi
ZXhpMmIiIHsgMToxMzggLSAxOjIyMSB9CiBldmFsIHsgMToxIC0gMTo1NiB9CiAKICAgbmV3IEZ1
bmN0aW9uIE9iamVjdDoKLWZ1bmN0aW9uICJhbm9ueW1vdXMiIHsgMToyNyAtIDI6MjI4IH0KLWZ1
bmN0aW9uICJuZjFhIiB7IDI6NjAgLSAyOjIxOSB9Ci1mdW5jdGlvbiAibmYxYiIgeyAyOjkwIC0g
MjoyMDkgfQotZnVuY3Rpb24gIm5mMWMiIHsgMjoxMjAgLSAyOjE5OSB9Ci1ldmFsIHsgMToxIC0g
MTo1NiB9Ci1mdW5jdGlvbiAiYW5vbnltb3VzIiB7IDE6MjcgLSAxODo4IH0KLWZ1bmN0aW9uICJu
ZjJhIiB7IDU6MjEgLSAxNjo1IH0KLWZ1bmN0aW9uICJuZjJiIiB7IDc6MjUgLSAxNDo5IH0KLWZ1
bmN0aW9uICJuZjJjIiB7IDk6MjkgLSAxMjoxMyB9Ci1ldmFsIHsgMToxIC0gMTo1NiB9Ci1mdW5j
dGlvbiAiYW5vbnltb3VzIiB7IDE6MjcgLSAyOjIyOCB9Ci1mdW5jdGlvbiAibmYxYSIgeyAyOjYw
IC0gMjoyMTkgfQotZnVuY3Rpb24gIm5mMWIiIHsgMjo5MCAtIDI6MjA5IH0KLWZ1bmN0aW9uICJu
ZjFjIiB7IDI6MTIwIC0gMjoxOTkgfQotZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gImFu
b255bW91cyIgeyAxOjI3IC0gMjoyMzcgfQotZnVuY3Rpb24gIm5maTFhIiB7IDI6NjEgLSAyOjIy
NyB9Ci1mdW5jdGlvbiAibmZpMWIiIHsgMjo5MyAtIDI6MjE2IH0KLWZ1bmN0aW9uICJuZmkxYyIg
eyAyOjEyNSAtIDI6MjA1IH0KLWV2YWwgeyAxOjEgLSAxOjU2IH0KLWZ1bmN0aW9uICJhbm9ueW1v
dXMiIHsgMToyNyAtIDE4OjggfQotZnVuY3Rpb24gIm5mMmEiIHsgNToyMSAtIDE2OjUgfQotZnVu
Y3Rpb24gIm5mMmIiIHsgNzoyNSAtIDE0OjkgfQotZnVuY3Rpb24gIm5mMmMiIHsgOToyOSAtIDEy
OjEzIH0KLWV2YWwgeyAxOjEgLSAxOjU2IH0KLWZ1bmN0aW9uICJhbm9ueW1vdXMiIHsgMToyNyAt
IDE4OjkgfQotZnVuY3Rpb24gIm5maTJhIiB7IDU6MjIgLSAxNjo1IH0KLWZ1bmN0aW9uICJuZmky
YiIgeyA3OjI2IC0gMTQ6OSB9Ci1mdW5jdGlvbiAibmZpMmMiIHsgOTozMCAtIDEyOjEzIH0KK2Z1
bmN0aW9uICJhbm9ueW1vdXMiIHsgMToyMCAtIDI6MjI4IH0KK2Z1bmN0aW9uICJuZjFhIiB7IDI6
NTcgLSAyOjIxOSB9CitmdW5jdGlvbiAibmYxYiIgeyAyOjg3IC0gMjoyMDkgfQorZnVuY3Rpb24g
Im5mMWMiIHsgMjoxMTcgLSAyOjE5OSB9CitldmFsIHsgMToxIC0gMTo1NiB9CitmdW5jdGlvbiAi
YW5vbnltb3VzIiB7IDE6MjAgLSAxODo4IH0KK2Z1bmN0aW9uICJuZjJhIiB7IDU6MTggLSAxNjo1
IH0KK2Z1bmN0aW9uICJuZjJiIiB7IDc6MjIgLSAxNDo5IH0KK2Z1bmN0aW9uICJuZjJjIiB7IDk6
MjYgLSAxMjoxMyB9CitldmFsIHsgMToxIC0gMTo1NiB9CitmdW5jdGlvbiAiYW5vbnltb3VzIiB7
IDE6MjAgLSAyOjIyOCB9CitmdW5jdGlvbiAibmYxYSIgeyAyOjU3IC0gMjoyMTkgfQorZnVuY3Rp
b24gIm5mMWIiIHsgMjo4NyAtIDI6MjA5IH0KK2Z1bmN0aW9uICJuZjFjIiB7IDI6MTE3IC0gMjox
OTkgfQorZXZhbCB7IDE6MSAtIDE6NTYgfQorZnVuY3Rpb24gImFub255bW91cyIgeyAxOjIwIC0g
MjoyMzcgfQorZnVuY3Rpb24gIm5maTFhIiB7IDI6NTggLSAyOjIyNyB9CitmdW5jdGlvbiAibmZp
MWIiIHsgMjo5MCAtIDI6MjE2IH0KK2Z1bmN0aW9uICJuZmkxYyIgeyAyOjEyMiAtIDI6MjA1IH0K
K2V2YWwgeyAxOjEgLSAxOjU2IH0KK2Z1bmN0aW9uICJhbm9ueW1vdXMiIHsgMToyMCAtIDE4Ojgg
fQorZnVuY3Rpb24gIm5mMmEiIHsgNToxOCAtIDE2OjUgfQorZnVuY3Rpb24gIm5mMmIiIHsgNzoy
MiAtIDE0OjkgfQorZnVuY3Rpb24gIm5mMmMiIHsgOToyNiAtIDEyOjEzIH0KK2V2YWwgeyAxOjEg
LSAxOjU2IH0KK2Z1bmN0aW9uICJhbm9ueW1vdXMiIHsgMToyMCAtIDE4OjkgfQorZnVuY3Rpb24g
Im5maTJhIiB7IDU6MTkgLSAxNjo1IH0KK2Z1bmN0aW9uICJuZmkyYiIgeyA3OjIzIC0gMTQ6OSB9
CitmdW5jdGlvbiAibmZpMmMiIHsgOToyNyAtIDEyOjEzIH0KIGV2YWwgeyAxOjEgLSAxOjU2IH0K
IAogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256933</attachid>
            <date>2015-07-16 15:18:02 -0700</date>
            <delta_ts>2015-07-16 17:05:27 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>194759</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg2OTEyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxMiBA
QAorMjAxNS0wNy0xNiAgU2FhbSBiYXJhdGkgIDxzYWFtYmFyYXRpMUBnbWFpbC5jb20+CisKKyAg
ICAgICAgRnVuY3Rpb24gcGFyYW1ldGVycyBzaG91bGQgYmUgcGFyc2VkIGluIHRoZSBzYW1lIHBh
cnNlciBhcmVuYSBhcyB0aGUgZnVuY3Rpb24gYm9keQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1OTk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBjaGFuZ2VzIGhvdyBmdW5jdGlvbnMg
YXJlIHBhcnNlZCBpbiBKU0MuIEEgZnVuY3Rpb24ncworICAgICAgICBwYXJhbWV0ZXJzIGFyZSBu
b3cgcGFyc2VkIGluIHRoZSBzYW1lIGFyZW5hIGFzIHRoZSBmdW5jdGlvbiBpdHNlbGYuCisgICAg
ICAgIFRoaXMgYWxsb3dzIHVzIHRvIGFyZW5hIGFsbG9jYXRlIGFsbCBkZXN0cnVjdHVyaW5nIEFT
VCBub2RlcyBhbmQKKyAgICAgICAgdGhlIEZ1bmN0aW9uUGFyYW1ldGVycyBub2RlLiBUaGlzIHdp
bGwgaGVscCBtYWtlIGltcGxlbWVudGluZyBFUzYKKyAgICAgICAgZGVmYXVsdCBwYXJhbWV0ZXIg
dmFsdWVzIHNhbmUuCisgCisgICAgICAgIEEgc291cmNlIGNvZGUgdGhhdCByZXByZXNlbnRzIGEg
ZnVuY3Rpb24gbm93IGluY2x1ZGVzIHRoZSB0ZXh0IG9mIHRoZSBmdW5jdGlvbidzIAorICAgICAg
ICBwYXJhbWV0ZXJzLiBUaGUgc3RhcnRpbmcgb2Zmc2V0IGlzIGF0IHRoZSBvcGVuaW5nIHBhcmVu
dGhlc2lzIG9mIHRoZSBwYXJhbWV0ZXIKKyAgICAgICAgbGlzdCBvciBhdCB0aGUgc3RhcnRpbmcg
Y2hhcmFjdGVyIG9mIHRoZSBpZGVudGlmaWVyIGZvciBhcnJvdyBmdW5jdGlvbnMgdGhhdAorICAg
ICAgICBoYXZlIHNpbmdsZSBhcmd1bWVudHMgYW5kIGRvbid0IHN0YXJ0IHdpdGggcGFyZW50aGVz
aXMuCisgCisgICAgICAgIEZvciBleGFtcGxlOgorIAorICAgICAgICAiZnVuY3Rpb24gKHBhcmFt
MSwgcGFyYW0yKSB7IC4uLiB9IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBe
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVGhpcyBvZmZzZXQgdXNlZCB0
byBiZSB0aGUgc3RhcnRpbmcgb2Zmc2V0IG9mIGEgZnVuY3Rpb24ncyBTb3VyY2VDb2RlCisgICAg
ICAgICAgICAgICAgICBeCisgICAgICAgICAgICAgICAgICB8IFRoaXMgaXMgdGhlIG5ldyBzdGFy
dGluZyBvZmZzZXQgZm9yIGEgZnVuY3Rpb24ncyBTb3VyY2VDb2RlLgorIAorICAgICAgICBUaGlz
IHJlcXVpcmVzIHVzIHRvIGNoYW5nZSBob3cgc29tZSBvZmZzZXRzIGFyZSBjYWxjdWxhdGVkCisg
ICAgICAgIGFuZCBhbHNvIHJlcXVpcmVzIHVzIHRvIHJlcG9ydCBzb21lIGRpZmZlcmVudCBsaW5l
IG51bWJlcnMgZm9yIGludGVybmFsCisgICAgICAgIG1ldHJpY3MgdGhhdCB1c2UgYSBTb3VyY2VD
b2RlJ3Mgc3RhcnRpbmcgbGluZSBhbmQgY29sdW1uIG51bWJlcnMuCisgCisgICAgICAgIFRoaXMg
cGF0Y2ggYWxzbyBkb2VzIGEgYml0IG9mIGNsZWFudXAgd2l0aCByZWdhcmRzIHRvIGhvdworICAg
ICAgICBmdW5jdGlvbnMgYXJlIHBhcnNlZCBpbiBnZW5lcmFsIChlc3BlY2lhbGx5IGFycm93IGZ1
bmN0aW9ucykuCisgICAgICAgIEl0IHJlbW92ZXMgc29tZSB1bm5lY2Vzc2FyeSAjaWZkZWZzIGFu
ZCB0aGUgbGlrZXMgZm9yIGFycm93CisgICAgICAgIHRvIG1ha2UgdGhpbmdzIGNsZWFyZXIgYW5k
IG1vcmUgZGVsaWJlcmF0ZS4KKworICAgICAgICAqIEFQSS9KU1NjcmlwdFJlZi5jcHA6CisgICAg
ICAgIChwYXJzZVNjcmlwdCk6CisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVz
LmNwcDoKKyAgICAgICAgKEpTQzo6QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxl
SW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAg
ICAgICAgKEpTQzo6Z2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OlVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSk6Cisg
ICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuKToK
KyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnBhcmFtZXRlckNvdW50
KTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAg
ICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpEZXN0
cnVjdHVyaW5nQXNzaWdubWVudE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OmFz
c2lnbkRlZmF1bHRWYWx1ZUlmVW5kZWZpbmVkKToKKyAgICAgICAgKEpTQzo6QXJyYXlQYXR0ZXJu
Tm9kZTo6Y29sbGVjdEJvdW5kSWRlbnRpZmllcnMpOgorICAgICAgICAoSlNDOjpEZXN0cnVjdHVy
aW5nUGF0dGVybk5vZGU6On5EZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUpOiBEZWxldGVkLgorICAg
ICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNy
ZWF0ZUNsYXNzRXhwcik6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmN0aW9u
RXhwcik6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmN0aW9uQm9keSk6Cisg
ICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUFycm93RnVuY3Rpb25FeHByKToKKyAgICAg
ICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eSk6CisgICAg
ICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUVsZW1lbnRMaXN0KToKKyAgICAgICAgKEpTQzo6
QVNUQnVpbGRlcjo6Y3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdCk6CisgICAgICAgIChKU0M6OkFT
VEJ1aWxkZXI6OmFwcGVuZFBhcmFtZXRlcik6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNy
ZWF0ZUNsYXVzZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUNsYXVzZUxpc3Qp
OgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGdW5jRGVjbFN0YXRlbWVudCk6Cisg
ICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZvckluTG9vcCk6CisgICAgICAgIChKU0M6
OkFTVEJ1aWxkZXI6OmNyZWF0ZUZvck9mTG9vcCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6
OmlzUmVzb2x2ZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZURlc3RydWN0dXJp
bmdBc3NpZ25tZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlQXJyYXlQYXR0
ZXJuKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6YXBwZW5kQXJyYXlQYXR0ZXJuU2tpcEVu
dHJ5KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6YXBwZW5kQXJyYXlQYXR0ZXJuRW50cnkp
OgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjphcHBlbmRBcnJheVBhdHRlcm5SZXN0RW50cnkp
OgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpmaW5pc2hBcnJheVBhdHRlcm4pOgorICAgICAg
ICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVPYmplY3RQYXR0ZXJuKToKKyAgICAgICAgKEpTQzo6
QVNUQnVpbGRlcjo6YXBwZW5kT2JqZWN0UGF0dGVybkVudHJ5KToKKyAgICAgICAgKEpTQzo6QVNU
QnVpbGRlcjo6Y3JlYXRlQmluZGluZ0xvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRl
cjo6c2V0RW5kT2Zmc2V0KToKKyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuY3BwOgorICAgICAgICAo
SlNDOjpMZXhlcjxUPjo6TGV4ZXIpOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6bmV4dFRva2Vu
SXNDb2xvbik6CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpzZXRUb2tlblBvc2l0aW9uKToKKyAg
ICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleCk6CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpjbGVh
cik6CisgICAgICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgIChKU0M6OkxleGVyOjpzZXRJ
c1JlcGFyc2luZ0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6TGV4ZXI6OmlzUmVwYXJzaW5nRnVu
Y3Rpb24pOgorICAgICAgICAoSlNDOjpMZXhlcjo6bGluZU51bWJlcik6CisgICAgICAgIChKU0M6
OkxleGVyOjpzZXRJc1JlcGFyc2luZyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkxleGVyOjpp
c1JlcGFyc2luZyk6IERlbGV0ZWQuCisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMu
aDoKKyAgICAgICAgKEpTQzo6VHJ5Tm9kZTo6VHJ5Tm9kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0
aW9uUGFyYW1ldGVyczo6RnVuY3Rpb25QYXJhbWV0ZXJzKToKKyAgICAgICAgKEpTQzo6RnVuY0V4
cHJOb2RlOjpGdW5jRXhwck5vZGUpOgorICAgICAgICAoSlNDOjpGdW5jRGVjbE5vZGU6OkZ1bmNE
ZWNsTm9kZSk6CisgICAgICAgIChKU0M6OkFycmF5UGF0dGVybk5vZGU6OkFycmF5UGF0dGVybk5v
ZGUpOgorICAgICAgICAoSlNDOjpPYmplY3RQYXR0ZXJuTm9kZTo6T2JqZWN0UGF0dGVybk5vZGUp
OgorICAgICAgICAoSlNDOjpCaW5kaW5nTm9kZTo6QmluZGluZ05vZGUpOgorICAgICAgICAoSlND
OjpEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5vZGU6OkRlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9k
ZSk6CisgICAgICAgIChKU0M6OlBhcmFtZXRlck5vZGU6OlBhcmFtZXRlck5vZGUpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpBcnJheVBhdHRlcm5Ob2RlOjpjcmVhdGUpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpPYmplY3RQYXR0ZXJuTm9kZTo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6QmluZGluZ05vZGU6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGFyc2VyL05v
ZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OlByb2dyYW1Ob2RlKToKKyAgICAg
ICAgKEpTQzo6RXZhbE5vZGU6OkV2YWxOb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Cb2R5
Tm9kZTo6RnVuY3Rpb25Cb2R5Tm9kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQm9keU5vZGU6
OmZpbmlzaFBhcnNpbmcpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbk5vZGU6OkZ1bmN0aW9uTm9k
ZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTm9kZTo6ZmluaXNoUGFyc2luZyk6CisgICAgICAg
IChKU0M6OkZ1bmN0aW9uUGFyYW1ldGVyczo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6RnVuY3Rpb25QYXJhbWV0ZXJzOjpGdW5jdGlvblBhcmFtZXRlcnMpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpGdW5jdGlvblBhcmFtZXRlcnM6On5GdW5jdGlvblBhcmFtZXRlcnMpOiBEZWxl
dGVkLgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpQcm9ncmFtTm9k
ZTo6c3RhcnRDb2x1bW4pOgorICAgICAgICAoSlNDOjpQcm9ncmFtTm9kZTo6ZW5kQ29sdW1uKToK
KyAgICAgICAgKEpTQzo6RXZhbE5vZGU6OnN0YXJ0Q29sdW1uKToKKyAgICAgICAgKEpTQzo6RXZh
bE5vZGU6OmVuZENvbHVtbik6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uUGFyYW1ldGVyczo6c2l6
ZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uUGFyYW1ldGVyczo6YXQpOgorICAgICAgICAoSlND
OjpGdW5jdGlvblBhcmFtZXRlcnM6OmFwcGVuZCk6CisgICAgICAgIChKU0M6OkZ1bmNFeHByTm9k
ZTo6Ym9keSk6CisgICAgICAgIChKU0M6OkRlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZTo6fkRlc3Ry
dWN0dXJpbmdQYXR0ZXJuTm9kZSk6CisgICAgICAgIChKU0M6OkRlc3RydWN0dXJpbmdQYXR0ZXJu
Tm9kZTo6aXNCaW5kaW5nTm9kZSk6CisgICAgICAgIChKU0M6OkRlc3RydWN0dXJpbmdQYXR0ZXJu
Tm9kZTo6ZW1pdERpcmVjdEJpbmRpbmcpOgorICAgICAgICAoSlNDOjpBcnJheVBhdHRlcm5Ob2Rl
OjphcHBlbmRJbmRleCk6CisgICAgICAgIChKU0M6Ok9iamVjdFBhdHRlcm5Ob2RlOjphcHBlbmRF
bnRyeSk6CisgICAgICAgIChKU0M6OkJpbmRpbmdOb2RlOjpib3VuZFByb3BlcnR5KToKKyAgICAg
ICAgKEpTQzo6QmluZGluZ05vZGU6OmRpdm90U3RhcnQpOgorICAgICAgICAoSlNDOjpCaW5kaW5n
Tm9kZTo6ZGl2b3RFbmQpOgorICAgICAgICAoSlNDOjpEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5v
ZGU6OmJpbmRpbmdzKToKKyAgICAgICAgKEpTQzo6RnVuY0RlY2xOb2RlOjpib2R5KToKKyAgICAg
ICAgKEpTQzo6UGFyYW1ldGVyTm9kZTo6cGF0dGVybik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OlBhcmFtZXRlck5vZGU6Om5leHRQYXJhbSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZ1bmN0
aW9uUGFyYW1ldGVyczo6cGF0dGVybnMpOiBEZWxldGVkLgorICAgICAgICAqIHBhcnNlci9QYXJz
ZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2VyKToKKyAgICAg
ICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46On5QYXJzZXIpOgorICAgICAgICAoSlNDOjpQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5
cGU+OjphbGxvd0F1dG9tYXRpY1NlbWljb2xvbik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZVNvdXJjZUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVy
VHlwZT46OmNyZWF0ZUJpbmRpbmdQYXR0ZXJuKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVy
VHlwZT46OnBhcnNlQXJyb3dGdW5jdGlvblNpbmdsZUV4cHJlc3Npb25Cb2R5U291cmNlRWxlbWVu
dHMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6dHJ5UGFyc2VEZXN0cnVjdHVy
aW5nUGF0dGVybkV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VTd2l0Y2hDbGF1c2VzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBh
cnNlU3dpdGNoRGVmYXVsdENsYXVzZSk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUJsb2NrU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46
OnBhcnNlU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNl
Rm9ybWFsUGFyYW1ldGVycyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZUZ1bmN0aW9uQm9keSk6CisgICAgICAgIChKU0M6OnN0cmluZ0ZvckZ1bmN0aW9uTW9kZSk6Cisg
ICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyk6
CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6Cisg
ICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24p
OgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyk6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVByaW1hcnlFeHByZXNzaW9uKToKKyAgICAg
ICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVzc2lvbik6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUFycm93RnVuY3Rpb25FeHByZXNzaW9u
KToKKyAgICAgICAgKEpTQzo6b3BlcmF0b3JTdHJpbmcpOgorICAgICAgICAoSlNDOjpQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VBcnJvd0Z1bmN0aW9uU2luZ2xlRXhwcmVzc2lvbkJvZHkpOiBEZWxl
dGVkLgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpw
b3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpsb2NhdGlv
bkJlZm9yZUxhc3RUb2tlbik6CisgICAgICAgIChKU0M6OlBhcnNlcjo6ZmluZENhY2hlZEZ1bmN0
aW9uSW5mbyk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6aXNvZlRva2VuKToKKyAgICAgICAgKEpT
Qzo6UGFyc2VyOjppc0VuZE9mQXJyb3dGdW5jdGlvbik6CisgICAgICAgIChKU0M6OlBhcnNlcjo6
aXNBcnJvd0Z1bmN0aW9uUGFyYW10ZXJzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjp0b2tlblN0
YXJ0KToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpnZXRMYWJlbCk6CisgICAgICAgIChKU0M6OlBh
cnNlcjo6YXV0b1NlbWlDb2xvbik6CisgICAgICAgIChKU0M6OlBhcnNlcjo6c2V0RW5kT2ZTdGF0
ZW1lbnQpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmNhblJlY3Vyc2UpOgorICAgICAgICAoSlND
OjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UpOgorICAgICAgICAoSlNDOjpwYXJzZSk6CisgICAg
ICAgICogcGFyc2VyL1BhcnNlckZ1bmN0aW9uSW5mby5oOgorICAgICAgICAqIHBhcnNlci9QYXJz
ZXJNb2Rlcy5oOgorICAgICAgICAoSlNDOjpmdW5jdGlvbk5hbWVJc0luU2NvcGUpOgorICAgICAg
ICAqIHBhcnNlci9Tb3VyY2VDb2RlLmg6CisgICAgICAgIChKU0M6Om1ha2VTb3VyY2UpOgorICAg
ICAgICAoSlNDOjpTb3VyY2VDb2RlOjpzdWJFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6U291
cmNlQ29kZTo6c3ViQXJyb3dFeHByZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYXJzZXIv
U291cmNlUHJvdmlkZXJDYWNoZS5oOgorICAgICAgICAoSlNDOjpTb3VyY2VQcm92aWRlckNhY2hl
OjpnZXQpOgorICAgICAgICAqIHBhcnNlci9Tb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oOgorICAg
ICAgICAoSlNDOjpTb3VyY2VQcm92aWRlckNhY2hlSXRlbTo6ZW5kRnVuY3Rpb25Ub2tlbik6Cisg
ICAgICAgIChKU0M6OlNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtOjp1c2VkVmFyaWFibGVzKToKKyAg
ICAgICAgKEpTQzo6U291cmNlUHJvdmlkZXJDYWNoZUl0ZW06OndyaXR0ZW5WYXJpYWJsZXMpOgor
ICAgICAgICAoSlNDOjpTb3VyY2VQcm92aWRlckNhY2hlSXRlbTo6U291cmNlUHJvdmlkZXJDYWNo
ZUl0ZW0pOgorICAgICAgICAqIHBhcnNlci9TeW50YXhDaGVja2VyLmg6CisgICAgICAgIChKU0M6
OlN5bnRheENoZWNrZXI6OlN5bnRheENoZWNrZXIpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVj
a2VyOjpjcmVhdGVDbGFzc0V4cHIpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVh
dGVGdW5jdGlvbkV4cHIpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVGdW5j
dGlvbkJvZHkpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVBcnJvd0Z1bmN0
aW9uRXhwcik6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OnNldEZ1bmN0aW9uTmFtZVN0
YXJ0KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlQXJndW1lbnRzKToKKyAg
ICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlUHJvcGVydHlMaXN0KToKKyAgICAgICAg
KEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRWxlbWVudExpc3QpOgorICAgICAgICAoSlNDOjpT
eW50YXhDaGVja2VyOjpjcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KToKKyAgICAgICAgKEpTQzo6
U3ludGF4Q2hlY2tlcjo6YXBwZW5kUGFyYW1ldGVyKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hl
Y2tlcjo6Y3JlYXRlQ2xhdXNlKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRl
Q2xhdXNlTGlzdCk6CisgICAgICAgICogcnVudGltZS9Db2RlQ2FjaGUuY3BwOgorICAgICAgICAo
SlNDOjpDb2RlQ2FjaGU6OmdldEdsb2JhbENvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVD
YWNoZTo6Z2V0RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUpOgorICAgICAgICAqIHJ1
bnRpbWUvQ29tcGxldGlvbi5jcHA6CisgICAgICAgIChKU0M6OmNoZWNrU3ludGF4KToKKyAgICAg
ICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0
YWJsZTo6Y2hlY2tTeW50YXgpOgorICAgICAgICAqIHRlc3RzL2NvbnRyb2xGbG93UHJvZmlsZXIv
Y29uZGl0aW9uYWwtZXhwcmVzc2lvbi5qczoKKyAgICAgICAgKHRlc3RDb25kaXRpb25hbEZ1bmN0
aW9uQ2FsbCk6CisKIDIwMTUtMDctMTUgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5j
b20+CiAKICAgICAgICAgW1dpbl0gRml4IGFybXY3IGJ1aWxkLgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAJKHJldmlzaW9uIDE4NjgwOCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHRSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
MCw3ICs3MCw3IEBAIHByaXZhdGU6CiBzdGF0aWMgYm9vbCBwYXJzZVNjcmlwdChWTSogdm0sIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJyb3ImIGVycm9yKQogewogICAgIHJldHVy
biAhIUpTQzo6cGFyc2U8SlNDOjpQcm9ncmFtTm9kZT4oCi0gICAgICAgIHZtLCBzb3VyY2UsIDAs
IElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgCisgICAgICAg
IHZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRp
biwgCiAgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBKU1BhcnNlckNvZGVU
eXBlOjpQcm9ncmFtLCAKICAgICAgICAgZXJyb3IpOwogfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAJKHJldmlz
aW9uIDE4NjgwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhl
Y3V0YWJsZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSwxMCArNjksOSBAQCBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1CiAgICAgVW5saW5rZWRGdW5jdGlvbktpbmQg
a2luZCA9IGlzUGFyc2luZ0RlZmF1bHRDb25zdHJ1Y3RvciA/IFVubGlua2VkTm9ybWFsRnVuY3Rp
b24gOiBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbjsKICAgICBSZWZQdHI8U291cmNlUHJvdmlkZXI+
IHNvdXJjZU92ZXJyaWRlID0gaXNQYXJzaW5nRGVmYXVsdENvbnN0cnVjdG9yID8gc291cmNlLnBy
b3ZpZGVyKCkgOiBudWxscHRyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9ncmFtTm9kZT4gcHJv
Z3JhbSA9IHBhcnNlPFByb2dyYW1Ob2RlPigKLSAgICAgICAgJm1fdm0sIHNvdXJjZSwgMCwgSWRl
bnRpZmllcigpLCBidWlsdGluTW9kZSwgCi0gICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90
U3RyaWN0LCAKLSAgICAgICAgSlNQYXJzZXJDb2RlVHlwZTo6UHJvZ3JhbSwKLSAgICAgICAgZXJy
b3IsICZwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lLCBjb25zdHJ1Y3RvcktpbmQpOworICAgICAg
ICAmbV92bSwgc291cmNlLCBJZGVudGlmaWVyKCksIGJ1aWx0aW5Nb2RlLCAKKyAgICAgICAgSlNQ
YXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIEpTUGFyc2VyQ29kZVR5cGU6OlByb2dyYW0sIGVy
cm9yLCAKKyAgICAgICAgJnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUsIEZ1bmN0aW9uUGFyc2VN
b2RlOjpOb3RBRnVuY3Rpb25Nb2RlLCBjb25zdHJ1Y3RvcktpbmQpOwogCiAgICAgaWYgKCFwcm9n
cmFtKSB7CiAgICAgICAgIGRhdGFMb2coIkZhdGFsIGVycm9yIGNvbXBpbGluZyBidWlsdGluIGZ1
bmN0aW9uICciLCBuYW1lLnN0cmluZygpLCAiJzogIiwgZXJyb3IubWVzc2FnZSgpKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmNwcAkocmV2aXNpb24gMTg2ODA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsMTUgKzYwLDE1
IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmEKICAgICBKU1BhcnNl
ckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlID0gZXhlY3V0YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24o
KSA/IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4gOiBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpO
b3RCdWlsdGluOwogICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlID0gZXhlY3V0YWJs
ZS0+aXNJblN0cmljdENvbnRleHQoKSA/IEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0IDogSlNQ
YXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Q7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZ1bmN0aW9u
Tm9kZT4gZnVuY3Rpb24gPSBwYXJzZTxGdW5jdGlvbk5vZGU+KAotICAgICAgICAmdm0sIHNvdXJj
ZSwgZXhlY3V0YWJsZS0+cGFyYW1ldGVycygpLCBleGVjdXRhYmxlLT5uYW1lKCksIGJ1aWx0aW5N
b2RlLAotICAgICAgICBzdHJpY3RNb2RlLCBKU1BhcnNlckNvZGVUeXBlOjpGdW5jdGlvbiwgZXJy
b3IsIDApOworICAgICAgICAmdm0sIHNvdXJjZSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBidWlsdGlu
TW9kZSwgc3RyaWN0TW9kZSwgCisgICAgICAgIEpTUGFyc2VyQ29kZVR5cGU6OkZ1bmN0aW9uLCBl
cnJvciwgbnVsbHB0ciwgZXhlY3V0YWJsZS0+cGFyc2VNb2RlKCkpOwogCiAgICAgaWYgKCFmdW5j
dGlvbikgewogICAgICAgICBBU1NFUlQoZXJyb3IuaXNWYWxpZCgpKTsKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogCi0gICAgZnVuY3Rpb24tPmZpbmlzaFBhcnNpbmcoZXhlY3V0YWJs
ZS0+cGFyYW1ldGVycygpLCBleGVjdXRhYmxlLT5uYW1lKCksIGV4ZWN1dGFibGUtPmZ1bmN0aW9u
TW9kZSgpKTsKKyAgICBmdW5jdGlvbi0+ZmluaXNoUGFyc2luZyhleGVjdXRhYmxlLT5uYW1lKCks
IGV4ZWN1dGFibGUtPmZ1bmN0aW9uTW9kZSgpKTsKICAgICBleGVjdXRhYmxlLT5yZWNvcmRQYXJz
ZShmdW5jdGlvbi0+ZmVhdHVyZXMoKSwgZnVuY3Rpb24tPmhhc0NhcHR1cmVkVmFyaWFibGVzKCkp
OwogICAgIAogICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IFVubGlua2Vk
RnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSgmdm0sIEZ1bmN0aW9uQ29kZSwKQEAgLTg0LDcgKzg0
LDYgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuYwogICAgIDogQmFz
ZSgqdm0sIHN0cnVjdHVyZSkKICAgICAsIG1fbmFtZShub2RlLT5pZGVudCgpKQogICAgICwgbV9p
bmZlcnJlZE5hbWUobm9kZS0+aW5mZXJyZWROYW1lKCkpCi0gICAgLCBtX3BhcmFtZXRlcnMobm9k
ZS0+cGFyYW1ldGVycygpKQogICAgICwgbV9zb3VyY2VPdmVycmlkZShXVEY6Om1vdmUoc291cmNl
T3ZlcnJpZGUpKQogICAgICwgbV9maXJzdExpbmVPZmZzZXQobm9kZS0+Zmlyc3RMaW5lKCkgLSBz
b3VyY2UuZmlyc3RMaW5lKCkpCiAgICAgLCBtX2xpbmVDb3VudChub2RlLT5sYXN0TGluZSgpIC0g
bm9kZS0+Zmlyc3RMaW5lKCkpCkBAIC05Niw2ICs5NSw4IEBAIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlOjpVbmxpbmtlZEZ1bmMKICAgICAsIG1fcGFyYW1ldGVyc1N0YXJ0T2Zmc2V0KG5vZGUt
PnBhcmFtZXRlcnNTdGFydCgpKQogICAgICwgbV90eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQobm9k
ZS0+ZnVuY3Rpb25LZXl3b3JkU3RhcnQoKSkKICAgICAsIG1fdHlwZVByb2ZpbGluZ0VuZE9mZnNl
dChub2RlLT5zdGFydFN0YXJ0T2Zmc2V0KCkgKyBub2RlLT5zb3VyY2UoKS5sZW5ndGgoKSAtIDEp
CisgICAgLCBtX3BhcmFtZXRlckNvdW50KG5vZGUtPnBhcmFtZXRlckNvdW50KCkpCisgICAgLCBt
X3BhcnNlTW9kZShub2RlLT5wYXJzZU1vZGUoKSkKICAgICAsIG1fZmVhdHVyZXMoMCkKICAgICAs
IG1faXNJblN0cmljdENvbnRleHQobm9kZS0+aXNJblN0cmljdENvbnRleHQoKSkKICAgICAsIG1f
aGFzQ2FwdHVyZWRWYXJpYWJsZXMoZmFsc2UpCkBAIC0xMDYsMTEgKzEwNyw2IEBAIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmMKICAgICBBU1NFUlQobV9jb25zdHJ1Y3Rv
cktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPmNvbnN0cnVjdG9yS2luZCgpKSk7
CiB9CiAKLXNpemVfdCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6cGFyYW1ldGVyQ291bnQo
KSBjb25zdAotewotICAgIHJldHVybiBtX3BhcmFtZXRlcnMtPnNpemUoKTsKLX0KLQogdm9pZCBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB0
aGlzT2JqZWN0ID0ganNDYXN0PFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKj4oY2VsbCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suaAkocmV2aXNpb24gMTg2ODA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDYgQEAg
bmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBEZWJ1Z2dlcjsKIGNsYXNzIEZ1bmN0aW9uQm9keU5vZGU7
CiBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7Ci1jbGFzcyBGdW5jdGlvblBhcmFtZXRlcnM7CiBj
bGFzcyBKU1Njb3BlOwogY2xhc3MgUGFyc2VyRXJyb3I7CiBjbGFzcyBTY3JpcHRFeGVjdXRhYmxl
OwpAQCAtMTIyLDcgKzEyMSw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiAoa2lu
ZCA9PSBDb2RlRm9yQ2FsbCkgPyBtX3N5bWJvbFRhYmxlRm9yQ2FsbC5nZXQoKSA6IG1fc3ltYm9s
VGFibGVGb3JDb25zdHJ1Y3QuZ2V0KCk7CiAgICAgfQotICAgIHNpemVfdCBwYXJhbWV0ZXJDb3Vu
dCgpIGNvbnN0OworICAgIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50KCkgY29uc3QgeyByZXR1cm4g
bV9wYXJhbWV0ZXJDb3VudDsgfTsKKyAgICBGdW5jdGlvblBhcnNlTW9kZSBwYXJzZU1vZGUoKSBj
b25zdCB7IHJldHVybiBtX3BhcnNlTW9kZTsgfTsKICAgICBib29sIGlzSW5TdHJpY3RDb250ZXh0
KCkgY29uc3QgeyByZXR1cm4gbV9pc0luU3RyaWN0Q29udGV4dDsgfQogICAgIEZ1bmN0aW9uTW9k
ZSBmdW5jdGlvbk1vZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxGdW5jdGlvbk1vZGU+
KG1fZnVuY3Rpb25Nb2RlKTsgfQogICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0
b3JLaW5kKTsgfQpAQCAtMTU0LDggKzE1NCw2IEBAIHB1YmxpYzoKICAgICAgICAgbV9jb2RlQmxv
Y2tGb3JDb25zdHJ1Y3QuY2xlYXIoKTsKICAgICB9CiAKLSAgICBGdW5jdGlvblBhcmFtZXRlcnMq
IHBhcmFtZXRlcnMoKSB7IHJldHVybiBtX3BhcmFtZXRlcnMuZ2V0KCk7IH0KLQogICAgIHZvaWQg
cmVjb3JkUGFyc2UoQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBib29sIGhhc0NhcHR1cmVkVmFyaWFi
bGVzKQogICAgIHsKICAgICAgICAgbV9mZWF0dXJlcyA9IGZlYXR1cmVzOwpAQCAtMTgxLDcgKzE3
OSw2IEBAIHByaXZhdGU6CiAgICAgV3JpdGVCYXJyaWVyPEpTU3RyaW5nPiBtX25hbWVWYWx1ZTsK
ICAgICBXcml0ZUJhcnJpZXI8U3ltYm9sVGFibGU+IG1fc3ltYm9sVGFibGVGb3JDYWxsOwogICAg
IFdyaXRlQmFycmllcjxTeW1ib2xUYWJsZT4gbV9zeW1ib2xUYWJsZUZvckNvbnN0cnVjdDsKLSAg
ICBSZWZQdHI8RnVuY3Rpb25QYXJhbWV0ZXJzPiBtX3BhcmFtZXRlcnM7CiAgICAgUmVmUHRyPFNv
dXJjZVByb3ZpZGVyPiBtX3NvdXJjZU92ZXJyaWRlOwogICAgIHVuc2lnbmVkIG1fZmlyc3RMaW5l
T2Zmc2V0OwogICAgIHVuc2lnbmVkIG1fbGluZUNvdW50OwpAQCAtMTkzLDYgKzE5MCw4IEBAIHBy
aXZhdGU6CiAgICAgdW5zaWduZWQgbV9wYXJhbWV0ZXJzU3RhcnRPZmZzZXQ7CiAgICAgdW5zaWdu
ZWQgbV90eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQ7CiAgICAgdW5zaWduZWQgbV90eXBlUHJvZmls
aW5nRW5kT2Zmc2V0OworICAgIHVuc2lnbmVkIG1fcGFyYW1ldGVyQ291bnQ7CisgICAgRnVuY3Rp
b25QYXJzZU1vZGUgbV9wYXJzZU1vZGU7CiAKICAgICBDb2RlRmVhdHVyZXMgbV9mZWF0dXJlczsK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcAkocmV2aXNpb24gMTg2ODA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTE2LDEw
ICszMTE2LDYgQEAgUmVnaXN0ZXJJRCogRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlOgogICAg
IHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIGluaXRpYWxp
emVyLmdldCgpKTsKIH0KIAotRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlOjp+RGVzdHJ1Y3R1cmlu
Z1BhdHRlcm5Ob2RlKCkKLXsKLX0KLQogc3RhdGljIHZvaWQgYXNzaWduRGVmYXVsdFZhbHVlSWZV
bmRlZmluZWQoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogbWF5YmVV
bmRlZmluZWQsIEV4cHJlc3Npb25Ob2RlKiBkZWZhdWx0VmFsdWUpCiB7CiAgICAgQVNTRVJUKGRl
ZmF1bHRWYWx1ZSk7CkBAIC0zMjc3LDcgKzMyNzMsNyBAQCB2b2lkIEFycmF5UGF0dGVybk5vZGU6
OnRvU3RyaW5nKFN0cmluZ0J1CiB2b2lkIEFycmF5UGF0dGVybk5vZGU6OmNvbGxlY3RCb3VuZElk
ZW50aWZpZXJzKFZlY3RvcjxJZGVudGlmaWVyPiYgaWRlbnRpZmllcnMpIGNvbnN0CiB7CiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3RhcmdldFBhdHRlcm5zLnNpemUoKTsgaSsrKSB7Ci0g
ICAgICAgIGlmIChEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUqIG5vZGUgPSBtX3RhcmdldFBhdHRl
cm5zW2ldLnBhdHRlcm4uZ2V0KCkpCisgICAgICAgIGlmIChEZXN0cnVjdHVyaW5nUGF0dGVybk5v
ZGUqIG5vZGUgPSBtX3RhcmdldFBhdHRlcm5zW2ldLnBhdHRlcm4pCiAgICAgICAgICAgICBub2Rl
LT5jb2xsZWN0Qm91bmRJZGVudGlmaWVycyhpZGVudGlmaWVycyk7CiAgICAgfQogfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgJKHJldmlzaW9uIDE4Njgw
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC05Myw4ICs5Myw2IEBAIHB1YmxpYzoKICAgICB9OwogCiAKLSAgICB0eXBlZGVm
IFN5bnRheENoZWNrZXIgRnVuY3Rpb25Cb2R5QnVpbGRlcjsKLQogICAgIHR5cGVkZWYgRXhwcmVz
c2lvbk5vZGUqIEV4cHJlc3Npb247CiAgICAgdHlwZWRlZiBKU0M6OlNvdXJjZUVsZW1lbnRzKiBT
b3VyY2VFbGVtZW50czsKICAgICB0eXBlZGVmIEFyZ3VtZW50c05vZGUqIEFyZ3VtZW50czsKQEAg
LTEwOSw3ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBUZW1wbGF0ZVN0cmluZ0xpc3RO
b2RlKiBUZW1wbGF0ZVN0cmluZ0xpc3Q7CiAgICAgdHlwZWRlZiBUZW1wbGF0ZUxpdGVyYWxOb2Rl
KiBUZW1wbGF0ZUxpdGVyYWw7CiAjZW5kaWYKLSAgICB0eXBlZGVmIFBhcmFtZXRlck5vZGUqIEZv
cm1hbFBhcmFtZXRlckxpc3Q7CisgICAgdHlwZWRlZiBGdW5jdGlvblBhcmFtZXRlcnMqIEZvcm1h
bFBhcmFtZXRlckxpc3Q7CiAgICAgdHlwZWRlZiBGdW5jdGlvbkJvZHlOb2RlKiBGdW5jdGlvbkJv
ZHk7CiAjaWYgRU5BQkxFKEVTNl9DTEFTU19TWU5UQVgpCiAgICAgdHlwZWRlZiBDbGFzc0V4cHJO
b2RlKiBDbGFzc0V4cHJlc3Npb247CkBAIC0xMTksMTAgKzExNywxMCBAQCBwdWJsaWM6CiAgICAg
dHlwZWRlZiBDYXNlQ2xhdXNlTm9kZSogQ2xhdXNlOwogICAgIHR5cGVkZWYgQ29uc3REZWNsTm9k
ZSogQ29uc3REZWNsTGlzdDsKICAgICB0eXBlZGVmIHN0ZDo6cGFpcjxFeHByZXNzaW9uTm9kZSos
IEJpbmFyeU9wSW5mbz4gQmluYXJ5T3BlcmFuZDsKLSAgICB0eXBlZGVmIFJlZlB0cjxEZXN0cnVj
dHVyaW5nUGF0dGVybk5vZGU+IERlc3RydWN0dXJpbmdQYXR0ZXJuOwotICAgIHR5cGVkZWYgUmVm
UHRyPEFycmF5UGF0dGVybk5vZGU+IEFycmF5UGF0dGVybjsKLSAgICB0eXBlZGVmIFJlZlB0cjxP
YmplY3RQYXR0ZXJuTm9kZT4gT2JqZWN0UGF0dGVybjsKLSAgICB0eXBlZGVmIFJlZlB0cjxCaW5k
aW5nTm9kZT4gQmluZGluZ1BhdHRlcm47CisgICAgdHlwZWRlZiBEZXN0cnVjdHVyaW5nUGF0dGVy
bk5vZGUqIERlc3RydWN0dXJpbmdQYXR0ZXJuOworICAgIHR5cGVkZWYgQXJyYXlQYXR0ZXJuTm9k
ZSogQXJyYXlQYXR0ZXJuOworICAgIHR5cGVkZWYgT2JqZWN0UGF0dGVybk5vZGUqIE9iamVjdFBh
dHRlcm47CisgICAgdHlwZWRlZiBCaW5kaW5nTm9kZSogQmluZGluZ1BhdHRlcm47CiAgICAgc3Rh
dGljIGNvbnN0IGJvb2wgQ3JlYXRlc0FTVCA9IHRydWU7CiAgICAgc3RhdGljIGNvbnN0IGJvb2wg
TmVlZHNGcmVlVmFyaWFibGVJbmZvID0gdHJ1ZTsKICAgICBzdGF0aWMgY29uc3QgYm9vbCBDYW5V
c2VGdW5jdGlvbkNhY2hlID0gdHJ1ZTsKQEAgLTM0NCwxMSArMzQyLDExIEBAIHB1YmxpYzoKICAg
ICB9CiAjZW5kaWYKIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVGdW5jdGlvbkV4cHIoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPEFT
VEJ1aWxkZXI+JiBpbmZvKQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVGdW5jdGlvbkV4cHIo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZv
PEFTVEJ1aWxkZXI+JiBmdW5jdGlvbkluZm8pCiAgICAgewotICAgICAgICBGdW5jRXhwck5vZGUq
IHJlc3VsdCA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRnVuY0V4cHJOb2RlKGxvY2F0aW9uLCAqaW5m
by5uYW1lLCBpbmZvLmJvZHksCi0gICAgICAgICAgICBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Np
b24oaW5mby5zdGFydEZ1bmN0aW9uT2Zmc2V0LCBpbmZvLmVuZEZ1bmN0aW9uT2Zmc2V0LCBpbmZv
LmJvZHlTdGFydExpbmUsIGluZm8uYm9keVN0YXJ0Q29sdW1uKSwgaW5mby5wYXJhbWV0ZXJzKTsK
LSAgICAgICAgaW5mby5ib2R5LT5zZXRMb2MoaW5mby5ib2R5U3RhcnRMaW5lLCBpbmZvLmJvZHlF
bmRMaW5lLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsK
KyAgICAgICAgRnVuY0V4cHJOb2RlKiByZXN1bHQgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIEZ1bmNF
eHByTm9kZShsb2NhdGlvbiwgKmZ1bmN0aW9uSW5mby5uYW1lLCBmdW5jdGlvbkluZm8uYm9keSwK
KyAgICAgICAgICAgIG1fc291cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihmdW5jdGlvbkluZm8uc3Rh
cnRPZmZzZXQsIGZ1bmN0aW9uSW5mby5lbmRPZmZzZXQsIGZ1bmN0aW9uSW5mby5zdGFydExpbmUs
IGZ1bmN0aW9uSW5mby5ib2R5U3RhcnRDb2x1bW4pKTsKKyAgICAgICAgZnVuY3Rpb25JbmZvLmJv
ZHktPnNldExvYyhmdW5jdGlvbkluZm8uc3RhcnRMaW5lLCBmdW5jdGlvbkluZm8uZW5kTGluZSwg
bG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFydE9mZnNldCk7CiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfQogCkBAIC0zNTYsNDUgKzM1NCw0MSBAQCBwdWJsaWM6CiAg
ICAgICAgIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgCiAgICAgICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1
bnNpZ25lZCBlbmRDb2x1bW4sIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgCiAgICAgICAgIGlu
dCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgYm9vbCBpblN0cmljdENv
bnRleHQsIAotICAgICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKQorICAgICAg
ICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3Vu
dCwgRnVuY3Rpb25QYXJzZU1vZGUgbW9kZSkKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgKG1f
cGFyc2VyQXJlbmEpIEZ1bmN0aW9uQm9keU5vZGUoCiAgICAgICAgICAgICBtX3BhcnNlckFyZW5h
LCBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgCiAg
ICAgICAgICAgICBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFt
ZXRlcnNTdGFydCwgCi0gICAgICAgICAgICBpblN0cmljdENvbnRleHQsIGNvbnN0cnVjdG9yS2lu
ZCk7CisgICAgICAgICAgICBpblN0cmljdENvbnRleHQsIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1l
dGVyQ291bnQsIG1vZGUpOwogICAgIH0KIAotI2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9T
WU5UQVgpCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFycm93RnVuY3Rpb25FeHByKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RC
dWlsZGVyPiYgaW5mbykKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQXJyb3dGdW5jdGlvbkV4
cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgUGFyc2VyRnVuY3Rpb25J
bmZvPEFTVEJ1aWxkZXI+JiBmdW5jdGlvbkluZm8pCiAgICAgewotICAgICAgICBTb3VyY2VDb2Rl
IHNvdXJjZSA9IGluZm8uZnVuY3Rpb25Cb2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUV4cHJl
c3Npb24KLSAgICAgICAgICAgID8gbV9zb3VyY2VDb2RlLT5zdWJBcnJvd0V4cHJlc3Npb24oaW5m
by5hcnJvd0Z1bmN0aW9uT2Zmc2V0LCBpbmZvLmVuZEZ1bmN0aW9uT2Zmc2V0LCBpbmZvLmJvZHlT
dGFydExpbmUsIGluZm8uYm9keVN0YXJ0Q29sdW1uKQotICAgICAgICAgICAgOiBtX3NvdXJjZUNv
ZGUtPnN1YkV4cHJlc3Npb24oaW5mby5zdGFydEZ1bmN0aW9uT2Zmc2V0LCBpbmZvLmVuZEZ1bmN0
aW9uT2Zmc2V0LCBpbmZvLmJvZHlTdGFydExpbmUsIGluZm8uYm9keVN0YXJ0Q29sdW1uKTsKKyAg
ICAgICAgU291cmNlQ29kZSBzb3VyY2UgPSBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24oZnVu
Y3Rpb25JbmZvLnN0YXJ0T2Zmc2V0LCBmdW5jdGlvbkluZm8uZW5kT2Zmc2V0LCBmdW5jdGlvbklu
Zm8uc3RhcnRMaW5lLCBmdW5jdGlvbkluZm8uYm9keVN0YXJ0Q29sdW1uKTsKIAotICAgICAgICBG
dW5jRXhwck5vZGUqIHJlc3VsdCA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRnVuY0V4cHJOb2RlKGxv
Y2F0aW9uLCAqaW5mby5uYW1lLCBpbmZvLmJvZHksIHNvdXJjZSwgaW5mby5wYXJhbWV0ZXJzKTsK
LSAgICAgICAgaW5mby5ib2R5LT5zZXRMb2MoaW5mby5ib2R5U3RhcnRMaW5lLCBpbmZvLmJvZHlF
bmRMaW5lLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsK
KyAgICAgICAgRnVuY0V4cHJOb2RlKiByZXN1bHQgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIEZ1bmNF
eHByTm9kZShsb2NhdGlvbiwgKmZ1bmN0aW9uSW5mby5uYW1lLCBmdW5jdGlvbkluZm8uYm9keSwg
c291cmNlKTsKKyAgICAgICAgZnVuY3Rpb25JbmZvLmJvZHktPnNldExvYyhmdW5jdGlvbkluZm8u
c3RhcnRMaW5lLCBmdW5jdGlvbkluZm8uZW5kTGluZSwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxv
Y2F0aW9uLmxpbmVTdGFydE9mZnNldCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQot
I2VuZGlmCiAKICAgICBORVZFUl9JTkxJTkUgUHJvcGVydHlOb2RlKiBjcmVhdGVHZXR0ZXJPclNl
dHRlclByb3BlcnR5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFByb3BlcnR5Tm9k
ZTo6VHlwZSB0eXBlLCBib29sLAotICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBjb25z
dCBQYXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4mIGluZm8sIFN1cGVyQmluZGluZyBzdXBl
ckJpbmRpbmcpCisgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIG5hbWUsIGNvbnN0IFBhcnNlckZ1
bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgZnVuY3Rpb25JbmZvLCBTdXBlckJpbmRpbmcgc3VwZXJC
aW5kaW5nKQogICAgIHsKICAgICAgICAgQVNTRVJUKG5hbWUpOwotICAgICAgICBpbmZvLmJvZHkt
PnNldExvYyhpbmZvLmJvZHlTdGFydExpbmUsIGluZm8uYm9keUVuZExpbmUsIGxvY2F0aW9uLnN0
YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOwotICAgICAgICBpbmZvLmJvZHkt
PnNldEluZmVycmVkTmFtZSgqbmFtZSk7Ci0gICAgICAgIFNvdXJjZUNvZGUgc291cmNlID0gbV9z
b3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKGluZm8uc3RhcnRGdW5jdGlvbk9mZnNldCwgaW5mby5l
bmRGdW5jdGlvbk9mZnNldCwgaW5mby5ib2R5U3RhcnRMaW5lLCBpbmZvLmJvZHlTdGFydENvbHVt
bik7Ci0gICAgICAgIEZ1bmNFeHByTm9kZSogZnVuY0V4cHIgPSBuZXcgKG1fcGFyc2VyQXJlbmEp
IEZ1bmNFeHByTm9kZShsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZp
ZXIsIGluZm8uYm9keSwgc291cmNlLCBpbmZvLnBhcmFtZXRlcnMpOworICAgICAgICBmdW5jdGlv
bkluZm8uYm9keS0+c2V0TG9jKGZ1bmN0aW9uSW5mby5zdGFydExpbmUsIGZ1bmN0aW9uSW5mby5l
bmRMaW5lLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsK
KyAgICAgICAgZnVuY3Rpb25JbmZvLmJvZHktPnNldEluZmVycmVkTmFtZSgqbmFtZSk7CisgICAg
ICAgIFNvdXJjZUNvZGUgc291cmNlID0gbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKGZ1bmN0
aW9uSW5mby5zdGFydE9mZnNldCwgZnVuY3Rpb25JbmZvLmVuZE9mZnNldCwgZnVuY3Rpb25JbmZv
LnN0YXJ0TGluZSwgZnVuY3Rpb25JbmZvLmJvZHlTdGFydENvbHVtbik7CisgICAgICAgIEZ1bmNF
eHByTm9kZSogZnVuY0V4cHIgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIEZ1bmNFeHByTm9kZShsb2Nh
dGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIsIGZ1bmN0aW9uSW5mby5i
b2R5LCBzb3VyY2UpOwogICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBQcm9wZXJ0
eU5vZGUoKm5hbWUsIGZ1bmNFeHByLCB0eXBlLCBQcm9wZXJ0eU5vZGU6OlVua25vd24sIHN1cGVy
QmluZGluZyk7CiAgICAgfQogICAgIAogICAgIE5FVkVSX0lOTElORSBQcm9wZXJ0eU5vZGUqIGNy
ZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoVk0qIHZtLCBQYXJzZXJBcmVuYSYgcGFyc2VyQXJl
bmEsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFByb3BlcnR5Tm9kZTo6VHlwZSB0
eXBlLCBib29sLAotICAgICAgICBkb3VibGUgbmFtZSwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZv
PEFTVEJ1aWxkZXI+JiBpbmZvLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKQorICAgICAgICBk
b3VibGUgbmFtZSwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+JiBmdW5jdGlv
bkluZm8sIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcpCiAgICAgewotICAgICAgICBpbmZvLmJv
ZHktPnNldExvYyhpbmZvLmJvZHlTdGFydExpbmUsIGluZm8uYm9keUVuZExpbmUsIGxvY2F0aW9u
LnN0YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOworICAgICAgICBmdW5jdGlv
bkluZm8uYm9keS0+c2V0TG9jKGZ1bmN0aW9uSW5mby5zdGFydExpbmUsIGZ1bmN0aW9uSW5mby5l
bmRMaW5lLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsK
ICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBwYXJzZXJBcmVuYS5pZGVudGlmaWVy
QXJlbmEoKS5tYWtlTnVtZXJpY0lkZW50aWZpZXIodm0sIG5hbWUpOwotICAgICAgICBTb3VyY2VD
b2RlIHNvdXJjZSA9IG1fc291cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihpbmZvLnN0YXJ0RnVuY3Rp
b25PZmZzZXQsIGluZm8uZW5kRnVuY3Rpb25PZmZzZXQsIGluZm8uYm9keVN0YXJ0TGluZSwgaW5m
by5ib2R5U3RhcnRDb2x1bW4pOwotICAgICAgICBGdW5jRXhwck5vZGUqIGZ1bmNFeHByID0gbmV3
IChtX3BhcnNlckFyZW5hKSBGdW5jRXhwck5vZGUobG9jYXRpb24sIHZtLT5wcm9wZXJ0eU5hbWVz
LT5udWxsSWRlbnRpZmllciwgaW5mby5ib2R5LCBzb3VyY2UsIGluZm8ucGFyYW1ldGVycyk7Cisg
ICAgICAgIFNvdXJjZUNvZGUgc291cmNlID0gbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKGZ1
bmN0aW9uSW5mby5zdGFydE9mZnNldCwgZnVuY3Rpb25JbmZvLmVuZE9mZnNldCwgZnVuY3Rpb25J
bmZvLnN0YXJ0TGluZSwgZnVuY3Rpb25JbmZvLmJvZHlTdGFydENvbHVtbik7CisgICAgICAgIEZ1
bmNFeHByTm9kZSogZnVuY0V4cHIgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIEZ1bmNFeHByTm9kZShs
b2NhdGlvbiwgdm0tPnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyLCBmdW5jdGlvbkluZm8u
Ym9keSwgc291cmNlKTsKICAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgUHJvcGVy
dHlOb2RlKGlkZW50LCBmdW5jRXhwciwgdHlwZSwgUHJvcGVydHlOb2RlOjpVbmtub3duLCBzdXBl
ckJpbmRpbmcpOwogICAgIH0KIApAQCAtNDIwLDIxICs0MTQsMjEgQEAgcHVibGljOgogICAgIEVs
ZW1lbnROb2RlKiBjcmVhdGVFbGVtZW50TGlzdChpbnQgZWxpc2lvbnMsIEV4cHJlc3Npb25Ob2Rl
KiBleHByKSB7IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEVsZW1lbnROb2RlKGVsaXNpb25z
LCBleHByKTsgfQogICAgIEVsZW1lbnROb2RlKiBjcmVhdGVFbGVtZW50TGlzdChFbGVtZW50Tm9k
ZSogZWxlbXMsIGludCBlbGlzaW9ucywgRXhwcmVzc2lvbk5vZGUqIGV4cHIpIHsgcmV0dXJuIG5l
dyAobV9wYXJzZXJBcmVuYSkgRWxlbWVudE5vZGUoZWxlbXMsIGVsaXNpb25zLCBleHByKTsgfQog
Ci0gICAgUGFyYW1ldGVyTm9kZSogY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdChEZXN0cnVjdHVy
aW5nUGF0dGVybiBwYXR0ZXJuKSB7IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFBhcmFtZXRl
ck5vZGUocGF0dGVybik7IH0KLSAgICBQYXJhbWV0ZXJOb2RlKiBjcmVhdGVGb3JtYWxQYXJhbWV0
ZXJMaXN0KFBhcmFtZXRlck5vZGUqIGxpc3QsIERlc3RydWN0dXJpbmdQYXR0ZXJuIHBhdHRlcm4p
IHsgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgUGFyYW1ldGVyTm9kZShsaXN0LCBwYXR0ZXJu
KTsgfQorICAgIEZvcm1hbFBhcmFtZXRlckxpc3QgY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdCgp
IHsgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgRnVuY3Rpb25QYXJhbWV0ZXJzKCk7IH0KKyAg
ICB2b2lkIGFwcGVuZFBhcmFtZXRlcihGb3JtYWxQYXJhbWV0ZXJMaXN0IGxpc3QsIERlc3RydWN0
dXJpbmdQYXR0ZXJuIHBhdHRlcm4pIHsgbGlzdC0+YXBwZW5kKHBhdHRlcm4pOyB9CiAKICAgICBD
YXNlQ2xhdXNlTm9kZSogY3JlYXRlQ2xhdXNlKEV4cHJlc3Npb25Ob2RlKiBleHByLCBKU0M6OlNv
dXJjZUVsZW1lbnRzKiBzdGF0ZW1lbnRzKSB7IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIENh
c2VDbGF1c2VOb2RlKGV4cHIsIHN0YXRlbWVudHMpOyB9CiAgICAgQ2xhdXNlTGlzdE5vZGUqIGNy
ZWF0ZUNsYXVzZUxpc3QoQ2FzZUNsYXVzZU5vZGUqIGNsYXVzZSkgeyByZXR1cm4gbmV3IChtX3Bh
cnNlckFyZW5hKSBDbGF1c2VMaXN0Tm9kZShjbGF1c2UpOyB9CiAgICAgQ2xhdXNlTGlzdE5vZGUq
IGNyZWF0ZUNsYXVzZUxpc3QoQ2xhdXNlTGlzdE5vZGUqIHRhaWwsIENhc2VDbGF1c2VOb2RlKiBj
bGF1c2UpIHsgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgQ2xhdXNlTGlzdE5vZGUodGFpbCwg
Y2xhdXNlKTsgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZv
PEFTVEJ1aWxkZXI+JiBpbmZvKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZ1bmNEZWNsU3Rh
dGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IFBhcnNlckZ1bmN0
aW9uSW5mbzxBU1RCdWlsZGVyPiYgZnVuY3Rpb25JbmZvKQogICAgIHsKLSAgICAgICAgRnVuY0Rl
Y2xOb2RlKiBkZWNsID0gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5jRGVjbE5vZGUobG9jYXRpb24s
ICppbmZvLm5hbWUsIGluZm8uYm9keSwKLSAgICAgICAgICAgIG1fc291cmNlQ29kZS0+c3ViRXhw
cmVzc2lvbihpbmZvLnN0YXJ0RnVuY3Rpb25PZmZzZXQsIGluZm8uZW5kRnVuY3Rpb25PZmZzZXQs
IGluZm8uYm9keVN0YXJ0TGluZSwgaW5mby5ib2R5U3RhcnRDb2x1bW4pLCBpbmZvLnBhcmFtZXRl
cnMpOwotICAgICAgICBpZiAoKmluZm8ubmFtZSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcmd1
bWVudHMpCisgICAgICAgIEZ1bmNEZWNsTm9kZSogZGVjbCA9IG5ldyAobV9wYXJzZXJBcmVuYSkg
RnVuY0RlY2xOb2RlKGxvY2F0aW9uLCAqZnVuY3Rpb25JbmZvLm5hbWUsIGZ1bmN0aW9uSW5mby5i
b2R5LAorICAgICAgICAgICAgbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKGZ1bmN0aW9uSW5m
by5zdGFydE9mZnNldCwgZnVuY3Rpb25JbmZvLmVuZE9mZnNldCwgZnVuY3Rpb25JbmZvLnN0YXJ0
TGluZSwgZnVuY3Rpb25JbmZvLmJvZHlTdGFydENvbHVtbikpOworICAgICAgICBpZiAoKmZ1bmN0
aW9uSW5mby5uYW1lID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cykKICAgICAgICAg
ICAgIHVzZXNBcmd1bWVudHMoKTsKICAgICAgICAgbV9zY29wZS5tX2Z1bmNEZWNsYXJhdGlvbnMu
YXBwZW5kKGRlY2wtPmJvZHkoKSk7Ci0gICAgICAgIGluZm8uYm9keS0+c2V0TG9jKGluZm8uYm9k
eVN0YXJ0TGluZSwgaW5mby5ib2R5RW5kTGluZSwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0
aW9uLmxpbmVTdGFydE9mZnNldCk7CisgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5LT5zZXRMb2Mo
ZnVuY3Rpb25JbmZvLnN0YXJ0TGluZSwgZnVuY3Rpb25JbmZvLmVuZExpbmUsIGxvY2F0aW9uLnN0
YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOwogICAgICAgICByZXR1cm4gZGVj
bDsKICAgICB9CiAKQEAgLTQ4Niw5ICs0ODAsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQogICAgIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZvckluTG9vcChj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQYXNzUmVmUHRyPERlc3RydWN0dXJpbmdQ
YXR0ZXJuTm9kZT4gcGF0dGVybiwgRXhwcmVzc2lvbk5vZGUqIGl0ZXIsIFN0YXRlbWVudE5vZGUq
IHN0YXRlbWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlU3RhcnQsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBlRGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlRW5kLCBpbnQgc3RhcnQsIGlu
dCBlbmQpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRm9ySW5Mb29wKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgbG9jYXRpb24sIERlc3RydWN0dXJpbmdQYXR0ZXJuIHBhdHRlcm4sIEV4cHJlc3Np
b25Ob2RlKiBpdGVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnRzLCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZVN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZURpdm90LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZUVuZCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogICAgIHsKLSAgICAgICAgYXV0byBs
ZXhwciA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlKGxv
Y2F0aW9uLCBwYXR0ZXJuLmdldCgpLCAwKTsKKyAgICAgICAgYXV0byBsZXhwciA9IG5ldyAobV9w
YXJzZXJBcmVuYSkgRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlKGxvY2F0aW9uLCBwYXR0ZXJu
LCAwKTsKICAgICAgICAgcmV0dXJuIGNyZWF0ZUZvckluTG9vcChsb2NhdGlvbiwgbGV4cHIsIGl0
ZXIsIHN0YXRlbWVudHMsIGVTdGFydCwgZURpdm90LCBlRW5kLCBzdGFydCwgZW5kKTsKICAgICB9
CiAgICAgCkBAIC01MDAsOSArNDk0LDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgIH0KICAgICAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVGb3JPZkxvb3AoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUGFzc1JlZlB0cjxEZXN0cnVjdHVyaW5nUGF0dGVy
bk5vZGU+IHBhdHRlcm4sIEV4cHJlc3Npb25Ob2RlKiBpdGVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0
ZW1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZVN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZURpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZUVuZCwgaW50IHN0YXJ0LCBpbnQgZW5k
KQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZvck9mTG9vcChjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBEZXN0cnVjdHVyaW5nUGF0dGVybiBwYXR0ZXJuLCBFeHByZXNzaW9uTm9k
ZSogaXRlciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGVTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVEaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGVFbmQsIGludCBzdGFydCwgaW50IGVuZCkKICAgICB7Ci0gICAgICAgIGF1dG8gbGV4cHIg
PSBuZXcgKG1fcGFyc2VyQXJlbmEpIERlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZShsb2NhdGlv
biwgcGF0dGVybi5nZXQoKSwgMCk7CisgICAgICAgIGF1dG8gbGV4cHIgPSBuZXcgKG1fcGFyc2Vy
QXJlbmEpIERlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZShsb2NhdGlvbiwgcGF0dGVybiwgMCk7
CiAgICAgICAgIHJldHVybiBjcmVhdGVGb3JPZkxvb3AobG9jYXRpb24sIGxleHByLCBpdGVyLCBz
dGF0ZW1lbnRzLCBlU3RhcnQsIGVEaXZvdCwgZUVuZCwgc3RhcnQsIGVuZCk7CiAgICAgfQogCkBA
IC03MzgsMTQgKzczMiwxNCBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzUmVzb2x2ZShFeHByZXNz
aW9uTm9kZSogZXhwcikgY29uc3QgeyByZXR1cm4gZXhwci0+aXNSZXNvbHZlTm9kZSgpOyB9CiAK
LSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnQoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUGFzc1JlZlB0cjxEZXN0cnVjdHVyaW5nUGF0dGVy
bk5vZGU+IHBhdHRlcm4sIEV4cHJlc3Npb25Ob2RlKiBpbml0aWFsaXplcikKKyAgICBFeHByZXNz
aW9uTm9kZSogY3JlYXRlRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnQoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbiwgRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gcGF0dGVybiwgRXhwcmVzc2lvbk5v
ZGUqIGluaXRpYWxpemVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVu
YSkgRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlKGxvY2F0aW9uLCBwYXR0ZXJuLmdldCgpLCBp
bml0aWFsaXplcik7CisgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIERlc3RydWN0
dXJpbmdBc3NpZ25tZW50Tm9kZShsb2NhdGlvbiwgcGF0dGVybiwgaW5pdGlhbGl6ZXIpOwogICAg
IH0KICAgICAKICAgICBBcnJheVBhdHRlcm4gY3JlYXRlQXJyYXlQYXR0ZXJuKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYpCiAgICAgewotICAgICAgICByZXR1cm4gQXJyYXlQYXR0ZXJuTm9kZTo6Y3Jl
YXRlKCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEFycmF5UGF0dGVybk5v
ZGUoKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBhcHBlbmRBcnJheVBhdHRlcm5Ta2lwRW50cnko
QXJyYXlQYXR0ZXJuIG5vZGUsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24pCkBAIC03
NTUsMzIgKzc0OSwzMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGVuZEFycmF5UGF0dGVybkVu
dHJ5KEFycmF5UGF0dGVybiBub2RlLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBE
ZXN0cnVjdHVyaW5nUGF0dGVybiBwYXR0ZXJuLCBFeHByZXNzaW9uTm9kZSogZGVmYXVsdFZhbHVl
KQogICAgIHsKLSAgICAgICAgbm9kZS0+YXBwZW5kSW5kZXgoQXJyYXlQYXR0ZXJuTm9kZTo6Qmlu
ZGluZ1R5cGU6OkVsZW1lbnQsIGxvY2F0aW9uLCBwYXR0ZXJuLmdldCgpLCBkZWZhdWx0VmFsdWUp
OworICAgICAgICBub2RlLT5hcHBlbmRJbmRleChBcnJheVBhdHRlcm5Ob2RlOjpCaW5kaW5nVHlw
ZTo6RWxlbWVudCwgbG9jYXRpb24sIHBhdHRlcm4sIGRlZmF1bHRWYWx1ZSk7CiAgICAgfQogCiAg
ICAgdm9pZCBhcHBlbmRBcnJheVBhdHRlcm5SZXN0RW50cnkoQXJyYXlQYXR0ZXJuIG5vZGUsIGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIERlc3RydWN0dXJpbmdQYXR0ZXJuIHBhdHRl
cm4pCiAgICAgewotICAgICAgICBub2RlLT5hcHBlbmRJbmRleChBcnJheVBhdHRlcm5Ob2RlOjpC
aW5kaW5nVHlwZTo6UmVzdEVsZW1lbnQsIGxvY2F0aW9uLCBwYXR0ZXJuLmdldCgpLCBudWxscHRy
KTsKKyAgICAgICAgbm9kZS0+YXBwZW5kSW5kZXgoQXJyYXlQYXR0ZXJuTm9kZTo6QmluZGluZ1R5
cGU6OlJlc3RFbGVtZW50LCBsb2NhdGlvbiwgcGF0dGVybiwgbnVsbHB0cik7CiAgICAgfQogCiAg
ICAgdm9pZCBmaW5pc2hBcnJheVBhdHRlcm4oQXJyYXlQYXR0ZXJuIG5vZGUsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKICAgICB7Ci0gICAgICAgIHNldEV4Y2VwdGlvbkxv
Y2F0aW9uKG5vZGUuZ2V0KCksIGRpdm90U3RhcnQsIGRpdm90LCBkaXZvdEVuZCk7CisgICAgICAg
IHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIGRpdm90U3RhcnQsIGRpdm90LCBkaXZvdEVuZCk7
CiAgICAgfQogICAgIAogICAgIE9iamVjdFBhdHRlcm4gY3JlYXRlT2JqZWN0UGF0dGVybihjb25z
dCBKU1Rva2VuTG9jYXRpb24mKQogICAgIHsKLSAgICAgICAgcmV0dXJuIE9iamVjdFBhdHRlcm5O
b2RlOjpjcmVhdGUoKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgT2JqZWN0
UGF0dGVybk5vZGUoKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBhcHBlbmRPYmplY3RQYXR0ZXJu
RW50cnkoT2JqZWN0UGF0dGVybiBub2RlLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9u
LCBib29sIHdhc1N0cmluZywgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgRGVzdHJ1Y3R1
cmluZ1BhdHRlcm4gcGF0dGVybiwgRXhwcmVzc2lvbk5vZGUqIGRlZmF1bHRWYWx1ZSkKICAgICB7
Ci0gICAgICAgIG5vZGUtPmFwcGVuZEVudHJ5KGxvY2F0aW9uLCBpZGVudGlmaWVyLCB3YXNTdHJp
bmcsIHBhdHRlcm4uZ2V0KCksIGRlZmF1bHRWYWx1ZSk7CisgICAgICAgIG5vZGUtPmFwcGVuZEVu
dHJ5KGxvY2F0aW9uLCBpZGVudGlmaWVyLCB3YXNTdHJpbmcsIHBhdHRlcm4sIGRlZmF1bHRWYWx1
ZSk7CiAgICAgfQogICAgIAogICAgIEJpbmRpbmdQYXR0ZXJuIGNyZWF0ZUJpbmRpbmdMb2NhdGlv
bihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiBib3VuZFByb3BlcnR5
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlbmQp
CiAgICAgewotICAgICAgICByZXR1cm4gQmluZGluZ05vZGU6OmNyZWF0ZShib3VuZFByb3BlcnR5
LCBzdGFydCwgZW5kKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgQmluZGlu
Z05vZGUoYm91bmRQcm9wZXJ0eSwgc3RhcnQsIGVuZCk7CiAgICAgfQogCiAgICAgdm9pZCBzZXRF
bmRPZmZzZXQoTm9kZSogbm9kZSwgaW50IG9mZnNldCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTGV4ZXIuY3BwCShyZXZpc2lvbiAxODY4MDgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL0xleGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDk0LDcgKzQ5NCw3IEBA
IHN0YXRpYyBjb25zdCBMQ2hhciBzaW5nbGVDaGFyYWN0ZXJFc2NhcGUKIAogdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CiBMZXhlcjxUPjo6TGV4ZXIoVk0qIHZtLCBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1
aWx0aW5Nb2RlKQotICAgIDogbV9pc1JlcGFyc2luZyhmYWxzZSkKKyAgICA6IG1faXNSZXBhcnNp
bmdGdW5jdGlvbihmYWxzZSkKICAgICAsIG1fdm0odm0pCiAgICAgLCBtX3BhcnNpbmdCdWlsdGlu
RnVuY3Rpb24oYnVpbHRpbk1vZGUgPT0gSlNQYXJzZXJCdWlsdGluTW9kZTo6QnVpbHRpbikKIHsK
QEAgLTE3MTUsNyArMTcxNSw2IEBAIGJvb2wgTGV4ZXI8VD46Om5leHRUb2tlbklzQ29sb24oKQog
ICAgIHJldHVybiBjb2RlIDwgbV9jb2RlRW5kICYmICpjb2RlID09ICc6JzsKIH0KIAotI2lmIEVO
QUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIHZv
aWQgTGV4ZXI8VD46OnNldFRva2VuUG9zaXRpb24oSlNUb2tlbiogdG9rZW5SZWNvcmQpCiB7CkBA
IC0xNzI1LDcgKzE3MjQsNiBAQCB2b2lkIExleGVyPFQ+OjpzZXRUb2tlblBvc2l0aW9uKEpTVG9r
ZW4qCiAgICAgdG9rZW5EYXRhLT5saW5lU3RhcnRPZmZzZXQgPSBjdXJyZW50TGluZVN0YXJ0T2Zm
c2V0KCk7CiAgICAgQVNTRVJUKHRva2VuRGF0YS0+b2Zmc2V0ID49IHRva2VuRGF0YS0+bGluZVN0
YXJ0T2Zmc2V0KTsKIH0KLSNlbmRpZgogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIEpTVG9rZW5U
eXBlIExleGVyPFQ+OjpsZXgoSlNUb2tlbiogdG9rZW5SZWNvcmQsIHVuc2lnbmVkIGxleGVyRmxh
Z3MsIGJvb2wgc3RyaWN0TW9kZSkKQEAgLTI0MTEsNyArMjQwOSw3IEBAIHZvaWQgTGV4ZXI8VD46
OmNsZWFyKCkKICAgICBWZWN0b3I8VUNoYXI+IG5ld0J1ZmZlckZvclJhd1RlbXBsYXRlU3RyaW5n
MTY7CiAgICAgbV9idWZmZXJGb3JSYXdUZW1wbGF0ZVN0cmluZzE2LnN3YXAobmV3QnVmZmVyRm9y
UmF3VGVtcGxhdGVTdHJpbmcxNik7CiAKLSAgICBtX2lzUmVwYXJzaW5nID0gZmFsc2U7CisgICAg
bV9pc1JlcGFyc2luZ0Z1bmN0aW9uID0gZmFsc2U7CiB9CiAKIC8vIEluc3RhbnRpYXRlIHRoZSB0
d28gZmxhdm9ycyBvZiBMZXhlciB3ZSBuZWVkIGluc3RlYWQgb2YgcHV0dGluZyBtb3N0IG9mIHRo
aXMgZmlsZSBpbiBMZXhlci5oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xl
eGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5o
CShyZXZpc2lvbiAxODY4MDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTg0LDEyICs4NCwxMCBAQCBwdWJsaWM6CiAKICAgICAvLyBG
dW5jdGlvbnMgdG8gc2V0IHVwIHBhcnNpbmcuCiAgICAgdm9pZCBzZXRDb2RlKGNvbnN0IFNvdXJj
ZUNvZGUmLCBQYXJzZXJBcmVuYSopOwotICAgIHZvaWQgc2V0SXNSZXBhcnNpbmcoKSB7IG1faXNS
ZXBhcnNpbmcgPSB0cnVlOyB9Ci0gICAgYm9vbCBpc1JlcGFyc2luZygpIGNvbnN0IHsgcmV0dXJu
IG1faXNSZXBhcnNpbmc7IH0KKyAgICB2b2lkIHNldElzUmVwYXJzaW5nRnVuY3Rpb24oKSB7IG1f
aXNSZXBhcnNpbmdGdW5jdGlvbiA9IHRydWU7IH0KKyAgICBib29sIGlzUmVwYXJzaW5nRnVuY3Rp
b24oKSBjb25zdCB7IHJldHVybiBtX2lzUmVwYXJzaW5nRnVuY3Rpb247IH0KIAotI2lmIEVOQUJM
RShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCiAgICAgdm9pZCBzZXRUb2tlblBvc2l0aW9uKEpT
VG9rZW4qIHRva2VuUmVjb3JkKTsKLSNlbmRpZgogICAgIEpTVG9rZW5UeXBlIGxleChKU1Rva2Vu
KiwgdW5zaWduZWQsIGJvb2wgc3RyaWN0TW9kZSk7CiAgICAgYm9vbCBuZXh0VG9rZW5Jc0NvbG9u
KCk7CiAgICAgaW50IGxpbmVOdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX2xpbmVOdW1iZXI7IH0K
QEAgLTIyNCw3ICsyMjIsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IFQqIG1fbGluZVN0YXJ0Owog
ICAgIEpTVGV4dFBvc2l0aW9uIG1fcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZTsKICAgICBKU1Rv
a2VuTG9jYXRpb24gbV9sYXN0VG9ja2VuTG9jYXRpb247Ci0gICAgYm9vbCBtX2lzUmVwYXJzaW5n
OworICAgIGJvb2wgbV9pc1JlcGFyc2luZ0Z1bmN0aW9uOwogICAgIGJvb2wgbV9hdExpbmVTdGFy
dDsKICAgICBib29sIG1fZXJyb3I7CiAgICAgU3RyaW5nIG1fbGV4RXJyb3JNZXNzYWdlOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgJ
KHJldmlzaW9uIDE4NjgwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNv
bnN0cnVjdG9ycy5oCSh3b3JraW5nIGNvcHkpCkBAIC04MjAsMzQgKzgyMCwyMiBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFBhcmFtZXRlck5vZGU6OlBhcmFt
ZXRlck5vZGUoUGFzc1JlZlB0cjxEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU+IHBhdHRlcm4pCi0g
ICAgICAgIDogbV9wYXR0ZXJuKHBhdHRlcm4pCi0gICAgICAgICwgbV9uZXh0KDApCisgICAgaW5s
aW5lIEZ1bmN0aW9uUGFyYW1ldGVyczo6RnVuY3Rpb25QYXJhbWV0ZXJzKCkKICAgICB7Ci0gICAg
ICAgIEFTU0VSVChtX3BhdHRlcm4pOwogICAgIH0KIAotICAgIGlubGluZSBQYXJhbWV0ZXJOb2Rl
OjpQYXJhbWV0ZXJOb2RlKFBhcmFtZXRlck5vZGUqIHByZXZpb3VzLCBQYXNzUmVmUHRyPERlc3Ry
dWN0dXJpbmdQYXR0ZXJuTm9kZT4gcGF0dGVybikKLSAgICAgICAgOiBtX3BhdHRlcm4ocGF0dGVy
bikKLSAgICAgICAgLCBtX25leHQoMCkKLSAgICB7Ci0gICAgICAgIHByZXZpb3VzLT5tX25leHQg
PSB0aGlzOwotICAgICAgICBBU1NFUlQobV9wYXR0ZXJuKTsKLSAgICAgICAgQVNTRVJUKHByZXZp
b3VzLT5tX3BhdHRlcm4pOwotICAgIH0KLQotICAgIGlubGluZSBGdW5jRXhwck5vZGU6OkZ1bmNF
eHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCwgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgY29uc3QgU291cmNlQ29kZSYgc291cmNl
LCBQYXJhbWV0ZXJOb2RlKiBwYXJhbWV0ZXIpCisgICAgaW5saW5lIEZ1bmNFeHByTm9kZTo6RnVu
Y0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50LCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UpCiAgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9ib2R5
KGJvZHkpCiAgICAgewotICAgICAgICBtX2JvZHktPmZpbmlzaFBhcnNpbmcoc291cmNlLCBwYXJh
bWV0ZXIsIGlkZW50LCBGdW5jdGlvbkV4cHJlc3Npb24pOworICAgICAgICBtX2JvZHktPmZpbmlz
aFBhcnNpbmcoc291cmNlLCBpZGVudCwgRnVuY3Rpb25FeHByZXNzaW9uKTsKICAgICB9CiAKLSAg
ICBpbmxpbmUgRnVuY0RlY2xOb2RlOjpGdW5jRGVjbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEZ1bmN0aW9uQm9keU5vZGUqIGJv
ZHksIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyYW1ldGVyTm9kZSogcGFyYW1ldGVyKQor
ICAgIGlubGluZSBGdW5jRGVjbE5vZGU6OkZ1bmNEZWNsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRnVuY3Rpb25Cb2R5Tm9kZSog
Ym9keSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQogICAgICAgICA6IFN0YXRlbWVudE5vZGUo
bG9jYXRpb24pCiAgICAgICAgICwgbV9ib2R5KGJvZHkpCiAgICAgewotICAgICAgICBtX2JvZHkt
PmZpbmlzaFBhcnNpbmcoc291cmNlLCBwYXJhbWV0ZXIsIGlkZW50LCBGdW5jdGlvbkRlY2xhcmF0
aW9uKTsKKyAgICAgICAgbV9ib2R5LT5maW5pc2hQYXJzaW5nKHNvdXJjZSwgaWRlbnQsIEZ1bmN0
aW9uRGVjbGFyYXRpb24pOwogICAgIH0KIAogI2lmIEVOQUJMRShFUzZfQ0xBU1NfU1lOVEFYKQpA
QCAtOTQzLDI2ICs5MzEsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KICAgICAK
LSAgICBpbmxpbmUgUmVmPEFycmF5UGF0dGVybk5vZGU+IEFycmF5UGF0dGVybk5vZGU6OmNyZWF0
ZSgpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBcnJheVBhdHRlcm5Ob2Rl
KTsKLSAgICB9Ci0gICAgCiAgICAgaW5saW5lIE9iamVjdFBhdHRlcm5Ob2RlOjpPYmplY3RQYXR0
ZXJuTm9kZSgpCiAgICAgICAgIDogRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKCkKICAgICB7CiAg
ICAgfQogICAgIAotICAgIGlubGluZSBSZWY8T2JqZWN0UGF0dGVybk5vZGU+IE9iamVjdFBhdHRl
cm5Ob2RlOjpjcmVhdGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgT2Jq
ZWN0UGF0dGVybk5vZGUpOwotICAgIH0KLQotICAgIGlubGluZSBSZWY8QmluZGluZ05vZGU+IEJp
bmRpbmdOb2RlOjpjcmVhdGUoY29uc3QgSWRlbnRpZmllciYgYm91bmRQcm9wZXJ0eSwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIHN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZW5kKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmluZGluZ05vZGUoYm91bmRQcm9wZXJ0eSwg
c3RhcnQsIGVuZCkpOwotICAgIH0KLSAgICAKICAgICBpbmxpbmUgQmluZGluZ05vZGU6OkJpbmRp
bmdOb2RlKGNvbnN0IElkZW50aWZpZXImIGJvdW5kUHJvcGVydHksIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBzdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVuZCkKICAgICAgICAgOiBEZXN0cnVj
dHVyaW5nUGF0dGVybk5vZGUoKQogICAgICAgICAsIG1fZGl2b3RTdGFydChzdGFydCkKQEAgLTk3
MSw3ICs5NDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogICAgIAotICAgIGlu
bGluZSBEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5vZGU6OkRlc3RydWN0dXJpbmdBc3NpZ25tZW50
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQYXNzUmVmUHRyPERlc3RydWN0
dXJpbmdQYXR0ZXJuTm9kZT4gYmluZGluZ3MsIEV4cHJlc3Npb25Ob2RlKiBpbml0aWFsaXplcikK
KyAgICBpbmxpbmUgRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlOjpEZXN0cnVjdHVyaW5nQXNz
aWdubWVudE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRGVzdHJ1Y3R1cmlu
Z1BhdHRlcm5Ob2RlKiBiaW5kaW5ncywgRXhwcmVzc2lvbk5vZGUqIGluaXRpYWxpemVyKQogICAg
ICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fYmluZGluZ3MoYmlu
ZGluZ3MpCiAgICAgICAgICwgbV9pbml0aWFsaXplcihpbml0aWFsaXplcikKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCShyZXZpc2lvbiAxODY4MDgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE3
LDcgKzExNyw3IEBAIFN0YXRlbWVudE5vZGUqIFNjb3BlTm9kZTo6c2luZ2xlU3RhdGVtZW4KIAog
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb2dyYW1Ob2RlIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAKLVByb2dyYW1Ob2RlOjpQcm9ncmFtTm9kZShQYXJzZXJBcmVu
YSYgcGFyc2VyQXJlbmEsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVu
c2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayYgdmFy
U3RhY2ssIEZ1bmN0aW9uU3RhY2smIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRW
YXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVz
LCBpbnQgbnVtQ29uc3RhbnRzKQorUHJvZ3JhbU5vZGU6OlByb2dyYW1Ob2RlKFBhcnNlckFyZW5h
JiBwYXJzZXJBcmVuYSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5z
aWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrJiB2YXJT
dGFjaywgRnVuY3Rpb25TdGFjayYgZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZh
cmlhYmxlcywgRnVuY3Rpb25QYXJhbWV0ZXJzKiwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBD
b2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCiAgICAgOiBTY29wZU5vZGUo
cGFyc2VyQXJlbmEsIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBzb3VyY2UsIGNoaWxkcmVu
LCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgZmVhdHVyZXMsIG51bUNv
bnN0YW50cykKICAgICAsIG1fc3RhcnRDb2x1bW4oc3RhcnRDb2x1bW4pCiAgICAgLCBtX2VuZENv
bHVtbihlbmRDb2x1bW4pCkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBQcm9ncmFtTm9kZTo6c2V0
Q2xvc2VkVmFyaWFibGVzKFZlYwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
RXZhbE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotRXZhbE5vZGU6OkV2YWxO
b2RlKFBhcnNlckFyZW5hJiBwYXJzZXJBcmVuYSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFy
dExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCwg
dW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrJiB2
YXJTdGFjaywgRnVuY3Rpb25TdGFjayYgZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJl
ZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVy
ZXMsIGludCBudW1Db25zdGFudHMpCitFdmFsTm9kZTo6RXZhbE5vZGUoUGFyc2VyQXJlbmEmIHBh
cnNlckFyZW5hLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVkLCB1bnNpZ25lZCBlbmRDb2x1bW4s
IFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2smIHZhclN0YWNrLCBGdW5jdGlvblN0
YWNrJiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBGdW5jdGlv
blBhcmFtZXRlcnMqLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0
dXJlcywgaW50IG51bUNvbnN0YW50cykKICAgICA6IFNjb3BlTm9kZShwYXJzZXJBcmVuYSwgc3Rh
cnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIHNvdXJjZSwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5j
U3RhY2ssIGNhcHR1cmVkVmFyaWFibGVzLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKQogICAgICwg
bV9lbmRDb2x1bW4oZW5kQ29sdW1uKQogewpAQCAtMTM5LDM5ICsxMzksMTEgQEAgRXZhbE5vZGU6
OkV2YWxOb2RlKFBhcnNlckFyZW5hJiBwYXJzZXJBcgogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gRnVuY3Rpb25Cb2R5Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCi1SZWY8RnVuY3Rpb25QYXJhbWV0ZXJzPiBGdW5jdGlvblBhcmFtZXRlcnM6OmNyZWF0ZShQ
YXJhbWV0ZXJOb2RlKiBmaXJzdFBhcmFtZXRlcikKLXsKLSAgICB1bnNpZ25lZCBwYXJhbWV0ZXJD
b3VudCA9IDA7Ci0gICAgZm9yIChQYXJhbWV0ZXJOb2RlKiBwYXJhbWV0ZXIgPSBmaXJzdFBhcmFt
ZXRlcjsgcGFyYW1ldGVyOyBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXItPm5leHRQYXJhbSgpKQotICAg
ICAgICArK3BhcmFtZXRlckNvdW50OwotCi0gICAgc2l6ZV90IG9iamVjdFNpemUgPSBzaXplb2Yo
RnVuY3Rpb25QYXJhbWV0ZXJzKSAtIHNpemVvZih2b2lkKikgKyBzaXplb2YoRGVzdHJ1Y3R1cmlu
Z1BhdHRlcm5Ob2RlKikgKiBwYXJhbWV0ZXJDb3VudDsKLSAgICB2b2lkKiBzbG90ID0gZmFzdE1h
bGxvYyhvYmplY3RTaXplKTsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyAoc2xvdCkgRnVuY3Rp
b25QYXJhbWV0ZXJzKGZpcnN0UGFyYW1ldGVyLCBwYXJhbWV0ZXJDb3VudCkpOwotfQotCi1GdW5j
dGlvblBhcmFtZXRlcnM6OkZ1bmN0aW9uUGFyYW1ldGVycyhQYXJhbWV0ZXJOb2RlKiBmaXJzdFBh
cmFtZXRlciwgdW5zaWduZWQgc2l6ZSkKLSAgICA6IG1fc2l6ZShzaXplKQotewotICAgIHVuc2ln
bmVkIGkgPSAwOwotICAgIGZvciAoUGFyYW1ldGVyTm9kZSogcGFyYW1ldGVyID0gZmlyc3RQYXJh
bWV0ZXI7IHBhcmFtZXRlcjsgcGFyYW1ldGVyID0gcGFyYW1ldGVyLT5uZXh0UGFyYW0oKSkgewot
ICAgICAgICBhdXRvIHBhdHRlcm4gPSBwYXJhbWV0ZXItPnBhdHRlcm4oKTsKLSAgICAgICAgcGF0
dGVybi0+cmVmKCk7Ci0gICAgICAgIHBhdHRlcm5zKClbaSsrXSA9IHBhdHRlcm47Ci0gICAgfQot
fQotCi1GdW5jdGlvblBhcmFtZXRlcnM6On5GdW5jdGlvblBhcmFtZXRlcnMoKQotewotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3NpemU7ICsraSkKLSAgICAgICAgcGF0dGVybnMoKVtp
XS0+ZGVyZWYoKTsKLX0KLQogRnVuY3Rpb25Cb2R5Tm9kZTo6RnVuY3Rpb25Cb2R5Tm9kZSgKICAg
ICBQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgCiAg
ICAgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5zaWduZWQgc3RhcnRDb2x1
bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgCi0gICAgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBp
bnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsCi0gICAgYm9vbCBpc0lu
U3RyaWN0Q29udGV4dCwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCkKKyAgICBpbnQg
ZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRl
cnNTdGFydCwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgCisgICAgQ29uc3RydWN0b3JLaW5kIGNv
bnN0cnVjdG9yS2luZCwgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIEZ1bmN0aW9uUGFyc2VNb2Rl
IG1vZGUpCiAgICAgICAgIDogU3RhdGVtZW50Tm9kZShlbmRMb2NhdGlvbikKICAgICAgICAgLCBt
X3N0YXJ0Q29sdW1uKHN0YXJ0Q29sdW1uKQogICAgICAgICAsIG1fZW5kQ29sdW1uKGVuZENvbHVt
bikKQEAgLTE3OSwxNiArMTUxLDE3IEBAIEZ1bmN0aW9uQm9keU5vZGU6OkZ1bmN0aW9uQm9keU5v
ZGUoCiAgICAgICAgICwgbV9mdW5jdGlvbk5hbWVTdGFydChmdW5jdGlvbk5hbWVTdGFydCkKICAg
ICAgICAgLCBtX3BhcmFtZXRlcnNTdGFydChwYXJhbWV0ZXJzU3RhcnQpCiAgICAgICAgICwgbV9z
dGFydFN0YXJ0T2Zmc2V0KHN0YXJ0TG9jYXRpb24uc3RhcnRPZmZzZXQpCisgICAgICAgICwgbV9w
YXJhbWV0ZXJDb3VudChwYXJhbWV0ZXJDb3VudCkKKyAgICAgICAgLCBtX3BhcnNlTW9kZShtb2Rl
KQogICAgICAgICAsIG1faXNJblN0cmljdENvbnRleHQoaXNJblN0cmljdENvbnRleHQpCiAgICAg
ICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9y
S2luZCkpCiB7CiAgICAgQVNTRVJUKG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKTsKIH0KIAotdm9pZCBGdW5jdGlvbkJvZHlOb2RlOjpm
aW5pc2hQYXJzaW5nKGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyYW1ldGVyTm9kZSogZmly
c3RQYXJhbWV0ZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBlbnVtIEZ1bmN0aW9uTW9kZSBm
dW5jdGlvbk1vZGUpCit2b2lkIEZ1bmN0aW9uQm9keU5vZGU6OmZpbmlzaFBhcnNpbmcoY29uc3Qg
U291cmNlQ29kZSYgc291cmNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgZW51bSBGdW5jdGlv
bk1vZGUgZnVuY3Rpb25Nb2RlKQogewogICAgIG1fc291cmNlID0gc291cmNlOwotICAgIG1fcGFy
YW1ldGVycyA9IEZ1bmN0aW9uUGFyYW1ldGVyczo6Y3JlYXRlKGZpcnN0UGFyYW1ldGVyKTsKICAg
ICBtX2lkZW50ID0gaWRlbnQ7CiAgICAgbV9mdW5jdGlvbk1vZGUgPSBmdW5jdGlvbk1vZGU7CiB9
CkBAIC0yMDEsMTcgKzE3NCwxNyBAQCB2b2lkIEZ1bmN0aW9uQm9keU5vZGU6OnNldEVuZFBvc2l0
aW9uKEpTCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbk5vZGUg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotRnVuY3Rpb25Ob2RlOjpGdW5jdGlvbk5v
ZGUoUGFyc2VyQXJlbmEmIHBhcnNlckFyZW5hLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0
TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVkIHN0
YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwg
VmFyU3RhY2smIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrJiBmdW5jU3RhY2ssIElkZW50aWZpZXJT
ZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBDb2Rl
RmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCitGdW5jdGlvbk5vZGU6OkZ1bmN0
aW9uTm9kZShQYXJzZXJBcmVuYSYgcGFyc2VyQXJlbmEsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
c3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5zaWdu
ZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMqIGNoaWxk
cmVuLCBWYXJTdGFjayYgdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2smIGZ1bmNTdGFjaywgSWRlbnRp
ZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIEZ1bmN0aW9uUGFyYW1ldGVycyogcGFyYW1ldGVy
cywgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBp
bnQgbnVtQ29uc3RhbnRzKQogICAgIDogU2NvcGVOb2RlKHBhcnNlckFyZW5hLCBzdGFydExvY2F0
aW9uLCBlbmRMb2NhdGlvbiwgc291cmNlQ29kZSwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3Rh
Y2ssIGNhcHR1cmVkVmFyaWFibGVzLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKQorICAgICwgbV9w
YXJhbWV0ZXJzKHBhcmFtZXRlcnMpCiAgICAgLCBtX3N0YXJ0Q29sdW1uKHN0YXJ0Q29sdW1uKQog
ICAgICwgbV9lbmRDb2x1bW4oZW5kQ29sdW1uKQogewogfQogCi12b2lkIEZ1bmN0aW9uTm9kZTo6
ZmluaXNoUGFyc2luZyhQYXNzUmVmUHRyPEZ1bmN0aW9uUGFyYW1ldGVycz4gcGFyYW1ldGVycywg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGVudW0gRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSkK
K3ZvaWQgRnVuY3Rpb25Ob2RlOjpmaW5pc2hQYXJzaW5nKGNvbnN0IElkZW50aWZpZXImIGlkZW50
LCBlbnVtIEZ1bmN0aW9uTW9kZSBmdW5jdGlvbk1vZGUpCiB7CiAgICAgQVNTRVJUKCFzb3VyY2Uo
KS5pc051bGwoKSk7Ci0gICAgbV9wYXJhbWV0ZXJzID0gcGFyYW1ldGVyczsKICAgICBtX2lkZW50
ID0gaWRlbnQ7CiAgICAgbV9mdW5jdGlvbk1vZGUgPSBmdW5jdGlvbk1vZGU7CiB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCShyZXZpc2lvbiAxODY4MDgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYg
KzQxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgQXJndW1lbnRMaXN0Tm9kZTsKICAg
ICBjbGFzcyBCeXRlY29kZUdlbmVyYXRvcjsKICAgICBjbGFzcyBGdW5jdGlvbkJvZHlOb2RlOwor
ICAgIGNsYXNzIEZ1bmN0aW9uUGFyYW1ldGVyczsKICAgICBjbGFzcyBMYWJlbDsKICAgICBjbGFz
cyBQcm9wZXJ0eUxpc3ROb2RlOwogICAgIGNsYXNzIFJlYWRNb2RpZnlSZXNvbHZlTm9kZTsKQEAg
LTE1MTYsMTkgKzE1MTcsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3RhdGVtZW50Tm9k
ZSogbV9maW5hbGx5QmxvY2s7CiAgICAgfTsKIAotICAgIGNsYXNzIFBhcmFtZXRlck5vZGUgOiBw
dWJsaWMgUGFyc2VyQXJlbmFEZWxldGFibGUgewotICAgIHB1YmxpYzoKLSAgICAgICAgUGFyYW1l
dGVyTm9kZShQYXNzUmVmUHRyPERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZT4pOwotICAgICAgICBQ
YXJhbWV0ZXJOb2RlKFBhcmFtZXRlck5vZGUqLCBQYXNzUmVmUHRyPERlc3RydWN0dXJpbmdQYXR0
ZXJuTm9kZT4pOwotCi0gICAgICAgIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogcGF0dGVybigp
IGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybi5nZXQoKTsgfQotICAgICAgICBQYXJhbWV0ZXJOb2Rl
KiBuZXh0UGFyYW0oKSBjb25zdCB7IHJldHVybiBtX25leHQ7IH0KLQotICAgIHByaXZhdGU6Ci0g
ICAgICAgIFJlZlB0cjxEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU+IG1fcGF0dGVybjsKLSAgICAg
ICAgUGFyYW1ldGVyTm9kZSogbV9uZXh0OwotICAgIH07Ci0KICAgICBjbGFzcyBTY29wZU5vZGUg
OiBwdWJsaWMgU3RhdGVtZW50Tm9kZSwgcHVibGljIFBhcnNlckFyZW5hUm9vdCB7CiAgICAgcHVi
bGljOgogICAgICAgICB0eXBlZGVmIERlY2xhcmF0aW9uU3RhY2tzOjpWYXJTdGFjayBWYXJTdGFj
azsKQEAgLTE1OTgsNyArMTU4Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUHJv
Z3JhbU5vZGUgOiBwdWJsaWMgU2NvcGVOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFByb2dy
YW1Ob2RlKFBhcnNlckFyZW5hJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBlbmQsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRD
b2x1bW4sIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2smLCBGdW5jdGlvblN0YWNrJiwgSWRlbnRp
ZmllclNldCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFu
dHMpOworICAgICAgICBQcm9ncmFtTm9kZShQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCB1bnNpZ25lZCBzdGFydENv
bHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrJiwgRnVu
Y3Rpb25TdGFjayYsIElkZW50aWZpZXJTZXQmLCBGdW5jdGlvblBhcmFtZXRlcnMqLCBjb25zdCBT
b3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKIAogICAgICAgICB1
bnNpZ25lZCBzdGFydENvbHVtbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRDb2x1bW47IH0KICAg
ICAgICAgdW5zaWduZWQgZW5kQ29sdW1uKCkgY29uc3QgeyByZXR1cm4gbV9lbmRDb2x1bW47IH0K
QEAgLTE2MTcsNyArMTYwNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRXZhbE5v
ZGUgOiBwdWJsaWMgU2NvcGVOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEV2YWxOb2RlKFBh
cnNlckFyZW5hJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBlbmQsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNv
dXJjZUVsZW1lbnRzKiwgVmFyU3RhY2smLCBGdW5jdGlvblN0YWNrJiwgSWRlbnRpZmllclNldCYs
IGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOworICAg
ICAgICBFdmFsTm9kZShQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQs
IGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWdu
ZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrJiwgRnVuY3Rpb25TdGFjayYs
IElkZW50aWZpZXJTZXQmLCBGdW5jdGlvblBhcmFtZXRlcnMqLCBjb25zdCBTb3VyY2VDb2RlJiwg
Q29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKIAogICAgICAgICBBTFdBWVNfSU5MSU5F
IHVuc2lnbmVkIHN0YXJ0Q29sdW1uKCkgY29uc3QgeyByZXR1cm4gMDsgfQogICAgICAgICB1bnNp
Z25lZCBlbmRDb2x1bW4oKSBjb25zdCB7IHJldHVybiBtX2VuZENvbHVtbjsgfQpAQCAtMTYzMCwy
MyArMTYxOCwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdW5zaWduZWQgbV9lbmRDb2x1
bW47CiAgICAgfTsKIAotICAgIGNsYXNzIEZ1bmN0aW9uUGFyYW1ldGVycyA6IHB1YmxpYyBSZWZD
b3VudGVkPEZ1bmN0aW9uUGFyYW1ldGVycz4gewotICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKLSAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRnVuY3Rpb25QYXJhbWV0ZXJzKTsK
KyAgICBjbGFzcyBGdW5jdGlvblBhcmFtZXRlcnMgOiBwdWJsaWMgUGFyc2VyQXJlbmFEZWxldGFi
bGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFJlZjxGdW5jdGlvblBhcmFtZXRlcnM+
IGNyZWF0ZShQYXJhbWV0ZXJOb2RlKik7Ci0gICAgICAgIH5GdW5jdGlvblBhcmFtZXRlcnMoKTsK
LQotICAgICAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9Ci0gICAg
ICAgIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogYXQodW5zaWduZWQgaW5kZXgpIHsgQVNTRVJU
KGluZGV4IDwgbV9zaXplKTsgcmV0dXJuIHBhdHRlcm5zKClbaW5kZXhdOyB9CisgICAgICAgIEZ1
bmN0aW9uUGFyYW1ldGVycygpOworICAgICAgICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIHNpemUo
KSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm5zLnNpemUoKTsgfQorICAgICAgICBBTFdBWVNfSU5M
SU5FIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogYXQodW5zaWduZWQgaW5kZXgpIHsgcmV0dXJu
IG1fcGF0dGVybnNbaW5kZXhdOyB9CisgICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCBhcHBlbmQo
RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiBwYXR0ZXJuKSB7IEFTU0VSVChwYXR0ZXJuKTsgbV9w
YXR0ZXJucy5hcHBlbmQocGF0dGVybik7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEZ1bmN0
aW9uUGFyYW1ldGVycyhQYXJhbWV0ZXJOb2RlKiwgdW5zaWduZWQgc2l6ZSk7Ci0KLSAgICAgICAg
RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiogcGF0dGVybnMoKSB7IHJldHVybiAmbV9zdG9yYWdl
OyB9CiAKLSAgICAgICAgdW5zaWduZWQgbV9zaXplOwotICAgICAgICBEZXN0cnVjdHVyaW5nUGF0
dGVybk5vZGUqIG1fc3RvcmFnZTsKKyAgICAgICAgVmVjdG9yPERlc3RydWN0dXJpbmdQYXR0ZXJu
Tm9kZSosIDM+IG1fcGF0dGVybnM7CiAgICAgfTsKIAogICAgIGNsYXNzIEZ1bmN0aW9uQm9keU5v
ZGUgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSwgcHVibGljIFBhcnNlckFyZW5hRGVsZXRh
YmxlIHsKQEAgLTE2NTcsMTMgKzE2MzgsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICBQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgZW5kLCAKICAgICAgICAgICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNp
Z25lZCBlbmRDb2x1bW4sIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgCiAgICAgICAgICAgICBp
bnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIGJvb2wgaXNJblN0cmlj
dENvbnRleHQsIAotICAgICAgICAgICAgQ29uc3RydWN0b3JLaW5kKTsKLQotICAgICAgICBGdW5j
dGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMu
Z2V0KCk7IH0KKyAgICAgICAgICAgIENvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQsIEZ1bmN0aW9u
UGFyc2VNb2RlKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKIAotICAgICAgICB2b2lkIGZp
bmlzaFBhcnNpbmcoY29uc3QgU291cmNlQ29kZSYsIFBhcmFtZXRlck5vZGUqLCBjb25zdCBJZGVu
dGlmaWVyJiwgRnVuY3Rpb25Nb2RlKTsKKyAgICAgICAgdm9pZCBmaW5pc2hQYXJzaW5nKGNvbnN0
IFNvdXJjZUNvZGUmLCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25Nb2RlKTsKICAgICAgICAg
CiAgICAgICAgIHZvaWQgb3ZlcnJpZGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSB7IG1f
aWRlbnQgPSBpZGVudDsgfQogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCgpIHsgcmV0
dXJuIG1faWRlbnQ7IH0KQEAgLTE2NzcsNiArMTY1Niw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBpbnQgcGFyYW1ldGVyc1N0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzU3Rh
cnQ7IH0KICAgICAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4oKSBjb25zdCB7IHJldHVybiBtX3N0
YXJ0Q29sdW1uOyB9CiAgICAgICAgIHVuc2lnbmVkIGVuZENvbHVtbigpIGNvbnN0IHsgcmV0dXJu
IG1fZW5kQ29sdW1uOyB9CisgICAgICAgIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50KCkgY29uc3Qg
eyByZXR1cm4gbV9wYXJhbWV0ZXJDb3VudDsgfQorICAgICAgICBGdW5jdGlvblBhcnNlTW9kZSBw
YXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3BhcnNlTW9kZTsgfQogCiAgICAgICAgIHZvaWQg
c2V0RW5kUG9zaXRpb24oSlNUZXh0UG9zaXRpb24pOwogCkBAIC0xNjkwLDcgKzE2NzEsNiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgSWRlbnRpZmllciBtX2lkZW50OwogICAgICAgICBJZGVu
dGlmaWVyIG1faW5mZXJyZWROYW1lOwogICAgICAgICBGdW5jdGlvbk1vZGUgbV9mdW5jdGlvbk1v
ZGU7Ci0gICAgICAgIFJlZlB0cjxGdW5jdGlvblBhcmFtZXRlcnM+IG1fcGFyYW1ldGVyczsKICAg
ICAgICAgdW5zaWduZWQgbV9zdGFydENvbHVtbjsKICAgICAgICAgdW5zaWduZWQgbV9lbmRDb2x1
bW47CiAgICAgICAgIGludCBtX2Z1bmN0aW9uS2V5d29yZFN0YXJ0OwpAQCAtMTY5OCwxOSArMTY3
OCwyMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaW50IG1fcGFyYW1ldGVyc1N0YXJ0Owog
ICAgICAgICBTb3VyY2VDb2RlIG1fc291cmNlOwogICAgICAgICBpbnQgbV9zdGFydFN0YXJ0T2Zm
c2V0OworICAgICAgICB1bnNpZ25lZCBtX3BhcmFtZXRlckNvdW50OworICAgICAgICBGdW5jdGlv
blBhcnNlTW9kZSBtX3BhcnNlTW9kZTsKICAgICAgICAgdW5zaWduZWQgbV9pc0luU3RyaWN0Q29u
dGV4dCA6IDE7CiAgICAgICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsKICAgICB9
OwogCiAgICAgY2xhc3MgRnVuY3Rpb25Ob2RlIGZpbmFsIDogcHVibGljIFNjb3BlTm9kZSB7CiAg
ICAgcHVibGljOgotICAgICAgICBGdW5jdGlvbk5vZGUoUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgdW5zaWduZWQg
c3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFj
ayYsIEZ1bmN0aW9uU3RhY2smLCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENv
ZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CisgICAgICAgIEZ1bmN0aW9uTm9kZShQYXJz
ZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgZW5kLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3Vy
Y2VFbGVtZW50cyosIFZhclN0YWNrJiwgRnVuY3Rpb25TdGFjayYsIElkZW50aWZpZXJTZXQmLCBG
dW5jdGlvblBhcmFtZXRlcnMqLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQg
bnVtQ29uc3RhbnRzKTsKIAotICAgICAgICBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMo
KSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMuZ2V0KCk7IH0KKyAgICAgICAgRnVuY3Rpb25Q
YXJhbWV0ZXJzKiBwYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzOyB9CiAK
ICAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CiAKLSAgICAgICAgdm9pZCBmaW5pc2hQYXJzaW5nKFBh
c3NSZWZQdHI8RnVuY3Rpb25QYXJhbWV0ZXJzPiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9u
TW9kZSk7CisgICAgICAgIHZvaWQgZmluaXNoUGFyc2luZyhjb25zdCBJZGVudGlmaWVyJiwgRnVu
Y3Rpb25Nb2RlKTsKICAgICAgICAgCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50KCkg
eyByZXR1cm4gbV9pZGVudDsgfQogCkBAIC0xNzI0LDE0ICsxNzA2LDE0IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIHByaXZhdGU6CiAgICAgICAgIElkZW50aWZpZXIgbV9pZGVudDsKICAgICAgICAg
RnVuY3Rpb25Nb2RlIG1fZnVuY3Rpb25Nb2RlOwotICAgICAgICBSZWZQdHI8RnVuY3Rpb25QYXJh
bWV0ZXJzPiBtX3BhcmFtZXRlcnM7CisgICAgICAgIEZ1bmN0aW9uUGFyYW1ldGVycyogbV9wYXJh
bWV0ZXJzOwogICAgICAgICB1bnNpZ25lZCBtX3N0YXJ0Q29sdW1uOwogICAgICAgICB1bnNpZ25l
ZCBtX2VuZENvbHVtbjsKICAgICB9OwogCiAgICAgY2xhc3MgRnVuY0V4cHJOb2RlIDogcHVibGlj
IEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEZ1bmNFeHByTm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25Cb2R5Tm9kZSos
IGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJhbWV0ZXJOb2RlKiA9IDApOworICAgICAgICBGdW5jRXhw
ck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9u
Qm9keU5vZGUqLCBjb25zdCBTb3VyY2VDb2RlJik7CiAKICAgICAgICAgRnVuY3Rpb25Cb2R5Tm9k
ZSogYm9keSgpIHsgcmV0dXJuIG1fYm9keTsgfQogCkBAIC0xNzYyLDExICsxNzQ0LDkgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgfTsKICNlbmRpZgogCi0gICAgY2xhc3MgRGVzdHJ1Y3R1cmluZ1Bh
dHRlcm5Ob2RlIDogcHVibGljIFJlZkNvdW50ZWQ8RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlPiB7
Ci0gICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSk7
Ci0gICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotCisgICAgY2xhc3MgRGVzdHJ1Y3R1
cmluZ1BhdHRlcm5Ob2RlIDogcHVibGljIFBhcnNlckFyZW5hRGVsZXRhYmxlIHsKICAgICBwdWJs
aWM6CisgICAgICAgIHZpcnR1YWwgfkRlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSgpIHsgfQogICAg
ICAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdEJvdW5kSWRlbnRpZmllcnMoVmVjdG9yPElkZW50aWZp
ZXI+JikgY29uc3QgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgYmluZFZhbHVlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogc291cmNlKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCB0b1N0cmluZyhTdHJpbmdCdWlsZGVyJikgY29uc3QgPSAwOwpAQCAtMTc3NCwyMSAr
MTc1NCwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCBib29sIGlzQmluZGlu
Z05vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVy
SUQqIGVtaXREaXJlY3RCaW5kaW5nKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCosIEV4
cHJlc3Npb25Ob2RlKikgeyByZXR1cm4gMDsgfQogICAgICAgICAKLSAgICAgICAgdmlydHVhbCB+
RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKCkgPSAwOwotICAgICAgICAKICAgICBwcm90ZWN0ZWQ6
CiAgICAgICAgIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSgpOwogICAgIH07CiAKICAgICBjbGFz
cyBBcnJheVBhdHRlcm5Ob2RlIDogcHVibGljIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSwgcHVi
bGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6CisgICAgICAgIEFycmF5
UGF0dGVybk5vZGUoKTsKICAgICAgICAgZW51bSBjbGFzcyBCaW5kaW5nVHlwZSB7CiAgICAgICAg
ICAgICBFbGlzaW9uLAogICAgICAgICAgICAgRWxlbWVudCwKICAgICAgICAgICAgIFJlc3RFbGVt
ZW50CiAgICAgICAgIH07CiAKLSAgICAgICAgc3RhdGljIFJlZjxBcnJheVBhdHRlcm5Ob2RlPiBj
cmVhdGUoKTsKICAgICAgICAgdm9pZCBhcHBlbmRJbmRleChCaW5kaW5nVHlwZSBiaW5kaW5nVHlw
ZSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiBub2Rl
LCBFeHByZXNzaW9uTm9kZSogZGVmYXVsdFZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBt
X3RhcmdldFBhdHRlcm5zLmFwcGVuZCh7IGJpbmRpbmdUeXBlLCBub2RlLCBkZWZhdWx0VmFsdWUg
fSk7CkBAIC0xNzk3LDEwICsxNzc1LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0ZToK
ICAgICAgICAgc3RydWN0IEVudHJ5IHsKICAgICAgICAgICAgIEJpbmRpbmdUeXBlIGJpbmRpbmdU
eXBlOwotICAgICAgICAgICAgUmVmUHRyPERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZT4gcGF0dGVy
bjsKKyAgICAgICAgICAgIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogcGF0dGVybjsKICAgICAg
ICAgICAgIEV4cHJlc3Npb25Ob2RlKiBkZWZhdWx0VmFsdWU7CiAgICAgICAgIH07Ci0gICAgICAg
IEFycmF5UGF0dGVybk5vZGUoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RCb3VuZElk
ZW50aWZpZXJzKFZlY3RvcjxJZGVudGlmaWVyPiYpIGNvbnN0IG92ZXJyaWRlOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgYmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopIGNv
bnN0IG92ZXJyaWRlOwogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXREaXJlY3RCaW5k
aW5nKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogZHN0LCBFeHByZXNzaW9uTm9kZSop
IG92ZXJyaWRlOwpAQCAtMTgxMSwyMSArMTc4OCwyMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAK
ICAgICBjbGFzcyBPYmplY3RQYXR0ZXJuTm9kZSA6IHB1YmxpYyBEZXN0cnVjdHVyaW5nUGF0dGVy
bk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFJlZjxPYmplY3RQYXR0ZXJuTm9k
ZT4gY3JlYXRlKCk7CisgICAgICAgIE9iamVjdFBhdHRlcm5Ob2RlKCk7CiAgICAgICAgIHZvaWQg
YXBwZW5kRW50cnkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYgaWRl
bnRpZmllciwgYm9vbCB3YXNTdHJpbmcsIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogcGF0dGVy
biwgRXhwcmVzc2lvbk5vZGUqIGRlZmF1bHRWYWx1ZSkKICAgICAgICAgewogICAgICAgICAgICAg
bV90YXJnZXRQYXR0ZXJucy5hcHBlbmQoRW50cnl7IGlkZW50aWZpZXIsIHdhc1N0cmluZywgcGF0
dGVybiwgZGVmYXVsdFZhbHVlIH0pOwogICAgICAgICB9CiAgICAgICAgIAogICAgIHByaXZhdGU6
Ci0gICAgICAgIE9iamVjdFBhdHRlcm5Ob2RlKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjb2xs
ZWN0Qm91bmRJZGVudGlmaWVycyhWZWN0b3I8SWRlbnRpZmllcj4mKSBjb25zdCBvdmVycmlkZTsK
ICAgICAgICAgdmlydHVhbCB2b2lkIGJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqKSBjb25zdCBvdmVycmlkZTsKICAgICAgICAgdmlydHVhbCB2b2lkIHRvU3RyaW5nKFN0
cmluZ0J1aWxkZXImKSBjb25zdCBvdmVycmlkZTsKICAgICAgICAgc3RydWN0IEVudHJ5IHsKICAg
ICAgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lOwogICAgICAgICAgICAgYm9vbCB3YXNT
dHJpbmc7Ci0gICAgICAgICAgICBSZWZQdHI8RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlPiBwYXR0
ZXJuOworICAgICAgICAgICAgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiBwYXR0ZXJuOwogICAg
ICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGRlZmF1bHRWYWx1ZTsKICAgICAgICAgfTsKICAgICAg
ICAgVmVjdG9yPEVudHJ5PiBtX3RhcmdldFBhdHRlcm5zOwpAQCAtMTgzMywxNCArMTgwOSwxMyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEJpbmRpbmdOb2RlIDogcHVibGljIERlc3Ry
dWN0dXJpbmdQYXR0ZXJuTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUmVmPEJp
bmRpbmdOb2RlPiBjcmVhdGUoY29uc3QgSWRlbnRpZmllciYgYm91bmRQcm9wZXJ0eSwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIHN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZW5kKTsKKyAgICAg
ICAgQmluZGluZ05vZGUoY29uc3QgSWRlbnRpZmllciYgYm91bmRQcm9wZXJ0eSwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIHN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZW5kKTsKICAgICAgICAg
Y29uc3QgSWRlbnRpZmllciYgYm91bmRQcm9wZXJ0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRQ
cm9wZXJ0eTsgfQogCiAgICAgICAgIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0KCkg
Y29uc3QgeyByZXR1cm4gbV9kaXZvdFN0YXJ0OyB9CiAgICAgICAgIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdEVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGl2b3RFbmQ7IH0KICAgICAgICAgCiAg
ICAgcHJpdmF0ZToKLSAgICAgICAgQmluZGluZ05vZGUoY29uc3QgSWRlbnRpZmllciYgYm91bmRQ
cm9wZXJ0eSwgY29uc3QgSlNUZXh0UG9zaXRpb24mIHN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZW5kKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdEJvdW5kSWRlbnRpZmllcnMo
VmVjdG9yPElkZW50aWZpZXI+JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBiaW5kVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKikgY29uc3Qgb3ZlcnJp
ZGU7CkBAIC0xODU1LDggKzE4MzAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIERl
c3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGlj
IFBhcnNlckFyZW5hRGVsZXRhYmxlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIERlc3RydWN0dXJp
bmdBc3NpZ25tZW50Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBQYXNzUmVmUHRyPERlc3Ry
dWN0dXJpbmdQYXR0ZXJuTm9kZT4sIEV4cHJlc3Npb25Ob2RlKik7Ci0gICAgICAgIERlc3RydWN0
dXJpbmdQYXR0ZXJuTm9kZSogYmluZGluZ3MoKSB7IHJldHVybiBtX2JpbmRpbmdzLmdldCgpOyB9
CisgICAgICAgIERlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUqLCBFeHByZXNzaW9uTm9kZSopOworICAgICAg
ICBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUqIGJpbmRpbmdzKCkgeyByZXR1cm4gbV9iaW5kaW5n
czsgfQogICAgICAgICAKICAgICAgICAgdXNpbmcgUGFyc2VyQXJlbmFEZWxldGFibGU6Om9wZXJh
dG9yIG5ldzsKIApAQCAtMTg2NSwxMyArMTg0MCwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgdmlydHVhbCBib29sIGlzRGVzdHJ1Y3R1cmluZ05vZGUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKIAotICAgICAgICBS
ZWZQdHI8RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlPiBtX2JpbmRpbmdzOworICAgICAgICBEZXN0
cnVjdHVyaW5nUGF0dGVybk5vZGUqIG1fYmluZGluZ3M7CiAgICAgICAgIEV4cHJlc3Npb25Ob2Rl
KiBtX2luaXRpYWxpemVyOwogICAgIH07CiAKICAgICBjbGFzcyBGdW5jRGVjbE5vZGUgOiBwdWJs
aWMgU3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBGdW5jRGVjbE5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uQm9keU5vZGUq
LCBjb25zdCBTb3VyY2VDb2RlJiwgUGFyYW1ldGVyTm9kZSogPSAwKTsKKyAgICAgICAgRnVuY0Rl
Y2xOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlv
bkJvZHlOb2RlKiwgY29uc3QgU291cmNlQ29kZSYpOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBp
c0Z1bmNEZWNsTm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAg
RnVuY3Rpb25Cb2R5Tm9kZSogYm9keSgpIHsgcmV0dXJuIG1fYm9keTsgfQpAQCAtMTk2NywxMSAr
MTk0Miw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBDb25zdERlY2xOb2RlKiB0YWlsOwog
ICAgIH07CiAKLSAgICBzdHJ1Y3QgUGFyYW1ldGVyTGlzdCB7Ci0gICAgICAgIFBhcmFtZXRlck5v
ZGUqIGhlYWQ7Ci0gICAgICAgIFBhcmFtZXRlck5vZGUqIHRhaWw7Ci0gICAgfTsKLQogICAgIHN0
cnVjdCBDbGF1c2VMaXN0IHsKICAgICAgICAgQ2xhdXNlTGlzdE5vZGUqIGhlYWQ7CiAgICAgICAg
IENsYXVzZUxpc3ROb2RlKiB0YWlsOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmNwcAkocmV2aXNpb24gMTg2ODA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTEsOCArMTkxLDcgQEAgdm9pZCBQ
YXJzZXI8TGV4ZXJUeXBlPjo6bG9nRXJyb3IoYm9vbCBzaAogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
TGV4ZXJUeXBlPgogUGFyc2VyPExleGVyVHlwZT46OlBhcnNlcigKLSAgICBWTSogdm0sIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzLCAKLSAg
ICBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2Rl
LCAKKyAgICBWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJCdWlsdGlu
TW9kZSBidWlsdGluTW9kZSwgCiAgICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIEpT
UGFyc2VyQ29kZVR5cGUgY29kZVR5cGUsIAogICAgIENvbnN0cnVjdG9yS2luZCBkZWZhdWx0Q29u
c3RydWN0b3JLaW5kLCBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSkKICAgICA6IG1fdm0odm0pCkBA
IC0yMjMsMzAgKzIyMiw3IEBAIFBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZXIoCiAgICAgICAgIHNj
b3BlLT5zZXRJc0Z1bmN0aW9uKCk7CiAgICAgaWYgKHN0cmljdE1vZGUgPT0gSlNQYXJzZXJTdHJp
Y3RNb2RlOjpTdHJpY3QpCiAgICAgICAgIHNjb3BlLT5zZXRTdHJpY3RNb2RlKCk7Ci0gICAgaWYg
KHBhcmFtZXRlcnMpIHsKLSAgICAgICAgYm9vbCBoYWRCaW5kaW5nUGFyYW1ldGVycyA9IGZhbHNl
OwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFyYW1ldGVycy0+c2l6ZSgpOyBp
KyspIHsKLSAgICAgICAgICAgIGF1dG8gcGFyYW1ldGVyID0gcGFyYW1ldGVycy0+YXQoaSk7Ci0g
ICAgICAgICAgICBpZiAoIXBhcmFtZXRlci0+aXNCaW5kaW5nTm9kZSgpKSB7Ci0gICAgICAgICAg
ICAgICAgaGFkQmluZGluZ1BhcmFtZXRlcnMgPSB0cnVlOwotICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc2NvcGUtPmRlY2xhcmVQYXJhbWV0ZXIo
JnN0YXRpY19jYXN0PEJpbmRpbmdOb2RlKj4ocGFyYW1ldGVyKS0+Ym91bmRQcm9wZXJ0eSgpKTsK
LSAgICAgICAgfQotICAgICAgICBpZiAoaGFkQmluZGluZ1BhcmFtZXRlcnMpIHsKLSAgICAgICAg
ICAgIFZlY3RvcjxJZGVudGlmaWVyPiBib3VuZFBhcmFtZXRlck5hbWVzOwotICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhcmFtZXRlcnMtPnNpemUoKTsgaSsrKSB7Ci0gICAg
ICAgICAgICAgICAgYXV0byBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXJzLT5hdChpKTsKLSAgICAgICAg
ICAgICAgICBpZiAocGFyYW1ldGVyLT5pc0JpbmRpbmdOb2RlKCkpCi0gICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIHBhcmFtZXRlci0+Y29sbGVjdEJvdW5kSWRl
bnRpZmllcnMoYm91bmRQYXJhbWV0ZXJOYW1lcyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBmb3IgKGF1dG8mIGJvdW5kUGFyYW1ldGVyTmFtZSA6IGJvdW5kUGFyYW1ldGVyTmFtZXMpCi0g
ICAgICAgICAgICAgICAgc2NvcGUtPmRlY2xhcmVWYXJpYWJsZSgmYm91bmRQYXJhbWV0ZXJOYW1l
KTsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAoIW5hbWUuaXNOdWxsKCkpCi0gICAgICAgIHNj
b3BlLT5kZWNsYXJlQ2FsbGVlKCZuYW1lKTsKKwogICAgIG5leHQoKTsKIH0KIApAQCAtMjU2LDE2
ICsyMzIsNTQgQEAgUGFyc2VyPExleGVyVHlwZT46On5QYXJzZXIoKQogfQogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgTGV4ZXJUeXBlPgotU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVy
KCkKK1N0cmluZyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcihjb25zdCBJZGVudGlmaWVy
JiBjYWxsZWVOYW1lLCBGdW5jdGlvblBhcnNlTW9kZSBwYXJzZU1vZGUpCiB7CiAgICAgU3RyaW5n
IHBhcnNlRXJyb3IgPSBTdHJpbmcoKTsKICAgICAKICAgICBBU1RCdWlsZGVyIGNvbnRleHQoY29u
c3RfY2FzdDxWTSo+KG1fdm0pLCBtX3BhcnNlckFyZW5hLCBjb25zdF9jYXN0PFNvdXJjZUNvZGUq
PihtX3NvdXJjZSkpOwotICAgIGlmIChtX2xleGVyLT5pc1JlcGFyc2luZygpKQotICAgICAgICBt
X3N0YXRlbWVudERlcHRoLS07CiAgICAgU2NvcGVSZWYgc2NvcGUgPSBjdXJyZW50U2NvcGUoKTsK
LSAgICBTb3VyY2VFbGVtZW50cyogc291cmNlRWxlbWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRz
KGNvbnRleHQsIENoZWNrRm9yU3RyaWN0TW9kZSwgU3RhbmRhcmRGdW5jdGlvblBhcnNlVHlwZSk7
Ci0gICAgaWYgKCFzb3VyY2VFbGVtZW50cyB8fCAhY29uc3VtZShFT0ZUT0spKSB7CisKKyAgICBi
b29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uID0gZmFsc2U7CisjaWYgRU5BQkxFKEVT
Nl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCkKKyAgICBpZiAobV9sZXhlci0+aXNSZXBhcnNpbmdGdW5j
dGlvbigpKSB7CisgICAgICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiBmdW5jdGlv
bkluZm87CisgICAgICAgIHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKGNvbnRleHQsIHBhcnNlTW9k
ZSwgZnVuY3Rpb25JbmZvKTsKKyAgICAgICAgbV9wYXJhbWV0ZXJzID0gZnVuY3Rpb25JbmZvLnBh
cmFtZXRlcnM7CisKKyAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBBcnJvd0Z1bmN0aW9uTW9kZSkg
eworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobWF0Y2goQVJST1dGVU5DVElPTikpOworICAg
ICAgICAgICAgbmV4dCgpOworICAgICAgICAgICAgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Np
b24gPSAhbWF0Y2goT1BFTkJSQUNFKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorCisgICAg
aWYgKCFjYWxsZWVOYW1lLmlzTnVsbCgpKQorICAgICAgICBzY29wZS0+ZGVjbGFyZUNhbGxlZSgm
Y2FsbGVlTmFtZSk7CisKKyAgICBpZiAobV9sZXhlci0+aXNSZXBhcnNpbmdGdW5jdGlvbigpKQor
ICAgICAgICBtX3N0YXRlbWVudERlcHRoLS07CisKKyAgICBTb3VyY2VFbGVtZW50cyogc291cmNl
RWxlbWVudHMgPSBudWxscHRyOworICAgIC8vIFRoZSBvbmx5IHdheSB3ZSBjYW4gZXJyb3IgdGhp
cyBlYXJseSBpcyBpZiB3ZSByZXBhcnNlIGEgZnVuY3Rpb24gYW5kIHdlIHJ1biBvdXQgb2Ygc3Rh
Y2sgc3BhY2UuCisgICAgaWYgKCFoYXNFcnJvcigpKSB7CisgICAgICAgIGlmIChpc0Fycm93RnVu
Y3Rpb25Cb2R5RXhwcmVzc2lvbikKKyAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VB
cnJvd0Z1bmN0aW9uU2luZ2xlRXhwcmVzc2lvbkJvZHlTb3VyY2VFbGVtZW50cyhjb250ZXh0KTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgc291cmNlRWxlbWVudHMgPSBwYXJzZVNvdXJjZUVs
ZW1lbnRzKGNvbnRleHQsIENoZWNrRm9yU3RyaWN0TW9kZSk7CisgICAgfQorCisgICAgYm9vbCB2
YWxpZEVuZGluZzsKKyAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pIHsKKyAg
ICAgICAgQVNTRVJUKG1fbGV4ZXItPmlzUmVwYXJzaW5nRnVuY3Rpb24oKSk7CisgICAgICAgIC8v
IFdoZW4gd2UgcmVwYXJzZSBhbmQgc3RhY2sgb3ZlcmZsb3csIHdlJ3JlIG5vdCBndWFyYW50ZWVk
IGEgdmFsaWQgZW5kaW5nLiBJZiB3ZSBkb24ndCBydW4gb3V0IG9mIHN0YWNrIHNwYWNlLAorICAg
ICAgICAvLyB0aGVuIG9mIGNvdXJzZSB0aGlzIHdpbGwgYWx3YXlzIGJlIHZhbGlkIGJlY2F1c2Ug
d2UgYWxyZWFkeSBwYXJzZWQgZm9yIHN5bnRheCBlcnJvcnMuIEJ1dCB3ZSBtdXN0CisgICAgICAg
IC8vIGJlIGNhdXRpb3VzIGluIGNhc2Ugd2UgcnVuIG91dCBvZiBzdGFjayBzcGFjZS4KKyAgICAg
ICAgdmFsaWRFbmRpbmcgPSBpc0VuZE9mQXJyb3dGdW5jdGlvbigpOyAKKyAgICB9IGVsc2UKKyAg
ICAgICAgdmFsaWRFbmRpbmcgPSBjb25zdW1lKEVPRlRPSyk7CisKKyAgICBpZiAoIXNvdXJjZUVs
ZW1lbnRzIHx8ICF2YWxpZEVuZGluZykgewogICAgICAgICBpZiAoaGFzRXJyb3IoKSkKICAgICAg
ICAgICAgIHBhcnNlRXJyb3IgPSBtX2Vycm9yTWVzc2FnZTsKICAgICAgICAgZWxzZQpAQCAtMzQz
LDcgKzM1Nyw3IEBAIGJvb2wgUGFyc2VyPExleGVyVHlwZT46OmFsbG93QXV0b21hdGljU2UKIH0K
IAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KLXRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVNvdXJjZUVs
ZW1lbnRzKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBTb3VyY2VFbGVtZW50c01vZGUgbW9kZSwgRnVu
Y3Rpb25QYXJzZVR5cGUgZnVuY3Rpb25QYXJzZVR5cGUpCit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTb3VyY2VF
bGVtZW50cyhUcmVlQnVpbGRlciYgY29udGV4dCwgU291cmNlRWxlbWVudHNNb2RlIG1vZGUpCiB7
CiAgICAgY29uc3QgdW5zaWduZWQgbGVuZ3RoT2ZVc2VTdHJpY3RMaXRlcmFsID0gMTI7IC8vICJ1
c2Ugc3RyaWN0Ii5sZW5ndGgKICAgICBUcmVlU291cmNlRWxlbWVudHMgc291cmNlRWxlbWVudHMg
PSBjb250ZXh0LmNyZWF0ZVNvdXJjZUVsZW1lbnRzKCk7CkBAIC0zNTMsMjIgKzM2Nyw2IEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUUKICAgICBhdXRvIHNhdmVQb2lu
dCA9IGNyZWF0ZVNhdmVQb2ludCgpOwogICAgIGJvb2wgaGFzU2V0U3RyaWN0ID0gZmFsc2U7CiAg
ICAgCi0jaWYgRU5BQkxFKEVTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCkKLSAgICBpZiAobWF0Y2go
QVJST1dGVU5DVElPTikpIHsKLSAgICAgICAgVHJlZVN0YXRlbWVudCBhcnJvd2Z1bmN0aW9uU3Rh
dGVtZW50ID0gcGFyc2VBcnJvd0Z1bmN0aW9uU2luZ2xlRXhwcmVzc2lvbkJvZHkoY29udGV4dCwg
ZnVuY3Rpb25QYXJzZVR5cGUpOwotICAgICAgICAgICAgCi0gICAgICAgIGlmIChhcnJvd2Z1bmN0
aW9uU3RhdGVtZW50KSB7Ci0gICAgICAgICAgICBjb250ZXh0LnNldEVuZE9mZnNldChhcnJvd2Z1
bmN0aW9uU3RhdGVtZW50LCBtX2xhc3RUb2tlbkVuZFBvc2l0aW9uLm9mZnNldCk7Ci0gICAgICAg
ICAgICBjb250ZXh0LmFwcGVuZFN0YXRlbWVudChzb3VyY2VFbGVtZW50cywgYXJyb3dmdW5jdGlv
blN0YXRlbWVudCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHByb3BhZ2F0ZUVycm9y
KCk7Ci0gICAgICAgIHJldHVybiBzb3VyY2VFbGVtZW50czsKLSAgICB9Ci0jZWxzZQotICAgIFVO
VVNFRF9QQVJBTShmdW5jdGlvblBhcnNlVHlwZSk7Ci0jZW5kaWYKLSAgICAKICAgICB3aGlsZSAo
VHJlZVN0YXRlbWVudCBzdGF0ZW1lbnQgPSBwYXJzZVN0YXRlbWVudExpc3RJdGVtKGNvbnRleHQs
IGRpcmVjdGl2ZSwgJmRpcmVjdGl2ZUxpdGVyYWxMZW5ndGgpKSB7CiAgICAgICAgIGlmIChtb2Rl
ID09IENoZWNrRm9yU3RyaWN0TW9kZSAmJiAhc2Vlbk5vbkRpcmVjdGl2ZSkgewogICAgICAgICAg
ICAgaWYgKGRpcmVjdGl2ZSkgewpAQCAtNjI0LDI0ICs2MjIsMTMgQEAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlRGVzdHJ1YwogICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUJpbmRp
bmdMb2NhdGlvbih0b2tlbi5tX2xvY2F0aW9uLCBuYW1lLCB0b2tlbi5tX3N0YXJ0UG9zaXRpb24s
IHRva2VuLm1fZW5kUG9zaXRpb24pOwogfQogCi0jaWYgRU5BQkxFKEVTNl9BUlJPV0ZVTkNUSU9O
X1NZTlRBWCkKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXJyb3dG
dW5jdGlvblNpbmdsZUV4cHJlc3Npb25Cb2R5KFRyZWVCdWlsZGVyJiBjb250ZXh0LCBGdW5jdGlv
blBhcnNlVHlwZSBwYXJzZVR5cGUpCit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVT
b3VyY2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBcnJvd0Z1bmN0aW9uU2luZ2xl
RXhwcmVzc2lvbkJvZHlTb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYgY29udGV4dCkKIHsKLSAg
ICBBU1NFUlQobWF0Y2goQVJST1dGVU5DVElPTikpOworICAgIEFTU0VSVCghbWF0Y2goT1BFTkJS
QUNFKSk7CiAKLSAgICAvLyBXaGVuIHJlcGFyc2luZyBwaGFzZSwgcGFyc2VUeXBlIGJlY29tZXMg
U3RhbmRhcmRGdW5jdGlvblBhcnNlVHlwZSBldmVuIGlmIHRoZSBmdW5jdGlvbiBpcyBhcnJvdyBm
dW5jdGlvbi4KLSAgICAvLyBUaGlzIGNvbmRpdGlvbiBjb25zaWRlcnMgdGhlIGZvbGxvd2luZyBz
aXR1YXRpb25zLgotICAgIC8vICgxKTogSWYgd2UgYXJlIGluIHRoZSByZXBhcnNpbmcgcGhhc2Us
IHRoaXMgYXJyb3cgZnVuY3Rpb24gaXMgYWxyZWFkeSBwYXJzZWQgb25jZSwgc28gdGhlcmUgaXMg
bm8gc3ludGF4IGVycm9yLgotICAgIC8vICgyKTogQnV0IGlmIHdlIGFyZSBub3QgaW4gdGhlIHJl
cGFyc2luZyBwaGFzZSwgd2Ugc2hvdWxkIGNoZWNrIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGlu
IHRoZSBjb250ZXh0IG9mIHRoZSBhcnJvdyBmdW5jdGlvbi4KLSAgICBpZiAoIW1fbGV4ZXItPmlz
UmVwYXJzaW5nKCkgJiYgcGFyc2VUeXBlICE9IEFycm93RnVuY3Rpb25QYXJzZVR5cGUpCi0gICAg
ICAgIGZhaWxEdWVUb1VuZXhwZWN0ZWRUb2tlbigpOwotICAgIAogICAgIEpTVG9rZW5Mb2NhdGlv
biBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIEpTVGV4dFBvc2l0aW9uIHN0YXJ0ID0g
dG9rZW5TdGFydFBvc2l0aW9uKCk7Ci0gICAgSlNUZXh0UG9zaXRpb24gZW5kID0gdG9rZW5FbmRQ
b3NpdGlvbigpOwotCi0gICAgbmV4dCgpOwogCiAgICAgZmFpbElmU3RhY2tPdmVyZmxvdygpOwog
ICAgIFRyZWVFeHByZXNzaW9uIGV4cHIgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRl
eHQpOwpAQCAtNjUxLDE0ICs2MzgsMTggQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlU3RhdGVtZQogCiAgICAgZmFpbElmRmFsc2UoaXNFbmRPZkFycm93RnVuY3Rpb24oKSwgIkV4
cGVjdGVkIGEgJzsnLCAnXScsICd9JywgJyknLCAnLCcsIGxpbmUgdGVybWluYXRvciBvciBFT0Yg
Zm9sbG93aW5nIGEgYXJyb3cgZnVuY3Rpb24gc3RhdGVtZW50Iik7CiAKLSAgICBlbmQgPSB0b2tl
bkVuZFBvc2l0aW9uKCk7CisgICAgSlNUZXh0UG9zaXRpb24gZW5kID0gdG9rZW5FbmRQb3NpdGlv
bigpOwogICAgIAogICAgIGlmICghbV9sZXhlci0+cHJldlRlcm1pbmF0b3IoKSkKICAgICAgICAg
c2V0RW5kT2ZTdGF0ZW1lbnQoKTsKIAotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVJldHVyblN0
YXRlbWVudChsb2NhdGlvbiwgZXhwciwgc3RhcnQsIGVuZCk7CisgICAgVHJlZVNvdXJjZUVsZW1l
bnRzIHNvdXJjZUVsZW1lbnRzID0gY29udGV4dC5jcmVhdGVTb3VyY2VFbGVtZW50cygpOworICAg
IFRyZWVTdGF0ZW1lbnQgYm9keSA9IGNvbnRleHQuY3JlYXRlUmV0dXJuU3RhdGVtZW50KGxvY2F0
aW9uLCBleHByLCBzdGFydCwgZW5kKTsKKyAgICBjb250ZXh0LnNldEVuZE9mZnNldChib2R5LCBt
X2xhc3RUb2tlbkVuZFBvc2l0aW9uLm9mZnNldCk7CisgICAgY29udGV4dC5hcHBlbmRTdGF0ZW1l
bnQoc291cmNlRWxlbWVudHMsIGJvZHkpOworCisgICAgcmV0dXJuIHNvdXJjZUVsZW1lbnRzOwog
fQotI2VuZGlmCiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVEZXN0cnVjdHVyaW5nUGF0dGVybiBQYXJzZXI8TGV4ZXJUeXBl
Pjo6dHJ5UGFyc2VEZXN0cnVjdHVyaW5nUGF0dGVybkV4cHJlc3Npb24oVHJlZUJ1aWxkZXImIGNv
bnRleHQpCkBAIC0xMTQyLDcgKzExMzMsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVDbGF1c2VMCiAgICAgVHJlZUV4cHJlc3Npb24gY29uZGl0aW9uID0gcGFyc2VFeHByZXNz
aW9uKGNvbnRleHQpOwogICAgIGZhaWxJZkZhbHNlKGNvbmRpdGlvbiwgIkNhbm5vdCBwYXJzZSBz
d2l0Y2ggY2xhdXNlIik7CiAgICAgY29uc3VtZU9yRmFpbChDT0xPTiwgIkV4cGVjdGVkIGEgJzon
IGFmdGVyIHN3aXRjaCBjbGF1c2UgZXhwcmVzc2lvbiIpOwotICAgIFRyZWVTb3VyY2VFbGVtZW50
cyBzdGF0ZW1lbnRzID0gcGFyc2VTb3VyY2VFbGVtZW50cyhjb250ZXh0LCBEb250Q2hlY2tGb3JT
dHJpY3RNb2RlLCBTdGFuZGFyZEZ1bmN0aW9uUGFyc2VUeXBlKTsKKyAgICBUcmVlU291cmNlRWxl
bWVudHMgc3RhdGVtZW50cyA9IHBhcnNlU291cmNlRWxlbWVudHMoY29udGV4dCwgRG9udENoZWNr
Rm9yU3RyaWN0TW9kZSk7CiAgICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50cywgIkNhbm5vdCBwYXJz
ZSB0aGUgYm9keSBvZiBhIHN3aXRjaCBjbGF1c2UiKTsKICAgICBUcmVlQ2xhdXNlIGNsYXVzZSA9
IGNvbnRleHQuY3JlYXRlQ2xhdXNlKGNvbmRpdGlvbiwgc3RhdGVtZW50cyk7CiAgICAgY29udGV4
dC5zZXRTdGFydE9mZnNldChjbGF1c2UsIHN0YXJ0T2Zmc2V0KTsKQEAgLTExNTUsNyArMTE0Niw3
IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUNsYXVzZUwKICAgICAgICAgVHJl
ZUV4cHJlc3Npb24gY29uZGl0aW9uID0gcGFyc2VFeHByZXNzaW9uKGNvbnRleHQpOwogICAgICAg
ICBmYWlsSWZGYWxzZShjb25kaXRpb24sICJDYW5ub3QgcGFyc2Ugc3dpdGNoIGNhc2UgZXhwcmVz
c2lvbiIpOwogICAgICAgICBjb25zdW1lT3JGYWlsKENPTE9OLCAiRXhwZWN0ZWQgYSAnOicgYWZ0
ZXIgc3dpdGNoIGNsYXVzZSBleHByZXNzaW9uIik7Ci0gICAgICAgIFRyZWVTb3VyY2VFbGVtZW50
cyBzdGF0ZW1lbnRzID0gcGFyc2VTb3VyY2VFbGVtZW50cyhjb250ZXh0LCBEb250Q2hlY2tGb3JT
dHJpY3RNb2RlLCBTdGFuZGFyZEZ1bmN0aW9uUGFyc2VUeXBlKTsKKyAgICAgICAgVHJlZVNvdXJj
ZUVsZW1lbnRzIHN0YXRlbWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIERvbnRD
aGVja0ZvclN0cmljdE1vZGUpOwogICAgICAgICBmYWlsSWZGYWxzZShzdGF0ZW1lbnRzLCAiQ2Fu
bm90IHBhcnNlIHRoZSBib2R5IG9mIGEgc3dpdGNoIGNsYXVzZSIpOwogICAgICAgICBjbGF1c2Ug
PSBjb250ZXh0LmNyZWF0ZUNsYXVzZShjb25kaXRpb24sIHN0YXRlbWVudHMpOwogICAgICAgICBj
b250ZXh0LnNldFN0YXJ0T2Zmc2V0KGNsYXVzZSwgc3RhcnRPZmZzZXQpOwpAQCAtMTE3Miw3ICsx
MTYzLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlQ2xhdXNlIAogICAgIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0ID0gdG9rZW5TdGFydCgpOwogICAgIG5leHQoKTsKICAgICBjb25z
dW1lT3JGYWlsKENPTE9OLCAiRXhwZWN0ZWQgYSAnOicgYWZ0ZXIgc3dpdGNoIGRlZmF1bHQgY2xh
dXNlIik7Ci0gICAgVHJlZVNvdXJjZUVsZW1lbnRzIHN0YXRlbWVudHMgPSBwYXJzZVNvdXJjZUVs
ZW1lbnRzKGNvbnRleHQsIERvbnRDaGVja0ZvclN0cmljdE1vZGUsIFN0YW5kYXJkRnVuY3Rpb25Q
YXJzZVR5cGUpOworICAgIFRyZWVTb3VyY2VFbGVtZW50cyBzdGF0ZW1lbnRzID0gcGFyc2VTb3Vy
Y2VFbGVtZW50cyhjb250ZXh0LCBEb250Q2hlY2tGb3JTdHJpY3RNb2RlKTsKICAgICBmYWlsSWZG
YWxzZShzdGF0ZW1lbnRzLCAiQ2Fubm90IHBhcnNlIHRoZSBib2R5IG9mIGEgc3dpdGNoIGRlZmF1
bHQgY2xhdXNlIik7CiAgICAgVHJlZUNsYXVzZSByZXN1bHQgPSBjb250ZXh0LmNyZWF0ZUNsYXVz
ZSgwLCBzdGF0ZW1lbnRzKTsKICAgICBjb250ZXh0LnNldFN0YXJ0T2Zmc2V0KHJlc3VsdCwgc3Rh
cnRPZmZzZXQpOwpAQCAtMTI1Nyw3ICsxMjQ4LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlU3RhdGVtZQogICAgICAgICBjb250ZXh0LnNldEVuZE9mZnNldChyZXN1bHQsIGVu
ZE9mZnNldCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQotICAgIFRyZWVTb3VyY2VF
bGVtZW50cyBzdWJ0cmVlID0gcGFyc2VTb3VyY2VFbGVtZW50cyhjb250ZXh0LCBEb250Q2hlY2tG
b3JTdHJpY3RNb2RlLCBTdGFuZGFyZEZ1bmN0aW9uUGFyc2VUeXBlKTsKKyAgICBUcmVlU291cmNl
RWxlbWVudHMgc3VidHJlZSA9IHBhcnNlU291cmNlRWxlbWVudHMoY29udGV4dCwgRG9udENoZWNr
Rm9yU3RyaWN0TW9kZSk7CiAgICAgZmFpbElmRmFsc2Uoc3VidHJlZSwgIkNhbm5vdCBwYXJzZSB0
aGUgYm9keSBvZiB0aGUgYmxvY2sgc3RhdGVtZW50Iik7CiAgICAgbWF0Y2hPckZhaWwoQ0xPU0VC
UkFDRSwgIkV4cGVjdGVkIGEgY2xvc2luZyAnfScgYXQgdGhlIGVuZCBvZiBhIGJsb2NrIHN0YXRl
bWVudCIpOwogICAgIGludCBlbmRPZmZzZXQgPSBtX3Rva2VuLm1fZGF0YS5vZmZzZXQ7CkBAIC0x
MzYyLDQ2ICsxMzUzLDQzIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRl
bWUKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KLXRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZUZvcm1hbFBhcmFtZXRlckxpc3QgUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlRm9ybWFsUGFyYW1ldGVycyhUcmVlQnVpbGRlciYgY29udGV4dCkKK3RlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGb3JtYWxQYXJhbWV0
ZXJzKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCBsaXN0LCB1
bnNpZ25lZCYgcGFyYW1ldGVyQ291bnQpCiB7CiAgICAgYXV0byBwYXJhbWV0ZXIgPSBwYXJzZURl
c3RydWN0dXJpbmdQYXR0ZXJuKGNvbnRleHQsIERlc3RydWN0dXJlVG9QYXJhbWV0ZXJzKTsKICAg
ICBmYWlsSWZGYWxzZShwYXJhbWV0ZXIsICJDYW5ub3QgcGFyc2UgcGFyYW1ldGVyIHBhdHRlcm4i
KTsKLSAgICBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCBsaXN0ID0gY29udGV4dC5jcmVhdGVGb3Jt
YWxQYXJhbWV0ZXJMaXN0KHBhcmFtZXRlcik7Ci0gICAgVHJlZUZvcm1hbFBhcmFtZXRlckxpc3Qg
dGFpbCA9IGxpc3Q7CisgICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIobGlzdCwgcGFyYW1ldGVy
KTsKKyAgICBwYXJhbWV0ZXJDb3VudCsrOwogICAgIHdoaWxlIChjb25zdW1lKENPTU1BKSkgewog
ICAgICAgICBwYXJhbWV0ZXIgPSBwYXJzZURlc3RydWN0dXJpbmdQYXR0ZXJuKGNvbnRleHQsIERl
c3RydWN0dXJlVG9QYXJhbWV0ZXJzKTsKICAgICAgICAgZmFpbElmRmFsc2UocGFyYW1ldGVyLCAi
Q2Fubm90IHBhcnNlIHBhcmFtZXRlciBwYXR0ZXJuIik7Ci0gICAgICAgIHRhaWwgPSBjb250ZXh0
LmNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QodGFpbCwgcGFyYW1ldGVyKTsKKyAgICAgICAgY29u
dGV4dC5hcHBlbmRQYXJhbWV0ZXIobGlzdCwgcGFyYW1ldGVyKTsKKyAgICAgICAgcGFyYW1ldGVy
Q291bnQrKzsKICAgICB9Ci0gICAgcmV0dXJuIGxpc3Q7CisgICAgcmV0dXJuIHRydWU7CiB9CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVGdW5jdGlvbkJvZHkgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25Cb2R5
KAotICAgIFRyZWVCdWlsZGVyJiBjb250ZXh0LCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGlu
dCBmdW5jdGlvbk5hbWVTdGFydCwgCi0gICAgaW50IHBhcmFtZXRlcnNTdGFydCwgQ29uc3RydWN0
b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgRnVuY3Rpb25QYXJzZVR5cGUgcGFyc2VUeXBlKQorICAg
IFRyZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRp
b24sIGludCBzdGFydENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rp
b25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIAorICAgIENvbnN0cnVjdG9yS2luZCBj
b25zdHJ1Y3RvcktpbmQsIEZ1bmN0aW9uQm9keVR5cGUgYm9keVR5cGUsIHVuc2lnbmVkIHBhcmFt
ZXRlckNvdW50LCBGdW5jdGlvblBhcnNlTW9kZSBwYXJzZU1vZGUpCiB7Ci0gICAgSlNUb2tlbkxv
Y2F0aW9uIHN0YXJ0TG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKLSAgICB1bnNpZ25lZCBzdGFy
dENvbHVtbiA9IHRva2VuQ29sdW1uKCk7Ci0KLSAgICBpZiAocGFyc2VUeXBlID09IFN0YW5kYXJk
RnVuY3Rpb25QYXJzZVR5cGUpIHsKKyAgICBpZiAoYm9keVR5cGUgPT0gU3RhbmRhcmRGdW5jdGlv
bkJvZHlCbG9jayB8fCBib2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUJsb2NrKSB7CiAgICAg
ICAgIG5leHQoKTsKICAgICAgICAgaWYgKG1hdGNoKENMT1NFQlJBQ0UpKSB7CiAgICAgICAgICAg
ICB1bnNpZ25lZCBlbmRDb2x1bW4gPSB0b2tlbkNvbHVtbigpOwotICAgICAgICAgICAgcmV0dXJu
IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25Cb2R5KHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24o
KSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9u
TmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5k
KTsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uQm9keShzdGFydExv
Y2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9u
S2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RN
b2RlKCksIGNvbnN0cnVjdG9yS2luZCwgcGFyYW1ldGVyQ291bnQsIHBhcnNlTW9kZSk7CiAgICAg
ICAgIH0KICAgICB9CiAKICAgICBEZXB0aE1hbmFnZXIgc3RhdGVtZW50RGVwdGgoJm1fc3RhdGVt
ZW50RGVwdGgpOwogICAgIG1fc3RhdGVtZW50RGVwdGggPSAwOwotICAgIHR5cGVuYW1lIFRyZWVC
dWlsZGVyOjpGdW5jdGlvbkJvZHlCdWlsZGVyIGJvZHlCdWlsZGVyKGNvbnN0X2Nhc3Q8Vk0qPiht
X3ZtKSwgbV9sZXhlci5nZXQoKSk7Ci0jaWYgRU5BQkxFKEVTNl9BUlJPV0ZVTkNUSU9OX1NZTlRB
WCkKLSAgICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVsZW1lbnRzKGJvZHlCdWlsZGVyLCBDaGVj
a0ZvclN0cmljdE1vZGUsIHBhcnNlVHlwZSksIHBhcnNlVHlwZSA9PSBTdGFuZGFyZEZ1bmN0aW9u
UGFyc2VUeXBlID8gIkNhbm5vdCBwYXJzZSBib2R5IG9mIHRoaXMgZnVuY3Rpb24iIDogIkNhbm5v
dCBwYXJzZSBib2R5IG9mIHRoaXMgYXJyb3cgZnVuY3Rpb24iKTsKLSNlbHNlCi0gICAgZmFpbElm
RmFsc2UocGFyc2VTb3VyY2VFbGVtZW50cyhib2R5QnVpbGRlciwgQ2hlY2tGb3JTdHJpY3RNb2Rl
LCBTdGFuZGFyZEZ1bmN0aW9uUGFyc2VUeXBlKSwgIkNhbm5vdCBwYXJzZSBib2R5IG9mIHRoaXMg
ZnVuY3Rpb24iKTsKLSNlbmRpZgorICAgIFN5bnRheENoZWNrZXIgc3ludGF4Q2hlY2tlcihjb25z
dF9jYXN0PFZNKj4obV92bSksIG1fbGV4ZXIuZ2V0KCkpOworICAgIGlmIChib2R5VHlwZSA9PSBB
cnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCisgICAgICAgIGZhaWxJZkZhbHNlKHBhcnNlQXJy
b3dGdW5jdGlvblNpbmdsZUV4cHJlc3Npb25Cb2R5U291cmNlRWxlbWVudHMoc3ludGF4Q2hlY2tl
ciksICJDYW5ub3QgcGFyc2UgYm9keSBvZiB0aGlzIGFycm93IGZ1bmN0aW9uIik7CisgICAgZWxz
ZQorICAgICAgICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVsZW1lbnRzKHN5bnRheENoZWNrZXIs
IENoZWNrRm9yU3RyaWN0TW9kZSksIGJvZHlUeXBlID09IFN0YW5kYXJkRnVuY3Rpb25Cb2R5Qmxv
Y2sgPyAiQ2Fubm90IHBhcnNlIGJvZHkgb2YgdGhpcyBmdW5jdGlvbiIgOiAiQ2Fubm90IHBhcnNl
IGJvZHkgb2YgdGhpcyBhcnJvdyBmdW5jdGlvbiIpOwogICAgIHVuc2lnbmVkIGVuZENvbHVtbiA9
IHRva2VuQ29sdW1uKCk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25Cb2R5KHN0
YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVu
Y3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0
cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVG
dW5jdGlvbkJvZHkoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwg
ZW5kQ29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFt
ZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50
LCBwYXJzZU1vZGUpOwogfQogCiBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25N
b2RlKEZ1bmN0aW9uUGFyc2VNb2RlIG1vZGUpCkBAIC0xNDExLDI0ICsxMzk5LDI4IEBAIHN0YXRp
YyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUKICAgICAgICAgcmV0dXJuICJnZXR0
ZXIiOwogICAgIGNhc2UgU2V0dGVyTW9kZToKICAgICAgICAgcmV0dXJuICJzZXR0ZXIiOwotICAg
IGNhc2UgRnVuY3Rpb25Nb2RlOgorICAgIGNhc2UgTm9ybWFsRnVuY3Rpb25Nb2RlOgogICAgICAg
ICByZXR1cm4gImZ1bmN0aW9uIjsKICAgICBjYXNlIE1ldGhvZE1vZGU6CiAgICAgICAgIHJldHVy
biAibWV0aG9kIjsKLSNpZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQogICAgIGNh
c2UgQXJyb3dGdW5jdGlvbk1vZGU6CiAgICAgICAgIHJldHVybiAiYXJyb3cgZnVuY3Rpb24iOwot
I2VuZGlmCisgICAgY2FzZSBOb3RBRnVuY3Rpb25Nb2RlOgorICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gIiI7CiAgICAgfQogICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXRlbXBsYXRl
IDx0eXBlbmFtZSBMZXhlclR5cGU+IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gaW50IFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhUcmVlQnVpbGRlciYgY29u
dGV4dCwgRnVuY3Rpb25QYXJzZU1vZGUgbW9kZSwgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWls
ZGVyPiYgaW5mbykKK3RlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+IHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gaW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uUGFyYW1l
dGVycyhUcmVlQnVpbGRlciYgY29udGV4dCwgRnVuY3Rpb25QYXJzZU1vZGUgbW9kZSwgUGFyc2Vy
RnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiYgZnVuY3Rpb25JbmZvKQogeworICAgIFJFTEVBU0Vf
QVNTRVJUKG1vZGUgIT0gTm90QUZ1bmN0aW9uTW9kZSk7CiAgICAgaW50IHBhcmFtZXRlcnNTdGFy
dCA9IG1fdG9rZW4ubV9sb2NhdGlvbi5zdGFydE9mZnNldDsKKyAgICBUcmVlRm9ybWFsUGFyYW1l
dGVyTGlzdCBwYXJhbWV0ZXJMaXN0ID0gY29udGV4dC5jcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0
KCk7CisgICAgZnVuY3Rpb25JbmZvLnBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJMaXN0OworICAgIGZ1
bmN0aW9uSW5mby5zdGFydE9mZnNldCA9IHBhcmFtZXRlcnNTdGFydDsKICAgICAKLSNpZiBFTkFC
TEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQogICAgIGlmIChtb2RlID09IEFycm93RnVuY3Rp
b25Nb2RlKSB7CiAgICAgICAgIGlmICghbWF0Y2goSURFTlQpICYmICFtYXRjaChPUEVOUEFSRU4p
KSB7CiAgICAgICAgICAgICBzZW1hbnRpY0ZhaWx1cmVEdWVUb0tleXdvcmQoc3RyaW5nRm9yRnVu
Y3Rpb25Nb2RlKG1vZGUpLCAiIG5hbWUiKTsKQEAgLTE0MzcsNzYgKzE0MjksODggQEAgdGVtcGxh
dGUgPHR5cGVuYW1lIExleGVyVHlwZT4gdGVtcGxhdGUgPAogICAgICAgICAgICAgaWYgKG1hdGNo
KE9QRU5QQVJFTikpIHsKICAgICAgICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgICAgaWYgKCFtYXRjaChDTE9TRVBBUkVOKSkgewotICAgICAgICAgICAg
ICAgICAgICBpbmZvLnBhcmFtZXRlcnMgPSBwYXJzZUZvcm1hbFBhcmFtZXRlcnMoY29udGV4dCk7
Ci0gICAgICAgICAgICAgICAgICAgIGZhaWxJZkZhbHNlKGluZm8ucGFyYW1ldGVycywgIkNhbm5v
dCBwYXJzZSBwYXJhbWV0ZXJzIGZvciB0aGlzICIsIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShtb2Rl
KSk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChtYXRjaChDTE9TRVBB
UkVOKSkKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25JbmZvLnBhcmFtZXRlckNvdW50ID0g
MDsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGZhaWxJZkZhbHNl
KHBhcnNlRm9ybWFsUGFyYW1ldGVycyhjb250ZXh0LCBwYXJhbWV0ZXJMaXN0LCBmdW5jdGlvbklu
Zm8ucGFyYW1ldGVyQ291bnQpLCAiQ2Fubm90IHBhcnNlIHBhcmFtZXRlcnMgZm9yIHRoaXMgIiwg
c3RyaW5nRm9yRnVuY3Rpb25Nb2RlKG1vZGUpKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICBjb25zdW1lT3JGYWlsKENMT1NFUEFSRU4sICJFeHBlY3RlZCBhICcpJyBvciBhICcs
JyBhZnRlciBhIHBhcmFtZXRlciBkZWNsYXJhdGlvbiIpOwogICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBmdW5jdGlvbkluZm8ucGFyYW1ldGVyQ291bnQgPSAxOwogICAgICAg
ICAgICAgICAgIGF1dG8gcGFyYW1ldGVyID0gcGFyc2VEZXN0cnVjdHVyaW5nUGF0dGVybihjb250
ZXh0LCBEZXN0cnVjdHVyZVRvUGFyYW1ldGVycyk7CiAgICAgICAgICAgICAgICAgZmFpbElmRmFs
c2UocGFyYW1ldGVyLCAiQ2Fubm90IHBhcnNlIHBhcmFtZXRlciBwYXR0ZXJuIik7Ci0gICAgICAg
ICAgICAgICAgaW5mby5wYXJhbWV0ZXJzID0gY29udGV4dC5jcmVhdGVGb3JtYWxQYXJhbWV0ZXJM
aXN0KHBhcmFtZXRlcik7Ci0gICAgICAgICAgICAgICAgZmFpbElmRmFsc2UoaW5mby5wYXJhbWV0
ZXJzLCAiQ2Fubm90IHBhcnNlIHBhcmFtZXRlcnMgZm9yIHRoaXMgIiwgc3RyaW5nRm9yRnVuY3Rp
b25Nb2RlKG1vZGUpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihw
YXJhbWV0ZXJMaXN0LCBwYXJhbWV0ZXIpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAg
ICAgIAorCiAgICAgICAgIHJldHVybiBwYXJhbWV0ZXJzU3RhcnQ7CiAgICAgfQotI2VuZGlmCi0g
ICAgCisKICAgICBpZiAoIWNvbnN1bWUoT1BFTlBBUkVOKSkgewogICAgICAgICBzZW1hbnRpY0Zh
aWx1cmVEdWVUb0tleXdvcmQoc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKG1vZGUpLCAiIG5hbWUiKTsK
ICAgICAgICAgZmFpbFdpdGhNZXNzYWdlKCJFeHBlY3RlZCBhbiBvcGVuaW5nICcoJyBiZWZvcmUg
YSAiLCBzdHJpbmdGb3JGdW5jdGlvbk1vZGUobW9kZSksICIncyBwYXJhbWV0ZXIgbGlzdCIpOwog
ICAgIH0KIAotICAgIGlmIChtb2RlID09IEdldHRlck1vZGUpCisgICAgaWYgKG1vZGUgPT0gR2V0
dGVyTW9kZSkgewogICAgICAgICBjb25zdW1lT3JGYWlsKENMT1NFUEFSRU4sICJnZXR0ZXIgZnVu
Y3Rpb25zIG11c3QgaGF2ZSBubyBwYXJhbWV0ZXJzIik7Ci0gICAgZWxzZSBpZiAobW9kZSA9PSBT
ZXR0ZXJNb2RlKSB7CisgICAgICAgIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJDb3VudCA9IDA7Cisg
ICAgfSBlbHNlIGlmIChtb2RlID09IFNldHRlck1vZGUpIHsKICAgICAgICAgZmFpbElmVHJ1ZSht
YXRjaChDTE9TRVBBUkVOKSwgInNldHRlciBmdW5jdGlvbnMgbXVzdCBoYXZlIG9uZSBwYXJhbWV0
ZXIiKTsKICAgICAgICAgYXV0byBwYXJhbWV0ZXIgPSBwYXJzZURlc3RydWN0dXJpbmdQYXR0ZXJu
KGNvbnRleHQsIERlc3RydWN0dXJlVG9QYXJhbWV0ZXJzKTsKICAgICAgICAgZmFpbElmRmFsc2Uo
cGFyYW1ldGVyLCAic2V0dGVyIGZ1bmN0aW9ucyBtdXN0IGhhdmUgb25lIHBhcmFtZXRlciIpOwot
ICAgICAgICBpbmZvLnBhcmFtZXRlcnMgPSBjb250ZXh0LmNyZWF0ZUZvcm1hbFBhcmFtZXRlckxp
c3QocGFyYW1ldGVyKTsKKyAgICAgICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVy
TGlzdCwgcGFyYW1ldGVyKTsKKyAgICAgICAgZnVuY3Rpb25JbmZvLnBhcmFtZXRlckNvdW50ID0g
MTsKICAgICAgICAgZmFpbElmVHJ1ZShtYXRjaChDT01NQSksICJzZXR0ZXIgZnVuY3Rpb25zIG11
c3QgaGF2ZSBvbmUgcGFyYW1ldGVyIik7CiAgICAgICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VQQVJF
TiwgIkV4cGVjdGVkIGEgJyknIGFmdGVyIGEgcGFyYW1ldGVyIGRlY2xhcmF0aW9uIik7CiAgICAg
fSBlbHNlIHsKLSAgICAgICAgaWYgKCFtYXRjaChDTE9TRVBBUkVOKSkgewotICAgICAgICAgICAg
aW5mby5wYXJhbWV0ZXJzID0gcGFyc2VGb3JtYWxQYXJhbWV0ZXJzKGNvbnRleHQpOwotICAgICAg
ICAgICAgZmFpbElmRmFsc2UoaW5mby5wYXJhbWV0ZXJzLCAiQ2Fubm90IHBhcnNlIHBhcmFtZXRl
cnMgZm9yIHRoaXMgIiwgc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKG1vZGUpKTsKLSAgICAgICAgfQor
ICAgICAgICBpZiAobWF0Y2goQ0xPU0VQQVJFTikpCisgICAgICAgICAgICBmdW5jdGlvbkluZm8u
cGFyYW1ldGVyQ291bnQgPSAwOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmYWlsSWZGYWxz
ZShwYXJzZUZvcm1hbFBhcmFtZXRlcnMoY29udGV4dCwgcGFyYW1ldGVyTGlzdCwgZnVuY3Rpb25J
bmZvLnBhcmFtZXRlckNvdW50KSwgIkNhbm5vdCBwYXJzZSBwYXJhbWV0ZXJzIGZvciB0aGlzICIs
IHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShtb2RlKSk7CiAgICAgICAgIGNvbnN1bWVPckZhaWwoQ0xP
U0VQQVJFTiwgIkV4cGVjdGVkIGEgJyknIG9yIGEgJywnIGFmdGVyIGEgcGFyYW1ldGVyIGRlY2xh
cmF0aW9uIik7CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIHBhcmFtZXRlcnNTdGFydDsKIH0K
IAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KLXRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxk
ZXImIGNvbnRleHQsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzIHJlcXVpcmVtZW50cywgRnVuY3Rpb25Q
YXJzZU1vZGUgbW9kZSwgYm9vbCBuYW1lSXNJbkNvbnRhaW5pbmdTY29wZSwgQ29uc3RydWN0b3JL
aW5kIGNvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nIGV4cGVjdGVkU3VwZXJCaW5kaW5nLCBp
bnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4m
IGluZm8sIEZ1bmN0aW9uUGFyc2VUeXBlIHBhcnNlVHlwZSkKK3RlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1
aWxkZXImIGNvbnRleHQsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzIHJlcXVpcmVtZW50cywgRnVuY3Rp
b25QYXJzZU1vZGUgbW9kZSwgYm9vbCBuYW1lSXNJbkNvbnRhaW5pbmdTY29wZSwgQ29uc3RydWN0
b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nIGV4cGVjdGVkU3VwZXJCaW5kaW5n
LCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRl
cj4mIGZ1bmN0aW9uSW5mbywgRnVuY3Rpb25QYXJzZVR5cGUgcGFyc2VUeXBlKQogeworICAgIFJF
TEVBU0VfQVNTRVJUKG1vZGUgIT0gTm90QUZ1bmN0aW9uTW9kZSk7CisKICAgICBBdXRvUG9wU2Nv
cGVSZWYgZnVuY3Rpb25TY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7CiAgICAgZnVuY3Rpb25TY29w
ZS0+c2V0SXNGdW5jdGlvbigpOwogICAgIGludCBmdW5jdGlvbk5hbWVTdGFydCA9IG1fdG9rZW4u
bV9sb2NhdGlvbi5zdGFydE9mZnNldDsKICAgICBjb25zdCBJZGVudGlmaWVyKiBsYXN0RnVuY3Rp
b25OYW1lID0gbV9sYXN0RnVuY3Rpb25OYW1lOwogICAgIG1fbGFzdEZ1bmN0aW9uTmFtZSA9IG51
bGxwdHI7CiAgICAgaW50IHBhcmFtZXRlcnNTdGFydDsKKyAgICBKU1Rva2VuTG9jYXRpb24gc3Rh
cnRMb2NhdGlvbjsKKyAgICBpbnQgc3RhcnRDb2x1bW47CisgICAgRnVuY3Rpb25Cb2R5VHlwZSBm
dW5jdGlvbkJvZHlUeXBlOwogICAgIAogICAgIHN3aXRjaCAocGFyc2VUeXBlKSB7CiAgICAgY2Fz
ZSBTdGFuZGFyZEZ1bmN0aW9uUGFyc2VUeXBlOiB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1v
ZGUgIT0gQXJyb3dGdW5jdGlvbk1vZGUpOworCiAgICAgICAgIGlmIChtYXRjaChJREVOVCkpIHsK
LSAgICAgICAgICAgIGluZm8ubmFtZSA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OwotICAgICAgICAg
ICAgbV9sYXN0RnVuY3Rpb25OYW1lID0gaW5mby5uYW1lOworICAgICAgICAgICAgZnVuY3Rpb25J
bmZvLm5hbWUgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKKyAgICAgICAgICAgIG1fbGFzdEZ1bmN0
aW9uTmFtZSA9IGZ1bmN0aW9uSW5mby5uYW1lOwogICAgICAgICAgICAgbmV4dCgpOwogICAgICAg
ICAgICAgaWYgKCFuYW1lSXNJbkNvbnRhaW5pbmdTY29wZSkKLSAgICAgICAgICAgICAgICBmYWls
SWZGYWxzZUlmU3RyaWN0KGZ1bmN0aW9uU2NvcGUtPmRlY2xhcmVWYXJpYWJsZShpbmZvLm5hbWUp
LCAiJyIsIGluZm8ubmFtZS0+aW1wbCgpLCAiJyBpcyBub3QgYSB2YWxpZCAiLCBzdHJpbmdGb3JG
dW5jdGlvbk1vZGUobW9kZSksICIgbmFtZSBpbiBzdHJpY3QgbW9kZSIpOworICAgICAgICAgICAg
ICAgIGZhaWxJZkZhbHNlSWZTdHJpY3QoZnVuY3Rpb25TY29wZS0+ZGVjbGFyZVZhcmlhYmxlKGZ1
bmN0aW9uSW5mby5uYW1lKSwgIiciLCBmdW5jdGlvbkluZm8ubmFtZS0+aW1wbCgpLCAiJyBpcyBu
b3QgYSB2YWxpZCAiLCBzdHJpbmdGb3JGdW5jdGlvbk1vZGUobW9kZSksICIgbmFtZSBpbiBzdHJp
Y3QgbW9kZSIpOwogICAgICAgICB9IGVsc2UgaWYgKHJlcXVpcmVtZW50cyA9PSBGdW5jdGlvbk5l
ZWRzTmFtZSkgewotICAgICAgICAgICAgaWYgKG1hdGNoKE9QRU5QQVJFTikgJiYgbW9kZSA9PSBG
dW5jdGlvbk1vZGUpCisgICAgICAgICAgICBpZiAobWF0Y2goT1BFTlBBUkVOKSAmJiBtb2RlID09
IE5vcm1hbEZ1bmN0aW9uTW9kZSkKICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWwoIkZ1bmN0
aW9uIHN0YXRlbWVudHMgbXVzdCBoYXZlIGEgbmFtZSIpOwogICAgICAgICAgICAgc2VtYW50aWNG
YWlsdXJlRHVlVG9LZXl3b3JkKHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShtb2RlKSwgIiBuYW1lIik7
CiAgICAgICAgICAgICBmYWlsRHVlVG9VbmV4cGVjdGVkVG9rZW4oKTsKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgcGFyYW1ldGVyc1N0YXJ0
ID0gcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoY29udGV4dCwgbW9kZSwgaW5mbyk7CisKKyAgICAg
ICAgc3RhcnRMb2NhdGlvbiA9IHRva2VuTG9jYXRpb24oKTsKKyAgICAgICAgZnVuY3Rpb25JbmZv
LnN0YXJ0TGluZSA9IHRva2VuTGluZSgpOworICAgICAgICBzdGFydENvbHVtbiA9IHRva2VuQ29s
dW1uKCk7CisKKyAgICAgICAgcGFyYW1ldGVyc1N0YXJ0ID0gcGFyc2VGdW5jdGlvblBhcmFtZXRl
cnMoY29udGV4dCwgbW9kZSwgZnVuY3Rpb25JbmZvKTsKICAgICAgICAgcHJvcGFnYXRlRXJyb3Io
KTsKICAgICAgICAgCiAgICAgICAgIG1hdGNoT3JGYWlsKE9QRU5CUkFDRSwgIkV4cGVjdGVkIGFu
IG9wZW5pbmcgJ3snIGF0IHRoZSBzdGFydCBvZiBhICIsIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZSht
b2RlKSwgIiBib2R5Iik7CkBAIC0xNTE4LDE0ICsxNTIyLDIwIEBAIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gYm9vbCBQYXJzZXIKICAgICAgICAgICAgIGNvbnN0cnVjdG9yS2luZCA9IG1f
ZGVmYXVsdENvbnN0cnVjdG9yS2luZDsKICAgICAgICAgICAgIGV4cGVjdGVkU3VwZXJCaW5kaW5n
ID0gbV9kZWZhdWx0Q29uc3RydWN0b3JLaW5kID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCA/
IFN1cGVyQmluZGluZzo6TmVlZGVkIDogU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQ7CiAgICAgICAg
IH0KLSAgICAgICAgCi0gICAgICAgIGluZm8uc3RhcnRGdW5jdGlvbk9mZnNldCA9IG1fdG9rZW4u
bV9kYXRhLm9mZnNldDsKKworICAgICAgICBmdW5jdGlvbkJvZHlUeXBlID0gU3RhbmRhcmRGdW5j
dGlvbkJvZHlCbG9jazsKICAgICAgICAgCiAgICAgICAgIGJyZWFrOwogICAgIH0KICNpZiBFTkFC
TEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQogICAgIGNhc2UgQXJyb3dGdW5jdGlvblBhcnNl
VHlwZTogewotICAgICAgICBwYXJhbWV0ZXJzU3RhcnQgPSBwYXJzZUZ1bmN0aW9uUGFyYW1ldGVy
cyhjb250ZXh0LCBBcnJvd0Z1bmN0aW9uTW9kZSwgaW5mbyk7CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUKG1vZGUgPT0gQXJyb3dGdW5jdGlvbk1vZGUpOworCisgICAgICAgIHN0YXJ0TG9jYXRpb24g
PSB0b2tlbkxvY2F0aW9uKCk7CisgICAgICAgIGZ1bmN0aW9uSW5mby5zdGFydExpbmUgPSB0b2tl
bkxpbmUoKTsKKyAgICAgICAgc3RhcnRDb2x1bW4gPSB0b2tlbkNvbHVtbigpOworCisgICAgICAg
IHBhcmFtZXRlcnNTdGFydCA9IHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKGNvbnRleHQsIG1vZGUs
IGZ1bmN0aW9uSW5mbyk7CiAgICAgICAgIHByb3BhZ2F0ZUVycm9yKCk7CiAgICAgICAgIAogICAg
ICAgICBtYXRjaE9yRmFpbChBUlJPV0ZVTkNUSU9OLCAiRXhwZWN0ZWQgYSAnPT4nIGFmdGVyIGFy
cm93IGZ1bmN0aW9uIHBhcmFtZXRlciBkZWNsYXJhdGlvbiIpOwpAQCAtMTUzNSwzMCArMTU0NSwy
NSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyCiAKICAgICAgICAg
QVNTRVJUKGNvbnN0cnVjdG9yS2luZCA9PSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpOwogICAgICAg
ICAKLSAgICAgICAgaW5mby5hcnJvd0Z1bmN0aW9uT2Zmc2V0ID0gbV90b2tlbi5tX2RhdGEub2Zm
c2V0OwogICAgICAgICAvLyBDaGVjayBpZiBhcnJvdyBib2R5IHN0YXJ0IHdpdGggey4gSWYgaXQg
dHJ1ZSBpdCBtZWFuIHRoYXQgYXJyb3cgZnVuY3Rpb24gaXMgRmF0IGFycm93IGZ1bmN0aW9uCiAg
ICAgICAgIC8vIGFuZCB3ZSBuZWVkIHVzZSBjb21tb24gYXBwcm9hY2ggdG8gcGFyc2UgZnVuY3Rp
b24gYm9keQotICAgICAgICBTYXZlUG9pbnQgc2F2ZVBvaW50ID0gY3JlYXRlU2F2ZVBvaW50KCk7
Ci0gICAgICAgIAogICAgICAgICBuZXh0KCk7Ci0gICAgICAgIGluZm8uZnVuY3Rpb25Cb2R5VHlw
ZSA9IG1hdGNoKE9QRU5CUkFDRSkgPyBBcnJvd0Z1bmN0aW9uQm9keUJsb2NrIDogQXJyb3dGdW5j
dGlvbkJvZHlFeHByZXNzaW9uOwotICAgICAgICBpbmZvLnN0YXJ0RnVuY3Rpb25PZmZzZXQgPSAo
aW5mby5mdW5jdGlvbkJvZHlUeXBlID09IEFycm93RnVuY3Rpb25Cb2R5QmxvY2spID8gbV90b2tl
bi5tX2RhdGEub2Zmc2V0IDogaW5mby5hcnJvd0Z1bmN0aW9uT2Zmc2V0OworICAgICAgICBmdW5j
dGlvbkJvZHlUeXBlID0gbWF0Y2goT1BFTkJSQUNFKSA/IEFycm93RnVuY3Rpb25Cb2R5QmxvY2sg
OiBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb247CiAgICAgICAgIAotICAgICAgICByZXN0b3Jl
U2F2ZVBvaW50KHNhdmVQb2ludCk7Ci0KICAgICAgICAgYnJlYWs7CiAgICAgfQorI2Vsc2UKKyAg
ICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogI2VuZGlm
CiAgICAgfQogICAgIAogICAgIGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9yID0gY29uc3RydWN0b3JL
aW5kICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsKIAotICAgIGluZm8uYm9keVN0YXJ0TGluZSA9
IHRva2VuTGluZSgpOwotICAgIGluZm8uYm9keVN0YXJ0Q29sdW1uID0gbV90b2tlbi5tX2RhdGEu
b2Zmc2V0IC0gbV90b2tlbi5tX2RhdGEubGluZVN0YXJ0T2Zmc2V0OwotICAgIEpTVG9rZW5Mb2Nh
dGlvbiBzdGFydExvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CisgICAgZnVuY3Rpb25JbmZvLmJv
ZHlTdGFydENvbHVtbiA9IHN0YXJ0Q29sdW1uOwogICAgIAogICAgIC8vIElmIHdlIGtub3cgYWJv
dXQgdGhpcyBmdW5jdGlvbiBhbHJlYWR5LCB3ZSBjYW4gdXNlIHRoZSBjYWNoZWQgaW5mbyBhbmQg
c2tpcCB0aGUgcGFyc2VyIHRvIHRoZSBlbmQgb2YgdGhlIGZ1bmN0aW9uLgotICAgIGlmIChjb25z
dCBTb3VyY2VQcm92aWRlckNhY2hlSXRlbSogY2FjaGVkSW5mbyA9IFRyZWVCdWlsZGVyOjpDYW5V
c2VGdW5jdGlvbkNhY2hlID8gZmluZENhY2hlZEZ1bmN0aW9uSW5mbyhpbmZvLnN0YXJ0RnVuY3Rp
b25PZmZzZXQpIDogMCkgeworICAgIGlmIChjb25zdCBTb3VyY2VQcm92aWRlckNhY2hlSXRlbSog
Y2FjaGVkSW5mbyA9IFRyZWVCdWlsZGVyOjpDYW5Vc2VGdW5jdGlvbkNhY2hlID8gZmluZENhY2hl
ZEZ1bmN0aW9uSW5mbyhmdW5jdGlvbkluZm8uc3RhcnRPZmZzZXQpIDogMCkgewogICAgICAgICAv
LyBJZiB3ZSdyZSBpbiBhIHN0cmljdCBjb250ZXh0LCB0aGUgY2FjaGVkIGZ1bmN0aW9uIGluZm8g
bXVzdCBzYXkgaXQgd2FzIHN0cmljdCB0b28uCiAgICAgICAgIEFTU0VSVCghc3RyaWN0TW9kZSgp
IHx8IGNhY2hlZEluZm8tPnN0cmljdE1vZGUpOwogICAgICAgICBKU1Rva2VuTG9jYXRpb24gZW5k
TG9jYXRpb247CkBAIC0xNTY3LDE3ICsxNTcyLDE3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gYm9vbCBQYXJzZXIKICAgICAgICAgZW5kTG9jYXRpb24uc3RhcnRPZmZzZXQgPSBjYWNo
ZWRJbmZvLT5sYXN0VG9ja2VuU3RhcnRPZmZzZXQ7CiAgICAgICAgIGVuZExvY2F0aW9uLmxpbmVT
dGFydE9mZnNldCA9IGNhY2hlZEluZm8tPmxhc3RUb2NrZW5MaW5lU3RhcnRPZmZzZXQ7CiAKLSAg
ICAgICAgYm9vbCBlbmRDb2x1bW5Jc09uU3RhcnRMaW5lID0gKGVuZExvY2F0aW9uLmxpbmUgPT0g
aW5mby5ib2R5U3RhcnRMaW5lKTsKKyAgICAgICAgYm9vbCBlbmRDb2x1bW5Jc09uU3RhcnRMaW5l
ID0gKGVuZExvY2F0aW9uLmxpbmUgPT0gZnVuY3Rpb25JbmZvLnN0YXJ0TGluZSk7CiAgICAgICAg
IEFTU0VSVChlbmRMb2NhdGlvbi5zdGFydE9mZnNldCA+PSBlbmRMb2NhdGlvbi5saW5lU3RhcnRP
ZmZzZXQpOwogICAgICAgICB1bnNpZ25lZCBib2R5RW5kQ29sdW1uID0gZW5kQ29sdW1uSXNPblN0
YXJ0TGluZSA/CiAgICAgICAgICAgICBlbmRMb2NhdGlvbi5zdGFydE9mZnNldCAtIG1fdG9rZW4u
bV9kYXRhLmxpbmVTdGFydE9mZnNldCA6CiAgICAgICAgICAgICBlbmRMb2NhdGlvbi5zdGFydE9m
ZnNldCAtIGVuZExvY2F0aW9uLmxpbmVTdGFydE9mZnNldDsKICAgICAgICAgdW5zaWduZWQgY3Vy
cmVudExpbmVTdGFydE9mZnNldCA9IG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQ7
CiAKLSAgICAgICAgaW5mby5ib2R5ID0gY29udGV4dC5jcmVhdGVGdW5jdGlvbkJvZHkoCi0gICAg
ICAgICAgICBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgaW5mby5ib2R5U3RhcnRDb2x1bW4s
IGJvZHlFbmRDb2x1bW4sIAorICAgICAgICBmdW5jdGlvbkluZm8uYm9keSA9IGNvbnRleHQuY3Jl
YXRlRnVuY3Rpb25Cb2R5KAorICAgICAgICAgICAgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24s
IGZ1bmN0aW9uSW5mby5ib2R5U3RhcnRDb2x1bW4sIGJvZHlFbmRDb2x1bW4sIAogICAgICAgICAg
ICAgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3Rh
cnQsIAotICAgICAgICAgICAgY2FjaGVkSW5mby0+c3RyaWN0TW9kZSwgY29uc3RydWN0b3JLaW5k
KTsKKyAgICAgICAgICAgIGNhY2hlZEluZm8tPnN0cmljdE1vZGUsIGNvbnN0cnVjdG9yS2luZCwg
Y2FjaGVkSW5mby0+cGFyYW1ldGVyQ291bnQsIG1vZGUpOwogICAgICAgICAKICAgICAgICAgZnVu
Y3Rpb25TY29wZS0+cmVzdG9yZUZyb21Tb3VyY2VQcm92aWRlckNhY2hlKGNhY2hlZEluZm8pOwog
ICAgICAgICBmYWlsSWZGYWxzZShwb3BTY29wZShmdW5jdGlvblNjb3BlLCBUcmVlQnVpbGRlcjo6
TmVlZHNGcmVlVmFyaWFibGVJbmZvKSwgIlBhcnNlciBlcnJvciIpOwpAQCAtMTU4OSw2NCArMTU5
NCw0MCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyCiAKICAgICAg
ICAgbV9sZXhlci0+c2V0T2Zmc2V0KG1fdG9rZW4ubV9sb2NhdGlvbi5lbmRPZmZzZXQsIG1fdG9r
ZW4ubV9sb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOwogICAgICAgICBtX2xleGVyLT5zZXRMaW5l
TnVtYmVyKG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lKTsKLSAgICAgICAgaW5mby5lbmRGdW5jdGlv
bk9mZnNldCA9IGNhY2hlZEluZm8tPmVuZEZ1bmN0aW9uT2Zmc2V0OwotI2lmIEVOQUJMRShFUzZf
QVJST1dGVU5DVElPTl9TWU5UQVgpCisgICAgICAgIGZ1bmN0aW9uSW5mby5lbmRPZmZzZXQgPSBj
YWNoZWRJbmZvLT5lbmRGdW5jdGlvbk9mZnNldDsKKwogICAgICAgICBpZiAocGFyc2VUeXBlID09
IEFycm93RnVuY3Rpb25QYXJzZVR5cGUpCi0gICAgICAgICAgICBpbmZvLmZ1bmN0aW9uQm9keVR5
cGUgPSBjYWNoZWRJbmZvLT5pc0JvZHlBcnJvd0V4cHJlc3Npb24gPyAgQXJyb3dGdW5jdGlvbkJv
ZHlFeHByZXNzaW9uIDogQXJyb3dGdW5jdGlvbkJvZHlCbG9jazsKKyAgICAgICAgICAgIGZ1bmN0
aW9uQm9keVR5cGUgPSBjYWNoZWRJbmZvLT5pc0JvZHlBcnJvd0V4cHJlc3Npb24gPyAgQXJyb3dG
dW5jdGlvbkJvZHlFeHByZXNzaW9uIDogQXJyb3dGdW5jdGlvbkJvZHlCbG9jazsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgaW5mby5mdW5jdGlvbkJvZHlUeXBlID0gU3RhbmRhcmRGdW5jdGlv
bkJvZHlCbG9jazsKKyAgICAgICAgICAgIGZ1bmN0aW9uQm9keVR5cGUgPSBTdGFuZGFyZEZ1bmN0
aW9uQm9keUJsb2NrOwogICAgICAgICAKLSAgICAgICAgc3dpdGNoIChpbmZvLmZ1bmN0aW9uQm9k
eVR5cGUpIHsKKyAgICAgICAgc3dpdGNoIChmdW5jdGlvbkJvZHlUeXBlKSB7CiAgICAgICAgIGNh
c2UgQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uOgogICAgICAgICAgICAgbmV4dCgpOwotICAg
ICAgICAgICAgY29udGV4dC5zZXRFbmRPZmZzZXQoaW5mby5ib2R5LCBtX2xleGVyLT5jdXJyZW50
T2Zmc2V0KCkpOworICAgICAgICAgICAgY29udGV4dC5zZXRFbmRPZmZzZXQoZnVuY3Rpb25JbmZv
LmJvZHksIG1fbGV4ZXItPmN1cnJlbnRPZmZzZXQoKSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBBcnJvd0Z1bmN0aW9uQm9keUJsb2NrOgogICAgICAgICBjYXNlIFN0YW5kYXJk
RnVuY3Rpb25Cb2R5QmxvY2s6Ci0gICAgICAgICAgICBjb250ZXh0LnNldEVuZE9mZnNldChpbmZv
LmJvZHksIG1fbGV4ZXItPmN1cnJlbnRPZmZzZXQoKSk7CisgICAgICAgICAgICBjb250ZXh0LnNl
dEVuZE9mZnNldChmdW5jdGlvbkluZm8uYm9keSwgbV9sZXhlci0+Y3VycmVudE9mZnNldCgpKTsK
ICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0jZWxz
ZQotICAgICAgICBjb250ZXh0LnNldEVuZE9mZnNldChpbmZvLmJvZHksIG1fbGV4ZXItPmN1cnJl
bnRPZmZzZXQoKSk7Ci0gICAgICAgIG5leHQoKTsKLSNlbmRpZgotICAgICAgICBpbmZvLmJvZHlF
bmRMaW5lID0gbV9sYXN0VG9rZW5FbmRQb3NpdGlvbi5saW5lOworICAgICAgICBmdW5jdGlvbklu
Zm8uZW5kTGluZSA9IG1fbGFzdFRva2VuRW5kUG9zaXRpb24ubGluZTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogICAgIAogICAgIG1fbGFzdEZ1bmN0aW9uTmFtZSA9IGxhc3RGdW5jdGlv
bk5hbWU7CiAgICAgUGFyc2VyU3RhdGUgb2xkU3RhdGUgPSBzYXZlU3RhdGUoKTsKICAgICAKLSNp
ZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQotICAgIHN3aXRjaCAoaW5mby5mdW5j
dGlvbkJvZHlUeXBlKSB7Ci0gICAgY2FzZSBBcnJvd0Z1bmN0aW9uQm9keUJsb2NrOiB7Ci0gICAg
ICAgIC8vIENvbnN1bWUgPT4gaW4gY2FzZSBvZiBhcnJvdyBmdW5jdGlvbiBibG9jayBlLmcuIHgg
PT4geyByZXR1cm4geDsgfQotICAgICAgICBuZXh0KCk7Ci0gICAgCi0gICAgICAgIGluZm8uYm9k
eVN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwotICAgICAgICBpbmZvLmJvZHlTdGFydENvbHVtbiA9
IG1fdG9rZW4ubV9kYXRhLm9mZnNldCAtIG1fdG9rZW4ubV9kYXRhLmxpbmVTdGFydE9mZnNldDsK
LSAgICAgICAgICAgIAotICAgICAgICBpbmZvLmJvZHkgPSBwYXJzZUZ1bmN0aW9uQm9keShjb250
ZXh0LCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNT
dGFydCwgY29uc3RydWN0b3JLaW5kLCBTdGFuZGFyZEZ1bmN0aW9uUGFyc2VUeXBlKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgU3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jazoKLSAg
ICBjYXNlIEFycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA6IHsKLSAgICAgICAgaW5mby5ib2R5
ID0gcGFyc2VGdW5jdGlvbkJvZHkoY29udGV4dCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0
aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIGNvbnN0cnVjdG9yS2luZCwgcGFyc2VUeXBl
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIH0KLSNlbHNlCi0gICAgaW5mby5ib2R5ID0g
cGFyc2VGdW5jdGlvbkJvZHkoY29udGV4dCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9u
TmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIGNvbnN0cnVjdG9yS2luZCwgU3RhbmRhcmRGdW5j
dGlvblBhcnNlVHlwZSk7Ci0jZW5kaWYKKyAgICBmdW5jdGlvbkluZm8uYm9keSA9IHBhcnNlRnVu
Y3Rpb25Cb2R5KGNvbnRleHQsIHN0YXJ0TG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBmdW5jdGlvbktl
eXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgY29uc3RydWN0
b3JLaW5kLCBmdW5jdGlvbkJvZHlUeXBlLCBmdW5jdGlvbkluZm8ucGFyYW1ldGVyQ291bnQsIG1v
ZGUpOwogICAgIAogICAgIHJlc3RvcmVTdGF0ZShvbGRTdGF0ZSk7Ci0gICAgZmFpbElmRmFsc2Uo
aW5mby5ib2R5LCAiQ2Fubm90IHBhcnNlIHRoZSBib2R5IG9mIHRoaXMgIiwgc3RyaW5nRm9yRnVu
Y3Rpb25Nb2RlKG1vZGUpKTsKLSAgICBjb250ZXh0LnNldEVuZE9mZnNldChpbmZvLmJvZHksIG1f
bGV4ZXItPmN1cnJlbnRPZmZzZXQoKSk7Ci0gICAgaWYgKGZ1bmN0aW9uU2NvcGUtPnN0cmljdE1v
ZGUoKSAmJiBpbmZvLm5hbWUpIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobW9kZSA9PSBGdW5j
dGlvbk1vZGUgfHwgbW9kZSA9PSBNZXRob2RNb2RlKTsKLSAgICAgICAgc2VtYW50aWNGYWlsSWZU
cnVlKG1fdm0tPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cyA9PSAqaW5mby5uYW1lLCAiJyIsIGlu
Zm8ubmFtZS0+aW1wbCgpLCAiJyBpcyBub3QgYSB2YWxpZCBmdW5jdGlvbiBuYW1lIGluIHN0cmlj
dCBtb2RlIik7Ci0gICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5ldmFsID09ICppbmZvLm5hbWUsICInIiwgaW5mby5uYW1lLT5pbXBsKCksICInIGlzIG5vdCBh
IHZhbGlkIGZ1bmN0aW9uIG5hbWUgaW4gc3RyaWN0IG1vZGUiKTsKKyAgICBmYWlsSWZGYWxzZShm
dW5jdGlvbkluZm8uYm9keSwgIkNhbm5vdCBwYXJzZSB0aGUgYm9keSBvZiB0aGlzICIsIHN0cmlu
Z0ZvckZ1bmN0aW9uTW9kZShtb2RlKSk7CisgICAgY29udGV4dC5zZXRFbmRPZmZzZXQoZnVuY3Rp
b25JbmZvLmJvZHksIG1fbGV4ZXItPmN1cnJlbnRPZmZzZXQoKSk7CisgICAgaWYgKGZ1bmN0aW9u
U2NvcGUtPnN0cmljdE1vZGUoKSAmJiBmdW5jdGlvbkluZm8ubmFtZSkgeworICAgICAgICBSRUxF
QVNFX0FTU0VSVChtb2RlID09IE5vcm1hbEZ1bmN0aW9uTW9kZSB8fCBtb2RlID09IE1ldGhvZE1v
ZGUpOworICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUobV92bS0+cHJvcGVydHlOYW1lcy0+YXJn
dW1lbnRzID09ICpmdW5jdGlvbkluZm8ubmFtZSwgIiciLCBmdW5jdGlvbkluZm8ubmFtZS0+aW1w
bCgpLCAiJyBpcyBub3QgYSB2YWxpZCBmdW5jdGlvbiBuYW1lIGluIHN0cmljdCBtb2RlIik7Cisg
ICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5ldmFsID09ICpm
dW5jdGlvbkluZm8ubmFtZSwgIiciLCBmdW5jdGlvbkluZm8ubmFtZS0+aW1wbCgpLCAiJyBpcyBu
b3QgYSB2YWxpZCBmdW5jdGlvbiBuYW1lIGluIHN0cmljdCBtb2RlIik7CiAgICAgfQogICAgIGlm
IChmdW5jdGlvblNjb3BlLT5oYXNEaXJlY3RTdXBlcigpKSB7CiAgICAgICAgIHNlbWFudGljRmFp
bElmVHJ1ZSghaXNDbGFzc0NvbnN0cnVjdG9yLCAiQ2Fubm90IGNhbGwgc3VwZXIoKSBvdXRzaWRl
IG9mIGEgY2xhc3MgY29uc3RydWN0b3IiKTsKQEAgLTE2NTYsNTYgKzE2MzcsNDggQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcgogICAgICAgICBzZW1hbnRpY0ZhaWxJ
ZlRydWUoZXhwZWN0ZWRTdXBlckJpbmRpbmcgPT0gU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsICJz
dXBlciBjYW4gb25seSBiZSB1c2VkIGluIGEgbWV0aG9kIG9mIGEgZGVyaXZlZCBjbGFzcyIpOwog
CiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uID0gSlNUb2tlbkxvY2F0aW9uKG1fdG9rZW4u
bV9sb2NhdGlvbik7Ci0gICAgaW5mby5lbmRGdW5jdGlvbk9mZnNldCA9IG1fdG9rZW4ubV9kYXRh
Lm9mZnNldDsKKyAgICBmdW5jdGlvbkluZm8uZW5kT2Zmc2V0ID0gbV90b2tlbi5tX2RhdGEub2Zm
c2V0OwogICAgIAotI2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCi0gICAgaWYg
KGluZm8uZnVuY3Rpb25Cb2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pIHsK
KyAgICBpZiAoZnVuY3Rpb25Cb2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24p
IHsKICAgICAgICAgbG9jYXRpb24gPSBsb2NhdGlvbkJlZm9yZUxhc3RUb2tlbigpOwotICAgICAg
ICBpbmZvLmVuZEZ1bmN0aW9uT2Zmc2V0ID0gbG9jYXRpb24uZW5kT2Zmc2V0OworICAgICAgICBm
dW5jdGlvbkluZm8uZW5kT2Zmc2V0ID0gbG9jYXRpb24uZW5kT2Zmc2V0OwogICAgIH0KLSNlbmRp
ZgogICAgIAogICAgIC8vIENhY2hlIHRoZSB0b2tlbml6ZXIgc3RhdGUgYW5kIHRoZSBmdW5jdGlv
biBzY29wZSB0aGUgZmlyc3QgdGltZSB0aGUgZnVuY3Rpb24gaXMgcGFyc2VkLgogICAgIC8vIEFu
eSBmdXR1cmUgcmVwYXJzaW5nIGNhbiB0aGVuIHNraXAgdGhlIGZ1bmN0aW9uLgogICAgIHN0YXRp
YyBjb25zdCBpbnQgbWluaW11bUZ1bmN0aW9uTGVuZ3RoVG9DYWNoZSA9IDE2OwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxTb3VyY2VQcm92aWRlckNhY2hlSXRlbT4gbmV3SW5mbzsKLSAgICBpbnQgZnVu
Y3Rpb25MZW5ndGggPSBpbmZvLmVuZEZ1bmN0aW9uT2Zmc2V0IC0gaW5mby5zdGFydEZ1bmN0aW9u
T2Zmc2V0OworICAgIGludCBmdW5jdGlvbkxlbmd0aCA9IGZ1bmN0aW9uSW5mby5lbmRPZmZzZXQg
LSBmdW5jdGlvbkluZm8uc3RhcnRPZmZzZXQ7CiAgICAgaWYgKFRyZWVCdWlsZGVyOjpDYW5Vc2VG
dW5jdGlvbkNhY2hlICYmIG1fZnVuY3Rpb25DYWNoZSAmJiBmdW5jdGlvbkxlbmd0aCA+IG1pbmlt
dW1GdW5jdGlvbkxlbmd0aFRvQ2FjaGUpIHsKICAgICAgICAgU291cmNlUHJvdmlkZXJDYWNoZUl0
ZW1DcmVhdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLSAgICAgICAgcGFyYW1ldGVycy5lbmRG
dW5jdGlvbk9mZnNldCA9IGluZm8uZW5kRnVuY3Rpb25PZmZzZXQ7CisgICAgICAgIHBhcmFtZXRl
cnMuZW5kRnVuY3Rpb25PZmZzZXQgPSBmdW5jdGlvbkluZm8uZW5kT2Zmc2V0OwogICAgICAgICBw
YXJhbWV0ZXJzLmZ1bmN0aW9uTmFtZVN0YXJ0ID0gZnVuY3Rpb25OYW1lU3RhcnQ7CiAgICAgICAg
IHBhcmFtZXRlcnMubGFzdFRvY2tlbkxpbmUgPSBsb2NhdGlvbi5saW5lOwogICAgICAgICBwYXJh
bWV0ZXJzLmxhc3RUb2NrZW5TdGFydE9mZnNldCA9IGxvY2F0aW9uLnN0YXJ0T2Zmc2V0OwogICAg
ICAgICBwYXJhbWV0ZXJzLmxhc3RUb2NrZW5FbmRPZmZzZXQgPSBsb2NhdGlvbi5lbmRPZmZzZXQ7
CiAgICAgICAgIHBhcmFtZXRlcnMubGFzdFRvY2tlbkxpbmVTdGFydE9mZnNldCA9IGxvY2F0aW9u
LmxpbmVTdGFydE9mZnNldDsKLSNpZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQot
ICAgICAgICBpZiAoaW5mby5mdW5jdGlvbkJvZHlUeXBlID09IEFycm93RnVuY3Rpb25Cb2R5RXhw
cmVzc2lvbikgeworICAgICAgICBwYXJhbWV0ZXJzLnBhcmFtZXRlckNvdW50ID0gZnVuY3Rpb25J
bmZvLnBhcmFtZXRlckNvdW50OworICAgICAgICBpZiAoZnVuY3Rpb25Cb2R5VHlwZSA9PSBBcnJv
d0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pIHsKICAgICAgICAgICAgIHBhcmFtZXRlcnMuaXNCb2R5
QXJyb3dFeHByZXNzaW9uID0gdHJ1ZTsKICAgICAgICAgICAgIHBhcmFtZXRlcnMudG9rZW5UeXBl
ID0gbV90b2tlbi5tX3R5cGU7CiAgICAgICAgIH0KLSNlbmRpZgogICAgICAgICBmdW5jdGlvblNj
b3BlLT5maWxsUGFyYW1ldGVyc0ZvclNvdXJjZVByb3ZpZGVyQ2FjaGUocGFyYW1ldGVycyk7CiAg
ICAgICAgIG5ld0luZm8gPSBTb3VyY2VQcm92aWRlckNhY2hlSXRlbTo6Y3JlYXRlKHBhcmFtZXRl
cnMpOwogICAgIH0KICAgICAKICAgICBmYWlsSWZGYWxzZShwb3BTY29wZShmdW5jdGlvblNjb3Bl
LCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKSwgIlBhcnNlciBlcnJvciIpOwog
ICAgIAotI2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCi0gICAgaWYgKGluZm8u
ZnVuY3Rpb25Cb2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCisgICAgaWYg
KGZ1bmN0aW9uQm9keVR5cGUgPT0gQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQogICAgICAg
ICBmYWlsSWZGYWxzZShpc0VuZE9mQXJyb3dGdW5jdGlvbigpLCAiRXhwZWN0ZWQgdGhlIGNsb3Np
bmcgJzsnICcsJyAnXScgJyknICd9JywgbGluZSB0ZXJtaW5hdG9yIG9yIEVPRiBhZnRlciBhcnJv
dyBmdW5jdGlvbiIpOwogICAgIGVsc2UgewogICAgICAgICBtYXRjaE9yRmFpbChDTE9TRUJSQUNF
LCAiRXhwZWN0ZWQgYSBjbG9zaW5nICd9JyBhZnRlciBhICIsIHN0cmluZ0ZvckZ1bmN0aW9uTW9k
ZShtb2RlKSwgIiBib2R5Iik7CiAgICAgICAgIG5leHQoKTsKICAgICB9Ci0jZWxzZQotICAgIG1h
dGNoT3JGYWlsKENMT1NFQlJBQ0UsICJFeHBlY3RlZCBhIGNsb3NpbmcgJ30nIGFmdGVyIGEgIiwg
c3RyaW5nRm9yRnVuY3Rpb25Nb2RlKG1vZGUpLCAiIGJvZHkiKTsKLSAgICBuZXh0KCk7Ci0jZW5k
aWYKICAgICAKICAgICBpZiAobmV3SW5mbykKLSAgICAgICAgbV9mdW5jdGlvbkNhY2hlLT5hZGQo
aW5mby5zdGFydEZ1bmN0aW9uT2Zmc2V0LCBXVEY6Om1vdmUobmV3SW5mbykpOworICAgICAgICBt
X2Z1bmN0aW9uQ2FjaGUtPmFkZChmdW5jdGlvbkluZm8uc3RhcnRPZmZzZXQsIFdURjo6bW92ZShu
ZXdJbmZvKSk7CiAgICAgCi0gICAgaW5mby5ib2R5RW5kTGluZSA9IG1fbGFzdFRva2VuRW5kUG9z
aXRpb24ubGluZTsKKyAgICBmdW5jdGlvbkluZm8uZW5kTGluZSA9IG1fbGFzdFRva2VuRW5kUG9z
aXRpb24ubGluZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTcxNiwxMiArMTY4OSwxMiBA
QCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lCiAgICAgSlNUb2tlbkxv
Y2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgdW5zaWduZWQgZnVuY3Rpb25L
ZXl3b3JkU3RhcnQgPSB0b2tlblN0YXJ0KCk7CiAgICAgbmV4dCgpOwotICAgIFBhcnNlckZ1bmN0
aW9uSW5mbzxUcmVlQnVpbGRlcj4gaW5mbzsKLSAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlv
bkluZm8oY29udGV4dCwgRnVuY3Rpb25OZWVkc05hbWUsIEZ1bmN0aW9uTW9kZSwgdHJ1ZSwgQ29u
c3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwKLSAgICAgICAgZnVu
Y3Rpb25LZXl3b3JkU3RhcnQsIGluZm8sIFN0YW5kYXJkRnVuY3Rpb25QYXJzZVR5cGUpKSwgIkNh
bm5vdCBwYXJzZSB0aGlzIGZ1bmN0aW9uIik7Ci0gICAgZmFpbElmRmFsc2UoaW5mby5uYW1lLCAi
RnVuY3Rpb24gc3RhdGVtZW50cyBtdXN0IGhhdmUgYSBuYW1lIik7Ci0gICAgZmFpbElmRmFsc2VJ
ZlN0cmljdChkZWNsYXJlVmFyaWFibGUoaW5mby5uYW1lKSwgIkNhbm5vdCBkZWNsYXJlIGEgZnVu
Y3Rpb24gbmFtZWQgJyIsIGluZm8ubmFtZS0+aW1wbCgpLCAiJyBpbiBzdHJpY3QgbW9kZSIpOwot
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmNEZWNsU3RhdGVtZW50KGxvY2F0aW9uLCBpbmZv
KTsKKyAgICBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+IGZ1bmN0aW9uSW5mbzsKKyAg
ICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25OZWVkc05h
bWUsIE5vcm1hbEZ1bmN0aW9uTW9kZSwgdHJ1ZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBl
ckJpbmRpbmc6Ok5vdE5lZWRlZCwKKyAgICAgICAgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0
aW9uSW5mbywgU3RhbmRhcmRGdW5jdGlvblBhcnNlVHlwZSkpLCAiQ2Fubm90IHBhcnNlIHRoaXMg
ZnVuY3Rpb24iKTsKKyAgICBmYWlsSWZGYWxzZShmdW5jdGlvbkluZm8ubmFtZSwgIkZ1bmN0aW9u
IHN0YXRlbWVudHMgbXVzdCBoYXZlIGEgbmFtZSIpOworICAgIGZhaWxJZkZhbHNlSWZTdHJpY3Qo
ZGVjbGFyZVZhcmlhYmxlKGZ1bmN0aW9uSW5mby5uYW1lKSwgIkNhbm5vdCBkZWNsYXJlIGEgZnVu
Y3Rpb24gbmFtZWQgJyIsIGZ1bmN0aW9uSW5mby5uYW1lLT5pbXBsKCksICInIGluIHN0cmljdCBt
b2RlIik7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQobG9jYXRp
b24sIGZ1bmN0aW9uSW5mbyk7CiB9CiAKICNpZiBFTkFCTEUoRVM2X0NMQVNTX1NZTlRBWCkKQEAg
LTE4MzcsNyArMTgxMCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUNsYXNz
RXgKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVl
QnVpbGRlcj4gbWV0aG9kSW5mbzsKICAgICAgICAgICAgIGJvb2wgaXNDb25zdHJ1Y3RvciA9ICFp
c1N0YXRpY01ldGhvZCAmJiAqaWRlbnQgPT0gcHJvcGVydHlOYW1lcy5jb25zdHJ1Y3RvcjsKLSAg
ICAgICAgICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlv
bk5vUmVxdWlyZW1lbnRzLCBpc1N0YXRpY01ldGhvZCA/IEZ1bmN0aW9uTW9kZSA6IE1ldGhvZE1v
ZGUsIGZhbHNlLCBpc0NvbnN0cnVjdG9yID8gY29uc3RydWN0b3JLaW5kIDogQ29uc3RydWN0b3JL
aW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgbWV0aG9kU3RhcnQsIG1ldGhvZEluZm8s
IFN0YW5kYXJkRnVuY3Rpb25QYXJzZVR5cGUpKSwgIkNhbm5vdCBwYXJzZSB0aGlzIG1ldGhvZCIp
OworICAgICAgICAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1
bmN0aW9uTm9SZXF1aXJlbWVudHMsIGlzU3RhdGljTWV0aG9kID8gTm9ybWFsRnVuY3Rpb25Nb2Rl
IDogTWV0aG9kTW9kZSwgZmFsc2UsIGlzQ29uc3RydWN0b3IgPyBjb25zdHJ1Y3RvcktpbmQgOiBD
b25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6TmVlZGVkLCBtZXRob2RTdGFydCwg
bWV0aG9kSW5mbywgU3RhbmRhcmRGdW5jdGlvblBhcnNlVHlwZSkpLCAiQ2Fubm90IHBhcnNlIHRo
aXMgbWV0aG9kIik7CiAgICAgICAgICAgICBmYWlsSWZGYWxzZShpZGVudCAmJiBkZWNsYXJlVmFy
aWFibGUoaWRlbnQpLCAiQ2Fubm90IGRlY2xhcmUgYSBtZXRob2QgbmFtZWQgJyIsIG1ldGhvZElu
Zm8ubmFtZS0+aW1wbCgpLCAiJyIpOwogICAgICAgICAgICAgbWV0aG9kSW5mby5uYW1lID0gaXND
b25zdHJ1Y3RvciA/IGNsYXNzTmFtZSA6IGlkZW50OwogCkBAIC0yNjU0LDcgKzI2MjcsNyBAQCB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzCiAgICAgICAgIG5leHQoKTsK
ICAgICAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiBpbmZvOwogICAgICAgICBp
bmZvLm5hbWUgPSAmbV92bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXI7Ci0gICAgICAg
IGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5vUmVxdWly
ZW1lbnRzLCBGdW5jdGlvbk1vZGUsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVy
QmluZGluZzo6Tm90TmVlZGVkLCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW5mbywgU3RhbmRhcmRG
dW5jdGlvblBhcnNlVHlwZSkpLCAiQ2Fubm90IHBhcnNlIGZ1bmN0aW9uIGV4cHJlc3Npb24iKTsK
KyAgICAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9u
Tm9SZXF1aXJlbWVudHMsIE5vcm1hbEZ1bmN0aW9uTW9kZSwgZmFsc2UsIENvbnN0cnVjdG9yS2lu
ZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBp
bmZvLCBTdGFuZGFyZEZ1bmN0aW9uUGFyc2VUeXBlKSksICJDYW5ub3QgcGFyc2UgZnVuY3Rpb24g
ZXhwcmVzc2lvbiIpOwogICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkV4cHIo
bG9jYXRpb24sIGluZm8pOwogICAgIH0KICNpZiBFTkFCTEUoRVM2X0NMQVNTX1NZTlRBWCkKQEAg
LTI4OTQsNyArMjg2Nyw2IEBAIGVuZE1lbWJlckV4cHJlc3Npb246CiAgICAgcmV0dXJuIGJhc2U7
CiB9CiAKLSNpZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQogdGVtcGxhdGUgPHR5
cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJl
c3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oVHJl
ZUJ1aWxkZXImIGNvbnRleHQpCiB7CkBAIC0yOTA0LDExICsyODc2LDEwIEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3MKICAgICBsb2NhdGlvbiA9IHRva2VuTG9jYXRp
b24oKTsKICAgICBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+IGluZm87CiAgICAgaW5m
by5uYW1lID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyOwotICAgIGZhaWxJ
ZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5vUmVxdWlyZW1lbnRz
LCBGdW5jdGlvbk1vZGUsIHRydWUsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5n
OjpOb3ROZWVkZWQsIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbmZvLCBBcnJvd0Z1bmN0aW9uUGFy
c2VUeXBlKSksICJDYW5ub3QgcGFyc2UgYXJyb3cgZnVuY3Rpb24gZXhwcmVzc2lvbiIpOworICAg
IGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5vUmVxdWly
ZW1lbnRzLCBBcnJvd0Z1bmN0aW9uTW9kZSwgdHJ1ZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBT
dXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGluZm8sIEFycm93
RnVuY3Rpb25QYXJzZVR5cGUpKSwgIkNhbm5vdCBwYXJzZSBhcnJvdyBmdW5jdGlvbiBleHByZXNz
aW9uIik7CiAKICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVBcnJvd0Z1bmN0aW9uRXhwcihsb2Nh
dGlvbiwgaW5mbyk7CiB9Ci0jZW5kaWYKIAogc3RhdGljIGNvbnN0IGNoYXIqIG9wZXJhdG9yU3Ry
aW5nKGJvb2wgcHJlZml4LCB1bnNpZ25lZCB0b2spCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmgJKHJldmlzaW9uIDE4NjgwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDIxICs4MCw5IEBAIGNs
YXNzIFNvdXJjZUNvZGU7CiBDT01QSUxFX0FTU0VSVChMYXN0VW50YWdnZWRUb2tlbiA8IDY0LCBM
ZXNzVGhhbjY0VW50YWdnZWRUb2tlbnMpOwogCiBlbnVtIFNvdXJjZUVsZW1lbnRzTW9kZSB7IENo
ZWNrRm9yU3RyaWN0TW9kZSwgRG9udENoZWNrRm9yU3RyaWN0TW9kZSB9OwotI2lmIEVOQUJMRShF
UzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCiBlbnVtIEZ1bmN0aW9uUGFyc2VUeXBlIHsgU3RhbmRh
cmRGdW5jdGlvblBhcnNlVHlwZSwgQXJyb3dGdW5jdGlvblBhcnNlVHlwZSB9OwotI2Vsc2UKLWVu
dW0gRnVuY3Rpb25QYXJzZVR5cGUgeyBTdGFuZGFyZEZ1bmN0aW9uUGFyc2VUeXBlfTsKLSNlbmRp
ZgorZW51bSBGdW5jdGlvbkJvZHlUeXBlIHsgQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uLCBB
cnJvd0Z1bmN0aW9uQm9keUJsb2NrLCBTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrIH07CiBlbnVt
IEZ1bmN0aW9uUmVxdWlyZW1lbnRzIHsgRnVuY3Rpb25Ob1JlcXVpcmVtZW50cywgRnVuY3Rpb25O
ZWVkc05hbWUgfTsKLWVudW0gRnVuY3Rpb25QYXJzZU1vZGUgewotICAgIEZ1bmN0aW9uTW9kZSwK
LSAgICBHZXR0ZXJNb2RlLAotICAgIFNldHRlck1vZGUsCi0gICAgTWV0aG9kTW9kZSwKLSNpZiBF
TkFCTEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQotICAgIEFycm93RnVuY3Rpb25Nb2RlCi0j
ZW5kaWYKLX07CiBlbnVtIERlc3RydWN0dXJpbmdLaW5kIHsKICAgICBEZXN0cnVjdHVyZVRvVmFy
aWFibGVzLAogICAgIERlc3RydWN0dXJlVG9QYXJhbWV0ZXJzLApAQCAtNDI5LDEzICs0MTcsMTIg
QEAgY2xhc3MgUGFyc2VyIHsKIAogcHVibGljOgogICAgIFBhcnNlcigKLSAgICAgICAgVk0qLCBj
b25zdCBTb3VyY2VDb2RlJiwgRnVuY3Rpb25QYXJhbWV0ZXJzKiwgY29uc3QgSWRlbnRpZmllciYs
IAotICAgICAgICBKU1BhcnNlckJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGUsIEpTUGFy
c2VyQ29kZVR5cGUsCisgICAgICAgIFZNKiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFyc2VyQnVp
bHRpbk1vZGUsIEpTUGFyc2VyU3RyaWN0TW9kZSwgSlNQYXJzZXJDb2RlVHlwZSwgCiAgICAgICAg
IENvbnN0cnVjdG9yS2luZCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kID0gQ29uc3RydWN0b3JLaW5k
OjpOb25lLCBUaGlzVERaTW9kZSA9IFRoaXNURFpNb2RlOjpDaGVja0lmTmVlZGVkKTsKICAgICB+
UGFyc2VyKCk7CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgUGFyc2VkTm9kZT4KLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoUGFyc2VyRXJyb3ImKTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoUGFyc2VyRXJyb3ImLCBjb25zdCBJZGVudGlmaWVyJiwg
RnVuY3Rpb25QYXJzZU1vZGUpOwogCiAgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb25CZWZvcmVM
YXN0TmV3bGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGV4ZXItPnBvc2l0aW9uQmVmb3JlTGFzdE5l
d2xpbmUoKTsgfQogICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbkJlZm9yZUxhc3RUb2tlbigp
IGNvbnN0IHsgcmV0dXJuIG1fbGV4ZXItPmxhc3RUb2tlbkxvY2F0aW9uKCk7IH0KQEAgLTU2Myw3
ICs1NTAsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIFBhcnNlcigpOwotICAgIFN0cmluZyBw
YXJzZUlubmVyKCk7CisgICAgU3RyaW5nIHBhcnNlSW5uZXIoY29uc3QgSWRlbnRpZmllciYsIEZ1
bmN0aW9uUGFyc2VNb2RlKTsKIAogICAgIHZvaWQgZGlkRmluaXNoUGFyc2luZyhTb3VyY2VFbGVt
ZW50cyosIERlY2xhcmF0aW9uU3RhY2tzOjpWYXJTdGFjayYsIAogICAgICAgICBEZWNsYXJhdGlv
blN0YWNrczo6RnVuY3Rpb25TdGFjayYsIENvZGVGZWF0dXJlcywgaW50LCBJZGVudGlmaWVyU2V0
JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+JiYpOwpAQCAtNjIxLDcg
KzYwOCw2IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBtX3Rva2VuLm1fdHlwZSA9PSBJREVO
VCAmJiAqbV90b2tlbi5tX2RhdGEuaWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+b2Y7CiAg
ICAgfQogICAgIAotI2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCiAgICAgQUxX
QVlTX0lOTElORSBib29sIGlzRW5kT2ZBcnJvd0Z1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHJl
dHVybiBtYXRjaChTRU1JQ09MT04pIHx8IG1hdGNoKENPTU1BKSB8fCBtYXRjaChDTE9TRVBBUkVO
KSB8fCBtYXRjaChDTE9TRUJSQUNFKSB8fCBtYXRjaChDTE9TRUJSQUNLRVQpIHx8IG1hdGNoKEVP
RlRPSykgfHwgbV9sZXhlci0+cHJldlRlcm1pbmF0b3IoKTsKQEAgLTYyOSw2ICs2MTUsNyBAQCBw
cml2YXRlOgogICAgIAogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0Fycm93RnVuY3Rpb25QYXJh
bXRlcnMoKQogICAgIHsKKyNpZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQogICAg
ICAgICBib29sIGlzQXJyb3dGdW5jdGlvbiA9IGZhbHNlOwogICAgICAgICAKICAgICAgICAgaWYg
KG1hdGNoKEVPRlRPSykpCkBAIC02NTksOCArNjQ2LDEwIEBAIHByaXZhdGU6CiAgICAgICAgIHJl
c3RvcmVTYXZlUG9pbnQoc2F2ZUFycm93RnVuY3Rpb25Qb2ludCk7CiAgICAgICAgIAogICAgICAg
ICByZXR1cm4gaXNBcnJvd0Z1bmN0aW9uOwotICAgIH0KKyNlbHNlCisgICAgICAgIHJldHVybiBm
YWxzZTsKICNlbmRpZgorICAgIH0KICAgICAKICAgICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIHRv
a2VuU3RhcnQoKQogICAgIHsKQEAgLTc2Niw3ICs3NTUsNyBAQCBwcml2YXRlOgogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZVNvdXJjZUVsZW1lbnRzIHBhcnNlU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImLCBTb3Vy
Y2VFbGVtZW50c01vZGUsIEZ1bmN0aW9uUGFyc2VUeXBlKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJzZVNvdXJjZUVsZW1lbnRzKFRyZWVC
dWlsZGVyJiwgU291cmNlRWxlbWVudHNNb2RlKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VTdGF0ZW1lbnRMaXN0SXRlbShUcmVlQnVpbGRlciYs
IGNvbnN0IElkZW50aWZpZXIqJiBkaXJlY3RpdmUsIHVuc2lnbmVkKiBkaXJlY3RpdmVMaXRlcmFs
TGVuZ3RoKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQg
cGFyc2VTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImLCBjb25zdCBJZGVudGlmaWVyKiYgZGlyZWN0aXZl
LCB1bnNpZ25lZCogZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCA9IDApOwogI2lmIEVOQUJMRShFUzZf
Q0xBU1NfU1lOVEFYKQpAQCAtODA3LDE3ICs3OTYsMTMgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVQcm9wZXJ0eSBwYXJzZVByb3BlcnR5KFRyZWVCdWls
ZGVyJiwgYm9vbCBzdHJpY3QpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZUV4cHJlc3Npb24gcGFyc2VQcm9wZXJ0eU1ldGhvZChUcmVlQnVpbGRlciYgY29udGV4dCwgY29u
c3QgSWRlbnRpZmllciogbWV0aG9kTmFtZSk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlUHJvcGVydHkgcGFyc2VHZXR0ZXJTZXR0ZXIoVHJlZUJ1aWxkZXImLCBib29sIHN0
cmljdCwgUHJvcGVydHlOb2RlOjpUeXBlLCB1bnNpZ25lZCBnZXR0ZXJPclNldHRlclN0YXJ0T2Zm
c2V0LCBDb25zdHJ1Y3RvcktpbmQgPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGlu
ZyA9IFN1cGVyQmluZGluZzo6Tm90TmVlZGVkKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IEFMV0FZU19JTkxJTkUgVHJlZUZ1bmN0aW9uQm9keSBwYXJzZUZ1bmN0aW9uQm9keShU
cmVlQnVpbGRlciYsIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0
YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBDb25zdHJ1Y3RvcktpbmQsIEZ1bmN0aW9uUGFyc2VU
eXBlKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgVHJl
ZUZvcm1hbFBhcmFtZXRlckxpc3QgcGFyc2VGb3JtYWxQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJik7
CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdBWVNfSU5MSU5FIFRyZWVGdW5j
dGlvbkJvZHkgcGFyc2VGdW5jdGlvbkJvZHkoVHJlZUJ1aWxkZXImLCBjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBpbnQsIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0
YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBDb25zdHJ1Y3RvcktpbmQsIEZ1bmN0aW9uQm9keVR5
cGUsIHVuc2lnbmVkLCBGdW5jdGlvblBhcnNlTW9kZSk7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBBTFdBWVNfSU5MSU5FIGJvb2wgcGFyc2VGb3JtYWxQYXJhbWV0ZXJzKFRyZWVC
dWlsZGVyJiwgVHJlZUZvcm1hbFBhcmFtZXRlckxpc3QsIHVuc2lnbmVkJik7CiAgICAgZW51bSBW
YXJEZWNsYXJhdGlvbkxpc3RDb250ZXh0IHsgRm9yTG9vcENvbnRleHQsIFZhckRlY2xhcmF0aW9u
Q29udGV4dCB9OwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Np
b24gcGFyc2VWYXJEZWNsYXJhdGlvbkxpc3QoVHJlZUJ1aWxkZXImLCBpbnQmIGRlY2xhcmF0aW9u
cywgVHJlZURlc3RydWN0dXJpbmdQYXR0ZXJuJiBsYXN0UGF0dGVybiwgVHJlZUV4cHJlc3Npb24m
IGxhc3RJbml0aWFsaXplciwgSlNUZXh0UG9zaXRpb24mIGlkZW50U3RhcnQsIEpTVGV4dFBvc2l0
aW9uJiBpbml0U3RhcnQsIEpTVGV4dFBvc2l0aW9uJiBpbml0RW5kLCBWYXJEZWNsYXJhdGlvbkxp
c3RDb250ZXh0KTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElO
RSBUcmVlQ29uc3REZWNsTGlzdCBwYXJzZUNvbnN0RGVjbGFyYXRpb25MaXN0KFRyZWVCdWlsZGVy
Jik7Ci0KLSNpZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQotICAgIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZUFycm93RnVuY3Rpb25TaW5n
bGVFeHByZXNzaW9uQm9keShUcmVlQnVpbGRlciYsIEZ1bmN0aW9uUGFyc2VUeXBlKTsKKyAgICB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJzZUFycm93
RnVuY3Rpb25TaW5nbGVFeHByZXNzaW9uQm9keVNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJik7
CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBwYXJzZUFy
cm93RnVuY3Rpb25FeHByZXNzaW9uKFRyZWVCdWlsZGVyJik7Ci0jZW5kaWYKLQogICAgIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIFRyZWVEZXN0cnVjdHVyaW5nUGF0
dGVybiBjcmVhdGVCaW5kaW5nUGF0dGVybihUcmVlQnVpbGRlciYsIERlc3RydWN0dXJpbmdLaW5k
LCBjb25zdCBJZGVudGlmaWVyJiwgaW50IGRlcHRoLCBKU1Rva2VuKTsKICAgICB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBUcmVlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4g
cGFyc2VEZXN0cnVjdHVyaW5nUGF0dGVybihUcmVlQnVpbGRlciYsIERlc3RydWN0dXJpbmdLaW5k
LCBpbnQgZGVwdGggPSAwKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVS
X0lOTElORSBUcmVlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gdHJ5UGFyc2VEZXN0cnVjdHVyaW5nUGF0
dGVybkV4cHJlc3Npb24oVHJlZUJ1aWxkZXImKTsKQEAgLTg1MCwxMyArODM1LDEwIEBAIHByaXZh
dGU6CiAgICAgICAgIHJldHVybiBhbGxvd0F1dG9tYXRpY1NlbWljb2xvbigpOwogICAgIH0KICAg
ICAKLQotI2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCiAgICAgdm9pZCBzZXRF
bmRPZlN0YXRlbWVudCgpCiAgICAgewogICAgICAgICBtX2xleGVyLT5zZXRUb2tlblBvc2l0aW9u
KCZtX3Rva2VuKTsKICAgICB9Ci0jZW5kaWYKIAogICAgIGJvb2wgY2FuUmVjdXJzZSgpCiAgICAg
ewpAQCAtOTI4LDYgKzkxMCw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgU291cmNlQ29kZSogbV9z
b3VyY2U7CiAgICAgUGFyc2VyQXJlbmEgbV9wYXJzZXJBcmVuYTsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8TGV4ZXJUeXBlPiBtX2xleGVyOworICAgIEZ1bmN0aW9uUGFyYW1ldGVycyogbV9wYXJhbWV0
ZXJzIHsgbnVsbHB0ciB9OwogICAgIAogICAgIGJvb2wgbV9oYXNTdGFja092ZXJmbG93OwogICAg
IFN0cmluZyBtX2Vycm9yTWVzc2FnZTsKQEAgLTk3NCwxMyArOTU3LDEzIEBAIHByaXZhdGU6CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyc2VkTm9k
ZT4KLXN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2Uo
UGFyc2VyRXJyb3ImIGVycm9yKQorc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZShQYXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0IElkZW50aWZpZXImIGNh
bGxlZU5hbWUsIEZ1bmN0aW9uUGFyc2VNb2RlIHBhcnNlTW9kZSkKIHsKICAgICBpbnQgZXJyTGlu
ZTsKICAgICBTdHJpbmcgZXJyTXNnOwogCiAgICAgaWYgKFBhcnNlZE5vZGU6OnNjb3BlSXNGdW5j
dGlvbikKLSAgICAgICAgbV9sZXhlci0+c2V0SXNSZXBhcnNpbmcoKTsKKyAgICAgICAgbV9sZXhl
ci0+c2V0SXNSZXBhcnNpbmdGdW5jdGlvbigpOwogCiAgICAgbV9zb3VyY2VFbGVtZW50cyA9IDA7
CiAKQEAgLTk5MSw3ICs5NzQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2Vy
PExleGVyCiAgICAgQVNTRVJUKG1fc291cmNlLT5zdGFydENvbHVtbigpID4gMCk7CiAgICAgdW5z
aWduZWQgc3RhcnRDb2x1bW4gPSBtX3NvdXJjZS0+c3RhcnRDb2x1bW4oKSAtIDE7CiAKLSAgICBT
dHJpbmcgcGFyc2VFcnJvciA9IHBhcnNlSW5uZXIoKTsKKyAgICBTdHJpbmcgcGFyc2VFcnJvciA9
IHBhcnNlSW5uZXIoY2FsbGVlTmFtZSwgcGFyc2VNb2RlKTsKIAogICAgIGludCBsaW5lTnVtYmVy
ID0gbV9sZXhlci0+bGluZU51bWJlcigpOwogICAgIGJvb2wgbGV4RXJyb3IgPSBtX2xleGVyLT5z
YXdFcnJvcigpOwpAQCAtMTAyMSw2ICsxMDA0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5v
ZGU+IFBhcnNlcjxMZXhlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV92
YXJEZWNsYXJhdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2Z1
bmNEZWNsYXJhdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2Nh
cHR1cmVkVmFyaWFibGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9w
YXJhbWV0ZXJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm1fc291cmNl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9mZWF0dXJlcywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbnVtQ29uc3RhbnRzKTsKQEAgLTEwNTQs
MTggKzEwMzgsMTkgQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxMZXhlcgog
CiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyc2VkTm9kZT4KIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2Rl
PiBwYXJzZSgKLSAgICBWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25Q
YXJhbWV0ZXJzKiBwYXJhbWV0ZXJzLAorICAgIFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLAogICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVp
bHRpbk1vZGUsCiAgICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIEpTUGFyc2VyQ29k
ZVR5cGUgY29kZVR5cGUsCi0gICAgUGFyc2VyRXJyb3ImIGVycm9yLCBKU1RleHRQb3NpdGlvbiog
cG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9IDAsCi0gICAgQ29uc3RydWN0b3JLaW5kIGRlZmF1
bHRDb25zdHJ1Y3RvcktpbmQgPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFRoaXNURFpNb2RlIHRo
aXNURFpNb2RlID0gVGhpc1REWk1vZGU6OkNoZWNrSWZOZWVkZWQpCisgICAgUGFyc2VyRXJyb3Im
IGVycm9yLCBKU1RleHRQb3NpdGlvbiogcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9IG51bGxw
dHIsCisgICAgRnVuY3Rpb25QYXJzZU1vZGUgcGFyc2VNb2RlID0gTm90QUZ1bmN0aW9uTW9kZSwg
Q29uc3RydWN0b3JLaW5kIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQgPSBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUsIAorICAgIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlID0gVGhpc1REWk1vZGU6OkNoZWNr
SWZOZWVkZWQpCiB7CiAgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIlBhcnNpbmci
KTsKIAogICAgIEFTU0VSVCghc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZSgpLmlzTnVsbCgpKTsK
ICAgICBpZiAoc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZSgpLmlzOEJpdCgpKSB7Ci0gICAgICAg
IFBhcnNlcjxMZXhlcjxMQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBwYXJhbWV0ZXJzLCBuYW1l
LCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgY29kZVR5cGUsIGRlZmF1bHRDb25zdHJ1Y3Rvcktp
bmQsIHRoaXNURFpNb2RlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHJl
c3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJvcik7CisgICAgICAgIFBhcnNlcjxM
ZXhlcjxMQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwg
Y29kZVR5cGUsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIHRoaXNURFpNb2RlKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWRO
b2RlPihlcnJvciwgbmFtZSwgcGFyc2VNb2RlKTsKICAgICAgICAgaWYgKHBvc2l0aW9uQmVmb3Jl
TGFzdE5ld2xpbmUpCiAgICAgICAgICAgICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9IHBh
cnNlci5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7CiAgICAgICAgIGlmIChidWlsdGluTW9k
ZSA9PSBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpCdWlsdGluKSB7CkBAIC0xMDc3LDggKzEwNjIsOCBA
QCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoCiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZGVmYXVsdENvbnN0cnVjdG9yS2lu
ZCA9PSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsICJCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZURl
ZmF1bHRDb25zdHJ1Y3RvciBzaG91bGQgYWx3YXlzIHVzZSBhIDgtYml0IHN0cmluZyIpOwotICAg
IFBhcnNlcjxMZXhlcjxVQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBwYXJhbWV0ZXJzLCBuYW1l
LCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgY29kZVR5cGUsIGRlZmF1bHRDb25zdHJ1Y3Rvcktp
bmQsIHRoaXNURFpNb2RlKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcmVzdWx0
ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yKTsKKyAgICBQYXJzZXI8TGV4ZXI8VUNo
YXI+PiBwYXJzZXIodm0sIHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIGNvZGVUeXBl
LCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kLCB0aGlzVERaTW9kZSk7CisgICAgc3RkOjp1bmlxdWVf
cHRyPFBhcnNlZE5vZGU+IHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJvciwg
bmFtZSwgcGFyc2VNb2RlKTsKICAgICBpZiAocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSkKICAg
ICAgICAgKnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUgPSBwYXJzZXIucG9zaXRpb25CZWZvcmVM
YXN0TmV3bGluZSgpOwogICAgIHJldHVybiByZXN1bHQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlckZ1bmN0aW9uSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyRnVuY3Rpb25JbmZvLmgJKHJldmlzaW9uIDE4Njgw
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyRnVuY3Rpb25JbmZvLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI4LDI3ICsyOCwxNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAot
I2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCi1lbnVtIEZ1bmN0aW9uQm9keVR5
cGUgeyBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24sIEFycm93RnVuY3Rpb25Cb2R5QmxvY2ss
IFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2sgfTsKLSNlbmRpZgotCiB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+CiBzdHJ1Y3QgUGFyc2VyRnVuY3Rpb25JbmZvIHsKICAgICBjb25zdCBJZGVu
dGlmaWVyKiBuYW1lID0gMDsKICAgICB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1l
dGVyTGlzdCBwYXJhbWV0ZXJzID0gMDsKICAgICB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6RnVuY3Rp
b25Cb2R5IGJvZHkgPSAwOwotICAgIHVuc2lnbmVkIHN0YXJ0RnVuY3Rpb25PZmZzZXQgPSAwOwot
ICAgIHVuc2lnbmVkIGVuZEZ1bmN0aW9uT2Zmc2V0ID0gMDsKLSAgICBpbnQgYm9keVN0YXJ0TGlu
ZSA9IDA7Ci0gICAgaW50IGJvZHlFbmRMaW5lID0gMDsKKyAgICB1bnNpZ25lZCBwYXJhbWV0ZXJD
b3VudCA9IDA7CisgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSAwOworICAgIHVuc2lnbmVkIGVu
ZE9mZnNldCA9IDA7CisgICAgaW50IHN0YXJ0TGluZSA9IDA7CisgICAgaW50IGVuZExpbmUgPSAw
OwogICAgIHVuc2lnbmVkIGJvZHlTdGFydENvbHVtbiA9IDA7Ci0jaWYgRU5BQkxFKEVTNl9BUlJP
V0ZVTkNUSU9OX1NZTlRBWCkKLSAgICB1bnNpZ25lZCBhcnJvd0Z1bmN0aW9uT2Zmc2V0ID0gMDsK
LSAgICB1bnNpZ25lZCBhcnJvd0Z1bmN0aW9uTmV4dFRvY2tlbkVuZE9mZnNldCA9IDA7Ci0gICAg
Ym9vbCBpc0Fycm93RnVuY3Rpb24geyBmYWxzZSB9OwotICAgIGJvb2wgaXNFbmRCeVRlcm1pbmF0
b3IgeyBmYWxzZSB9OwotICAgIEZ1bmN0aW9uQm9keVR5cGUgZnVuY3Rpb25Cb2R5VHlwZSB7IFN0
YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2sgfTsKLSNlbmRpZgogfTsKIAogI2lmIEVOQUJMRShFUzZf
Q0xBU1NfU1lOVEFYKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJN
b2Rlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
TW9kZXMuaAkocmV2aXNpb24gMTg2ODA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXJNb2Rlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCwxNSBAQCBlbnVtIERl
YnVnZ2VyTW9kZSB7IERlYnVnZ2VyT2ZmLCBEZWJ1Z2dlCiAKIGVudW0gRnVuY3Rpb25Nb2RlIHsg
RnVuY3Rpb25FeHByZXNzaW9uLCBGdW5jdGlvbkRlY2xhcmF0aW9uIH07CiAKK2VudW0gRnVuY3Rp
b25QYXJzZU1vZGUgeworICAgIE5vcm1hbEZ1bmN0aW9uTW9kZSwKKyAgICBHZXR0ZXJNb2RlLAor
ICAgIFNldHRlck1vZGUsCisgICAgTWV0aG9kTW9kZSwKKyAgICBOb3RBRnVuY3Rpb25Nb2RlLAor
ICAgIEFycm93RnVuY3Rpb25Nb2RlCit9OworCiBpbmxpbmUgYm9vbCBmdW5jdGlvbk5hbWVJc0lu
U2NvcGUoY29uc3QgSWRlbnRpZmllciYgbmFtZSwgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSkK
IHsKICAgICBpZiAobmFtZS5pc051bGwoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvU291cmNlQ29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvU291cmNlQ29kZS5oCShyZXZpc2lvbiAxODY4MDgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1NvdXJjZUNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDkgKzEwNSw2
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgU291cmNlQ29kZSBzdWJFeHBy
ZXNzaW9uKHVuc2lnbmVkIG9wZW5CcmFjZSwgdW5zaWduZWQgY2xvc2VCcmFjZSwgaW50IGZpcnN0
TGluZSwgaW50IHN0YXJ0Q29sdW1uKTsKIAotI2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9T
WU5UQVgpCi0gICAgICAgIFNvdXJjZUNvZGUgc3ViQXJyb3dFeHByZXNzaW9uKHVuc2lnbmVkIHN0
YXJ0QXJyb3dGdW5jdGlvbiwgdW5zaWduZWQgZW5kQXJyb3dGdW5jdGlvbiwgaW50IGZpcnN0TGlu
ZSwgaW50IHN0YXJ0Q29sdW1uKTsKLSNlbmRpZgogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZlB0
cjxTb3VyY2VQcm92aWRlcj4gbV9wcm92aWRlcjsKICAgICAgICAgaW50IG1fc3RhcnRDaGFyOwpA
QCAtMTIxLDIwICsxMTgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIFNvdXJj
ZUNvZGUoU3RyaW5nU291cmNlUHJvdmlkZXI6OmNyZWF0ZShzb3VyY2UsIHVybCwgc3RhcnRQb3Np
dGlvbiksIHN0YXJ0UG9zaXRpb24ubV9saW5lLm9uZUJhc2VkSW50KCksIHN0YXJ0UG9zaXRpb24u
bV9jb2x1bW4ub25lQmFzZWRJbnQoKSk7CiAgICAgfQogICAgIAotI2lmIEVOQUJMRShFUzZfQVJS
T1dGVU5DVElPTl9TWU5UQVgpCi0gICAgaW5saW5lIFNvdXJjZUNvZGUgU291cmNlQ29kZTo6c3Vi
QXJyb3dFeHByZXNzaW9uKHVuc2lnbmVkIHN0YXJ0QXJyb3dGdW5jdGlvbiwgdW5zaWduZWQgZW5k
QXJyb3dGdW5jdGlvbiwgaW50IGZpcnN0TGluZSwgaW50IHN0YXJ0Q29sdW1uKQotICAgIHsKLSAg
ICAgICAgQVNTRVJUKHByb3ZpZGVyKCktPnNvdXJjZSgpW3N0YXJ0QXJyb3dGdW5jdGlvbl0gPT0g
Jz0nICYmIHByb3ZpZGVyKCktPnNvdXJjZSgpW3N0YXJ0QXJyb3dGdW5jdGlvbiArIDFdID09ICc+
Jyk7Ci0KLSAgICAgICAgc3RhcnRDb2x1bW4gKz0gMTsgLy8gQ29udmVydCB0byBiYXNlIDEuCi0g
ICAgICAgIHJldHVybiBTb3VyY2VDb2RlKHByb3ZpZGVyKCksIHN0YXJ0QXJyb3dGdW5jdGlvbiwg
ZW5kQXJyb3dGdW5jdGlvbiwgZmlyc3RMaW5lLCBzdGFydENvbHVtbik7Ci0gICAgfQotI2VuZGlm
Ci0KICAgICBpbmxpbmUgU291cmNlQ29kZSBTb3VyY2VDb2RlOjpzdWJFeHByZXNzaW9uKHVuc2ln
bmVkIG9wZW5CcmFjZSwgdW5zaWduZWQgY2xvc2VCcmFjZSwgaW50IGZpcnN0TGluZSwgaW50IHN0
YXJ0Q29sdW1uKQogICAgIHsKLSAgICAgICAgQVNTRVJUKHByb3ZpZGVyKCktPnNvdXJjZSgpW29w
ZW5CcmFjZV0gPT0gJ3snKTsKLSAgICAgICAgQVNTRVJUKHByb3ZpZGVyKCktPnNvdXJjZSgpW2Ns
b3NlQnJhY2VdID09ICd9Jyk7CiAgICAgICAgIHN0YXJ0Q29sdW1uICs9IDE7IC8vIENvbnZlcnQg
dG8gYmFzZSAxLgogICAgICAgICByZXR1cm4gU291cmNlQ29kZShwcm92aWRlcigpLCBvcGVuQnJh
Y2UsIGNsb3NlQnJhY2UgKyAxLCBmaXJzdExpbmUsIHN0YXJ0Q29sdW1uKTsKICAgICB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyQ2FjaGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyQ2Fj
aGUuaAkocmV2aXNpb24gMTg2ODA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9T
b3VyY2VQcm92aWRlckNhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgcHVi
bGljOgogICAgIGNvbnN0IFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtKiBnZXQoaW50IHNvdXJjZVBv
c2l0aW9uKSBjb25zdCB7IHJldHVybiBtX21hcC5nZXQoc291cmNlUG9zaXRpb24pOyB9CiAKIHBy
aXZhdGU6Ci0gICAgSGFzaE1hcDxpbnQsIHN0ZDo6dW5pcXVlX3B0cjxTb3VyY2VQcm92aWRlckNh
Y2hlSXRlbT4+IG1fbWFwOworICAgIEhhc2hNYXA8aW50LCBzdGQ6OnVuaXF1ZV9wdHI8U291cmNl
UHJvdmlkZXJDYWNoZUl0ZW0+LCBXVEY6OkludEhhc2g8aW50PiwgV1RGOjpVbnNpZ25lZFdpdGha
ZXJvS2V5SGFzaFRyYWl0czxpbnQ+PiBtX21hcDsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmgJ
KHJldmlzaW9uIDE4NjgwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNl
UHJvdmlkZXJDYWNoZUl0ZW0uaAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTUgKzQwLDE0IEBAIHN0
cnVjdCBTb3VyY2VQcm92aWRlckNhY2hlSXRlbUNyZWF0aW9uUGEKICAgICB1bnNpZ25lZCBsYXN0
VG9ja2VuRW5kT2Zmc2V0OwogICAgIHVuc2lnbmVkIGxhc3RUb2NrZW5MaW5lU3RhcnRPZmZzZXQ7
CiAgICAgdW5zaWduZWQgZW5kRnVuY3Rpb25PZmZzZXQ7CisgICAgdW5zaWduZWQgcGFyYW1ldGVy
Q291bnQ7CiAgICAgYm9vbCBuZWVkc0Z1bGxBY3RpdmF0aW9uOwogICAgIGJvb2wgdXNlc0V2YWw7
CiAgICAgYm9vbCBzdHJpY3RNb2RlOwogICAgIFZlY3RvcjxSZWZQdHI8VW5pcXVlZFN0cmluZ0lt
cGw+PiB1c2VkVmFyaWFibGVzOwogICAgIFZlY3RvcjxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+
PiB3cml0dGVuVmFyaWFibGVzOwotI2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgp
CiAgICAgYm9vbCBpc0JvZHlBcnJvd0V4cHJlc3Npb24geyBmYWxzZSB9OwogICAgIEpTVG9rZW5U
eXBlIHRva2VuVHlwZSB7IENMT1NFQlJBQ0UgfTsKLSNlbmRpZgogfTsKIAogI2lmIENPTVBJTEVS
KE1TVkMpCkBAIC02NSwxMSArNjQsNyBAQCBwdWJsaWM6CiAgICAgSlNUb2tlbiBlbmRGdW5jdGlv
blRva2VuKCkgY29uc3QgCiAgICAgewogICAgICAgICBKU1Rva2VuIHRva2VuOwotI2lmIEVOQUJM
RShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCiAgICAgICAgIHRva2VuLm1fdHlwZSA9IGlzQm9k
eUFycm93RXhwcmVzc2lvbiA/IHRva2VuVHlwZSA6IENMT1NFQlJBQ0U7Ci0jZWxzZQotICAgICAg
ICB0b2tlbi5tX3R5cGUgPSBDTE9TRUJSQUNFOwotI2VuZGlmCiAgICAgICAgIHRva2VuLm1fZGF0
YS5vZmZzZXQgPSBsYXN0VG9ja2VuU3RhcnRPZmZzZXQ7CiAgICAgICAgIHRva2VuLm1fbG9jYXRp
b24uc3RhcnRPZmZzZXQgPSBsYXN0VG9ja2VuU3RhcnRPZmZzZXQ7CiAgICAgICAgIHRva2VuLm1f
bG9jYXRpb24uZW5kT2Zmc2V0ID0gbGFzdFRvY2tlbkVuZE9mZnNldDsKQEAgLTg3LDYgKzgyLDcg
QEAgcHVibGljOgogICAgIHVuc2lnbmVkIGxhc3RUb2NrZW5MaW5lIDogMzE7CiAgICAgdW5zaWdu
ZWQgbGFzdFRvY2tlblN0YXJ0T2Zmc2V0IDogMzE7CiAgICAgdW5zaWduZWQgbGFzdFRvY2tlbkVu
ZE9mZnNldDogMzE7CisgICAgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQ7CiAgICAgCiAgICAgYm9v
bCB1c2VzRXZhbCA6IDE7CiAKQEAgLTk4LDEwICs5NCw4IEBAIHB1YmxpYzoKIAogICAgIFVuaXF1
ZWRTdHJpbmdJbXBsKiogdXNlZFZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8
VW5pcXVlZFN0cmluZ0ltcGwqKj4obV92YXJpYWJsZXMpOyB9CiAgICAgVW5pcXVlZFN0cmluZ0lt
cGwqKiB3cml0dGVuVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxVbmlxdWVk
U3RyaW5nSW1wbCoqPigmbV92YXJpYWJsZXNbdXNlZFZhcmlhYmxlc0NvdW50XSk7IH0KLSNpZiBF
TkFCTEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQogICAgIGJvb2wgaXNCb2R5QXJyb3dFeHBy
ZXNzaW9uOwogICAgIEpTVG9rZW5UeXBlIHRva2VuVHlwZTsKLSNlbmRpZgogCiBwcml2YXRlOgog
ICAgIFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtKGNvbnN0IFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVt
Q3JlYXRpb25QYXJhbWV0ZXJzJik7CkBAIC0xMzAsMTUgKzEyNCwxNCBAQCBpbmxpbmUgU291cmNl
UHJvdmlkZXJDYWNoZUl0ZW06OlNvdXJjZVByCiAgICAgLCBsYXN0VG9ja2VuTGluZShwYXJhbWV0
ZXJzLmxhc3RUb2NrZW5MaW5lKQogICAgICwgbGFzdFRvY2tlblN0YXJ0T2Zmc2V0KHBhcmFtZXRl
cnMubGFzdFRvY2tlblN0YXJ0T2Zmc2V0KQogICAgICwgbGFzdFRvY2tlbkVuZE9mZnNldChwYXJh
bWV0ZXJzLmxhc3RUb2NrZW5FbmRPZmZzZXQpCisgICAgLCBwYXJhbWV0ZXJDb3VudChwYXJhbWV0
ZXJzLnBhcmFtZXRlckNvdW50KQogICAgICwgdXNlc0V2YWwocGFyYW1ldGVycy51c2VzRXZhbCkK
ICAgICAsIHN0cmljdE1vZGUocGFyYW1ldGVycy5zdHJpY3RNb2RlKQogICAgICwgbGFzdFRvY2tl
bkxpbmVTdGFydE9mZnNldChwYXJhbWV0ZXJzLmxhc3RUb2NrZW5MaW5lU3RhcnRPZmZzZXQpCiAg
ICAgLCB1c2VkVmFyaWFibGVzQ291bnQocGFyYW1ldGVycy51c2VkVmFyaWFibGVzLnNpemUoKSkK
ICAgICAsIHdyaXR0ZW5WYXJpYWJsZXNDb3VudChwYXJhbWV0ZXJzLndyaXR0ZW5WYXJpYWJsZXMu
c2l6ZSgpKQotI2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCiAgICAgLCBpc0Jv
ZHlBcnJvd0V4cHJlc3Npb24ocGFyYW1ldGVycy5pc0JvZHlBcnJvd0V4cHJlc3Npb24pCiAgICAg
LCB0b2tlblR5cGUocGFyYW1ldGVycy50b2tlblR5cGUpCi0jZW5kaWYKIHsKICAgICB1bnNpZ25l
ZCBqID0gMDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdXNlZFZhcmlhYmxlc0NvdW50
OyArK2ksICsraikgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhD
aGVja2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50
YXhDaGVja2VyLmgJKHJldmlzaW9uIDE4NjgwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvU3ludGF4Q2hlY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw2IEBAIHB1
YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdHlwZWRlZiBTeW50YXhDaGVja2VyIEZ1bmN0aW9u
Qm9keUJ1aWxkZXI7CiAgICAgZW51bSB7IE5vbmVFeHByID0gMCwKICAgICAgICAgUmVzb2x2ZUV2
YWxFeHByLCBSZXNvbHZlRXhwciwgSW50ZWdlckV4cHIsIERvdWJsZUV4cHIsIFN0cmluZ0V4cHIs
CiAgICAgICAgIFRoaXNFeHByLCBOdWxsRXhwciwgQm9vbEV4cHIsIFJlZ0V4cEV4cHIsIE9iamVj
dExpdGVyYWxFeHByLApAQCAtMTc4LDEwICsxNzcsOCBAQCBwdWJsaWM6CiAgICAgQ2xhc3NFeHBy
ZXNzaW9uIGNyZWF0ZUNsYXNzRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVu
dGlmaWVyJiwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBQcm9wZXJ0eUxpc3QsIFBy
b3BlcnR5TGlzdCkgeyByZXR1cm4gQ2xhc3NFeHByOyB9CiAjZW5kaWYKICAgICBFeHByZXNzaW9u
VHlwZSBjcmVhdGVGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgUGFy
c2VyRnVuY3Rpb25JbmZvPFN5bnRheENoZWNrZXI+JikgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9
Ci0gICAgaW50IGNyZWF0ZUZ1bmN0aW9uQm9keShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQsIGludCwgQ29uc3Ry
dWN0b3JLaW5kKSB7IHJldHVybiBGdW5jdGlvbkJvZHlSZXN1bHQ7IH0KLSNpZiBFTkFCTEUoRVM2
X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQorICAgIGludCBjcmVhdGVGdW5jdGlvbkJvZHkoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGJvb2ws
IGludCwgaW50LCBpbnQsIENvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQsIGludCkgeyByZXR1cm4g
RnVuY3Rpb25Cb2R5UmVzdWx0OyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQXJyb3dGdW5j
dGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZv
PFN5bnRheENoZWNrZXI+JikgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9Ci0jZW5kaWYgCiAgICAg
dm9pZCBzZXRGdW5jdGlvbk5hbWVTdGFydChpbnQsIGludCkgeyB9CiAgICAgaW50IGNyZWF0ZUFy
Z3VtZW50cygpIHsgcmV0dXJuIEFyZ3VtZW50c1Jlc3VsdDsgfQogICAgIGludCBjcmVhdGVBcmd1
bWVudHMoaW50KSB7IHJldHVybiBBcmd1bWVudHNSZXN1bHQ7IH0KQEAgLTIyMCw4ICsyMTcsOCBA
QCBwdWJsaWM6CiAgICAgaW50IGNyZWF0ZVByb3BlcnR5TGlzdChjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBQcm9wZXJ0eSwgaW50KSB7IHJldHVybiBQcm9wZXJ0eUxpc3RSZXN1bHQ7IH0KICAgICBp
bnQgY3JlYXRlRWxlbWVudExpc3QoaW50LCBpbnQpIHsgcmV0dXJuIEVsZW1lbnRzTGlzdFJlc3Vs
dDsgfQogICAgIGludCBjcmVhdGVFbGVtZW50TGlzdChpbnQsIGludCwgaW50KSB7IHJldHVybiBF
bGVtZW50c0xpc3RSZXN1bHQ7IH0KLSAgICBpbnQgY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdChE
ZXN0cnVjdHVyaW5nUGF0dGVybikgeyByZXR1cm4gRm9ybWFsUGFyYW1ldGVyTGlzdFJlc3VsdDsg
fQotICAgIGludCBjcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KGludCwgRGVzdHJ1Y3R1cmluZ1Bh
dHRlcm4pIHsgcmV0dXJuIEZvcm1hbFBhcmFtZXRlckxpc3RSZXN1bHQ7IH0KKyAgICBpbnQgY3Jl
YXRlRm9ybWFsUGFyYW1ldGVyTGlzdCgpIHsgcmV0dXJuIEZvcm1hbFBhcmFtZXRlckxpc3RSZXN1
bHQ7IH0KKyAgICB2b2lkIGFwcGVuZFBhcmFtZXRlcihpbnQsIERlc3RydWN0dXJpbmdQYXR0ZXJu
KSB7IH0KICAgICBpbnQgY3JlYXRlQ2xhdXNlKGludCwgaW50KSB7IHJldHVybiBDbGF1c2VSZXN1
bHQ7IH0KICAgICBpbnQgY3JlYXRlQ2xhdXNlTGlzdChpbnQpIHsgcmV0dXJuIENsYXVzZUxpc3RS
ZXN1bHQ7IH0KICAgICBpbnQgY3JlYXRlQ2xhdXNlTGlzdChpbnQsIGludCkgeyByZXR1cm4gQ2xh
dXNlTGlzdFJlc3VsdDsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29k
ZUNhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b2RlQ2FjaGUuY3BwCShyZXZpc2lvbiAxODY4MDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db2RlQ2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NCw4ICs5NCw4IEBAIFVu
bGlua2VkQ29kZUJsb2NrVHlwZSogQ29kZUNhY2hlOjpnZXRHbG8KIAogICAgIHR5cGVkZWYgdHlw
ZW5hbWUgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+OjpSb290Tm9kZSBSb290Tm9k
ZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Um9vdE5vZGU+IHJvb3ROb2RlID0gcGFyc2U8Um9vdE5v
ZGU+KAotICAgICAgICAmdm0sIHNvdXJjZSwgMCwgSWRlbnRpZmllcigpLCBidWlsdGluTW9kZSwg
c3RyaWN0TW9kZSwgCi0gICAgICAgIEpTUGFyc2VyQ29kZVR5cGU6OlByb2dyYW0sIGVycm9yLCAw
LCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIHRoaXNURFpNb2RlKTsKKyAgICAgICAgJnZtLCBzb3Vy
Y2UsIElkZW50aWZpZXIoKSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIAorICAgICAgICBKU1Bh
cnNlckNvZGVUeXBlOjpQcm9ncmFtLCBlcnJvciwgbnVsbHB0ciwgRnVuY3Rpb25QYXJzZU1vZGU6
Ok5vdEFGdW5jdGlvbk1vZGUsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgdGhpc1REWk1vZGUpOwog
ICAgIGlmICghcm9vdE5vZGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0xNDQsNyAr
MTQ0LDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIENvZGVDYWNoZTo6ZwogCiAgICAg
SlNUZXh0UG9zaXRpb24gcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZTsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW0gPSBwYXJzZTxQcm9ncmFtTm9kZT4oCi0gICAgICAg
ICZ2bSwgc291cmNlLCAwLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1
aWx0aW4sIAorICAgICAgICAmdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0
aW5Nb2RlOjpOb3RCdWlsdGluLCAKICAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJp
Y3QsIEpTUGFyc2VyQ29kZVR5cGU6OlByb2dyYW0sIAogICAgICAgICBlcnJvciwgJnBvc2l0aW9u
QmVmb3JlTGFzdE5ld2xpbmUpOwogICAgIGlmICghcHJvZ3JhbSkgewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAJKHJldmlzaW9uIDE4NjgwOCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01Nyw3ICs1Nyw3IEBAIGJvb2wgY2hlY2tTeW50YXgoVk0mIHZtLCBjb25zdCBT
b3VyY2VDb2QKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgUkVMRUFTRV9BU1NFUlQo
dm0uYXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFi
bGUoKSk7CiAgICAgcmV0dXJuICEhcGFyc2U8UHJvZ3JhbU5vZGU+KAotICAgICAgICAmdm0sIHNv
dXJjZSwgMCwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCAK
KyAgICAgICAgJnZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6
Tm90QnVpbHRpbiwgCiAgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBKU1Bh
cnNlckNvZGVUeXBlOjpQcm9ncmFtLCBlcnJvcik7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAxODY4MDgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDc1LDcgKzQ3NSw3IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6Y2hlY2tT
eW50YXgKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW1Ob2RlID0gcGFyc2U8UHJvZ3JhbU5vZGU+
KAotICAgICAgICB2bSwgbV9zb3VyY2UsIDAsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGlu
TW9kZTo6Tm90QnVpbHRpbiwgCisgICAgICAgIHZtLCBtX3NvdXJjZSwgSWRlbnRpZmllcigpLCBK
U1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCAKICAgICAgICAgSlNQYXJzZXJTdHJpY3RN
b2RlOjpOb3RTdHJpY3QsIEpTUGFyc2VyQ29kZVR5cGU6OlByb2dyYW0sIGVycm9yKTsKICAgICBp
ZiAocHJvZ3JhbU5vZGUpCiAgICAgICAgIHJldHVybiAwOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL2NvbnRyb2xGbG93UHJvZmlsZXIvY29uZGl0aW9uYWwtZXhwcmVzc2lvbi5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvY29udHJvbEZsb3dQ
cm9maWxlci9jb25kaXRpb25hbC1leHByZXNzaW9uLmpzCShyZXZpc2lvbiAxODY4MDgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvY29udHJvbEZsb3dQcm9maWxlci9jb25kaXRpb25h
bC1leHByZXNzaW9uLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxNyArMjQsMTcgQEAgZnVuY3Rp
b24gdGVzdENvbmRpdGlvbmFsRnVuY3Rpb25DYWxsKHgsIAogICAgICAgICA6IGJhcigpCiB9CiB0
ZXN0Q29uZGl0aW9uYWxGdW5jdGlvbkNhbGwoZmFsc2UsIGZhbHNlKTsKLWNoZWNrQmFzaWNCbG9j
ayh0ZXN0Q29uZGl0aW9uYWxGdW5jdGlvbkNhbGwsICJ4IiwgU2hvdWxkSGF2ZUV4ZWN1dGVkKTsK
K2NoZWNrQmFzaWNCbG9jayh0ZXN0Q29uZGl0aW9uYWxGdW5jdGlvbkNhbGwsICJ4ID8iLCBTaG91
bGRIYXZlRXhlY3V0ZWQpOwogY2hlY2tCYXNpY0Jsb2NrKHRlc3RDb25kaXRpb25hbEZ1bmN0aW9u
Q2FsbCwgIj8geSIsIFNob3VsZEhhdmVFeGVjdXRlZCk7CiBjaGVja0Jhc2ljQmxvY2sodGVzdENv
bmRpdGlvbmFsRnVuY3Rpb25DYWxsLCAiYmFyIiwgU2hvdWxkSGF2ZUV4ZWN1dGVkKTsKIGNoZWNr
QmFzaWNCbG9jayh0ZXN0Q29uZGl0aW9uYWxGdW5jdGlvbkNhbGwsICI6IGJhciIsIFNob3VsZEhh
dmVFeGVjdXRlZCk7Ci1jaGVja0Jhc2ljQmxvY2sodGVzdENvbmRpdGlvbmFsRnVuY3Rpb25DYWxs
LCAieSIsIFNob3VsZE5vdEhhdmVFeGVjdXRlZCk7CitjaGVja0Jhc2ljQmxvY2sodGVzdENvbmRp
dGlvbmFsRnVuY3Rpb25DYWxsLCAieSA/IiwgU2hvdWxkTm90SGF2ZUV4ZWN1dGVkKTsKIGNoZWNr
QmFzaWNCbG9jayh0ZXN0Q29uZGl0aW9uYWxGdW5jdGlvbkNhbGwsICI/IGZvbyIsIFNob3VsZE5v
dEhhdmVFeGVjdXRlZCk7CiBjaGVja0Jhc2ljQmxvY2sodGVzdENvbmRpdGlvbmFsRnVuY3Rpb25D
YWxsLCAiZm9vIiwgU2hvdWxkTm90SGF2ZUV4ZWN1dGVkKTsKIGNoZWNrQmFzaWNCbG9jayh0ZXN0
Q29uZGl0aW9uYWxGdW5jdGlvbkNhbGwsICJiYXoiLCBTaG91bGROb3RIYXZlRXhlY3V0ZWQpOwog
CiB0ZXN0Q29uZGl0aW9uYWxGdW5jdGlvbkNhbGwodHJ1ZSwgZmFsc2UpOwotY2hlY2tCYXNpY0Js
b2NrKHRlc3RDb25kaXRpb25hbEZ1bmN0aW9uQ2FsbCwgInkiLCBTaG91bGRIYXZlRXhlY3V0ZWQp
OworY2hlY2tCYXNpY0Jsb2NrKHRlc3RDb25kaXRpb25hbEZ1bmN0aW9uQ2FsbCwgInkgPyIsIFNo
b3VsZEhhdmVFeGVjdXRlZCk7CiBjaGVja0Jhc2ljQmxvY2sodGVzdENvbmRpdGlvbmFsRnVuY3Rp
b25DYWxsLCAiPyBmb28iLCBTaG91bGRIYXZlRXhlY3V0ZWQpOwogY2hlY2tCYXNpY0Jsb2NrKHRl
c3RDb25kaXRpb25hbEZ1bmN0aW9uQ2FsbCwgIjogYmF6IiwgU2hvdWxkSGF2ZUV4ZWN1dGVkKTsK
IGNoZWNrQmFzaWNCbG9jayh0ZXN0Q29uZGl0aW9uYWxGdW5jdGlvbkNhbGwsICJiYXoiLCBTaG91
bGRIYXZlRXhlY3V0ZWQpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTg2OTEyKQorKysgTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTEgQEAKKzIwMTUtMDctMTYg
IFNhYW0gYmFyYXRpICA8c2FhbWJhcmF0aTFAZ21haWwuY29tPgorCisgICAgICAgIEZ1bmN0aW9u
IHBhcmFtZXRlcnMgc2hvdWxkIGJlIHBhcnNlZCBpbiB0aGUgc2FtZSBwYXJzZXIgYXJlbmEgYXMg
dGhlIGZ1bmN0aW9uIGJvZHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0NTk5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogZmFzdC9wcm9maWxlci9hbm9ueW1vdXMtZXZlbnQtaGFuZGxlci1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxlci9hbm9ueW1vdXMtZnVuY3Rpb24tY2FsbGVk
LWZyb20tZGlmZmVyZW50LWNvbnRleHRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3By
b2ZpbGVyL2Fub255bW91cy1mdW5jdGlvbi1jYWxscy1idWlsdC1pbi1mdW5jdGlvbnMtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvYW5vbnltb3VzLWZ1bmN0aW9uLWNhbGxz
LWV2YWwtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvYW5vbnltb3VzLWZ1
bmN0aW9ucy13aXRoLWRpc3BsYXktbmFtZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3Qv
cHJvZmlsZXIvYXBwbHktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvYnVp
bHQtaW4tZnVuY3Rpb24tY2FsbHMtYW5vbnltb3VzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBm
YXN0L3Byb2ZpbGVyL2J1aWx0LWluLWZ1bmN0aW9uLWNhbGxzLXVzZXItZGVmaW5lZC1mdW5jdGlv
bi1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxlci9jYWxsLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBmYXN0L3Byb2ZpbGVyL2NhbGxpbmctdGhlLWZ1bmN0aW9uLXRoYXQtc3Rh
cnRlZC10aGUtcHJvZmlsZXItZnJvbS1hbm90aGVyLXNjb3BlLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBmYXN0L3Byb2ZpbGVyL2NvbXBhcmUtbXVsdGlwbGUtcHJvZmlsZXMtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGZhc3QvcHJvZmlsZXIvZGVhZC10aW1lLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBm
YXN0L3Byb2ZpbGVyL2RvY3VtZW50LWRvdC13cml0ZS1leHBlY3RlZC50eHQ6CisgICAgICAgICog
ZmFzdC9wcm9maWxlci9ldmVudC1oYW5kbGVyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0
L3Byb2ZpbGVyL2V4ZWN1dGlvbi1jb250ZXh0LWFuZC1ldmFsLW9uLXNhbWUtbGluZS1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxlci9pbmxpbmUtZXZlbnQtaGFuZGxlci1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxlci9tYW55LWNhbGxzLWluLXRoZS1zYW1l
LXNjb3BlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2ZpbGVyL211bHRpcGxlLWFu
ZC1kaWZmZXJlbnQtc2NvcGVkLWFub255bW91cy1mdW5jdGlvbi1jYWxscy1leHBlY3RlZC50eHQ6
CisgICAgICAgICogZmFzdC9wcm9maWxlci9tdWx0aXBsZS1hbmQtZGlmZmVyZW50LXNjb3BlZC1m
dW5jdGlvbi1jYWxscy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxlci9tdWx0
aXBsZS1hbm9ueW1vdXMtZnVuY3Rpb25zLWNhbGxlZC1mcm9tLXRoZS1zYW1lLWZ1bmN0aW9uLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2ZpbGVyL211bHRpcGxlLWZyYW1lcy1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxlci9uYW1lZC1mdW5jdGlvbnMtd2l0aC1k
aXNwbGF5LW5hbWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2ZpbGVyL25lc3Rl
ZC1hbm9ueW1vdXMtZnVuY3Rvbi1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxl
ci9uZXN0ZWQtc3RhcnQtYW5kLXN0b3AtcHJvZmlsZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGZhc3QvcHJvZmlsZXIvb25lLWV4ZWN1dGlvbi1jb250ZXh0LWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBmYXN0L3Byb2ZpbGVyL3Byb2ZpbGUtY2FsbHMtaW4taW5jbHVkZWQtZmlsZS1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxlci9wcm9maWxlLXdpdGgtbm8tdGl0bGUtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvcHJvZmlsaW5nLWZyb20tYS1uZXN0
ZWQtbG9jYXRpb24tYnV0LXN0b3AtcHJvZmlsaW5nLW91dHNpZGUtdGhlLW5lc3RpbmctZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvcHJvZmlsaW5nLWZyb20tYS1uZXN0ZWQt
bG9jYXRpb24tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvc2ltcGxlLWV2
ZW50LWNhbGwtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvc2ltcGxlLW5v
LWxldmVsLWNoYW5nZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxlci9zdGFy
dC1hbmQtc3RvcC1wcm9maWxlci1tdWx0aXBsZS10aW1lcy1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogZmFzdC9wcm9maWxlci9zdGFydC1hbmQtc3RvcC1wcm9maWxpbmctaW4tdGhlLXNhbWUtZnVu
Y3Rpb24tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvc3RvcC1wcm9maWxp
bmctYWZ0ZXItc2V0VGltZW91dC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxl
ci9zdG9wLXRoZW4tZnVuY3Rpb24tY2FsbC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9w
cm9maWxlci90d28tZXhlY3V0aW9uLWNvbnRleHRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBm
YXN0L3Byb2ZpbGVyL3VzZXItZGVmaW5lZC1mdW5jdGlvbi1jYWxscy1idWlsdC1pbi1mdW5jdGlv
bnMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvd2luZG93LWRvdC1ldmFs
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9kb20vc2NyaXB0LXN0YXJ0LWVuZC1sb2NhdGlv
bnMtZXhwZWN0ZWQudHh0OgorCiAyMDE1LTA3LTE2ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFz
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBkaXNhcHBlYXJpbmcgcG9zaXRpb246Zml4ZWQg
ZWxlbWVudHMgaW4gZml4ZWQgbGF5b3V0IG1vZGUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcHJv
ZmlsZXIvYW5vbnltb3VzLWV2ZW50LWhhbmRsZXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvYW5vbnltb3VzLWV2ZW50LWhhbmRsZXItZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAxODY4MDgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2Fu
b255bW91cy1ldmVudC1oYW5kbGVyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCwx
NSArNCwxNSBAQCBUbyBydW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBsb2FkIGl0IGluIHRoCiAKIFBy
b2ZpbGUgdGl0bGU6IEFub255bW91cyBldmVudCBoYW5kbGVyCiBUaHJlYWRfMSAobm8gZmlsZSkg
KGxpbmUgMDowKQotICAgc3RhcnRUZXN0IGFub255bW91cy1ldmVudC1oYW5kbGVyLmh0bWwgKGxp
bmUgMTE6MSkKKyAgIHN0YXJ0VGVzdCBhbm9ueW1vdXMtZXZlbnQtaGFuZGxlci5odG1sIChsaW5l
IDEwOjE5KQogICAgICAgZ2V0RWxlbWVudEJ5SWQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAg
IGNsaWNrIChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICAgICBvbmNsaWNrIGFub255bW91cy1l
dmVudC1oYW5kbGVyLmh0bWwgKGxpbmUgMTU6NTQpCi0gICAgICAgICAgICBpbnNlcnROZXdUZXh0
IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjI2KQorICAgICAgICAgb25j
bGljayBhbm9ueW1vdXMtZXZlbnQtaGFuZGxlci5odG1sIChsaW5lIDE1OjUxKQorICAgICAgICAg
ICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoy
MykKICAgICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAg
ICAgICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAg
ICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAg
Z2V0RWxlbWVudEJ5SWQgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAgIGVuZFRlc3QgcHJvZmls
ZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAgICAgIGVuZFRlc3QgcHJvZmls
ZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToxNykKIAogCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L3Byb2ZpbGVyL2Fub255bW91cy1mdW5jdGlvbi1jYWxsZWQtZnJvbS1kaWZmZXJlbnQt
Y29udGV4dHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJv
ZmlsZXIvYW5vbnltb3VzLWZ1bmN0aW9uLWNhbGxlZC1mcm9tLWRpZmZlcmVudC1jb250ZXh0cy1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDE4NjgwOCkKKysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmls
ZXIvYW5vbnltb3VzLWZ1bmN0aW9uLWNhbGxlZC1mcm9tLWRpZmZlcmVudC1jb250ZXh0cy1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsMjEgKzQsMjEgQEAgVG8gcnVuIHRoaXMgdGVz
dCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiBTYW1lIGFub255bW91
cyBmdW5jdGlvbiBjYWxsZWQgZnJvbSBkaWZmZXJlbnQgY29udGV4dHMKIFRocmVhZF8xIChubyBm
aWxlKSAobGluZSAwOjApCi0gICBzdGFydFRlc3QgYW5vbnltb3VzLWZ1bmN0aW9uLWNhbGxlZC1m
cm9tLWRpZmZlcmVudC1jb250ZXh0cy5odG1sIChsaW5lIDExOjEpCi0gICAgICBhbm9ueW1vdXNG
dW5jdGlvbiBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAyOTozNykKLSAgICAg
ICAgIGluc2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6
MjYpCisgICBzdGFydFRlc3QgYW5vbnltb3VzLWZ1bmN0aW9uLWNhbGxlZC1mcm9tLWRpZmZlcmVu
dC1jb250ZXh0cy5odG1sIChsaW5lIDEwOjE5KQorICAgICAgYW5vbnltb3VzRnVuY3Rpb24gcHJv
ZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMjk6MzQpCisgICAgICAgICBpbnNlcnRO
ZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjIzKQogICAgICAg
ICAgICAgY3JlYXRlRWxlbWVudCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgY3Jl
YXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIGFwcGVuZENoaWxk
IChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmls
ZSkgKGxpbmUgMDowKQogICAgICAgZXZhbCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAg
KHByb2dyYW0pIChubyBmaWxlKSAobGluZSAxOjEpCi0gICAgICAgICAgICBhbm9ueW1vdXNGdW5j
dGlvbiBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAyOTozNykKLSAgICAgICAg
ICAgICAgIGluc2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUg
MTc6MjYpCisgICAgICAgICAgICBhbm9ueW1vdXNGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpTLXJl
c291cmNlcy5qcyAobGluZSAyOTozNCkKKyAgICAgICAgICAgICAgIGluc2VydE5ld1RleHQgcHJv
ZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjMpCiAgICAgICAgICAgICAgICAg
ICBjcmVhdGVFbGVtZW50IChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICAgICBj
cmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgICAgYXBw
ZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgICAgIGdldEVsZW1l
bnRCeUlkIChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3Qt
SlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MjApCisgICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3Qt
SlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MTcpCiAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9w
cm9maWxlci9hbm9ueW1vdXMtZnVuY3Rpb24tY2FsbHMtYnVpbHQtaW4tZnVuY3Rpb25zLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2Fub255bW91
cy1mdW5jdGlvbi1jYWxscy1idWlsdC1pbi1mdW5jdGlvbnMtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAxODY4MDgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2Fub255bW91cy1mdW5jdGlv
bi1jYWxscy1idWlsdC1pbi1mdW5jdGlvbnMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC00LDEzICs0LDEzIEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxvYWQgaXQgaW4gdGgK
IAogUHJvZmlsZSB0aXRsZTogQW5vbnltb3VzIGZ1bmN0aW9uIGNhbGxzIGJ1aWx0LWluIGZ1bmN0
aW9ucwogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCBhbm9ueW1v
dXMtZnVuY3Rpb24tY2FsbHMtYnVpbHQtaW4tZnVuY3Rpb25zLmh0bWwgKGxpbmUgMTE6MSkKLSAg
ICAgIGFub255bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5l
IDI5OjM3KQotICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNl
cy5qcyAobGluZSAxNzoyNikKKyAgIHN0YXJ0VGVzdCBhbm9ueW1vdXMtZnVuY3Rpb24tY2FsbHMt
YnVpbHQtaW4tZnVuY3Rpb25zLmh0bWwgKGxpbmUgMTA6MTkpCisgICAgICBhbm9ueW1vdXNGdW5j
dGlvbiBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAyOTozNCkKKyAgICAgICAg
IGluc2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjMp
CiAgICAgICAgICAgICBjcmVhdGVFbGVtZW50IChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAg
ICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgYXBw
ZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIGdldEVsZW1lbnRCeUlk
IChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVz
b3VyY2VzLmpzIChsaW5lIDE6MjApCisgICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVz
b3VyY2VzLmpzIChsaW5lIDE6MTcpCiAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxl
ci9hbm9ueW1vdXMtZnVuY3Rpb24tY2FsbHMtZXZhbC1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9hbm9ueW1vdXMtZnVuY3Rpb24tY2FsbHMtZXZh
bC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4NjgwOCkKKysrIExheW91dFRlc3RzL2Zhc3QvcHJv
ZmlsZXIvYW5vbnltb3VzLWZ1bmN0aW9uLWNhbGxzLWV2YWwtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC00LDE1ICs0LDE1IEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxvYWQg
aXQgaW4gdGgKIAogUHJvZmlsZSB0aXRsZTogQW5vbnltb3VzIGZ1bmN0aW9uIGNhbGxlcyBldmFs
CiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgc3RhcnRUZXN0IGFub255bW91cy1m
dW5jdGlvbi1jYWxscy1ldmFsLmh0bWwgKGxpbmUgMTE6MSkKLSAgICAgIHZhcmlhYmxlVGhhdFBv
aW50c1RvQW5Bbm9ueW1vdXNGdW5jdGlvbiBhbm9ueW1vdXMtZnVuY3Rpb24tY2FsbHMtZXZhbC5o
dG1sIChsaW5lIDE0OjYyKQorICAgc3RhcnRUZXN0IGFub255bW91cy1mdW5jdGlvbi1jYWxscy1l
dmFsLmh0bWwgKGxpbmUgMTA6MTkpCisgICAgICB2YXJpYWJsZVRoYXRQb2ludHNUb0FuQW5vbnlt
b3VzRnVuY3Rpb24gYW5vbnltb3VzLWZ1bmN0aW9uLWNhbGxzLWV2YWwuaHRtbCAobGluZSAxNDo1
OSkKICAgICAgICAgIGV2YWwgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIChwcm9n
cmFtKSAobm8gZmlsZSkgKGxpbmUgMToxKQotICAgICAgICAgICAgICAgaW5zZXJ0TmV3VGV4dCBw
cm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyNikKKyAgICAgICAgICAgICAg
IGluc2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjMp
CiAgICAgICAgICAgICAgICAgICBjcmVhdGVFbGVtZW50IChubyBmaWxlKSAobGluZSAwOjApCiAg
ICAgICAgICAgICAgICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAg
ICAgICAgICAgICAgICAgYXBwZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAg
ICAgICAgICAgIGdldEVsZW1lbnRCeUlkIChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICBlbmRU
ZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MjApCisgICAgICBlbmRU
ZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MTcpCiAKIApJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9hbm9ueW1vdXMtZnVuY3Rpb25zLXdpdGgtZGlzcGxh
eS1uYW1lcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9m
aWxlci9hbm9ueW1vdXMtZnVuY3Rpb25zLXdpdGgtZGlzcGxheS1uYW1lcy1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDE4NjgwOCkKKysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvYW5vbnltb3Vz
LWZ1bmN0aW9ucy13aXRoLWRpc3BsYXktbmFtZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC00LDEzICs0LDEzIEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxvYWQgaXQgaW4g
dGgKIAogUHJvZmlsZSB0aXRsZTogQW5vbnltb3VzIGZ1bmN0aW9ucyB3aXRoIGRpc3BsYXkgbmFt
ZXMKIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBzdGFydFRlc3QgYW5vbnltb3Vz
LWZ1bmN0aW9ucy13aXRoLWRpc3BsYXktbmFtZXMuaHRtbCAobGluZSAyMzoxKQotICAgICAgYW5v
bnltb3VzRnVuY3Rpb25HZW5lcmF0b3IgYW5vbnltb3VzLWZ1bmN0aW9ucy13aXRoLWRpc3BsYXkt
bmFtZXMuaHRtbCAobGluZSAxMToxKQotICAgICAgMCBpdGVyYXRpb25zIGZ1bmN0aW9uIGFub255
bW91cy1mdW5jdGlvbnMtd2l0aC1kaXNwbGF5LW5hbWVzLmh0bWwgKGxpbmUgMTM6NSkKLSAgICAg
IDEgaXRlcmF0aW9ucyBmdW5jdGlvbiBhbm9ueW1vdXMtZnVuY3Rpb25zLXdpdGgtZGlzcGxheS1u
YW1lcy5odG1sIChsaW5lIDEzOjUpCi0gICAgICAyIGl0ZXJhdGlvbnMgZnVuY3Rpb24gYW5vbnlt
b3VzLWZ1bmN0aW9ucy13aXRoLWRpc3BsYXktbmFtZXMuaHRtbCAobGluZSAxMzo1KQotICAgICAg
MjAgaXRlcmF0aW9ucyBmdW5jdGlvbiBhbm9ueW1vdXMtZnVuY3Rpb25zLXdpdGgtZGlzcGxheS1u
YW1lcy5odG1sIChsaW5lIDEzOjUpCi0gICAgICAxMDAwIGl0ZXJhdGlvbnMgZnVuY3Rpb24gYW5v
bnltb3VzLWZ1bmN0aW9ucy13aXRoLWRpc3BsYXktbmFtZXMuaHRtbCAobGluZSAxMzo1KQotICAg
ICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAg
c3RhcnRUZXN0IGFub255bW91cy1mdW5jdGlvbnMtd2l0aC1kaXNwbGF5LW5hbWVzLmh0bWwgKGxp
bmUgMjI6MTkpCisgICAgICBhbm9ueW1vdXNGdW5jdGlvbkdlbmVyYXRvciBhbm9ueW1vdXMtZnVu
Y3Rpb25zLXdpdGgtZGlzcGxheS1uYW1lcy5odG1sIChsaW5lIDEwOjM2KQorICAgICAgMCBpdGVy
YXRpb25zIGZ1bmN0aW9uIGFub255bW91cy1mdW5jdGlvbnMtd2l0aC1kaXNwbGF5LW5hbWVzLmh0
bWwgKGxpbmUgMTI6NTkpCisgICAgICAxIGl0ZXJhdGlvbnMgZnVuY3Rpb24gYW5vbnltb3VzLWZ1
bmN0aW9ucy13aXRoLWRpc3BsYXktbmFtZXMuaHRtbCAobGluZSAxMjo1OSkKKyAgICAgIDIgaXRl
cmF0aW9ucyBmdW5jdGlvbiBhbm9ueW1vdXMtZnVuY3Rpb25zLXdpdGgtZGlzcGxheS1uYW1lcy5o
dG1sIChsaW5lIDEyOjU5KQorICAgICAgMjAgaXRlcmF0aW9ucyBmdW5jdGlvbiBhbm9ueW1vdXMt
ZnVuY3Rpb25zLXdpdGgtZGlzcGxheS1uYW1lcy5odG1sIChsaW5lIDEyOjU5KQorICAgICAgMTAw
MCBpdGVyYXRpb25zIGZ1bmN0aW9uIGFub255bW91cy1mdW5jdGlvbnMtd2l0aC1kaXNwbGF5LW5h
bWVzLmh0bWwgKGxpbmUgMTI6NTkpCisgICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVz
b3VyY2VzLmpzIChsaW5lIDE6MTcpCiAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxl
ci9hcHBseS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9m
aWxlci9hcHBseS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4NjgwOCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvcHJvZmlsZXIvYXBwbHktZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDkg
KzQsOSBAQCBUbyBydW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBsb2FkIGl0IGluIHRoCiAKIFByb2Zp
bGUgdGl0bGU6IFVzaW5nIHRoZSBhcHBseSgpIG1ldGhvZAogVGhyZWFkXzEgKG5vIGZpbGUpIChs
aW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCBhcHBseS5odG1sIChsaW5lIDExOjEpCi0gICAgICBmYWtl
T2JqZWN0IGFwcGx5Lmh0bWwgKGxpbmUgMTg6MSkKLSAgICAgICAgIGZha2VJbnRlcmlvckZ1bmN0
aW9uIGFwcGx5Lmh0bWwgKGxpbmUgMjQ6MSkKLSAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1K
Uy1yZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAgIHN0YXJ0VGVzdCBhcHBseS5odG1sIChsaW5l
IDEwOjE5KQorICAgICAgZmFrZU9iamVjdCBhcHBseS5odG1sIChsaW5lIDE3OjIxKQorICAgICAg
ICAgZmFrZUludGVyaW9yRnVuY3Rpb24gYXBwbHkuaHRtbCAobGluZSAyMzozMCkKKyAgICAgIGVu
ZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToxNykKIAogCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2J1aWx0LWluLWZ1bmN0aW9uLWNhbGxzLWFub255
bW91cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxl
ci9idWlsdC1pbi1mdW5jdGlvbi1jYWxscy1hbm9ueW1vdXMtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAxODY4MDgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2J1aWx0LWluLWZ1bmN0aW9u
LWNhbGxzLWFub255bW91cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsNyArNCw3
IEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxvYWQgaXQgaW4gdGgKIAogUHJvZmlsZSB0
aXRsZTogQnVpbHQtaW4gZnVuY3Rpb24gY2FsbHMgYW4gYW5vbnltb3VzIGZ1bmN0aW9uCiBUaHJl
YWRfMSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgc3RhcnRUZXN0IGJ1aWx0LWluLWZ1bmN0aW9u
LWNhbGxzLWFub255bW91cy5odG1sIChsaW5lIDExOjEpCisgICBzdGFydFRlc3QgYnVpbHQtaW4t
ZnVuY3Rpb24tY2FsbHMtYW5vbnltb3VzLmh0bWwgKGxpbmUgMTA6MTkpCiAgICAgICBBcnJheSAo
bm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgbWFwIChubyBmaWxlKSAobGluZSAwOjApCiAgICAg
ICAgICBPYmplY3QgKG5vIGZpbGUpIChsaW5lIDA6MCkKQEAgLTEyLDggKzEyLDggQEAgVGhyZWFk
XzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIHRvSW50ZWdlciAobm8gZmlsZSkg
KGxpbmUgMDowKQogICAgICAgICAgICAgICAgTnVtYmVyIChubyBmaWxlKSAobGluZSAwOjApCiAg
ICAgICAgICAgICAgICAoYW5vbnltb3VzIGZ1bmN0aW9uKSAobm8gZmlsZSkgKGxpbmUgMDowKQot
ICAgICAgICAgbXlGdW5jdGlvbiBidWlsdC1pbi1mdW5jdGlvbi1jYWxscy1hbm9ueW1vdXMuaHRt
bCAobGluZSAxNDo0NSkKLSAgICAgICAgICAgIGFycmF5T3BlcmF0b3JGdW5jdGlvbiBwcm9maWxl
ci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAyNTo0NikKLSAgICAgIGVuZFRlc3QgcHJvZmls
ZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAgICAgICAgIG15RnVuY3Rpb24g
YnVpbHQtaW4tZnVuY3Rpb24tY2FsbHMtYW5vbnltb3VzLmh0bWwgKGxpbmUgMTQ6MzApCisgICAg
ICAgICAgICBhcnJheU9wZXJhdG9yRnVuY3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMu
anMgKGxpbmUgMjU6MzEpCisgICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2Vz
LmpzIChsaW5lIDE6MTcpCiAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9idWls
dC1pbi1mdW5jdGlvbi1jYWxscy11c2VyLWRlZmluZWQtZnVuY3Rpb24tZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvYnVpbHQtaW4tZnVuY3Rpb24t
Y2FsbHMtdXNlci1kZWZpbmVkLWZ1bmN0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2ODA4
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9idWlsdC1pbi1mdW5jdGlvbi1jYWxscy11
c2VyLWRlZmluZWQtZnVuY3Rpb24tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDcg
KzQsNyBAQCBUbyBydW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBsb2FkIGl0IGluIHRoCiAKIFByb2Zp
bGUgdGl0bGU6IEJ1aWx0LWluIGZ1bmN0aW9uIGNhbGxzIGEgdXNlciBkZWZpbmVkIGZ1bmN0aW9u
CiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgc3RhcnRUZXN0IGJ1aWx0LWluLWZ1
bmN0aW9uLWNhbGxzLXVzZXItZGVmaW5lZC1mdW5jdGlvbi5odG1sIChsaW5lIDExOjEpCisgICBz
dGFydFRlc3QgYnVpbHQtaW4tZnVuY3Rpb24tY2FsbHMtdXNlci1kZWZpbmVkLWZ1bmN0aW9uLmh0
bWwgKGxpbmUgMTA6MTkpCiAgICAgICBBcnJheSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAg
bWFwIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICBPYmplY3QgKG5vIGZpbGUpIChsaW5l
IDA6MCkKQEAgLTEyLDcgKzEyLDcgQEAgVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAg
ICAgICAgICAgIHRvSW50ZWdlciAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAg
TnVtYmVyIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICAoYW5vbnltb3VzIGZ1
bmN0aW9uKSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgICAgYXJyYXlPcGVyYXRvckZ1bmN0
aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI1OjQ2KQotICAgICAgZW5k
VGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgICAgICAg
YXJyYXlPcGVyYXRvckZ1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5l
IDI1OjMxKQorICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGlu
ZSAxOjE3KQogCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvY2FsbC1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9jYWxsLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMTg2ODA4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9j
YWxsLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCw5ICs0LDkgQEAgVG8gcnVuIHRo
aXMgdGVzdCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiBVc2luZyB0
aGUgY2FsbCgpIG1ldGhvZAogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0
VGVzdCBjYWxsLmh0bWwgKGxpbmUgMTE6MSkKLSAgICAgIGZha2VPYmplY3QgY2FsbC5odG1sIChs
aW5lIDIwOjEpCi0gICAgICAgICBmYWtlSW50ZXJpb3JGdW5jdGlvbiBjYWxsLmh0bWwgKGxpbmUg
MjY6MSkKLSAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUg
MToyMCkKKyAgIHN0YXJ0VGVzdCBjYWxsLmh0bWwgKGxpbmUgMTA6MTkpCisgICAgICBmYWtlT2Jq
ZWN0IGNhbGwuaHRtbCAobGluZSAxOToyMSkKKyAgICAgICAgIGZha2VJbnRlcmlvckZ1bmN0aW9u
IGNhbGwuaHRtbCAobGluZSAyNTozMCkKKyAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1y
ZXNvdXJjZXMuanMgKGxpbmUgMToxNykKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2Zp
bGVyL2NhbGxpbmctdGhlLWZ1bmN0aW9uLXRoYXQtc3RhcnRlZC10aGUtcHJvZmlsZXItZnJvbS1h
bm90aGVyLXNjb3BlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L3Byb2ZpbGVyL2NhbGxpbmctdGhlLWZ1bmN0aW9uLXRoYXQtc3RhcnRlZC10aGUtcHJvZmlsZXIt
ZnJvbS1hbm90aGVyLXNjb3BlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2ODA4KQorKysgTGF5
b3V0VGVzdHMvZmFzdC9wcm9maWxlci9jYWxsaW5nLXRoZS1mdW5jdGlvbi10aGF0LXN0YXJ0ZWQt
dGhlLXByb2ZpbGVyLWZyb20tYW5vdGhlci1zY29wZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTQsOSArNCw5IEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxvYWQgaXQgaW4g
dGgKIAogUHJvZmlsZSB0aXRsZTogQ2FsbGluZyB0aGUgc2FtZSBmdW5jdGlvbiB3aGVyZSB0aGUg
cHJvZmlsZSBzdGFydGVkIGZyb20gYW5vdGhlciBmdW5jdGlvbgogVGhyZWFkXzEgKG5vIGZpbGUp
IChsaW5lIDA6MCkKLSAgIGluZGlyZWN0aW9uIGNhbGxpbmctdGhlLWZ1bmN0aW9uLXRoYXQtc3Rh
cnRlZC10aGUtcHJvZmlsZXItZnJvbS1hbm90aGVyLXNjb3BlLmh0bWwgKGxpbmUgMTg6MSkKLSAg
ICAgIGZ1bmN0aW9uV2ljaFN0YXJ0c0FuZFN0b3BzVGhlUHJvZmlsZXIgY2FsbGluZy10aGUtZnVu
Y3Rpb24tdGhhdC1zdGFydGVkLXRoZS1wcm9maWxlci1mcm9tLWFub3RoZXItc2NvcGUuaHRtbCAo
bGluZSAyNDoxKQotICAgZnVuY3Rpb25XaWNoU3RhcnRzQW5kU3RvcHNUaGVQcm9maWxlciBjYWxs
aW5nLXRoZS1mdW5jdGlvbi10aGF0LXN0YXJ0ZWQtdGhlLXByb2ZpbGVyLWZyb20tYW5vdGhlci1z
Y29wZS5odG1sIChsaW5lIDI0OjEpCi0gICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3Vy
Y2VzLmpzIChsaW5lIDE6MjApCisgICBpbmRpcmVjdGlvbiBjYWxsaW5nLXRoZS1mdW5jdGlvbi10
aGF0LXN0YXJ0ZWQtdGhlLXByb2ZpbGVyLWZyb20tYW5vdGhlci1zY29wZS5odG1sIChsaW5lIDE3
OjIxKQorICAgICAgZnVuY3Rpb25XaWNoU3RhcnRzQW5kU3RvcHNUaGVQcm9maWxlciBjYWxsaW5n
LXRoZS1mdW5jdGlvbi10aGF0LXN0YXJ0ZWQtdGhlLXByb2ZpbGVyLWZyb20tYW5vdGhlci1zY29w
ZS5odG1sIChsaW5lIDIzOjQ3KQorICAgZnVuY3Rpb25XaWNoU3RhcnRzQW5kU3RvcHNUaGVQcm9m
aWxlciBjYWxsaW5nLXRoZS1mdW5jdGlvbi10aGF0LXN0YXJ0ZWQtdGhlLXByb2ZpbGVyLWZyb20t
YW5vdGhlci1zY29wZS5odG1sIChsaW5lIDIzOjQ3KQorICAgZW5kVGVzdCBwcm9maWxlci10ZXN0
LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
cHJvZmlsZXIvY29tcGFyZS1tdWx0aXBsZS1wcm9maWxlcy1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9jb21wYXJlLW11bHRpcGxlLXByb2ZpbGVz
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2ODA4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9m
aWxlci9jb21wYXJlLW11bHRpcGxlLXByb2ZpbGVzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtNCwxNCArNCwxNCBAQCBUbyBydW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBsb2FkIGl0IGlu
IHRoCiAKIFByb2ZpbGUgdGl0bGU6IFRlc3QKIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjAp
Ci0gICBzdGFydFRlc3QgY29tcGFyZS1tdWx0aXBsZS1wcm9maWxlcy5odG1sIChsaW5lIDIzOjEp
Ci0gICAgICB0ZXN0IGNvbXBhcmUtbXVsdGlwbGUtcHJvZmlsZXMuaHRtbCAobGluZSAxMToyMCkK
LSAgICAgICAgIHRlc3QyIGNvbXBhcmUtbXVsdGlwbGUtcHJvZmlsZXMuaHRtbCAobGluZSAxNzoy
MSkKKyAgIHN0YXJ0VGVzdCBjb21wYXJlLW11bHRpcGxlLXByb2ZpbGVzLmh0bWwgKGxpbmUgMjI6
MTkpCisgICAgICB0ZXN0IGNvbXBhcmUtbXVsdGlwbGUtcHJvZmlsZXMuaHRtbCAobGluZSAxMTox
NCkKKyAgICAgICAgIHRlc3QyIGNvbXBhcmUtbXVsdGlwbGUtcHJvZmlsZXMuaHRtbCAobGluZSAx
NzoxNSkKIAogUHJvZmlsZSB0aXRsZTogVGVzdAogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6
MCkKLSAgIHN0YXJ0VGVzdCBjb21wYXJlLW11bHRpcGxlLXByb2ZpbGVzLmh0bWwgKGxpbmUgMjM6
MSkKLSAgICAgIHRlc3QgY29tcGFyZS1tdWx0aXBsZS1wcm9maWxlcy5odG1sIChsaW5lIDExOjIw
KQotICAgICAgICAgdGVzdDIgY29tcGFyZS1tdWx0aXBsZS1wcm9maWxlcy5odG1sIChsaW5lIDE3
OjIxKQorICAgc3RhcnRUZXN0IGNvbXBhcmUtbXVsdGlwbGUtcHJvZmlsZXMuaHRtbCAobGluZSAy
MjoxOSkKKyAgICAgIHRlc3QgY29tcGFyZS1tdWx0aXBsZS1wcm9maWxlcy5odG1sIChsaW5lIDEx
OjE0KQorICAgICAgICAgdGVzdDIgY29tcGFyZS1tdWx0aXBsZS1wcm9maWxlcy5odG1sIChsaW5l
IDE3OjE1KQogCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvY29uc3RydWN0b3It
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvY29u
c3RydWN0b3ItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY4MDgpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L3Byb2ZpbGVyL2NvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
NCw5ICs0LDkgQEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQ
cm9maWxlIHRpdGxlOiBVc2luZyBhIGNvbnN0cnVjdG9yLgogVGhyZWFkXzEgKG5vIGZpbGUpIChs
aW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCBjb25zdHJ1Y3Rvci5odG1sIChsaW5lIDExOjEpCi0gICAg
ICBmYWtlT2JqZWN0IGNvbnN0cnVjdG9yLmh0bWwgKGxpbmUgMjA6MSkKKyAgIHN0YXJ0VGVzdCBj
b25zdHJ1Y3Rvci5odG1sIChsaW5lIDEwOjE5KQorICAgICAgZmFrZU9iamVjdCBjb25zdHJ1Y3Rv
ci5odG1sIChsaW5lIDE5OjIxKQogICAgICAgICAgQXJyYXkgKG5vIGZpbGUpIChsaW5lIDA6MCkK
LSAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToyMCkK
KyAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToxNykK
IAogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2RlYWQtdGltZS1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9kZWFkLXRpbWUtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAxODY4MDgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVy
L2RlYWQtdGltZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsMTAgKzQsMTAgQEAg
VG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxl
OiBEZWFkIHRpbWUgaW4gcHJvZmlsZS4KIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0g
ICBvbmxvYWQgZGVhZC10aW1lLmh0bWwgKGxpbmUgMjE6NTIpCi0gICAgICBzdGFydFRlc3QgZGVh
ZC10aW1lLmh0bWwgKGxpbmUgMTM6MSkKKyAgIG9ubG9hZCBkZWFkLXRpbWUuaHRtbCAobGluZSAy
MTo0NCkKKyAgICAgIHN0YXJ0VGVzdCBkZWFkLXRpbWUuaHRtbCAobGluZSAxMjoxOSkKICAgICAg
ICAgIHNldFRpbWVvdXQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgIChwcm9ncmFtKSBkZWFkLXRp
bWUuaHRtbCAobGluZSAxOjEpCi0gICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3Vy
Y2VzLmpzIChsaW5lIDE6MjApCisgICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3Vy
Y2VzLmpzIChsaW5lIDE6MTcpCiAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9k
b2N1bWVudC1kb3Qtd3JpdGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvcHJvZmlsZXIvZG9jdW1lbnQtZG90LXdyaXRlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MTg2ODA4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9kb2N1bWVudC1kb3Qtd3JpdGUt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsOCBAQAogCiBQcm9maWxlIHRp
dGxlOiBDYWxsIERvY3VtZW50LndyaXRlKCkKIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjAp
Ci0gICBzdGFydFRlc3QgZG9jdW1lbnQtZG90LXdyaXRlLmh0bWwgKGxpbmUgMTE6MSkKKyAgIHN0
YXJ0VGVzdCBkb2N1bWVudC1kb3Qtd3JpdGUuaHRtbCAobGluZSAxMDoxOSkKICAgICAgIHdyaXRl
IChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVz
b3VyY2VzLmpzIChsaW5lIDE6MjApCisgICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVz
b3VyY2VzLmpzIChsaW5lIDE6MTcpCiAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxl
ci9ldmVudC1oYW5kbGVyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L3Byb2ZpbGVyL2V2ZW50LWhhbmRsZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY4MDgp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2V2ZW50LWhhbmRsZXItZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC00LDE1ICs0LDE1IEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFs
bHksIGxvYWQgaXQgaW4gdGgKIAogUHJvZmlsZSB0aXRsZTogRXZlbnQgaGFuZGxlcgogVGhyZWFk
XzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCBldmVudC1oYW5kbGVyLmh0bWwg
KGxpbmUgMTE6MSkKKyAgIHN0YXJ0VGVzdCBldmVudC1oYW5kbGVyLmh0bWwgKGxpbmUgMTA6MTkp
CiAgICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgYWRkRXZl
bnRMaXN0ZW5lciAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgY2xpY2sgKG5vIGZpbGUpIChs
aW5lIDA6MCkKLSAgICAgICAgIGluc2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJj
ZXMuanMgKGxpbmUgMTc6MjYpCisgICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3Qt
SlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjIzKQogICAgICAgICAgICAgY3JlYXRlRWxlbWVudCAo
bm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUp
IChsaW5lIDA6MCkKICAgICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjAp
CiAgICAgICAgICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAg
ZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgICAg
ZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiAKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvZXhlY3V0aW9uLWNvbnRleHQtYW5kLWV2YWwt
b24tc2FtZS1saW5lLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L3Byb2ZpbGVyL2V4ZWN1dGlvbi1jb250ZXh0LWFuZC1ldmFsLW9uLXNhbWUtbGluZS1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDE4NjgwOCkKKysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvZXhl
Y3V0aW9uLWNvbnRleHQtYW5kLWV2YWwtb24tc2FtZS1saW5lLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtNCwxMyArNCwxMyBAQCBUbyBydW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBsb2Fk
IGl0IGluIHRoCiAKIFByb2ZpbGUgdGl0bGU6IFR3byBFeGVjdXRpb24gQ29udGV4dHMgb24gdGhl
IHNhbWUgbGluZQogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCBl
eGVjdXRpb24tY29udGV4dC1hbmQtZXZhbC1vbi1zYW1lLWxpbmUuaHRtbCAobGluZSAxMToxKQot
ICAgICAgZXZhbEZ1bmN0aW9uIChubyBmaWxlKSAobGluZSAxOjI1KQotICAgICAgICAgaW5zZXJ0
TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyNikKKyAgIHN0
YXJ0VGVzdCBleGVjdXRpb24tY29udGV4dC1hbmQtZXZhbC1vbi1zYW1lLWxpbmUuaHRtbCAobGlu
ZSAxMDoxOSkKKyAgICAgIGV2YWxGdW5jdGlvbiAobm8gZmlsZSkgKGxpbmUgMToyMikKKyAgICAg
ICAgIGluc2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6
MjMpCiAgICAgICAgICAgICBjcmVhdGVFbGVtZW50IChubyBmaWxlKSAobGluZSAwOjApCiAgICAg
ICAgICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAg
YXBwZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIGdldEVsZW1lbnRC
eUlkIChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMt
cmVzb3VyY2VzLmpzIChsaW5lIDE6MjApCisgICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMt
cmVzb3VyY2VzLmpzIChsaW5lIDE6MTcpCiAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9m
aWxlci9pbmxpbmUtZXZlbnQtaGFuZGxlci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9wcm9maWxlci9pbmxpbmUtZXZlbnQtaGFuZGxlci1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDE4NjgwOCkKKysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvaW5saW5lLWV2
ZW50LWhhbmRsZXItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDE3ICs0LDE3IEBA
IFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxvYWQgaXQgaW4gdGgKIAogUHJvZmlsZSB0aXRs
ZTogSW5saW5lIGV2ZW50IGhhbmRsZXIKIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0g
ICBzdGFydFRlc3QgaW5saW5lLWV2ZW50LWhhbmRsZXIuaHRtbCAobGluZSAxMToxKQorICAgc3Rh
cnRUZXN0IGlubGluZS1ldmVudC1oYW5kbGVyLmh0bWwgKGxpbmUgMTA6MTkpCiAgICAgICBnZXRF
bGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgY2xpY2sgKG5vIGZpbGUpIChs
aW5lIDA6MCkKLSAgICAgICAgIG9uY2xpY2sgaW5saW5lLWV2ZW50LWhhbmRsZXIuaHRtbCAobGlu
ZSAzMToxMzUpCi0gICAgICAgICAgICBldmVudExpc3RlbmVyIGlubGluZS1ldmVudC1oYW5kbGVy
Lmh0bWwgKGxpbmUgMTc6MjYpCi0gICAgICAgICAgICAgICBhbm9ueW1vdXNGdW5jdGlvbiBwcm9m
aWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAyOTozNykKLSAgICAgICAgICAgICAgICAg
IGluc2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjYp
CisgICAgICAgICBvbmNsaWNrIGlubGluZS1ldmVudC1oYW5kbGVyLmh0bWwgKGxpbmUgMzE6MTI3
KQorICAgICAgICAgICAgZXZlbnRMaXN0ZW5lciBpbmxpbmUtZXZlbnQtaGFuZGxlci5odG1sIChs
aW5lIDE3OjIzKQorICAgICAgICAgICAgICAgYW5vbnltb3VzRnVuY3Rpb24gcHJvZmlsZXItdGVz
dC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMjk6MzQpCisgICAgICAgICAgICAgICAgICBpbnNlcnRO
ZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjIzKQogICAgICAg
ICAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAg
ICAgICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAg
ICAgICAgICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAg
ICAgICAgICAgICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAg
ICAgICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIw
KQorICAgICAgICAgICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAo
bGluZSAxOjE3KQogCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvbWFueS1jYWxs
cy1pbi10aGUtc2FtZS1zY29wZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9wcm9maWxlci9tYW55LWNhbGxzLWluLXRoZS1zYW1lLXNjb3BlLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMTg2ODA4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9tYW55LWNh
bGxzLWluLXRoZS1zYW1lLXNjb3BlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCwz
MyArNCwzMyBAQCBUbyBydW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBsb2FkIGl0IGluIHRoCiAKIFBy
b2ZpbGUgdGl0bGU6IE1hbnkgQ2FsbHMgSW4gVGhlIFNhbWUgU2NvcGUKIFRocmVhZF8xIChubyBm
aWxlKSAobGluZSAwOjApCi0gICBzdGFydFRlc3QgbWFueS1jYWxscy1pbi10aGUtc2FtZS1zY29w
ZS5odG1sIChsaW5lIDExOjEpCi0gICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMt
cmVzb3VyY2VzLmpzIChsaW5lIDE3OjI2KQorICAgc3RhcnRUZXN0IG1hbnktY2FsbHMtaW4tdGhl
LXNhbWUtc2NvcGUuaHRtbCAobGluZSAxMDoxOSkKKyAgICAgIGluc2VydE5ld1RleHQgcHJvZmls
ZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjMpCiAgICAgICAgICBjcmVhdGVFbGVt
ZW50IChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmls
ZSkgKGxpbmUgMDowKQogICAgICAgICAgYXBwZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkK
ICAgICAgICAgIGdldEVsZW1lbnRCeUlkIChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICBpbnNl
cnRHaXZlblRleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgOTozMikKKyAg
ICAgIGluc2VydEdpdmVuVGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA5
OjI1KQogICAgICAgICAgY3JlYXRlRWxlbWVudCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAg
ICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgIGFwcGVuZENo
aWxkIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmls
ZSkgKGxpbmUgMDowKQotICAgICAgYXJyYXlPcGVyYXRvckZ1bmN0aW9uIHByb2ZpbGVyLXRlc3Qt
SlMtcmVzb3VyY2VzLmpzIChsaW5lIDI1OjQ2KQotICAgICAgaW50ZXJtZWRpYXJ5RnVuY3Rpb24g
cHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMzM6MSkKLSAgICAgICAgIGFub255
bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI5OjM3KQot
ICAgICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAo
bGluZSAxNzoyNikKKyAgICAgIGFycmF5T3BlcmF0b3JGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpT
LXJlc291cmNlcy5qcyAobGluZSAyNTozMSkKKyAgICAgIGludGVybWVkaWFyeUZ1bmN0aW9uIHBy
b2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDMyOjMwKQorICAgICAgICAgYW5vbnlt
b3VzRnVuY3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMjk6MzQpCisg
ICAgICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChs
aW5lIDE3OjIzKQogICAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudCAobm8gZmlsZSkgKGxpbmUg
MDowKQogICAgICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkK
ICAgICAgICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAg
ICAgICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgYW5vbnlt
b3VzRnVuY3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMjk6MzcpCi0g
ICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5l
IDE3OjI2KQorICAgICAgYW5vbnltb3VzRnVuY3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJj
ZXMuanMgKGxpbmUgMjk6MzQpCisgICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3Qt
SlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjIzKQogICAgICAgICAgICAgY3JlYXRlRWxlbWVudCAo
bm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUp
IChsaW5lIDA6MCkKICAgICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjAp
CiAgICAgICAgICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAg
ZW5kIG1hbnktY2FsbHMtaW4tdGhlLXNhbWUtc2NvcGUuaHRtbCAobGluZSAyNzoxKQotICAgICAg
ZW5kVCBtYW55LWNhbGxzLWluLXRoZS1zYW1lLXNjb3BlLmh0bWwgKGxpbmUgMzI6MSkKLSAgICAg
IGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAgICAg
IGVuZCBtYW55LWNhbGxzLWluLXRoZS1zYW1lLXNjb3BlLmh0bWwgKGxpbmUgMjY6MTMpCisgICAg
ICBlbmRUIG1hbnktY2FsbHMtaW4tdGhlLXNhbWUtc2NvcGUuaHRtbCAobGluZSAzMToxNCkKKyAg
ICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToxNykKIAog
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL211bHRpcGxlLWFuZC1kaWZmZXJlbnQt
c2NvcGVkLWFub255bW91cy1mdW5jdGlvbi1jYWxscy1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9tdWx0aXBsZS1hbmQtZGlmZmVyZW50LXNjb3Bl
ZC1hbm9ueW1vdXMtZnVuY3Rpb24tY2FsbHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY4MDgp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL211bHRpcGxlLWFuZC1kaWZmZXJlbnQtc2Nv
cGVkLWFub255bW91cy1mdW5jdGlvbi1jYWxscy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTQsMjAgKzQsMjAgQEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgbG9hZCBpdCBpbiB0
aAogCiBQcm9maWxlIHRpdGxlOiBNdWx0aXBsZSBhbmQgZGlmZmVyZW50IHNjb3BlZCBjYWxscyB0
byB0aGUgc2FtZSBhbm9ueW1vdXMgZnVuY3Rpb24KIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAw
OjApCi0gICBzdGFydFRlc3QgbXVsdGlwbGUtYW5kLWRpZmZlcmVudC1zY29wZWQtYW5vbnltb3Vz
LWZ1bmN0aW9uLWNhbGxzLmh0bWwgKGxpbmUgMTE6MSkKLSAgICAgIGFub255bW91c0Z1bmN0aW9u
IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI5OjM3KQotICAgICAgICAgaW5z
ZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyNikKKyAg
IHN0YXJ0VGVzdCBtdWx0aXBsZS1hbmQtZGlmZmVyZW50LXNjb3BlZC1hbm9ueW1vdXMtZnVuY3Rp
b24tY2FsbHMuaHRtbCAobGluZSAxMDoxOSkKKyAgICAgIGFub255bW91c0Z1bmN0aW9uIHByb2Zp
bGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI5OjM0KQorICAgICAgICAgaW5zZXJ0TmV3
VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyMykKICAgICAgICAg
ICAgIGNyZWF0ZUVsZW1lbnQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIGNyZWF0
ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICBhcHBlbmRDaGlsZCAo
bm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgZ2V0RWxlbWVudEJ5SWQgKG5vIGZpbGUp
IChsaW5lIDA6MCkKLSAgICAgIGludGVybWVkaWFyeUZ1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMt
cmVzb3VyY2VzLmpzIChsaW5lIDMzOjEpCi0gICAgICAgICBhbm9ueW1vdXNGdW5jdGlvbiBwcm9m
aWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAyOTozNykKLSAgICAgICAgICAgIGluc2Vy
dE5ld1RleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjYpCisgICAg
ICBpbnRlcm1lZGlhcnlGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGlu
ZSAzMjozMCkKKyAgICAgICAgIGFub255bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVz
b3VyY2VzLmpzIChsaW5lIDI5OjM0KQorICAgICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxl
ci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyMykKICAgICAgICAgICAgICAgIGNyZWF0
ZUVsZW1lbnQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgIGNyZWF0ZVRleHRO
b2RlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICBhcHBlbmRDaGlsZCAobm8g
ZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgZ2V0RWxlbWVudEJ5SWQgKG5vIGZpbGUp
IChsaW5lIDA6MCkKLSAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMg
KGxpbmUgMToyMCkKKyAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMg
KGxpbmUgMToxNykKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL211bHRpcGxl
LWFuZC1kaWZmZXJlbnQtc2NvcGVkLWZ1bmN0aW9uLWNhbGxzLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL211bHRpcGxlLWFuZC1kaWZmZXJlbnQt
c2NvcGVkLWZ1bmN0aW9uLWNhbGxzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2ODA4KQorKysg
TGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9tdWx0aXBsZS1hbmQtZGlmZmVyZW50LXNjb3BlZC1m
dW5jdGlvbi1jYWxscy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsMTkgKzQsMTkg
QEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRp
dGxlOiBNdWx0aXBsZSBhbmQgZGlmZmVyZW50IHNjb3BlZCBjYWxscyB0byB0aGUgc2FtZSBmdW5j
dGlvbgogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCBtdWx0aXBs
ZS1hbmQtZGlmZmVyZW50LXNjb3BlZC1mdW5jdGlvbi1jYWxscy5odG1sIChsaW5lIDExOjEpCi0g
ICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3
OjI2KQorICAgc3RhcnRUZXN0IG11bHRpcGxlLWFuZC1kaWZmZXJlbnQtc2NvcGVkLWZ1bmN0aW9u
LWNhbGxzLmh0bWwgKGxpbmUgMTA6MTkpCisgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRl
c3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjIzKQogICAgICAgICAgY3JlYXRlRWxlbWVudCAo
bm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChs
aW5lIDA6MCkKICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjApCiAgICAg
ICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgaW50ZXJtZWRp
YXJ5RnVuY3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMzM6MSkKLSAg
ICAgICAgIGFub255bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChs
aW5lIDI5OjM3KQotICAgICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJl
c291cmNlcy5qcyAobGluZSAxNzoyNikKKyAgICAgIGludGVybWVkaWFyeUZ1bmN0aW9uIHByb2Zp
bGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDMyOjMwKQorICAgICAgICAgYW5vbnltb3Vz
RnVuY3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMjk6MzQpCisgICAg
ICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5l
IDE3OjIzKQogICAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudCAobm8gZmlsZSkgKGxpbmUgMDow
KQogICAgICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAg
ICAgICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAg
ICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgZW5kVGVzdCBw
cm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgICAgZW5kVGVzdCBw
cm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiAKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvcHJvZmlsZXIvbXVsdGlwbGUtYW5vbnltb3VzLWZ1bmN0aW9ucy1jYWxsZWQt
ZnJvbS10aGUtc2FtZS1mdW5jdGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9wcm9maWxlci9tdWx0aXBsZS1hbm9ueW1vdXMtZnVuY3Rpb25zLWNhbGxlZC1m
cm9tLXRoZS1zYW1lLWZ1bmN0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2ODA4KQorKysg
TGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9tdWx0aXBsZS1hbm9ueW1vdXMtZnVuY3Rpb25zLWNh
bGxlZC1mcm9tLXRoZS1zYW1lLWZ1bmN0aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNCwxOSArNCwxOSBAQCBUbyBydW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBsb2FkIGl0IGluIHRo
CiAKIFByb2ZpbGUgdGl0bGU6IE11bHRpcGxlIGNhbGxzIHRvIGRpZmZlcmVudCBhbm9ueW1vdXMg
ZnVuY3Rpb25zCiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgc3RhcnRUZXN0IG11
bHRpcGxlLWFub255bW91cy1mdW5jdGlvbnMtY2FsbGVkLWZyb20tdGhlLXNhbWUtZnVuY3Rpb24u
aHRtbCAobGluZSAxMToxKQotICAgICAgYW5vbnltb3VzRnVuY3Rpb24gcHJvZmlsZXItdGVzdC1K
Uy1yZXNvdXJjZXMuanMgKGxpbmUgMjk6MzcpCi0gICAgICAgICBpbnNlcnROZXdUZXh0IHByb2Zp
bGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjI2KQorICAgc3RhcnRUZXN0IG11bHRp
cGxlLWFub255bW91cy1mdW5jdGlvbnMtY2FsbGVkLWZyb20tdGhlLXNhbWUtZnVuY3Rpb24uaHRt
bCAobGluZSAxMDoxOSkKKyAgICAgIGFub255bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMt
cmVzb3VyY2VzLmpzIChsaW5lIDI5OjM0KQorICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxl
ci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyMykKICAgICAgICAgICAgIGNyZWF0ZUVs
ZW1lbnQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChu
byBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxp
bmUgMDowKQogICAgICAgICAgICAgZ2V0RWxlbWVudEJ5SWQgKG5vIGZpbGUpIChsaW5lIDA6MCkK
LSAgICAgIGFub3RoZXJBbm9ueW1vdXNGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpTLXJlc291cmNl
cy5qcyAobGluZSAzMDo0NCkKLSAgICAgICAgIGluc2VydEdpdmVuVGV4dCBwcm9maWxlci10ZXN0
LUpTLXJlc291cmNlcy5qcyAobGluZSA5OjMyKQorICAgICAgYW5vdGhlckFub255bW91c0Z1bmN0
aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDMwOjQxKQorICAgICAgICAg
aW5zZXJ0R2l2ZW5UZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDk6MjUp
CiAgICAgICAgICAgICBjcmVhdGVFbGVtZW50IChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAg
ICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgYXBw
ZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIGdldEVsZW1lbnRCeUlk
IChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVz
b3VyY2VzLmpzIChsaW5lIDE6MjApCisgICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVz
b3VyY2VzLmpzIChsaW5lIDE6MTcpCiAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxl
ci9tdWx0aXBsZS1mcmFtZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvcHJvZmlsZXIvbXVsdGlwbGUtZnJhbWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2
ODA4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9tdWx0aXBsZS1mcmFtZXMtZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDE1ICs0LDE1IEBAIFRvIHJ1biB0aGlzIHRlc3Qg
bWFudWFsbHksIGxvYWQgaXQgaW4gdGgKIAogUHJvZmlsZSB0aXRsZTogT3RoZXIgd2luZG93IGV4
ZWN1dGluZyBKYXZhU2NyaXB0CiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgc3Rh
cnRUZXN0IG11bHRpcGxlLWZyYW1lcy5odG1sIChsaW5lIDExOjEpCisgICBzdGFydFRlc3QgbXVs
dGlwbGUtZnJhbWVzLmh0bWwgKGxpbmUgMTA6MTkpCiAgICAgICBnZXRFbGVtZW50QnlJZCAobm8g
ZmlsZSkgKGxpbmUgMDowKQotICAgICAgZnVuY3Rpb25Jbk90aGVyRnJhbWUgb3RoZXItZnJhbWUu
aHRtbCAobGluZSA0OjMzKQotICAgICAgICAgZnVuY3Rpb25JblBhcmVudEZyYW1lIG11bHRpcGxl
LWZyYW1lcy5odG1sIChsaW5lIDIxOjM0KQotICAgICAgaW5zZXJ0R2l2ZW5UZXh0IHByb2ZpbGVy
LXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDk6MzIpCisgICAgICBmdW5jdGlvbkluT3RoZXJG
cmFtZSBvdGhlci1mcmFtZS5odG1sIChsaW5lIDQ6MzApCisgICAgICAgICBmdW5jdGlvbkluUGFy
ZW50RnJhbWUgbXVsdGlwbGUtZnJhbWVzLmh0bWwgKGxpbmUgMjE6MzEpCisgICAgICBpbnNlcnRH
aXZlblRleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgOToyNSkKICAgICAg
ICAgIGNyZWF0ZUVsZW1lbnQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgIGNyZWF0ZVRl
eHROb2RlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmls
ZSkgKGxpbmUgMDowKQogICAgICAgICAgZ2V0RWxlbWVudEJ5SWQgKG5vIGZpbGUpIChsaW5lIDA6
MCkKLSAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToy
MCkKKyAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTox
NykKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL25hbWVkLWZ1bmN0aW9ucy13
aXRoLWRpc3BsYXktbmFtZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvcHJvZmlsZXIvbmFtZWQtZnVuY3Rpb25zLXdpdGgtZGlzcGxheS1uYW1lcy1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDE4NjgwOCkKKysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvbmFt
ZWQtZnVuY3Rpb25zLXdpdGgtZGlzcGxheS1uYW1lcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTQsMTMgKzQsMTMgQEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgbG9hZCBpdCBp
biB0aAogCiBQcm9maWxlIHRpdGxlOiBOYW1lZCBmdW5jdGlvbnMgd2l0aCBkaXNwbGF5IG5hbWVz
CiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgc3RhcnRUZXN0IG5hbWVkLWZ1bmN0
aW9ucy13aXRoLWRpc3BsYXktbmFtZXMuaHRtbCAobGluZSA1NDoxKQotICAgICAgMCBpdGVyYXRp
b25zIGZ1bmN0aW9uIG5hbWVkLWZ1bmN0aW9ucy13aXRoLWRpc3BsYXktbmFtZXMuaHRtbCAobGlu
ZSAxMToxKQotICAgICAgMSBpdGVyYXRpb24gZnVuY3Rpb24gbmFtZWQtZnVuY3Rpb25zLXdpdGgt
ZGlzcGxheS1uYW1lcy5odG1sIChsaW5lIDE4OjEpCi0gICAgICAyIGl0ZXJhdGlvbnMgZnVuY3Rp
b24gbmFtZWQtZnVuY3Rpb25zLXdpdGgtZGlzcGxheS1uYW1lcy5odG1sIChsaW5lIDI1OjEpCi0g
ICAgICAyMCBpdGVyYXRpb25zIGZ1bmN0aW9uIG5hbWVkLWZ1bmN0aW9ucy13aXRoLWRpc3BsYXkt
bmFtZXMuaHRtbCAobGluZSAzMjoxKQotICAgICAgMTAwMCBpdGVyYXRpb25zIGZ1bmN0aW9uIG5h
bWVkLWZ1bmN0aW9ucy13aXRoLWRpc3BsYXktbmFtZXMuaHRtbCAobGluZSAzOToxKQotICAgICAg
Ym9ndXNEaXNwbGF5TmFtZUZ1bmN0aW9uIG5hbWVkLWZ1bmN0aW9ucy13aXRoLWRpc3BsYXktbmFt
ZXMuaHRtbCAobGluZSA0NzoxKQotICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291
cmNlcy5qcyAobGluZSAxOjIwKQorICAgc3RhcnRUZXN0IG5hbWVkLWZ1bmN0aW9ucy13aXRoLWRp
c3BsYXktbmFtZXMuaHRtbCAobGluZSA1MzoxOSkKKyAgICAgIDAgaXRlcmF0aW9ucyBmdW5jdGlv
biBuYW1lZC1mdW5jdGlvbnMtd2l0aC1kaXNwbGF5LW5hbWVzLmh0bWwgKGxpbmUgMTA6MTkpCisg
ICAgICAxIGl0ZXJhdGlvbiBmdW5jdGlvbiBuYW1lZC1mdW5jdGlvbnMtd2l0aC1kaXNwbGF5LW5h
bWVzLmh0bWwgKGxpbmUgMTc6MTkpCisgICAgICAyIGl0ZXJhdGlvbnMgZnVuY3Rpb24gbmFtZWQt
ZnVuY3Rpb25zLXdpdGgtZGlzcGxheS1uYW1lcy5odG1sIChsaW5lIDI0OjE5KQorICAgICAgMjAg
aXRlcmF0aW9ucyBmdW5jdGlvbiBuYW1lZC1mdW5jdGlvbnMtd2l0aC1kaXNwbGF5LW5hbWVzLmh0
bWwgKGxpbmUgMzE6MjApCisgICAgICAxMDAwIGl0ZXJhdGlvbnMgZnVuY3Rpb24gbmFtZWQtZnVu
Y3Rpb25zLXdpdGgtZGlzcGxheS1uYW1lcy5odG1sIChsaW5lIDM4OjIyKQorICAgICAgYm9ndXNE
aXNwbGF5TmFtZUZ1bmN0aW9uIG5hbWVkLWZ1bmN0aW9ucy13aXRoLWRpc3BsYXktbmFtZXMuaHRt
bCAobGluZSA0NjozNCkKKyAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMu
anMgKGxpbmUgMToxNykKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL25lc3Rl
ZC1hbm9ueW1vdXMtZnVuY3Rvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9wcm9maWxlci9uZXN0ZWQtYW5vbnltb3VzLWZ1bmN0b24tZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAxODY4MDgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL25lc3RlZC1hbm9u
eW1vdXMtZnVuY3Rvbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsMTQgKzQsMTQg
QEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRp
dGxlOiBOZXN0ZWQgYW5vbnltb3VzIGZ1bmN0aW9ucyBjYWxsZWQKIFRocmVhZF8xIChubyBmaWxl
KSAobGluZSAwOjApCi0gICBzdGFydFRlc3QgbmVzdGVkLWFub255bW91cy1mdW5jdG9uLmh0bWwg
KGxpbmUgMTE6MSkKLSAgICAgIEFub255bW91c0Z1bmN0aW9uV2ljaENhbGxzQW5Bbm9ueW1vdXNG
dW5jdGlvbiBuZXN0ZWQtYW5vbnltb3VzLWZ1bmN0b24uaHRtbCAobGluZSAxNDo2OCkKLSAgICAg
ICAgIGFub255bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5l
IDI5OjM3KQotICAgICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291
cmNlcy5qcyAobGluZSAxNzoyNikKKyAgIHN0YXJ0VGVzdCBuZXN0ZWQtYW5vbnltb3VzLWZ1bmN0
b24uaHRtbCAobGluZSAxMDoxOSkKKyAgICAgIEFub255bW91c0Z1bmN0aW9uV2ljaENhbGxzQW5B
bm9ueW1vdXNGdW5jdGlvbiBuZXN0ZWQtYW5vbnltb3VzLWZ1bmN0b24uaHRtbCAobGluZSAxNDo2
NSkKKyAgICAgICAgIGFub255bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2Vz
LmpzIChsaW5lIDI5OjM0KQorICAgICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0
LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyMykKICAgICAgICAgICAgICAgIGNyZWF0ZUVsZW1l
bnQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChu
byBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkg
KGxpbmUgMDowKQogICAgICAgICAgICAgICAgZ2V0RWxlbWVudEJ5SWQgKG5vIGZpbGUpIChsaW5l
IDA6MCkKLSAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUg
MToyMCkKKyAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUg
MToxNykKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL25lc3RlZC1zdGFydC1h
bmQtc3RvcC1wcm9maWxlci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9wcm9maWxlci9uZXN0ZWQtc3RhcnQtYW5kLXN0b3AtcHJvZmlsZXItZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAxODY4MDgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL25lc3RlZC1z
dGFydC1hbmQtc3RvcC1wcm9maWxlci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQs
MzUgKzQsMzUgQEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQ
cm9maWxlIHRpdGxlOiBTdGFydCB0aGUgcHJvZmlsZXIgdGhlIHRoaXJkIHRpbWUuCiBUaHJlYWRf
MSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgc3RhcnRUZXN0IG5lc3RlZC1zdGFydC1hbmQtc3Rv
cC1wcm9maWxlci5odG1sIChsaW5lIDExOjEpCi0gICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3Qt
SlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MjApCisgICBzdGFydFRlc3QgbmVzdGVkLXN0YXJ0LWFu
ZC1zdG9wLXByb2ZpbGVyLmh0bWwgKGxpbmUgMTA6MTkpCisgICAgICBlbmRUZXN0IHByb2ZpbGVy
LXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MTcpCiAKIAogUHJvZmlsZSB0aXRsZTogU3Rh
cnQgdGhlIHByb2ZpbGVyIHRoZSB0aGlyZCB0aW1lLgogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5l
IDA6MCkKLSAgIHN0YXJ0VGVzdCBuZXN0ZWQtc3RhcnQtYW5kLXN0b3AtcHJvZmlsZXIuaHRtbCAo
bGluZSAxMToxKQotICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAo
bGluZSAxOjIwKQorICAgc3RhcnRUZXN0IG5lc3RlZC1zdGFydC1hbmQtc3RvcC1wcm9maWxlci5o
dG1sIChsaW5lIDEwOjE5KQorICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNl
cy5qcyAobGluZSAxOjE3KQogCiBQcm9maWxlIHRpdGxlOiBTdGFydCB0aGUgcHJvZmlsZXIgdGhl
IHNlY29uZCB0aW1lLgogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVz
dCBuZXN0ZWQtc3RhcnQtYW5kLXN0b3AtcHJvZmlsZXIuaHRtbCAobGluZSAxMToxKQotICAgICAg
ZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgc3Rh
cnRUZXN0IG5lc3RlZC1zdGFydC1hbmQtc3RvcC1wcm9maWxlci5odG1sIChsaW5lIDEwOjE5KQor
ICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQog
ICAgICAgICAgcHJvZmlsZUVuZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgICAgcHJpbnRQ
cm9maWxlc0RhdGFXaXRob3V0VGltZSBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGlu
ZSA2MzoxKQorICAgICAgICAgcHJpbnRQcm9maWxlc0RhdGFXaXRob3V0VGltZSBwcm9maWxlci10
ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA2MjozOCkKICAgICAgICAgICAgIGNyZWF0ZUVsZW1l
bnQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBm
aWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUg
MDowKQotICAgICAgICAgICAgcHJpbnRQcm9maWxlTm9kZVdpdGhvdXRUaW1lIHByb2ZpbGVyLXRl
c3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDc4OjEpCisgICAgICAgICAgICBwcmludFByb2ZpbGVO
b2RlV2l0aG91dFRpbWUgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgNzc6Mzcp
CiAgICAgICAgICAgICAgICByZXBsYWNlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAg
ICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAg
YXBwZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgIGNoaWxkcmVu
IChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICAgICAgICAgICBwcmludFByb2ZpbGVOb2RlV2l0
aG91dFRpbWUgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgNzg6MSkKKyAgICAg
ICAgICAgICAgIHByaW50UHJvZmlsZU5vZGVXaXRob3V0VGltZSBwcm9maWxlci10ZXN0LUpTLXJl
c291cmNlcy5qcyAobGluZSA3NzozNykKICAgICAgICAgICAgICAgICAgIHJlcGxhY2UgKG5vIGZp
bGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxl
KSAobGluZSAwOjApCiAgICAgICAgICAgICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxp
bmUgMDowKQogICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gKG5vIGZpbGUpIChsaW5lIDA6MCkK
LSAgICAgICAgICAgICAgICAgIHByaW50UHJvZmlsZU5vZGVXaXRob3V0VGltZSBwcm9maWxlci10
ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA3ODoxKQorICAgICAgICAgICAgICAgICAgcHJpbnRQ
cm9maWxlTm9kZVdpdGhvdXRUaW1lIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5l
IDc3OjM3KQogICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZSAobm8gZmlsZSkgKGxpbmUgMDow
KQogICAgICAgICAgICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6
MCkKICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjAp
CkBAIC00MywyOSArNDMsMjkgQEAgVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKIAogUHJv
ZmlsZSB0aXRsZTogU3RhcnQgdGhlIHByb2ZpbGVyIHRoZSB0aGlyZCB0aW1lLgogVGhyZWFkXzEg
KG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCBuZXN0ZWQtc3RhcnQtYW5kLXN0b3At
cHJvZmlsZXIuaHRtbCAobGluZSAxMToxKQotICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpT
LXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgc3RhcnRUZXN0IG5lc3RlZC1zdGFydC1hbmQt
c3RvcC1wcm9maWxlci5odG1sIChsaW5lIDEwOjE5KQorICAgICAgZW5kVGVzdCBwcm9maWxlci10
ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiBQcm9maWxlIHRpdGxlOiBTdGFydCB0
aGUgcHJvZmlsZXIgdGhlIHNlY29uZCB0aW1lLgogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6
MCkKLSAgIHN0YXJ0VGVzdCBuZXN0ZWQtc3RhcnQtYW5kLXN0b3AtcHJvZmlsZXIuaHRtbCAobGlu
ZSAxMToxKQotICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGlu
ZSAxOjIwKQorICAgc3RhcnRUZXN0IG5lc3RlZC1zdGFydC1hbmQtc3RvcC1wcm9maWxlci5odG1s
IChsaW5lIDEwOjE5KQorICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5q
cyAobGluZSAxOjE3KQogICAgICAgICAgcHJvZmlsZUVuZCAobm8gZmlsZSkgKGxpbmUgMDowKQot
ICAgICAgICAgcHJpbnRQcm9maWxlc0RhdGFXaXRob3V0VGltZSBwcm9maWxlci10ZXN0LUpTLXJl
c291cmNlcy5qcyAobGluZSA2MzoxKQorICAgICAgICAgcHJpbnRQcm9maWxlc0RhdGFXaXRob3V0
VGltZSBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA2MjozOCkKICAgICAgICAg
ICAgIGNyZWF0ZUVsZW1lbnQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIGNyZWF0
ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICBhcHBlbmRDaGlsZCAo
bm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgICAgICAgcHJpbnRQcm9maWxlTm9kZVdpdGhvdXRU
aW1lIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDc4OjEpCisgICAgICAgICAg
ICBwcmludFByb2ZpbGVOb2RlV2l0aG91dFRpbWUgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMu
anMgKGxpbmUgNzc6MzcpCiAgICAgICAgICAgICAgICByZXBsYWNlIChubyBmaWxlKSAobGluZSAw
OjApCiAgICAgICAgICAgICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQog
ICAgICAgICAgICAgICAgYXBwZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAg
ICAgICAgIGNoaWxkcmVuIChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICAgICAgICAgICBwcmlu
dFByb2ZpbGVOb2RlV2l0aG91dFRpbWUgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxp
bmUgNzg6MSkKKyAgICAgICAgICAgICAgIHByaW50UHJvZmlsZU5vZGVXaXRob3V0VGltZSBwcm9m
aWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA3NzozNykKICAgICAgICAgICAgICAgICAg
IHJlcGxhY2UgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgICAgIGNyZWF0ZVRl
eHROb2RlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICAgICBhcHBlbmRDaGls
ZCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gKG5vIGZp
bGUpIChsaW5lIDA6MCkKLSAgICAgICAgICAgICAgICAgIHByaW50UHJvZmlsZU5vZGVXaXRob3V0
VGltZSBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA3ODoxKQorICAgICAgICAg
ICAgICAgICAgcHJpbnRQcm9maWxlTm9kZVdpdGhvdXRUaW1lIHByb2ZpbGVyLXRlc3QtSlMtcmVz
b3VyY2VzLmpzIChsaW5lIDc3OjM3KQogICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZSAobm8g
ZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5v
IGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZENoaWxkIChubyBm
aWxlKSAobGluZSAwOjApCkBAIC03NSw0OSArNzUsNDkgQEAgVGhyZWFkXzEgKG5vIGZpbGUpIChs
aW5lIDA6MCkKIAogUHJvZmlsZSB0aXRsZTogU3RhcnQgdGhlIHByb2ZpbGVyIHRoZSBmaXJzdCB0
aW1lLgogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCBuZXN0ZWQt
c3RhcnQtYW5kLXN0b3AtcHJvZmlsZXIuaHRtbCAobGluZSAxMToxKQotICAgICAgZW5kVGVzdCBw
cm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgc3RhcnRUZXN0IG5l
c3RlZC1zdGFydC1hbmQtc3RvcC1wcm9maWxlci5odG1sIChsaW5lIDEwOjE5KQorICAgICAgZW5k
VGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogICAgICAgICAg
cHJvZmlsZUVuZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgICAgcHJpbnRQcm9maWxlc0Rh
dGFXaXRob3V0VGltZSBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA2MzoxKQor
ICAgICAgICAgcHJpbnRQcm9maWxlc0RhdGFXaXRob3V0VGltZSBwcm9maWxlci10ZXN0LUpTLXJl
c291cmNlcy5qcyAobGluZSA2MjozOCkKICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQgKG5vIGZp
bGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGlu
ZSAwOjApCiAgICAgICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAg
ICAgICAgICAgcHJpbnRQcm9maWxlTm9kZVdpdGhvdXRUaW1lIHByb2ZpbGVyLXRlc3QtSlMtcmVz
b3VyY2VzLmpzIChsaW5lIDc4OjEpCisgICAgICAgICAgICBwcmludFByb2ZpbGVOb2RlV2l0aG91
dFRpbWUgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgNzc6MzcpCiAgICAgICAg
ICAgICAgICByZXBsYWNlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICBjcmVh
dGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgYXBwZW5kQ2hp
bGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgIGNoaWxkcmVuIChubyBmaWxl
KSAobGluZSAwOjApCi0gICAgICAgICAgICAgICBwcmludFByb2ZpbGVOb2RlV2l0aG91dFRpbWUg
cHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgNzg6MSkKKyAgICAgICAgICAgICAg
IHByaW50UHJvZmlsZU5vZGVXaXRob3V0VGltZSBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5q
cyAobGluZSA3NzozNykKICAgICAgICAgICAgICAgICAgIHJlcGxhY2UgKG5vIGZpbGUpIChsaW5l
IDA6MCkKICAgICAgICAgICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAw
OjApCiAgICAgICAgICAgICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQog
ICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAgICAg
ICAgICAgICAgIHByaW50UHJvZmlsZU5vZGVXaXRob3V0VGltZSBwcm9maWxlci10ZXN0LUpTLXJl
c291cmNlcy5qcyAobGluZSA3ODoxKQorICAgICAgICAgICAgICAgICAgcHJpbnRQcm9maWxlTm9k
ZVdpdGhvdXRUaW1lIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDc3OjM3KQog
ICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAg
ICAgICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAg
ICAgICAgICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAg
ICAgICAgICAgICAgICBjaGlsZHJlbiAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgICAgICAg
ICAgICAgICAgcHJpbnRQcm9maWxlTm9kZVdpdGhvdXRUaW1lIHByb2ZpbGVyLXRlc3QtSlMtcmVz
b3VyY2VzLmpzIChsaW5lIDc4OjEpCisgICAgICAgICAgICAgICAgICAgICBwcmludFByb2ZpbGVO
b2RlV2l0aG91dFRpbWUgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgNzc6Mzcp
CiAgICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlIChubyBmaWxlKSAobGluZSAwOjApCiAg
ICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDow
KQogICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6
MCkKICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuIChubyBmaWxlKSAobGluZSAwOjAp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmludFByb2ZpbGVOb2RlV2l0aG91dFRpbWUgcHJv
ZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgNzg6MSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHByaW50UHJvZmlsZU5vZGVXaXRob3V0VGltZSBwcm9maWxlci10ZXN0LUpTLXJlc291
cmNlcy5qcyAobGluZSA3NzozNykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2Ug
KG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZVRl
eHROb2RlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
cHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2hpbGRyZW4gKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHByaW50UHJvZmlsZU5vZGVXaXRob3V0VGltZSBwcm9maWxlci10ZXN0LUpTLXJlc291cmNl
cy5qcyAobGluZSA3ODoxKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRQcm9maWxl
Tm9kZVdpdGhvdXRUaW1lIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDc3OjM3
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZSAobm8gZmlsZSkgKGxpbmUg
MDowKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZp
bGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZENoaWxk
IChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGls
ZHJlbiAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHJpbnRQcm9maWxlTm9kZVdpdGhvdXRUaW1lIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpz
IChsaW5lIDc4OjEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludFByb2ZpbGVO
b2RlV2l0aG91dFRpbWUgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgNzc6Mzcp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlIChubyBmaWxlKSAobGlu
ZSAwOjApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVUZXh0Tm9kZSAo
bm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBw
ZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNoaWxkcmVuIChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwcmludFByb2ZpbGVOb2RlV2l0aG91dFRpbWUgcHJvZmlsZXItdGVzdC1K
Uy1yZXNvdXJjZXMuanMgKGxpbmUgNzg6MSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHByaW50UHJvZmlsZU5vZGVXaXRob3V0VGltZSBwcm9maWxlci10ZXN0LUpTLXJlc291cmNl
cy5qcyAobGluZSA3NzozNykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
cGxhY2UgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9vbmUtZXhlY3V0aW9uLWNvbnRleHQtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvb25lLWV4
ZWN1dGlvbi1jb250ZXh0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2ODA4KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9wcm9maWxlci9vbmUtZXhlY3V0aW9uLWNvbnRleHQtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC00LDcgKzQsNyBAQCBUbyBydW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBs
b2FkIGl0IGluIHRoCiAKIFByb2ZpbGUgdGl0bGU6IE9uZSBFeGVjdXRpb24gQ29udGV4dAogVGhy
ZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCBvbmUtZXhlY3V0aW9uLWNv
bnRleHQuaHRtbCAobGluZSAxMToxKQotICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJl
c291cmNlcy5qcyAobGluZSAxOjIwKQorICAgc3RhcnRUZXN0IG9uZS1leGVjdXRpb24tY29udGV4
dC5odG1sIChsaW5lIDEwOjE5KQorICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291
cmNlcy5qcyAobGluZSAxOjE3KQogCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIv
cHJvZmlsZS1jYWxscy1pbi1pbmNsdWRlZC1maWxlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3Byb2ZpbGUtY2FsbHMtaW4taW5jbHVkZWQtZmls
ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4NjgwOCkKKysrIExheW91dFRlc3RzL2Zhc3QvcHJv
ZmlsZXIvcHJvZmlsZS1jYWxscy1pbi1pbmNsdWRlZC1maWxlLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtNCw3ICs0LDcgQEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgbG9hZCBp
dCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiBQcm9maWxlIGNhbGwgaW4gaW5jbHVkZWQgZmlsZQog
VGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0UHJvZmlsZSBwcm9maWxlci10
ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA0MzoxKQotICAgZW5kVGVzdCBwcm9maWxlci10ZXN0
LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgc3RhcnRQcm9maWxlIHByb2ZpbGVyLXRl
c3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDQyOjIyKQorICAgZW5kVGVzdCBwcm9maWxlci10ZXN0
LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
cHJvZmlsZXIvcHJvZmlsZS13aXRoLW5vLXRpdGxlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3Byb2ZpbGUtd2l0aC1uby10aXRsZS1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDE4NjgwOCkKKysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvcHJv
ZmlsZS13aXRoLW5vLXRpdGxlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCw3ICs0
LDcgQEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxl
IHRpdGxlOiAKIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBzdGFydFRlc3QgcHJv
ZmlsZS13aXRoLW5vLXRpdGxlLmh0bWwgKGxpbmUgMTE6MSkKLSAgICAgIGVuZFRlc3QgcHJvZmls
ZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAgIHN0YXJ0VGVzdCBwcm9maWxl
LXdpdGgtbm8tdGl0bGUuaHRtbCAobGluZSAxMDoxOSkKKyAgICAgIGVuZFRlc3QgcHJvZmlsZXIt
dGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToxNykKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L3Byb2ZpbGVyL3Byb2ZpbGluZy1mcm9tLWEtbmVzdGVkLWxvY2F0aW9uLWJ1dC1zdG9wLXBy
b2ZpbGluZy1vdXRzaWRlLXRoZS1uZXN0aW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3Byb2ZpbGluZy1mcm9tLWEtbmVzdGVkLWxvY2F0aW9u
LWJ1dC1zdG9wLXByb2ZpbGluZy1vdXRzaWRlLXRoZS1uZXN0aW5nLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMTg2ODA4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9wcm9maWxpbmctZnJv
bS1hLW5lc3RlZC1sb2NhdGlvbi1idXQtc3RvcC1wcm9maWxpbmctb3V0c2lkZS10aGUtbmVzdGlu
Zy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsNyArNCw3IEBAIFRvIHJ1biB0aGlz
IHRlc3QgbWFudWFsbHksIGxvYWQgaXQgaW4gdGgKIAogUHJvZmlsZSB0aXRsZTogUHJvZmlsaW5n
IEZyb20gQSBOZXN0ZWQgTG9jYXRpb24gQnV0IFN0b3AgUHJvZmlsaW5nIE91dHNpZGUgVGhlIE5l
c3RpbmcKIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBmdW5jdGlvbldpY2hTdGFy
dHNUaGVQcm9maWxlciBwcm9maWxpbmctZnJvbS1hLW5lc3RlZC1sb2NhdGlvbi1idXQtc3RvcC1w
cm9maWxpbmctb3V0c2lkZS10aGUtbmVzdGluZy5odG1sIChsaW5lIDE3OjEpCi0gICBlbmRUZXN0
IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MjApCisgICBmdW5jdGlvbldp
Y2hTdGFydHNUaGVQcm9maWxlciBwcm9maWxpbmctZnJvbS1hLW5lc3RlZC1sb2NhdGlvbi1idXQt
c3RvcC1wcm9maWxpbmctb3V0c2lkZS10aGUtbmVzdGluZy5odG1sIChsaW5lIDE2OjM5KQorICAg
ZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiAKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvcHJvZmlsaW5nLWZyb20tYS1uZXN0ZWQtbG9j
YXRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmls
ZXIvcHJvZmlsaW5nLWZyb20tYS1uZXN0ZWQtbG9jYXRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAxODY4MDgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3Byb2ZpbGluZy1mcm9tLWEt
bmVzdGVkLWxvY2F0aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCw3ICs0LDcg
QEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRp
dGxlOiBQcm9maWxpbmcgRnJvbSBBIE5lc3RlZCBMb2NhdGlvbgogVGhyZWFkXzEgKG5vIGZpbGUp
IChsaW5lIDA6MCkKLSAgIGZ1bmN0aW9uV2ljaFN0YXJ0c0FuZFN0b3BzVGhlUHJvZmlsZXIgcHJv
ZmlsaW5nLWZyb20tYS1uZXN0ZWQtbG9jYXRpb24uaHRtbCAobGluZSAxNjoxKQotICAgICAgZW5k
VGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgZnVuY3Rp
b25XaWNoU3RhcnRzQW5kU3RvcHNUaGVQcm9maWxlciBwcm9maWxpbmctZnJvbS1hLW5lc3RlZC1s
b2NhdGlvbi5odG1sIChsaW5lIDE1OjQ3KQorICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpT
LXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcHJv
ZmlsZXIvc2ltcGxlLWV2ZW50LWNhbGwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvcHJvZmlsZXIvc2ltcGxlLWV2ZW50LWNhbGwtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAxODY4MDgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3NpbXBsZS1ldmVudC1j
YWxsLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCw3ICs0LDcgQEAgVG8gcnVuIHRo
aXMgdGVzdCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiBBIHNpbXBs
ZSBwcm9maWxlIHRlc3Qgd2hlcmUgYW4gZXZlbnQgaGFwcGVucy4KIFRocmVhZF8xIChubyBmaWxl
KSAobGluZSAwOjApCi0gICBzdGFydFRlc3Qgc2ltcGxlLWV2ZW50LWNhbGwuaHRtbCAobGluZSAx
MToxKQotICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAx
OjIwKQorICAgc3RhcnRUZXN0IHNpbXBsZS1ldmVudC1jYWxsLmh0bWwgKGxpbmUgMTA6MTkpCisg
ICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MTcpCiAK
IApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9zaW1wbGUtbm8tbGV2ZWwtY2hhbmdl
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3Np
bXBsZS1uby1sZXZlbC1jaGFuZ2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY4MDgpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3NpbXBsZS1uby1sZXZlbC1jaGFuZ2UtZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDcgKzQsNyBAQCBUbyBydW4gdGhpcyB0ZXN0IG1hbnVh
bGx5LCBsb2FkIGl0IGluIHRoCiAKIFByb2ZpbGUgdGl0bGU6IEEgc2ltcGxlIHByb2ZpbGUgdGVz
dCB3aGVyZSBubyBzY29wZSBjaGFnbmVzCiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDowKQot
ICAgZnVuY3Rpb25XaWNoU3RhcnRzQW5kU3RvcHNUaGVQcm9maWxlciBzaW1wbGUtbm8tbGV2ZWwt
Y2hhbmdlLmh0bWwgKGxpbmUgMTY6MSkKKyAgIGZ1bmN0aW9uV2ljaFN0YXJ0c0FuZFN0b3BzVGhl
UHJvZmlsZXIgc2ltcGxlLW5vLWxldmVsLWNoYW5nZS5odG1sIChsaW5lIDE1OjQ3KQogICAgICAg
Z2V0RWxlbWVudEJ5SWQgKG5vIGZpbGUpIChsaW5lIDA6MCkKIAogCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L3Byb2ZpbGVyL3N0YXJ0LWFuZC1zdG9wLXByb2ZpbGVyLW11bHRpcGxlLXRpbWVzLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3N0YXJ0
LWFuZC1zdG9wLXByb2ZpbGVyLW11bHRpcGxlLXRpbWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MTg2ODA4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9zdGFydC1hbmQtc3RvcC1wcm9m
aWxlci1tdWx0aXBsZS10aW1lcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsNzAg
KzQsNzAgQEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9m
aWxlIHRpdGxlOiBTdGFydCB0aGUgcHJvZmlsZXIgdGhlIGZpcnN0IHRpbWUuCiBUaHJlYWRfMSAo
bm8gZmlsZSkgKGxpbmUgMDowKQotICAgc3RhcnRUZXN0IHN0YXJ0LWFuZC1zdG9wLXByb2ZpbGVy
LW11bHRpcGxlLXRpbWVzLmh0bWwgKGxpbmUgMTE6MSkKLSAgICAgIGFub255bW91c0Z1bmN0aW9u
IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI5OjM3KQotICAgICAgICAgaW5z
ZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyNikKKyAg
IHN0YXJ0VGVzdCBzdGFydC1hbmQtc3RvcC1wcm9maWxlci1tdWx0aXBsZS10aW1lcy5odG1sIChs
aW5lIDEwOjE5KQorICAgICAgYW5vbnltb3VzRnVuY3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNv
dXJjZXMuanMgKGxpbmUgMjk6MzQpCisgICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRl
c3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjIzKQogICAgICAgICAgICAgY3JlYXRlRWxlbWVu
dCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZp
bGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAw
OjApCiAgICAgICAgICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAg
ICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAg
ICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiAK
IFByb2ZpbGUgdGl0bGU6IFN0YXJ0IHRoZSBwcm9maWxlciB0aGUgZmlyc3QgdGltZS4KIFRocmVh
ZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBzdGFydFRlc3Qgc3RhcnQtYW5kLXN0b3AtcHJv
ZmlsZXItbXVsdGlwbGUtdGltZXMuaHRtbCAobGluZSAxMToxKQotICAgICAgYW5vbnltb3VzRnVu
Y3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMjk6MzcpCi0gICAgICAg
ICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjI2
KQorICAgc3RhcnRUZXN0IHN0YXJ0LWFuZC1zdG9wLXByb2ZpbGVyLW11bHRpcGxlLXRpbWVzLmh0
bWwgKGxpbmUgMTA6MTkpCisgICAgICBhbm9ueW1vdXNGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpT
LXJlc291cmNlcy5qcyAobGluZSAyOTozNCkKKyAgICAgICAgIGluc2VydE5ld1RleHQgcHJvZmls
ZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjMpCiAgICAgICAgICAgICBjcmVhdGVF
bGVtZW50IChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICBjcmVhdGVUZXh0Tm9kZSAo
bm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgYXBwZW5kQ2hpbGQgKG5vIGZpbGUpIChs
aW5lIDA6MCkKICAgICAgICAgICAgIGdldEVsZW1lbnRCeUlkIChubyBmaWxlKSAobGluZSAwOjAp
Ci0gICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MjAp
CisgICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MTcp
CiAKIFByb2ZpbGUgdGl0bGU6IFN0YXJ0IHRoZSBwcm9maWxlciB0aGUgc2Vjb25kIHRpbWUuCiBU
aHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgc3RhcnRUZXN0IHN0YXJ0LWFuZC1zdG9w
LXByb2ZpbGVyLW11bHRpcGxlLXRpbWVzLmh0bWwgKGxpbmUgMTE6MSkKLSAgICAgIGFub255bW91
c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI5OjM3KQotICAg
ICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAx
NzoyNikKKyAgIHN0YXJ0VGVzdCBzdGFydC1hbmQtc3RvcC1wcm9maWxlci1tdWx0aXBsZS10aW1l
cy5odG1sIChsaW5lIDEwOjE5KQorICAgICAgYW5vbnltb3VzRnVuY3Rpb24gcHJvZmlsZXItdGVz
dC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMjk6MzQpCisgICAgICAgICBpbnNlcnROZXdUZXh0IHBy
b2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjIzKQogICAgICAgICAgICAgY3Jl
YXRlRWxlbWVudCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgY3JlYXRlVGV4dE5v
ZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxl
KSAobGluZSAwOjApCiAgICAgICAgICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUg
MDowKQotICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAx
OjIwKQorICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAx
OjE3KQogCiAKIFByb2ZpbGUgdGl0bGU6IFN0YXJ0IHRoZSBwcm9maWxlciB0aGUgZmlyc3QgdGlt
ZS4KIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBzdGFydFRlc3Qgc3RhcnQtYW5k
LXN0b3AtcHJvZmlsZXItbXVsdGlwbGUtdGltZXMuaHRtbCAobGluZSAxMToxKQotICAgICAgYW5v
bnltb3VzRnVuY3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMjk6Mzcp
Ci0gICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChs
aW5lIDE3OjI2KQorICAgc3RhcnRUZXN0IHN0YXJ0LWFuZC1zdG9wLXByb2ZpbGVyLW11bHRpcGxl
LXRpbWVzLmh0bWwgKGxpbmUgMTA6MTkpCisgICAgICBhbm9ueW1vdXNGdW5jdGlvbiBwcm9maWxl
ci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAyOTozNCkKKyAgICAgICAgIGluc2VydE5ld1Rl
eHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjMpCiAgICAgICAgICAg
ICBjcmVhdGVFbGVtZW50IChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICBjcmVhdGVU
ZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgYXBwZW5kQ2hpbGQgKG5v
IGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIGdldEVsZW1lbnRCeUlkIChubyBmaWxlKSAo
bGluZSAwOjApCi0gICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChs
aW5lIDE6MjApCisgICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChs
aW5lIDE6MTcpCiAKIFByb2ZpbGUgdGl0bGU6IFN0YXJ0IHRoZSBwcm9maWxlciB0aGUgc2Vjb25k
IHRpbWUuCiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgc3RhcnRUZXN0IHN0YXJ0
LWFuZC1zdG9wLXByb2ZpbGVyLW11bHRpcGxlLXRpbWVzLmh0bWwgKGxpbmUgMTE6MSkKLSAgICAg
IGFub255bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI5
OjM3KQotICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5q
cyAobGluZSAxNzoyNikKKyAgIHN0YXJ0VGVzdCBzdGFydC1hbmQtc3RvcC1wcm9maWxlci1tdWx0
aXBsZS10aW1lcy5odG1sIChsaW5lIDEwOjE5KQorICAgICAgYW5vbnltb3VzRnVuY3Rpb24gcHJv
ZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMjk6MzQpCisgICAgICAgICBpbnNlcnRO
ZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjIzKQogICAgICAg
ICAgICAgY3JlYXRlRWxlbWVudCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgY3Jl
YXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIGFwcGVuZENoaWxk
IChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmls
ZSkgKGxpbmUgMDowKQotICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5q
cyAobGluZSAxOjIwKQorICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5q
cyAobGluZSAxOjE3KQogCiBQcm9maWxlIHRpdGxlOiBTdGFydCB0aGUgcHJvZmlsZXIgdGhlIHRo
aXJkIHRpbWUuCiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgc3RhcnRUZXN0IHN0
YXJ0LWFuZC1zdG9wLXByb2ZpbGVyLW11bHRpcGxlLXRpbWVzLmh0bWwgKGxpbmUgMTE6MSkKLSAg
ICAgIGFub255bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5l
IDI5OjM3KQotICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNl
cy5qcyAobGluZSAxNzoyNikKKyAgIHN0YXJ0VGVzdCBzdGFydC1hbmQtc3RvcC1wcm9maWxlci1t
dWx0aXBsZS10aW1lcy5odG1sIChsaW5lIDEwOjE5KQorICAgICAgYW5vbnltb3VzRnVuY3Rpb24g
cHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMjk6MzQpCisgICAgICAgICBpbnNl
cnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjIzKQogICAg
ICAgICAgICAgY3JlYXRlRWxlbWVudCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAg
Y3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIGFwcGVuZENo
aWxkIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICBnZXRFbGVtZW50QnlJZCAobm8g
ZmlsZSkgKGxpbmUgMDowKQotICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNl
cy5qcyAobGluZSAxOjIwKQorICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNl
cy5qcyAobGluZSAxOjE3KQogCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvc3Rh
cnQtYW5kLXN0b3AtcHJvZmlsaW5nLWluLXRoZS1zYW1lLWZ1bmN0aW9uLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3N0YXJ0LWFuZC1zdG9wLXBy
b2ZpbGluZy1pbi10aGUtc2FtZS1mdW5jdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4Njgw
OCkKKysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvc3RhcnQtYW5kLXN0b3AtcHJvZmlsaW5n
LWluLXRoZS1zYW1lLWZ1bmN0aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCw3
ICs0LDcgQEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9m
aWxlIHRpdGxlOiBQcm9maWxpbmcgRnJvbSBBIE5lc3RlZCBMb2NhdGlvbgogVGhyZWFkXzEgKG5v
IGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCBzdGFydC1hbmQtc3RvcC1wcm9maWxpbmct
aW4tdGhlLXNhbWUtZnVuY3Rpb24uaHRtbCAobGluZSAxMToxKQotICAgICAgZnVuY3Rpb25XaWNo
U3RvcHNUaGVQcm9maWxlciBzdGFydC1hbmQtc3RvcC1wcm9maWxpbmctaW4tdGhlLXNhbWUtZnVu
Y3Rpb24uaHRtbCAobGluZSAxODoxKQorICAgc3RhcnRUZXN0IHN0YXJ0LWFuZC1zdG9wLXByb2Zp
bGluZy1pbi10aGUtc2FtZS1mdW5jdGlvbi5odG1sIChsaW5lIDEwOjE5KQorICAgICAgZnVuY3Rp
b25XaWNoU3RvcHNUaGVQcm9maWxlciBzdGFydC1hbmQtc3RvcC1wcm9maWxpbmctaW4tdGhlLXNh
bWUtZnVuY3Rpb24uaHRtbCAobGluZSAxNzozOCkKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L3Byb2ZpbGVyL3N0b3AtcHJvZmlsaW5nLWFmdGVyLXNldFRpbWVvdXQtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvc3RvcC1wcm9maWxpbmctYWZ0
ZXItc2V0VGltZW91dC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4NjgwOCkKKysrIExheW91dFRl
c3RzL2Zhc3QvcHJvZmlsZXIvc3RvcC1wcm9maWxpbmctYWZ0ZXItc2V0VGltZW91dC1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsMTAgKzQsMTAgQEAgVG8gcnVuIHRoaXMgdGVzdCBt
YW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiBTdG9wIHByb2ZpbGluZyBm
cm9tIGEgdGltZW91dAogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIG9ubG9hZCBz
dG9wLXByb2ZpbGluZy1hZnRlci1zZXRUaW1lb3V0Lmh0bWwgKGxpbmUgMjE6NTIpCi0gICAgICBz
dGFydFRlc3Qgc3RvcC1wcm9maWxpbmctYWZ0ZXItc2V0VGltZW91dC5odG1sIChsaW5lIDEzOjEp
CisgICBvbmxvYWQgc3RvcC1wcm9maWxpbmctYWZ0ZXItc2V0VGltZW91dC5odG1sIChsaW5lIDIx
OjQ0KQorICAgICAgc3RhcnRUZXN0IHN0b3AtcHJvZmlsaW5nLWFmdGVyLXNldFRpbWVvdXQuaHRt
bCAobGluZSAxMjoxOSkKICAgICAgICAgIHNldFRpbWVvdXQgKG5vIGZpbGUpIChsaW5lIDA6MCkK
ICAgIChwcm9ncmFtKSBzdG9wLXByb2ZpbGluZy1hZnRlci1zZXRUaW1lb3V0Lmh0bWwgKGxpbmUg
MToxKQotICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAx
OjIwKQorICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAx
OjE3KQogCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvc3RvcC10aGVuLWZ1bmN0
aW9uLWNhbGwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJv
ZmlsZXIvc3RvcC10aGVuLWZ1bmN0aW9uLWNhbGwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY4
MDgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3N0b3AtdGhlbi1mdW5jdGlvbi1jYWxs
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNSw2ICs1LDYgQEAgVG8gcnVuIHRoaXMg
dGVzdCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogUHJvZmlsZSB0aXRsZTogVGVzdAogVGhyZWFk
XzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgIChwcm9ncmFtKSAobm8gZmlsZSkgKGxpbmUgMTox
NikKLSAgICAgIHRlc3Qgc3RvcC10aGVuLWZ1bmN0aW9uLWNhbGwuaHRtbCAobGluZSAxMToyMCkK
KyAgICAgIHRlc3Qgc3RvcC10aGVuLWZ1bmN0aW9uLWNhbGwuaHRtbCAobGluZSAxMToxNCkKIAog
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3R3by1leGVjdXRpb24tY29udGV4dHMt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvdHdv
LWV4ZWN1dGlvbi1jb250ZXh0cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4NjgwOCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvdHdvLWV4ZWN1dGlvbi1jb250ZXh0cy1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsOCArNCw4IEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFs
bHksIGxvYWQgaXQgaW4gdGgKIAogUHJvZmlsZSB0aXRsZTogVHdvIEV4ZWN1dGlvbiBDb250ZXh0
cwogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCB0d28tZXhlY3V0
aW9uLWNvbnRleHRzLmh0bWwgKGxpbmUgMTE6MSkKLSAgICAgIGludGVybWVkaWFyeUZ1bmN0aW9u
IHR3by1leGVjdXRpb24tY29udGV4dHMuaHRtbCAobGluZSAxODoxKQotICAgICAgICAgdGVzdEVu
ZCB0d28tZXhlY3V0aW9uLWNvbnRleHRzLmh0bWwgKGxpbmUgMzM6MjApCisgICBzdGFydFRlc3Qg
dHdvLWV4ZWN1dGlvbi1jb250ZXh0cy5odG1sIChsaW5lIDEwOjE5KQorICAgICAgaW50ZXJtZWRp
YXJ5RnVuY3Rpb24gdHdvLWV4ZWN1dGlvbi1jb250ZXh0cy5odG1sIChsaW5lIDE3OjMwKQorICAg
ICAgICAgdGVzdEVuZCB0d28tZXhlY3V0aW9uLWNvbnRleHRzLmh0bWwgKGxpbmUgMzM6MTcpCiAK
IApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci91c2VyLWRlZmluZWQtZnVuY3Rpb24t
Y2FsbHMtYnVpbHQtaW4tZnVuY3Rpb25zLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3VzZXItZGVmaW5lZC1mdW5jdGlvbi1jYWxscy1idWlsdC1p
bi1mdW5jdGlvbnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY4MDgpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L3Byb2ZpbGVyL3VzZXItZGVmaW5lZC1mdW5jdGlvbi1jYWxscy1idWlsdC1pbi1mdW5j
dGlvbnMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02LDExICs2LDExIEBAIFRoaXMg
aXMgaW5zZXJ0ZWQgVGV4dAogCiBQcm9maWxlIHRpdGxlOiBVc2VyIGRlZmluZWQgZnVuY3Rpb24g
Y2FsbGVzIGJ1aWx0LWluIGZ1bmN0aW9ucwogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkK
LSAgIHN0YXJ0VGVzdCB1c2VyLWRlZmluZWQtZnVuY3Rpb24tY2FsbHMtYnVpbHQtaW4tZnVuY3Rp
b25zLmh0bWwgKGxpbmUgMTE6MSkKKyAgIHN0YXJ0VGVzdCB1c2VyLWRlZmluZWQtZnVuY3Rpb24t
Y2FsbHMtYnVpbHQtaW4tZnVuY3Rpb25zLmh0bWwgKGxpbmUgMTA6MTkpCiAgICAgICBjcmVhdGVF
bGVtZW50IChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmls
ZSkgKGxpbmUgMDowKQogICAgICAgYXBwZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAg
ICAgIGdldEVsZW1lbnRCeUlkIChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICBlbmRUZXN0IHBy
b2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MjApCisgICAgICBlbmRUZXN0IHBy
b2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MTcpCiAKIApJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9wcm9maWxlci93aW5kb3ctZG90LWV2YWwtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvd2luZG93LWRvdC1ldmFsLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMTg2ODA4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci93aW5k
b3ctZG90LWV2YWwtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDEzICs0LDEzIEBA
IFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxvYWQgaXQgaW4gdGgKIAogUHJvZmlsZSB0aXRs
ZTogQ2FsbCB3aW5kb3cuZXZhbCgpCiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAg
c3RhcnRUZXN0IHdpbmRvdy1kb3QtZXZhbC5odG1sIChsaW5lIDExOjEpCi0gICAgICBldmFsRnVu
Y3Rpb24gKG5vIGZpbGUpIChsaW5lIDE6MjUpCi0gICAgICAgICBpbnNlcnROZXdUZXh0IHByb2Zp
bGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjI2KQorICAgc3RhcnRUZXN0IHdpbmRv
dy1kb3QtZXZhbC5odG1sIChsaW5lIDEwOjE5KQorICAgICAgZXZhbEZ1bmN0aW9uIChubyBmaWxl
KSAobGluZSAxOjIyKQorICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJl
c291cmNlcy5qcyAobGluZSAxNzoyMykKICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQgKG5vIGZp
bGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGlu
ZSAwOjApCiAgICAgICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAg
ICAgICAgICAgZ2V0RWxlbWVudEJ5SWQgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAgIGVuZFRl
c3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAgICAgIGVuZFRl
c3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToxNykKIAogCkluZGV4OiBM
YXlvdXRUZXN0cy9qcy9kb20vc2NyaXB0LXN0YXJ0LWVuZC1sb2NhdGlvbnMtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL2RvbS9zY3JpcHQtc3RhcnQtZW5kLWxvY2F0
aW9ucy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4NjgwOCkKKysrIExheW91dFRlc3RzL2pzL2Rv
bS9zY3JpcHQtc3RhcnQtZW5kLWxvY2F0aW9ucy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTUsMjczICs1LDI3MyBAQCBwcm9ncmFtIHsgMjM6OSAtIDIzOjUwIH0KIHByb2dyYW0geyAy
Mzo2OCAtIDIzOjEwOSB9CiBwcm9ncmFtIHsgMjU6OSAtIDI2OjEgfQogcHJvZ3JhbSB7IDI3OjEz
IC0gMjg6MSB9Ci1mdW5jdGlvbiAiaGYxIiB7IDMwOjI0IC0gMzA6MzggfQotZnVuY3Rpb24gImhm
MiIgeyAzMToyOCAtIDMxOjQyIH0KLWZ1bmN0aW9uICJoZjMiIHsgMzI6MzIgLSAzMjo0NiB9Ci1m
dW5jdGlvbiAiaGY0IiB7IDM0OjI0IC0gMzY6OSB9Ci1mdW5jdGlvbiAiaGY1IiB7IDM3OjI4IC0g
Mzk6OSB9Ci1mdW5jdGlvbiAiaGY2IiB7IDQwOjMyIC0gNDI6OSB9Ci1mdW5jdGlvbiAiaGY3IiB7
IDQ1OjE2IC0gNDc6NSB9Ci1mdW5jdGlvbiAiaGY4IiB7IDQ5OjM1IC0gNDk6NDUgfQotZnVuY3Rp
b24gImhmOSIgeyA0OTo5NyAtIDQ5OjEwNyB9CitmdW5jdGlvbiAiaGYxIiB7IDMwOjIxIC0gMzA6
MzggfQorZnVuY3Rpb24gImhmMiIgeyAzMToyNSAtIDMxOjQyIH0KK2Z1bmN0aW9uICJoZjMiIHsg
MzI6MjkgLSAzMjo0NiB9CitmdW5jdGlvbiAiaGY0IiB7IDM0OjIxIC0gMzY6OSB9CitmdW5jdGlv
biAiaGY1IiB7IDM3OjI1IC0gMzk6OSB9CitmdW5jdGlvbiAiaGY2IiB7IDQwOjI5IC0gNDI6OSB9
CitmdW5jdGlvbiAiaGY3IiB7IDQ1OjEzIC0gNDc6NSB9CitmdW5jdGlvbiAiaGY4IiB7IDQ5OjMy
IC0gNDk6NDUgfQorZnVuY3Rpb24gImhmOSIgeyA0OTo5NCAtIDQ5OjEwNyB9CiAKIHByb2dyYW0g
eyAxOjEgLSA0NzQ6MSB9CiAKICAgT24gZmlyc3QgbGluZToKLWZ1bmN0aW9uICJmMCIgeyAxOjEx
NSAtIDE6MjY2IH0KLWZ1bmN0aW9uICJmMGEiIHsgMToxNDIgLSAxOjI1NyB9Ci1mdW5jdGlvbiAi
ZjBiIiB7IDE6MTcwIC0gMToyNDggfQotZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gIngw
IiB7IDE6Mjk4IC0gMTo0NzYgfQotZnVuY3Rpb24gIngwYSIgeyAxOjMzMCAtIDE6NDY2IH0KLWZ1
bmN0aW9uICJ4MGIiIHsgMTozNjQgLSAxOjQ1NiB9CitmdW5jdGlvbiAiZjAiIHsgMToxMTIgLSAx
OjI2NiB9CitmdW5jdGlvbiAiZjBhIiB7IDE6MTM5IC0gMToyNTcgfQorZnVuY3Rpb24gImYwYiIg
eyAxOjE2NyAtIDE6MjQ4IH0KK2V2YWwgeyAxOjEgLSAxOjU2IH0KK2Z1bmN0aW9uICJ4MCIgeyAx
OjI5MiAtIDE6NDc2IH0KK2Z1bmN0aW9uICJ4MGEiIHsgMTozMjcgLSAxOjQ2NiB9CitmdW5jdGlv
biAieDBiIiB7IDE6MzYxIC0gMTo0NTYgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQogCiAgIEZ1bmN0
aW9ucyBEZWNsYXJhdGlvbnMgaW4gYSBmdW5jdGlvbjoKLWZ1bmN0aW9uICJmMSIgeyA5OjIyIC0g
OToxMTMgfQorZnVuY3Rpb24gImYxIiB7IDk6MTYgLSA5OjExMyB9CiBldmFsIHsgMToxIC0gMTo1
NiB9Ci1mdW5jdGlvbiAiZjIiIHsgMTI6MjIgLSAxNjo1IH0KLWZ1bmN0aW9uICJmMmEiIHsgMTQ6
MjQgLSAxNDoxMTYgfQorZnVuY3Rpb24gImYyIiB7IDEyOjE2IC0gMTY6NSB9CitmdW5jdGlvbiAi
ZjJhIiB7IDE0OjIxIC0gMTQ6MTE2IH0KIGV2YWwgeyAxOjEgLSAxOjU2IH0KLWZ1bmN0aW9uICJm
MyIgeyAxOToyMiAtIDMxOjUgfQotZnVuY3Rpb24gImYzYSIgeyAyMToyNCAtIDI5OjkgfQotZnVu
Y3Rpb24gImYzYiIgeyAyMzoyOCAtIDI3OjEzIH0KLWV2YWwgeyAxOjEgLSAxOjU2IH0KLWZ1bmN0
aW9uICJmNCIgeyAzNDoyMiAtIDM0OjcxIH0KLWZ1bmN0aW9uICJmNGEiIHsgMzQ6NDkgLSAzNDo1
MCB9Ci1mdW5jdGlvbiAiZjUiIHsgMzY6MjIgLSAzNjoxNTEgfQotZnVuY3Rpb24gImY1YSIgeyAz
Njo0OSAtIDM2OjE0MSB9Ci1ldmFsIHsgMToxIC0gMTo1NiB9Ci1mdW5jdGlvbiAiZjYiIHsgMzg6
MjIgLSAzODoxODkgfQotZnVuY3Rpb24gImY2YSIgeyAzODo0OSAtIDM4OjE3OSB9Ci1mdW5jdGlv
biAiZjZiIiB7IDM4Ojc3IC0gMzg6MTY5IH0KK2Z1bmN0aW9uICJmMyIgeyAxOToxNiAtIDMxOjUg
fQorZnVuY3Rpb24gImYzYSIgeyAyMToyMSAtIDI5OjkgfQorZnVuY3Rpb24gImYzYiIgeyAyMzoy
NSAtIDI3OjEzIH0KK2V2YWwgeyAxOjEgLSAxOjU2IH0KK2Z1bmN0aW9uICJmNCIgeyAzNDoxNiAt
IDM0OjcxIH0KK2Z1bmN0aW9uICJmNGEiIHsgMzQ6NDYgLSAzNDo1MCB9CitmdW5jdGlvbiAiZjUi
IHsgMzY6MTYgLSAzNjoxNTEgfQorZnVuY3Rpb24gImY1YSIgeyAzNjo0NiAtIDM2OjE0MSB9Citl
dmFsIHsgMToxIC0gMTo1NiB9CitmdW5jdGlvbiAiZjYiIHsgMzg6MTYgLSAzODoxODkgfQorZnVu
Y3Rpb24gImY2YSIgeyAzODo0NiAtIDM4OjE3OSB9CitmdW5jdGlvbiAiZjZiIiB7IDM4Ojc0IC0g
Mzg6MTY5IH0KIGV2YWwgeyAxOjEgLSAxOjU2IH0KIAogICBJbmRlbnRlZCBGdW5jdGlvbnMgRGVj
bGFyYXRpb25zIGluIGEgZnVuY3Rpb246Ci1mdW5jdGlvbiAiZmkxIiB7IDQzOjI3IC0gNDM6MTE5
IH0KK2Z1bmN0aW9uICJmaTEiIHsgNDM6MjEgLSA0MzoxMTkgfQogZXZhbCB7IDE6MSAtIDE6NTYg
fQotZnVuY3Rpb24gImZpMiIgeyA0NjoyNyAtIDUwOjkgfQotZnVuY3Rpb24gImZpMmEiIHsgNDg6
MjkgLSA0ODoxMjIgfQorZnVuY3Rpb24gImZpMiIgeyA0NjoyMSAtIDUwOjkgfQorZnVuY3Rpb24g
ImZpMmEiIHsgNDg6MjYgLSA0ODoxMjIgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24g
ImZpMyIgeyA1MzoyNyAtIDY1OjkgfQotZnVuY3Rpb24gImZpM2EiIHsgNTU6MjkgLSA2MzoxMyB9
Ci1mdW5jdGlvbiAiZmkzYiIgeyA1NzozMyAtIDYxOjE3IH0KLWV2YWwgeyAxOjEgLSAxOjU2IH0K
LWZ1bmN0aW9uICJmaTQiIHsgNjg6MjcgLSA2ODo4MCB9Ci1mdW5jdGlvbiAiZmk0YSIgeyA2ODo1
NiAtIDY4OjU3IH0KLWZ1bmN0aW9uICJmaTUiIHsgNzA6MjcgLSA3MDoxNjAgfQotZnVuY3Rpb24g
ImZpNWEiIHsgNzA6NTYgLSA3MDoxNDkgfQotZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24g
ImZpNiIgeyA3MjoyNyAtIDcyOjIwMSB9Ci1mdW5jdGlvbiAiZmk2YSIgeyA3Mjo1NiAtIDcyOjE5
MCB9Ci1mdW5jdGlvbiAiZmk2YiIgeyA3Mjo4NiAtIDcyOjE3OSB9CitmdW5jdGlvbiAiZmkzIiB7
IDUzOjIxIC0gNjU6OSB9CitmdW5jdGlvbiAiZmkzYSIgeyA1NToyNiAtIDYzOjEzIH0KK2Z1bmN0
aW9uICJmaTNiIiB7IDU3OjMwIC0gNjE6MTcgfQorZXZhbCB7IDE6MSAtIDE6NTYgfQorZnVuY3Rp
b24gImZpNCIgeyA2ODoyMSAtIDY4OjgwIH0KK2Z1bmN0aW9uICJmaTRhIiB7IDY4OjUzIC0gNjg6
NTcgfQorZnVuY3Rpb24gImZpNSIgeyA3MDoyMSAtIDcwOjE2MCB9CitmdW5jdGlvbiAiZmk1YSIg
eyA3MDo1MyAtIDcwOjE0OSB9CitldmFsIHsgMToxIC0gMTo1NiB9CitmdW5jdGlvbiAiZmk2IiB7
IDcyOjIxIC0gNzI6MjAxIH0KK2Z1bmN0aW9uICJmaTZhIiB7IDcyOjUzIC0gNzI6MTkwIH0KK2Z1
bmN0aW9uICJmaTZiIiB7IDcyOjgzIC0gNzI6MTc5IH0KIGV2YWwgeyAxOjEgLSAxOjU2IH0KIAog
ICBGdW5jdGlvbnMgRXhwcmVzc2lvbnMgaW4gYSBmdW5jdGlvbjoKLWZ1bmN0aW9uICJ4MSIgeyA3
NzoyOCAtIDc3OjExOSB9CitmdW5jdGlvbiAieDEiIHsgNzc6MjIgLSA3NzoxMTkgfQogZXZhbCB7
IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gIngyIiB7IDgwOjI4IC0gODQ6NSB9Ci1mdW5jdGlvbiAi
eDJhIiB7IDgyOjMwIC0gODI6MTIyIH0KK2Z1bmN0aW9uICJ4MiIgeyA4MDoyMiAtIDg0OjUgfQor
ZnVuY3Rpb24gIngyYSIgeyA4MjoyNyAtIDgyOjEyMiB9CiBldmFsIHsgMToxIC0gMTo1NiB9Ci1m
dW5jdGlvbiAieDMiIHsgODc6MjggLSA5OTo1IH0KLWZ1bmN0aW9uICJ4M2EiIHsgODk6MzAgLSA5
Nzo5IH0KLWZ1bmN0aW9uICJ4M2IiIHsgOTE6MzQgLSA5NToxMyB9Ci1ldmFsIHsgMToxIC0gMTo1
NiB9Ci1mdW5jdGlvbiAieDQiIHsgMTAyOjI4IC0gMTAyOjgzIH0KLWZ1bmN0aW9uICJ4NGEiIHsg
MTAyOjYxIC0gMTAyOjYyIH0KLWZ1bmN0aW9uICJ4NSIgeyAxMDQ6MjggLSAxMDQ6MTYzIH0KLWZ1
bmN0aW9uICJ4NWEiIHsgMTA0OjYxIC0gMTA0OjE1MyB9Ci1ldmFsIHsgMToxIC0gMTo1NiB9Ci1m
dW5jdGlvbiAieDYiIHsgMTA2OjI4IC0gMTA2OjIwNyB9Ci1mdW5jdGlvbiAieDZhIiB7IDEwNjo2
MSAtIDEwNjoxOTcgfQotZnVuY3Rpb24gIng2YiIgeyAxMDY6OTUgLSAxMDY6MTg3IH0KK2Z1bmN0
aW9uICJ4MyIgeyA4NzoyMiAtIDk5OjUgfQorZnVuY3Rpb24gIngzYSIgeyA4OToyNyAtIDk3Ojkg
fQorZnVuY3Rpb24gIngzYiIgeyA5MTozMSAtIDk1OjEzIH0KK2V2YWwgeyAxOjEgLSAxOjU2IH0K
K2Z1bmN0aW9uICJ4NCIgeyAxMDI6MjIgLSAxMDI6ODMgfQorZnVuY3Rpb24gIng0YSIgeyAxMDI6
NTggLSAxMDI6NjIgfQorZnVuY3Rpb24gIng1IiB7IDEwNDoyMiAtIDEwNDoxNjMgfQorZnVuY3Rp
b24gIng1YSIgeyAxMDQ6NTggLSAxMDQ6MTUzIH0KK2V2YWwgeyAxOjEgLSAxOjU2IH0KK2Z1bmN0
aW9uICJ4NiIgeyAxMDY6MjIgLSAxMDY6MjA3IH0KK2Z1bmN0aW9uICJ4NmEiIHsgMTA2OjU4IC0g
MTA2OjE5NyB9CitmdW5jdGlvbiAieDZiIiB7IDEwNjo5MiAtIDEwNjoxODcgfQogZXZhbCB7IDE6
MSAtIDE6NTYgfQogCiAgIEluZGVudGVkIEZ1bmN0aW9ucyBFeHByZXNzaW9ucyBpbiBhIGZ1bmN0
aW9uOgotZnVuY3Rpb24gInhpMSIgeyAxMTE6MzMgLSAxMTE6MTI1IH0KK2Z1bmN0aW9uICJ4aTEi
IHsgMTExOjI3IC0gMTExOjEyNSB9CiBldmFsIHsgMToxIC0gMTo1NiB9Ci1mdW5jdGlvbiAieGky
IiB7IDExNDozMyAtIDExODo5IH0KLWZ1bmN0aW9uICJ4aTJhIiB7IDExNjozNSAtIDExNjoxMjgg
fQorZnVuY3Rpb24gInhpMiIgeyAxMTQ6MjcgLSAxMTg6OSB9CitmdW5jdGlvbiAieGkyYSIgeyAx
MTY6MzIgLSAxMTY6MTI4IH0KIGV2YWwgeyAxOjEgLSAxOjU2IH0KLWZ1bmN0aW9uICJ4aTMiIHsg
MTIxOjMzIC0gMTMzOjkgfQotZnVuY3Rpb24gInhpM2EiIHsgMTIzOjM1IC0gMTMxOjEzIH0KLWZ1
bmN0aW9uICJ4aTNiIiB7IDEyNTozOSAtIDEyOToxNyB9Ci1ldmFsIHsgMToxIC0gMTo1NiB9Ci1m
dW5jdGlvbiAieGk0IiB7IDEzNjozMyAtIDEzNjo5MiB9Ci1mdW5jdGlvbiAieGk0YSIgeyAxMzY6
NjggLSAxMzY6NjkgfQotZnVuY3Rpb24gInhpNSIgeyAxMzg6MzMgLSAxMzg6MTcyIH0KLWZ1bmN0
aW9uICJ4aTVhIiB7IDEzODo2OCAtIDEzODoxNjEgfQotZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVu
Y3Rpb24gInhpNiIgeyAxNDA6MzMgLSAxNDA6MjE5IH0KLWZ1bmN0aW9uICJ4aTZhIiB7IDE0MDo2
OCAtIDE0MDoyMDggfQotZnVuY3Rpb24gInhpNmIiIHsgMTQwOjEwNCAtIDE0MDoxOTcgfQorZnVu
Y3Rpb24gInhpMyIgeyAxMjE6MjcgLSAxMzM6OSB9CitmdW5jdGlvbiAieGkzYSIgeyAxMjM6MzIg
LSAxMzE6MTMgfQorZnVuY3Rpb24gInhpM2IiIHsgMTI1OjM2IC0gMTI5OjE3IH0KK2V2YWwgeyAx
OjEgLSAxOjU2IH0KK2Z1bmN0aW9uICJ4aTQiIHsgMTM2OjI3IC0gMTM2OjkyIH0KK2Z1bmN0aW9u
ICJ4aTRhIiB7IDEzNjo2NSAtIDEzNjo2OSB9CitmdW5jdGlvbiAieGk1IiB7IDEzODoyNyAtIDEz
ODoxNzIgfQorZnVuY3Rpb24gInhpNWEiIHsgMTM4OjY1IC0gMTM4OjE2MSB9CitldmFsIHsgMTox
IC0gMTo1NiB9CitmdW5jdGlvbiAieGk2IiB7IDE0MDoyNyAtIDE0MDoyMTkgfQorZnVuY3Rpb24g
InhpNmEiIHsgMTQwOjY1IC0gMTQwOjIwOCB9CitmdW5jdGlvbiAieGk2YiIgeyAxNDA6MTAxIC0g
MTQwOjE5NyB9CiBldmFsIHsgMToxIC0gMTo1NiB9CiAKICAgQW5vbnltb3VzIEZ1bmN0aW9uIERl
Y2xhcmF0aW9uIGluIGEgZnVuY3Rpb246Ci1mdW5jdGlvbiAiIiB7IDE0Njo1OCAtIDE1MTo1IH0K
K2Z1bmN0aW9uICIiIHsgMTQ2OjUyIC0gMTUxOjUgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQogCiAg
IEdsb2JhbCBldmFsOgogZXZhbCB7IDE6MSAtIDE6NTYgfQogCiAgIEdsb2JhbCBGdW5jdGlvbnMg
RGVjbGFyYXRpb25zOgotZnVuY3Rpb24gImdmMSIgeyAxNjE6MTkgLSAxNjE6MTExIH0KK2Z1bmN0
aW9uICJnZjEiIHsgMTYxOjEzIC0gMTYxOjExMSB9CiBldmFsIHsgMToxIC0gMTo1NiB9Ci1mdW5j
dGlvbiAiZ2YyIiB7IDE2NDoxOSAtIDE2ODoxIH0KLWZ1bmN0aW9uICJnZjJhIiB7IDE2NjoyMSAt
IDE2NjoxMTQgfQorZnVuY3Rpb24gImdmMiIgeyAxNjQ6MTMgLSAxNjg6MSB9CitmdW5jdGlvbiAi
Z2YyYSIgeyAxNjY6MTggLSAxNjY6MTE0IH0KIGV2YWwgeyAxOjEgLSAxOjU2IH0KLWZ1bmN0aW9u
ICJnZjMiIHsgMTcxOjE5IC0gMTgzOjEgfQotZnVuY3Rpb24gImdmM2EiIHsgMTczOjIxIC0gMTgx
OjUgfQotZnVuY3Rpb24gImdmM2IiIHsgMTc1OjI1IC0gMTc5OjkgfQotZXZhbCB7IDE6MSAtIDE6
NTYgfQotZnVuY3Rpb24gImdmNCIgeyAxODY6MTkgLSAxODY6NzIgfQotZnVuY3Rpb24gImdmNGEi
IHsgMTg2OjQ4IC0gMTg2OjQ5IH0KLWZ1bmN0aW9uICJnZjUiIHsgMTg4OjE5IC0gMTg4OjE1MiB9
Ci1mdW5jdGlvbiAiZ2Y1YSIgeyAxODg6NDggLSAxODg6MTQxIH0KLWV2YWwgeyAxOjEgLSAxOjU2
IH0KLWZ1bmN0aW9uICJnZjYiIHsgMTkwOjE5IC0gMTkwOjE5MyB9Ci1mdW5jdGlvbiAiZ2Y2YSIg
eyAxOTA6NDggLSAxOTA6MTgyIH0KLWZ1bmN0aW9uICJnZjZiIiB7IDE5MDo3OCAtIDE5MDoxNzEg
fQorZnVuY3Rpb24gImdmMyIgeyAxNzE6MTMgLSAxODM6MSB9CitmdW5jdGlvbiAiZ2YzYSIgeyAx
NzM6MTggLSAxODE6NSB9CitmdW5jdGlvbiAiZ2YzYiIgeyAxNzU6MjIgLSAxNzk6OSB9CitldmFs
IHsgMToxIC0gMTo1NiB9CitmdW5jdGlvbiAiZ2Y0IiB7IDE4NjoxMyAtIDE4Njo3MiB9CitmdW5j
dGlvbiAiZ2Y0YSIgeyAxODY6NDUgLSAxODY6NDkgfQorZnVuY3Rpb24gImdmNSIgeyAxODg6MTMg
LSAxODg6MTUyIH0KK2Z1bmN0aW9uICJnZjVhIiB7IDE4ODo0NSAtIDE4ODoxNDEgfQorZXZhbCB7
IDE6MSAtIDE6NTYgfQorZnVuY3Rpb24gImdmNiIgeyAxOTA6MTMgLSAxOTA6MTkzIH0KK2Z1bmN0
aW9uICJnZjZhIiB7IDE5MDo0NSAtIDE5MDoxODIgfQorZnVuY3Rpb24gImdmNmIiIHsgMTkwOjc1
IC0gMTkwOjE3MSB9CiBldmFsIHsgMToxIC0gMTo1NiB9CiAKICAgSW5kZW50ZWQgR2xvYmFsIEZ1
bmN0aW9ucyBEZWNsYXJhdGlvbnM6Ci1mdW5jdGlvbiAiZ2ZpMSIgeyAxOTU6MjQgLSAxOTU6MTE3
IH0KK2Z1bmN0aW9uICJnZmkxIiB7IDE5NToxOCAtIDE5NToxMTcgfQogZXZhbCB7IDE6MSAtIDE6
NTYgfQotZnVuY3Rpb24gImdmaTIiIHsgMTk4OjI0IC0gMjAyOjUgfQotZnVuY3Rpb24gImdmaTJh
IiB7IDIwMDoyNiAtIDIwMDoxMjAgfQorZnVuY3Rpb24gImdmaTIiIHsgMTk4OjE4IC0gMjAyOjUg
fQorZnVuY3Rpb24gImdmaTJhIiB7IDIwMDoyMyAtIDIwMDoxMjAgfQogZXZhbCB7IDE6MSAtIDE6
NTYgfQotZnVuY3Rpb24gImdmaTMiIHsgMjA1OjI0IC0gMjE3OjUgfQotZnVuY3Rpb24gImdmaTNh
IiB7IDIwNzoyNiAtIDIxNTo5IH0KLWZ1bmN0aW9uICJnZmkzYiIgeyAyMDk6MzAgLSAyMTM6MTMg
fQotZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gImdmaTQiIHsgMjIwOjI0IC0gMjIwOjgx
IH0KLWZ1bmN0aW9uICJnZmk0YSIgeyAyMjA6NTUgLSAyMjA6NTYgfQotZnVuY3Rpb24gImdmaTUi
IHsgMjIyOjI0IC0gMjIyOjE2MSB9Ci1mdW5jdGlvbiAiZ2ZpNWEiIHsgMjIyOjU1IC0gMjIyOjE0
OSB9Ci1ldmFsIHsgMToxIC0gMTo1NiB9Ci1mdW5jdGlvbiAiZ2ZpNiIgeyAyMjQ6MjQgLSAyMjQ6
MjA1IH0KLWZ1bmN0aW9uICJnZmk2YSIgeyAyMjQ6NTUgLSAyMjQ6MTkzIH0KLWZ1bmN0aW9uICJn
Zmk2YiIgeyAyMjQ6ODcgLSAyMjQ6MTgxIH0KK2Z1bmN0aW9uICJnZmkzIiB7IDIwNToxOCAtIDIx
Nzo1IH0KK2Z1bmN0aW9uICJnZmkzYSIgeyAyMDc6MjMgLSAyMTU6OSB9CitmdW5jdGlvbiAiZ2Zp
M2IiIHsgMjA5OjI3IC0gMjEzOjEzIH0KK2V2YWwgeyAxOjEgLSAxOjU2IH0KK2Z1bmN0aW9uICJn
Zmk0IiB7IDIyMDoxOCAtIDIyMDo4MSB9CitmdW5jdGlvbiAiZ2ZpNGEiIHsgMjIwOjUyIC0gMjIw
OjU2IH0KK2Z1bmN0aW9uICJnZmk1IiB7IDIyMjoxOCAtIDIyMjoxNjEgfQorZnVuY3Rpb24gImdm
aTVhIiB7IDIyMjo1MiAtIDIyMjoxNDkgfQorZXZhbCB7IDE6MSAtIDE6NTYgfQorZnVuY3Rpb24g
ImdmaTYiIHsgMjI0OjE4IC0gMjI0OjIwNSB9CitmdW5jdGlvbiAiZ2ZpNmEiIHsgMjI0OjUyIC0g
MjI0OjE5MyB9CitmdW5jdGlvbiAiZ2ZpNmIiIHsgMjI0Ojg0IC0gMjI0OjE4MSB9CiBldmFsIHsg
MToxIC0gMTo1NiB9CiAKICAgR2xvYmFsIEZ1bmN0aW9ucyBFeHByZXNzaW9uczoKLWZ1bmN0aW9u
ICJneDEiIHsgMjI5OjI1IC0gMjI5OjExNyB9CitmdW5jdGlvbiAiZ3gxIiB7IDIyOToxOSAtIDIy
OToxMTcgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gImd4MiIgeyAyMzI6MjUgLSAy
MzY6MSB9Ci1mdW5jdGlvbiAiZ3gyYSIgeyAyMzQ6MjcgLSAyMzQ6MTIwIH0KK2Z1bmN0aW9uICJn
eDIiIHsgMjMyOjE5IC0gMjM2OjEgfQorZnVuY3Rpb24gImd4MmEiIHsgMjM0OjI0IC0gMjM0OjEy
MCB9CiBldmFsIHsgMToxIC0gMTo1NiB9Ci1mdW5jdGlvbiAiZ3gzIiB7IDIzOToyNSAtIDI1MTox
IH0KLWZ1bmN0aW9uICJneDNhIiB7IDI0MToyNyAtIDI0OTo1IH0KLWZ1bmN0aW9uICJneDNiIiB7
IDI0MzozMSAtIDI0Nzo5IH0KLWV2YWwgeyAxOjEgLSAxOjU2IH0KLWZ1bmN0aW9uICJneDQiIHsg
MjU0OjI1IC0gMjU0Ojg0IH0KLWZ1bmN0aW9uICJneDRhIiB7IDI1NDo2MCAtIDI1NDo2MSB9Ci1m
dW5jdGlvbiAiZ3g1IiB7IDI1NjoyNSAtIDI1NjoxNjQgfQotZnVuY3Rpb24gImd4NWEiIHsgMjU2
OjYwIC0gMjU2OjE1MyB9Ci1ldmFsIHsgMToxIC0gMTo1NiB9Ci1mdW5jdGlvbiAiZ3g2IiB7IDI1
ODoyNSAtIDI1ODoyMTEgfQotZnVuY3Rpb24gImd4NmEiIHsgMjU4OjYwIC0gMjU4OjIwMCB9Ci1m
dW5jdGlvbiAiZ3g2YiIgeyAyNTg6OTYgLSAyNTg6MTg5IH0KK2Z1bmN0aW9uICJneDMiIHsgMjM5
OjE5IC0gMjUxOjEgfQorZnVuY3Rpb24gImd4M2EiIHsgMjQxOjI0IC0gMjQ5OjUgfQorZnVuY3Rp
b24gImd4M2IiIHsgMjQzOjI4IC0gMjQ3OjkgfQorZXZhbCB7IDE6MSAtIDE6NTYgfQorZnVuY3Rp
b24gImd4NCIgeyAyNTQ6MTkgLSAyNTQ6ODQgfQorZnVuY3Rpb24gImd4NGEiIHsgMjU0OjU3IC0g
MjU0OjYxIH0KK2Z1bmN0aW9uICJneDUiIHsgMjU2OjE5IC0gMjU2OjE2NCB9CitmdW5jdGlvbiAi
Z3g1YSIgeyAyNTY6NTcgLSAyNTY6MTUzIH0KK2V2YWwgeyAxOjEgLSAxOjU2IH0KK2Z1bmN0aW9u
ICJneDYiIHsgMjU4OjE5IC0gMjU4OjIxMSB9CitmdW5jdGlvbiAiZ3g2YSIgeyAyNTg6NTcgLSAy
NTg6MjAwIH0KK2Z1bmN0aW9uICJneDZiIiB7IDI1ODo5MyAtIDI1ODoxODkgfQogZXZhbCB7IDE6
MSAtIDE6NTYgfQogCiAgIEluZGVudGVkIEZ1bmN0aW9ucyBEZWNsYXJhdGlvbnM6Ci1mdW5jdGlv
biAiZ3hpMSIgeyAyNjM6MzAgLSAyNjM6MTIzIH0KK2Z1bmN0aW9uICJneGkxIiB7IDI2MzoyNCAt
IDI2MzoxMjMgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gImd4aTIiIHsgMjY2OjMw
IC0gMjcwOjUgfQotZnVuY3Rpb24gImd4aTJhIiB7IDI2ODozMiAtIDI2ODoxMjYgfQorZnVuY3Rp
b24gImd4aTIiIHsgMjY2OjI0IC0gMjcwOjUgfQorZnVuY3Rpb24gImd4aTJhIiB7IDI2ODoyOSAt
IDI2ODoxMjYgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gImd4aTMiIHsgMjczOjMw
IC0gMjg1OjUgfQotZnVuY3Rpb24gImd4aTNhIiB7IDI3NTozMiAtIDI4Mzo5IH0KLWZ1bmN0aW9u
ICJneGkzYiIgeyAyNzc6MzYgLSAyODE6MTMgfQotZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rp
b24gImd4aTQiIHsgMjg4OjMwIC0gMjg4OjkzIH0KLWZ1bmN0aW9uICJneGk0YSIgeyAyODg6Njcg
LSAyODg6NjggfQotZnVuY3Rpb24gImd4aTUiIHsgMjkwOjMwIC0gMjkwOjE3MyB9Ci1mdW5jdGlv
biAiZ3hpNWEiIHsgMjkwOjY3IC0gMjkwOjE2MSB9Ci1ldmFsIHsgMToxIC0gMTo1NiB9Ci1mdW5j
dGlvbiAiZ3hpNiIgeyAyOTI6MzAgLSAyOTI6MjIzIH0KLWZ1bmN0aW9uICJneGk2YSIgeyAyOTI6
NjcgLSAyOTI6MjExIH0KLWZ1bmN0aW9uICJneGk2YiIgeyAyOTI6MTA1IC0gMjkyOjE5OSB9Citm
dW5jdGlvbiAiZ3hpMyIgeyAyNzM6MjQgLSAyODU6NSB9CitmdW5jdGlvbiAiZ3hpM2EiIHsgMjc1
OjI5IC0gMjgzOjkgfQorZnVuY3Rpb24gImd4aTNiIiB7IDI3NzozMyAtIDI4MToxMyB9CitldmFs
IHsgMToxIC0gMTo1NiB9CitmdW5jdGlvbiAiZ3hpNCIgeyAyODg6MjQgLSAyODg6OTMgfQorZnVu
Y3Rpb24gImd4aTRhIiB7IDI4ODo2NCAtIDI4ODo2OCB9CitmdW5jdGlvbiAiZ3hpNSIgeyAyOTA6
MjQgLSAyOTA6MTczIH0KK2Z1bmN0aW9uICJneGk1YSIgeyAyOTA6NjQgLSAyOTA6MTYxIH0KK2V2
YWwgeyAxOjEgLSAxOjU2IH0KK2Z1bmN0aW9uICJneGk2IiB7IDI5MjoyNCAtIDI5MjoyMjMgfQor
ZnVuY3Rpb24gImd4aTZhIiB7IDI5Mjo2NCAtIDI5MjoyMTEgfQorZnVuY3Rpb24gImd4aTZiIiB7
IDI5MjoxMDIgLSAyOTI6MTk5IH0KIGV2YWwgeyAxOjEgLSAxOjU2IH0KIAogICBBbm9ueW1vdXMg
R2xvYmFsIEZ1bmN0aW9uIERlY2xhcmF0aW9uczoKLWZ1bmN0aW9uICIiIHsgMjk5OjU2IC0gMzA0
OjEgfQorZnVuY3Rpb24gIiIgeyAyOTk6NTAgLSAzMDQ6MSB9CiBldmFsIHsgMToxIC0gMTo1NiB9
CiAKICAgRnVuY3Rpb24gRGVjbGFyYXRpb25zIGluIGFuIGV2YWw6CiBldmFsIHsgMToxIC0gMTY6
NyB9Ci1mdW5jdGlvbiAiZWYxIiB7IDM6MjAgLSAxNDo1IH0KLWZ1bmN0aW9uICJlZjFhIiB7IDU6
MjUgLSAxMjo5IH0KLWZ1bmN0aW9uICJlZjFiIiB7IDc6MjkgLSAxMDoxMyB9CitmdW5jdGlvbiAi
ZWYxIiB7IDM6MTcgLSAxNDo1IH0KK2Z1bmN0aW9uICJlZjFhIiB7IDU6MjIgLSAxMjo5IH0KK2Z1
bmN0aW9uICJlZjFiIiB7IDc6MjYgLSAxMDoxMyB9CiBldmFsIHsgMToxIC0gMTo1NiB9CiBldmFs
IHsgMToxIC0gMToyMjUgfQotZnVuY3Rpb24gImVmMiIgeyAxOjU5IC0gMToyMTcgfQotZnVuY3Rp
b24gImVmMmEiIHsgMTo4OCAtIDE6MjA3IH0KLWZ1bmN0aW9uICJlZjJiIiB7IDE6MTE4IC0gMTox
OTcgfQorZnVuY3Rpb24gImVmMiIgeyAxOjU2IC0gMToyMTcgfQorZnVuY3Rpb24gImVmMmEiIHsg
MTo4NSAtIDE6MjA3IH0KK2Z1bmN0aW9uICJlZjJiIiB7IDE6MTE1IC0gMToxOTcgfQogZXZhbCB7
IDE6MSAtIDE6NTYgfQogZXZhbCB7IDE6MSAtIDE3OjggfQotZnVuY3Rpb24gImVmaTEiIHsgNDoy
MSAtIDE1OjUgfQotZnVuY3Rpb24gImVmaTFhIiB7IDY6MjYgLSAxMzo5IH0KLWZ1bmN0aW9uICJl
ZmkxYiIgeyA4OjMwIC0gMTE6MTMgfQorZnVuY3Rpb24gImVmaTEiIHsgNDoxOCAtIDE1OjUgfQor
ZnVuY3Rpb24gImVmaTFhIiB7IDY6MjMgLSAxMzo5IH0KK2Z1bmN0aW9uICJlZmkxYiIgeyA4OjI3
IC0gMTE6MTMgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQogZXZhbCB7IDE6MSAtIDE6MjM0IH0KLWZ1
bmN0aW9uICJlZmkyIiB7IDE6NjAgLSAxOjIyNSB9Ci1mdW5jdGlvbiAiZWZpMmEiIHsgMTo5MSAt
IDE6MjE0IH0KLWZ1bmN0aW9uICJlZmkyYiIgeyAxOjEyMyAtIDE6MjAzIH0KK2Z1bmN0aW9uICJl
ZmkyIiB7IDE6NTcgLSAxOjIyNSB9CitmdW5jdGlvbiAiZWZpMmEiIHsgMTo4OCAtIDE6MjE0IH0K
K2Z1bmN0aW9uICJlZmkyYiIgeyAxOjEyMCAtIDE6MjAzIH0KIGV2YWwgeyAxOjEgLSAxOjU2IH0K
IAogICBGdW5jdGlvbiBFeHByZXNzaW9ucyBpbiBhbiBldmFsOgogZXZhbCB7IDE6MSAtIDE2Ojcg
fQotZnVuY3Rpb24gImV4MSIgeyAzOjI2IC0gMTQ6NSB9Ci1mdW5jdGlvbiAiZXgxYSIgeyA1OjMx
IC0gMTI6OSB9Ci1mdW5jdGlvbiAiZXgxYiIgeyA3OjM1IC0gMTA6MTMgfQorZnVuY3Rpb24gImV4
MSIgeyAzOjIzIC0gMTQ6NSB9CitmdW5jdGlvbiAiZXgxYSIgeyA1OjI4IC0gMTI6OSB9CitmdW5j
dGlvbiAiZXgxYiIgeyA3OjMyIC0gMTA6MTMgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQogZXZhbCB7
IDE6MSAtIDE6MjQ2IH0KLWZ1bmN0aW9uICJleDIiIHsgMTo2NSAtIDE6MjM3IH0KLWZ1bmN0aW9u
ICJleDJhIiB7IDE6MTAwIC0gMToyMjYgfQotZnVuY3Rpb24gImV4MmIiIHsgMToxMzYgLSAxOjIx
NSB9CitmdW5jdGlvbiAiZXgyIiB7IDE6NjIgLSAxOjIzNyB9CitmdW5jdGlvbiAiZXgyYSIgeyAx
Ojk3IC0gMToyMjYgfQorZnVuY3Rpb24gImV4MmIiIHsgMToxMzMgLSAxOjIxNSB9CiBldmFsIHsg
MToxIC0gMTo1NiB9CiBldmFsIHsgMToxIC0gMTc6OCB9Ci1mdW5jdGlvbiAiZXhpMSIgeyA0OjI3
IC0gMTU6NSB9Ci1mdW5jdGlvbiAiZXhpMWEiIHsgNjozMiAtIDEzOjkgfQotZnVuY3Rpb24gImV4
aTFiIiB7IDg6MzYgLSAxMToxMyB9CitmdW5jdGlvbiAiZXhpMSIgeyA0OjI0IC0gMTU6NSB9Citm
dW5jdGlvbiAiZXhpMWEiIHsgNjoyOSAtIDEzOjkgfQorZnVuY3Rpb24gImV4aTFiIiB7IDg6MzMg
LSAxMToxMyB9CiBldmFsIHsgMToxIC0gMTo1NiB9CiBldmFsIHsgMToxIC0gMToyNTUgfQotZnVu
Y3Rpb24gImV4aTIiIHsgMTo2NiAtIDE6MjQ1IH0KLWZ1bmN0aW9uICJleGkyYSIgeyAxOjEwMyAt
IDE6MjMzIH0KLWZ1bmN0aW9uICJleGkyYiIgeyAxOjE0MSAtIDE6MjIxIH0KK2Z1bmN0aW9uICJl
eGkyIiB7IDE6NjMgLSAxOjI0NSB9CitmdW5jdGlvbiAiZXhpMmEiIHsgMToxMDAgLSAxOjIzMyB9
CitmdW5jdGlvbiAiZXhpMmIiIHsgMToxMzggLSAxOjIyMSB9CiBldmFsIHsgMToxIC0gMTo1NiB9
CiAKICAgbmV3IEZ1bmN0aW9uIE9iamVjdDoKLWZ1bmN0aW9uICJhbm9ueW1vdXMiIHsgMToyNyAt
IDI6MjI4IH0KLWZ1bmN0aW9uICJuZjFhIiB7IDI6NjAgLSAyOjIxOSB9Ci1mdW5jdGlvbiAibmYx
YiIgeyAyOjkwIC0gMjoyMDkgfQotZnVuY3Rpb24gIm5mMWMiIHsgMjoxMjAgLSAyOjE5OSB9Ci1l
dmFsIHsgMToxIC0gMTo1NiB9Ci1mdW5jdGlvbiAiYW5vbnltb3VzIiB7IDE6MjcgLSAxODo4IH0K
LWZ1bmN0aW9uICJuZjJhIiB7IDU6MjEgLSAxNjo1IH0KLWZ1bmN0aW9uICJuZjJiIiB7IDc6MjUg
LSAxNDo5IH0KLWZ1bmN0aW9uICJuZjJjIiB7IDk6MjkgLSAxMjoxMyB9Ci1ldmFsIHsgMToxIC0g
MTo1NiB9Ci1mdW5jdGlvbiAiYW5vbnltb3VzIiB7IDE6MjcgLSAyOjIyOCB9Ci1mdW5jdGlvbiAi
bmYxYSIgeyAyOjYwIC0gMjoyMTkgfQotZnVuY3Rpb24gIm5mMWIiIHsgMjo5MCAtIDI6MjA5IH0K
LWZ1bmN0aW9uICJuZjFjIiB7IDI6MTIwIC0gMjoxOTkgfQotZXZhbCB7IDE6MSAtIDE6NTYgfQot
ZnVuY3Rpb24gImFub255bW91cyIgeyAxOjI3IC0gMjoyMzcgfQotZnVuY3Rpb24gIm5maTFhIiB7
IDI6NjEgLSAyOjIyNyB9Ci1mdW5jdGlvbiAibmZpMWIiIHsgMjo5MyAtIDI6MjE2IH0KLWZ1bmN0
aW9uICJuZmkxYyIgeyAyOjEyNSAtIDI6MjA1IH0KLWV2YWwgeyAxOjEgLSAxOjU2IH0KLWZ1bmN0
aW9uICJhbm9ueW1vdXMiIHsgMToyNyAtIDE4OjggfQotZnVuY3Rpb24gIm5mMmEiIHsgNToyMSAt
IDE2OjUgfQotZnVuY3Rpb24gIm5mMmIiIHsgNzoyNSAtIDE0OjkgfQotZnVuY3Rpb24gIm5mMmMi
IHsgOToyOSAtIDEyOjEzIH0KLWV2YWwgeyAxOjEgLSAxOjU2IH0KLWZ1bmN0aW9uICJhbm9ueW1v
dXMiIHsgMToyNyAtIDE4OjkgfQotZnVuY3Rpb24gIm5maTJhIiB7IDU6MjIgLSAxNjo1IH0KLWZ1
bmN0aW9uICJuZmkyYiIgeyA3OjI2IC0gMTQ6OSB9Ci1mdW5jdGlvbiAibmZpMmMiIHsgOTozMCAt
IDEyOjEzIH0KK2Z1bmN0aW9uICJhbm9ueW1vdXMiIHsgMToyMCAtIDI6MjI4IH0KK2Z1bmN0aW9u
ICJuZjFhIiB7IDI6NTcgLSAyOjIxOSB9CitmdW5jdGlvbiAibmYxYiIgeyAyOjg3IC0gMjoyMDkg
fQorZnVuY3Rpb24gIm5mMWMiIHsgMjoxMTcgLSAyOjE5OSB9CitldmFsIHsgMToxIC0gMTo1NiB9
CitmdW5jdGlvbiAiYW5vbnltb3VzIiB7IDE6MjAgLSAxODo4IH0KK2Z1bmN0aW9uICJuZjJhIiB7
IDU6MTggLSAxNjo1IH0KK2Z1bmN0aW9uICJuZjJiIiB7IDc6MjIgLSAxNDo5IH0KK2Z1bmN0aW9u
ICJuZjJjIiB7IDk6MjYgLSAxMjoxMyB9CitldmFsIHsgMToxIC0gMTo1NiB9CitmdW5jdGlvbiAi
YW5vbnltb3VzIiB7IDE6MjAgLSAyOjIyOCB9CitmdW5jdGlvbiAibmYxYSIgeyAyOjU3IC0gMjoy
MTkgfQorZnVuY3Rpb24gIm5mMWIiIHsgMjo4NyAtIDI6MjA5IH0KK2Z1bmN0aW9uICJuZjFjIiB7
IDI6MTE3IC0gMjoxOTkgfQorZXZhbCB7IDE6MSAtIDE6NTYgfQorZnVuY3Rpb24gImFub255bW91
cyIgeyAxOjIwIC0gMjoyMzcgfQorZnVuY3Rpb24gIm5maTFhIiB7IDI6NTggLSAyOjIyNyB9Citm
dW5jdGlvbiAibmZpMWIiIHsgMjo5MCAtIDI6MjE2IH0KK2Z1bmN0aW9uICJuZmkxYyIgeyAyOjEy
MiAtIDI6MjA1IH0KK2V2YWwgeyAxOjEgLSAxOjU2IH0KK2Z1bmN0aW9uICJhbm9ueW1vdXMiIHsg
MToyMCAtIDE4OjggfQorZnVuY3Rpb24gIm5mMmEiIHsgNToxOCAtIDE2OjUgfQorZnVuY3Rpb24g
Im5mMmIiIHsgNzoyMiAtIDE0OjkgfQorZnVuY3Rpb24gIm5mMmMiIHsgOToyNiAtIDEyOjEzIH0K
K2V2YWwgeyAxOjEgLSAxOjU2IH0KK2Z1bmN0aW9uICJhbm9ueW1vdXMiIHsgMToyMCAtIDE4Ojkg
fQorZnVuY3Rpb24gIm5maTJhIiB7IDU6MTkgLSAxNjo1IH0KK2Z1bmN0aW9uICJuZmkyYiIgeyA3
OjIzIC0gMTQ6OSB9CitmdW5jdGlvbiAibmZpMmMiIHsgOToyNyAtIDEyOjEzIH0KIGV2YWwgeyAx
OjEgLSAxOjU2IH0KIAogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256939</attachid>
            <date>2015-07-16 17:05:27 -0700</date>
            <delta_ts>2015-07-17 10:53:18 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>195824</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg2OTE4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxMiBA
QAorMjAxNS0wNy0xNiAgU2FhbSBiYXJhdGkgIDxzYWFtYmFyYXRpMUBnbWFpbC5jb20+CisKKyAg
ICAgICAgRnVuY3Rpb24gcGFyYW1ldGVycyBzaG91bGQgYmUgcGFyc2VkIGluIHRoZSBzYW1lIHBh
cnNlciBhcmVuYSBhcyB0aGUgZnVuY3Rpb24gYm9keQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1OTk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBjaGFuZ2VzIGhvdyBmdW5jdGlvbnMg
YXJlIHBhcnNlZCBpbiBKU0MuIEEgZnVuY3Rpb24ncworICAgICAgICBwYXJhbWV0ZXJzIGFyZSBu
b3cgcGFyc2VkIGluIHRoZSBzYW1lIGFyZW5hIGFzIHRoZSBmdW5jdGlvbiBpdHNlbGYuCisgICAg
ICAgIFRoaXMgYWxsb3dzIHVzIHRvIGFyZW5hIGFsbG9jYXRlIGFsbCBkZXN0cnVjdHVyaW5nIEFT
VCBub2RlcyBhbmQKKyAgICAgICAgdGhlIEZ1bmN0aW9uUGFyYW1ldGVycyBub2RlLiBUaGlzIHdp
bGwgaGVscCBtYWtlIGltcGxlbWVudGluZyBFUzYKKyAgICAgICAgZGVmYXVsdCBwYXJhbWV0ZXIg
dmFsdWVzIHNhbmUuCisKKyAgICAgICAgQSBzb3VyY2UgY29kZSB0aGF0IHJlcHJlc2VudHMgYSBm
dW5jdGlvbiBub3cgaW5jbHVkZXMgdGhlIHRleHQgb2YgdGhlIGZ1bmN0aW9uJ3MgCisgICAgICAg
IHBhcmFtZXRlcnMuIFRoZSBzdGFydGluZyBvZmZzZXQgaXMgYXQgdGhlIG9wZW5pbmcgcGFyZW50
aGVzaXMgb2YgdGhlIHBhcmFtZXRlcgorICAgICAgICBsaXN0IG9yIGF0IHRoZSBzdGFydGluZyBj
aGFyYWN0ZXIgb2YgdGhlIGlkZW50aWZpZXIgZm9yIGFycm93IGZ1bmN0aW9ucyB0aGF0CisgICAg
ICAgIGhhdmUgc2luZ2xlIGFyZ3VtZW50cyBhbmQgZG9uJ3Qgc3RhcnQgd2l0aCBwYXJlbnRoZXNp
cy4KKworICAgICAgICBGb3IgZXhhbXBsZToKKworICAgICAgICAiZnVuY3Rpb24gKHBhcmFtMSwg
cGFyYW0yKSB7IC4uLiB9IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVGhpcyBvZmZzZXQgdXNlZCB0byBi
ZSB0aGUgc3RhcnRpbmcgb2Zmc2V0IG9mIGEgZnVuY3Rpb24ncyBTb3VyY2VDb2RlCisgICAgICAg
ICAgICAgICAgICBeCisgICAgICAgICAgICAgICAgICB8IFRoaXMgaXMgdGhlIG5ldyBzdGFydGlu
ZyBvZmZzZXQgZm9yIGEgZnVuY3Rpb24ncyBTb3VyY2VDb2RlLgorCisgICAgICAgIFRoaXMgcmVx
dWlyZXMgdXMgdG8gY2hhbmdlIGhvdyBzb21lIG9mZnNldHMgYXJlIGNhbGN1bGF0ZWQKKyAgICAg
ICAgYW5kIGFsc28gcmVxdWlyZXMgdXMgdG8gcmVwb3J0IHNvbWUgZGlmZmVyZW50IGxpbmUgbnVt
YmVycyBmb3IgaW50ZXJuYWwKKyAgICAgICAgbWV0cmljcyB0aGF0IHVzZSBhIFNvdXJjZUNvZGUn
cyBzdGFydGluZyBsaW5lIGFuZCBjb2x1bW4gbnVtYmVycy4KKworICAgICAgICBUaGlzIHBhdGNo
IGFsc28gZG9lcyBhIGJpdCBvZiBjbGVhbnVwIHdpdGggcmVnYXJkcyB0byBob3cKKyAgICAgICAg
ZnVuY3Rpb25zIGFyZSBwYXJzZWQgaW4gZ2VuZXJhbCAoZXNwZWNpYWxseSBhcnJvdyBmdW5jdGlv
bnMpLgorICAgICAgICBJdCByZW1vdmVzIHNvbWUgdW5uZWNlc3NhcnkgI2lmZGVmcyBhbmQgdGhl
IGxpa2VzIGZvciBhcnJvdworICAgICAgICB0byBtYWtlIHRoaW5ncyBjbGVhcmVyIGFuZCBtb3Jl
IGRlbGliZXJhdGUuCisKKyAgICAgICAgKiBBUEkvSlNTY3JpcHRSZWYuY3BwOgorICAgICAgICAo
cGFyc2VTY3JpcHQpOgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHA6
CisgICAgICAgIChKU0M6OkJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhlY3V0YWJsZUludGVy
bmFsKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6CisgICAgICAg
IChKU0M6OmdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAg
ICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbik6CisgICAg
ICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpwYXJhbWV0ZXJDb3VudCk6IERl
bGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAg
KiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6RGVzdHJ1Y3R1
cmluZ0Fzc2lnbm1lbnROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjphc3NpZ25E
ZWZhdWx0VmFsdWVJZlVuZGVmaW5lZCk6CisgICAgICAgIChKU0M6OkFycmF5UGF0dGVybk5vZGU6
OmNvbGxlY3RCb3VuZElkZW50aWZpZXJzKToKKyAgICAgICAgKEpTQzo6RGVzdHJ1Y3R1cmluZ1Bh
dHRlcm5Ob2RlOjp+RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwYXJzZXIvQVNUQnVpbGRlci5oOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVD
bGFzc0V4cHIpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGdW5jdGlvbkV4cHIp
OgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGdW5jdGlvbkJvZHkpOgorICAgICAg
ICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBcnJvd0Z1bmN0aW9uRXhwcik6CisgICAgICAgIChK
U0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkpOgorICAgICAgICAo
SlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVFbGVtZW50TGlzdCk6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6OmNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QpOgorICAgICAgICAoSlNDOjpBU1RCdWls
ZGVyOjphcHBlbmRQYXJhbWV0ZXIpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVD
bGF1c2UpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVDbGF1c2VMaXN0KToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQpOgorICAgICAg
ICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGb3JJbkxvb3ApOgorICAgICAgICAoSlNDOjpBU1RC
dWlsZGVyOjpjcmVhdGVGb3JPZkxvb3ApOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjppc1Jl
c29sdmUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVEZXN0cnVjdHVyaW5nQXNz
aWdubWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUFycmF5UGF0dGVybik6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmFwcGVuZEFycmF5UGF0dGVyblNraXBFbnRyeSk6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmFwcGVuZEFycmF5UGF0dGVybkVudHJ5KToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6YXBwZW5kQXJyYXlQYXR0ZXJuUmVzdEVudHJ5KToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6ZmluaXNoQXJyYXlQYXR0ZXJuKToKKyAgICAgICAgKEpT
Qzo6QVNUQnVpbGRlcjo6Y3JlYXRlT2JqZWN0UGF0dGVybik6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6OmFwcGVuZE9iamVjdFBhdHRlcm5FbnRyeSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxk
ZXI6OmNyZWF0ZUJpbmRpbmdMb2NhdGlvbik6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OnNl
dEVuZE9mZnNldCk6CisgICAgICAgICogcGFyc2VyL0xleGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
TGV4ZXI8VD46OkxleGVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46Om5leHRUb2tlbklzQ29s
b24pOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6c2V0VG9rZW5Qb3NpdGlvbik6CisgICAgICAg
IChKU0M6OkxleGVyPFQ+OjpsZXgpOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6Y2xlYXIpOgor
ICAgICAgICAqIHBhcnNlci9MZXhlci5oOgorICAgICAgICAoSlNDOjpMZXhlcjo6c2V0SXNSZXBh
cnNpbmdGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkxleGVyOjppc1JlcGFyc2luZ0Z1bmN0aW9u
KToKKyAgICAgICAgKEpTQzo6TGV4ZXI6OmxpbmVOdW1iZXIpOgorICAgICAgICAoSlNDOjpMZXhl
cjo6c2V0SXNSZXBhcnNpbmcpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpMZXhlcjo6aXNSZXBh
cnNpbmcpOiBEZWxldGVkLgorICAgICAgICAqIHBhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmg6Cisg
ICAgICAgIChKU0M6OlRyeU5vZGU6OlRyeU5vZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvblBh
cmFtZXRlcnM6OkZ1bmN0aW9uUGFyYW1ldGVycyk6CisgICAgICAgIChKU0M6OkZ1bmNFeHByTm9k
ZTo6RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY0RlY2xOb2RlOjpGdW5jRGVjbE5v
ZGUpOgorICAgICAgICAoSlNDOjpBcnJheVBhdHRlcm5Ob2RlOjpBcnJheVBhdHRlcm5Ob2RlKToK
KyAgICAgICAgKEpTQzo6T2JqZWN0UGF0dGVybk5vZGU6Ok9iamVjdFBhdHRlcm5Ob2RlKToKKyAg
ICAgICAgKEpTQzo6QmluZGluZ05vZGU6OkJpbmRpbmdOb2RlKToKKyAgICAgICAgKEpTQzo6RGVz
dHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlOjpEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5vZGUpOgor
ICAgICAgICAoSlNDOjpQYXJhbWV0ZXJOb2RlOjpQYXJhbWV0ZXJOb2RlKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6QXJyYXlQYXR0ZXJuTm9kZTo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6T2JqZWN0UGF0dGVybk5vZGU6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkJpbmRpbmdOb2RlOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5j
cHA6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpQcm9ncmFtTm9kZSk6CisgICAgICAgIChK
U0M6OkV2YWxOb2RlOjpFdmFsTm9kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQm9keU5vZGU6
OkZ1bmN0aW9uQm9keU5vZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkJvZHlOb2RlOjpmaW5p
c2hQYXJzaW5nKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Ob2RlOjpGdW5jdGlvbk5vZGUpOgor
ICAgICAgICAoSlNDOjpGdW5jdGlvbk5vZGU6OmZpbmlzaFBhcnNpbmcpOgorICAgICAgICAoSlND
OjpGdW5jdGlvblBhcmFtZXRlcnM6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZ1
bmN0aW9uUGFyYW1ldGVyczo6RnVuY3Rpb25QYXJhbWV0ZXJzKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6RnVuY3Rpb25QYXJhbWV0ZXJzOjp+RnVuY3Rpb25QYXJhbWV0ZXJzKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OnN0
YXJ0Q29sdW1uKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OmVuZENvbHVtbik6CisgICAg
ICAgIChKU0M6OkV2YWxOb2RlOjpzdGFydENvbHVtbik6CisgICAgICAgIChKU0M6OkV2YWxOb2Rl
OjplbmRDb2x1bW4pOgorICAgICAgICAoSlNDOjpGdW5jdGlvblBhcmFtZXRlcnM6OnNpemUpOgor
ICAgICAgICAoSlNDOjpGdW5jdGlvblBhcmFtZXRlcnM6OmF0KToKKyAgICAgICAgKEpTQzo6RnVu
Y3Rpb25QYXJhbWV0ZXJzOjphcHBlbmQpOgorICAgICAgICAoSlNDOjpGdW5jRXhwck5vZGU6OmJv
ZHkpOgorICAgICAgICAoSlNDOjpEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU6On5EZXN0cnVjdHVy
aW5nUGF0dGVybk5vZGUpOgorICAgICAgICAoSlNDOjpEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU6
OmlzQmluZGluZ05vZGUpOgorICAgICAgICAoSlNDOjpEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU6
OmVtaXREaXJlY3RCaW5kaW5nKToKKyAgICAgICAgKEpTQzo6QXJyYXlQYXR0ZXJuTm9kZTo6YXBw
ZW5kSW5kZXgpOgorICAgICAgICAoSlNDOjpPYmplY3RQYXR0ZXJuTm9kZTo6YXBwZW5kRW50cnkp
OgorICAgICAgICAoSlNDOjpCaW5kaW5nTm9kZTo6Ym91bmRQcm9wZXJ0eSk6CisgICAgICAgIChK
U0M6OkJpbmRpbmdOb2RlOjpkaXZvdFN0YXJ0KToKKyAgICAgICAgKEpTQzo6QmluZGluZ05vZGU6
OmRpdm90RW5kKToKKyAgICAgICAgKEpTQzo6RGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlOjpi
aW5kaW5ncyk6CisgICAgICAgIChKU0M6OkZ1bmNEZWNsTm9kZTo6Ym9keSk6CisgICAgICAgIChK
U0M6OlBhcmFtZXRlck5vZGU6OnBhdHRlcm4pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpQYXJh
bWV0ZXJOb2RlOjpuZXh0UGFyYW0pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGdW5jdGlvblBh
cmFtZXRlcnM6OnBhdHRlcm5zKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNw
cDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OlBhcnNlcik6CisgICAgICAgIChK
U0M6OlBhcnNlcjxMZXhlclR5cGU+Ojp+UGFyc2VyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6
YWxsb3dBdXRvbWF0aWNTZW1pY29sb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VTb3VyY2VFbGVtZW50cyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+
OjpjcmVhdGVCaW5kaW5nUGF0dGVybik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUFycm93RnVuY3Rpb25TaW5nbGVFeHByZXNzaW9uQm9keVNvdXJjZUVsZW1lbnRzKToK
KyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnRyeVBhcnNlRGVzdHJ1Y3R1cmluZ1Bh
dHRlcm5FeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNl
U3dpdGNoQ2xhdXNlcyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVN3
aXRjaERlZmF1bHRDbGF1c2UpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VCbG9ja1N0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZvcm1h
bFBhcmFtZXRlcnMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5j
dGlvbkJvZHkpOgorICAgICAgICAoSlNDOjpzdHJpbmdGb3JGdW5jdGlvbk1vZGUpOgorICAgICAg
ICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvblBhcmFtZXRlcnMpOgorICAg
ICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8pOgorICAgICAg
ICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKToKKyAg
ICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3MpOgorICAgICAgICAoSlND
OjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcmltYXJ5RXhwcmVzc2lvbik6CisgICAgICAgIChK
U0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlc3Npb24pOgorICAgICAgICAo
SlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbik6Cisg
ICAgICAgIChKU0M6Om9wZXJhdG9yU3RyaW5nKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVy
VHlwZT46OnBhcnNlQXJyb3dGdW5jdGlvblNpbmdsZUV4cHJlc3Npb25Cb2R5KTogRGVsZXRlZC4K
KyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlBhcnNlcjo6cG9zaXRp
b25CZWZvcmVMYXN0TmV3bGluZSk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6bG9jYXRpb25CZWZv
cmVMYXN0VG9rZW4pOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmZpbmRDYWNoZWRGdW5jdGlvbklu
Zm8pOgorICAgICAgICAoSlNDOjpQYXJzZXI6Omlzb2ZUb2tlbik6CisgICAgICAgIChKU0M6OlBh
cnNlcjo6aXNFbmRPZkFycm93RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmlzQXJy
b3dGdW5jdGlvblBhcmFtdGVycyk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6dG9rZW5TdGFydCk6
CisgICAgICAgIChKU0M6OlBhcnNlcjo6aXNMRVRNYXNrZWRBc0lERU5UKToKKyAgICAgICAgKEpT
Qzo6UGFyc2VyOjphdXRvU2VtaUNvbG9uKToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpzZXRFbmRP
ZlN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6Y2FuUmVjdXJzZSk6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZSk6CisgICAgICAgIChKU0M6OnBhcnNlKToK
KyAgICAgICAgKiBwYXJzZXIvUGFyc2VyRnVuY3Rpb25JbmZvLmg6CisgICAgICAgICogcGFyc2Vy
L1BhcnNlck1vZGVzLmg6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uTmFtZUlzSW5TY29wZSk6Cisg
ICAgICAgICogcGFyc2VyL1NvdXJjZUNvZGUuaDoKKyAgICAgICAgKEpTQzo6bWFrZVNvdXJjZSk6
CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGU6OnN1YkV4cHJlc3Npb24pOgorICAgICAgICAoSlND
OjpTb3VyY2VDb2RlOjpzdWJBcnJvd0V4cHJlc3Npb24pOiBEZWxldGVkLgorICAgICAgICAqIHBh
cnNlci9Tb3VyY2VQcm92aWRlckNhY2hlLmg6CisgICAgICAgIChKU0M6OlNvdXJjZVByb3ZpZGVy
Q2FjaGU6OmdldCk6CisgICAgICAgICogcGFyc2VyL1NvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmg6
CisgICAgICAgIChKU0M6OlNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtOjplbmRGdW5jdGlvblRva2Vu
KToKKyAgICAgICAgKEpTQzo6U291cmNlUHJvdmlkZXJDYWNoZUl0ZW06OnVzZWRWYXJpYWJsZXMp
OgorICAgICAgICAoSlNDOjpTb3VyY2VQcm92aWRlckNhY2hlSXRlbTo6d3JpdHRlblZhcmlhYmxl
cyk6CisgICAgICAgIChKU0M6OlNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtOjpTb3VyY2VQcm92aWRl
ckNhY2hlSXRlbSk6CisgICAgICAgICogcGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAg
KEpTQzo6U3ludGF4Q2hlY2tlcjo6U3ludGF4Q2hlY2tlcik6CisgICAgICAgIChKU0M6OlN5bnRh
eENoZWNrZXI6OmNyZWF0ZUNsYXNzRXhwcik6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6
OmNyZWF0ZUZ1bmN0aW9uRXhwcik6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0
ZUZ1bmN0aW9uQm9keSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUFycm93
RnVuY3Rpb25FeHByKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6c2V0RnVuY3Rpb25O
YW1lU3RhcnQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVBcmd1bWVudHMp
OgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVQcm9wZXJ0eUxpc3QpOgorICAg
ICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVFbGVtZW50TGlzdCk6CisgICAgICAgIChK
U0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QpOgorICAgICAgICAo
SlNDOjpTeW50YXhDaGVja2VyOjphcHBlbmRQYXJhbWV0ZXIpOgorICAgICAgICAoSlNDOjpTeW50
YXhDaGVja2VyOjpjcmVhdGVDbGF1c2UpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpj
cmVhdGVDbGF1c2VMaXN0KToKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAg
ICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0R2xvYmFsQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6
Q29kZUNhY2hlOjpnZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZSk6CisgICAgICAg
ICogcnVudGltZS9Db21wbGV0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Y2hlY2tTeW50YXgpOgor
ICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OlByb2dyYW1F
eGVjdXRhYmxlOjpjaGVja1N5bnRheCk6CisgICAgICAgICogdGVzdHMvY29udHJvbEZsb3dQcm9m
aWxlci9jb25kaXRpb25hbC1leHByZXNzaW9uLmpzOgorICAgICAgICAodGVzdENvbmRpdGlvbmFs
RnVuY3Rpb25DYWxsKToKKwogMjAxNS0wNy0xNSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFw
cGxlLmNvbT4KIAogICAgICAgICBbV2luXSBGaXggYXJtdjcgYnVpbGQuCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcAkocmV2aXNpb24gMTg2OTEzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTcwLDcgKzcwLDcgQEAgcHJpdmF0ZToKIHN0YXRpYyBib29sIHBhcnNlU2NyaXB0KFZNKiB2
bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZXJyb3IpCiB7CiAgICAg
cmV0dXJuICEhSlNDOjpwYXJzZTxKU0M6OlByb2dyYW1Ob2RlPigKLSAgICAgICAgdm0sIHNvdXJj
ZSwgMCwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCAKKyAg
ICAgICAgdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RC
dWlsdGluLCAKICAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIEpTUGFyc2Vy
Q29kZVR5cGU6OlByb2dyYW0sIAogICAgICAgICBlcnJvcik7CiB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAko
cmV2aXNpb24gMTg2OTEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0
aW5FeGVjdXRhYmxlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDEwICs2OSw5IEBAIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3UKICAgICBVbmxpbmtlZEZ1bmN0aW9u
S2luZCBraW5kID0gaXNQYXJzaW5nRGVmYXVsdENvbnN0cnVjdG9yID8gVW5saW5rZWROb3JtYWxG
dW5jdGlvbiA6IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uOwogICAgIFJlZlB0cjxTb3VyY2VQcm92
aWRlcj4gc291cmNlT3ZlcnJpZGUgPSBpc1BhcnNpbmdEZWZhdWx0Q29uc3RydWN0b3IgPyBzb3Vy
Y2UucHJvdmlkZXIoKSA6IG51bGxwdHI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFByb2dyYW1Ob2Rl
PiBwcm9ncmFtID0gcGFyc2U8UHJvZ3JhbU5vZGU+KAotICAgICAgICAmbV92bSwgc291cmNlLCAw
LCBJZGVudGlmaWVyKCksIGJ1aWx0aW5Nb2RlLCAKLSAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2Rl
OjpOb3RTdHJpY3QsIAotICAgICAgICBKU1BhcnNlckNvZGVUeXBlOjpQcm9ncmFtLAotICAgICAg
ICBlcnJvciwgJnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUsIGNvbnN0cnVjdG9yS2luZCk7Cisg
ICAgICAgICZtX3ZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgYnVpbHRpbk1vZGUsIAorICAgICAg
ICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgSlNQYXJzZXJDb2RlVHlwZTo6UHJvZ3Jh
bSwgZXJyb3IsIAorICAgICAgICAmcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSwgRnVuY3Rpb25Q
YXJzZU1vZGU6Ok5vdEFGdW5jdGlvbk1vZGUsIGNvbnN0cnVjdG9yS2luZCk7CiAKICAgICBpZiAo
IXByb2dyYW0pIHsKICAgICAgICAgZGF0YUxvZygiRmF0YWwgZXJyb3IgY29tcGlsaW5nIGJ1aWx0
aW4gZnVuY3Rpb24gJyIsIG5hbWUuc3RyaW5nKCksICInOiAiLCBlcnJvci5tZXNzYWdlKCkpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suY3BwCShyZXZpc2lvbiAxODY5MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCwxNSAr
NjAsMTUgQEAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYQogICAgIEpT
UGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUgPSBleGVjdXRhYmxlLT5pc0J1aWx0aW5GdW5j
dGlvbigpID8gSlNQYXJzZXJCdWlsdGluTW9kZTo6QnVpbHRpbiA6IEpTUGFyc2VyQnVpbHRpbk1v
ZGU6Ok5vdEJ1aWx0aW47CiAgICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUgPSBleGVj
dXRhYmxlLT5pc0luU3RyaWN0Q29udGV4dCgpID8gSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3Qg
OiBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RnVu
Y3Rpb25Ob2RlPiBmdW5jdGlvbiA9IHBhcnNlPEZ1bmN0aW9uTm9kZT4oCi0gICAgICAgICZ2bSwg
c291cmNlLCBleGVjdXRhYmxlLT5wYXJhbWV0ZXJzKCksIGV4ZWN1dGFibGUtPm5hbWUoKSwgYnVp
bHRpbk1vZGUsCi0gICAgICAgIHN0cmljdE1vZGUsIEpTUGFyc2VyQ29kZVR5cGU6OkZ1bmN0aW9u
LCBlcnJvciwgMCk7CisgICAgICAgICZ2bSwgc291cmNlLCBleGVjdXRhYmxlLT5uYW1lKCksIGJ1
aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCAKKyAgICAgICAgSlNQYXJzZXJDb2RlVHlwZTo6RnVuY3Rp
b24sIGVycm9yLCBudWxscHRyLCBleGVjdXRhYmxlLT5wYXJzZU1vZGUoKSk7CiAKICAgICBpZiAo
IWZ1bmN0aW9uKSB7CiAgICAgICAgIEFTU0VSVChlcnJvci5pc1ZhbGlkKCkpOwogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBmdW5jdGlvbi0+ZmluaXNoUGFyc2luZyhleGVj
dXRhYmxlLT5wYXJhbWV0ZXJzKCksIGV4ZWN1dGFibGUtPm5hbWUoKSwgZXhlY3V0YWJsZS0+ZnVu
Y3Rpb25Nb2RlKCkpOworICAgIGZ1bmN0aW9uLT5maW5pc2hQYXJzaW5nKGV4ZWN1dGFibGUtPm5h
bWUoKSwgZXhlY3V0YWJsZS0+ZnVuY3Rpb25Nb2RlKCkpOwogICAgIGV4ZWN1dGFibGUtPnJlY29y
ZFBhcnNlKGZ1bmN0aW9uLT5mZWF0dXJlcygpLCBmdW5jdGlvbi0+aGFzQ2FwdHVyZWRWYXJpYWJs
ZXMoKSk7CiAgICAgCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5s
aW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRlKCZ2bSwgRnVuY3Rpb25Db2RlLApAQCAtODQs
NyArODQsNiBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jCiAgICAg
OiBCYXNlKCp2bSwgc3RydWN0dXJlKQogICAgICwgbV9uYW1lKG5vZGUtPmlkZW50KCkpCiAgICAg
LCBtX2luZmVycmVkTmFtZShub2RlLT5pbmZlcnJlZE5hbWUoKSkKLSAgICAsIG1fcGFyYW1ldGVy
cyhub2RlLT5wYXJhbWV0ZXJzKCkpCiAgICAgLCBtX3NvdXJjZU92ZXJyaWRlKFdURjo6bW92ZShz
b3VyY2VPdmVycmlkZSkpCiAgICAgLCBtX2ZpcnN0TGluZU9mZnNldChub2RlLT5maXJzdExpbmUo
KSAtIHNvdXJjZS5maXJzdExpbmUoKSkKICAgICAsIG1fbGluZUNvdW50KG5vZGUtPmxhc3RMaW5l
KCkgLSBub2RlLT5maXJzdExpbmUoKSkKQEAgLTk2LDYgKzk1LDggQEAgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU6OlVubGlua2VkRnVuYwogICAgICwgbV9wYXJhbWV0ZXJzU3RhcnRPZmZzZXQo
bm9kZS0+cGFyYW1ldGVyc1N0YXJ0KCkpCiAgICAgLCBtX3R5cGVQcm9maWxpbmdTdGFydE9mZnNl
dChub2RlLT5mdW5jdGlvbktleXdvcmRTdGFydCgpKQogICAgICwgbV90eXBlUHJvZmlsaW5nRW5k
T2Zmc2V0KG5vZGUtPnN0YXJ0U3RhcnRPZmZzZXQoKSArIG5vZGUtPnNvdXJjZSgpLmxlbmd0aCgp
IC0gMSkKKyAgICAsIG1fcGFyYW1ldGVyQ291bnQobm9kZS0+cGFyYW1ldGVyQ291bnQoKSkKKyAg
ICAsIG1fcGFyc2VNb2RlKG5vZGUtPnBhcnNlTW9kZSgpKQogICAgICwgbV9mZWF0dXJlcygwKQog
ICAgICwgbV9pc0luU3RyaWN0Q29udGV4dChub2RlLT5pc0luU3RyaWN0Q29udGV4dCgpKQogICAg
ICwgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyhmYWxzZSkKQEAgLTEwNywxMSArMTA4LDYgQEAgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuYwogICAgIG1fcGFyZW50U2NvcGVU
RFpWYXJpYWJsZXMuc3dhcChwYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7CiB9CiAKLXNpemVfdCBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6cGFyYW1ldGVyQ291bnQoKSBjb25zdAotewotICAg
IHJldHVybiBtX3BhcmFtZXRlcnMtPnNpemUoKTsKLX0KLQogdm9pZCBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogewogICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB0aGlzT2JqZWN0ID0ganND
YXN0PFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKj4oY2VsbCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAkocmV2aXNp
b24gMTg2OTEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDYgQEAgbmFtZXNwYWNlIEpTQyB7
CiBjbGFzcyBEZWJ1Z2dlcjsKIGNsYXNzIEZ1bmN0aW9uQm9keU5vZGU7CiBjbGFzcyBGdW5jdGlv
bkV4ZWN1dGFibGU7Ci1jbGFzcyBGdW5jdGlvblBhcmFtZXRlcnM7CiBjbGFzcyBKU1Njb3BlOwog
Y2xhc3MgUGFyc2VyRXJyb3I7CiBjbGFzcyBTY3JpcHRFeGVjdXRhYmxlOwpAQCAtMTIzLDcgKzEy
Miw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiAoa2luZCA9PSBDb2RlRm9yQ2Fs
bCkgPyBtX3N5bWJvbFRhYmxlRm9yQ2FsbC5nZXQoKSA6IG1fc3ltYm9sVGFibGVGb3JDb25zdHJ1
Y3QuZ2V0KCk7CiAgICAgfQotICAgIHNpemVfdCBwYXJhbWV0ZXJDb3VudCgpIGNvbnN0OworICAg
IHVuc2lnbmVkIHBhcmFtZXRlckNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJDb3Vu
dDsgfTsKKyAgICBGdW5jdGlvblBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBt
X3BhcnNlTW9kZTsgfTsKICAgICBib29sIGlzSW5TdHJpY3RDb250ZXh0KCkgY29uc3QgeyByZXR1
cm4gbV9pc0luU3RyaWN0Q29udGV4dDsgfQogICAgIEZ1bmN0aW9uTW9kZSBmdW5jdGlvbk1vZGUo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxGdW5jdGlvbk1vZGU+KG1fZnVuY3Rpb25Nb2Rl
KTsgfQogICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQpAQCAt
MTU1LDggKzE1NSw2IEBAIHB1YmxpYzoKICAgICAgICAgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3Qu
Y2xlYXIoKTsKICAgICB9CiAKLSAgICBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMoKSB7
IHJldHVybiBtX3BhcmFtZXRlcnMuZ2V0KCk7IH0KLQogICAgIHZvaWQgcmVjb3JkUGFyc2UoQ29k
ZUZlYXR1cmVzIGZlYXR1cmVzLCBib29sIGhhc0NhcHR1cmVkVmFyaWFibGVzKQogICAgIHsKICAg
ICAgICAgbV9mZWF0dXJlcyA9IGZlYXR1cmVzOwpAQCAtMTgzLDcgKzE4MSw2IEBAIHByaXZhdGU6
CiAgICAgV3JpdGVCYXJyaWVyPEpTU3RyaW5nPiBtX25hbWVWYWx1ZTsKICAgICBXcml0ZUJhcnJp
ZXI8U3ltYm9sVGFibGU+IG1fc3ltYm9sVGFibGVGb3JDYWxsOwogICAgIFdyaXRlQmFycmllcjxT
eW1ib2xUYWJsZT4gbV9zeW1ib2xUYWJsZUZvckNvbnN0cnVjdDsKLSAgICBSZWZQdHI8RnVuY3Rp
b25QYXJhbWV0ZXJzPiBtX3BhcmFtZXRlcnM7CiAgICAgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBt
X3NvdXJjZU92ZXJyaWRlOwogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgbV9wYXJlbnRTY29wZVRE
WlZhcmlhYmxlczsKICAgICB1bnNpZ25lZCBtX2ZpcnN0TGluZU9mZnNldDsKQEAgLTE5Niw2ICsx
OTMsOCBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fcGFyYW1ldGVyc1N0YXJ0T2Zmc2V0Owog
ICAgIHVuc2lnbmVkIG1fdHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0OwogICAgIHVuc2lnbmVkIG1f
dHlwZVByb2ZpbGluZ0VuZE9mZnNldDsKKyAgICB1bnNpZ25lZCBtX3BhcmFtZXRlckNvdW50Owor
ICAgIEZ1bmN0aW9uUGFyc2VNb2RlIG1fcGFyc2VNb2RlOwogCiAgICAgQ29kZUZlYXR1cmVzIG1f
ZmVhdHVyZXM7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHJldmlzaW9uIDE4NjkxMykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzE4OSwxMCArMzE4OSw2IEBAIFJlZ2lzdGVySUQqIERlc3RydWN0dXJpbmdBc3NpZ25tZW50
Tm9kZToKICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZHN0
LCBpbml0aWFsaXplci5nZXQoKSk7CiB9CiAKLURlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZTo6fkRl
c3RydWN0dXJpbmdQYXR0ZXJuTm9kZSgpCi17Ci19Ci0KIHN0YXRpYyB2b2lkIGFzc2lnbkRlZmF1
bHRWYWx1ZUlmVW5kZWZpbmVkKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqIG1heWJlVW5kZWZpbmVkLCBFeHByZXNzaW9uTm9kZSogZGVmYXVsdFZhbHVlKQogewogICAg
IEFTU0VSVChkZWZhdWx0VmFsdWUpOwpAQCAtMzM1MCw3ICszMzQ2LDcgQEAgdm9pZCBBcnJheVBh
dHRlcm5Ob2RlOjp0b1N0cmluZyhTdHJpbmdCdQogdm9pZCBBcnJheVBhdHRlcm5Ob2RlOjpjb2xs
ZWN0Qm91bmRJZGVudGlmaWVycyhWZWN0b3I8SWRlbnRpZmllcj4mIGlkZW50aWZpZXJzKSBjb25z
dAogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90YXJnZXRQYXR0ZXJucy5zaXplKCk7
IGkrKykgewotICAgICAgICBpZiAoRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiBub2RlID0gbV90
YXJnZXRQYXR0ZXJuc1tpXS5wYXR0ZXJuLmdldCgpKQorICAgICAgICBpZiAoRGVzdHJ1Y3R1cmlu
Z1BhdHRlcm5Ob2RlKiBub2RlID0gbV90YXJnZXRQYXR0ZXJuc1tpXS5wYXR0ZXJuKQogICAgICAg
ICAgICAgbm9kZS0+Y29sbGVjdEJvdW5kSWRlbnRpZmllcnMoaWRlbnRpZmllcnMpOwogICAgIH0K
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCShyZXZp
c2lvbiAxODY5MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtOTQsOCArOTQsNiBAQCBwdWJsaWM6CiAgICAgfTsKIAogCi0g
ICAgdHlwZWRlZiBTeW50YXhDaGVja2VyIEZ1bmN0aW9uQm9keUJ1aWxkZXI7Ci0KICAgICB0eXBl
ZGVmIEV4cHJlc3Npb25Ob2RlKiBFeHByZXNzaW9uOwogICAgIHR5cGVkZWYgSlNDOjpTb3VyY2VF
bGVtZW50cyogU291cmNlRWxlbWVudHM7CiAgICAgdHlwZWRlZiBBcmd1bWVudHNOb2RlKiBBcmd1
bWVudHM7CkBAIC0xMTAsNyArMTA4LDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYgVGVtcGxhdGVT
dHJpbmdMaXN0Tm9kZSogVGVtcGxhdGVTdHJpbmdMaXN0OwogICAgIHR5cGVkZWYgVGVtcGxhdGVM
aXRlcmFsTm9kZSogVGVtcGxhdGVMaXRlcmFsOwogI2VuZGlmCi0gICAgdHlwZWRlZiBQYXJhbWV0
ZXJOb2RlKiBGb3JtYWxQYXJhbWV0ZXJMaXN0OworICAgIHR5cGVkZWYgRnVuY3Rpb25QYXJhbWV0
ZXJzKiBGb3JtYWxQYXJhbWV0ZXJMaXN0OwogICAgIHR5cGVkZWYgRnVuY3Rpb25Cb2R5Tm9kZSog
RnVuY3Rpb25Cb2R5OwogI2lmIEVOQUJMRShFUzZfQ0xBU1NfU1lOVEFYKQogICAgIHR5cGVkZWYg
Q2xhc3NFeHByTm9kZSogQ2xhc3NFeHByZXNzaW9uOwpAQCAtMTIwLDEwICsxMTgsMTAgQEAgcHVi
bGljOgogICAgIHR5cGVkZWYgQ2FzZUNsYXVzZU5vZGUqIENsYXVzZTsKICAgICB0eXBlZGVmIENv
bnN0RGVjbE5vZGUqIENvbnN0RGVjbExpc3Q7CiAgICAgdHlwZWRlZiBzdGQ6OnBhaXI8RXhwcmVz
c2lvbk5vZGUqLCBCaW5hcnlPcEluZm8+IEJpbmFyeU9wZXJhbmQ7Ci0gICAgdHlwZWRlZiBSZWZQ
dHI8RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlPiBEZXN0cnVjdHVyaW5nUGF0dGVybjsKLSAgICB0
eXBlZGVmIFJlZlB0cjxBcnJheVBhdHRlcm5Ob2RlPiBBcnJheVBhdHRlcm47Ci0gICAgdHlwZWRl
ZiBSZWZQdHI8T2JqZWN0UGF0dGVybk5vZGU+IE9iamVjdFBhdHRlcm47Ci0gICAgdHlwZWRlZiBS
ZWZQdHI8QmluZGluZ05vZGU+IEJpbmRpbmdQYXR0ZXJuOworICAgIHR5cGVkZWYgRGVzdHJ1Y3R1
cmluZ1BhdHRlcm5Ob2RlKiBEZXN0cnVjdHVyaW5nUGF0dGVybjsKKyAgICB0eXBlZGVmIEFycmF5
UGF0dGVybk5vZGUqIEFycmF5UGF0dGVybjsKKyAgICB0eXBlZGVmIE9iamVjdFBhdHRlcm5Ob2Rl
KiBPYmplY3RQYXR0ZXJuOworICAgIHR5cGVkZWYgQmluZGluZ05vZGUqIEJpbmRpbmdQYXR0ZXJu
OwogICAgIHN0YXRpYyBjb25zdCBib29sIENyZWF0ZXNBU1QgPSB0cnVlOwogICAgIHN0YXRpYyBj
b25zdCBib29sIE5lZWRzRnJlZVZhcmlhYmxlSW5mbyA9IHRydWU7CiAgICAgc3RhdGljIGNvbnN0
IGJvb2wgQ2FuVXNlRnVuY3Rpb25DYWNoZSA9IHRydWU7CkBAIC0zNDQsMTEgKzM0MiwxMSBAQCBw
dWJsaWM6CiAgICAgfQogI2VuZGlmCiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlRnVuY3Rp
b25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IFBhcnNlckZ1bmN0
aW9uSW5mbzxBU1RCdWlsZGVyPiYgaW5mbykKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlRnVu
Y3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IFBhcnNlckZ1
bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgZnVuY3Rpb25JbmZvKQogICAgIHsKLSAgICAgICAgRnVu
Y0V4cHJOb2RlKiByZXN1bHQgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIEZ1bmNFeHByTm9kZShsb2Nh
dGlvbiwgKmluZm8ubmFtZSwgaW5mby5ib2R5LAotICAgICAgICAgICAgbV9zb3VyY2VDb2RlLT5z
dWJFeHByZXNzaW9uKGluZm8uc3RhcnRGdW5jdGlvbk9mZnNldCwgaW5mby5lbmRGdW5jdGlvbk9m
ZnNldCwgaW5mby5ib2R5U3RhcnRMaW5lLCBpbmZvLmJvZHlTdGFydENvbHVtbiksIGluZm8ucGFy
YW1ldGVycyk7Ci0gICAgICAgIGluZm8uYm9keS0+c2V0TG9jKGluZm8uYm9keVN0YXJ0TGluZSwg
aW5mby5ib2R5RW5kTGluZSwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFy
dE9mZnNldCk7CisgICAgICAgIEZ1bmNFeHByTm9kZSogcmVzdWx0ID0gbmV3IChtX3BhcnNlckFy
ZW5hKSBGdW5jRXhwck5vZGUobG9jYXRpb24sICpmdW5jdGlvbkluZm8ubmFtZSwgZnVuY3Rpb25J
bmZvLmJvZHksCisgICAgICAgICAgICBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24oZnVuY3Rp
b25JbmZvLnN0YXJ0T2Zmc2V0LCBmdW5jdGlvbkluZm8uZW5kT2Zmc2V0LCBmdW5jdGlvbkluZm8u
c3RhcnRMaW5lLCBmdW5jdGlvbkluZm8uYm9keVN0YXJ0Q29sdW1uKSk7CisgICAgICAgIGZ1bmN0
aW9uSW5mby5ib2R5LT5zZXRMb2MoZnVuY3Rpb25JbmZvLnN0YXJ0TGluZSwgZnVuY3Rpb25JbmZv
LmVuZExpbmUsIGxvY2F0aW9uLnN0YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQp
OwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMzU2LDQ1ICszNTQsNDEgQEAg
cHVibGljOgogICAgICAgICBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIAogICAgICAgICB1bnNpZ25lZCBzdGFy
dENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIAog
ICAgICAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIGJvb2wg
aW5TdHJpY3RDb250ZXh0LCAKLSAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2lu
ZCkKKyAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQgcGFy
YW1ldGVyQ291bnQsIEZ1bmN0aW9uUGFyc2VNb2RlIG1vZGUpCiAgICAgewogICAgICAgICByZXR1
cm4gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5jdGlvbkJvZHlOb2RlKAogICAgICAgICAgICAgbV9w
YXJzZXJBcmVuYSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBlbmRD
b2x1bW4sIAogICAgICAgICAgICAgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0
YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIAotICAgICAgICAgICAgaW5TdHJpY3RDb250ZXh0LCBjb25z
dHJ1Y3RvcktpbmQpOworICAgICAgICAgICAgaW5TdHJpY3RDb250ZXh0LCBjb25zdHJ1Y3Rvcktp
bmQsIHBhcmFtZXRlckNvdW50LCBtb2RlKTsKICAgICB9CiAKLSNpZiBFTkFCTEUoRVM2X0FSUk9X
RlVOQ1RJT05fU1lOVEFYKQotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVBcnJvd0Z1bmN0aW9u
RXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBQYXJzZXJGdW5jdGlv
bkluZm88QVNUQnVpbGRlcj4mIGluZm8pCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFycm93
RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IFBhcnNl
ckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgZnVuY3Rpb25JbmZvKQogICAgIHsKLSAgICAgICAg
U291cmNlQ29kZSBzb3VyY2UgPSBpbmZvLmZ1bmN0aW9uQm9keVR5cGUgPT0gQXJyb3dGdW5jdGlv
bkJvZHlFeHByZXNzaW9uCi0gICAgICAgICAgICA/IG1fc291cmNlQ29kZS0+c3ViQXJyb3dFeHBy
ZXNzaW9uKGluZm8uYXJyb3dGdW5jdGlvbk9mZnNldCwgaW5mby5lbmRGdW5jdGlvbk9mZnNldCwg
aW5mby5ib2R5U3RhcnRMaW5lLCBpbmZvLmJvZHlTdGFydENvbHVtbikKLSAgICAgICAgICAgIDog
bV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKGluZm8uc3RhcnRGdW5jdGlvbk9mZnNldCwgaW5m
by5lbmRGdW5jdGlvbk9mZnNldCwgaW5mby5ib2R5U3RhcnRMaW5lLCBpbmZvLmJvZHlTdGFydENv
bHVtbik7CisgICAgICAgIFNvdXJjZUNvZGUgc291cmNlID0gbV9zb3VyY2VDb2RlLT5zdWJFeHBy
ZXNzaW9uKGZ1bmN0aW9uSW5mby5zdGFydE9mZnNldCwgZnVuY3Rpb25JbmZvLmVuZE9mZnNldCwg
ZnVuY3Rpb25JbmZvLnN0YXJ0TGluZSwgZnVuY3Rpb25JbmZvLmJvZHlTdGFydENvbHVtbik7CiAK
LSAgICAgICAgRnVuY0V4cHJOb2RlKiByZXN1bHQgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIEZ1bmNF
eHByTm9kZShsb2NhdGlvbiwgKmluZm8ubmFtZSwgaW5mby5ib2R5LCBzb3VyY2UsIGluZm8ucGFy
YW1ldGVycyk7Ci0gICAgICAgIGluZm8uYm9keS0+c2V0TG9jKGluZm8uYm9keVN0YXJ0TGluZSwg
aW5mby5ib2R5RW5kTGluZSwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFy
dE9mZnNldCk7CisgICAgICAgIEZ1bmNFeHByTm9kZSogcmVzdWx0ID0gbmV3IChtX3BhcnNlckFy
ZW5hKSBGdW5jRXhwck5vZGUobG9jYXRpb24sICpmdW5jdGlvbkluZm8ubmFtZSwgZnVuY3Rpb25J
bmZvLmJvZHksIHNvdXJjZSk7CisgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5LT5zZXRMb2MoZnVu
Y3Rpb25JbmZvLnN0YXJ0TGluZSwgZnVuY3Rpb25JbmZvLmVuZExpbmUsIGxvY2F0aW9uLnN0YXJ0
T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOwogICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgIH0KLSNlbmRpZgogCiAgICAgTkVWRVJfSU5MSU5FIFByb3BlcnR5Tm9kZSogY3JlYXRl
R2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQ
cm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgYm9vbCwKLSAgICAgICAgY29uc3QgSWRlbnRpZmllciog
bmFtZSwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+JiBpbmZvLCBTdXBlckJp
bmRpbmcgc3VwZXJCaW5kaW5nKQorICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBjb25z
dCBQYXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4mIGZ1bmN0aW9uSW5mbywgU3VwZXJCaW5k
aW5nIHN1cGVyQmluZGluZykKICAgICB7CiAgICAgICAgIEFTU0VSVChuYW1lKTsKLSAgICAgICAg
aW5mby5ib2R5LT5zZXRMb2MoaW5mby5ib2R5U3RhcnRMaW5lLCBpbmZvLmJvZHlFbmRMaW5lLCBs
b2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKLSAgICAgICAg
aW5mby5ib2R5LT5zZXRJbmZlcnJlZE5hbWUoKm5hbWUpOwotICAgICAgICBTb3VyY2VDb2RlIHNv
dXJjZSA9IG1fc291cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihpbmZvLnN0YXJ0RnVuY3Rpb25PZmZz
ZXQsIGluZm8uZW5kRnVuY3Rpb25PZmZzZXQsIGluZm8uYm9keVN0YXJ0TGluZSwgaW5mby5ib2R5
U3RhcnRDb2x1bW4pOwotICAgICAgICBGdW5jRXhwck5vZGUqIGZ1bmNFeHByID0gbmV3IChtX3Bh
cnNlckFyZW5hKSBGdW5jRXhwck5vZGUobG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPm51
bGxJZGVudGlmaWVyLCBpbmZvLmJvZHksIHNvdXJjZSwgaW5mby5wYXJhbWV0ZXJzKTsKKyAgICAg
ICAgZnVuY3Rpb25JbmZvLmJvZHktPnNldExvYyhmdW5jdGlvbkluZm8uc3RhcnRMaW5lLCBmdW5j
dGlvbkluZm8uZW5kTGluZSwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFy
dE9mZnNldCk7CisgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5LT5zZXRJbmZlcnJlZE5hbWUoKm5h
bWUpOworICAgICAgICBTb3VyY2VDb2RlIHNvdXJjZSA9IG1fc291cmNlQ29kZS0+c3ViRXhwcmVz
c2lvbihmdW5jdGlvbkluZm8uc3RhcnRPZmZzZXQsIGZ1bmN0aW9uSW5mby5lbmRPZmZzZXQsIGZ1
bmN0aW9uSW5mby5zdGFydExpbmUsIGZ1bmN0aW9uSW5mby5ib2R5U3RhcnRDb2x1bW4pOworICAg
ICAgICBGdW5jRXhwck5vZGUqIGZ1bmNFeHByID0gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5jRXhw
ck5vZGUobG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyLCBmdW5j
dGlvbkluZm8uYm9keSwgc291cmNlKTsKICAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVu
YSkgUHJvcGVydHlOb2RlKCpuYW1lLCBmdW5jRXhwciwgdHlwZSwgUHJvcGVydHlOb2RlOjpVbmtu
b3duLCBzdXBlckJpbmRpbmcpOwogICAgIH0KICAgICAKICAgICBORVZFUl9JTkxJTkUgUHJvcGVy
dHlOb2RlKiBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KFZNKiB2bSwgUGFyc2VyQXJlbmEm
IHBhcnNlckFyZW5hLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQcm9wZXJ0eU5v
ZGU6OlR5cGUgdHlwZSwgYm9vbCwKLSAgICAgICAgZG91YmxlIG5hbWUsIGNvbnN0IFBhcnNlckZ1
bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgaW5mbywgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZykK
KyAgICAgICAgZG91YmxlIG5hbWUsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVy
PiYgZnVuY3Rpb25JbmZvLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKQogICAgIHsKLSAgICAg
ICAgaW5mby5ib2R5LT5zZXRMb2MoaW5mby5ib2R5U3RhcnRMaW5lLCBpbmZvLmJvZHlFbmRMaW5l
LCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKKyAgICAg
ICAgZnVuY3Rpb25JbmZvLmJvZHktPnNldExvYyhmdW5jdGlvbkluZm8uc3RhcnRMaW5lLCBmdW5j
dGlvbkluZm8uZW5kTGluZSwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFy
dE9mZnNldCk7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gcGFyc2VyQXJlbmEu
aWRlbnRpZmllckFyZW5hKCkubWFrZU51bWVyaWNJZGVudGlmaWVyKHZtLCBuYW1lKTsKLSAgICAg
ICAgU291cmNlQ29kZSBzb3VyY2UgPSBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24oaW5mby5z
dGFydEZ1bmN0aW9uT2Zmc2V0LCBpbmZvLmVuZEZ1bmN0aW9uT2Zmc2V0LCBpbmZvLmJvZHlTdGFy
dExpbmUsIGluZm8uYm9keVN0YXJ0Q29sdW1uKTsKLSAgICAgICAgRnVuY0V4cHJOb2RlKiBmdW5j
RXhwciA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRnVuY0V4cHJOb2RlKGxvY2F0aW9uLCB2bS0+cHJv
cGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIsIGluZm8uYm9keSwgc291cmNlLCBpbmZvLnBhcmFt
ZXRlcnMpOworICAgICAgICBTb3VyY2VDb2RlIHNvdXJjZSA9IG1fc291cmNlQ29kZS0+c3ViRXhw
cmVzc2lvbihmdW5jdGlvbkluZm8uc3RhcnRPZmZzZXQsIGZ1bmN0aW9uSW5mby5lbmRPZmZzZXQs
IGZ1bmN0aW9uSW5mby5zdGFydExpbmUsIGZ1bmN0aW9uSW5mby5ib2R5U3RhcnRDb2x1bW4pOwor
ICAgICAgICBGdW5jRXhwck5vZGUqIGZ1bmNFeHByID0gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5j
RXhwck5vZGUobG9jYXRpb24sIHZtLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllciwgZnVu
Y3Rpb25JbmZvLmJvZHksIHNvdXJjZSk7CiAgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJl
bmEpIFByb3BlcnR5Tm9kZShpZGVudCwgZnVuY0V4cHIsIHR5cGUsIFByb3BlcnR5Tm9kZTo6VW5r
bm93biwgc3VwZXJCaW5kaW5nKTsKICAgICB9CiAKQEAgLTQyMCwyMSArNDE0LDIxIEBAIHB1Ymxp
YzoKICAgICBFbGVtZW50Tm9kZSogY3JlYXRlRWxlbWVudExpc3QoaW50IGVsaXNpb25zLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcikgeyByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBFbGVtZW50Tm9k
ZShlbGlzaW9ucywgZXhwcik7IH0KICAgICBFbGVtZW50Tm9kZSogY3JlYXRlRWxlbWVudExpc3Qo
RWxlbWVudE5vZGUqIGVsZW1zLCBpbnQgZWxpc2lvbnMsIEV4cHJlc3Npb25Ob2RlKiBleHByKSB7
IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEVsZW1lbnROb2RlKGVsZW1zLCBlbGlzaW9ucywg
ZXhwcik7IH0KIAotICAgIFBhcmFtZXRlck5vZGUqIGNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3Qo
RGVzdHJ1Y3R1cmluZ1BhdHRlcm4gcGF0dGVybikgeyByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5h
KSBQYXJhbWV0ZXJOb2RlKHBhdHRlcm4pOyB9Ci0gICAgUGFyYW1ldGVyTm9kZSogY3JlYXRlRm9y
bWFsUGFyYW1ldGVyTGlzdChQYXJhbWV0ZXJOb2RlKiBsaXN0LCBEZXN0cnVjdHVyaW5nUGF0dGVy
biBwYXR0ZXJuKSB7IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFBhcmFtZXRlck5vZGUobGlz
dCwgcGF0dGVybik7IH0KKyAgICBGb3JtYWxQYXJhbWV0ZXJMaXN0IGNyZWF0ZUZvcm1hbFBhcmFt
ZXRlckxpc3QoKSB7IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEZ1bmN0aW9uUGFyYW1ldGVy
cygpOyB9CisgICAgdm9pZCBhcHBlbmRQYXJhbWV0ZXIoRm9ybWFsUGFyYW1ldGVyTGlzdCBsaXN0
LCBEZXN0cnVjdHVyaW5nUGF0dGVybiBwYXR0ZXJuKSB7IGxpc3QtPmFwcGVuZChwYXR0ZXJuKTsg
fQogCiAgICAgQ2FzZUNsYXVzZU5vZGUqIGNyZWF0ZUNsYXVzZShFeHByZXNzaW9uTm9kZSogZXhw
ciwgSlNDOjpTb3VyY2VFbGVtZW50cyogc3RhdGVtZW50cykgeyByZXR1cm4gbmV3IChtX3BhcnNl
ckFyZW5hKSBDYXNlQ2xhdXNlTm9kZShleHByLCBzdGF0ZW1lbnRzKTsgfQogICAgIENsYXVzZUxp
c3ROb2RlKiBjcmVhdGVDbGF1c2VMaXN0KENhc2VDbGF1c2VOb2RlKiBjbGF1c2UpIHsgcmV0dXJu
IG5ldyAobV9wYXJzZXJBcmVuYSkgQ2xhdXNlTGlzdE5vZGUoY2xhdXNlKTsgfQogICAgIENsYXVz
ZUxpc3ROb2RlKiBjcmVhdGVDbGF1c2VMaXN0KENsYXVzZUxpc3ROb2RlKiB0YWlsLCBDYXNlQ2xh
dXNlTm9kZSogY2xhdXNlKSB7IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIENsYXVzZUxpc3RO
b2RlKHRhaWwsIGNsYXVzZSk7IH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZ1bmNEZWNs
U3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IFBhcnNlckZ1
bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgaW5mbykKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVG
dW5jRGVjbFN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBQ
YXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4mIGZ1bmN0aW9uSW5mbykKICAgICB7Ci0gICAg
ICAgIEZ1bmNEZWNsTm9kZSogZGVjbCA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRnVuY0RlY2xOb2Rl
KGxvY2F0aW9uLCAqaW5mby5uYW1lLCBpbmZvLmJvZHksCi0gICAgICAgICAgICBtX3NvdXJjZUNv
ZGUtPnN1YkV4cHJlc3Npb24oaW5mby5zdGFydEZ1bmN0aW9uT2Zmc2V0LCBpbmZvLmVuZEZ1bmN0
aW9uT2Zmc2V0LCBpbmZvLmJvZHlTdGFydExpbmUsIGluZm8uYm9keVN0YXJ0Q29sdW1uKSwgaW5m
by5wYXJhbWV0ZXJzKTsKLSAgICAgICAgaWYgKCppbmZvLm5hbWUgPT0gbV92bS0+cHJvcGVydHlO
YW1lcy0+YXJndW1lbnRzKQorICAgICAgICBGdW5jRGVjbE5vZGUqIGRlY2wgPSBuZXcgKG1fcGFy
c2VyQXJlbmEpIEZ1bmNEZWNsTm9kZShsb2NhdGlvbiwgKmZ1bmN0aW9uSW5mby5uYW1lLCBmdW5j
dGlvbkluZm8uYm9keSwKKyAgICAgICAgICAgIG1fc291cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihm
dW5jdGlvbkluZm8uc3RhcnRPZmZzZXQsIGZ1bmN0aW9uSW5mby5lbmRPZmZzZXQsIGZ1bmN0aW9u
SW5mby5zdGFydExpbmUsIGZ1bmN0aW9uSW5mby5ib2R5U3RhcnRDb2x1bW4pKTsKKyAgICAgICAg
aWYgKCpmdW5jdGlvbkluZm8ubmFtZSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMp
CiAgICAgICAgICAgICB1c2VzQXJndW1lbnRzKCk7CiAgICAgICAgIG1fc2NvcGUubV9mdW5jRGVj
bGFyYXRpb25zLmFwcGVuZChkZWNsLT5ib2R5KCkpOwotICAgICAgICBpbmZvLmJvZHktPnNldExv
YyhpbmZvLmJvZHlTdGFydExpbmUsIGluZm8uYm9keUVuZExpbmUsIGxvY2F0aW9uLnN0YXJ0T2Zm
c2V0LCBsb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOworICAgICAgICBmdW5jdGlvbkluZm8uYm9k
eS0+c2V0TG9jKGZ1bmN0aW9uSW5mby5zdGFydExpbmUsIGZ1bmN0aW9uSW5mby5lbmRMaW5lLCBs
b2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0KTsKICAgICAgICAg
cmV0dXJuIGRlY2w7CiAgICAgfQogCkBAIC00ODYsOSArNDgwLDkgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVG
b3JJbkxvb3AoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUGFzc1JlZlB0cjxEZXN0
cnVjdHVyaW5nUGF0dGVybk5vZGU+IHBhdHRlcm4sIEV4cHJlc3Npb25Ob2RlKiBpdGVyLCBTdGF0
ZW1lbnROb2RlKiBzdGF0ZW1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZVN0YXJ0LCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZURpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZUVuZCwgaW50
IHN0YXJ0LCBpbnQgZW5kLCBWYXJpYWJsZUVudmlyb25tZW50JiBsZXhpY2FsVmFyaWFibGVzKQor
ICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZvckluTG9vcChjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uLCBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUqIHBhdHRlcm4sIEV4cHJlc3Npb25O
b2RlKiBpdGVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZVN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZURpdm90LCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZUVuZCwgaW50IHN0YXJ0LCBpbnQgZW5kLCBWYXJpYWJsZUVudmlyb25tZW50JiBsZXhp
Y2FsVmFyaWFibGVzKQogICAgIHsKLSAgICAgICAgYXV0byBsZXhwciA9IG5ldyAobV9wYXJzZXJB
cmVuYSkgRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlKGxvY2F0aW9uLCBwYXR0ZXJuLmdldCgp
LCAwKTsKKyAgICAgICAgYXV0byBsZXhwciA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRGVzdHJ1Y3R1
cmluZ0Fzc2lnbm1lbnROb2RlKGxvY2F0aW9uLCBwYXR0ZXJuLCAwKTsKICAgICAgICAgcmV0dXJu
IGNyZWF0ZUZvckluTG9vcChsb2NhdGlvbiwgbGV4cHIsIGl0ZXIsIHN0YXRlbWVudHMsIGVTdGFy
dCwgZURpdm90LCBlRW5kLCBzdGFydCwgZW5kLCBsZXhpY2FsVmFyaWFibGVzKTsKICAgICB9CiAg
ICAgCkBAIC01MDAsOSArNDk0LDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIH0KICAgICAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVGb3JPZkxvb3AoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUGFzc1JlZlB0cjxEZXN0cnVjdHVyaW5nUGF0dGVybk5v
ZGU+IHBhdHRlcm4sIEV4cHJlc3Npb25Ob2RlKiBpdGVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1l
bnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZVN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
ZURpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZUVuZCwgaW50IHN0YXJ0LCBpbnQgZW5kLCBW
YXJpYWJsZUVudmlyb25tZW50JiBsZXhpY2FsVmFyaWFibGVzKQorICAgIFN0YXRlbWVudE5vZGUq
IGNyZWF0ZUZvck9mTG9vcChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBEZXN0cnVj
dHVyaW5nUGF0dGVybk5vZGUqIHBhdHRlcm4sIEV4cHJlc3Npb25Ob2RlKiBpdGVyLCBTdGF0ZW1l
bnROb2RlKiBzdGF0ZW1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZVN0YXJ0LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZURpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZUVuZCwgaW50IHN0
YXJ0LCBpbnQgZW5kLCBWYXJpYWJsZUVudmlyb25tZW50JiBsZXhpY2FsVmFyaWFibGVzKQogICAg
IHsKLSAgICAgICAgYXV0byBsZXhwciA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRGVzdHJ1Y3R1cmlu
Z0Fzc2lnbm1lbnROb2RlKGxvY2F0aW9uLCBwYXR0ZXJuLmdldCgpLCAwKTsKKyAgICAgICAgYXV0
byBsZXhwciA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2Rl
KGxvY2F0aW9uLCBwYXR0ZXJuLCAwKTsKICAgICAgICAgcmV0dXJuIGNyZWF0ZUZvck9mTG9vcChs
b2NhdGlvbiwgbGV4cHIsIGl0ZXIsIHN0YXRlbWVudHMsIGVTdGFydCwgZURpdm90LCBlRW5kLCBz
dGFydCwgZW5kLCBsZXhpY2FsVmFyaWFibGVzKTsKICAgICB9CiAKQEAgLTc0NSwxNCArNzM5LDE0
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNSZXNvbHZlKEV4cHJlc3Npb25Ob2RlKiBleHByKSBj
b25zdCB7IHJldHVybiBleHByLT5pc1Jlc29sdmVOb2RlKCk7IH0KIAotICAgIEV4cHJlc3Npb25O
b2RlKiBjcmVhdGVEZXN0cnVjdHVyaW5nQXNzaWdubWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uLCBQYXNzUmVmUHRyPERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZT4gcGF0dGVybiwg
RXhwcmVzc2lvbk5vZGUqIGluaXRpYWxpemVyKQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVE
ZXN0cnVjdHVyaW5nQXNzaWdubWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBE
ZXN0cnVjdHVyaW5nUGF0dGVybiBwYXR0ZXJuLCBFeHByZXNzaW9uTm9kZSogaW5pdGlhbGl6ZXIp
CiAgICAgewotICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBEZXN0cnVjdHVyaW5n
QXNzaWdubWVudE5vZGUobG9jYXRpb24sIHBhdHRlcm4uZ2V0KCksIGluaXRpYWxpemVyKTsKKyAg
ICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnRO
b2RlKGxvY2F0aW9uLCBwYXR0ZXJuLCBpbml0aWFsaXplcik7CiAgICAgfQogICAgIAogICAgIEFy
cmF5UGF0dGVybiBjcmVhdGVBcnJheVBhdHRlcm4oY29uc3QgSlNUb2tlbkxvY2F0aW9uJikKICAg
ICB7Ci0gICAgICAgIHJldHVybiBBcnJheVBhdHRlcm5Ob2RlOjpjcmVhdGUoKTsKKyAgICAgICAg
cmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgQXJyYXlQYXR0ZXJuTm9kZSgpOwogICAgIH0KICAg
ICAKICAgICB2b2lkIGFwcGVuZEFycmF5UGF0dGVyblNraXBFbnRyeShBcnJheVBhdHRlcm4gbm9k
ZSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbikKQEAgLTc2MiwzMiArNzU2LDMyIEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgYXBwZW5kQXJyYXlQYXR0ZXJuRW50cnkoQXJyYXlQYXR0ZXJu
IG5vZGUsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIERlc3RydWN0dXJpbmdQYXR0
ZXJuIHBhdHRlcm4sIEV4cHJlc3Npb25Ob2RlKiBkZWZhdWx0VmFsdWUpCiAgICAgewotICAgICAg
ICBub2RlLT5hcHBlbmRJbmRleChBcnJheVBhdHRlcm5Ob2RlOjpCaW5kaW5nVHlwZTo6RWxlbWVu
dCwgbG9jYXRpb24sIHBhdHRlcm4uZ2V0KCksIGRlZmF1bHRWYWx1ZSk7CisgICAgICAgIG5vZGUt
PmFwcGVuZEluZGV4KEFycmF5UGF0dGVybk5vZGU6OkJpbmRpbmdUeXBlOjpFbGVtZW50LCBsb2Nh
dGlvbiwgcGF0dGVybiwgZGVmYXVsdFZhbHVlKTsKICAgICB9CiAKICAgICB2b2lkIGFwcGVuZEFy
cmF5UGF0dGVyblJlc3RFbnRyeShBcnJheVBhdHRlcm4gbm9kZSwgY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbiwgRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gcGF0dGVybikKICAgICB7Ci0gICAg
ICAgIG5vZGUtPmFwcGVuZEluZGV4KEFycmF5UGF0dGVybk5vZGU6OkJpbmRpbmdUeXBlOjpSZXN0
RWxlbWVudCwgbG9jYXRpb24sIHBhdHRlcm4uZ2V0KCksIG51bGxwdHIpOworICAgICAgICBub2Rl
LT5hcHBlbmRJbmRleChBcnJheVBhdHRlcm5Ob2RlOjpCaW5kaW5nVHlwZTo6UmVzdEVsZW1lbnQs
IGxvY2F0aW9uLCBwYXR0ZXJuLCBudWxscHRyKTsKICAgICB9CiAKICAgICB2b2lkIGZpbmlzaEFy
cmF5UGF0dGVybihBcnJheVBhdHRlcm4gbm9kZSwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90RW5kKQogICAgIHsKLSAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZS5nZXQo
KSwgZGl2b3RTdGFydCwgZGl2b3QsIGRpdm90RW5kKTsKKyAgICAgICAgc2V0RXhjZXB0aW9uTG9j
YXRpb24obm9kZSwgZGl2b3RTdGFydCwgZGl2b3QsIGRpdm90RW5kKTsKICAgICB9CiAgICAgCiAg
ICAgT2JqZWN0UGF0dGVybiBjcmVhdGVPYmplY3RQYXR0ZXJuKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYpCiAgICAgewotICAgICAgICByZXR1cm4gT2JqZWN0UGF0dGVybk5vZGU6OmNyZWF0ZSgpOwor
ICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBPYmplY3RQYXR0ZXJuTm9kZSgpOwog
ICAgIH0KICAgICAKICAgICB2b2lkIGFwcGVuZE9iamVjdFBhdHRlcm5FbnRyeShPYmplY3RQYXR0
ZXJuIG5vZGUsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGJvb2wgd2FzU3RyaW5n
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBEZXN0cnVjdHVyaW5nUGF0dGVybiBwYXR0
ZXJuLCBFeHByZXNzaW9uTm9kZSogZGVmYXVsdFZhbHVlKQogICAgIHsKLSAgICAgICAgbm9kZS0+
YXBwZW5kRW50cnkobG9jYXRpb24sIGlkZW50aWZpZXIsIHdhc1N0cmluZywgcGF0dGVybi5nZXQo
KSwgZGVmYXVsdFZhbHVlKTsKKyAgICAgICAgbm9kZS0+YXBwZW5kRW50cnkobG9jYXRpb24sIGlk
ZW50aWZpZXIsIHdhc1N0cmluZywgcGF0dGVybiwgZGVmYXVsdFZhbHVlKTsKICAgICB9CiAgICAg
CiAgICAgQmluZGluZ1BhdHRlcm4gY3JlYXRlQmluZGluZ0xvY2F0aW9uKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImIGJvdW5kUHJvcGVydHksIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBzdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVuZCwgQXNzaWdubWVudENvbnRl
eHQgY29udGV4dCkKICAgICB7Ci0gICAgICAgIHJldHVybiBCaW5kaW5nTm9kZTo6Y3JlYXRlKGJv
dW5kUHJvcGVydHksIHN0YXJ0LCBlbmQsIGNvbnRleHQpOworICAgICAgICByZXR1cm4gbmV3ICht
X3BhcnNlckFyZW5hKSBCaW5kaW5nTm9kZShib3VuZFByb3BlcnR5LCBzdGFydCwgZW5kLCBjb250
ZXh0KTsKICAgICB9CiAKICAgICB2b2lkIHNldEVuZE9mZnNldChOb2RlKiBub2RlLCBpbnQgb2Zm
c2V0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAJKHJldmlzaW9u
IDE4NjkxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OTQsNyArNDk0LDcgQEAgc3RhdGljIGNvbnN0IExDaGFyIHNpbmdsZUNo
YXJhY3RlckVzY2FwZQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIExleGVyPFQ+OjpMZXhlcihW
TSogdm0sIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUpCi0gICAgOiBtX2lzUmVwYXJz
aW5nKGZhbHNlKQorICAgIDogbV9pc1JlcGFyc2luZ0Z1bmN0aW9uKGZhbHNlKQogICAgICwgbV92
bSh2bSkKICAgICAsIG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbihidWlsdGluTW9kZSA9PSBKU1Bh
cnNlckJ1aWx0aW5Nb2RlOjpCdWlsdGluKQogewpAQCAtMTcxNSw3ICsxNzE1LDYgQEAgYm9vbCBM
ZXhlcjxUPjo6bmV4dFRva2VuSXNDb2xvbigpCiAgICAgcmV0dXJuIGNvZGUgPCBtX2NvZGVFbmQg
JiYgKmNvZGUgPT0gJzonOwogfQogCi0jaWYgRU5BQkxFKEVTNl9BUlJPV0ZVTkNUSU9OX1NZTlRB
WCkKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogdm9pZCBMZXhlcjxUPjo6c2V0VG9rZW5Qb3NpdGlv
bihKU1Rva2VuKiB0b2tlblJlY29yZCkKIHsKQEAgLTE3MjUsNyArMTcyNCw2IEBAIHZvaWQgTGV4
ZXI8VD46OnNldFRva2VuUG9zaXRpb24oSlNUb2tlbioKICAgICB0b2tlbkRhdGEtPmxpbmVTdGFy
dE9mZnNldCA9IGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQoKTsKICAgICBBU1NFUlQodG9rZW5EYXRh
LT5vZmZzZXQgPj0gdG9rZW5EYXRhLT5saW5lU3RhcnRPZmZzZXQpOwogfQotI2VuZGlmCiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgogSlNUb2tlblR5cGUgTGV4ZXI8VD46OmxleChKU1Rva2VuKiB0
b2tlblJlY29yZCwgdW5zaWduZWQgbGV4ZXJGbGFncywgYm9vbCBzdHJpY3RNb2RlKQpAQCAtMjQx
MSw3ICsyNDA5LDcgQEAgdm9pZCBMZXhlcjxUPjo6Y2xlYXIoKQogICAgIFZlY3RvcjxVQ2hhcj4g
bmV3QnVmZmVyRm9yUmF3VGVtcGxhdGVTdHJpbmcxNjsKICAgICBtX2J1ZmZlckZvclJhd1RlbXBs
YXRlU3RyaW5nMTYuc3dhcChuZXdCdWZmZXJGb3JSYXdUZW1wbGF0ZVN0cmluZzE2KTsKIAotICAg
IG1faXNSZXBhcnNpbmcgPSBmYWxzZTsKKyAgICBtX2lzUmVwYXJzaW5nRnVuY3Rpb24gPSBmYWxz
ZTsKIH0KIAogLy8gSW5zdGFudGlhdGUgdGhlIHR3byBmbGF2b3JzIG9mIExleGVyIHdlIG5lZWQg
aW5zdGVhZCBvZiBwdXR0aW5nIG1vc3Qgb2YgdGhpcyBmaWxlIGluIExleGVyLmgKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgJKHJldmlzaW9uIDE4NjkxMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODQsMTIg
Kzg0LDEwIEBAIHB1YmxpYzoKIAogICAgIC8vIEZ1bmN0aW9ucyB0byBzZXQgdXAgcGFyc2luZy4K
ICAgICB2b2lkIHNldENvZGUoY29uc3QgU291cmNlQ29kZSYsIFBhcnNlckFyZW5hKik7Ci0gICAg
dm9pZCBzZXRJc1JlcGFyc2luZygpIHsgbV9pc1JlcGFyc2luZyA9IHRydWU7IH0KLSAgICBib29s
IGlzUmVwYXJzaW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc1JlcGFyc2luZzsgfQorICAgIHZvaWQg
c2V0SXNSZXBhcnNpbmdGdW5jdGlvbigpIHsgbV9pc1JlcGFyc2luZ0Z1bmN0aW9uID0gdHJ1ZTsg
fQorICAgIGJvb2wgaXNSZXBhcnNpbmdGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNSZXBh
cnNpbmdGdW5jdGlvbjsgfQogCi0jaWYgRU5BQkxFKEVTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCkK
ICAgICB2b2lkIHNldFRva2VuUG9zaXRpb24oSlNUb2tlbiogdG9rZW5SZWNvcmQpOwotI2VuZGlm
CiAgICAgSlNUb2tlblR5cGUgbGV4KEpTVG9rZW4qLCB1bnNpZ25lZCwgYm9vbCBzdHJpY3RNb2Rl
KTsKICAgICBib29sIG5leHRUb2tlbklzQ29sb24oKTsKICAgICBpbnQgbGluZU51bWJlcigpIGNv
bnN0IHsgcmV0dXJuIG1fbGluZU51bWJlcjsgfQpAQCAtMjI0LDcgKzIyMiw3IEBAIHByaXZhdGU6
CiAgICAgY29uc3QgVCogbV9saW5lU3RhcnQ7CiAgICAgSlNUZXh0UG9zaXRpb24gbV9wb3NpdGlv
bkJlZm9yZUxhc3ROZXdsaW5lOwogICAgIEpTVG9rZW5Mb2NhdGlvbiBtX2xhc3RUb2NrZW5Mb2Nh
dGlvbjsKLSAgICBib29sIG1faXNSZXBhcnNpbmc7CisgICAgYm9vbCBtX2lzUmVwYXJzaW5nRnVu
Y3Rpb247CiAgICAgYm9vbCBtX2F0TGluZVN0YXJ0OwogICAgIGJvb2wgbV9lcnJvcjsKICAgICBT
dHJpbmcgbV9sZXhFcnJvck1lc3NhZ2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL05vZGVDb25zdHJ1Y3RvcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAkocmV2aXNpb24gMTg2OTEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTgyOCwzNCArODI4LDIyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAg
ICBpbmxpbmUgUGFyYW1ldGVyTm9kZTo6UGFyYW1ldGVyTm9kZShQYXNzUmVmUHRyPERlc3RydWN0
dXJpbmdQYXR0ZXJuTm9kZT4gcGF0dGVybikKLSAgICAgICAgOiBtX3BhdHRlcm4ocGF0dGVybikK
LSAgICAgICAgLCBtX25leHQoMCkKKyAgICBpbmxpbmUgRnVuY3Rpb25QYXJhbWV0ZXJzOjpGdW5j
dGlvblBhcmFtZXRlcnMoKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fcGF0dGVybik7CiAgICAg
fQogCi0gICAgaW5saW5lIFBhcmFtZXRlck5vZGU6OlBhcmFtZXRlck5vZGUoUGFyYW1ldGVyTm9k
ZSogcHJldmlvdXMsIFBhc3NSZWZQdHI8RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlPiBwYXR0ZXJu
KQotICAgICAgICA6IG1fcGF0dGVybihwYXR0ZXJuKQotICAgICAgICAsIG1fbmV4dCgwKQotICAg
IHsKLSAgICAgICAgcHJldmlvdXMtPm1fbmV4dCA9IHRoaXM7Ci0gICAgICAgIEFTU0VSVChtX3Bh
dHRlcm4pOwotICAgICAgICBBU1NFUlQocHJldmlvdXMtPm1fcGF0dGVybik7Ci0gICAgfQotCi0g
ICAgaW5saW5lIEZ1bmNFeHByTm9kZTo6RnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbkJvZHlOb2RlKiBi
b2R5LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcmFtZXRlck5vZGUqIHBhcmFtZXRlcikK
KyAgICBpbmxpbmUgRnVuY0V4cHJOb2RlOjpGdW5jRXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEZ1bmN0aW9uQm9keU5vZGUq
IGJvZHksIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKICAgICAgICAgOiBFeHByZXNzaW9uTm9k
ZShsb2NhdGlvbikKICAgICAgICAgLCBtX2JvZHkoYm9keSkKICAgICB7Ci0gICAgICAgIG1fYm9k
eS0+ZmluaXNoUGFyc2luZyhzb3VyY2UsIHBhcmFtZXRlciwgaWRlbnQsIEZ1bmN0aW9uRXhwcmVz
c2lvbik7CisgICAgICAgIG1fYm9keS0+ZmluaXNoUGFyc2luZyhzb3VyY2UsIGlkZW50LCBGdW5j
dGlvbkV4cHJlc3Npb24pOwogICAgIH0KIAotICAgIGlubGluZSBGdW5jRGVjbE5vZGU6OkZ1bmNE
ZWNsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCwgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgY29uc3QgU291cmNlQ29kZSYgc291cmNl
LCBQYXJhbWV0ZXJOb2RlKiBwYXJhbWV0ZXIpCisgICAgaW5saW5lIEZ1bmNEZWNsTm9kZTo6RnVu
Y0RlY2xOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50LCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UpCiAgICAgICAgIDogU3RhdGVtZW50Tm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2JvZHko
Ym9keSkKICAgICB7Ci0gICAgICAgIG1fYm9keS0+ZmluaXNoUGFyc2luZyhzb3VyY2UsIHBhcmFt
ZXRlciwgaWRlbnQsIEZ1bmN0aW9uRGVjbGFyYXRpb24pOworICAgICAgICBtX2JvZHktPmZpbmlz
aFBhcnNpbmcoc291cmNlLCBpZGVudCwgRnVuY3Rpb25EZWNsYXJhdGlvbik7CiAgICAgfQogCiAj
aWYgRU5BQkxFKEVTNl9DTEFTU19TWU5UQVgpCkBAIC05NTQsMjYgKzk0MiwxMSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICB7CiAgICAgfQogICAgIAotICAgIGlubGluZSBSZWY8QXJyYXlQYXR0ZXJu
Tm9kZT4gQXJyYXlQYXR0ZXJuTm9kZTo6Y3JlYXRlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEFycmF5UGF0dGVybk5vZGUpOwotICAgIH0KLSAgICAKICAgICBpbmxpbmUg
T2JqZWN0UGF0dGVybk5vZGU6Ok9iamVjdFBhdHRlcm5Ob2RlKCkKICAgICAgICAgOiBEZXN0cnVj
dHVyaW5nUGF0dGVybk5vZGUoKQogICAgIHsKICAgICB9CiAgICAgCi0gICAgaW5saW5lIFJlZjxP
YmplY3RQYXR0ZXJuTm9kZT4gT2JqZWN0UGF0dGVybk5vZGU6OmNyZWF0ZSgpCi0gICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBPYmplY3RQYXR0ZXJuTm9kZSk7Ci0gICAgfQotCi0g
ICAgaW5saW5lIFJlZjxCaW5kaW5nTm9kZT4gQmluZGluZ05vZGU6OmNyZWF0ZShjb25zdCBJZGVu
dGlmaWVyJiBib3VuZFByb3BlcnR5LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBlbmQsIEFzc2lnbm1lbnRDb250ZXh0IGNvbnRleHQpCi0gICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCaW5kaW5nTm9kZShib3VuZFByb3BlcnR5LCBz
dGFydCwgZW5kLCBjb250ZXh0KSk7Ci0gICAgfQotICAgIAogICAgIGlubGluZSBCaW5kaW5nTm9k
ZTo6QmluZGluZ05vZGUoY29uc3QgSWRlbnRpZmllciYgYm91bmRQcm9wZXJ0eSwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIHN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZW5kLCBBc3NpZ25tZW50
Q29udGV4dCBjb250ZXh0KQogICAgICAgICA6IERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSgpCiAg
ICAgICAgICwgbV9kaXZvdFN0YXJ0KHN0YXJ0KQpAQCAtOTgzLDcgKzk1Niw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIHsKICAgICB9CiAgICAgCi0gICAgaW5saW5lIERlc3RydWN0dXJpbmdBc3Np
Z25tZW50Tm9kZTo6RGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIFBhc3NSZWZQdHI8RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlPiBiaW5k
aW5ncywgRXhwcmVzc2lvbk5vZGUqIGluaXRpYWxpemVyKQorICAgIGlubGluZSBEZXN0cnVjdHVy
aW5nQXNzaWdubWVudE5vZGU6OkRlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGxvY2F0aW9uLCBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUqIGJpbmRpbmdz
LCBFeHByZXNzaW9uTm9kZSogaW5pdGlhbGl6ZXIpCiAgICAgICAgIDogRXhwcmVzc2lvbk5vZGUo
bG9jYXRpb24pCiAgICAgICAgICwgbV9iaW5kaW5ncyhiaW5kaW5ncykKICAgICAgICAgLCBtX2lu
aXRpYWxpemVyKGluaXRpYWxpemVyKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Ob2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2Rlcy5jcHAJKHJldmlzaW9uIDE4NjkxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNyArMTE3LDcgQEAgU3RhdGVtZW50
Tm9kZSogU2NvcGVOb2RlOjpzaW5nbGVTdGF0ZW1lbgogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gUHJvZ3JhbU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAot
UHJvZ3JhbU5vZGU6OlByb2dyYW1Ob2RlKFBhcnNlckFyZW5hJiBwYXJzZXJBcmVuYSwgY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVu
ZExvY2F0aW9uLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3Vy
Y2VFbGVtZW50cyogY2hpbGRyZW4sIFZhcmlhYmxlRW52aXJvbm1lbnQmIHZhckVudmlyb25tZW50
LCBGdW5jdGlvblN0YWNrJiBmdW5jU3RhY2ssIFZhcmlhYmxlRW52aXJvbm1lbnQmIGxleGljYWxW
YXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVz
LCBpbnQgbnVtQ29uc3RhbnRzKQorUHJvZ3JhbU5vZGU6OlByb2dyYW1Ob2RlKFBhcnNlckFyZW5h
JiBwYXJzZXJBcmVuYSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5z
aWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhcmlhYmxlRW52aXJv
bm1lbnQmIHZhckVudmlyb25tZW50LCBGdW5jdGlvblN0YWNrJiBmdW5jU3RhY2ssIFZhcmlhYmxl
RW52aXJvbm1lbnQmIGxleGljYWxWYXJpYWJsZXMsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3Rh
bnRzKQogICAgIDogU2NvcGVOb2RlKHBhcnNlckFyZW5hLCBzdGFydExvY2F0aW9uLCBlbmRMb2Nh
dGlvbiwgc291cmNlLCBjaGlsZHJlbiwgdmFyRW52aXJvbm1lbnQsIGZ1bmNTdGFjaywgbGV4aWNh
bFZhcmlhYmxlcywgZmVhdHVyZXMsIG51bUNvbnN0YW50cykKICAgICAsIG1fc3RhcnRDb2x1bW4o
c3RhcnRDb2x1bW4pCiAgICAgLCBtX2VuZENvbHVtbihlbmRDb2x1bW4pCkBAIC0xMzEsNyArMTMx
LDcgQEAgdm9pZCBQcm9ncmFtTm9kZTo6c2V0Q2xvc2VkVmFyaWFibGVzKFZlYwogCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRXZhbE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIAotRXZhbE5vZGU6OkV2YWxOb2RlKFBhcnNlckFyZW5hJiBwYXJzZXJBcmVuYSwg
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVt
ZW50cyogY2hpbGRyZW4sIFZhcmlhYmxlRW52aXJvbm1lbnQmIHZhckVudmlyb25tZW50LCBGdW5j
dGlvblN0YWNrJiBmdW5jU3RhY2ssIFZhcmlhYmxlRW52aXJvbm1lbnQmIGxleGljYWxWYXJpYWJs
ZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQg
bnVtQ29uc3RhbnRzKQorRXZhbE5vZGU6OkV2YWxOb2RlKFBhcnNlckFyZW5hJiBwYXJzZXJBcmVu
YSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VF
bGVtZW50cyogY2hpbGRyZW4sIFZhcmlhYmxlRW52aXJvbm1lbnQmIHZhckVudmlyb25tZW50LCBG
dW5jdGlvblN0YWNrJiBmdW5jU3RhY2ssIFZhcmlhYmxlRW52aXJvbm1lbnQmIGxleGljYWxWYXJp
YWJsZXMsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29k
ZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQogICAgIDogU2NvcGVOb2RlKHBh
cnNlckFyZW5hLCBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgc291cmNlLCBjaGlsZHJlbiwg
dmFyRW52aXJvbm1lbnQsIGZ1bmNTdGFjaywgbGV4aWNhbFZhcmlhYmxlcywgZmVhdHVyZXMsIG51
bUNvbnN0YW50cykKICAgICAsIG1fZW5kQ29sdW1uKGVuZENvbHVtbikKIHsKQEAgLTEzOSwzOSAr
MTM5LDExIEBAIEV2YWxOb2RlOjpFdmFsTm9kZShQYXJzZXJBcmVuYSYgcGFyc2VyQXIKIAogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9uQm9keU5vZGUgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVmPEZ1bmN0aW9uUGFyYW1ldGVycz4gRnVuY3Rpb25Q
YXJhbWV0ZXJzOjpjcmVhdGUoUGFyYW1ldGVyTm9kZSogZmlyc3RQYXJhbWV0ZXIpCi17Ci0gICAg
dW5zaWduZWQgcGFyYW1ldGVyQ291bnQgPSAwOwotICAgIGZvciAoUGFyYW1ldGVyTm9kZSogcGFy
YW1ldGVyID0gZmlyc3RQYXJhbWV0ZXI7IHBhcmFtZXRlcjsgcGFyYW1ldGVyID0gcGFyYW1ldGVy
LT5uZXh0UGFyYW0oKSkKLSAgICAgICAgKytwYXJhbWV0ZXJDb3VudDsKLQotICAgIHNpemVfdCBv
YmplY3RTaXplID0gc2l6ZW9mKEZ1bmN0aW9uUGFyYW1ldGVycykgLSBzaXplb2Yodm9pZCopICsg
c2l6ZW9mKERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSopICogcGFyYW1ldGVyQ291bnQ7Ci0gICAg
dm9pZCogc2xvdCA9IGZhc3RNYWxsb2Mob2JqZWN0U2l6ZSk7Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgKHNsb3QpIEZ1bmN0aW9uUGFyYW1ldGVycyhmaXJzdFBhcmFtZXRlciwgcGFyYW1ldGVy
Q291bnQpKTsKLX0KLQotRnVuY3Rpb25QYXJhbWV0ZXJzOjpGdW5jdGlvblBhcmFtZXRlcnMoUGFy
YW1ldGVyTm9kZSogZmlyc3RQYXJhbWV0ZXIsIHVuc2lnbmVkIHNpemUpCi0gICAgOiBtX3NpemUo
c2l6ZSkKLXsKLSAgICB1bnNpZ25lZCBpID0gMDsKLSAgICBmb3IgKFBhcmFtZXRlck5vZGUqIHBh
cmFtZXRlciA9IGZpcnN0UGFyYW1ldGVyOyBwYXJhbWV0ZXI7IHBhcmFtZXRlciA9IHBhcmFtZXRl
ci0+bmV4dFBhcmFtKCkpIHsKLSAgICAgICAgYXV0byBwYXR0ZXJuID0gcGFyYW1ldGVyLT5wYXR0
ZXJuKCk7Ci0gICAgICAgIHBhdHRlcm4tPnJlZigpOwotICAgICAgICBwYXR0ZXJucygpW2krK10g
PSBwYXR0ZXJuOwotICAgIH0KLX0KLQotRnVuY3Rpb25QYXJhbWV0ZXJzOjp+RnVuY3Rpb25QYXJh
bWV0ZXJzKCkKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCi0g
ICAgICAgIHBhdHRlcm5zKClbaV0tPmRlcmVmKCk7Ci19Ci0KIEZ1bmN0aW9uQm9keU5vZGU6OkZ1
bmN0aW9uQm9keU5vZGUoCiAgICAgUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24m
IHN0YXJ0TG9jYXRpb24sIAogICAgIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24s
IHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIAotICAgIGludCBmdW5j
dGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0
YXJ0LAotICAgIGJvb2wgaXNJblN0cmljdENvbnRleHQsIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1
Y3RvcktpbmQpCisgICAgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25OYW1l
U3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIAorICAg
IENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50
LCBGdW5jdGlvblBhcnNlTW9kZSBtb2RlKQogICAgICAgICA6IFN0YXRlbWVudE5vZGUoZW5kTG9j
YXRpb24pCiAgICAgICAgICwgbV9zdGFydENvbHVtbihzdGFydENvbHVtbikKICAgICAgICAgLCBt
X2VuZENvbHVtbihlbmRDb2x1bW4pCkBAIC0xNzksMTYgKzE1MSwxNyBAQCBGdW5jdGlvbkJvZHlO
b2RlOjpGdW5jdGlvbkJvZHlOb2RlKAogICAgICAgICAsIG1fZnVuY3Rpb25OYW1lU3RhcnQoZnVu
Y3Rpb25OYW1lU3RhcnQpCiAgICAgICAgICwgbV9wYXJhbWV0ZXJzU3RhcnQocGFyYW1ldGVyc1N0
YXJ0KQogICAgICAgICAsIG1fc3RhcnRTdGFydE9mZnNldChzdGFydExvY2F0aW9uLnN0YXJ0T2Zm
c2V0KQorICAgICAgICAsIG1fcGFyYW1ldGVyQ291bnQocGFyYW1ldGVyQ291bnQpCisgICAgICAg
ICwgbV9wYXJzZU1vZGUobW9kZSkKICAgICAgICAgLCBtX2lzSW5TdHJpY3RDb250ZXh0KGlzSW5T
dHJpY3RDb250ZXh0KQogICAgICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKQogewogICAgIEFTU0VSVChtX2NvbnN0cnVjdG9yS2lu
ZCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSk7CiB9CiAKLXZvaWQg
RnVuY3Rpb25Cb2R5Tm9kZTo6ZmluaXNoUGFyc2luZyhjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IFBhcmFtZXRlck5vZGUqIGZpcnN0UGFyYW1ldGVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwg
ZW51bSBGdW5jdGlvbk1vZGUgZnVuY3Rpb25Nb2RlKQordm9pZCBGdW5jdGlvbkJvZHlOb2RlOjpm
aW5pc2hQYXJzaW5nKGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgY29uc3QgSWRlbnRpZmllciYg
aWRlbnQsIGVudW0gRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSkKIHsKICAgICBtX3NvdXJjZSA9
IHNvdXJjZTsKLSAgICBtX3BhcmFtZXRlcnMgPSBGdW5jdGlvblBhcmFtZXRlcnM6OmNyZWF0ZShm
aXJzdFBhcmFtZXRlcik7CiAgICAgbV9pZGVudCA9IGlkZW50OwogICAgIG1fZnVuY3Rpb25Nb2Rl
ID0gZnVuY3Rpb25Nb2RlOwogfQpAQCAtMjAxLDE3ICsxNzQsMTcgQEAgdm9pZCBGdW5jdGlvbkJv
ZHlOb2RlOjpzZXRFbmRQb3NpdGlvbihKUwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gRnVuY3Rpb25Ob2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUZ1bmN0
aW9uTm9kZTo6RnVuY3Rpb25Ob2RlKFBhcnNlckFyZW5hJiBwYXJzZXJBcmVuYSwgY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExv
Y2F0aW9uLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VF
bGVtZW50cyogY2hpbGRyZW4sIFZhcmlhYmxlRW52aXJvbm1lbnQmIHZhckVudmlyb25tZW50LCBG
dW5jdGlvblN0YWNrJiBmdW5jU3RhY2ssIFZhcmlhYmxlRW52aXJvbm1lbnQmIGxleGljYWxWYXJp
YWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIENvZGVGZWF0dXJlcyBmZWF0dXJl
cywgaW50IG51bUNvbnN0YW50cykKK0Z1bmN0aW9uTm9kZTo6RnVuY3Rpb25Ob2RlKFBhcnNlckFy
ZW5hJiBwYXJzZXJBcmVuYSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBzdGFydENvbHVtbiwg
dW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhcmlhYmxlRW52
aXJvbm1lbnQmIHZhckVudmlyb25tZW50LCBGdW5jdGlvblN0YWNrJiBmdW5jU3RhY2ssIFZhcmlh
YmxlRW52aXJvbm1lbnQmIGxleGljYWxWYXJpYWJsZXMsIEZ1bmN0aW9uUGFyYW1ldGVycyogcGFy
YW1ldGVycywgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgQ29kZUZlYXR1cmVzIGZlYXR1
cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQogICAgIDogU2NvcGVOb2RlKHBhcnNlckFyZW5hLCBzdGFy
dExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgc291cmNlQ29kZSwgY2hpbGRyZW4sIHZhckVudmlyb25t
ZW50LCBmdW5jU3RhY2ssIGxleGljYWxWYXJpYWJsZXMsIGZlYXR1cmVzLCBudW1Db25zdGFudHMp
CisgICAgLCBtX3BhcmFtZXRlcnMocGFyYW1ldGVycykKICAgICAsIG1fc3RhcnRDb2x1bW4oc3Rh
cnRDb2x1bW4pCiAgICAgLCBtX2VuZENvbHVtbihlbmRDb2x1bW4pCiB7CiB9CiAKLXZvaWQgRnVu
Y3Rpb25Ob2RlOjpmaW5pc2hQYXJzaW5nKFBhc3NSZWZQdHI8RnVuY3Rpb25QYXJhbWV0ZXJzPiBw
YXJhbWV0ZXJzLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgZW51bSBGdW5jdGlvbk1vZGUgZnVu
Y3Rpb25Nb2RlKQordm9pZCBGdW5jdGlvbk5vZGU6OmZpbmlzaFBhcnNpbmcoY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQsIGVudW0gRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSkKIHsKICAgICBBU1NF
UlQoIXNvdXJjZSgpLmlzTnVsbCgpKTsKLSAgICBtX3BhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzOwog
ICAgIG1faWRlbnQgPSBpZGVudDsKICAgICBtX2Z1bmN0aW9uTW9kZSA9IGZ1bmN0aW9uTW9kZTsK
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgJKHJldmlzaW9uIDE4Njkx
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtNDIsNiArNDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBBcmd1bWVudExp
c3ROb2RlOwogICAgIGNsYXNzIEJ5dGVjb2RlR2VuZXJhdG9yOwogICAgIGNsYXNzIEZ1bmN0aW9u
Qm9keU5vZGU7CisgICAgY2xhc3MgRnVuY3Rpb25QYXJhbWV0ZXJzOwogICAgIGNsYXNzIExhYmVs
OwogICAgIGNsYXNzIFByb3BlcnR5TGlzdE5vZGU7CiAgICAgY2xhc3MgUmVhZE1vZGlmeVJlc29s
dmVOb2RlOwpAQCAtMTU0MSwxOSArMTU0Miw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBT
dGF0ZW1lbnROb2RlKiBtX2ZpbmFsbHlCbG9jazsKICAgICB9OwogCi0gICAgY2xhc3MgUGFyYW1l
dGVyTm9kZSA6IHB1YmxpYyBQYXJzZXJBcmVuYURlbGV0YWJsZSB7Ci0gICAgcHVibGljOgotICAg
ICAgICBQYXJhbWV0ZXJOb2RlKFBhc3NSZWZQdHI8RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlPik7
Ci0gICAgICAgIFBhcmFtZXRlck5vZGUoUGFyYW1ldGVyTm9kZSosIFBhc3NSZWZQdHI8RGVzdHJ1
Y3R1cmluZ1BhdHRlcm5Ob2RlPik7Ci0KLSAgICAgICAgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2Rl
KiBwYXR0ZXJuKCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuLmdldCgpOyB9Ci0gICAgICAgIFBh
cmFtZXRlck5vZGUqIG5leHRQYXJhbSgpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dDsgfQotCi0gICAg
cHJpdmF0ZToKLSAgICAgICAgUmVmUHRyPERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZT4gbV9wYXR0
ZXJuOwotICAgICAgICBQYXJhbWV0ZXJOb2RlKiBtX25leHQ7Ci0gICAgfTsKLQogICAgIGNsYXNz
IFNjb3BlTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlLCBwdWJsaWMgUGFyc2VyQXJlbmFSb290
LCBwdWJsaWMgVmFyaWFibGVFbnZpcm9ubWVudE5vZGUgewogICAgIHB1YmxpYzoKICAgICAgICAg
dHlwZWRlZiBEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjayBGdW5jdGlvblN0YWNrOwpA
QCAtMTYxOSw3ICsxNjA3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBQcm9ncmFt
Tm9kZSA6IHB1YmxpYyBTY29wZU5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgUHJvZ3JhbU5v
ZGUoUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGVuZCwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVt
biwgU291cmNlRWxlbWVudHMqLCBWYXJpYWJsZUVudmlyb25tZW50JiwgRnVuY3Rpb25TdGFjayYs
IFZhcmlhYmxlRW52aXJvbm1lbnQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBp
bnQgbnVtQ29uc3RhbnRzKTsKKyAgICAgICAgUHJvZ3JhbU5vZGUoUGFyc2VyQXJlbmEmLCBjb25z
dCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgdW5z
aWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMqLCBW
YXJpYWJsZUVudmlyb25tZW50JiwgRnVuY3Rpb25TdGFjayYsIFZhcmlhYmxlRW52aXJvbm1lbnQm
LCBGdW5jdGlvblBhcmFtZXRlcnMqLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBp
bnQgbnVtQ29uc3RhbnRzKTsKIAogICAgICAgICB1bnNpZ25lZCBzdGFydENvbHVtbigpIGNvbnN0
IHsgcmV0dXJuIG1fc3RhcnRDb2x1bW47IH0KICAgICAgICAgdW5zaWduZWQgZW5kQ29sdW1uKCkg
Y29uc3QgeyByZXR1cm4gbV9lbmRDb2x1bW47IH0KQEAgLTE2MzgsNyArMTYyNiw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgY2xhc3MgRXZhbE5vZGUgOiBwdWJsaWMgU2NvcGVOb2RlIHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIEV2YWxOb2RlKFBhcnNlckFyZW5hJiwgY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIHVuc2lnbmVkIHN0YXJ0
Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiwgVmFyaWFibGVFbnZp
cm9ubWVudCYsIEZ1bmN0aW9uU3RhY2smLCBWYXJpYWJsZUVudmlyb25tZW50JiwgY29uc3QgU291
cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CisgICAgICAgIEV2YWxO
b2RlKFBhcnNlckFyZW5hJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBlbmQsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1
bW4sIFNvdXJjZUVsZW1lbnRzKiwgVmFyaWFibGVFbnZpcm9ubWVudCYsIEZ1bmN0aW9uU3RhY2sm
LCBWYXJpYWJsZUVudmlyb25tZW50JiwgRnVuY3Rpb25QYXJhbWV0ZXJzKiwgY29uc3QgU291cmNl
Q29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CiAKICAgICAgICAgQUxXQVlT
X0lOTElORSB1bnNpZ25lZCBzdGFydENvbHVtbigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICAgICAg
ICAgdW5zaWduZWQgZW5kQ29sdW1uKCkgY29uc3QgeyByZXR1cm4gbV9lbmRDb2x1bW47IH0KQEAg
LTE2NTEsMjMgKzE2MzksMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVuc2lnbmVkIG1f
ZW5kQ29sdW1uOwogICAgIH07CiAKLSAgICBjbGFzcyBGdW5jdGlvblBhcmFtZXRlcnMgOiBwdWJs
aWMgUmVmQ291bnRlZDxGdW5jdGlvblBhcmFtZXRlcnM+IHsKLSAgICAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7Ci0gICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZ1bmN0aW9uUGFyYW1l
dGVycyk7CisgICAgY2xhc3MgRnVuY3Rpb25QYXJhbWV0ZXJzIDogcHVibGljIFBhcnNlckFyZW5h
RGVsZXRhYmxlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBSZWY8RnVuY3Rpb25QYXJh
bWV0ZXJzPiBjcmVhdGUoUGFyYW1ldGVyTm9kZSopOwotICAgICAgICB+RnVuY3Rpb25QYXJhbWV0
ZXJzKCk7Ci0KLSAgICAgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsg
fQotICAgICAgICBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUqIGF0KHVuc2lnbmVkIGluZGV4KSB7
IEFTU0VSVChpbmRleCA8IG1fc2l6ZSk7IHJldHVybiBwYXR0ZXJucygpW2luZGV4XTsgfQorICAg
ICAgICBGdW5jdGlvblBhcmFtZXRlcnMoKTsKKyAgICAgICAgQUxXQVlTX0lOTElORSB1bnNpZ25l
ZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJucy5zaXplKCk7IH0KKyAgICAgICAgQUxX
QVlTX0lOTElORSBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUqIGF0KHVuc2lnbmVkIGluZGV4KSB7
IHJldHVybiBtX3BhdHRlcm5zW2luZGV4XTsgfQorICAgICAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
YXBwZW5kKERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogcGF0dGVybikgeyBBU1NFUlQocGF0dGVy
bik7IG1fcGF0dGVybnMuYXBwZW5kKHBhdHRlcm4pOyB9CiAKICAgICBwcml2YXRlOgotICAgICAg
ICBGdW5jdGlvblBhcmFtZXRlcnMoUGFyYW1ldGVyTm9kZSosIHVuc2lnbmVkIHNpemUpOwotCi0g
ICAgICAgIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSoqIHBhdHRlcm5zKCkgeyByZXR1cm4gJm1f
c3RvcmFnZTsgfQogCi0gICAgICAgIHVuc2lnbmVkIG1fc2l6ZTsKLSAgICAgICAgRGVzdHJ1Y3R1
cmluZ1BhdHRlcm5Ob2RlKiBtX3N0b3JhZ2U7CisgICAgICAgIFZlY3RvcjxEZXN0cnVjdHVyaW5n
UGF0dGVybk5vZGUqLCAzPiBtX3BhdHRlcm5zOwogICAgIH07CiAKICAgICBjbGFzcyBGdW5jdGlv
bkJvZHlOb2RlIGZpbmFsIDogcHVibGljIFN0YXRlbWVudE5vZGUsIHB1YmxpYyBQYXJzZXJBcmVu
YURlbGV0YWJsZSB7CkBAIC0xNjc4LDEzICsxNjU5LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAgICAgUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgCiAgICAgICAgICAgICB1bnNpZ25lZCBzdGFydENvbHVt
biwgdW5zaWduZWQgZW5kQ29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIAogICAgICAg
ICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBib29sIGlz
SW5TdHJpY3RDb250ZXh0LCAKLSAgICAgICAgICAgIENvbnN0cnVjdG9yS2luZCk7Ci0KLSAgICAg
ICAgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9wYXJh
bWV0ZXJzLmdldCgpOyB9CisgICAgICAgICAgICBDb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkLCBG
dW5jdGlvblBhcnNlTW9kZSk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CiAKLSAgICAgICAg
dm9pZCBmaW5pc2hQYXJzaW5nKGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJhbWV0ZXJOb2RlKiwgY29u
c3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uTW9kZSk7CisgICAgICAgIHZvaWQgZmluaXNoUGFyc2lu
Zyhjb25zdCBTb3VyY2VDb2RlJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uTW9kZSk7CiAg
ICAgICAgIAogICAgICAgICB2b2lkIG92ZXJyaWRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCkgeyBtX2lkZW50ID0gaWRlbnQ7IH0KICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQo
KSB7IHJldHVybiBtX2lkZW50OyB9CkBAIC0xNjk4LDYgKzE2NzcsOCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgaW50IHBhcmFtZXRlcnNTdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1l
dGVyc1N0YXJ0OyB9CiAgICAgICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uKCkgY29uc3QgeyByZXR1
cm4gbV9zdGFydENvbHVtbjsgfQogICAgICAgICB1bnNpZ25lZCBlbmRDb2x1bW4oKSBjb25zdCB7
IHJldHVybiBtX2VuZENvbHVtbjsgfQorICAgICAgICB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVyQ291bnQ7IH0KKyAgICAgICAgRnVuY3Rpb25QYXJz
ZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZU1vZGU7IH0KIAogICAgICAg
ICB2b2lkIHNldEVuZFBvc2l0aW9uKEpTVGV4dFBvc2l0aW9uKTsKIApAQCAtMTcxMSw3ICsxNjky
LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIElkZW50aWZpZXIgbV9pZGVudDsKICAgICAg
ICAgSWRlbnRpZmllciBtX2luZmVycmVkTmFtZTsKICAgICAgICAgRnVuY3Rpb25Nb2RlIG1fZnVu
Y3Rpb25Nb2RlOwotICAgICAgICBSZWZQdHI8RnVuY3Rpb25QYXJhbWV0ZXJzPiBtX3BhcmFtZXRl
cnM7CiAgICAgICAgIHVuc2lnbmVkIG1fc3RhcnRDb2x1bW47CiAgICAgICAgIHVuc2lnbmVkIG1f
ZW5kQ29sdW1uOwogICAgICAgICBpbnQgbV9mdW5jdGlvbktleXdvcmRTdGFydDsKQEAgLTE3MTks
MTkgKzE2OTksMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGludCBtX3BhcmFtZXRlcnNT
dGFydDsKICAgICAgICAgU291cmNlQ29kZSBtX3NvdXJjZTsKICAgICAgICAgaW50IG1fc3RhcnRT
dGFydE9mZnNldDsKKyAgICAgICAgdW5zaWduZWQgbV9wYXJhbWV0ZXJDb3VudDsKKyAgICAgICAg
RnVuY3Rpb25QYXJzZU1vZGUgbV9wYXJzZU1vZGU7CiAgICAgICAgIHVuc2lnbmVkIG1faXNJblN0
cmljdENvbnRleHQgOiAxOwogICAgICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7
CiAgICAgfTsKIAogICAgIGNsYXNzIEZ1bmN0aW9uTm9kZSBmaW5hbCA6IHB1YmxpYyBTY29wZU5v
ZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRnVuY3Rpb25Ob2RlKFBhcnNlckFyZW5hJiwgY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIHVu
c2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiwg
VmFyaWFibGVFbnZpcm9ubWVudCYsIEZ1bmN0aW9uU3RhY2smLCBWYXJpYWJsZUVudmlyb25tZW50
JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7Cisg
ICAgICAgIEZ1bmN0aW9uTm9kZShQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
c3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCB1bnNpZ25lZCBzdGFydENvbHVtbiwg
dW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyosIFZhcmlhYmxlRW52aXJvbm1lbnQm
LCBGdW5jdGlvblN0YWNrJiwgVmFyaWFibGVFbnZpcm9ubWVudCYsIEZ1bmN0aW9uUGFyYW1ldGVy
cyosIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOwog
Ci0gICAgICAgIEZ1bmN0aW9uUGFyYW1ldGVycyogcGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJu
IG1fcGFyYW1ldGVycy5nZXQoKTsgfQorICAgICAgICBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFt
ZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnM7IH0KIAogICAgICAgICB2aXJ0dWFs
IHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBv
dmVycmlkZTsKIAotICAgICAgICB2b2lkIGZpbmlzaFBhcnNpbmcoUGFzc1JlZlB0cjxGdW5jdGlv
blBhcmFtZXRlcnM+LCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25Nb2RlKTsKKyAgICAgICAg
dm9pZCBmaW5pc2hQYXJzaW5nKGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlvbk1vZGUpOwogICAg
ICAgICAKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQoKSB7IHJldHVybiBtX2lkZW50
OyB9CiAKQEAgLTE3NDUsMTQgKzE3MjcsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0
ZToKICAgICAgICAgSWRlbnRpZmllciBtX2lkZW50OwogICAgICAgICBGdW5jdGlvbk1vZGUgbV9m
dW5jdGlvbk1vZGU7Ci0gICAgICAgIFJlZlB0cjxGdW5jdGlvblBhcmFtZXRlcnM+IG1fcGFyYW1l
dGVyczsKKyAgICAgICAgRnVuY3Rpb25QYXJhbWV0ZXJzKiBtX3BhcmFtZXRlcnM7CiAgICAgICAg
IHVuc2lnbmVkIG1fc3RhcnRDb2x1bW47CiAgICAgICAgIHVuc2lnbmVkIG1fZW5kQ29sdW1uOwog
ICAgIH07CiAKICAgICBjbGFzcyBGdW5jRXhwck5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUg
ewogICAgIHB1YmxpYzoKLSAgICAgICAgRnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlvbkJvZHlOb2RlKiwgY29uc3QgU291cmNlQ29k
ZSYsIFBhcmFtZXRlck5vZGUqID0gMCk7CisgICAgICAgIEZ1bmNFeHByTm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25Cb2R5Tm9kZSosIGNvbnN0
IFNvdXJjZUNvZGUmKTsKIAogICAgICAgICBGdW5jdGlvbkJvZHlOb2RlKiBib2R5KCkgeyByZXR1
cm4gbV9ib2R5OyB9CiAKQEAgLTE3ODMsMTEgKzE3NjUsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICB9OwogI2VuZGlmCiAKLSAgICBjbGFzcyBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUgOiBwdWJs
aWMgUmVmQ291bnRlZDxEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU+IHsKLSAgICAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKTsKLSAgICAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7Ci0KKyAgICBjbGFzcyBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUg
OiBwdWJsaWMgUGFyc2VyQXJlbmFEZWxldGFibGUgewogICAgIHB1YmxpYzoKKyAgICAgICAgdmly
dHVhbCB+RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKCkgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBjb2xsZWN0Qm91bmRJZGVudGlmaWVycyhWZWN0b3I8SWRlbnRpZmllcj4mKSBjb25zdCA9IDA7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBiaW5kVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiBzb3VyY2UpIGNvbnN0ID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHRvU3RyaW5n
KFN0cmluZ0J1aWxkZXImKSBjb25zdCA9IDA7CkBAIC0xNzk1LDIxICsxNzc1LDE5IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNCaW5kaW5nTm9kZSgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdERpcmVjdEJp
bmRpbmcoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiwgRXhwcmVzc2lvbk5vZGUqKSB7
IHJldHVybiAwOyB9CiAgICAgICAgIAotICAgICAgICB2aXJ0dWFsIH5EZXN0cnVjdHVyaW5nUGF0
dGVybk5vZGUoKSA9IDA7Ci0gICAgICAgIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgRGVzdHJ1
Y3R1cmluZ1BhdHRlcm5Ob2RlKCk7CiAgICAgfTsKIAogICAgIGNsYXNzIEFycmF5UGF0dGVybk5v
ZGUgOiBwdWJsaWMgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhw
cmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKKyAgICAgICAgQXJyYXlQYXR0ZXJuTm9kZSgpOwog
ICAgICAgICBlbnVtIGNsYXNzIEJpbmRpbmdUeXBlIHsKICAgICAgICAgICAgIEVsaXNpb24sCiAg
ICAgICAgICAgICBFbGVtZW50LAogICAgICAgICAgICAgUmVzdEVsZW1lbnQKICAgICAgICAgfTsK
IAotICAgICAgICBzdGF0aWMgUmVmPEFycmF5UGF0dGVybk5vZGU+IGNyZWF0ZSgpOwogICAgICAg
ICB2b2lkIGFwcGVuZEluZGV4KEJpbmRpbmdUeXBlIGJpbmRpbmdUeXBlLCBjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUqIG5vZGUsIEV4cHJlc3Npb25Ob2Rl
KiBkZWZhdWx0VmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fdGFyZ2V0UGF0dGVybnMu
YXBwZW5kKHsgYmluZGluZ1R5cGUsIG5vZGUsIGRlZmF1bHRWYWx1ZSB9KTsKQEAgLTE4MTgsMTAg
KzE3OTYsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcml2YXRlOgogICAgICAgICBzdHJ1Y3Qg
RW50cnkgewogICAgICAgICAgICAgQmluZGluZ1R5cGUgYmluZGluZ1R5cGU7Ci0gICAgICAgICAg
ICBSZWZQdHI8RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlPiBwYXR0ZXJuOworICAgICAgICAgICAg
RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiBwYXR0ZXJuOwogICAgICAgICAgICAgRXhwcmVzc2lv
bk5vZGUqIGRlZmF1bHRWYWx1ZTsKICAgICAgICAgfTsKLSAgICAgICAgQXJyYXlQYXR0ZXJuTm9k
ZSgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdEJvdW5kSWRlbnRpZmllcnMoVmVjdG9y
PElkZW50aWZpZXI+JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBiaW5k
VmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKikgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdERpcmVjdEJpbmRpbmcoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiBkc3QsIEV4cHJlc3Npb25Ob2RlKikgb3ZlcnJpZGU7CkBAIC0x
ODMyLDIxICsxODA5LDIwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIAogICAgIGNsYXNzIE9iamVj
dFBhdHRlcm5Ob2RlIDogcHVibGljIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSB7CiAgICAgcHVi
bGljOgotICAgICAgICBzdGF0aWMgUmVmPE9iamVjdFBhdHRlcm5Ob2RlPiBjcmVhdGUoKTsKKyAg
ICAgICAgT2JqZWN0UGF0dGVybk5vZGUoKTsKICAgICAgICAgdm9pZCBhcHBlbmRFbnRyeShjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBib29sIHdh
c1N0cmluZywgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiBwYXR0ZXJuLCBFeHByZXNzaW9uTm9k
ZSogZGVmYXVsdFZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBtX3RhcmdldFBhdHRlcm5z
LmFwcGVuZChFbnRyeXsgaWRlbnRpZmllciwgd2FzU3RyaW5nLCBwYXR0ZXJuLCBkZWZhdWx0VmFs
dWUgfSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgcHJpdmF0ZToKLSAgICAgICAgT2JqZWN0
UGF0dGVybk5vZGUoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RCb3VuZElkZW50aWZp
ZXJzKFZlY3RvcjxJZGVudGlmaWVyPiYpIGNvbnN0IG92ZXJyaWRlOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgYmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopIGNvbnN0IG92
ZXJyaWRlOwogICAgICAgICB2aXJ0dWFsIHZvaWQgdG9TdHJpbmcoU3RyaW5nQnVpbGRlciYpIGNv
bnN0IG92ZXJyaWRlOwogICAgICAgICBzdHJ1Y3QgRW50cnkgewogICAgICAgICAgICAgSWRlbnRp
ZmllciBwcm9wZXJ0eU5hbWU7CiAgICAgICAgICAgICBib29sIHdhc1N0cmluZzsKLSAgICAgICAg
ICAgIFJlZlB0cjxEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU+IHBhdHRlcm47CisgICAgICAgICAg
ICBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUqIHBhdHRlcm47CiAgICAgICAgICAgICBFeHByZXNz
aW9uTm9kZSogZGVmYXVsdFZhbHVlOwogICAgICAgICB9OwogICAgICAgICBWZWN0b3I8RW50cnk+
IG1fdGFyZ2V0UGF0dGVybnM7CkBAIC0xODU0LDE1ICsxODMwLDEzIEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgY2xhc3MgQmluZGluZ05vZGUgOiBwdWJsaWMgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5O
b2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBSZWY8QmluZGluZ05vZGU+IGNyZWF0
ZShjb25zdCBJZGVudGlmaWVyJiBib3VuZFByb3BlcnR5LCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
c3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlbmQsIEFzc2lnbm1lbnRDb250ZXh0KTsKKyAg
ICAgICAgQmluZGluZ05vZGUoY29uc3QgSWRlbnRpZmllciYgYm91bmRQcm9wZXJ0eSwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIHN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZW5kLCBBc3NpZ25t
ZW50Q29udGV4dCk7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGJvdW5kUHJvcGVydHkoKSBj
b25zdCB7IHJldHVybiBtX2JvdW5kUHJvcGVydHk7IH0KIAogICAgICAgICBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3RTdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fZGl2b3RTdGFydDsgfQogICAg
ICAgICBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQoKSBjb25zdCB7IHJldHVybiBtX2Rp
dm90RW5kOyB9CiAgICAgICAgIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEJpbmRpbmdOb2RlKGNv
bnN0IElkZW50aWZpZXImIGJvdW5kUHJvcGVydHksIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBzdGFy
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVuZCwgQXNzaWdubWVudENvbnRleHQpOwotCiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0Qm91bmRJZGVudGlmaWVycyhWZWN0b3I8SWRlbnRpZmll
cj4mKSBjb25zdCBvdmVycmlkZTsKICAgICAgICAgdmlydHVhbCB2b2lkIGJpbmRWYWx1ZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKSBjb25zdCBvdmVycmlkZTsKICAgICAgICAgdmly
dHVhbCB2b2lkIHRvU3RyaW5nKFN0cmluZ0J1aWxkZXImKSBjb25zdCBvdmVycmlkZTsKQEAgLTE4
NzcsOCArMTg1MSw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRGVzdHJ1Y3R1cmlu
Z0Fzc2lnbm1lbnROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgUGFyc2VyQXJl
bmFEZWxldGFibGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1l
bnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFBhc3NSZWZQdHI8RGVzdHJ1Y3R1cmluZ1Bh
dHRlcm5Ob2RlPiwgRXhwcmVzc2lvbk5vZGUqKTsKLSAgICAgICAgRGVzdHJ1Y3R1cmluZ1BhdHRl
cm5Ob2RlKiBiaW5kaW5ncygpIHsgcmV0dXJuIG1fYmluZGluZ3MuZ2V0KCk7IH0KKyAgICAgICAg
RGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIERlc3Ry
dWN0dXJpbmdQYXR0ZXJuTm9kZSosIEV4cHJlc3Npb25Ob2RlKik7CisgICAgICAgIERlc3RydWN0
dXJpbmdQYXR0ZXJuTm9kZSogYmluZGluZ3MoKSB7IHJldHVybiBtX2JpbmRpbmdzOyB9CiAgICAg
ICAgIAogICAgICAgICB1c2luZyBQYXJzZXJBcmVuYURlbGV0YWJsZTo6b3BlcmF0b3IgbmV3Owog
CkBAIC0xODg3LDEzICsxODYxLDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFs
IGJvb2wgaXNEZXN0cnVjdHVyaW5nTm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwogCi0gICAgICAgIFJlZlB0cjxEZXN0
cnVjdHVyaW5nUGF0dGVybk5vZGU+IG1fYmluZGluZ3M7CisgICAgICAgIERlc3RydWN0dXJpbmdQ
YXR0ZXJuTm9kZSogbV9iaW5kaW5nczsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1faW5pdGlh
bGl6ZXI7CiAgICAgfTsKIAogICAgIGNsYXNzIEZ1bmNEZWNsTm9kZSA6IHB1YmxpYyBTdGF0ZW1l
bnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEZ1bmNEZWNsTm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25Cb2R5Tm9kZSosIGNvbnN0IFNv
dXJjZUNvZGUmLCBQYXJhbWV0ZXJOb2RlKiA9IDApOworICAgICAgICBGdW5jRGVjbE5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uQm9keU5vZGUq
LCBjb25zdCBTb3VyY2VDb2RlJik7CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzRnVuY0RlY2xO
b2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgICAgICBGdW5jdGlvbkJv
ZHlOb2RlKiBib2R5KCkgeyByZXR1cm4gbV9ib2R5OyB9CkBAIC0xOTg5LDExICsxOTYzLDYgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIENvbnN0RGVjbE5vZGUqIHRhaWw7CiAgICAgfTsKIAot
ICAgIHN0cnVjdCBQYXJhbWV0ZXJMaXN0IHsKLSAgICAgICAgUGFyYW1ldGVyTm9kZSogaGVhZDsK
LSAgICAgICAgUGFyYW1ldGVyTm9kZSogdGFpbDsKLSAgICB9OwotCiAgICAgc3RydWN0IENsYXVz
ZUxpc3QgewogICAgICAgICBDbGF1c2VMaXN0Tm9kZSogaGVhZDsKICAgICAgICAgQ2xhdXNlTGlz
dE5vZGUqIHRhaWw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3Bw
CShyZXZpc2lvbiAxODY5MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MSw4ICsxOTEsNyBAQCB2b2lkIFBhcnNlcjxMZXhl
clR5cGU+Ojpsb2dFcnJvcihib29sIHNoCiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+
CiBQYXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2VyKAotICAgIFZNKiB2bSwgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIAotICAgIGNvbnN0IElk
ZW50aWZpZXImIG5hbWUsIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUsIAorICAgIFZN
KiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0
aW5Nb2RlLCAKICAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgSlNQYXJzZXJDb2Rl
VHlwZSBjb2RlVHlwZSwgCiAgICAgQ29uc3RydWN0b3JLaW5kIGRlZmF1bHRDb25zdHJ1Y3Rvcktp
bmQsIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlKQogICAgIDogbV92bSh2bSkKQEAgLTIyMywzMCAr
MjIyLDcgQEAgUGFyc2VyPExleGVyVHlwZT46OlBhcnNlcigKICAgICAgICAgc2NvcGUtPnNldElz
RnVuY3Rpb24oKTsKICAgICBpZiAoc3RyaWN0TW9kZSA9PSBKU1BhcnNlclN0cmljdE1vZGU6OlN0
cmljdCkKICAgICAgICAgc2NvcGUtPnNldFN0cmljdE1vZGUoKTsKLSAgICBpZiAocGFyYW1ldGVy
cykgewotICAgICAgICBib29sIGhhZEJpbmRpbmdQYXJhbWV0ZXJzID0gZmFsc2U7Ci0gICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLT5zaXplKCk7IGkrKykgewotICAg
ICAgICAgICAgYXV0byBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXJzLT5hdChpKTsKLSAgICAgICAgICAg
IGlmICghcGFyYW1ldGVyLT5pc0JpbmRpbmdOb2RlKCkpIHsKLSAgICAgICAgICAgICAgICBoYWRC
aW5kaW5nUGFyYW1ldGVycyA9IHRydWU7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBzY29wZS0+ZGVjbGFyZVBhcmFtZXRlcigmc3RhdGljX2Nh
c3Q8QmluZGluZ05vZGUqPihwYXJhbWV0ZXIpLT5ib3VuZFByb3BlcnR5KCkpOwotICAgICAgICB9
Ci0gICAgICAgIGlmIChoYWRCaW5kaW5nUGFyYW1ldGVycykgewotICAgICAgICAgICAgVmVjdG9y
PElkZW50aWZpZXI+IGJvdW5kUGFyYW1ldGVyTmFtZXM7Ci0gICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgcGFyYW1ldGVycy0+c2l6ZSgpOyBpKyspIHsKLSAgICAgICAgICAgICAg
ICBhdXRvIHBhcmFtZXRlciA9IHBhcmFtZXRlcnMtPmF0KGkpOwotICAgICAgICAgICAgICAgIGlm
IChwYXJhbWV0ZXItPmlzQmluZGluZ05vZGUoKSkKLSAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgICAgICAgICAgcGFyYW1ldGVyLT5jb2xsZWN0Qm91bmRJZGVudGlmaWVycyhi
b3VuZFBhcmFtZXRlck5hbWVzKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZvciAoYXV0
byYgYm91bmRQYXJhbWV0ZXJOYW1lIDogYm91bmRQYXJhbWV0ZXJOYW1lcykKLSAgICAgICAgICAg
ICAgICBzY29wZS0+ZGVjbGFyZVZhcmlhYmxlKCZib3VuZFBhcmFtZXRlck5hbWUpOwotICAgICAg
ICB9Ci0gICAgfQotICAgIGlmICghbmFtZS5pc051bGwoKSkKLSAgICAgICAgc2NvcGUtPmRlY2xh
cmVDYWxsZWUoJm5hbWUpOworCiAgICAgbmV4dCgpOwogfQogCkBAIC0yNTYsMTggKzIzMiw1NiBA
QCBQYXJzZXI8TGV4ZXJUeXBlPjo6flBhcnNlcigpCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBM
ZXhlclR5cGU+Ci1TdHJpbmcgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIoKQorU3RyaW5n
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKGNvbnN0IElkZW50aWZpZXImIGNhbGxlZU5h
bWUsIEZ1bmN0aW9uUGFyc2VNb2RlIHBhcnNlTW9kZSkKIHsKICAgICBTdHJpbmcgcGFyc2VFcnJv
ciA9IFN0cmluZygpOwogICAgIAogICAgIEFTVEJ1aWxkZXIgY29udGV4dChjb25zdF9jYXN0PFZN
Kj4obV92bSksIG1fcGFyc2VyQXJlbmEsIGNvbnN0X2Nhc3Q8U291cmNlQ29kZSo+KG1fc291cmNl
KSk7Ci0gICAgaWYgKG1fbGV4ZXItPmlzUmVwYXJzaW5nKCkpCi0gICAgICAgIG1fc3RhdGVtZW50
RGVwdGgtLTsKICAgICBTY29wZVJlZiBzY29wZSA9IGN1cnJlbnRTY29wZSgpOwogICAgIHNjb3Bl
LT5zZXRJc0xleGljYWxTY29wZSgpOwogCi0gICAgU291cmNlRWxlbWVudHMqIHNvdXJjZUVsZW1l
bnRzID0gcGFyc2VTb3VyY2VFbGVtZW50cyhjb250ZXh0LCBDaGVja0ZvclN0cmljdE1vZGUsIFN0
YW5kYXJkRnVuY3Rpb25QYXJzZVR5cGUpOwotICAgIGlmICghc291cmNlRWxlbWVudHMgfHwgIWNv
bnN1bWUoRU9GVE9LKSkgeworICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24g
PSBmYWxzZTsKKyNpZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQorICAgIGlmICht
X2xleGVyLT5pc1JlcGFyc2luZ0Z1bmN0aW9uKCkpIHsKKyAgICAgICAgUGFyc2VyRnVuY3Rpb25J
bmZvPEFTVEJ1aWxkZXI+IGZ1bmN0aW9uSW5mbzsKKyAgICAgICAgcGFyc2VGdW5jdGlvblBhcmFt
ZXRlcnMoY29udGV4dCwgcGFyc2VNb2RlLCBmdW5jdGlvbkluZm8pOworICAgICAgICBtX3BhcmFt
ZXRlcnMgPSBmdW5jdGlvbkluZm8ucGFyYW1ldGVyczsKKworICAgICAgICBpZiAocGFyc2VNb2Rl
ID09IEFycm93RnVuY3Rpb25Nb2RlICYmICFoYXNFcnJvcigpKSB7CisgICAgICAgICAgICAvLyBU
aGUgb25seSB3YXkgd2UgY291bGQgaGF2ZSBhbiBlcnJvciB3aWxlIHJlcGFyc2luZyBpcyBpZiB3
ZSBydW4gb3V0IG9mIHN0YWNrIHNwYWNlLgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobWF0
Y2goQVJST1dGVU5DVElPTikpOworICAgICAgICAgICAgbmV4dCgpOworICAgICAgICAgICAgaXNB
cnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gPSAhbWF0Y2goT1BFTkJSQUNFKTsKKyAgICAgICAg
fQorICAgIH0KKyNlbmRpZgorCisgICAgaWYgKCFjYWxsZWVOYW1lLmlzTnVsbCgpKQorICAgICAg
ICBzY29wZS0+ZGVjbGFyZUNhbGxlZSgmY2FsbGVlTmFtZSk7CisKKyAgICBpZiAobV9sZXhlci0+
aXNSZXBhcnNpbmdGdW5jdGlvbigpKQorICAgICAgICBtX3N0YXRlbWVudERlcHRoLS07CisKKyAg
ICBTb3VyY2VFbGVtZW50cyogc291cmNlRWxlbWVudHMgPSBudWxscHRyOworICAgIC8vIFRoZSBv
bmx5IHdheSB3ZSBjYW4gZXJyb3IgdGhpcyBlYXJseSBpcyBpZiB3ZSByZXBhcnNlIGEgZnVuY3Rp
b24gYW5kIHdlIHJ1biBvdXQgb2Ygc3RhY2sgc3BhY2UuCisgICAgaWYgKCFoYXNFcnJvcigpKSB7
CisgICAgICAgIGlmIChpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKKyAgICAgICAgICAg
IHNvdXJjZUVsZW1lbnRzID0gcGFyc2VBcnJvd0Z1bmN0aW9uU2luZ2xlRXhwcmVzc2lvbkJvZHlT
b3VyY2VFbGVtZW50cyhjb250ZXh0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc291cmNl
RWxlbWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIENoZWNrRm9yU3RyaWN0TW9k
ZSk7CisgICAgfQorCisgICAgYm9vbCB2YWxpZEVuZGluZzsKKyAgICBpZiAoaXNBcnJvd0Z1bmN0
aW9uQm9keUV4cHJlc3Npb24pIHsKKyAgICAgICAgQVNTRVJUKG1fbGV4ZXItPmlzUmVwYXJzaW5n
RnVuY3Rpb24oKSk7CisgICAgICAgIC8vIFdoZW4gd2UgcmVwYXJzZSBhbmQgc3RhY2sgb3ZlcmZs
b3csIHdlJ3JlIG5vdCBndWFyYW50ZWVkIGEgdmFsaWQgZW5kaW5nLiBJZiB3ZSBkb24ndCBydW4g
b3V0IG9mIHN0YWNrIHNwYWNlLAorICAgICAgICAvLyB0aGVuIG9mIGNvdXJzZSB0aGlzIHdpbGwg
YWx3YXlzIGJlIHZhbGlkIGJlY2F1c2Ugd2UgYWxyZWFkeSBwYXJzZWQgZm9yIHN5bnRheCBlcnJv
cnMuIEJ1dCB3ZSBtdXN0CisgICAgICAgIC8vIGJlIGNhdXRpb3VzIGluIGNhc2Ugd2UgcnVuIG91
dCBvZiBzdGFjayBzcGFjZS4KKyAgICAgICAgdmFsaWRFbmRpbmcgPSBpc0VuZE9mQXJyb3dGdW5j
dGlvbigpOyAKKyAgICB9IGVsc2UKKyAgICAgICAgdmFsaWRFbmRpbmcgPSBjb25zdW1lKEVPRlRP
Syk7CisKKyAgICBpZiAoIXNvdXJjZUVsZW1lbnRzIHx8ICF2YWxpZEVuZGluZykgewogICAgICAg
ICBpZiAoaGFzRXJyb3IoKSkKICAgICAgICAgICAgIHBhcnNlRXJyb3IgPSBtX2Vycm9yTWVzc2Fn
ZTsKICAgICAgICAgZWxzZQpAQCAtMzQ2LDcgKzM2MCw3IEBAIGJvb2wgUGFyc2VyPExleGVyVHlw
ZT46OmFsbG93QXV0b21hdGljU2UKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4K
LXRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZVNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBTb3Vy
Y2VFbGVtZW50c01vZGUgbW9kZSwgRnVuY3Rpb25QYXJzZVR5cGUgZnVuY3Rpb25QYXJzZVR5cGUp
Cit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VTb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYgY29udGV4dCwgU291
cmNlRWxlbWVudHNNb2RlIG1vZGUpCiB7CiAgICAgY29uc3QgdW5zaWduZWQgbGVuZ3RoT2ZVc2VT
dHJpY3RMaXRlcmFsID0gMTI7IC8vICJ1c2Ugc3RyaWN0Ii5sZW5ndGgKICAgICBUcmVlU291cmNl
RWxlbWVudHMgc291cmNlRWxlbWVudHMgPSBjb250ZXh0LmNyZWF0ZVNvdXJjZUVsZW1lbnRzKCk7
CkBAIC0zNTYsMjIgKzM3MCw2IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNv
dXJjZUUKICAgICBhdXRvIHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQb2ludCgpOwogICAgIGJvb2wg
aGFzU2V0U3RyaWN0ID0gZmFsc2U7CiAgICAgCi0jaWYgRU5BQkxFKEVTNl9BUlJPV0ZVTkNUSU9O
X1NZTlRBWCkKLSAgICBpZiAobWF0Y2goQVJST1dGVU5DVElPTikpIHsKLSAgICAgICAgVHJlZVN0
YXRlbWVudCBhcnJvd2Z1bmN0aW9uU3RhdGVtZW50ID0gcGFyc2VBcnJvd0Z1bmN0aW9uU2luZ2xl
RXhwcmVzc2lvbkJvZHkoY29udGV4dCwgZnVuY3Rpb25QYXJzZVR5cGUpOwotICAgICAgICAgICAg
Ci0gICAgICAgIGlmIChhcnJvd2Z1bmN0aW9uU3RhdGVtZW50KSB7Ci0gICAgICAgICAgICBjb250
ZXh0LnNldEVuZE9mZnNldChhcnJvd2Z1bmN0aW9uU3RhdGVtZW50LCBtX2xhc3RUb2tlbkVuZFBv
c2l0aW9uLm9mZnNldCk7Ci0gICAgICAgICAgICBjb250ZXh0LmFwcGVuZFN0YXRlbWVudChzb3Vy
Y2VFbGVtZW50cywgYXJyb3dmdW5jdGlvblN0YXRlbWVudCk7Ci0gICAgICAgIH0KLSAgICAgICAg
Ci0gICAgICAgIHByb3BhZ2F0ZUVycm9yKCk7Ci0gICAgICAgIHJldHVybiBzb3VyY2VFbGVtZW50
czsKLSAgICB9Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShmdW5jdGlvblBhcnNlVHlwZSk7Ci0j
ZW5kaWYKLSAgICAKICAgICB3aGlsZSAoVHJlZVN0YXRlbWVudCBzdGF0ZW1lbnQgPSBwYXJzZVN0
YXRlbWVudExpc3RJdGVtKGNvbnRleHQsIGRpcmVjdGl2ZSwgJmRpcmVjdGl2ZUxpdGVyYWxMZW5n
dGgpKSB7CiAgICAgICAgIGlmIChtb2RlID09IENoZWNrRm9yU3RyaWN0TW9kZSAmJiAhc2Vlbk5v
bkRpcmVjdGl2ZSkgewogICAgICAgICAgICAgaWYgKGRpcmVjdGl2ZSkgewpAQCAtNjYyLDI0ICs2
NjAsMTMgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRGVzdHJ1YwogICAgIHJl
dHVybiBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbih0b2tlbi5tX2xvY2F0aW9uLCBuYW1l
LCB0b2tlbi5tX3N0YXJ0UG9zaXRpb24sIHRva2VuLm1fZW5kUG9zaXRpb24sIGJpbmRpbmdDb250
ZXh0KTsKIH0KIAotI2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgotdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
U3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUFycm93RnVuY3Rpb25TaW5nbGVFeHBy
ZXNzaW9uQm9keShUcmVlQnVpbGRlciYgY29udGV4dCwgRnVuY3Rpb25QYXJzZVR5cGUgcGFyc2VU
eXBlKQordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFy
c2VyPExleGVyVHlwZT46OnBhcnNlQXJyb3dGdW5jdGlvblNpbmdsZUV4cHJlc3Npb25Cb2R5U291
cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7Ci0gICAgQVNTRVJUKG1hdGNoKEFS
Uk9XRlVOQ1RJT04pKTsKKyAgICBBU1NFUlQoIW1hdGNoKE9QRU5CUkFDRSkpOwogCi0gICAgLy8g
V2hlbiByZXBhcnNpbmcgcGhhc2UsIHBhcnNlVHlwZSBiZWNvbWVzIFN0YW5kYXJkRnVuY3Rpb25Q
YXJzZVR5cGUgZXZlbiBpZiB0aGUgZnVuY3Rpb24gaXMgYXJyb3cgZnVuY3Rpb24uCi0gICAgLy8g
VGhpcyBjb25kaXRpb24gY29uc2lkZXJzIHRoZSBmb2xsb3dpbmcgc2l0dWF0aW9ucy4KLSAgICAv
LyAoMSk6IElmIHdlIGFyZSBpbiB0aGUgcmVwYXJzaW5nIHBoYXNlLCB0aGlzIGFycm93IGZ1bmN0
aW9uIGlzIGFscmVhZHkgcGFyc2VkIG9uY2UsIHNvIHRoZXJlIGlzIG5vIHN5bnRheCBlcnJvci4K
LSAgICAvLyAoMik6IEJ1dCBpZiB3ZSBhcmUgbm90IGluIHRoZSByZXBhcnNpbmcgcGhhc2UsIHdl
IHNob3VsZCBjaGVjayB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBpbiB0aGUgY29udGV4dCBvZiB0
aGUgYXJyb3cgZnVuY3Rpb24uCi0gICAgaWYgKCFtX2xleGVyLT5pc1JlcGFyc2luZygpICYmIHBh
cnNlVHlwZSAhPSBBcnJvd0Z1bmN0aW9uUGFyc2VUeXBlKQotICAgICAgICBmYWlsRHVlVG9VbmV4
cGVjdGVkVG9rZW4oKTsKLSAgICAKICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5M
b2NhdGlvbigpKTsKICAgICBKU1RleHRQb3NpdGlvbiBzdGFydCA9IHRva2VuU3RhcnRQb3NpdGlv
bigpOwotICAgIEpTVGV4dFBvc2l0aW9uIGVuZCA9IHRva2VuRW5kUG9zaXRpb24oKTsKLQotICAg
IG5leHQoKTsKIAogICAgIGZhaWxJZlN0YWNrT3ZlcmZsb3coKTsKICAgICBUcmVlRXhwcmVzc2lv
biBleHByID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKQEAgLTY4OSwxNCAr
Njc2LDE4IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWUKIAogICAg
IGZhaWxJZkZhbHNlKGlzRW5kT2ZBcnJvd0Z1bmN0aW9uKCksICJFeHBlY3RlZCBhICc7JywgJ10n
LCAnfScsICcpJywgJywnLCBsaW5lIHRlcm1pbmF0b3Igb3IgRU9GIGZvbGxvd2luZyBhIGFycm93
IGZ1bmN0aW9uIHN0YXRlbWVudCIpOwogCi0gICAgZW5kID0gdG9rZW5FbmRQb3NpdGlvbigpOwor
ICAgIEpTVGV4dFBvc2l0aW9uIGVuZCA9IHRva2VuRW5kUG9zaXRpb24oKTsKICAgICAKICAgICBp
ZiAoIW1fbGV4ZXItPnByZXZUZXJtaW5hdG9yKCkpCiAgICAgICAgIHNldEVuZE9mU3RhdGVtZW50
KCk7CiAKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVSZXR1cm5TdGF0ZW1lbnQobG9jYXRpb24s
IGV4cHIsIHN0YXJ0LCBlbmQpOworICAgIFRyZWVTb3VyY2VFbGVtZW50cyBzb3VyY2VFbGVtZW50
cyA9IGNvbnRleHQuY3JlYXRlU291cmNlRWxlbWVudHMoKTsKKyAgICBUcmVlU3RhdGVtZW50IGJv
ZHkgPSBjb250ZXh0LmNyZWF0ZVJldHVyblN0YXRlbWVudChsb2NhdGlvbiwgZXhwciwgc3RhcnQs
IGVuZCk7CisgICAgY29udGV4dC5zZXRFbmRPZmZzZXQoYm9keSwgbV9sYXN0VG9rZW5FbmRQb3Np
dGlvbi5vZmZzZXQpOworICAgIGNvbnRleHQuYXBwZW5kU3RhdGVtZW50KHNvdXJjZUVsZW1lbnRz
LCBib2R5KTsKKworICAgIHJldHVybiBzb3VyY2VFbGVtZW50czsKIH0KLSNlbmRpZgogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gUGFyc2VyPExleGVyVHlwZT46OnRyeVBhcnNlRGVzdHJ1
Y3R1cmluZ1BhdHRlcm5FeHByZXNzaW9uKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBBc3NpZ25tZW50
Q29udGV4dCBiaW5kaW5nQ29udGV4dCkKQEAgLTEyMjksNyArMTIyMCw3IEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZUNsYXVzZUwKICAgICBUcmVlRXhwcmVzc2lvbiBjb25kaXRp
b24gPSBwYXJzZUV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2UoY29uZGl0aW9u
LCAiQ2Fubm90IHBhcnNlIHN3aXRjaCBjbGF1c2UiKTsKICAgICBjb25zdW1lT3JGYWlsKENPTE9O
LCAiRXhwZWN0ZWQgYSAnOicgYWZ0ZXIgc3dpdGNoIGNsYXVzZSBleHByZXNzaW9uIik7Ci0gICAg
VHJlZVNvdXJjZUVsZW1lbnRzIHN0YXRlbWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRzKGNvbnRl
eHQsIERvbnRDaGVja0ZvclN0cmljdE1vZGUsIFN0YW5kYXJkRnVuY3Rpb25QYXJzZVR5cGUpOwor
ICAgIFRyZWVTb3VyY2VFbGVtZW50cyBzdGF0ZW1lbnRzID0gcGFyc2VTb3VyY2VFbGVtZW50cyhj
b250ZXh0LCBEb250Q2hlY2tGb3JTdHJpY3RNb2RlKTsKICAgICBmYWlsSWZGYWxzZShzdGF0ZW1l
bnRzLCAiQ2Fubm90IHBhcnNlIHRoZSBib2R5IG9mIGEgc3dpdGNoIGNsYXVzZSIpOwogICAgIFRy
ZWVDbGF1c2UgY2xhdXNlID0gY29udGV4dC5jcmVhdGVDbGF1c2UoY29uZGl0aW9uLCBzdGF0ZW1l
bnRzKTsKICAgICBjb250ZXh0LnNldFN0YXJ0T2Zmc2V0KGNsYXVzZSwgc3RhcnRPZmZzZXQpOwpA
QCAtMTI0Miw3ICsxMjMzLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlQ2xh
dXNlTAogICAgICAgICBUcmVlRXhwcmVzc2lvbiBjb25kaXRpb24gPSBwYXJzZUV4cHJlc3Npb24o
Y29udGV4dCk7CiAgICAgICAgIGZhaWxJZkZhbHNlKGNvbmRpdGlvbiwgIkNhbm5vdCBwYXJzZSBz
d2l0Y2ggY2FzZSBleHByZXNzaW9uIik7CiAgICAgICAgIGNvbnN1bWVPckZhaWwoQ09MT04sICJF
eHBlY3RlZCBhICc6JyBhZnRlciBzd2l0Y2ggY2xhdXNlIGV4cHJlc3Npb24iKTsKLSAgICAgICAg
VHJlZVNvdXJjZUVsZW1lbnRzIHN0YXRlbWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRzKGNvbnRl
eHQsIERvbnRDaGVja0ZvclN0cmljdE1vZGUsIFN0YW5kYXJkRnVuY3Rpb25QYXJzZVR5cGUpOwor
ICAgICAgICBUcmVlU291cmNlRWxlbWVudHMgc3RhdGVtZW50cyA9IHBhcnNlU291cmNlRWxlbWVu
dHMoY29udGV4dCwgRG9udENoZWNrRm9yU3RyaWN0TW9kZSk7CiAgICAgICAgIGZhaWxJZkZhbHNl
KHN0YXRlbWVudHMsICJDYW5ub3QgcGFyc2UgdGhlIGJvZHkgb2YgYSBzd2l0Y2ggY2xhdXNlIik7
CiAgICAgICAgIGNsYXVzZSA9IGNvbnRleHQuY3JlYXRlQ2xhdXNlKGNvbmRpdGlvbiwgc3RhdGVt
ZW50cyk7CiAgICAgICAgIGNvbnRleHQuc2V0U3RhcnRPZmZzZXQoY2xhdXNlLCBzdGFydE9mZnNl
dCk7CkBAIC0xMjU5LDcgKzEyNTAsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVDbGF1c2UgCiAgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSB0b2tlblN0YXJ0KCk7CiAgICAg
bmV4dCgpOwogICAgIGNvbnN1bWVPckZhaWwoQ09MT04sICJFeHBlY3RlZCBhICc6JyBhZnRlciBz
d2l0Y2ggZGVmYXVsdCBjbGF1c2UiKTsKLSAgICBUcmVlU291cmNlRWxlbWVudHMgc3RhdGVtZW50
cyA9IHBhcnNlU291cmNlRWxlbWVudHMoY29udGV4dCwgRG9udENoZWNrRm9yU3RyaWN0TW9kZSwg
U3RhbmRhcmRGdW5jdGlvblBhcnNlVHlwZSk7CisgICAgVHJlZVNvdXJjZUVsZW1lbnRzIHN0YXRl
bWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIERvbnRDaGVja0ZvclN0cmljdE1v
ZGUpOwogICAgIGZhaWxJZkZhbHNlKHN0YXRlbWVudHMsICJDYW5ub3QgcGFyc2UgdGhlIGJvZHkg
b2YgYSBzd2l0Y2ggZGVmYXVsdCBjbGF1c2UiKTsKICAgICBUcmVlQ2xhdXNlIHJlc3VsdCA9IGNv
bnRleHQuY3JlYXRlQ2xhdXNlKDAsIHN0YXRlbWVudHMpOwogICAgIGNvbnRleHQuc2V0U3RhcnRP
ZmZzZXQocmVzdWx0LCBzdGFydE9mZnNldCk7CkBAIC0xMzU4LDcgKzEzNDksNyBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lCiAgICAgICAgICAgICBwb3BTY29wZShs
ZXhpY2FsU2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVkc0ZyZWVWYXJpYWJsZUluZm8pOwogICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgIH0KLSAgICBUcmVlU291cmNlRWxlbWVudHMgc3VidHJlZSA9
IHBhcnNlU291cmNlRWxlbWVudHMoY29udGV4dCwgRG9udENoZWNrRm9yU3RyaWN0TW9kZSwgU3Rh
bmRhcmRGdW5jdGlvblBhcnNlVHlwZSk7CisgICAgVHJlZVNvdXJjZUVsZW1lbnRzIHN1YnRyZWUg
PSBwYXJzZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIERvbnRDaGVja0ZvclN0cmljdE1vZGUpOwog
ICAgIGZhaWxJZkZhbHNlKHN1YnRyZWUsICJDYW5ub3QgcGFyc2UgdGhlIGJvZHkgb2YgdGhlIGJs
b2NrIHN0YXRlbWVudCIpOwogICAgIG1hdGNoT3JGYWlsKENMT1NFQlJBQ0UsICJFeHBlY3RlZCBh
IGNsb3NpbmcgJ30nIGF0IHRoZSBlbmQgb2YgYSBibG9jayBzdGF0ZW1lbnQiKTsKICAgICBpbnQg
ZW5kT2Zmc2V0ID0gbV90b2tlbi5tX2RhdGEub2Zmc2V0OwpAQCAtMTQ2Niw0NiArMTQ1Nyw0MyBA
QCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lCiB9CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVG
b3JtYWxQYXJhbWV0ZXJMaXN0IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZvcm1hbFBhcmFtZXRl
cnMoVHJlZUJ1aWxkZXImIGNvbnRleHQpCit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJv
b2wgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRm9ybWFsUGFyYW1ldGVycyhUcmVlQnVpbGRlciYg
Y29udGV4dCwgVHJlZUZvcm1hbFBhcmFtZXRlckxpc3QgbGlzdCwgdW5zaWduZWQmIHBhcmFtZXRl
ckNvdW50KQogewogICAgIGF1dG8gcGFyYW1ldGVyID0gcGFyc2VEZXN0cnVjdHVyaW5nUGF0dGVy
bihjb250ZXh0LCBEZXN0cnVjdHVyZVRvUGFyYW1ldGVycyk7CiAgICAgZmFpbElmRmFsc2UocGFy
YW1ldGVyLCAiQ2Fubm90IHBhcnNlIHBhcmFtZXRlciBwYXR0ZXJuIik7Ci0gICAgVHJlZUZvcm1h
bFBhcmFtZXRlckxpc3QgbGlzdCA9IGNvbnRleHQuY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdChw
YXJhbWV0ZXIpOwotICAgIFRyZWVGb3JtYWxQYXJhbWV0ZXJMaXN0IHRhaWwgPSBsaXN0OworICAg
IGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKGxpc3QsIHBhcmFtZXRlcik7CisgICAgcGFyYW1ldGVy
Q291bnQrKzsKICAgICB3aGlsZSAoY29uc3VtZShDT01NQSkpIHsKICAgICAgICAgcGFyYW1ldGVy
ID0gcGFyc2VEZXN0cnVjdHVyaW5nUGF0dGVybihjb250ZXh0LCBEZXN0cnVjdHVyZVRvUGFyYW1l
dGVycyk7CiAgICAgICAgIGZhaWxJZkZhbHNlKHBhcmFtZXRlciwgIkNhbm5vdCBwYXJzZSBwYXJh
bWV0ZXIgcGF0dGVybiIpOwotICAgICAgICB0YWlsID0gY29udGV4dC5jcmVhdGVGb3JtYWxQYXJh
bWV0ZXJMaXN0KHRhaWwsIHBhcmFtZXRlcik7CisgICAgICAgIGNvbnRleHQuYXBwZW5kUGFyYW1l
dGVyKGxpc3QsIHBhcmFtZXRlcik7CisgICAgICAgIHBhcmFtZXRlckNvdW50Kys7CiAgICAgfQot
ICAgIHJldHVybiBsaXN0OworICAgIHJldHVybiB0cnVlOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRnVuY3Rpb25C
b2R5IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSgKLSAgICBUcmVlQnVpbGRl
ciYgY29udGV4dCwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3Rh
cnQsIAotICAgIGludCBwYXJhbWV0ZXJzU3RhcnQsIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3Rv
cktpbmQsIEZ1bmN0aW9uUGFyc2VUeXBlIHBhcnNlVHlwZSkKKyAgICBUcmVlQnVpbGRlciYgY29u
dGV4dCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBpbnQgc3RhcnRDb2x1
bW4sIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQg
cGFyYW1ldGVyc1N0YXJ0LCAKKyAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBG
dW5jdGlvbkJvZHlUeXBlIGJvZHlUeXBlLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgRnVuY3Rp
b25QYXJzZU1vZGUgcGFyc2VNb2RlKQogewotICAgIEpTVG9rZW5Mb2NhdGlvbiBzdGFydExvY2F0
aW9uKHRva2VuTG9jYXRpb24oKSk7Ci0gICAgdW5zaWduZWQgc3RhcnRDb2x1bW4gPSB0b2tlbkNv
bHVtbigpOwotCi0gICAgaWYgKHBhcnNlVHlwZSA9PSBTdGFuZGFyZEZ1bmN0aW9uUGFyc2VUeXBl
KSB7CisgICAgaWYgKGJvZHlUeXBlID09IFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2sgfHwgYm9k
eVR5cGUgPT0gQXJyb3dGdW5jdGlvbkJvZHlCbG9jaykgewogICAgICAgICBuZXh0KCk7CiAgICAg
ICAgIGlmIChtYXRjaChDTE9TRUJSQUNFKSkgewogICAgICAgICAgICAgdW5zaWduZWQgZW5kQ29s
dW1uID0gdG9rZW5Db2x1bW4oKTsKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1
bmN0aW9uQm9keShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBl
bmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1l
dGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCk7CisgICAgICAgICAgICBy
ZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkJvZHkoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2Nh
dGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVu
Y3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBjb25zdHJ1Y3Rv
cktpbmQsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUpOwogICAgICAgICB9CiAgICAgfQogCiAg
ICAgRGVwdGhNYW5hZ2VyIHN0YXRlbWVudERlcHRoKCZtX3N0YXRlbWVudERlcHRoKTsKICAgICBt
X3N0YXRlbWVudERlcHRoID0gMDsKLSAgICB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6RnVuY3Rpb25C
b2R5QnVpbGRlciBib2R5QnVpbGRlcihjb25zdF9jYXN0PFZNKj4obV92bSksIG1fbGV4ZXIuZ2V0
KCkpOwotI2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCi0gICAgZmFpbElmRmFs
c2UocGFyc2VTb3VyY2VFbGVtZW50cyhib2R5QnVpbGRlciwgQ2hlY2tGb3JTdHJpY3RNb2RlLCBw
YXJzZVR5cGUpLCBwYXJzZVR5cGUgPT0gU3RhbmRhcmRGdW5jdGlvblBhcnNlVHlwZSA/ICJDYW5u
b3QgcGFyc2UgYm9keSBvZiB0aGlzIGZ1bmN0aW9uIiA6ICJDYW5ub3QgcGFyc2UgYm9keSBvZiB0
aGlzIGFycm93IGZ1bmN0aW9uIik7Ci0jZWxzZQotICAgIGZhaWxJZkZhbHNlKHBhcnNlU291cmNl
RWxlbWVudHMoYm9keUJ1aWxkZXIsIENoZWNrRm9yU3RyaWN0TW9kZSwgU3RhbmRhcmRGdW5jdGlv
blBhcnNlVHlwZSksICJDYW5ub3QgcGFyc2UgYm9keSBvZiB0aGlzIGZ1bmN0aW9uIik7Ci0jZW5k
aWYKKyAgICBTeW50YXhDaGVja2VyIHN5bnRheENoZWNrZXIoY29uc3RfY2FzdDxWTSo+KG1fdm0p
LCBtX2xleGVyLmdldCgpKTsKKyAgICBpZiAoYm9keVR5cGUgPT0gQXJyb3dGdW5jdGlvbkJvZHlF
eHByZXNzaW9uKQorICAgICAgICBmYWlsSWZGYWxzZShwYXJzZUFycm93RnVuY3Rpb25TaW5nbGVF
eHByZXNzaW9uQm9keVNvdXJjZUVsZW1lbnRzKHN5bnRheENoZWNrZXIpLCAiQ2Fubm90IHBhcnNl
IGJvZHkgb2YgdGhpcyBhcnJvdyBmdW5jdGlvbiIpOworICAgIGVsc2UKKyAgICAgICAgZmFpbElm
RmFsc2UocGFyc2VTb3VyY2VFbGVtZW50cyhzeW50YXhDaGVja2VyLCBDaGVja0ZvclN0cmljdE1v
ZGUpLCBib2R5VHlwZSA9PSBTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrID8gIkNhbm5vdCBwYXJz
ZSBib2R5IG9mIHRoaXMgZnVuY3Rpb24iIDogIkNhbm5vdCBwYXJzZSBib2R5IG9mIHRoaXMgYXJy
b3cgZnVuY3Rpb24iKTsKICAgICB1bnNpZ25lZCBlbmRDb2x1bW4gPSB0b2tlbkNvbHVtbigpOwot
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uQm9keShzdGFydExvY2F0aW9uLCB0b2tl
bkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0
LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0
cnVjdG9yS2luZCk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25Cb2R5KHN0YXJ0
TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rp
b25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmlj
dE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgcGFyc2VNb2RlKTsKIH0K
IAogc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShGdW5jdGlvblBhcnNl
TW9kZSBtb2RlKQpAQCAtMTUxNSwyNCArMTUwMywyOCBAQCBzdGF0aWMgY29uc3QgY2hhciogc3Ry
aW5nRm9yRnVuY3Rpb25Nb2RlCiAgICAgICAgIHJldHVybiAiZ2V0dGVyIjsKICAgICBjYXNlIFNl
dHRlck1vZGU6CiAgICAgICAgIHJldHVybiAic2V0dGVyIjsKLSAgICBjYXNlIEZ1bmN0aW9uTW9k
ZToKKyAgICBjYXNlIE5vcm1hbEZ1bmN0aW9uTW9kZToKICAgICAgICAgcmV0dXJuICJmdW5jdGlv
biI7CiAgICAgY2FzZSBNZXRob2RNb2RlOgogICAgICAgICByZXR1cm4gIm1ldGhvZCI7Ci0jaWYg
RU5BQkxFKEVTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCkKICAgICBjYXNlIEFycm93RnVuY3Rpb25N
b2RlOgogICAgICAgICByZXR1cm4gImFycm93IGZ1bmN0aW9uIjsKLSNlbmRpZgorICAgIGNhc2Ug
Tm90QUZ1bmN0aW9uTW9kZToKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgcmV0dXJuICIiOwogICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJU
eXBlPiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGludCBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImIGNvbnRleHQsIEZ1bmN0aW9uUGFy
c2VNb2RlIG1vZGUsIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4mIGluZm8pCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGlu
dCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoVHJlZUJ1aWxkZXIm
IGNvbnRleHQsIEZ1bmN0aW9uUGFyc2VNb2RlIG1vZGUsIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVl
QnVpbGRlcj4mIGZ1bmN0aW9uSW5mbykKIHsKKyAgICBSRUxFQVNFX0FTU0VSVChtb2RlICE9IE5v
dEFGdW5jdGlvbk1vZGUpOwogICAgIGludCBwYXJhbWV0ZXJzU3RhcnQgPSBtX3Rva2VuLm1fbG9j
YXRpb24uc3RhcnRPZmZzZXQ7CisgICAgVHJlZUZvcm1hbFBhcmFtZXRlckxpc3QgcGFyYW1ldGVy
TGlzdCA9IGNvbnRleHQuY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdCgpOworICAgIGZ1bmN0aW9u
SW5mby5wYXJhbWV0ZXJzID0gcGFyYW1ldGVyTGlzdDsKKyAgICBmdW5jdGlvbkluZm8uc3RhcnRP
ZmZzZXQgPSBwYXJhbWV0ZXJzU3RhcnQ7CiAgICAgCi0jaWYgRU5BQkxFKEVTNl9BUlJPV0ZVTkNU
SU9OX1NZTlRBWCkKICAgICBpZiAobW9kZSA9PSBBcnJvd0Z1bmN0aW9uTW9kZSkgewogICAgICAg
ICBpZiAoIW1hdGNoKElERU5UKSAmJiAhbWF0Y2goT1BFTlBBUkVOKSkgewogICAgICAgICAgICAg
c2VtYW50aWNGYWlsdXJlRHVlVG9LZXl3b3JkKHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShtb2RlKSwg
IiBuYW1lIik7CkBAIC0xNTQxLDc2ICsxNTMzLDg3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhl
clR5cGU+IHRlbXBsYXRlIDwKICAgICAgICAgICAgIGlmIChtYXRjaChPUEVOUEFSRU4pKSB7CiAg
ICAgICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
IGlmICghbWF0Y2goQ0xPU0VQQVJFTikpIHsKLSAgICAgICAgICAgICAgICAgICAgaW5mby5wYXJh
bWV0ZXJzID0gcGFyc2VGb3JtYWxQYXJhbWV0ZXJzKGNvbnRleHQpOwotICAgICAgICAgICAgICAg
ICAgICBmYWlsSWZGYWxzZShpbmZvLnBhcmFtZXRlcnMsICJDYW5ub3QgcGFyc2UgcGFyYW1ldGVy
cyBmb3IgdGhpcyAiLCBzdHJpbmdGb3JGdW5jdGlvbk1vZGUobW9kZSkpOwotICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobWF0Y2goQ0xPU0VQQVJFTikpCisgICAgICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJDb3VudCA9IDA7CisgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBmYWlsSWZGYWxzZShwYXJzZUZvcm1hbFBhcmFt
ZXRlcnMoY29udGV4dCwgcGFyYW1ldGVyTGlzdCwgZnVuY3Rpb25JbmZvLnBhcmFtZXRlckNvdW50
KSwgIkNhbm5vdCBwYXJzZSBwYXJhbWV0ZXJzIGZvciB0aGlzICIsIHN0cmluZ0ZvckZ1bmN0aW9u
TW9kZShtb2RlKSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgY29uc3VtZU9y
RmFpbChDTE9TRVBBUkVOLCAiRXhwZWN0ZWQgYSAnKScgb3IgYSAnLCcgYWZ0ZXIgYSBwYXJhbWV0
ZXIgZGVjbGFyYXRpb24iKTsKICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
ZnVuY3Rpb25JbmZvLnBhcmFtZXRlckNvdW50ID0gMTsKICAgICAgICAgICAgICAgICBhdXRvIHBh
cmFtZXRlciA9IHBhcnNlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4oY29udGV4dCwgRGVzdHJ1Y3R1cmVU
b1BhcmFtZXRlcnMpOwogICAgICAgICAgICAgICAgIGZhaWxJZkZhbHNlKHBhcmFtZXRlciwgIkNh
bm5vdCBwYXJzZSBwYXJhbWV0ZXIgcGF0dGVybiIpOwotICAgICAgICAgICAgICAgIGluZm8ucGFy
YW1ldGVycyA9IGNvbnRleHQuY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdChwYXJhbWV0ZXIpOwot
ICAgICAgICAgICAgICAgIGZhaWxJZkZhbHNlKGluZm8ucGFyYW1ldGVycywgIkNhbm5vdCBwYXJz
ZSBwYXJhbWV0ZXJzIGZvciB0aGlzICIsIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShtb2RlKSk7Cisg
ICAgICAgICAgICAgICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVyTGlzdCwgcGFy
YW1ldGVyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICBy
ZXR1cm4gcGFyYW1ldGVyc1N0YXJ0OwogICAgIH0KLSNlbmRpZgotICAgIAorCiAgICAgaWYgKCFj
b25zdW1lKE9QRU5QQVJFTikpIHsKICAgICAgICAgc2VtYW50aWNGYWlsdXJlRHVlVG9LZXl3b3Jk
KHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShtb2RlKSwgIiBuYW1lIik7CiAgICAgICAgIGZhaWxXaXRo
TWVzc2FnZSgiRXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgIiwgc3RyaW5nRm9yRnVu
Y3Rpb25Nb2RlKG1vZGUpLCAiJ3MgcGFyYW1ldGVyIGxpc3QiKTsKICAgICB9CiAKLSAgICBpZiAo
bW9kZSA9PSBHZXR0ZXJNb2RlKQorICAgIGlmIChtb2RlID09IEdldHRlck1vZGUpIHsKICAgICAg
ICAgY29uc3VtZU9yRmFpbChDTE9TRVBBUkVOLCAiZ2V0dGVyIGZ1bmN0aW9ucyBtdXN0IGhhdmUg
bm8gcGFyYW1ldGVycyIpOwotICAgIGVsc2UgaWYgKG1vZGUgPT0gU2V0dGVyTW9kZSkgeworICAg
ICAgICBmdW5jdGlvbkluZm8ucGFyYW1ldGVyQ291bnQgPSAwOworICAgIH0gZWxzZSBpZiAobW9k
ZSA9PSBTZXR0ZXJNb2RlKSB7CiAgICAgICAgIGZhaWxJZlRydWUobWF0Y2goQ0xPU0VQQVJFTiks
ICJzZXR0ZXIgZnVuY3Rpb25zIG11c3QgaGF2ZSBvbmUgcGFyYW1ldGVyIik7CiAgICAgICAgIGF1
dG8gcGFyYW1ldGVyID0gcGFyc2VEZXN0cnVjdHVyaW5nUGF0dGVybihjb250ZXh0LCBEZXN0cnVj
dHVyZVRvUGFyYW1ldGVycyk7CiAgICAgICAgIGZhaWxJZkZhbHNlKHBhcmFtZXRlciwgInNldHRl
ciBmdW5jdGlvbnMgbXVzdCBoYXZlIG9uZSBwYXJhbWV0ZXIiKTsKLSAgICAgICAgaW5mby5wYXJh
bWV0ZXJzID0gY29udGV4dC5jcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KHBhcmFtZXRlcik7Cisg
ICAgICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlckxpc3QsIHBhcmFtZXRlcik7
CisgICAgICAgIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJDb3VudCA9IDE7CiAgICAgICAgIGZhaWxJ
ZlRydWUobWF0Y2goQ09NTUEpLCAic2V0dGVyIGZ1bmN0aW9ucyBtdXN0IGhhdmUgb25lIHBhcmFt
ZXRlciIpOwogICAgICAgICBjb25zdW1lT3JGYWlsKENMT1NFUEFSRU4sICJFeHBlY3RlZCBhICcp
JyBhZnRlciBhIHBhcmFtZXRlciBkZWNsYXJhdGlvbiIpOwogICAgIH0gZWxzZSB7Ci0gICAgICAg
IGlmICghbWF0Y2goQ0xPU0VQQVJFTikpIHsKLSAgICAgICAgICAgIGluZm8ucGFyYW1ldGVycyA9
IHBhcnNlRm9ybWFsUGFyYW1ldGVycyhjb250ZXh0KTsKLSAgICAgICAgICAgIGZhaWxJZkZhbHNl
KGluZm8ucGFyYW1ldGVycywgIkNhbm5vdCBwYXJzZSBwYXJhbWV0ZXJzIGZvciB0aGlzICIsIHN0
cmluZ0ZvckZ1bmN0aW9uTW9kZShtb2RlKSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKG1hdGNo
KENMT1NFUEFSRU4pKQorICAgICAgICAgICAgZnVuY3Rpb25JbmZvLnBhcmFtZXRlckNvdW50ID0g
MDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZmFpbElmRmFsc2UocGFyc2VGb3JtYWxQYXJh
bWV0ZXJzKGNvbnRleHQsIHBhcmFtZXRlckxpc3QsIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJDb3Vu
dCksICJDYW5ub3QgcGFyc2UgcGFyYW1ldGVycyBmb3IgdGhpcyAiLCBzdHJpbmdGb3JGdW5jdGlv
bk1vZGUobW9kZSkpOwogICAgICAgICBjb25zdW1lT3JGYWlsKENMT1NFUEFSRU4sICJFeHBlY3Rl
ZCBhICcpJyBvciBhICcsJyBhZnRlciBhIHBhcmFtZXRlciBkZWNsYXJhdGlvbiIpOwogICAgIH0K
LSAgICAKKwogICAgIHJldHVybiBwYXJhbWV0ZXJzU3RhcnQ7CiB9CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBMZXhlclR5cGU+Ci10ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBGdW5j
dGlvblJlcXVpcmVtZW50cyByZXF1aXJlbWVudHMsIEZ1bmN0aW9uUGFyc2VNb2RlIG1vZGUsIGJv
b2wgbmFtZUlzSW5Db250YWluaW5nU2NvcGUsIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3Rvcktp
bmQsIFN1cGVyQmluZGluZyBleHBlY3RlZFN1cGVyQmluZGluZywgaW50IGZ1bmN0aW9uS2V5d29y
ZFN0YXJ0LCBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+JiBpbmZvLCBGdW5jdGlvblBh
cnNlVHlwZSBwYXJzZVR5cGUpCit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFy
c2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBG
dW5jdGlvblJlcXVpcmVtZW50cyByZXF1aXJlbWVudHMsIEZ1bmN0aW9uUGFyc2VNb2RlIG1vZGUs
IGJvb2wgbmFtZUlzSW5Db250YWluaW5nU2NvcGUsIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3Rv
cktpbmQsIFN1cGVyQmluZGluZyBleHBlY3RlZFN1cGVyQmluZGluZywgaW50IGZ1bmN0aW9uS2V5
d29yZFN0YXJ0LCBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+JiBmdW5jdGlvbkluZm8s
IEZ1bmN0aW9uUGFyc2VUeXBlIHBhcnNlVHlwZSkKIHsKKyAgICBSRUxFQVNFX0FTU0VSVChtb2Rl
ICE9IE5vdEFGdW5jdGlvbk1vZGUpOworCiAgICAgQXV0b1BvcFNjb3BlUmVmIGZ1bmN0aW9uU2Nv
cGUodGhpcywgcHVzaFNjb3BlKCkpOwogICAgIGZ1bmN0aW9uU2NvcGUtPnNldElzRnVuY3Rpb24o
KTsKICAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQgPSBtX3Rva2VuLm1fbG9jYXRpb24uc3RhcnRP
ZmZzZXQ7CiAgICAgY29uc3QgSWRlbnRpZmllciogbGFzdEZ1bmN0aW9uTmFtZSA9IG1fbGFzdEZ1
bmN0aW9uTmFtZTsKICAgICBtX2xhc3RGdW5jdGlvbk5hbWUgPSBudWxscHRyOwogICAgIGludCBw
YXJhbWV0ZXJzU3RhcnQ7CisgICAgSlNUb2tlbkxvY2F0aW9uIHN0YXJ0TG9jYXRpb247CisgICAg
aW50IHN0YXJ0Q29sdW1uOworICAgIEZ1bmN0aW9uQm9keVR5cGUgZnVuY3Rpb25Cb2R5VHlwZTsK
ICAgICAKICAgICBzd2l0Y2ggKHBhcnNlVHlwZSkgewogICAgIGNhc2UgU3RhbmRhcmRGdW5jdGlv
blBhcnNlVHlwZTogeworICAgICAgICBSRUxFQVNFX0FTU0VSVChtb2RlICE9IEFycm93RnVuY3Rp
b25Nb2RlKTsKICAgICAgICAgaWYgKG1hdGNoKElERU5UKSB8fCBpc0xFVE1hc2tlZEFzSURFTlQo
KSkgewotICAgICAgICAgICAgaW5mby5uYW1lID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7Ci0gICAg
ICAgICAgICBtX2xhc3RGdW5jdGlvbk5hbWUgPSBpbmZvLm5hbWU7CisgICAgICAgICAgICBmdW5j
dGlvbkluZm8ubmFtZSA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OworICAgICAgICAgICAgbV9sYXN0
RnVuY3Rpb25OYW1lID0gZnVuY3Rpb25JbmZvLm5hbWU7CiAgICAgICAgICAgICBuZXh0KCk7CiAg
ICAgICAgICAgICBpZiAoIW5hbWVJc0luQ29udGFpbmluZ1Njb3BlKQotICAgICAgICAgICAgICAg
IGZhaWxJZkZhbHNlSWZTdHJpY3QoZnVuY3Rpb25TY29wZS0+ZGVjbGFyZVZhcmlhYmxlKGluZm8u
bmFtZSksICInIiwgaW5mby5uYW1lLT5pbXBsKCksICInIGlzIG5vdCBhIHZhbGlkICIsIHN0cmlu
Z0ZvckZ1bmN0aW9uTW9kZShtb2RlKSwgIiBuYW1lIGluIHN0cmljdCBtb2RlIik7CisgICAgICAg
ICAgICAgICAgZmFpbElmRmFsc2VJZlN0cmljdChmdW5jdGlvblNjb3BlLT5kZWNsYXJlVmFyaWFi
bGUoZnVuY3Rpb25JbmZvLm5hbWUpLCAiJyIsIGZ1bmN0aW9uSW5mby5uYW1lLT5pbXBsKCksICIn
IGlzIG5vdCBhIHZhbGlkICIsIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShtb2RlKSwgIiBuYW1lIGlu
IHN0cmljdCBtb2RlIik7CiAgICAgICAgIH0gZWxzZSBpZiAocmVxdWlyZW1lbnRzID09IEZ1bmN0
aW9uTmVlZHNOYW1lKSB7Ci0gICAgICAgICAgICBpZiAobWF0Y2goT1BFTlBBUkVOKSAmJiBtb2Rl
ID09IEZ1bmN0aW9uTW9kZSkKKyAgICAgICAgICAgIGlmIChtYXRjaChPUEVOUEFSRU4pICYmIG1v
ZGUgPT0gTm9ybWFsRnVuY3Rpb25Nb2RlKQogICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbCgi
RnVuY3Rpb24gc3RhdGVtZW50cyBtdXN0IGhhdmUgYSBuYW1lIik7CiAgICAgICAgICAgICBzZW1h
bnRpY0ZhaWx1cmVEdWVUb0tleXdvcmQoc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKG1vZGUpLCAiIG5h
bWUiKTsKICAgICAgICAgICAgIGZhaWxEdWVUb1VuZXhwZWN0ZWRUb2tlbigpOwogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBwYXJhbWV0ZXJz
U3RhcnQgPSBwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhjb250ZXh0LCBtb2RlLCBpbmZvKTsKKwor
ICAgICAgICBzdGFydExvY2F0aW9uID0gdG9rZW5Mb2NhdGlvbigpOworICAgICAgICBmdW5jdGlv
bkluZm8uc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CisgICAgICAgIHN0YXJ0Q29sdW1uID0gdG9r
ZW5Db2x1bW4oKTsKKworICAgICAgICBwYXJhbWV0ZXJzU3RhcnQgPSBwYXJzZUZ1bmN0aW9uUGFy
YW1ldGVycyhjb250ZXh0LCBtb2RlLCBmdW5jdGlvbkluZm8pOwogICAgICAgICBwcm9wYWdhdGVF
cnJvcigpOwogICAgICAgICAKICAgICAgICAgbWF0Y2hPckZhaWwoT1BFTkJSQUNFLCAiRXhwZWN0
ZWQgYW4gb3BlbmluZyAneycgYXQgdGhlIHN0YXJ0IG9mIGEgIiwgc3RyaW5nRm9yRnVuY3Rpb25N
b2RlKG1vZGUpLCAiIGJvZHkiKTsKQEAgLTE2MjIsMTQgKzE2MjUsMjAgQEAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcgogICAgICAgICAgICAgY29uc3RydWN0b3JLaW5k
ID0gbV9kZWZhdWx0Q29uc3RydWN0b3JLaW5kOwogICAgICAgICAgICAgZXhwZWN0ZWRTdXBlckJp
bmRpbmcgPSBtX2RlZmF1bHRDb25zdHJ1Y3RvcktpbmQgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJp
dmVkID8gU3VwZXJCaW5kaW5nOjpOZWVkZWQgOiBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZDsKICAg
ICAgICAgfQotICAgICAgICAKLSAgICAgICAgaW5mby5zdGFydEZ1bmN0aW9uT2Zmc2V0ID0gbV90
b2tlbi5tX2RhdGEub2Zmc2V0OworCisgICAgICAgIGZ1bmN0aW9uQm9keVR5cGUgPSBTdGFuZGFy
ZEZ1bmN0aW9uQm9keUJsb2NrOwogICAgICAgICAKICAgICAgICAgYnJlYWs7CiAgICAgfQogI2lm
IEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCiAgICAgY2FzZSBBcnJvd0Z1bmN0aW9u
UGFyc2VUeXBlOiB7Ci0gICAgICAgIHBhcmFtZXRlcnNTdGFydCA9IHBhcnNlRnVuY3Rpb25QYXJh
bWV0ZXJzKGNvbnRleHQsIEFycm93RnVuY3Rpb25Nb2RlLCBpbmZvKTsKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlQobW9kZSA9PSBBcnJvd0Z1bmN0aW9uTW9kZSk7CisKKyAgICAgICAgc3RhcnRMb2Nh
dGlvbiA9IHRva2VuTG9jYXRpb24oKTsKKyAgICAgICAgZnVuY3Rpb25JbmZvLnN0YXJ0TGluZSA9
IHRva2VuTGluZSgpOworICAgICAgICBzdGFydENvbHVtbiA9IHRva2VuQ29sdW1uKCk7CisKKyAg
ICAgICAgcGFyYW1ldGVyc1N0YXJ0ID0gcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoY29udGV4dCwg
bW9kZSwgZnVuY3Rpb25JbmZvKTsKICAgICAgICAgcHJvcGFnYXRlRXJyb3IoKTsKICAgICAgICAg
CiAgICAgICAgIG1hdGNoT3JGYWlsKEFSUk9XRlVOQ1RJT04sICJFeHBlY3RlZCBhICc9PicgYWZ0
ZXIgYXJyb3cgZnVuY3Rpb24gcGFyYW1ldGVyIGRlY2xhcmF0aW9uIik7CkBAIC0xNjM5LDMwICsx
NjQ4LDI1IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXIKIAogICAg
ICAgICBBU1NFUlQoY29uc3RydWN0b3JLaW5kID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSk7CiAg
ICAgICAgIAotICAgICAgICBpbmZvLmFycm93RnVuY3Rpb25PZmZzZXQgPSBtX3Rva2VuLm1fZGF0
YS5vZmZzZXQ7CiAgICAgICAgIC8vIENoZWNrIGlmIGFycm93IGJvZHkgc3RhcnQgd2l0aCB7LiBJ
ZiBpdCB0cnVlIGl0IG1lYW4gdGhhdCBhcnJvdyBmdW5jdGlvbiBpcyBGYXQgYXJyb3cgZnVuY3Rp
b24KICAgICAgICAgLy8gYW5kIHdlIG5lZWQgdXNlIGNvbW1vbiBhcHByb2FjaCB0byBwYXJzZSBm
dW5jdGlvbiBib2R5Ci0gICAgICAgIFNhdmVQb2ludCBzYXZlUG9pbnQgPSBjcmVhdGVTYXZlUG9p
bnQoKTsKLSAgICAgICAgCiAgICAgICAgIG5leHQoKTsKLSAgICAgICAgaW5mby5mdW5jdGlvbkJv
ZHlUeXBlID0gbWF0Y2goT1BFTkJSQUNFKSA/IEFycm93RnVuY3Rpb25Cb2R5QmxvY2sgOiBBcnJv
d0Z1bmN0aW9uQm9keUV4cHJlc3Npb247Ci0gICAgICAgIGluZm8uc3RhcnRGdW5jdGlvbk9mZnNl
dCA9IChpbmZvLmZ1bmN0aW9uQm9keVR5cGUgPT0gQXJyb3dGdW5jdGlvbkJvZHlCbG9jaykgPyBt
X3Rva2VuLm1fZGF0YS5vZmZzZXQgOiBpbmZvLmFycm93RnVuY3Rpb25PZmZzZXQ7CisgICAgICAg
IGZ1bmN0aW9uQm9keVR5cGUgPSBtYXRjaChPUEVOQlJBQ0UpID8gQXJyb3dGdW5jdGlvbkJvZHlC
bG9jayA6IEFycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbjsKICAgICAgICAgCi0gICAgICAgIHJl
c3RvcmVTYXZlUG9pbnQoc2F2ZVBvaW50KTsKLQogICAgICAgICBicmVhazsKICAgICB9CisjZWxz
ZQorICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAj
ZW5kaWYKICAgICB9CiAgICAgCiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3IgPSBjb25zdHJ1
Y3RvcktpbmQgIT0gQ29uc3RydWN0b3JLaW5kOjpOb25lOwogCi0gICAgaW5mby5ib2R5U3RhcnRM
aW5lID0gdG9rZW5MaW5lKCk7Ci0gICAgaW5mby5ib2R5U3RhcnRDb2x1bW4gPSBtX3Rva2VuLm1f
ZGF0YS5vZmZzZXQgLSBtX3Rva2VuLm1fZGF0YS5saW5lU3RhcnRPZmZzZXQ7Ci0gICAgSlNUb2tl
bkxvY2F0aW9uIHN0YXJ0TG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKKyAgICBmdW5jdGlvbklu
Zm8uYm9keVN0YXJ0Q29sdW1uID0gc3RhcnRDb2x1bW47CiAgICAgCiAgICAgLy8gSWYgd2Uga25v
dyBhYm91dCB0aGlzIGZ1bmN0aW9uIGFscmVhZHksIHdlIGNhbiB1c2UgdGhlIGNhY2hlZCBpbmZv
IGFuZCBza2lwIHRoZSBwYXJzZXIgdG8gdGhlIGVuZCBvZiB0aGUgZnVuY3Rpb24uCi0gICAgaWYg
KGNvbnN0IFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtKiBjYWNoZWRJbmZvID0gVHJlZUJ1aWxkZXI6
OkNhblVzZUZ1bmN0aW9uQ2FjaGUgPyBmaW5kQ2FjaGVkRnVuY3Rpb25JbmZvKGluZm8uc3RhcnRG
dW5jdGlvbk9mZnNldCkgOiAwKSB7CisgICAgaWYgKGNvbnN0IFNvdXJjZVByb3ZpZGVyQ2FjaGVJ
dGVtKiBjYWNoZWRJbmZvID0gVHJlZUJ1aWxkZXI6OkNhblVzZUZ1bmN0aW9uQ2FjaGUgPyBmaW5k
Q2FjaGVkRnVuY3Rpb25JbmZvKGZ1bmN0aW9uSW5mby5zdGFydE9mZnNldCkgOiAwKSB7CiAgICAg
ICAgIC8vIElmIHdlJ3JlIGluIGEgc3RyaWN0IGNvbnRleHQsIHRoZSBjYWNoZWQgZnVuY3Rpb24g
aW5mbyBtdXN0IHNheSBpdCB3YXMgc3RyaWN0IHRvby4KICAgICAgICAgQVNTRVJUKCFzdHJpY3RN
b2RlKCkgfHwgY2FjaGVkSW5mby0+c3RyaWN0TW9kZSk7CiAgICAgICAgIEpTVG9rZW5Mb2NhdGlv
biBlbmRMb2NhdGlvbjsKQEAgLTE2NzEsMTcgKzE2NzUsMTcgQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBib29sIFBhcnNlcgogICAgICAgICBlbmRMb2NhdGlvbi5zdGFydE9mZnNldCA9
IGNhY2hlZEluZm8tPmxhc3RUb2NrZW5TdGFydE9mZnNldDsKICAgICAgICAgZW5kTG9jYXRpb24u
bGluZVN0YXJ0T2Zmc2V0ID0gY2FjaGVkSW5mby0+bGFzdFRvY2tlbkxpbmVTdGFydE9mZnNldDsK
IAotICAgICAgICBib29sIGVuZENvbHVtbklzT25TdGFydExpbmUgPSAoZW5kTG9jYXRpb24ubGlu
ZSA9PSBpbmZvLmJvZHlTdGFydExpbmUpOworICAgICAgICBib29sIGVuZENvbHVtbklzT25TdGFy
dExpbmUgPSAoZW5kTG9jYXRpb24ubGluZSA9PSBmdW5jdGlvbkluZm8uc3RhcnRMaW5lKTsKICAg
ICAgICAgQVNTRVJUKGVuZExvY2F0aW9uLnN0YXJ0T2Zmc2V0ID49IGVuZExvY2F0aW9uLmxpbmVT
dGFydE9mZnNldCk7CiAgICAgICAgIHVuc2lnbmVkIGJvZHlFbmRDb2x1bW4gPSBlbmRDb2x1bW5J
c09uU3RhcnRMaW5lID8KICAgICAgICAgICAgIGVuZExvY2F0aW9uLnN0YXJ0T2Zmc2V0IC0gbV90
b2tlbi5tX2RhdGEubGluZVN0YXJ0T2Zmc2V0IDoKICAgICAgICAgICAgIGVuZExvY2F0aW9uLnN0
YXJ0T2Zmc2V0IC0gZW5kTG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0OwogICAgICAgICB1bnNpZ25l
ZCBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0ID0gbV90b2tlbi5tX2xvY2F0aW9uLmxpbmVTdGFydE9m
ZnNldDsKIAotICAgICAgICBpbmZvLmJvZHkgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uQm9keSgK
LSAgICAgICAgICAgIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBpbmZvLmJvZHlTdGFydENv
bHVtbiwgYm9keUVuZENvbHVtbiwgCisgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5ID0gY29udGV4
dC5jcmVhdGVGdW5jdGlvbkJvZHkoCisgICAgICAgICAgICBzdGFydExvY2F0aW9uLCBlbmRMb2Nh
dGlvbiwgZnVuY3Rpb25JbmZvLmJvZHlTdGFydENvbHVtbiwgYm9keUVuZENvbHVtbiwgCiAgICAg
ICAgICAgICBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRl
cnNTdGFydCwgCi0gICAgICAgICAgICBjYWNoZWRJbmZvLT5zdHJpY3RNb2RlLCBjb25zdHJ1Y3Rv
cktpbmQpOworICAgICAgICAgICAgY2FjaGVkSW5mby0+c3RyaWN0TW9kZSwgY29uc3RydWN0b3JL
aW5kLCBjYWNoZWRJbmZvLT5wYXJhbWV0ZXJDb3VudCwgbW9kZSk7CiAgICAgICAgIAogICAgICAg
ICBmdW5jdGlvblNjb3BlLT5yZXN0b3JlRnJvbVNvdXJjZVByb3ZpZGVyQ2FjaGUoY2FjaGVkSW5m
byk7CiAgICAgICAgIHBvcFNjb3BlKGZ1bmN0aW9uU2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVkc0Zy
ZWVWYXJpYWJsZUluZm8pOwpAQCAtMTY5Myw2NCArMTY5Nyw0MCBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyCiAKICAgICAgICAgbV9sZXhlci0+c2V0T2Zmc2V0KG1f
dG9rZW4ubV9sb2NhdGlvbi5lbmRPZmZzZXQsIG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lU3RhcnRP
ZmZzZXQpOwogICAgICAgICBtX2xleGVyLT5zZXRMaW5lTnVtYmVyKG1fdG9rZW4ubV9sb2NhdGlv
bi5saW5lKTsKLSAgICAgICAgaW5mby5lbmRGdW5jdGlvbk9mZnNldCA9IGNhY2hlZEluZm8tPmVu
ZEZ1bmN0aW9uT2Zmc2V0OwotI2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCisg
ICAgICAgIGZ1bmN0aW9uSW5mby5lbmRPZmZzZXQgPSBjYWNoZWRJbmZvLT5lbmRGdW5jdGlvbk9m
ZnNldDsKKwogICAgICAgICBpZiAocGFyc2VUeXBlID09IEFycm93RnVuY3Rpb25QYXJzZVR5cGUp
Ci0gICAgICAgICAgICBpbmZvLmZ1bmN0aW9uQm9keVR5cGUgPSBjYWNoZWRJbmZvLT5pc0JvZHlB
cnJvd0V4cHJlc3Npb24gPyAgQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uIDogQXJyb3dGdW5j
dGlvbkJvZHlCbG9jazsKKyAgICAgICAgICAgIGZ1bmN0aW9uQm9keVR5cGUgPSBjYWNoZWRJbmZv
LT5pc0JvZHlBcnJvd0V4cHJlc3Npb24gPyAgQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uIDog
QXJyb3dGdW5jdGlvbkJvZHlCbG9jazsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgaW5mby5m
dW5jdGlvbkJvZHlUeXBlID0gU3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jazsKKyAgICAgICAgICAg
IGZ1bmN0aW9uQm9keVR5cGUgPSBTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrOwogICAgICAgICAK
LSAgICAgICAgc3dpdGNoIChpbmZvLmZ1bmN0aW9uQm9keVR5cGUpIHsKKyAgICAgICAgc3dpdGNo
IChmdW5jdGlvbkJvZHlUeXBlKSB7CiAgICAgICAgIGNhc2UgQXJyb3dGdW5jdGlvbkJvZHlFeHBy
ZXNzaW9uOgogICAgICAgICAgICAgbmV4dCgpOwotICAgICAgICAgICAgY29udGV4dC5zZXRFbmRP
ZmZzZXQoaW5mby5ib2R5LCBtX2xleGVyLT5jdXJyZW50T2Zmc2V0KCkpOworICAgICAgICAgICAg
Y29udGV4dC5zZXRFbmRPZmZzZXQoZnVuY3Rpb25JbmZvLmJvZHksIG1fbGV4ZXItPmN1cnJlbnRP
ZmZzZXQoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBcnJvd0Z1bmN0aW9u
Qm9keUJsb2NrOgogICAgICAgICBjYXNlIFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2s6Ci0gICAg
ICAgICAgICBjb250ZXh0LnNldEVuZE9mZnNldChpbmZvLmJvZHksIG1fbGV4ZXItPmN1cnJlbnRP
ZmZzZXQoKSk7CisgICAgICAgICAgICBjb250ZXh0LnNldEVuZE9mZnNldChmdW5jdGlvbkluZm8u
Ym9keSwgbV9sZXhlci0+Y3VycmVudE9mZnNldCgpKTsKICAgICAgICAgICAgIG5leHQoKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0jZWxzZQotICAgICAgICBjb250ZXh0LnNldEVu
ZE9mZnNldChpbmZvLmJvZHksIG1fbGV4ZXItPmN1cnJlbnRPZmZzZXQoKSk7Ci0gICAgICAgIG5l
eHQoKTsKLSNlbmRpZgotICAgICAgICBpbmZvLmJvZHlFbmRMaW5lID0gbV9sYXN0VG9rZW5FbmRQ
b3NpdGlvbi5saW5lOworICAgICAgICBmdW5jdGlvbkluZm8uZW5kTGluZSA9IG1fbGFzdFRva2Vu
RW5kUG9zaXRpb24ubGluZTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIAogICAg
IG1fbGFzdEZ1bmN0aW9uTmFtZSA9IGxhc3RGdW5jdGlvbk5hbWU7CiAgICAgUGFyc2VyU3RhdGUg
b2xkU3RhdGUgPSBzYXZlU3RhdGUoKTsKICAgICAKLSNpZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJ
T05fU1lOVEFYKQotICAgIHN3aXRjaCAoaW5mby5mdW5jdGlvbkJvZHlUeXBlKSB7Ci0gICAgY2Fz
ZSBBcnJvd0Z1bmN0aW9uQm9keUJsb2NrOiB7Ci0gICAgICAgIC8vIENvbnN1bWUgPT4gaW4gY2Fz
ZSBvZiBhcnJvdyBmdW5jdGlvbiBibG9jayBlLmcuIHggPT4geyByZXR1cm4geDsgfQotICAgICAg
ICBuZXh0KCk7Ci0gICAgCi0gICAgICAgIGluZm8uYm9keVN0YXJ0TGluZSA9IHRva2VuTGluZSgp
OwotICAgICAgICBpbmZvLmJvZHlTdGFydENvbHVtbiA9IG1fdG9rZW4ubV9kYXRhLm9mZnNldCAt
IG1fdG9rZW4ubV9kYXRhLmxpbmVTdGFydE9mZnNldDsKLSAgICAgICAgICAgIAotICAgICAgICBp
bmZvLmJvZHkgPSBwYXJzZUZ1bmN0aW9uQm9keShjb250ZXh0LCBmdW5jdGlvbktleXdvcmRTdGFy
dCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgY29uc3RydWN0b3JLaW5kLCBT
dGFuZGFyZEZ1bmN0aW9uUGFyc2VUeXBlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNh
c2UgU3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jazoKLSAgICBjYXNlIEFycm93RnVuY3Rpb25Cb2R5
RXhwcmVzc2lvbiA6IHsKLSAgICAgICAgaW5mby5ib2R5ID0gcGFyc2VGdW5jdGlvbkJvZHkoY29u
dGV4dCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJz
U3RhcnQsIGNvbnN0cnVjdG9yS2luZCwgcGFyc2VUeXBlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
fQotICAgIH0KLSNlbHNlCi0gICAgaW5mby5ib2R5ID0gcGFyc2VGdW5jdGlvbkJvZHkoY29udGV4
dCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3Rh
cnQsIGNvbnN0cnVjdG9yS2luZCwgU3RhbmRhcmRGdW5jdGlvblBhcnNlVHlwZSk7Ci0jZW5kaWYK
KyAgICBmdW5jdGlvbkluZm8uYm9keSA9IHBhcnNlRnVuY3Rpb25Cb2R5KGNvbnRleHQsIHN0YXJ0
TG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1l
U3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgY29uc3RydWN0b3JLaW5kLCBmdW5jdGlvbkJvZHlUeXBl
LCBmdW5jdGlvbkluZm8ucGFyYW1ldGVyQ291bnQsIG1vZGUpOwogICAgIAogICAgIHJlc3RvcmVT
dGF0ZShvbGRTdGF0ZSk7Ci0gICAgZmFpbElmRmFsc2UoaW5mby5ib2R5LCAiQ2Fubm90IHBhcnNl
IHRoZSBib2R5IG9mIHRoaXMgIiwgc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKG1vZGUpKTsKLSAgICBj
b250ZXh0LnNldEVuZE9mZnNldChpbmZvLmJvZHksIG1fbGV4ZXItPmN1cnJlbnRPZmZzZXQoKSk7
Ci0gICAgaWYgKGZ1bmN0aW9uU2NvcGUtPnN0cmljdE1vZGUoKSAmJiBpbmZvLm5hbWUpIHsKLSAg
ICAgICAgUkVMRUFTRV9BU1NFUlQobW9kZSA9PSBGdW5jdGlvbk1vZGUgfHwgbW9kZSA9PSBNZXRo
b2RNb2RlKTsKLSAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKG1fdm0tPnByb3BlcnR5TmFtZXMt
PmFyZ3VtZW50cyA9PSAqaW5mby5uYW1lLCAiJyIsIGluZm8ubmFtZS0+aW1wbCgpLCAiJyBpcyBu
b3QgYSB2YWxpZCBmdW5jdGlvbiBuYW1lIGluIHN0cmljdCBtb2RlIik7Ci0gICAgICAgIHNlbWFu
dGljRmFpbElmVHJ1ZShtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5ldmFsID09ICppbmZvLm5hbWUsICIn
IiwgaW5mby5uYW1lLT5pbXBsKCksICInIGlzIG5vdCBhIHZhbGlkIGZ1bmN0aW9uIG5hbWUgaW4g
c3RyaWN0IG1vZGUiKTsKKyAgICBmYWlsSWZGYWxzZShmdW5jdGlvbkluZm8uYm9keSwgIkNhbm5v
dCBwYXJzZSB0aGUgYm9keSBvZiB0aGlzICIsIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShtb2RlKSk7
CisgICAgY29udGV4dC5zZXRFbmRPZmZzZXQoZnVuY3Rpb25JbmZvLmJvZHksIG1fbGV4ZXItPmN1
cnJlbnRPZmZzZXQoKSk7CisgICAgaWYgKGZ1bmN0aW9uU2NvcGUtPnN0cmljdE1vZGUoKSAmJiBm
dW5jdGlvbkluZm8ubmFtZSkgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChtb2RlID09IE5vcm1h
bEZ1bmN0aW9uTW9kZSB8fCBtb2RlID09IE1ldGhvZE1vZGUpOworICAgICAgICBzZW1hbnRpY0Zh
aWxJZlRydWUobV92bS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzID09ICpmdW5jdGlvbkluZm8u
bmFtZSwgIiciLCBmdW5jdGlvbkluZm8ubmFtZS0+aW1wbCgpLCAiJyBpcyBub3QgYSB2YWxpZCBm
dW5jdGlvbiBuYW1lIGluIHN0cmljdCBtb2RlIik7CisgICAgICAgIHNlbWFudGljRmFpbElmVHJ1
ZShtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5ldmFsID09ICpmdW5jdGlvbkluZm8ubmFtZSwgIiciLCBm
dW5jdGlvbkluZm8ubmFtZS0+aW1wbCgpLCAiJyBpcyBub3QgYSB2YWxpZCBmdW5jdGlvbiBuYW1l
IGluIHN0cmljdCBtb2RlIik7CiAgICAgfQogICAgIGlmIChmdW5jdGlvblNjb3BlLT5oYXNEaXJl
Y3RTdXBlcigpKSB7CiAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSghaXNDbGFzc0NvbnN0cnVj
dG9yLCAiQ2Fubm90IGNhbGwgc3VwZXIoKSBvdXRzaWRlIG9mIGEgY2xhc3MgY29uc3RydWN0b3Ii
KTsKQEAgLTE3NjAsNTYgKzE3NDAsNDggQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBi
b29sIFBhcnNlcgogICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoZXhwZWN0ZWRTdXBlckJpbmRp
bmcgPT0gU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsICJzdXBlciBjYW4gb25seSBiZSB1c2VkIGlu
IGEgbWV0aG9kIG9mIGEgZGVyaXZlZCBjbGFzcyIpOwogCiAgICAgSlNUb2tlbkxvY2F0aW9uIGxv
Y2F0aW9uID0gSlNUb2tlbkxvY2F0aW9uKG1fdG9rZW4ubV9sb2NhdGlvbik7Ci0gICAgaW5mby5l
bmRGdW5jdGlvbk9mZnNldCA9IG1fdG9rZW4ubV9kYXRhLm9mZnNldDsKKyAgICBmdW5jdGlvbklu
Zm8uZW5kT2Zmc2V0ID0gbV90b2tlbi5tX2RhdGEub2Zmc2V0OwogICAgIAotI2lmIEVOQUJMRShF
UzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCi0gICAgaWYgKGluZm8uZnVuY3Rpb25Cb2R5VHlwZSA9
PSBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pIHsKKyAgICBpZiAoZnVuY3Rpb25Cb2R5VHlw
ZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pIHsKICAgICAgICAgbG9jYXRpb24gPSBs
b2NhdGlvbkJlZm9yZUxhc3RUb2tlbigpOwotICAgICAgICBpbmZvLmVuZEZ1bmN0aW9uT2Zmc2V0
ID0gbG9jYXRpb24uZW5kT2Zmc2V0OworICAgICAgICBmdW5jdGlvbkluZm8uZW5kT2Zmc2V0ID0g
bG9jYXRpb24uZW5kT2Zmc2V0OwogICAgIH0KLSNlbmRpZgogICAgIAogICAgIC8vIENhY2hlIHRo
ZSB0b2tlbml6ZXIgc3RhdGUgYW5kIHRoZSBmdW5jdGlvbiBzY29wZSB0aGUgZmlyc3QgdGltZSB0
aGUgZnVuY3Rpb24gaXMgcGFyc2VkLgogICAgIC8vIEFueSBmdXR1cmUgcmVwYXJzaW5nIGNhbiB0
aGVuIHNraXAgdGhlIGZ1bmN0aW9uLgogICAgIHN0YXRpYyBjb25zdCBpbnQgbWluaW11bUZ1bmN0
aW9uTGVuZ3RoVG9DYWNoZSA9IDE2OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTb3VyY2VQcm92aWRl
ckNhY2hlSXRlbT4gbmV3SW5mbzsKLSAgICBpbnQgZnVuY3Rpb25MZW5ndGggPSBpbmZvLmVuZEZ1
bmN0aW9uT2Zmc2V0IC0gaW5mby5zdGFydEZ1bmN0aW9uT2Zmc2V0OworICAgIGludCBmdW5jdGlv
bkxlbmd0aCA9IGZ1bmN0aW9uSW5mby5lbmRPZmZzZXQgLSBmdW5jdGlvbkluZm8uc3RhcnRPZmZz
ZXQ7CiAgICAgaWYgKFRyZWVCdWlsZGVyOjpDYW5Vc2VGdW5jdGlvbkNhY2hlICYmIG1fZnVuY3Rp
b25DYWNoZSAmJiBmdW5jdGlvbkxlbmd0aCA+IG1pbmltdW1GdW5jdGlvbkxlbmd0aFRvQ2FjaGUp
IHsKICAgICAgICAgU291cmNlUHJvdmlkZXJDYWNoZUl0ZW1DcmVhdGlvblBhcmFtZXRlcnMgcGFy
YW1ldGVyczsKLSAgICAgICAgcGFyYW1ldGVycy5lbmRGdW5jdGlvbk9mZnNldCA9IGluZm8uZW5k
RnVuY3Rpb25PZmZzZXQ7CisgICAgICAgIHBhcmFtZXRlcnMuZW5kRnVuY3Rpb25PZmZzZXQgPSBm
dW5jdGlvbkluZm8uZW5kT2Zmc2V0OwogICAgICAgICBwYXJhbWV0ZXJzLmZ1bmN0aW9uTmFtZVN0
YXJ0ID0gZnVuY3Rpb25OYW1lU3RhcnQ7CiAgICAgICAgIHBhcmFtZXRlcnMubGFzdFRvY2tlbkxp
bmUgPSBsb2NhdGlvbi5saW5lOwogICAgICAgICBwYXJhbWV0ZXJzLmxhc3RUb2NrZW5TdGFydE9m
ZnNldCA9IGxvY2F0aW9uLnN0YXJ0T2Zmc2V0OwogICAgICAgICBwYXJhbWV0ZXJzLmxhc3RUb2Nr
ZW5FbmRPZmZzZXQgPSBsb2NhdGlvbi5lbmRPZmZzZXQ7CiAgICAgICAgIHBhcmFtZXRlcnMubGFz
dFRvY2tlbkxpbmVTdGFydE9mZnNldCA9IGxvY2F0aW9uLmxpbmVTdGFydE9mZnNldDsKLSNpZiBF
TkFCTEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQotICAgICAgICBpZiAoaW5mby5mdW5jdGlv
bkJvZHlUeXBlID09IEFycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikgeworICAgICAgICBwYXJh
bWV0ZXJzLnBhcmFtZXRlckNvdW50ID0gZnVuY3Rpb25JbmZvLnBhcmFtZXRlckNvdW50OworICAg
ICAgICBpZiAoZnVuY3Rpb25Cb2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24p
IHsKICAgICAgICAgICAgIHBhcmFtZXRlcnMuaXNCb2R5QXJyb3dFeHByZXNzaW9uID0gdHJ1ZTsK
ICAgICAgICAgICAgIHBhcmFtZXRlcnMudG9rZW5UeXBlID0gbV90b2tlbi5tX3R5cGU7CiAgICAg
ICAgIH0KLSNlbmRpZgogICAgICAgICBmdW5jdGlvblNjb3BlLT5maWxsUGFyYW1ldGVyc0ZvclNv
dXJjZVByb3ZpZGVyQ2FjaGUocGFyYW1ldGVycyk7CiAgICAgICAgIG5ld0luZm8gPSBTb3VyY2VQ
cm92aWRlckNhY2hlSXRlbTo6Y3JlYXRlKHBhcmFtZXRlcnMpOwogICAgIH0KICAgICAKICAgICBw
b3BTY29wZShmdW5jdGlvblNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZv
KTsKICAgICAKLSNpZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQotICAgIGlmIChp
bmZvLmZ1bmN0aW9uQm9keVR5cGUgPT0gQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQorICAg
IGlmIChmdW5jdGlvbkJvZHlUeXBlID09IEFycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKICAg
ICAgICAgZmFpbElmRmFsc2UoaXNFbmRPZkFycm93RnVuY3Rpb24oKSwgIkV4cGVjdGVkIHRoZSBj
bG9zaW5nICc7JyAnLCcgJ10nICcpJyAnfScsIGxpbmUgdGVybWluYXRvciBvciBFT0YgYWZ0ZXIg
YXJyb3cgZnVuY3Rpb24iKTsKICAgICBlbHNlIHsKICAgICAgICAgbWF0Y2hPckZhaWwoQ0xPU0VC
UkFDRSwgIkV4cGVjdGVkIGEgY2xvc2luZyAnfScgYWZ0ZXIgYSAiLCBzdHJpbmdGb3JGdW5jdGlv
bk1vZGUobW9kZSksICIgYm9keSIpOwogICAgICAgICBuZXh0KCk7CiAgICAgfQotI2Vsc2UKLSAg
ICBtYXRjaE9yRmFpbChDTE9TRUJSQUNFLCAiRXhwZWN0ZWQgYSBjbG9zaW5nICd9JyBhZnRlciBh
ICIsIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShtb2RlKSwgIiBib2R5Iik7Ci0gICAgbmV4dCgpOwot
I2VuZGlmCiAgICAgCiAgICAgaWYgKG5ld0luZm8pCi0gICAgICAgIG1fZnVuY3Rpb25DYWNoZS0+
YWRkKGluZm8uc3RhcnRGdW5jdGlvbk9mZnNldCwgV1RGOjptb3ZlKG5ld0luZm8pKTsKKyAgICAg
ICAgbV9mdW5jdGlvbkNhY2hlLT5hZGQoZnVuY3Rpb25JbmZvLnN0YXJ0T2Zmc2V0LCBXVEY6Om1v
dmUobmV3SW5mbykpOwogICAgIAotICAgIGluZm8uYm9keUVuZExpbmUgPSBtX2xhc3RUb2tlbkVu
ZFBvc2l0aW9uLmxpbmU7CisgICAgZnVuY3Rpb25JbmZvLmVuZExpbmUgPSBtX2xhc3RUb2tlbkVu
ZFBvc2l0aW9uLmxpbmU7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTE4MjAsMTIgKzE3OTIs
MTIgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZQogICAgIEpTVG9r
ZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIHVuc2lnbmVkIGZ1bmN0
aW9uS2V5d29yZFN0YXJ0ID0gdG9rZW5TdGFydCgpOwogICAgIG5leHQoKTsKLSAgICBQYXJzZXJG
dW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+IGluZm87Ci0gICAgZmFpbElmRmFsc2UoKHBhcnNlRnVu
Y3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTmVlZHNOYW1lLCBGdW5jdGlvbk1vZGUsIHRydWUs
IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsCi0gICAgICAg
IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbmZvLCBTdGFuZGFyZEZ1bmN0aW9uUGFyc2VUeXBlKSks
ICJDYW5ub3QgcGFyc2UgdGhpcyBmdW5jdGlvbiIpOwotICAgIGZhaWxJZkZhbHNlKGluZm8ubmFt
ZSwgIkZ1bmN0aW9uIHN0YXRlbWVudHMgbXVzdCBoYXZlIGEgbmFtZSIpOwotICAgIGZhaWxJZkZh
bHNlSWZTdHJpY3QoZGVjbGFyZVZhcmlhYmxlKGluZm8ubmFtZSksICJDYW5ub3QgZGVjbGFyZSBh
IGZ1bmN0aW9uIG5hbWVkICciLCBpbmZvLm5hbWUtPmltcGwoKSwgIicgaW4gc3RyaWN0IG1vZGUi
KTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jRGVjbFN0YXRlbWVudChsb2NhdGlvbiwg
aW5mbyk7CisgICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiBmdW5jdGlvbkluZm87
CisgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTmVl
ZHNOYW1lLCBOb3JtYWxGdW5jdGlvbk1vZGUsIHRydWUsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwg
U3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsCisgICAgICAgIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBm
dW5jdGlvbkluZm8sIFN0YW5kYXJkRnVuY3Rpb25QYXJzZVR5cGUpKSwgIkNhbm5vdCBwYXJzZSB0
aGlzIGZ1bmN0aW9uIik7CisgICAgZmFpbElmRmFsc2UoZnVuY3Rpb25JbmZvLm5hbWUsICJGdW5j
dGlvbiBzdGF0ZW1lbnRzIG11c3QgaGF2ZSBhIG5hbWUiKTsKKyAgICBmYWlsSWZGYWxzZUlmU3Ry
aWN0KGRlY2xhcmVWYXJpYWJsZShmdW5jdGlvbkluZm8ubmFtZSksICJDYW5ub3QgZGVjbGFyZSBh
IGZ1bmN0aW9uIG5hbWVkICciLCBmdW5jdGlvbkluZm8ubmFtZS0+aW1wbCgpLCAiJyBpbiBzdHJp
Y3QgbW9kZSIpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmNEZWNsU3RhdGVtZW50KGxv
Y2F0aW9uLCBmdW5jdGlvbkluZm8pOwogfQogCiAjaWYgRU5BQkxFKEVTNl9DTEFTU19TWU5UQVgp
CkBAIC0xOTM5LDcgKzE5MTEsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVD
bGFzc0V4CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBQYXJzZXJGdW5jdGlvbkluZm88
VHJlZUJ1aWxkZXI+IG1ldGhvZEluZm87CiAgICAgICAgICAgICBib29sIGlzQ29uc3RydWN0b3Ig
PSAhaXNTdGF0aWNNZXRob2QgJiYgKmlkZW50ID09IHByb3BlcnR5TmFtZXMuY29uc3RydWN0b3I7
Ci0gICAgICAgICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVu
Y3Rpb25Ob1JlcXVpcmVtZW50cywgaXNTdGF0aWNNZXRob2QgPyBGdW5jdGlvbk1vZGUgOiBNZXRo
b2RNb2RlLCBmYWxzZSwgaXNDb25zdHJ1Y3RvciA/IGNvbnN0cnVjdG9yS2luZCA6IENvbnN0cnVj
dG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOZWVkZWQsIG1ldGhvZFN0YXJ0LCBtZXRob2RJ
bmZvLCBTdGFuZGFyZEZ1bmN0aW9uUGFyc2VUeXBlKSksICJDYW5ub3QgcGFyc2UgdGhpcyBtZXRo
b2QiKTsKKyAgICAgICAgICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0
LCBGdW5jdGlvbk5vUmVxdWlyZW1lbnRzLCBpc1N0YXRpY01ldGhvZCA/IE5vcm1hbEZ1bmN0aW9u
TW9kZSA6IE1ldGhvZE1vZGUsIGZhbHNlLCBpc0NvbnN0cnVjdG9yID8gY29uc3RydWN0b3JLaW5k
IDogQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgbWV0aG9kU3Rh
cnQsIG1ldGhvZEluZm8sIFN0YW5kYXJkRnVuY3Rpb25QYXJzZVR5cGUpKSwgIkNhbm5vdCBwYXJz
ZSB0aGlzIG1ldGhvZCIpOwogICAgICAgICAgICAgZmFpbElmRmFsc2UoaWRlbnQgJiYgZGVjbGFy
ZVZhcmlhYmxlKGlkZW50KSwgIkNhbm5vdCBkZWNsYXJlIGEgbWV0aG9kIG5hbWVkICciLCBtZXRo
b2RJbmZvLm5hbWUtPmltcGwoKSwgIiciKTsKICAgICAgICAgICAgIG1ldGhvZEluZm8ubmFtZSA9
IGlzQ29uc3RydWN0b3IgPyBjbGFzc05hbWUgOiBpZGVudDsKIApAQCAtMjc1Nyw3ICsyNzI5LDcg
QEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzcwogICAgICAgICBuZXh0
KCk7CiAgICAgICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4gaW5mbzsKICAgICAg
ICAgaW5mby5uYW1lID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyOwotICAg
ICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25Ob1Jl
cXVpcmVtZW50cywgRnVuY3Rpb25Nb2RlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBT
dXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGluZm8sIFN0YW5k
YXJkRnVuY3Rpb25QYXJzZVR5cGUpKSwgIkNhbm5vdCBwYXJzZSBmdW5jdGlvbiBleHByZXNzaW9u
Iik7CisgICAgICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5j
dGlvbk5vUmVxdWlyZW1lbnRzLCBOb3JtYWxGdW5jdGlvbk1vZGUsIGZhbHNlLCBDb25zdHJ1Y3Rv
cktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBmdW5jdGlvbktleXdvcmRTdGFy
dCwgaW5mbywgU3RhbmRhcmRGdW5jdGlvblBhcnNlVHlwZSkpLCAiQ2Fubm90IHBhcnNlIGZ1bmN0
aW9uIGV4cHJlc3Npb24iKTsKICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25F
eHByKGxvY2F0aW9uLCBpbmZvKTsKICAgICB9CiAjaWYgRU5BQkxFKEVTNl9DTEFTU19TWU5UQVgp
CkBAIC0zMDAyLDcgKzI5NzQsNiBAQCBlbmRNZW1iZXJFeHByZXNzaW9uOgogICAgIHJldHVybiBi
YXNlOwogfQogCi0jaWYgRU5BQkxFKEVTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCkKIHRlbXBsYXRl
IDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVF
eHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUFycm93RnVuY3Rpb25FeHByZXNzaW9u
KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewpAQCAtMzAxMiwxMSArMjk4MywxMCBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzCiAgICAgbG9jYXRpb24gPSB0b2tlbkxv
Y2F0aW9uKCk7CiAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiBpbmZvOwogICAg
IGluZm8ubmFtZSA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllcjsKLSAgICBm
YWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25Ob1JlcXVpcmVt
ZW50cywgRnVuY3Rpb25Nb2RlLCB0cnVlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmlu
ZGluZzo6Tm90TmVlZGVkLCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW5mbywgQXJyb3dGdW5jdGlv
blBhcnNlVHlwZSkpLCAiQ2Fubm90IHBhcnNlIGFycm93IGZ1bmN0aW9uIGV4cHJlc3Npb24iKTsK
KyAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25Ob1Jl
cXVpcmVtZW50cywgQXJyb3dGdW5jdGlvbk1vZGUsIHRydWUsIENvbnN0cnVjdG9yS2luZDo6Tm9u
ZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbmZvLCBB
cnJvd0Z1bmN0aW9uUGFyc2VUeXBlKSksICJDYW5ub3QgcGFyc2UgYXJyb3cgZnVuY3Rpb24gZXhw
cmVzc2lvbiIpOwogCiAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQXJyb3dGdW5jdGlvbkV4cHIo
bG9jYXRpb24sIGluZm8pOwogfQotI2VuZGlmCiAKIHN0YXRpYyBjb25zdCBjaGFyKiBvcGVyYXRv
clN0cmluZyhib29sIHByZWZpeCwgdW5zaWduZWQgdG9rKQogewpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5oCShyZXZpc2lvbiAxODY5MTMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC04MSwyMSArODEsOSBA
QCBjbGFzcyBTb3VyY2VDb2RlOwogQ09NUElMRV9BU1NFUlQoTGFzdFVudGFnZ2VkVG9rZW4gPCA2
NCwgTGVzc1RoYW42NFVudGFnZ2VkVG9rZW5zKTsKIAogZW51bSBTb3VyY2VFbGVtZW50c01vZGUg
eyBDaGVja0ZvclN0cmljdE1vZGUsIERvbnRDaGVja0ZvclN0cmljdE1vZGUgfTsKLSNpZiBFTkFC
TEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQogZW51bSBGdW5jdGlvblBhcnNlVHlwZSB7IFN0
YW5kYXJkRnVuY3Rpb25QYXJzZVR5cGUsIEFycm93RnVuY3Rpb25QYXJzZVR5cGUgfTsKLSNlbHNl
Ci1lbnVtIEZ1bmN0aW9uUGFyc2VUeXBlIHsgU3RhbmRhcmRGdW5jdGlvblBhcnNlVHlwZX07Ci0j
ZW5kaWYKK2VudW0gRnVuY3Rpb25Cb2R5VHlwZSB7IEFycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lv
biwgQXJyb3dGdW5jdGlvbkJvZHlCbG9jaywgU3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jayB9Owog
ZW51bSBGdW5jdGlvblJlcXVpcmVtZW50cyB7IEZ1bmN0aW9uTm9SZXF1aXJlbWVudHMsIEZ1bmN0
aW9uTmVlZHNOYW1lIH07Ci1lbnVtIEZ1bmN0aW9uUGFyc2VNb2RlIHsKLSAgICBGdW5jdGlvbk1v
ZGUsCi0gICAgR2V0dGVyTW9kZSwKLSAgICBTZXR0ZXJNb2RlLAotICAgIE1ldGhvZE1vZGUsCi0j
aWYgRU5BQkxFKEVTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCkKLSAgICBBcnJvd0Z1bmN0aW9uTW9k
ZQotI2VuZGlmCi19OwogZW51bSBEZXN0cnVjdHVyaW5nS2luZCB7CiAgICAgRGVzdHJ1Y3R1cmVU
b1ZhcmlhYmxlcywKICAgICBEZXN0cnVjdHVyZVRvTGV4aWNhbFZhcmlhYmxlcywKQEAgLTUzNywx
MyArNTI1LDEyIEBAIGNsYXNzIFBhcnNlciB7CiAKIHB1YmxpYzoKICAgICBQYXJzZXIoCi0gICAg
ICAgIFZNKiwgY29uc3QgU291cmNlQ29kZSYsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGNvbnN0IElk
ZW50aWZpZXImLCAKLSAgICAgICAgSlNQYXJzZXJCdWlsdGluTW9kZSwgSlNQYXJzZXJTdHJpY3RN
b2RlLCBKU1BhcnNlckNvZGVUeXBlLAorICAgICAgICBWTSosIGNvbnN0IFNvdXJjZUNvZGUmLCBK
U1BhcnNlckJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGUsIEpTUGFyc2VyQ29kZVR5cGUs
IAogICAgICAgICBDb25zdHJ1Y3RvcktpbmQgZGVmYXVsdENvbnN0cnVjdG9yS2luZCA9IENvbnN0
cnVjdG9yS2luZDo6Tm9uZSwgVGhpc1REWk1vZGUgPSBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRl
ZCk7CiAgICAgflBhcnNlcigpOwogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFBhcnNlZE5vZGU+Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKFBhcnNlckVycm9yJik7CisgICAg
c3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKFBhcnNlckVycm9yJiwgY29uc3QgSWRl
bnRpZmllciYsIEZ1bmN0aW9uUGFyc2VNb2RlKTsKIAogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0
aW9uQmVmb3JlTGFzdE5ld2xpbmUoKSBjb25zdCB7IHJldHVybiBtX2xleGVyLT5wb3NpdGlvbkJl
Zm9yZUxhc3ROZXdsaW5lKCk7IH0KICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb25CZWZvcmVM
YXN0VG9rZW4oKSBjb25zdCB7IHJldHVybiBtX2xleGVyLT5sYXN0VG9rZW5Mb2NhdGlvbigpOyB9
CkBAIC03MzksNyArNzI2LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBQYXJzZXIoKTsKLSAg
ICBTdHJpbmcgcGFyc2VJbm5lcigpOworICAgIFN0cmluZyBwYXJzZUlubmVyKGNvbnN0IElkZW50
aWZpZXImLCBGdW5jdGlvblBhcnNlTW9kZSk7CiAKICAgICB2b2lkIGRpZEZpbmlzaFBhcnNpbmco
U291cmNlRWxlbWVudHMqLCBEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjayYsIFZhcmlh
YmxlRW52aXJvbm1lbnQmLCBDb2RlRmVhdHVyZXMsIGludCwgY29uc3QgVmVjdG9yPFJlZlB0cjxV
bmlxdWVkU3RyaW5nSW1wbD4+JiYpOwogCkBAIC03OTYsNyArNzgzLDYgQEAgcHJpdmF0ZToKICAg
ICAgICAgcmV0dXJuIG1fdG9rZW4ubV90eXBlID09IElERU5UICYmICptX3Rva2VuLm1fZGF0YS5p
ZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5vZjsKICAgICB9CiAgICAgCi0jaWYgRU5BQkxF
KEVTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCkKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNFbmRP
ZkFycm93RnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1hdGNoKFNFTUlDT0xPTikg
fHwgbWF0Y2goQ09NTUEpIHx8IG1hdGNoKENMT1NFUEFSRU4pIHx8IG1hdGNoKENMT1NFQlJBQ0Up
IHx8IG1hdGNoKENMT1NFQlJBQ0tFVCkgfHwgbWF0Y2goRU9GVE9LKSB8fCBtX2xleGVyLT5wcmV2
VGVybWluYXRvcigpOwpAQCAtODA0LDYgKzc5MCw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgQUxX
QVlTX0lOTElORSBib29sIGlzQXJyb3dGdW5jdGlvblBhcmFtdGVycygpCiAgICAgeworI2lmIEVO
QUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCiAgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0
aW9uID0gZmFsc2U7CiAgICAgICAgIAogICAgICAgICBpZiAobWF0Y2goRU9GVE9LKSkKQEAgLTgz
NCw4ICs4MjEsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgcmVzdG9yZVNhdmVQb2ludChzYXZlQXJy
b3dGdW5jdGlvblBvaW50KTsKICAgICAgICAgCiAgICAgICAgIHJldHVybiBpc0Fycm93RnVuY3Rp
b247Ci0gICAgfQorI2Vsc2UKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCisgICAgfQog
ICAgIAogICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgdG9rZW5TdGFydCgpCiAgICAgewpAQCAt
OTQ2LDcgKzkzNSw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBtYXRjaChMRVQpICYmICFz
dHJpY3RNb2RlKCk7CiAgICAgfQogCi0gICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlU291cmNlRWxlbWVudHMgcGFyc2VTb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYsIFNvdXJj
ZUVsZW1lbnRzTW9kZSwgRnVuY3Rpb25QYXJzZVR5cGUpOworICAgIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIHBhcnNlU291cmNlRWxlbWVudHMoVHJlZUJ1
aWxkZXImLCBTb3VyY2VFbGVtZW50c01vZGUpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZVN0YXRlbWVudExpc3RJdGVtKFRyZWVCdWlsZGVyJiwg
Y29uc3QgSWRlbnRpZmllciomIGRpcmVjdGl2ZSwgdW5zaWduZWQqIGRpcmVjdGl2ZUxpdGVyYWxM
ZW5ndGgpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBw
YXJzZVN0YXRlbWVudChUcmVlQnVpbGRlciYsIGNvbnN0IElkZW50aWZpZXIqJiBkaXJlY3RpdmUs
IHVuc2lnbmVkKiBkaXJlY3RpdmVMaXRlcmFsTGVuZ3RoID0gMCk7CiAjaWYgRU5BQkxFKEVTNl9D
TEFTU19TWU5UQVgpCkBAIC05ODcsMTcgKzk3NiwxMyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVByb3BlcnR5IHBhcnNlUHJvcGVydHkoVHJlZUJ1aWxk
ZXImLCBib29sIHN0cmljdCk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
RXhwcmVzc2lvbiBwYXJzZVByb3BlcnR5TWV0aG9kKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBjb25z
dCBJZGVudGlmaWVyKiBtZXRob2ROYW1lKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVQcm9wZXJ0eSBwYXJzZUdldHRlclNldHRlcihUcmVlQnVpbGRlciYsIGJvb2wgc3Ry
aWN0LCBQcm9wZXJ0eU5vZGU6OlR5cGUsIHVuc2lnbmVkIGdldHRlck9yU2V0dGVyU3RhcnRPZmZz
ZXQsIENvbnN0cnVjdG9yS2luZCA9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5n
ID0gU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQpOwotICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gQUxXQVlTX0lOTElORSBUcmVlRnVuY3Rpb25Cb2R5IHBhcnNlRnVuY3Rpb25Cb2R5KFRy
ZWVCdWlsZGVyJiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3Rh
cnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIENvbnN0cnVjdG9yS2luZCwgRnVuY3Rpb25QYXJzZVR5
cGUpOwotICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBUcmVl
Rm9ybWFsUGFyYW1ldGVyTGlzdCBwYXJzZUZvcm1hbFBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImKTsK
KyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgVHJlZUZ1bmN0
aW9uQm9keSBwYXJzZUZ1bmN0aW9uQm9keShUcmVlQnVpbGRlciYsIGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIGludCwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3Rh
cnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIENvbnN0cnVjdG9yS2luZCwgRnVuY3Rpb25Cb2R5VHlw
ZSwgdW5zaWduZWQsIEZ1bmN0aW9uUGFyc2VNb2RlKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgYm9vbCBwYXJzZUZvcm1hbFBhcmFtZXRlcnMoVHJlZUJ1
aWxkZXImLCBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCwgdW5zaWduZWQmKTsKICAgICBlbnVtIFZh
ckRlY2xhcmF0aW9uTGlzdENvbnRleHQgeyBGb3JMb29wQ29udGV4dCwgVmFyRGVjbGFyYXRpb25D
b250ZXh0IH07CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lv
biBwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KFRyZWVCdWlsZGVyJiwgaW50JiBkZWNsYXJh
dGlvbnMsIFRyZWVEZXN0cnVjdHVyaW5nUGF0dGVybiYgbGFzdFBhdHRlcm4sIFRyZWVFeHByZXNz
aW9uJiBsYXN0SW5pdGlhbGl6ZXIsIEpTVGV4dFBvc2l0aW9uJiBpZGVudFN0YXJ0LCBKU1RleHRQ
b3NpdGlvbiYgaW5pdFN0YXJ0LCBKU1RleHRQb3NpdGlvbiYgaW5pdEVuZCwgVmFyRGVjbGFyYXRp
b25MaXN0Q29udGV4dCwgRGVjbGFyYXRpb25UeXBlKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBUcmVlQ29uc3REZWNsTGlzdCBwYXJzZUNvbnN0RGVjbGFy
YXRpb25MaXN0KFRyZWVCdWlsZGVyJik7Ci0KLSNpZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJT05f
U1lOVEFYKQotICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBw
YXJzZUFycm93RnVuY3Rpb25TaW5nbGVFeHByZXNzaW9uQm9keShUcmVlQnVpbGRlciYsIEZ1bmN0
aW9uUGFyc2VUeXBlKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3Vy
Y2VFbGVtZW50cyBwYXJzZUFycm93RnVuY3Rpb25TaW5nbGVFeHByZXNzaW9uQm9keVNvdXJjZUVs
ZW1lbnRzKFRyZWVCdWlsZGVyJik7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlRXhwcmVzc2lvbiBwYXJzZUFycm93RnVuY3Rpb25FeHByZXNzaW9uKFRyZWVCdWlsZGVyJik7
Ci0jZW5kaWYKLQogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5F
IFRyZWVEZXN0cnVjdHVyaW5nUGF0dGVybiBjcmVhdGVCaW5kaW5nUGF0dGVybihUcmVlQnVpbGRl
ciYsIERlc3RydWN0dXJpbmdLaW5kLCBjb25zdCBJZGVudGlmaWVyJiwgaW50IGRlcHRoLCBKU1Rv
a2VuLCBBc3NpZ25tZW50Q29udGV4dCk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBORVZFUl9JTkxJTkUgVHJlZURlc3RydWN0dXJpbmdQYXR0ZXJuIHBhcnNlRGVzdHJ1Y3R1cmlu
Z1BhdHRlcm4oVHJlZUJ1aWxkZXImLCBEZXN0cnVjdHVyaW5nS2luZCwgQXNzaWdubWVudENvbnRl
eHQgPSBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQsIGludCBkZXB0aCA9
IDApOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIFRyZWVE
ZXN0cnVjdHVyaW5nUGF0dGVybiB0cnlQYXJzZURlc3RydWN0dXJpbmdQYXR0ZXJuRXhwcmVzc2lv
bihUcmVlQnVpbGRlciYsIEFzc2lnbm1lbnRDb250ZXh0KTsKQEAgLTEwMzAsMTMgKzEwMTUsMTAg
QEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIGFsbG93QXV0b21hdGljU2VtaWNvbG9uKCk7CiAg
ICAgfQogICAgIAotCi0jaWYgRU5BQkxFKEVTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCkKICAgICB2
b2lkIHNldEVuZE9mU3RhdGVtZW50KCkKICAgICB7CiAgICAgICAgIG1fbGV4ZXItPnNldFRva2Vu
UG9zaXRpb24oJm1fdG9rZW4pOwogICAgIH0KLSNlbmRpZgogCiAgICAgYm9vbCBjYW5SZWN1cnNl
KCkKICAgICB7CkBAIC0xMTA4LDYgKzEwOTAsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IFNvdXJj
ZUNvZGUqIG1fc291cmNlOwogICAgIFBhcnNlckFyZW5hIG1fcGFyc2VyQXJlbmE7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPExleGVyVHlwZT4gbV9sZXhlcjsKKyAgICBGdW5jdGlvblBhcmFtZXRlcnMq
IG1fcGFyYW1ldGVycyB7IG51bGxwdHIgfTsKICAgICAKICAgICBib29sIG1faGFzU3RhY2tPdmVy
ZmxvdzsKICAgICBTdHJpbmcgbV9lcnJvck1lc3NhZ2U7CkBAIC0xMTUzLDEzICsxMTM2LDEzIEBA
IHByaXZhdGU6CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xh
c3MgUGFyc2VkTm9kZT4KLXN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2UoUGFyc2VyRXJyb3ImIGVycm9yKQorc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5v
ZGU+IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZShQYXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0IElk
ZW50aWZpZXImIGNhbGxlZU5hbWUsIEZ1bmN0aW9uUGFyc2VNb2RlIHBhcnNlTW9kZSkKIHsKICAg
ICBpbnQgZXJyTGluZTsKICAgICBTdHJpbmcgZXJyTXNnOwogCiAgICAgaWYgKFBhcnNlZE5vZGU6
OnNjb3BlSXNGdW5jdGlvbikKLSAgICAgICAgbV9sZXhlci0+c2V0SXNSZXBhcnNpbmcoKTsKKyAg
ICAgICAgbV9sZXhlci0+c2V0SXNSZXBhcnNpbmdGdW5jdGlvbigpOwogCiAgICAgbV9zb3VyY2VF
bGVtZW50cyA9IDA7CiAKQEAgLTExNzAsNyArMTE1Myw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJz
ZWROb2RlPiBQYXJzZXI8TGV4ZXIKICAgICBBU1NFUlQobV9zb3VyY2UtPnN0YXJ0Q29sdW1uKCkg
PiAwKTsKICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiA9IG1fc291cmNlLT5zdGFydENvbHVtbigp
IC0gMTsKIAotICAgIFN0cmluZyBwYXJzZUVycm9yID0gcGFyc2VJbm5lcigpOworICAgIFN0cmlu
ZyBwYXJzZUVycm9yID0gcGFyc2VJbm5lcihjYWxsZWVOYW1lLCBwYXJzZU1vZGUpOwogCiAgICAg
aW50IGxpbmVOdW1iZXIgPSBtX2xleGVyLT5saW5lTnVtYmVyKCk7CiAgICAgYm9vbCBsZXhFcnJv
ciA9IG1fbGV4ZXItPnNhd0Vycm9yKCk7CkBAIC0xMjAwLDYgKzExODMsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX3ZhckRlY2xhcmF0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fZnVuY0RlY2xhcmF0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGN1cnJlbnRTY29wZSgpLT5maW5hbGl6ZUxleGljYWxFbnZpcm9ubWVudCgpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJhbWV0ZXJzLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm1fc291cmNlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbV9mZWF0dXJlcywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fbnVtQ29uc3RhbnRzKTsKQEAgLTEyMzMsMTggKzEyMTcsMTkgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxMZXhlcgogCiB0ZW1wbGF0ZSA8Y2xhc3Mg
UGFyc2VkTm9kZT4KIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZSgKLSAgICBWTSog
dm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0
ZXJzLAorICAgIFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLAogICAgIGNvbnN0IElk
ZW50aWZpZXImIG5hbWUsIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUsCiAgICAgSlNQ
YXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIEpTUGFyc2VyQ29kZVR5cGUgY29kZVR5cGUsCi0g
ICAgUGFyc2VyRXJyb3ImIGVycm9yLCBKU1RleHRQb3NpdGlvbiogcG9zaXRpb25CZWZvcmVMYXN0
TmV3bGluZSA9IDAsCi0gICAgQ29uc3RydWN0b3JLaW5kIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQg
PSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlID0gVGhpc1RE
Wk1vZGU6OkNoZWNrSWZOZWVkZWQpCisgICAgUGFyc2VyRXJyb3ImIGVycm9yLCBKU1RleHRQb3Np
dGlvbiogcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9IG51bGxwdHIsCisgICAgRnVuY3Rpb25Q
YXJzZU1vZGUgcGFyc2VNb2RlID0gTm90QUZ1bmN0aW9uTW9kZSwgQ29uc3RydWN0b3JLaW5kIGRl
ZmF1bHRDb25zdHJ1Y3RvcktpbmQgPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIAorICAgIFRoaXNU
RFpNb2RlIHRoaXNURFpNb2RlID0gVGhpc1REWk1vZGU6OkNoZWNrSWZOZWVkZWQpCiB7CiAgICAg
U2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIlBhcnNpbmciKTsKIAogICAgIEFTU0VSVCgh
c291cmNlLnByb3ZpZGVyKCktPnNvdXJjZSgpLmlzTnVsbCgpKTsKICAgICBpZiAoc291cmNlLnBy
b3ZpZGVyKCktPnNvdXJjZSgpLmlzOEJpdCgpKSB7Ci0gICAgICAgIFBhcnNlcjxMZXhlcjxMQ2hh
cj4+IHBhcnNlcih2bSwgc291cmNlLCBwYXJhbWV0ZXJzLCBuYW1lLCBidWlsdGluTW9kZSwgc3Ry
aWN0TW9kZSwgY29kZVR5cGUsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIHRoaXNURFpNb2RlKTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHJlc3VsdCA9IHBhcnNlci5wYXJz
ZTxQYXJzZWROb2RlPihlcnJvcik7CisgICAgICAgIFBhcnNlcjxMZXhlcjxMQ2hhcj4+IHBhcnNl
cih2bSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgY29kZVR5cGUsIGRlZmF1bHRD
b25zdHJ1Y3RvcktpbmQsIHRoaXNURFpNb2RlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBh
cnNlZE5vZGU+IHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJvciwgbmFtZSwg
cGFyc2VNb2RlKTsKICAgICAgICAgaWYgKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpCiAgICAg
ICAgICAgICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9IHBhcnNlci5wb3NpdGlvbkJlZm9y
ZUxhc3ROZXdsaW5lKCk7CiAgICAgICAgIGlmIChidWlsdGluTW9kZSA9PSBKU1BhcnNlckJ1aWx0
aW5Nb2RlOjpCdWlsdGluKSB7CkBAIC0xMjU2LDggKzEyNDEsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8
UGFyc2VkTm9kZT4gcGFyc2UoCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UoZGVmYXVsdENvbnN0cnVjdG9yS2luZCA9PSBDb25zdHJ1Y3Rvcktp
bmQ6Ok5vbmUsICJCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZURlZmF1bHRDb25zdHJ1Y3RvciBz
aG91bGQgYWx3YXlzIHVzZSBhIDgtYml0IHN0cmluZyIpOwotICAgIFBhcnNlcjxMZXhlcjxVQ2hh
cj4+IHBhcnNlcih2bSwgc291cmNlLCBwYXJhbWV0ZXJzLCBuYW1lLCBidWlsdGluTW9kZSwgc3Ry
aWN0TW9kZSwgY29kZVR5cGUsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIHRoaXNURFpNb2RlKTsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBh
cnNlZE5vZGU+KGVycm9yKTsKKyAgICBQYXJzZXI8TGV4ZXI8VUNoYXI+PiBwYXJzZXIodm0sIHNv
dXJjZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIGNvZGVUeXBlLCBkZWZhdWx0Q29uc3RydWN0
b3JLaW5kLCB0aGlzVERaTW9kZSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHJl
c3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJvciwgbmFtZSwgcGFyc2VNb2RlKTsK
ICAgICBpZiAocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSkKICAgICAgICAgKnBvc2l0aW9uQmVm
b3JlTGFzdE5ld2xpbmUgPSBwYXJzZXIucG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpOwogICAg
IHJldHVybiByZXN1bHQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ckZ1bmN0aW9uSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyRnVuY3Rpb25JbmZvLmgJKHJldmlzaW9uIDE4NjkxMykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyRnVuY3Rpb25JbmZvLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI4LDI3ICsyOCwxNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotI2lmIEVOQUJMRShFUzZfQVJS
T1dGVU5DVElPTl9TWU5UQVgpCi1lbnVtIEZ1bmN0aW9uQm9keVR5cGUgeyBBcnJvd0Z1bmN0aW9u
Qm9keUV4cHJlc3Npb24sIEFycm93RnVuY3Rpb25Cb2R5QmxvY2ssIFN0YW5kYXJkRnVuY3Rpb25C
b2R5QmxvY2sgfTsKLSNlbmRpZgotCiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+CiBzdHJ1
Y3QgUGFyc2VyRnVuY3Rpb25JbmZvIHsKICAgICBjb25zdCBJZGVudGlmaWVyKiBuYW1lID0gMDsK
ICAgICB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBwYXJhbWV0ZXJz
ID0gMDsKICAgICB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6RnVuY3Rpb25Cb2R5IGJvZHkgPSAwOwot
ICAgIHVuc2lnbmVkIHN0YXJ0RnVuY3Rpb25PZmZzZXQgPSAwOwotICAgIHVuc2lnbmVkIGVuZEZ1
bmN0aW9uT2Zmc2V0ID0gMDsKLSAgICBpbnQgYm9keVN0YXJ0TGluZSA9IDA7Ci0gICAgaW50IGJv
ZHlFbmRMaW5lID0gMDsKKyAgICB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCA9IDA7CisgICAgdW5z
aWduZWQgc3RhcnRPZmZzZXQgPSAwOworICAgIHVuc2lnbmVkIGVuZE9mZnNldCA9IDA7CisgICAg
aW50IHN0YXJ0TGluZSA9IDA7CisgICAgaW50IGVuZExpbmUgPSAwOwogICAgIHVuc2lnbmVkIGJv
ZHlTdGFydENvbHVtbiA9IDA7Ci0jaWYgRU5BQkxFKEVTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCkK
LSAgICB1bnNpZ25lZCBhcnJvd0Z1bmN0aW9uT2Zmc2V0ID0gMDsKLSAgICB1bnNpZ25lZCBhcnJv
d0Z1bmN0aW9uTmV4dFRvY2tlbkVuZE9mZnNldCA9IDA7Ci0gICAgYm9vbCBpc0Fycm93RnVuY3Rp
b24geyBmYWxzZSB9OwotICAgIGJvb2wgaXNFbmRCeVRlcm1pbmF0b3IgeyBmYWxzZSB9OwotICAg
IEZ1bmN0aW9uQm9keVR5cGUgZnVuY3Rpb25Cb2R5VHlwZSB7IFN0YW5kYXJkRnVuY3Rpb25Cb2R5
QmxvY2sgfTsKLSNlbmRpZgogfTsKIAogI2lmIEVOQUJMRShFUzZfQ0xBU1NfU1lOVEFYKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAkocmV2aXNpb24g
MTg2OTEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCwxNSBAQCBlbnVtIERlYnVnZ2VyTW9kZSB7IERlYnVn
Z2VyT2ZmLCBEZWJ1Z2dlCiAKIGVudW0gRnVuY3Rpb25Nb2RlIHsgRnVuY3Rpb25FeHByZXNzaW9u
LCBGdW5jdGlvbkRlY2xhcmF0aW9uIH07CiAKK2VudW0gRnVuY3Rpb25QYXJzZU1vZGUgeworICAg
IE5vcm1hbEZ1bmN0aW9uTW9kZSwKKyAgICBHZXR0ZXJNb2RlLAorICAgIFNldHRlck1vZGUsCisg
ICAgTWV0aG9kTW9kZSwKKyAgICBOb3RBRnVuY3Rpb25Nb2RlLAorICAgIEFycm93RnVuY3Rpb25N
b2RlCit9OworCiBpbmxpbmUgYm9vbCBmdW5jdGlvbk5hbWVJc0luU2NvcGUoY29uc3QgSWRlbnRp
ZmllciYgbmFtZSwgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSkKIHsKICAgICBpZiAobmFtZS5p
c051bGwoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZS5o
CShyZXZpc2lvbiAxODY5MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJj
ZUNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDkgKzEwNSw2IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAKICAgICAgICAgU291cmNlQ29kZSBzdWJFeHByZXNzaW9uKHVuc2lnbmVkIG9w
ZW5CcmFjZSwgdW5zaWduZWQgY2xvc2VCcmFjZSwgaW50IGZpcnN0TGluZSwgaW50IHN0YXJ0Q29s
dW1uKTsKIAotI2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCi0gICAgICAgIFNv
dXJjZUNvZGUgc3ViQXJyb3dFeHByZXNzaW9uKHVuc2lnbmVkIHN0YXJ0QXJyb3dGdW5jdGlvbiwg
dW5zaWduZWQgZW5kQXJyb3dGdW5jdGlvbiwgaW50IGZpcnN0TGluZSwgaW50IHN0YXJ0Q29sdW1u
KTsKLSNlbmRpZgogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4g
bV9wcm92aWRlcjsKICAgICAgICAgaW50IG1fc3RhcnRDaGFyOwpAQCAtMTIxLDIwICsxMTgsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIFNvdXJjZUNvZGUoU3RyaW5nU291cmNl
UHJvdmlkZXI6OmNyZWF0ZShzb3VyY2UsIHVybCwgc3RhcnRQb3NpdGlvbiksIHN0YXJ0UG9zaXRp
b24ubV9saW5lLm9uZUJhc2VkSW50KCksIHN0YXJ0UG9zaXRpb24ubV9jb2x1bW4ub25lQmFzZWRJ
bnQoKSk7CiAgICAgfQogICAgIAotI2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgp
Ci0gICAgaW5saW5lIFNvdXJjZUNvZGUgU291cmNlQ29kZTo6c3ViQXJyb3dFeHByZXNzaW9uKHVu
c2lnbmVkIHN0YXJ0QXJyb3dGdW5jdGlvbiwgdW5zaWduZWQgZW5kQXJyb3dGdW5jdGlvbiwgaW50
IGZpcnN0TGluZSwgaW50IHN0YXJ0Q29sdW1uKQotICAgIHsKLSAgICAgICAgQVNTRVJUKHByb3Zp
ZGVyKCktPnNvdXJjZSgpW3N0YXJ0QXJyb3dGdW5jdGlvbl0gPT0gJz0nICYmIHByb3ZpZGVyKCkt
PnNvdXJjZSgpW3N0YXJ0QXJyb3dGdW5jdGlvbiArIDFdID09ICc+Jyk7Ci0KLSAgICAgICAgc3Rh
cnRDb2x1bW4gKz0gMTsgLy8gQ29udmVydCB0byBiYXNlIDEuCi0gICAgICAgIHJldHVybiBTb3Vy
Y2VDb2RlKHByb3ZpZGVyKCksIHN0YXJ0QXJyb3dGdW5jdGlvbiwgZW5kQXJyb3dGdW5jdGlvbiwg
Zmlyc3RMaW5lLCBzdGFydENvbHVtbik7Ci0gICAgfQotI2VuZGlmCi0KICAgICBpbmxpbmUgU291
cmNlQ29kZSBTb3VyY2VDb2RlOjpzdWJFeHByZXNzaW9uKHVuc2lnbmVkIG9wZW5CcmFjZSwgdW5z
aWduZWQgY2xvc2VCcmFjZSwgaW50IGZpcnN0TGluZSwgaW50IHN0YXJ0Q29sdW1uKQogICAgIHsK
LSAgICAgICAgQVNTRVJUKHByb3ZpZGVyKCktPnNvdXJjZSgpW29wZW5CcmFjZV0gPT0gJ3snKTsK
LSAgICAgICAgQVNTRVJUKHByb3ZpZGVyKCktPnNvdXJjZSgpW2Nsb3NlQnJhY2VdID09ICd9Jyk7
CiAgICAgICAgIHN0YXJ0Q29sdW1uICs9IDE7IC8vIENvbnZlcnQgdG8gYmFzZSAxLgogICAgICAg
ICByZXR1cm4gU291cmNlQ29kZShwcm92aWRlcigpLCBvcGVuQnJhY2UsIGNsb3NlQnJhY2UgKyAx
LCBmaXJzdExpbmUsIHN0YXJ0Q29sdW1uKTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyQ2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyQ2FjaGUuaAkocmV2aXNpb24gMTg2
OTEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlckNhY2hl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIGNvbnN0IFNv
dXJjZVByb3ZpZGVyQ2FjaGVJdGVtKiBnZXQoaW50IHNvdXJjZVBvc2l0aW9uKSBjb25zdCB7IHJl
dHVybiBtX21hcC5nZXQoc291cmNlUG9zaXRpb24pOyB9CiAKIHByaXZhdGU6Ci0gICAgSGFzaE1h
cDxpbnQsIHN0ZDo6dW5pcXVlX3B0cjxTb3VyY2VQcm92aWRlckNhY2hlSXRlbT4+IG1fbWFwOwor
ICAgIEhhc2hNYXA8aW50LCBzdGQ6OnVuaXF1ZV9wdHI8U291cmNlUHJvdmlkZXJDYWNoZUl0ZW0+
LCBXVEY6OkludEhhc2g8aW50PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxp
bnQ+PiBtX21hcDsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
U291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmgJKHJldmlzaW9uIDE4NjkxMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0u
aAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTUgKzQwLDE0IEBAIHN0cnVjdCBTb3VyY2VQcm92aWRl
ckNhY2hlSXRlbUNyZWF0aW9uUGEKICAgICB1bnNpZ25lZCBsYXN0VG9ja2VuRW5kT2Zmc2V0Owog
ICAgIHVuc2lnbmVkIGxhc3RUb2NrZW5MaW5lU3RhcnRPZmZzZXQ7CiAgICAgdW5zaWduZWQgZW5k
RnVuY3Rpb25PZmZzZXQ7CisgICAgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQ7CiAgICAgYm9vbCBu
ZWVkc0Z1bGxBY3RpdmF0aW9uOwogICAgIGJvb2wgdXNlc0V2YWw7CiAgICAgYm9vbCBzdHJpY3RN
b2RlOwogICAgIFZlY3RvcjxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiB1c2VkVmFyaWFibGVz
OwogICAgIFZlY3RvcjxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiB3cml0dGVuVmFyaWFibGVz
OwotI2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCiAgICAgYm9vbCBpc0JvZHlB
cnJvd0V4cHJlc3Npb24geyBmYWxzZSB9OwogICAgIEpTVG9rZW5UeXBlIHRva2VuVHlwZSB7IENM
T1NFQlJBQ0UgfTsKLSNlbmRpZgogfTsKIAogI2lmIENPTVBJTEVSKE1TVkMpCkBAIC02NSwxMSAr
NjQsNyBAQCBwdWJsaWM6CiAgICAgSlNUb2tlbiBlbmRGdW5jdGlvblRva2VuKCkgY29uc3QgCiAg
ICAgewogICAgICAgICBKU1Rva2VuIHRva2VuOwotI2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElP
Tl9TWU5UQVgpCiAgICAgICAgIHRva2VuLm1fdHlwZSA9IGlzQm9keUFycm93RXhwcmVzc2lvbiA/
IHRva2VuVHlwZSA6IENMT1NFQlJBQ0U7Ci0jZWxzZQotICAgICAgICB0b2tlbi5tX3R5cGUgPSBD
TE9TRUJSQUNFOwotI2VuZGlmCiAgICAgICAgIHRva2VuLm1fZGF0YS5vZmZzZXQgPSBsYXN0VG9j
a2VuU3RhcnRPZmZzZXQ7CiAgICAgICAgIHRva2VuLm1fbG9jYXRpb24uc3RhcnRPZmZzZXQgPSBs
YXN0VG9ja2VuU3RhcnRPZmZzZXQ7CiAgICAgICAgIHRva2VuLm1fbG9jYXRpb24uZW5kT2Zmc2V0
ID0gbGFzdFRvY2tlbkVuZE9mZnNldDsKQEAgLTg3LDYgKzgyLDcgQEAgcHVibGljOgogICAgIHVu
c2lnbmVkIGxhc3RUb2NrZW5MaW5lIDogMzE7CiAgICAgdW5zaWduZWQgbGFzdFRvY2tlblN0YXJ0
T2Zmc2V0IDogMzE7CiAgICAgdW5zaWduZWQgbGFzdFRvY2tlbkVuZE9mZnNldDogMzE7CisgICAg
dW5zaWduZWQgcGFyYW1ldGVyQ291bnQ7CiAgICAgCiAgICAgYm9vbCB1c2VzRXZhbCA6IDE7CiAK
QEAgLTk4LDEwICs5NCw4IEBAIHB1YmxpYzoKIAogICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiogdXNl
ZFZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8VW5pcXVlZFN0cmluZ0ltcGwq
Kj4obV92YXJpYWJsZXMpOyB9CiAgICAgVW5pcXVlZFN0cmluZ0ltcGwqKiB3cml0dGVuVmFyaWFi
bGVzKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxVbmlxdWVkU3RyaW5nSW1wbCoqPigmbV92
YXJpYWJsZXNbdXNlZFZhcmlhYmxlc0NvdW50XSk7IH0KLSNpZiBFTkFCTEUoRVM2X0FSUk9XRlVO
Q1RJT05fU1lOVEFYKQogICAgIGJvb2wgaXNCb2R5QXJyb3dFeHByZXNzaW9uOwogICAgIEpTVG9r
ZW5UeXBlIHRva2VuVHlwZTsKLSNlbmRpZgogCiBwcml2YXRlOgogICAgIFNvdXJjZVByb3ZpZGVy
Q2FjaGVJdGVtKGNvbnN0IFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtQ3JlYXRpb25QYXJhbWV0ZXJz
Jik7CkBAIC0xMzAsMTUgKzEyNCwxNCBAQCBpbmxpbmUgU291cmNlUHJvdmlkZXJDYWNoZUl0ZW06
OlNvdXJjZVByCiAgICAgLCBsYXN0VG9ja2VuTGluZShwYXJhbWV0ZXJzLmxhc3RUb2NrZW5MaW5l
KQogICAgICwgbGFzdFRvY2tlblN0YXJ0T2Zmc2V0KHBhcmFtZXRlcnMubGFzdFRvY2tlblN0YXJ0
T2Zmc2V0KQogICAgICwgbGFzdFRvY2tlbkVuZE9mZnNldChwYXJhbWV0ZXJzLmxhc3RUb2NrZW5F
bmRPZmZzZXQpCisgICAgLCBwYXJhbWV0ZXJDb3VudChwYXJhbWV0ZXJzLnBhcmFtZXRlckNvdW50
KQogICAgICwgdXNlc0V2YWwocGFyYW1ldGVycy51c2VzRXZhbCkKICAgICAsIHN0cmljdE1vZGUo
cGFyYW1ldGVycy5zdHJpY3RNb2RlKQogICAgICwgbGFzdFRvY2tlbkxpbmVTdGFydE9mZnNldChw
YXJhbWV0ZXJzLmxhc3RUb2NrZW5MaW5lU3RhcnRPZmZzZXQpCiAgICAgLCB1c2VkVmFyaWFibGVz
Q291bnQocGFyYW1ldGVycy51c2VkVmFyaWFibGVzLnNpemUoKSkKICAgICAsIHdyaXR0ZW5WYXJp
YWJsZXNDb3VudChwYXJhbWV0ZXJzLndyaXR0ZW5WYXJpYWJsZXMuc2l6ZSgpKQotI2lmIEVOQUJM
RShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCiAgICAgLCBpc0JvZHlBcnJvd0V4cHJlc3Npb24o
cGFyYW1ldGVycy5pc0JvZHlBcnJvd0V4cHJlc3Npb24pCiAgICAgLCB0b2tlblR5cGUocGFyYW1l
dGVycy50b2tlblR5cGUpCi0jZW5kaWYKIHsKICAgICB1bnNpZ25lZCBqID0gMDsKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgdXNlZFZhcmlhYmxlc0NvdW50OyArK2ksICsraikgewpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgJKHJldmlz
aW9uIDE4NjkxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw2IEBAIHB1YmxpYzoKICAgICB7CiAgICAg
fQogCi0gICAgdHlwZWRlZiBTeW50YXhDaGVja2VyIEZ1bmN0aW9uQm9keUJ1aWxkZXI7CiAgICAg
ZW51bSB7IE5vbmVFeHByID0gMCwKICAgICAgICAgUmVzb2x2ZUV2YWxFeHByLCBSZXNvbHZlRXhw
ciwgSW50ZWdlckV4cHIsIERvdWJsZUV4cHIsIFN0cmluZ0V4cHIsCiAgICAgICAgIFRoaXNFeHBy
LCBOdWxsRXhwciwgQm9vbEV4cHIsIFJlZ0V4cEV4cHIsIE9iamVjdExpdGVyYWxFeHByLApAQCAt
MTc5LDEwICsxNzgsOCBAQCBwdWJsaWM6CiAgICAgQ2xhc3NFeHByZXNzaW9uIGNyZWF0ZUNsYXNz
RXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lv
blR5cGUsIEV4cHJlc3Npb25UeXBlLCBQcm9wZXJ0eUxpc3QsIFByb3BlcnR5TGlzdCkgeyByZXR1
cm4gQ2xhc3NFeHByOyB9CiAjZW5kaWYKICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVGdW5jdGlv
bkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPFN5
bnRheENoZWNrZXI+JikgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9Ci0gICAgaW50IGNyZWF0ZUZ1
bmN0aW9uQm9keShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQsIGludCwgQ29uc3RydWN0b3JLaW5kKSB7IHJldHVy
biBGdW5jdGlvbkJvZHlSZXN1bHQ7IH0KLSNpZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lO
VEFYKQorICAgIGludCBjcmVhdGVGdW5jdGlvbkJvZHkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGJvb2wsIGludCwgaW50LCBpbnQsIENv
bnN0cnVjdG9yS2luZCwgdW5zaWduZWQsIGludCkgeyByZXR1cm4gRnVuY3Rpb25Cb2R5UmVzdWx0
OyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQXJyb3dGdW5jdGlvbkV4cHIoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPFN5bnRheENoZWNrZXI+Jikg
eyByZXR1cm4gRnVuY3Rpb25FeHByOyB9Ci0jZW5kaWYgCiAgICAgdm9pZCBzZXRGdW5jdGlvbk5h
bWVTdGFydChpbnQsIGludCkgeyB9CiAgICAgaW50IGNyZWF0ZUFyZ3VtZW50cygpIHsgcmV0dXJu
IEFyZ3VtZW50c1Jlc3VsdDsgfQogICAgIGludCBjcmVhdGVBcmd1bWVudHMoaW50KSB7IHJldHVy
biBBcmd1bWVudHNSZXN1bHQ7IH0KQEAgLTIyMSw4ICsyMTgsOCBAQCBwdWJsaWM6CiAgICAgaW50
IGNyZWF0ZVByb3BlcnR5TGlzdChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBQcm9wZXJ0eSwgaW50
KSB7IHJldHVybiBQcm9wZXJ0eUxpc3RSZXN1bHQ7IH0KICAgICBpbnQgY3JlYXRlRWxlbWVudExp
c3QoaW50LCBpbnQpIHsgcmV0dXJuIEVsZW1lbnRzTGlzdFJlc3VsdDsgfQogICAgIGludCBjcmVh
dGVFbGVtZW50TGlzdChpbnQsIGludCwgaW50KSB7IHJldHVybiBFbGVtZW50c0xpc3RSZXN1bHQ7
IH0KLSAgICBpbnQgY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdChEZXN0cnVjdHVyaW5nUGF0dGVy
bikgeyByZXR1cm4gRm9ybWFsUGFyYW1ldGVyTGlzdFJlc3VsdDsgfQotICAgIGludCBjcmVhdGVG
b3JtYWxQYXJhbWV0ZXJMaXN0KGludCwgRGVzdHJ1Y3R1cmluZ1BhdHRlcm4pIHsgcmV0dXJuIEZv
cm1hbFBhcmFtZXRlckxpc3RSZXN1bHQ7IH0KKyAgICBpbnQgY3JlYXRlRm9ybWFsUGFyYW1ldGVy
TGlzdCgpIHsgcmV0dXJuIEZvcm1hbFBhcmFtZXRlckxpc3RSZXN1bHQ7IH0KKyAgICB2b2lkIGFw
cGVuZFBhcmFtZXRlcihpbnQsIERlc3RydWN0dXJpbmdQYXR0ZXJuKSB7IH0KICAgICBpbnQgY3Jl
YXRlQ2xhdXNlKGludCwgaW50KSB7IHJldHVybiBDbGF1c2VSZXN1bHQ7IH0KICAgICBpbnQgY3Jl
YXRlQ2xhdXNlTGlzdChpbnQpIHsgcmV0dXJuIENsYXVzZUxpc3RSZXN1bHQ7IH0KICAgICBpbnQg
Y3JlYXRlQ2xhdXNlTGlzdChpbnQsIGludCkgeyByZXR1cm4gQ2xhdXNlTGlzdFJlc3VsdDsgfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCShyZXZp
c2lvbiAxODY5MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NCw4ICs5NCw4IEBAIFVubGlua2VkQ29kZUJsb2NrVHlw
ZSogQ29kZUNhY2hlOjpnZXRHbG8KIAogICAgIHR5cGVkZWYgdHlwZW5hbWUgQ2FjaGVUeXBlczxV
bmxpbmtlZENvZGVCbG9ja1R5cGU+OjpSb290Tm9kZSBSb290Tm9kZTsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8Um9vdE5vZGU+IHJvb3ROb2RlID0gcGFyc2U8Um9vdE5vZGU+KAotICAgICAgICAmdm0s
IHNvdXJjZSwgMCwgSWRlbnRpZmllcigpLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgCi0gICAg
ICAgIEpTUGFyc2VyQ29kZVR5cGU6OlByb2dyYW0sIGVycm9yLCAwLCBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUsIHRoaXNURFpNb2RlKTsKKyAgICAgICAgJnZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwg
YnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIAorICAgICAgICBKU1BhcnNlckNvZGVUeXBlOjpQcm9n
cmFtLCBlcnJvciwgbnVsbHB0ciwgRnVuY3Rpb25QYXJzZU1vZGU6Ok5vdEFGdW5jdGlvbk1vZGUs
IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgdGhpc1REWk1vZGUpOwogICAgIGlmICghcm9vdE5vZGUp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0xNDUsNyArMTQ1LDcgQEAgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUqIENvZGVDYWNoZTo6ZwogCiAgICAgSlNUZXh0UG9zaXRpb24gcG9z
aXRpb25CZWZvcmVMYXN0TmV3bGluZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvZ3JhbU5vZGU+
IHByb2dyYW0gPSBwYXJzZTxQcm9ncmFtTm9kZT4oCi0gICAgICAgICZ2bSwgc291cmNlLCAwLCBJ
ZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIAorICAgICAgICAm
dm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGlu
LCAKICAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIEpTUGFyc2VyQ29kZVR5
cGU6OlByb2dyYW0sIAogICAgICAgICBlcnJvciwgJnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUp
OwogICAgIGlmICghcHJvZ3JhbSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tcGxldGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tcGxldGlvbi5jcHAJKHJldmlzaW9uIDE4NjkxMykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1
Nyw3IEBAIGJvb2wgY2hlY2tTeW50YXgoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2QKICAgICBKU0xv
Y2tIb2xkZXIgbG9jayh2bSk7CiAgICAgUkVMRUFTRV9BU1NFUlQodm0uYXRvbWljU3RyaW5nVGFi
bGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CiAgICAgcmV0dXJu
ICEhcGFyc2U8UHJvZ3JhbU5vZGU+KAotICAgICAgICAmdm0sIHNvdXJjZSwgMCwgSWRlbnRpZmll
cigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCAKKyAgICAgICAgJnZtLCBzb3Vy
Y2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgCiAgICAg
ICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBKU1BhcnNlckNvZGVUeXBlOjpQcm9n
cmFtLCBlcnJvcik7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAxODY5MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDc1LDcgKzQ3NSw3
IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6Y2hlY2tTeW50YXgKICAgICBWTSogdm0g
PSAmZXhlYy0+dm0oKTsKICAgICBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCA9
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvZ3Jh
bU5vZGU+IHByb2dyYW1Ob2RlID0gcGFyc2U8UHJvZ3JhbU5vZGU+KAotICAgICAgICB2bSwgbV9z
b3VyY2UsIDAsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwg
CisgICAgICAgIHZtLCBtX3NvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2Rl
OjpOb3RCdWlsdGluLCAKICAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIEpT
UGFyc2VyQ29kZVR5cGU6OlByb2dyYW0sIGVycm9yKTsKICAgICBpZiAocHJvZ3JhbU5vZGUpCiAg
ICAgICAgIHJldHVybiAwOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2NvbnRy
b2xGbG93UHJvZmlsZXIvY29uZGl0aW9uYWwtZXhwcmVzc2lvbi5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvY29udHJvbEZsb3dQcm9maWxlci9jb25kaXRpb25h
bC1leHByZXNzaW9uLmpzCShyZXZpc2lvbiAxODY5MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvY29udHJvbEZsb3dQcm9maWxlci9jb25kaXRpb25hbC1leHByZXNzaW9uLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0yNCwxNyArMjQsMTcgQEAgZnVuY3Rpb24gdGVzdENvbmRpdGlvbmFs
RnVuY3Rpb25DYWxsKHgsIAogICAgICAgICA6IGJhcigpCiB9CiB0ZXN0Q29uZGl0aW9uYWxGdW5j
dGlvbkNhbGwoZmFsc2UsIGZhbHNlKTsKLWNoZWNrQmFzaWNCbG9jayh0ZXN0Q29uZGl0aW9uYWxG
dW5jdGlvbkNhbGwsICJ4IiwgU2hvdWxkSGF2ZUV4ZWN1dGVkKTsKK2NoZWNrQmFzaWNCbG9jayh0
ZXN0Q29uZGl0aW9uYWxGdW5jdGlvbkNhbGwsICJ4ID8iLCBTaG91bGRIYXZlRXhlY3V0ZWQpOwog
Y2hlY2tCYXNpY0Jsb2NrKHRlc3RDb25kaXRpb25hbEZ1bmN0aW9uQ2FsbCwgIj8geSIsIFNob3Vs
ZEhhdmVFeGVjdXRlZCk7CiBjaGVja0Jhc2ljQmxvY2sodGVzdENvbmRpdGlvbmFsRnVuY3Rpb25D
YWxsLCAiYmFyIiwgU2hvdWxkSGF2ZUV4ZWN1dGVkKTsKIGNoZWNrQmFzaWNCbG9jayh0ZXN0Q29u
ZGl0aW9uYWxGdW5jdGlvbkNhbGwsICI6IGJhciIsIFNob3VsZEhhdmVFeGVjdXRlZCk7Ci1jaGVj
a0Jhc2ljQmxvY2sodGVzdENvbmRpdGlvbmFsRnVuY3Rpb25DYWxsLCAieSIsIFNob3VsZE5vdEhh
dmVFeGVjdXRlZCk7CitjaGVja0Jhc2ljQmxvY2sodGVzdENvbmRpdGlvbmFsRnVuY3Rpb25DYWxs
LCAieSA/IiwgU2hvdWxkTm90SGF2ZUV4ZWN1dGVkKTsKIGNoZWNrQmFzaWNCbG9jayh0ZXN0Q29u
ZGl0aW9uYWxGdW5jdGlvbkNhbGwsICI/IGZvbyIsIFNob3VsZE5vdEhhdmVFeGVjdXRlZCk7CiBj
aGVja0Jhc2ljQmxvY2sodGVzdENvbmRpdGlvbmFsRnVuY3Rpb25DYWxsLCAiZm9vIiwgU2hvdWxk
Tm90SGF2ZUV4ZWN1dGVkKTsKIGNoZWNrQmFzaWNCbG9jayh0ZXN0Q29uZGl0aW9uYWxGdW5jdGlv
bkNhbGwsICJiYXoiLCBTaG91bGROb3RIYXZlRXhlY3V0ZWQpOwogCiB0ZXN0Q29uZGl0aW9uYWxG
dW5jdGlvbkNhbGwodHJ1ZSwgZmFsc2UpOwotY2hlY2tCYXNpY0Jsb2NrKHRlc3RDb25kaXRpb25h
bEZ1bmN0aW9uQ2FsbCwgInkiLCBTaG91bGRIYXZlRXhlY3V0ZWQpOworY2hlY2tCYXNpY0Jsb2Nr
KHRlc3RDb25kaXRpb25hbEZ1bmN0aW9uQ2FsbCwgInkgPyIsIFNob3VsZEhhdmVFeGVjdXRlZCk7
CiBjaGVja0Jhc2ljQmxvY2sodGVzdENvbmRpdGlvbmFsRnVuY3Rpb25DYWxsLCAiPyBmb28iLCBT
aG91bGRIYXZlRXhlY3V0ZWQpOwogY2hlY2tCYXNpY0Jsb2NrKHRlc3RDb25kaXRpb25hbEZ1bmN0
aW9uQ2FsbCwgIjogYmF6IiwgU2hvdWxkSGF2ZUV4ZWN1dGVkKTsKIGNoZWNrQmFzaWNCbG9jayh0
ZXN0Q29uZGl0aW9uYWxGdW5jdGlvbkNhbGwsICJiYXoiLCBTaG91bGRIYXZlRXhlY3V0ZWQpOwpJ
bmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0No
YW5nZUxvZwkocmV2aXNpb24gMTg2OTE4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNTEgQEAKKzIwMTUtMDctMTYgIFNhYW0gYmFyYXRpICA8c2Fh
bWJhcmF0aTFAZ21haWwuY29tPgorCisgICAgICAgIEZ1bmN0aW9uIHBhcmFtZXRlcnMgc2hvdWxk
IGJlIHBhcnNlZCBpbiB0aGUgc2FtZSBwYXJzZXIgYXJlbmEgYXMgdGhlIGZ1bmN0aW9uIGJvZHkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NTk5NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9w
cm9maWxlci9hbm9ueW1vdXMtZXZlbnQtaGFuZGxlci1leHBlY3RlZC50eHQ6CisgICAgICAgICog
ZmFzdC9wcm9maWxlci9hbm9ueW1vdXMtZnVuY3Rpb24tY2FsbGVkLWZyb20tZGlmZmVyZW50LWNv
bnRleHRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2ZpbGVyL2Fub255bW91cy1m
dW5jdGlvbi1jYWxscy1idWlsdC1pbi1mdW5jdGlvbnMtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGZhc3QvcHJvZmlsZXIvYW5vbnltb3VzLWZ1bmN0aW9uLWNhbGxzLWV2YWwtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvYW5vbnltb3VzLWZ1bmN0aW9ucy13aXRoLWRpc3Bs
YXktbmFtZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvYXBwbHktZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvYnVpbHQtaW4tZnVuY3Rpb24tY2Fs
bHMtYW5vbnltb3VzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2ZpbGVyL2J1aWx0
LWluLWZ1bmN0aW9uLWNhbGxzLXVzZXItZGVmaW5lZC1mdW5jdGlvbi1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogZmFzdC9wcm9maWxlci9jYWxsLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0
L3Byb2ZpbGVyL2NhbGxpbmctdGhlLWZ1bmN0aW9uLXRoYXQtc3RhcnRlZC10aGUtcHJvZmlsZXIt
ZnJvbS1hbm90aGVyLXNjb3BlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2ZpbGVy
L2NvbXBhcmUtbXVsdGlwbGUtcHJvZmlsZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3Qv
cHJvZmlsZXIvY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmls
ZXIvZGVhZC10aW1lLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2ZpbGVyL2RvY3Vt
ZW50LWRvdC13cml0ZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxlci9ldmVu
dC1oYW5kbGVyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2ZpbGVyL2V4ZWN1dGlv
bi1jb250ZXh0LWFuZC1ldmFsLW9uLXNhbWUtbGluZS1leHBlY3RlZC50eHQ6CisgICAgICAgICog
ZmFzdC9wcm9maWxlci9pbmxpbmUtZXZlbnQtaGFuZGxlci1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogZmFzdC9wcm9maWxlci9tYW55LWNhbGxzLWluLXRoZS1zYW1lLXNjb3BlLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBmYXN0L3Byb2ZpbGVyL211bHRpcGxlLWFuZC1kaWZmZXJlbnQtc2NvcGVk
LWFub255bW91cy1mdW5jdGlvbi1jYWxscy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9w
cm9maWxlci9tdWx0aXBsZS1hbmQtZGlmZmVyZW50LXNjb3BlZC1mdW5jdGlvbi1jYWxscy1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxlci9tdWx0aXBsZS1hbm9ueW1vdXMtZnVu
Y3Rpb25zLWNhbGxlZC1mcm9tLXRoZS1zYW1lLWZ1bmN0aW9uLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBmYXN0L3Byb2ZpbGVyL211bHRpcGxlLWZyYW1lcy1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogZmFzdC9wcm9maWxlci9uYW1lZC1mdW5jdGlvbnMtd2l0aC1kaXNwbGF5LW5hbWVzLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2ZpbGVyL25lc3RlZC1hbm9ueW1vdXMtZnVuY3Rv
bi1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxlci9uZXN0ZWQtc3RhcnQtYW5k
LXN0b3AtcHJvZmlsZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvb25l
LWV4ZWN1dGlvbi1jb250ZXh0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2ZpbGVy
L3Byb2ZpbGUtY2FsbHMtaW4taW5jbHVkZWQtZmlsZS1leHBlY3RlZC50eHQ6CisgICAgICAgICog
ZmFzdC9wcm9maWxlci9wcm9maWxlLXdpdGgtbm8tdGl0bGUtZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIGZhc3QvcHJvZmlsZXIvcHJvZmlsaW5nLWZyb20tYS1uZXN0ZWQtbG9jYXRpb24tYnV0LXN0
b3AtcHJvZmlsaW5nLW91dHNpZGUtdGhlLW5lc3RpbmctZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGZhc3QvcHJvZmlsZXIvcHJvZmlsaW5nLWZyb20tYS1uZXN0ZWQtbG9jYXRpb24tZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvc2ltcGxlLWV2ZW50LWNhbGwtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvc2ltcGxlLW5vLWxldmVsLWNoYW5nZS1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxlci9zdGFydC1hbmQtc3RvcC1wcm9maWxl
ci1tdWx0aXBsZS10aW1lcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxlci9z
dGFydC1hbmQtc3RvcC1wcm9maWxpbmctaW4tdGhlLXNhbWUtZnVuY3Rpb24tZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvc3RvcC1wcm9maWxpbmctYWZ0ZXItc2V0VGltZW91
dC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxlci9zdG9wLXRoZW4tZnVuY3Rp
b24tY2FsbC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxlci90d28tZXhlY3V0
aW9uLWNvbnRleHRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2ZpbGVyL3VzZXIt
ZGVmaW5lZC1mdW5jdGlvbi1jYWxscy1idWlsdC1pbi1mdW5jdGlvbnMtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIGZhc3QvcHJvZmlsZXIvd2luZG93LWRvdC1ldmFsLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBqcy9kb20vc2NyaXB0LXN0YXJ0LWVuZC1sb2NhdGlvbnMtZXhwZWN0ZWQudHh0Ogor
CiAyMDE1LTA3LTE2ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAg
ICAgICAgIEZpeCBkaXNhcHBlYXJpbmcgcG9zaXRpb246Zml4ZWQgZWxlbWVudHMgaW4gZml4ZWQg
bGF5b3V0IG1vZGUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvYW5vbnltb3VzLWV2
ZW50LWhhbmRsZXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
cHJvZmlsZXIvYW5vbnltb3VzLWV2ZW50LWhhbmRsZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAx
ODY5MTMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2Fub255bW91cy1ldmVudC1oYW5k
bGVyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCwxNSArNCwxNSBAQCBUbyBydW4g
dGhpcyB0ZXN0IG1hbnVhbGx5LCBsb2FkIGl0IGluIHRoCiAKIFByb2ZpbGUgdGl0bGU6IEFub255
bW91cyBldmVudCBoYW5kbGVyCiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgc3Rh
cnRUZXN0IGFub255bW91cy1ldmVudC1oYW5kbGVyLmh0bWwgKGxpbmUgMTE6MSkKKyAgIHN0YXJ0
VGVzdCBhbm9ueW1vdXMtZXZlbnQtaGFuZGxlci5odG1sIChsaW5lIDEwOjE5KQogICAgICAgZ2V0
RWxlbWVudEJ5SWQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgIGNsaWNrIChubyBmaWxlKSAo
bGluZSAwOjApCi0gICAgICAgICBvbmNsaWNrIGFub255bW91cy1ldmVudC1oYW5kbGVyLmh0bWwg
KGxpbmUgMTU6NTQpCi0gICAgICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMt
cmVzb3VyY2VzLmpzIChsaW5lIDE3OjI2KQorICAgICAgICAgb25jbGljayBhbm9ueW1vdXMtZXZl
bnQtaGFuZGxlci5odG1sIChsaW5lIDE1OjUxKQorICAgICAgICAgICAgaW5zZXJ0TmV3VGV4dCBw
cm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyMykKICAgICAgICAgICAgICAg
IGNyZWF0ZUVsZW1lbnQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgIGNyZWF0
ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICBhcHBlbmRDaGls
ZCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgZ2V0RWxlbWVudEJ5SWQgKG5v
IGZpbGUpIChsaW5lIDA6MCkKLSAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJj
ZXMuanMgKGxpbmUgMToyMCkKKyAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJj
ZXMuanMgKGxpbmUgMToxNykKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2Fu
b255bW91cy1mdW5jdGlvbi1jYWxsZWQtZnJvbS1kaWZmZXJlbnQtY29udGV4dHMtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvYW5vbnltb3VzLWZ1
bmN0aW9uLWNhbGxlZC1mcm9tLWRpZmZlcmVudC1jb250ZXh0cy1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDE4NjkxMykKKysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvYW5vbnltb3VzLWZ1bmN0
aW9uLWNhbGxlZC1mcm9tLWRpZmZlcmVudC1jb250ZXh0cy1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTQsMjEgKzQsMjEgQEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgbG9hZCBp
dCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiBTYW1lIGFub255bW91cyBmdW5jdGlvbiBjYWxsZWQg
ZnJvbSBkaWZmZXJlbnQgY29udGV4dHMKIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0g
ICBzdGFydFRlc3QgYW5vbnltb3VzLWZ1bmN0aW9uLWNhbGxlZC1mcm9tLWRpZmZlcmVudC1jb250
ZXh0cy5odG1sIChsaW5lIDExOjEpCi0gICAgICBhbm9ueW1vdXNGdW5jdGlvbiBwcm9maWxlci10
ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAyOTozNykKLSAgICAgICAgIGluc2VydE5ld1RleHQg
cHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjYpCisgICBzdGFydFRlc3Qg
YW5vbnltb3VzLWZ1bmN0aW9uLWNhbGxlZC1mcm9tLWRpZmZlcmVudC1jb250ZXh0cy5odG1sIChs
aW5lIDEwOjE5KQorICAgICAgYW5vbnltb3VzRnVuY3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNv
dXJjZXMuanMgKGxpbmUgMjk6MzQpCisgICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRl
c3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjIzKQogICAgICAgICAgICAgY3JlYXRlRWxlbWVu
dCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZp
bGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAw
OjApCiAgICAgICAgICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAg
ICAgZXZhbCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgKHByb2dyYW0pIChubyBmaWxl
KSAobGluZSAxOjEpCi0gICAgICAgICAgICBhbm9ueW1vdXNGdW5jdGlvbiBwcm9maWxlci10ZXN0
LUpTLXJlc291cmNlcy5qcyAobGluZSAyOTozNykKLSAgICAgICAgICAgICAgIGluc2VydE5ld1Rl
eHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjYpCisgICAgICAgICAg
ICBhbm9ueW1vdXNGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAy
OTozNCkKKyAgICAgICAgICAgICAgIGluc2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNv
dXJjZXMuanMgKGxpbmUgMTc6MjMpCiAgICAgICAgICAgICAgICAgICBjcmVhdGVFbGVtZW50IChu
byBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICAgICBjcmVhdGVUZXh0Tm9kZSAobm8g
ZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgICAgYXBwZW5kQ2hpbGQgKG5vIGZpbGUp
IChsaW5lIDA6MCkKICAgICAgICAgICAgICAgICAgIGdldEVsZW1lbnRCeUlkIChubyBmaWxlKSAo
bGluZSAwOjApCi0gICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChs
aW5lIDE6MjApCisgICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChs
aW5lIDE6MTcpCiAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9hbm9ueW1vdXMt
ZnVuY3Rpb24tY2FsbHMtYnVpbHQtaW4tZnVuY3Rpb25zLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2Fub255bW91cy1mdW5jdGlvbi1jYWxscy1i
dWlsdC1pbi1mdW5jdGlvbnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY5MTMpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2Fub255bW91cy1mdW5jdGlvbi1jYWxscy1idWlsdC1pbi1m
dW5jdGlvbnMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDEzICs0LDEzIEBAIFRv
IHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxvYWQgaXQgaW4gdGgKIAogUHJvZmlsZSB0aXRsZTog
QW5vbnltb3VzIGZ1bmN0aW9uIGNhbGxzIGJ1aWx0LWluIGZ1bmN0aW9ucwogVGhyZWFkXzEgKG5v
IGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCBhbm9ueW1vdXMtZnVuY3Rpb24tY2FsbHMt
YnVpbHQtaW4tZnVuY3Rpb25zLmh0bWwgKGxpbmUgMTE6MSkKLSAgICAgIGFub255bW91c0Z1bmN0
aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI5OjM3KQotICAgICAgICAg
aW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyNikK
KyAgIHN0YXJ0VGVzdCBhbm9ueW1vdXMtZnVuY3Rpb24tY2FsbHMtYnVpbHQtaW4tZnVuY3Rpb25z
Lmh0bWwgKGxpbmUgMTA6MTkpCisgICAgICBhbm9ueW1vdXNGdW5jdGlvbiBwcm9maWxlci10ZXN0
LUpTLXJlc291cmNlcy5qcyAobGluZSAyOTozNCkKKyAgICAgICAgIGluc2VydE5ld1RleHQgcHJv
ZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjMpCiAgICAgICAgICAgICBjcmVh
dGVFbGVtZW50IChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICBjcmVhdGVUZXh0Tm9k
ZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgYXBwZW5kQ2hpbGQgKG5vIGZpbGUp
IChsaW5lIDA6MCkKICAgICAgICAgICAgIGdldEVsZW1lbnRCeUlkIChubyBmaWxlKSAobGluZSAw
OjApCi0gICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6
MjApCisgICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6
MTcpCiAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9hbm9ueW1vdXMtZnVuY3Rp
b24tY2FsbHMtZXZhbC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9wcm9maWxlci9hbm9ueW1vdXMtZnVuY3Rpb24tY2FsbHMtZXZhbC1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDE4NjkxMykKKysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvYW5vbnltb3VzLWZ1
bmN0aW9uLWNhbGxzLWV2YWwtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDE1ICs0
LDE1IEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxvYWQgaXQgaW4gdGgKIAogUHJvZmls
ZSB0aXRsZTogQW5vbnltb3VzIGZ1bmN0aW9uIGNhbGxlcyBldmFsCiBUaHJlYWRfMSAobm8gZmls
ZSkgKGxpbmUgMDowKQotICAgc3RhcnRUZXN0IGFub255bW91cy1mdW5jdGlvbi1jYWxscy1ldmFs
Lmh0bWwgKGxpbmUgMTE6MSkKLSAgICAgIHZhcmlhYmxlVGhhdFBvaW50c1RvQW5Bbm9ueW1vdXNG
dW5jdGlvbiBhbm9ueW1vdXMtZnVuY3Rpb24tY2FsbHMtZXZhbC5odG1sIChsaW5lIDE0OjYyKQor
ICAgc3RhcnRUZXN0IGFub255bW91cy1mdW5jdGlvbi1jYWxscy1ldmFsLmh0bWwgKGxpbmUgMTA6
MTkpCisgICAgICB2YXJpYWJsZVRoYXRQb2ludHNUb0FuQW5vbnltb3VzRnVuY3Rpb24gYW5vbnlt
b3VzLWZ1bmN0aW9uLWNhbGxzLWV2YWwuaHRtbCAobGluZSAxNDo1OSkKICAgICAgICAgIGV2YWwg
KG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIChwcm9ncmFtKSAobm8gZmlsZSkgKGxp
bmUgMToxKQotICAgICAgICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJl
c291cmNlcy5qcyAobGluZSAxNzoyNikKKyAgICAgICAgICAgICAgIGluc2VydE5ld1RleHQgcHJv
ZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjMpCiAgICAgICAgICAgICAgICAg
ICBjcmVhdGVFbGVtZW50IChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICAgICBj
cmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgICAgYXBw
ZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgICAgIGdldEVsZW1l
bnRCeUlkIChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3Qt
SlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MjApCisgICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3Qt
SlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MTcpCiAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9w
cm9maWxlci9hbm9ueW1vdXMtZnVuY3Rpb25zLXdpdGgtZGlzcGxheS1uYW1lcy1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9hbm9ueW1vdXMtZnVu
Y3Rpb25zLXdpdGgtZGlzcGxheS1uYW1lcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4NjkxMykK
KysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvYW5vbnltb3VzLWZ1bmN0aW9ucy13aXRoLWRp
c3BsYXktbmFtZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDEzICs0LDEzIEBA
IFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxvYWQgaXQgaW4gdGgKIAogUHJvZmlsZSB0aXRs
ZTogQW5vbnltb3VzIGZ1bmN0aW9ucyB3aXRoIGRpc3BsYXkgbmFtZXMKIFRocmVhZF8xIChubyBm
aWxlKSAobGluZSAwOjApCi0gICBzdGFydFRlc3QgYW5vbnltb3VzLWZ1bmN0aW9ucy13aXRoLWRp
c3BsYXktbmFtZXMuaHRtbCAobGluZSAyMzoxKQotICAgICAgYW5vbnltb3VzRnVuY3Rpb25HZW5l
cmF0b3IgYW5vbnltb3VzLWZ1bmN0aW9ucy13aXRoLWRpc3BsYXktbmFtZXMuaHRtbCAobGluZSAx
MToxKQotICAgICAgMCBpdGVyYXRpb25zIGZ1bmN0aW9uIGFub255bW91cy1mdW5jdGlvbnMtd2l0
aC1kaXNwbGF5LW5hbWVzLmh0bWwgKGxpbmUgMTM6NSkKLSAgICAgIDEgaXRlcmF0aW9ucyBmdW5j
dGlvbiBhbm9ueW1vdXMtZnVuY3Rpb25zLXdpdGgtZGlzcGxheS1uYW1lcy5odG1sIChsaW5lIDEz
OjUpCi0gICAgICAyIGl0ZXJhdGlvbnMgZnVuY3Rpb24gYW5vbnltb3VzLWZ1bmN0aW9ucy13aXRo
LWRpc3BsYXktbmFtZXMuaHRtbCAobGluZSAxMzo1KQotICAgICAgMjAgaXRlcmF0aW9ucyBmdW5j
dGlvbiBhbm9ueW1vdXMtZnVuY3Rpb25zLXdpdGgtZGlzcGxheS1uYW1lcy5odG1sIChsaW5lIDEz
OjUpCi0gICAgICAxMDAwIGl0ZXJhdGlvbnMgZnVuY3Rpb24gYW5vbnltb3VzLWZ1bmN0aW9ucy13
aXRoLWRpc3BsYXktbmFtZXMuaHRtbCAobGluZSAxMzo1KQotICAgICAgZW5kVGVzdCBwcm9maWxl
ci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgc3RhcnRUZXN0IGFub255bW91
cy1mdW5jdGlvbnMtd2l0aC1kaXNwbGF5LW5hbWVzLmh0bWwgKGxpbmUgMjI6MTkpCisgICAgICBh
bm9ueW1vdXNGdW5jdGlvbkdlbmVyYXRvciBhbm9ueW1vdXMtZnVuY3Rpb25zLXdpdGgtZGlzcGxh
eS1uYW1lcy5odG1sIChsaW5lIDEwOjM2KQorICAgICAgMCBpdGVyYXRpb25zIGZ1bmN0aW9uIGFu
b255bW91cy1mdW5jdGlvbnMtd2l0aC1kaXNwbGF5LW5hbWVzLmh0bWwgKGxpbmUgMTI6NTkpCisg
ICAgICAxIGl0ZXJhdGlvbnMgZnVuY3Rpb24gYW5vbnltb3VzLWZ1bmN0aW9ucy13aXRoLWRpc3Bs
YXktbmFtZXMuaHRtbCAobGluZSAxMjo1OSkKKyAgICAgIDIgaXRlcmF0aW9ucyBmdW5jdGlvbiBh
bm9ueW1vdXMtZnVuY3Rpb25zLXdpdGgtZGlzcGxheS1uYW1lcy5odG1sIChsaW5lIDEyOjU5KQor
ICAgICAgMjAgaXRlcmF0aW9ucyBmdW5jdGlvbiBhbm9ueW1vdXMtZnVuY3Rpb25zLXdpdGgtZGlz
cGxheS1uYW1lcy5odG1sIChsaW5lIDEyOjU5KQorICAgICAgMTAwMCBpdGVyYXRpb25zIGZ1bmN0
aW9uIGFub255bW91cy1mdW5jdGlvbnMtd2l0aC1kaXNwbGF5LW5hbWVzLmh0bWwgKGxpbmUgMTI6
NTkpCisgICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6
MTcpCiAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9hcHBseS1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9hcHBseS1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDE4NjkxMykKKysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvYXBw
bHktZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDkgKzQsOSBAQCBUbyBydW4gdGhp
cyB0ZXN0IG1hbnVhbGx5LCBsb2FkIGl0IGluIHRoCiAKIFByb2ZpbGUgdGl0bGU6IFVzaW5nIHRo
ZSBhcHBseSgpIG1ldGhvZAogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0
VGVzdCBhcHBseS5odG1sIChsaW5lIDExOjEpCi0gICAgICBmYWtlT2JqZWN0IGFwcGx5Lmh0bWwg
KGxpbmUgMTg6MSkKLSAgICAgICAgIGZha2VJbnRlcmlvckZ1bmN0aW9uIGFwcGx5Lmh0bWwgKGxp
bmUgMjQ6MSkKLSAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxp
bmUgMToyMCkKKyAgIHN0YXJ0VGVzdCBhcHBseS5odG1sIChsaW5lIDEwOjE5KQorICAgICAgZmFr
ZU9iamVjdCBhcHBseS5odG1sIChsaW5lIDE3OjIxKQorICAgICAgICAgZmFrZUludGVyaW9yRnVu
Y3Rpb24gYXBwbHkuaHRtbCAobGluZSAyMzozMCkKKyAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVz
dC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToxNykKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L3Byb2ZpbGVyL2J1aWx0LWluLWZ1bmN0aW9uLWNhbGxzLWFub255bW91cy1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9idWlsdC1pbi1mdW5jdGlv
bi1jYWxscy1hbm9ueW1vdXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY5MTMpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2J1aWx0LWluLWZ1bmN0aW9uLWNhbGxzLWFub255bW91cy1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsNyArNCw3IEBAIFRvIHJ1biB0aGlzIHRl
c3QgbWFudWFsbHksIGxvYWQgaXQgaW4gdGgKIAogUHJvZmlsZSB0aXRsZTogQnVpbHQtaW4gZnVu
Y3Rpb24gY2FsbHMgYW4gYW5vbnltb3VzIGZ1bmN0aW9uCiBUaHJlYWRfMSAobm8gZmlsZSkgKGxp
bmUgMDowKQotICAgc3RhcnRUZXN0IGJ1aWx0LWluLWZ1bmN0aW9uLWNhbGxzLWFub255bW91cy5o
dG1sIChsaW5lIDExOjEpCisgICBzdGFydFRlc3QgYnVpbHQtaW4tZnVuY3Rpb24tY2FsbHMtYW5v
bnltb3VzLmh0bWwgKGxpbmUgMTA6MTkpCiAgICAgICBBcnJheSAobm8gZmlsZSkgKGxpbmUgMDow
KQogICAgICAgbWFwIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICBPYmplY3QgKG5vIGZp
bGUpIChsaW5lIDA6MCkKQEAgLTEyLDggKzEyLDggQEAgVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5l
IDA6MCkKICAgICAgICAgICAgIHRvSW50ZWdlciAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAg
ICAgICAgICAgTnVtYmVyIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICAoYW5v
bnltb3VzIGZ1bmN0aW9uKSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgICAgbXlGdW5jdGlv
biBidWlsdC1pbi1mdW5jdGlvbi1jYWxscy1hbm9ueW1vdXMuaHRtbCAobGluZSAxNDo0NSkKLSAg
ICAgICAgICAgIGFycmF5T3BlcmF0b3JGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpTLXJlc291cmNl
cy5qcyAobGluZSAyNTo0NikKLSAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJj
ZXMuanMgKGxpbmUgMToyMCkKKyAgICAgICAgIG15RnVuY3Rpb24gYnVpbHQtaW4tZnVuY3Rpb24t
Y2FsbHMtYW5vbnltb3VzLmh0bWwgKGxpbmUgMTQ6MzApCisgICAgICAgICAgICBhcnJheU9wZXJh
dG9yRnVuY3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMjU6MzEpCisg
ICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MTcpCiAK
IApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9idWlsdC1pbi1mdW5jdGlvbi1jYWxs
cy11c2VyLWRlZmluZWQtZnVuY3Rpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvcHJvZmlsZXIvYnVpbHQtaW4tZnVuY3Rpb24tY2FsbHMtdXNlci1kZWZpbmVk
LWZ1bmN0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2OTEzKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9wcm9maWxlci9idWlsdC1pbi1mdW5jdGlvbi1jYWxscy11c2VyLWRlZmluZWQtZnVuY3Rp
b24tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDcgKzQsNyBAQCBUbyBydW4gdGhp
cyB0ZXN0IG1hbnVhbGx5LCBsb2FkIGl0IGluIHRoCiAKIFByb2ZpbGUgdGl0bGU6IEJ1aWx0LWlu
IGZ1bmN0aW9uIGNhbGxzIGEgdXNlciBkZWZpbmVkIGZ1bmN0aW9uCiBUaHJlYWRfMSAobm8gZmls
ZSkgKGxpbmUgMDowKQotICAgc3RhcnRUZXN0IGJ1aWx0LWluLWZ1bmN0aW9uLWNhbGxzLXVzZXIt
ZGVmaW5lZC1mdW5jdGlvbi5odG1sIChsaW5lIDExOjEpCisgICBzdGFydFRlc3QgYnVpbHQtaW4t
ZnVuY3Rpb24tY2FsbHMtdXNlci1kZWZpbmVkLWZ1bmN0aW9uLmh0bWwgKGxpbmUgMTA6MTkpCiAg
ICAgICBBcnJheSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgbWFwIChubyBmaWxlKSAobGlu
ZSAwOjApCiAgICAgICAgICBPYmplY3QgKG5vIGZpbGUpIChsaW5lIDA6MCkKQEAgLTEyLDcgKzEy
LDcgQEAgVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIHRvSW50ZWdl
ciAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgTnVtYmVyIChubyBmaWxlKSAo
bGluZSAwOjApCiAgICAgICAgICAgICAgICAoYW5vbnltb3VzIGZ1bmN0aW9uKSAobm8gZmlsZSkg
KGxpbmUgMDowKQotICAgICAgICAgYXJyYXlPcGVyYXRvckZ1bmN0aW9uIHByb2ZpbGVyLXRlc3Qt
SlMtcmVzb3VyY2VzLmpzIChsaW5lIDI1OjQ2KQotICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0
LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgICAgICAgYXJyYXlPcGVyYXRvckZ1bmN0
aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI1OjMxKQorICAgICAgZW5k
VGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiAKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvY2FsbC1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9jYWxsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MTg2OTEzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9jYWxsLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtNCw5ICs0LDkgQEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwg
bG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiBVc2luZyB0aGUgY2FsbCgpIG1ldGhvZAog
VGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCBjYWxsLmh0bWwgKGxp
bmUgMTE6MSkKLSAgICAgIGZha2VPYmplY3QgY2FsbC5odG1sIChsaW5lIDIwOjEpCi0gICAgICAg
ICBmYWtlSW50ZXJpb3JGdW5jdGlvbiBjYWxsLmh0bWwgKGxpbmUgMjY6MSkKLSAgICAgIGVuZFRl
c3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAgIHN0YXJ0VGVz
dCBjYWxsLmh0bWwgKGxpbmUgMTA6MTkpCisgICAgICBmYWtlT2JqZWN0IGNhbGwuaHRtbCAobGlu
ZSAxOToyMSkKKyAgICAgICAgIGZha2VJbnRlcmlvckZ1bmN0aW9uIGNhbGwuaHRtbCAobGluZSAy
NTozMCkKKyAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUg
MToxNykKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2NhbGxpbmctdGhlLWZ1
bmN0aW9uLXRoYXQtc3RhcnRlZC10aGUtcHJvZmlsZXItZnJvbS1hbm90aGVyLXNjb3BlLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2NhbGxpbmct
dGhlLWZ1bmN0aW9uLXRoYXQtc3RhcnRlZC10aGUtcHJvZmlsZXItZnJvbS1hbm90aGVyLXNjb3Bl
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2OTEzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9m
aWxlci9jYWxsaW5nLXRoZS1mdW5jdGlvbi10aGF0LXN0YXJ0ZWQtdGhlLXByb2ZpbGVyLWZyb20t
YW5vdGhlci1zY29wZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsOSArNCw5IEBA
IFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxvYWQgaXQgaW4gdGgKIAogUHJvZmlsZSB0aXRs
ZTogQ2FsbGluZyB0aGUgc2FtZSBmdW5jdGlvbiB3aGVyZSB0aGUgcHJvZmlsZSBzdGFydGVkIGZy
b20gYW5vdGhlciBmdW5jdGlvbgogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIGlu
ZGlyZWN0aW9uIGNhbGxpbmctdGhlLWZ1bmN0aW9uLXRoYXQtc3RhcnRlZC10aGUtcHJvZmlsZXIt
ZnJvbS1hbm90aGVyLXNjb3BlLmh0bWwgKGxpbmUgMTg6MSkKLSAgICAgIGZ1bmN0aW9uV2ljaFN0
YXJ0c0FuZFN0b3BzVGhlUHJvZmlsZXIgY2FsbGluZy10aGUtZnVuY3Rpb24tdGhhdC1zdGFydGVk
LXRoZS1wcm9maWxlci1mcm9tLWFub3RoZXItc2NvcGUuaHRtbCAobGluZSAyNDoxKQotICAgZnVu
Y3Rpb25XaWNoU3RhcnRzQW5kU3RvcHNUaGVQcm9maWxlciBjYWxsaW5nLXRoZS1mdW5jdGlvbi10
aGF0LXN0YXJ0ZWQtdGhlLXByb2ZpbGVyLWZyb20tYW5vdGhlci1zY29wZS5odG1sIChsaW5lIDI0
OjEpCi0gICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MjAp
CisgICBpbmRpcmVjdGlvbiBjYWxsaW5nLXRoZS1mdW5jdGlvbi10aGF0LXN0YXJ0ZWQtdGhlLXBy
b2ZpbGVyLWZyb20tYW5vdGhlci1zY29wZS5odG1sIChsaW5lIDE3OjIxKQorICAgICAgZnVuY3Rp
b25XaWNoU3RhcnRzQW5kU3RvcHNUaGVQcm9maWxlciBjYWxsaW5nLXRoZS1mdW5jdGlvbi10aGF0
LXN0YXJ0ZWQtdGhlLXByb2ZpbGVyLWZyb20tYW5vdGhlci1zY29wZS5odG1sIChsaW5lIDIzOjQ3
KQorICAgZnVuY3Rpb25XaWNoU3RhcnRzQW5kU3RvcHNUaGVQcm9maWxlciBjYWxsaW5nLXRoZS1m
dW5jdGlvbi10aGF0LXN0YXJ0ZWQtdGhlLXByb2ZpbGVyLWZyb20tYW5vdGhlci1zY29wZS5odG1s
IChsaW5lIDIzOjQ3KQorICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAo
bGluZSAxOjE3KQogCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvY29tcGFyZS1t
dWx0aXBsZS1wcm9maWxlcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9wcm9maWxlci9jb21wYXJlLW11bHRpcGxlLXByb2ZpbGVzLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMTg2OTEzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9jb21wYXJlLW11bHRp
cGxlLXByb2ZpbGVzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCwxNCArNCwxNCBA
QCBUbyBydW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBsb2FkIGl0IGluIHRoCiAKIFByb2ZpbGUgdGl0
bGU6IFRlc3QKIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBzdGFydFRlc3QgY29t
cGFyZS1tdWx0aXBsZS1wcm9maWxlcy5odG1sIChsaW5lIDIzOjEpCi0gICAgICB0ZXN0IGNvbXBh
cmUtbXVsdGlwbGUtcHJvZmlsZXMuaHRtbCAobGluZSAxMToyMCkKLSAgICAgICAgIHRlc3QyIGNv
bXBhcmUtbXVsdGlwbGUtcHJvZmlsZXMuaHRtbCAobGluZSAxNzoyMSkKKyAgIHN0YXJ0VGVzdCBj
b21wYXJlLW11bHRpcGxlLXByb2ZpbGVzLmh0bWwgKGxpbmUgMjI6MTkpCisgICAgICB0ZXN0IGNv
bXBhcmUtbXVsdGlwbGUtcHJvZmlsZXMuaHRtbCAobGluZSAxMToxNCkKKyAgICAgICAgIHRlc3Qy
IGNvbXBhcmUtbXVsdGlwbGUtcHJvZmlsZXMuaHRtbCAobGluZSAxNzoxNSkKIAogUHJvZmlsZSB0
aXRsZTogVGVzdAogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCBj
b21wYXJlLW11bHRpcGxlLXByb2ZpbGVzLmh0bWwgKGxpbmUgMjM6MSkKLSAgICAgIHRlc3QgY29t
cGFyZS1tdWx0aXBsZS1wcm9maWxlcy5odG1sIChsaW5lIDExOjIwKQotICAgICAgICAgdGVzdDIg
Y29tcGFyZS1tdWx0aXBsZS1wcm9maWxlcy5odG1sIChsaW5lIDE3OjIxKQorICAgc3RhcnRUZXN0
IGNvbXBhcmUtbXVsdGlwbGUtcHJvZmlsZXMuaHRtbCAobGluZSAyMjoxOSkKKyAgICAgIHRlc3Qg
Y29tcGFyZS1tdWx0aXBsZS1wcm9maWxlcy5odG1sIChsaW5lIDExOjE0KQorICAgICAgICAgdGVz
dDIgY29tcGFyZS1tdWx0aXBsZS1wcm9maWxlcy5odG1sIChsaW5lIDE3OjE1KQogCiAKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvY29uc3RydWN0b3ItZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAxODY5MTMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2NvbnN0
cnVjdG9yLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCw5ICs0LDkgQEAgVG8gcnVu
IHRoaXMgdGVzdCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiBVc2lu
ZyBhIGNvbnN0cnVjdG9yLgogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0
VGVzdCBjb25zdHJ1Y3Rvci5odG1sIChsaW5lIDExOjEpCi0gICAgICBmYWtlT2JqZWN0IGNvbnN0
cnVjdG9yLmh0bWwgKGxpbmUgMjA6MSkKKyAgIHN0YXJ0VGVzdCBjb25zdHJ1Y3Rvci5odG1sIChs
aW5lIDEwOjE5KQorICAgICAgZmFrZU9iamVjdCBjb25zdHJ1Y3Rvci5odG1sIChsaW5lIDE5OjIx
KQogICAgICAgICAgQXJyYXkgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAgIGVuZFRlc3QgcHJv
ZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAgICAgIGVuZFRlc3QgcHJv
ZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToxNykKIAogCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L3Byb2ZpbGVyL2RlYWQtdGltZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9kZWFkLXRpbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAxODY5MTMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2RlYWQtdGltZS1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsMTAgKzQsMTAgQEAgVG8gcnVuIHRoaXMgdGVzdCBt
YW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiBEZWFkIHRpbWUgaW4gcHJv
ZmlsZS4KIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBvbmxvYWQgZGVhZC10aW1l
Lmh0bWwgKGxpbmUgMjE6NTIpCi0gICAgICBzdGFydFRlc3QgZGVhZC10aW1lLmh0bWwgKGxpbmUg
MTM6MSkKKyAgIG9ubG9hZCBkZWFkLXRpbWUuaHRtbCAobGluZSAyMTo0NCkKKyAgICAgIHN0YXJ0
VGVzdCBkZWFkLXRpbWUuaHRtbCAobGluZSAxMjoxOSkKICAgICAgICAgIHNldFRpbWVvdXQgKG5v
IGZpbGUpIChsaW5lIDA6MCkKICAgIChwcm9ncmFtKSBkZWFkLXRpbWUuaHRtbCAobGluZSAxOjEp
Ci0gICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MjAp
CisgICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MTcp
CiAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9kb2N1bWVudC1kb3Qtd3JpdGUt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvZG9j
dW1lbnQtZG90LXdyaXRlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2OTEzKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9wcm9maWxlci9kb2N1bWVudC1kb3Qtd3JpdGUtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDggKzEsOCBAQAogCiBQcm9maWxlIHRpdGxlOiBDYWxsIERvY3VtZW50
LndyaXRlKCkKIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBzdGFydFRlc3QgZG9j
dW1lbnQtZG90LXdyaXRlLmh0bWwgKGxpbmUgMTE6MSkKKyAgIHN0YXJ0VGVzdCBkb2N1bWVudC1k
b3Qtd3JpdGUuaHRtbCAobGluZSAxMDoxOSkKICAgICAgIHdyaXRlIChubyBmaWxlKSAobGluZSAw
OjApCi0gICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6
MjApCisgICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6
MTcpCiAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9ldmVudC1oYW5kbGVyLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2V2ZW50
LWhhbmRsZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY5MTMpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L3Byb2ZpbGVyL2V2ZW50LWhhbmRsZXItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC00LDE1ICs0LDE1IEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxvYWQgaXQgaW4gdGgK
IAogUHJvZmlsZSB0aXRsZTogRXZlbnQgaGFuZGxlcgogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5l
IDA6MCkKLSAgIHN0YXJ0VGVzdCBldmVudC1oYW5kbGVyLmh0bWwgKGxpbmUgMTE6MSkKKyAgIHN0
YXJ0VGVzdCBldmVudC1oYW5kbGVyLmh0bWwgKGxpbmUgMTA6MTkpCiAgICAgICBnZXRFbGVtZW50
QnlJZCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgYWRkRXZlbnRMaXN0ZW5lciAobm8gZmls
ZSkgKGxpbmUgMDowKQogICAgICAgY2xpY2sgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAgICAg
IGluc2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjYp
CisgICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChs
aW5lIDE3OjIzKQogICAgICAgICAgICAgY3JlYXRlRWxlbWVudCAobm8gZmlsZSkgKGxpbmUgMDow
KQogICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAg
ICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICBnZXRF
bGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgZW5kVGVzdCBwcm9maWxlci10
ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgICAgZW5kVGVzdCBwcm9maWxlci10
ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiAKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvcHJvZmlsZXIvZXhlY3V0aW9uLWNvbnRleHQtYW5kLWV2YWwtb24tc2FtZS1saW5lLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2V4ZWN1dGlv
bi1jb250ZXh0LWFuZC1ldmFsLW9uLXNhbWUtbGluZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4
NjkxMykKKysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvZXhlY3V0aW9uLWNvbnRleHQtYW5k
LWV2YWwtb24tc2FtZS1saW5lLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCwxMyAr
NCwxMyBAQCBUbyBydW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBsb2FkIGl0IGluIHRoCiAKIFByb2Zp
bGUgdGl0bGU6IFR3byBFeGVjdXRpb24gQ29udGV4dHMgb24gdGhlIHNhbWUgbGluZQogVGhyZWFk
XzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCBleGVjdXRpb24tY29udGV4dC1h
bmQtZXZhbC1vbi1zYW1lLWxpbmUuaHRtbCAobGluZSAxMToxKQotICAgICAgZXZhbEZ1bmN0aW9u
IChubyBmaWxlKSAobGluZSAxOjI1KQotICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10
ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyNikKKyAgIHN0YXJ0VGVzdCBleGVjdXRpb24t
Y29udGV4dC1hbmQtZXZhbC1vbi1zYW1lLWxpbmUuaHRtbCAobGluZSAxMDoxOSkKKyAgICAgIGV2
YWxGdW5jdGlvbiAobm8gZmlsZSkgKGxpbmUgMToyMikKKyAgICAgICAgIGluc2VydE5ld1RleHQg
cHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjMpCiAgICAgICAgICAgICBj
cmVhdGVFbGVtZW50IChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICBjcmVhdGVUZXh0
Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgYXBwZW5kQ2hpbGQgKG5vIGZp
bGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIGdldEVsZW1lbnRCeUlkIChubyBmaWxlKSAobGlu
ZSAwOjApCi0gICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5l
IDE6MjApCisgICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5l
IDE6MTcpCiAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9pbmxpbmUtZXZlbnQt
aGFuZGxlci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9m
aWxlci9pbmxpbmUtZXZlbnQtaGFuZGxlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4NjkxMykK
KysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvaW5saW5lLWV2ZW50LWhhbmRsZXItZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDE3ICs0LDE3IEBAIFRvIHJ1biB0aGlzIHRlc3Qg
bWFudWFsbHksIGxvYWQgaXQgaW4gdGgKIAogUHJvZmlsZSB0aXRsZTogSW5saW5lIGV2ZW50IGhh
bmRsZXIKIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBzdGFydFRlc3QgaW5saW5l
LWV2ZW50LWhhbmRsZXIuaHRtbCAobGluZSAxMToxKQorICAgc3RhcnRUZXN0IGlubGluZS1ldmVu
dC1oYW5kbGVyLmh0bWwgKGxpbmUgMTA6MTkpCiAgICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmls
ZSkgKGxpbmUgMDowKQogICAgICAgY2xpY2sgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAgICAg
IG9uY2xpY2sgaW5saW5lLWV2ZW50LWhhbmRsZXIuaHRtbCAobGluZSAzMToxMzUpCi0gICAgICAg
ICAgICBldmVudExpc3RlbmVyIGlubGluZS1ldmVudC1oYW5kbGVyLmh0bWwgKGxpbmUgMTc6MjYp
Ci0gICAgICAgICAgICAgICBhbm9ueW1vdXNGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpTLXJlc291
cmNlcy5qcyAobGluZSAyOTozNykKLSAgICAgICAgICAgICAgICAgIGluc2VydE5ld1RleHQgcHJv
ZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjYpCisgICAgICAgICBvbmNsaWNr
IGlubGluZS1ldmVudC1oYW5kbGVyLmh0bWwgKGxpbmUgMzE6MTI3KQorICAgICAgICAgICAgZXZl
bnRMaXN0ZW5lciBpbmxpbmUtZXZlbnQtaGFuZGxlci5odG1sIChsaW5lIDE3OjIzKQorICAgICAg
ICAgICAgICAgYW5vbnltb3VzRnVuY3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMg
KGxpbmUgMjk6MzQpCisgICAgICAgICAgICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRl
c3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjIzKQogICAgICAgICAgICAgICAgICAgICAgY3Jl
YXRlRWxlbWVudCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgICAgICAgY3Jl
YXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgICAgICAgIGFw
cGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICAgICAgICBnZXRF
bGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgICAgICAgICAgZW5kVGVzdCBw
cm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgICAgICAgICAgICAg
ZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiAKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvbWFueS1jYWxscy1pbi10aGUtc2FtZS1zY29w
ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9t
YW55LWNhbGxzLWluLXRoZS1zYW1lLXNjb3BlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2OTEz
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9tYW55LWNhbGxzLWluLXRoZS1zYW1lLXNj
b3BlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCwzMyArNCwzMyBAQCBUbyBydW4g
dGhpcyB0ZXN0IG1hbnVhbGx5LCBsb2FkIGl0IGluIHRoCiAKIFByb2ZpbGUgdGl0bGU6IE1hbnkg
Q2FsbHMgSW4gVGhlIFNhbWUgU2NvcGUKIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0g
ICBzdGFydFRlc3QgbWFueS1jYWxscy1pbi10aGUtc2FtZS1zY29wZS5odG1sIChsaW5lIDExOjEp
Ci0gICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5l
IDE3OjI2KQorICAgc3RhcnRUZXN0IG1hbnktY2FsbHMtaW4tdGhlLXNhbWUtc2NvcGUuaHRtbCAo
bGluZSAxMDoxOSkKKyAgICAgIGluc2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJj
ZXMuanMgKGxpbmUgMTc6MjMpCiAgICAgICAgICBjcmVhdGVFbGVtZW50IChubyBmaWxlKSAobGlu
ZSAwOjApCiAgICAgICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAg
ICAgICAgYXBwZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgIGdldEVsZW1l
bnRCeUlkIChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICBpbnNlcnRHaXZlblRleHQgcHJvZmls
ZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgOTozMikKKyAgICAgIGluc2VydEdpdmVuVGV4
dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA5OjI1KQogICAgICAgICAgY3Jl
YXRlRWxlbWVudCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgY3JlYXRlVGV4dE5vZGUg
KG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGlu
ZSAwOjApCiAgICAgICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAg
ICAgYXJyYXlPcGVyYXRvckZ1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChs
aW5lIDI1OjQ2KQotICAgICAgaW50ZXJtZWRpYXJ5RnVuY3Rpb24gcHJvZmlsZXItdGVzdC1KUy1y
ZXNvdXJjZXMuanMgKGxpbmUgMzM6MSkKLSAgICAgICAgIGFub255bW91c0Z1bmN0aW9uIHByb2Zp
bGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI5OjM3KQotICAgICAgICAgICAgaW5zZXJ0
TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyNikKKyAgICAg
IGFycmF5T3BlcmF0b3JGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGlu
ZSAyNTozMSkKKyAgICAgIGludGVybWVkaWFyeUZ1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVz
b3VyY2VzLmpzIChsaW5lIDMyOjMwKQorICAgICAgICAgYW5vbnltb3VzRnVuY3Rpb24gcHJvZmls
ZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMjk6MzQpCisgICAgICAgICAgICBpbnNlcnRO
ZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjIzKQogICAgICAg
ICAgICAgICAgY3JlYXRlRWxlbWVudCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAg
ICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgIGFw
cGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICBnZXRFbGVtZW50
QnlJZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgYW5vbnltb3VzRnVuY3Rpb24gcHJvZmls
ZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMjk6MzcpCi0gICAgICAgICBpbnNlcnROZXdU
ZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjI2KQorICAgICAgYW5v
bnltb3VzRnVuY3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMjk6MzQp
CisgICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChs
aW5lIDE3OjIzKQogICAgICAgICAgICAgY3JlYXRlRWxlbWVudCAobm8gZmlsZSkgKGxpbmUgMDow
KQogICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAg
ICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICBnZXRF
bGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgZW5kIG1hbnktY2FsbHMtaW4t
dGhlLXNhbWUtc2NvcGUuaHRtbCAobGluZSAyNzoxKQotICAgICAgZW5kVCBtYW55LWNhbGxzLWlu
LXRoZS1zYW1lLXNjb3BlLmh0bWwgKGxpbmUgMzI6MSkKLSAgICAgIGVuZFRlc3QgcHJvZmlsZXIt
dGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAgICAgIGVuZCBtYW55LWNhbGxzLWlu
LXRoZS1zYW1lLXNjb3BlLmh0bWwgKGxpbmUgMjY6MTMpCisgICAgICBlbmRUIG1hbnktY2FsbHMt
aW4tdGhlLXNhbWUtc2NvcGUuaHRtbCAobGluZSAzMToxNCkKKyAgICAgIGVuZFRlc3QgcHJvZmls
ZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToxNykKIAogCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L3Byb2ZpbGVyL211bHRpcGxlLWFuZC1kaWZmZXJlbnQtc2NvcGVkLWFub255bW91cy1m
dW5jdGlvbi1jYWxscy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9wcm9maWxlci9tdWx0aXBsZS1hbmQtZGlmZmVyZW50LXNjb3BlZC1hbm9ueW1vdXMtZnVuY3Rp
b24tY2FsbHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY5MTMpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L3Byb2ZpbGVyL211bHRpcGxlLWFuZC1kaWZmZXJlbnQtc2NvcGVkLWFub255bW91cy1mdW5j
dGlvbi1jYWxscy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsMjAgKzQsMjAgQEAg
VG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxl
OiBNdWx0aXBsZSBhbmQgZGlmZmVyZW50IHNjb3BlZCBjYWxscyB0byB0aGUgc2FtZSBhbm9ueW1v
dXMgZnVuY3Rpb24KIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBzdGFydFRlc3Qg
bXVsdGlwbGUtYW5kLWRpZmZlcmVudC1zY29wZWQtYW5vbnltb3VzLWZ1bmN0aW9uLWNhbGxzLmh0
bWwgKGxpbmUgMTE6MSkKLSAgICAgIGFub255bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMt
cmVzb3VyY2VzLmpzIChsaW5lIDI5OjM3KQotICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxl
ci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyNikKKyAgIHN0YXJ0VGVzdCBtdWx0aXBs
ZS1hbmQtZGlmZmVyZW50LXNjb3BlZC1hbm9ueW1vdXMtZnVuY3Rpb24tY2FsbHMuaHRtbCAobGlu
ZSAxMDoxOSkKKyAgICAgIGFub255bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3Vy
Y2VzLmpzIChsaW5lIDI5OjM0KQorICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0
LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyMykKICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQg
KG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxl
KSAobGluZSAwOjApCiAgICAgICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDow
KQogICAgICAgICAgICAgZ2V0RWxlbWVudEJ5SWQgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAg
IGludGVybWVkaWFyeUZ1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5l
IDMzOjEpCi0gICAgICAgICBhbm9ueW1vdXNGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpTLXJlc291
cmNlcy5qcyAobGluZSAyOTozNykKLSAgICAgICAgICAgIGluc2VydE5ld1RleHQgcHJvZmlsZXIt
dGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjYpCisgICAgICBpbnRlcm1lZGlhcnlGdW5j
dGlvbiBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAzMjozMCkKKyAgICAgICAg
IGFub255bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI5
OjM0KQorICAgICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNl
cy5qcyAobGluZSAxNzoyMykKICAgICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQgKG5vIGZpbGUp
IChsaW5lIDA6MCkKICAgICAgICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGlu
ZSAwOjApCiAgICAgICAgICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQog
ICAgICAgICAgICAgICAgZ2V0RWxlbWVudEJ5SWQgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAg
IGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAgICAg
IGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToxNykKIAogCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL211bHRpcGxlLWFuZC1kaWZmZXJlbnQtc2Nv
cGVkLWZ1bmN0aW9uLWNhbGxzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L3Byb2ZpbGVyL211bHRpcGxlLWFuZC1kaWZmZXJlbnQtc2NvcGVkLWZ1bmN0aW9uLWNh
bGxzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2OTEzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9w
cm9maWxlci9tdWx0aXBsZS1hbmQtZGlmZmVyZW50LXNjb3BlZC1mdW5jdGlvbi1jYWxscy1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsMTkgKzQsMTkgQEAgVG8gcnVuIHRoaXMgdGVz
dCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiBNdWx0aXBsZSBhbmQg
ZGlmZmVyZW50IHNjb3BlZCBjYWxscyB0byB0aGUgc2FtZSBmdW5jdGlvbgogVGhyZWFkXzEgKG5v
IGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCBtdWx0aXBsZS1hbmQtZGlmZmVyZW50LXNj
b3BlZC1mdW5jdGlvbi1jYWxscy5odG1sIChsaW5lIDExOjEpCi0gICAgICBpbnNlcnROZXdUZXh0
IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjI2KQorICAgc3RhcnRUZXN0
IG11bHRpcGxlLWFuZC1kaWZmZXJlbnQtc2NvcGVkLWZ1bmN0aW9uLWNhbGxzLmh0bWwgKGxpbmUg
MTA6MTkpCisgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpz
IChsaW5lIDE3OjIzKQogICAgICAgICAgY3JlYXRlRWxlbWVudCAobm8gZmlsZSkgKGxpbmUgMDow
KQogICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAg
IGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICBnZXRFbGVtZW50QnlJ
ZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgaW50ZXJtZWRpYXJ5RnVuY3Rpb24gcHJvZmls
ZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMzM6MSkKLSAgICAgICAgIGFub255bW91c0Z1
bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI5OjM3KQotICAgICAg
ICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAx
NzoyNikKKyAgICAgIGludGVybWVkaWFyeUZ1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3Vy
Y2VzLmpzIChsaW5lIDMyOjMwKQorICAgICAgICAgYW5vbnltb3VzRnVuY3Rpb24gcHJvZmlsZXIt
dGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMjk6MzQpCisgICAgICAgICAgICBpbnNlcnROZXdU
ZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjIzKQogICAgICAgICAg
ICAgICAgY3JlYXRlRWxlbWVudCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAg
Y3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgIGFwcGVu
ZENoaWxkIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICBnZXRFbGVtZW50QnlJ
ZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJl
c291cmNlcy5qcyAobGluZSAxOjIwKQorICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJl
c291cmNlcy5qcyAobGluZSAxOjE3KQogCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcHJvZmls
ZXIvbXVsdGlwbGUtYW5vbnltb3VzLWZ1bmN0aW9ucy1jYWxsZWQtZnJvbS10aGUtc2FtZS1mdW5j
dGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxl
ci9tdWx0aXBsZS1hbm9ueW1vdXMtZnVuY3Rpb25zLWNhbGxlZC1mcm9tLXRoZS1zYW1lLWZ1bmN0
aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2OTEzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9w
cm9maWxlci9tdWx0aXBsZS1hbm9ueW1vdXMtZnVuY3Rpb25zLWNhbGxlZC1mcm9tLXRoZS1zYW1l
LWZ1bmN0aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCwxOSArNCwxOSBAQCBU
byBydW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBsb2FkIGl0IGluIHRoCiAKIFByb2ZpbGUgdGl0bGU6
IE11bHRpcGxlIGNhbGxzIHRvIGRpZmZlcmVudCBhbm9ueW1vdXMgZnVuY3Rpb25zCiBUaHJlYWRf
MSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgc3RhcnRUZXN0IG11bHRpcGxlLWFub255bW91cy1m
dW5jdGlvbnMtY2FsbGVkLWZyb20tdGhlLXNhbWUtZnVuY3Rpb24uaHRtbCAobGluZSAxMToxKQot
ICAgICAgYW5vbnltb3VzRnVuY3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxp
bmUgMjk6MzcpCi0gICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3Vy
Y2VzLmpzIChsaW5lIDE3OjI2KQorICAgc3RhcnRUZXN0IG11bHRpcGxlLWFub255bW91cy1mdW5j
dGlvbnMtY2FsbGVkLWZyb20tdGhlLXNhbWUtZnVuY3Rpb24uaHRtbCAobGluZSAxMDoxOSkKKyAg
ICAgIGFub255bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5l
IDI5OjM0KQorICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNl
cy5qcyAobGluZSAxNzoyMykKICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQgKG5vIGZpbGUpIChs
aW5lIDA6MCkKICAgICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAwOjAp
CiAgICAgICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAg
ICAgZ2V0RWxlbWVudEJ5SWQgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAgIGFub3RoZXJBbm9u
eW1vdXNGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAzMDo0NCkK
LSAgICAgICAgIGluc2VydEdpdmVuVGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAo
bGluZSA5OjMyKQorICAgICAgYW5vdGhlckFub255bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3Qt
SlMtcmVzb3VyY2VzLmpzIChsaW5lIDMwOjQxKQorICAgICAgICAgaW5zZXJ0R2l2ZW5UZXh0IHBy
b2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDk6MjUpCiAgICAgICAgICAgICBjcmVh
dGVFbGVtZW50IChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICBjcmVhdGVUZXh0Tm9k
ZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgYXBwZW5kQ2hpbGQgKG5vIGZpbGUp
IChsaW5lIDA6MCkKICAgICAgICAgICAgIGdldEVsZW1lbnRCeUlkIChubyBmaWxlKSAobGluZSAw
OjApCi0gICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6
MjApCisgICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6
MTcpCiAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9tdWx0aXBsZS1mcmFtZXMt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvbXVs
dGlwbGUtZnJhbWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2OTEzKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9wcm9maWxlci9tdWx0aXBsZS1mcmFtZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC00LDE1ICs0LDE1IEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxvYWQgaXQg
aW4gdGgKIAogUHJvZmlsZSB0aXRsZTogT3RoZXIgd2luZG93IGV4ZWN1dGluZyBKYXZhU2NyaXB0
CiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgc3RhcnRUZXN0IG11bHRpcGxlLWZy
YW1lcy5odG1sIChsaW5lIDExOjEpCisgICBzdGFydFRlc3QgbXVsdGlwbGUtZnJhbWVzLmh0bWwg
KGxpbmUgMTA6MTkpCiAgICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMDowKQot
ICAgICAgZnVuY3Rpb25Jbk90aGVyRnJhbWUgb3RoZXItZnJhbWUuaHRtbCAobGluZSA0OjMzKQot
ICAgICAgICAgZnVuY3Rpb25JblBhcmVudEZyYW1lIG11bHRpcGxlLWZyYW1lcy5odG1sIChsaW5l
IDIxOjM0KQotICAgICAgaW5zZXJ0R2l2ZW5UZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2Vz
LmpzIChsaW5lIDk6MzIpCisgICAgICBmdW5jdGlvbkluT3RoZXJGcmFtZSBvdGhlci1mcmFtZS5o
dG1sIChsaW5lIDQ6MzApCisgICAgICAgICBmdW5jdGlvbkluUGFyZW50RnJhbWUgbXVsdGlwbGUt
ZnJhbWVzLmh0bWwgKGxpbmUgMjE6MzEpCisgICAgICBpbnNlcnRHaXZlblRleHQgcHJvZmlsZXIt
dGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgOToyNSkKICAgICAgICAgIGNyZWF0ZUVsZW1lbnQg
KG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAo
bGluZSAwOjApCiAgICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAg
ICAgICAgZ2V0RWxlbWVudEJ5SWQgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAgIGVuZFRlc3Qg
cHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAgICAgIGVuZFRlc3Qg
cHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToxNykKIAogCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L3Byb2ZpbGVyL25hbWVkLWZ1bmN0aW9ucy13aXRoLWRpc3BsYXktbmFtZXMt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvbmFt
ZWQtZnVuY3Rpb25zLXdpdGgtZGlzcGxheS1uYW1lcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4
NjkxMykKKysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvbmFtZWQtZnVuY3Rpb25zLXdpdGgt
ZGlzcGxheS1uYW1lcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsMTMgKzQsMTMg
QEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRp
dGxlOiBOYW1lZCBmdW5jdGlvbnMgd2l0aCBkaXNwbGF5IG5hbWVzCiBUaHJlYWRfMSAobm8gZmls
ZSkgKGxpbmUgMDowKQotICAgc3RhcnRUZXN0IG5hbWVkLWZ1bmN0aW9ucy13aXRoLWRpc3BsYXkt
bmFtZXMuaHRtbCAobGluZSA1NDoxKQotICAgICAgMCBpdGVyYXRpb25zIGZ1bmN0aW9uIG5hbWVk
LWZ1bmN0aW9ucy13aXRoLWRpc3BsYXktbmFtZXMuaHRtbCAobGluZSAxMToxKQotICAgICAgMSBp
dGVyYXRpb24gZnVuY3Rpb24gbmFtZWQtZnVuY3Rpb25zLXdpdGgtZGlzcGxheS1uYW1lcy5odG1s
IChsaW5lIDE4OjEpCi0gICAgICAyIGl0ZXJhdGlvbnMgZnVuY3Rpb24gbmFtZWQtZnVuY3Rpb25z
LXdpdGgtZGlzcGxheS1uYW1lcy5odG1sIChsaW5lIDI1OjEpCi0gICAgICAyMCBpdGVyYXRpb25z
IGZ1bmN0aW9uIG5hbWVkLWZ1bmN0aW9ucy13aXRoLWRpc3BsYXktbmFtZXMuaHRtbCAobGluZSAz
MjoxKQotICAgICAgMTAwMCBpdGVyYXRpb25zIGZ1bmN0aW9uIG5hbWVkLWZ1bmN0aW9ucy13aXRo
LWRpc3BsYXktbmFtZXMuaHRtbCAobGluZSAzOToxKQotICAgICAgYm9ndXNEaXNwbGF5TmFtZUZ1
bmN0aW9uIG5hbWVkLWZ1bmN0aW9ucy13aXRoLWRpc3BsYXktbmFtZXMuaHRtbCAobGluZSA0Nzox
KQotICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIw
KQorICAgc3RhcnRUZXN0IG5hbWVkLWZ1bmN0aW9ucy13aXRoLWRpc3BsYXktbmFtZXMuaHRtbCAo
bGluZSA1MzoxOSkKKyAgICAgIDAgaXRlcmF0aW9ucyBmdW5jdGlvbiBuYW1lZC1mdW5jdGlvbnMt
d2l0aC1kaXNwbGF5LW5hbWVzLmh0bWwgKGxpbmUgMTA6MTkpCisgICAgICAxIGl0ZXJhdGlvbiBm
dW5jdGlvbiBuYW1lZC1mdW5jdGlvbnMtd2l0aC1kaXNwbGF5LW5hbWVzLmh0bWwgKGxpbmUgMTc6
MTkpCisgICAgICAyIGl0ZXJhdGlvbnMgZnVuY3Rpb24gbmFtZWQtZnVuY3Rpb25zLXdpdGgtZGlz
cGxheS1uYW1lcy5odG1sIChsaW5lIDI0OjE5KQorICAgICAgMjAgaXRlcmF0aW9ucyBmdW5jdGlv
biBuYW1lZC1mdW5jdGlvbnMtd2l0aC1kaXNwbGF5LW5hbWVzLmh0bWwgKGxpbmUgMzE6MjApCisg
ICAgICAxMDAwIGl0ZXJhdGlvbnMgZnVuY3Rpb24gbmFtZWQtZnVuY3Rpb25zLXdpdGgtZGlzcGxh
eS1uYW1lcy5odG1sIChsaW5lIDM4OjIyKQorICAgICAgYm9ndXNEaXNwbGF5TmFtZUZ1bmN0aW9u
IG5hbWVkLWZ1bmN0aW9ucy13aXRoLWRpc3BsYXktbmFtZXMuaHRtbCAobGluZSA0NjozNCkKKyAg
ICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToxNykKIAog
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL25lc3RlZC1hbm9ueW1vdXMtZnVuY3Rv
bi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9u
ZXN0ZWQtYW5vbnltb3VzLWZ1bmN0b24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY5MTMpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL25lc3RlZC1hbm9ueW1vdXMtZnVuY3Rvbi1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsMTQgKzQsMTQgQEAgVG8gcnVuIHRoaXMgdGVz
dCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiBOZXN0ZWQgYW5vbnlt
b3VzIGZ1bmN0aW9ucyBjYWxsZWQKIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBz
dGFydFRlc3QgbmVzdGVkLWFub255bW91cy1mdW5jdG9uLmh0bWwgKGxpbmUgMTE6MSkKLSAgICAg
IEFub255bW91c0Z1bmN0aW9uV2ljaENhbGxzQW5Bbm9ueW1vdXNGdW5jdGlvbiBuZXN0ZWQtYW5v
bnltb3VzLWZ1bmN0b24uaHRtbCAobGluZSAxNDo2OCkKLSAgICAgICAgIGFub255bW91c0Z1bmN0
aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI5OjM3KQotICAgICAgICAg
ICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoy
NikKKyAgIHN0YXJ0VGVzdCBuZXN0ZWQtYW5vbnltb3VzLWZ1bmN0b24uaHRtbCAobGluZSAxMDox
OSkKKyAgICAgIEFub255bW91c0Z1bmN0aW9uV2ljaENhbGxzQW5Bbm9ueW1vdXNGdW5jdGlvbiBu
ZXN0ZWQtYW5vbnltb3VzLWZ1bmN0b24uaHRtbCAobGluZSAxNDo2NSkKKyAgICAgICAgIGFub255
bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI5OjM0KQor
ICAgICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAo
bGluZSAxNzoyMykKICAgICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQgKG5vIGZpbGUpIChsaW5l
IDA6MCkKICAgICAgICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAwOjAp
CiAgICAgICAgICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAg
ICAgICAgICAgZ2V0RWxlbWVudEJ5SWQgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAgIGVuZFRl
c3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAgICAgIGVuZFRl
c3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToxNykKIAogCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL25lc3RlZC1zdGFydC1hbmQtc3RvcC1wcm9maWxlci1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9uZXN0
ZWQtc3RhcnQtYW5kLXN0b3AtcHJvZmlsZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY5MTMp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL25lc3RlZC1zdGFydC1hbmQtc3RvcC1wcm9m
aWxlci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsMzUgKzQsMzUgQEAgVG8gcnVu
IHRoaXMgdGVzdCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiBTdGFy
dCB0aGUgcHJvZmlsZXIgdGhlIHRoaXJkIHRpbWUuCiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUg
MDowKQotICAgc3RhcnRUZXN0IG5lc3RlZC1zdGFydC1hbmQtc3RvcC1wcm9maWxlci5odG1sIChs
aW5lIDExOjEpCi0gICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChs
aW5lIDE6MjApCisgICBzdGFydFRlc3QgbmVzdGVkLXN0YXJ0LWFuZC1zdG9wLXByb2ZpbGVyLmh0
bWwgKGxpbmUgMTA6MTkpCisgICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2Vz
LmpzIChsaW5lIDE6MTcpCiAKIAogUHJvZmlsZSB0aXRsZTogU3RhcnQgdGhlIHByb2ZpbGVyIHRo
ZSB0aGlyZCB0aW1lLgogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVz
dCBuZXN0ZWQtc3RhcnQtYW5kLXN0b3AtcHJvZmlsZXIuaHRtbCAobGluZSAxMToxKQotICAgICAg
ZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgc3Rh
cnRUZXN0IG5lc3RlZC1zdGFydC1hbmQtc3RvcC1wcm9maWxlci5odG1sIChsaW5lIDEwOjE5KQor
ICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQog
CiBQcm9maWxlIHRpdGxlOiBTdGFydCB0aGUgcHJvZmlsZXIgdGhlIHNlY29uZCB0aW1lLgogVGhy
ZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCBuZXN0ZWQtc3RhcnQtYW5k
LXN0b3AtcHJvZmlsZXIuaHRtbCAobGluZSAxMToxKQotICAgICAgZW5kVGVzdCBwcm9maWxlci10
ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgc3RhcnRUZXN0IG5lc3RlZC1zdGFy
dC1hbmQtc3RvcC1wcm9maWxlci5odG1sIChsaW5lIDEwOjE5KQorICAgICAgZW5kVGVzdCBwcm9m
aWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogICAgICAgICAgcHJvZmlsZUVu
ZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgICAgcHJpbnRQcm9maWxlc0RhdGFXaXRob3V0
VGltZSBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA2MzoxKQorICAgICAgICAg
cHJpbnRQcm9maWxlc0RhdGFXaXRob3V0VGltZSBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5q
cyAobGluZSA2MjozOCkKICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQgKG5vIGZpbGUpIChsaW5l
IDA6MCkKICAgICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAwOjApCiAg
ICAgICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgICAgICAg
cHJpbnRQcm9maWxlTm9kZVdpdGhvdXRUaW1lIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpz
IChsaW5lIDc4OjEpCisgICAgICAgICAgICBwcmludFByb2ZpbGVOb2RlV2l0aG91dFRpbWUgcHJv
ZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgNzc6MzcpCiAgICAgICAgICAgICAgICBy
ZXBsYWNlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICBjcmVhdGVUZXh0Tm9k
ZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgYXBwZW5kQ2hpbGQgKG5vIGZp
bGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgIGNoaWxkcmVuIChubyBmaWxlKSAobGluZSAw
OjApCi0gICAgICAgICAgICAgICBwcmludFByb2ZpbGVOb2RlV2l0aG91dFRpbWUgcHJvZmlsZXIt
dGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgNzg6MSkKKyAgICAgICAgICAgICAgIHByaW50UHJv
ZmlsZU5vZGVXaXRob3V0VGltZSBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA3
NzozNykKICAgICAgICAgICAgICAgICAgIHJlcGxhY2UgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAg
ICAgICAgICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAg
ICAgICAgICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAg
ICAgICAgICAgY2hpbGRyZW4gKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAgICAgICAgICAgICAg
IHByaW50UHJvZmlsZU5vZGVXaXRob3V0VGltZSBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5q
cyAobGluZSA3ODoxKQorICAgICAgICAgICAgICAgICAgcHJpbnRQcm9maWxlTm9kZVdpdGhvdXRU
aW1lIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDc3OjM3KQogICAgICAgICAg
ICAgICAgICAgICAgcmVwbGFjZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAg
ICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAg
ICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjApCkBAIC00MywyOSArNDMsMjkg
QEAgVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKIAogUHJvZmlsZSB0aXRsZTogU3RhcnQg
dGhlIHByb2ZpbGVyIHRoZSB0aGlyZCB0aW1lLgogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6
MCkKLSAgIHN0YXJ0VGVzdCBuZXN0ZWQtc3RhcnQtYW5kLXN0b3AtcHJvZmlsZXIuaHRtbCAobGlu
ZSAxMToxKQotICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGlu
ZSAxOjIwKQorICAgc3RhcnRUZXN0IG5lc3RlZC1zdGFydC1hbmQtc3RvcC1wcm9maWxlci5odG1s
IChsaW5lIDEwOjE5KQorICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5q
cyAobGluZSAxOjE3KQogCiBQcm9maWxlIHRpdGxlOiBTdGFydCB0aGUgcHJvZmlsZXIgdGhlIHNl
Y29uZCB0aW1lLgogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCBu
ZXN0ZWQtc3RhcnQtYW5kLXN0b3AtcHJvZmlsZXIuaHRtbCAobGluZSAxMToxKQotICAgICAgZW5k
VGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgc3RhcnRU
ZXN0IG5lc3RlZC1zdGFydC1hbmQtc3RvcC1wcm9maWxlci5odG1sIChsaW5lIDEwOjE5KQorICAg
ICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogICAg
ICAgICAgcHJvZmlsZUVuZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgICAgcHJpbnRQcm9m
aWxlc0RhdGFXaXRob3V0VGltZSBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA2
MzoxKQorICAgICAgICAgcHJpbnRQcm9maWxlc0RhdGFXaXRob3V0VGltZSBwcm9maWxlci10ZXN0
LUpTLXJlc291cmNlcy5qcyAobGluZSA2MjozOCkKICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQg
KG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxl
KSAobGluZSAwOjApCiAgICAgICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDow
KQotICAgICAgICAgICAgcHJpbnRQcm9maWxlTm9kZVdpdGhvdXRUaW1lIHByb2ZpbGVyLXRlc3Qt
SlMtcmVzb3VyY2VzLmpzIChsaW5lIDc4OjEpCisgICAgICAgICAgICBwcmludFByb2ZpbGVOb2Rl
V2l0aG91dFRpbWUgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgNzc6MzcpCiAg
ICAgICAgICAgICAgICByZXBsYWNlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAg
ICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgYXBw
ZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgIGNoaWxkcmVuIChu
byBmaWxlKSAobGluZSAwOjApCi0gICAgICAgICAgICAgICBwcmludFByb2ZpbGVOb2RlV2l0aG91
dFRpbWUgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgNzg6MSkKKyAgICAgICAg
ICAgICAgIHByaW50UHJvZmlsZU5vZGVXaXRob3V0VGltZSBwcm9maWxlci10ZXN0LUpTLXJlc291
cmNlcy5qcyAobGluZSA3NzozNykKICAgICAgICAgICAgICAgICAgIHJlcGxhY2UgKG5vIGZpbGUp
IChsaW5lIDA6MCkKICAgICAgICAgICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAo
bGluZSAwOjApCiAgICAgICAgICAgICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUg
MDowKQogICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAg
ICAgICAgICAgICAgICAgIHByaW50UHJvZmlsZU5vZGVXaXRob3V0VGltZSBwcm9maWxlci10ZXN0
LUpTLXJlc291cmNlcy5qcyAobGluZSA3ODoxKQorICAgICAgICAgICAgICAgICAgcHJpbnRQcm9m
aWxlTm9kZVdpdGhvdXRUaW1lIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDc3
OjM3KQogICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZSAobm8gZmlsZSkgKGxpbmUgMDowKQog
ICAgICAgICAgICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkK
ICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjApCkBA
IC03NSw0OSArNzUsNDkgQEAgVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKIAogUHJvZmls
ZSB0aXRsZTogU3RhcnQgdGhlIHByb2ZpbGVyIHRoZSBmaXJzdCB0aW1lLgogVGhyZWFkXzEgKG5v
IGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCBuZXN0ZWQtc3RhcnQtYW5kLXN0b3AtcHJv
ZmlsZXIuaHRtbCAobGluZSAxMToxKQotICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJl
c291cmNlcy5qcyAobGluZSAxOjIwKQorICAgc3RhcnRUZXN0IG5lc3RlZC1zdGFydC1hbmQtc3Rv
cC1wcm9maWxlci5odG1sIChsaW5lIDEwOjE5KQorICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0
LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogICAgICAgICAgcHJvZmlsZUVuZCAobm8gZmls
ZSkgKGxpbmUgMDowKQotICAgICAgICAgcHJpbnRQcm9maWxlc0RhdGFXaXRob3V0VGltZSBwcm9m
aWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA2MzoxKQorICAgICAgICAgcHJpbnRQcm9m
aWxlc0RhdGFXaXRob3V0VGltZSBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA2
MjozOCkKICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAg
ICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAg
ICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgICAgICAgcHJpbnRQcm9m
aWxlTm9kZVdpdGhvdXRUaW1lIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDc4
OjEpCisgICAgICAgICAgICBwcmludFByb2ZpbGVOb2RlV2l0aG91dFRpbWUgcHJvZmlsZXItdGVz
dC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgNzc6MzcpCiAgICAgICAgICAgICAgICByZXBsYWNlIChu
byBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmls
ZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgYXBwZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5l
IDA6MCkKICAgICAgICAgICAgICAgIGNoaWxkcmVuIChubyBmaWxlKSAobGluZSAwOjApCi0gICAg
ICAgICAgICAgICBwcmludFByb2ZpbGVOb2RlV2l0aG91dFRpbWUgcHJvZmlsZXItdGVzdC1KUy1y
ZXNvdXJjZXMuanMgKGxpbmUgNzg6MSkKKyAgICAgICAgICAgICAgIHByaW50UHJvZmlsZU5vZGVX
aXRob3V0VGltZSBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA3NzozNykKICAg
ICAgICAgICAgICAgICAgIHJlcGxhY2UgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAg
ICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAg
ICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgICAg
Y2hpbGRyZW4gKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAgICAgICAgICAgICAgIHByaW50UHJv
ZmlsZU5vZGVXaXRob3V0VGltZSBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA3
ODoxKQorICAgICAgICAgICAgICAgICAgcHJpbnRQcm9maWxlTm9kZVdpdGhvdXRUaW1lIHByb2Zp
bGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDc3OjM3KQogICAgICAgICAgICAgICAgICAg
ICAgcmVwbGFjZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgICAgICAgY3Jl
YXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgICAgICAgIGFw
cGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICAgICAgICBjaGls
ZHJlbiAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgICAgICAgICAgICAgICAgcHJpbnRQcm9m
aWxlTm9kZVdpdGhvdXRUaW1lIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDc4
OjEpCisgICAgICAgICAgICAgICAgICAgICBwcmludFByb2ZpbGVOb2RlV2l0aG91dFRpbWUgcHJv
ZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgNzc6MzcpCiAgICAgICAgICAgICAgICAg
ICAgICAgICByZXBsYWNlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICAgICAg
ICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAg
ICAgICAgICAgYXBwZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAg
ICAgICAgICAgIGNoaWxkcmVuIChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICAgICAgICAgICAg
ICAgICAgICBwcmludFByb2ZpbGVOb2RlV2l0aG91dFRpbWUgcHJvZmlsZXItdGVzdC1KUy1yZXNv
dXJjZXMuanMgKGxpbmUgNzg6MSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50UHJvZmls
ZU5vZGVXaXRob3V0VGltZSBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA3Nzoz
NykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2UgKG5vIGZpbGUpIChsaW5lIDA6
MCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAo
bGluZSAwOjApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmls
ZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gKG5vIGZp
bGUpIChsaW5lIDA6MCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50UHJvZmlsZU5v
ZGVXaXRob3V0VGltZSBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA3ODoxKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRQcm9maWxlTm9kZVdpdGhvdXRUaW1lIHBy
b2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDc3OjM3KQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVwbGFjZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAw
OjApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiAobm8gZmlsZSkgKGxp
bmUgMDowKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRQcm9maWxlTm9kZVdp
dGhvdXRUaW1lIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDc4OjEpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludFByb2ZpbGVOb2RlV2l0aG91dFRpbWUgcHJv
ZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgNzc6MzcpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXBsYWNlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDow
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kQ2hpbGQgKG5vIGZpbGUp
IChsaW5lIDA6MCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuIChu
byBmaWxlKSAobGluZSAwOjApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmlu
dFByb2ZpbGVOb2RlV2l0aG91dFRpbWUgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxp
bmUgNzg6MSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50UHJvZmlsZU5v
ZGVXaXRob3V0VGltZSBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA3NzozNykK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2UgKG5vIGZpbGUpIChs
aW5lIDA6MCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZVRleHRO
b2RlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9wcm9maWxlci9vbmUtZXhlY3V0aW9uLWNvbnRleHQtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvb25lLWV4ZWN1dGlvbi1jb250ZXh0LWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2OTEzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxl
ci9vbmUtZXhlY3V0aW9uLWNvbnRleHQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00
LDcgKzQsNyBAQCBUbyBydW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBsb2FkIGl0IGluIHRoCiAKIFBy
b2ZpbGUgdGl0bGU6IE9uZSBFeGVjdXRpb24gQ29udGV4dAogVGhyZWFkXzEgKG5vIGZpbGUpIChs
aW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCBvbmUtZXhlY3V0aW9uLWNvbnRleHQuaHRtbCAobGluZSAx
MToxKQotICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAx
OjIwKQorICAgc3RhcnRUZXN0IG9uZS1leGVjdXRpb24tY29udGV4dC5odG1sIChsaW5lIDEwOjE5
KQorICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3
KQogCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvcHJvZmlsZS1jYWxscy1pbi1p
bmNsdWRlZC1maWxlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L3Byb2ZpbGVyL3Byb2ZpbGUtY2FsbHMtaW4taW5jbHVkZWQtZmlsZS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDE4NjkxMykKKysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvcHJvZmlsZS1jYWxs
cy1pbi1pbmNsdWRlZC1maWxlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCw3ICs0
LDcgQEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxl
IHRpdGxlOiBQcm9maWxlIGNhbGwgaW4gaW5jbHVkZWQgZmlsZQogVGhyZWFkXzEgKG5vIGZpbGUp
IChsaW5lIDA6MCkKLSAgIHN0YXJ0UHJvZmlsZSBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5q
cyAobGluZSA0MzoxKQotICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAo
bGluZSAxOjIwKQorICAgc3RhcnRQcm9maWxlIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpz
IChsaW5lIDQyOjIyKQorICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAo
bGluZSAxOjE3KQogCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvcHJvZmlsZS13
aXRoLW5vLXRpdGxlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L3Byb2ZpbGVyL3Byb2ZpbGUtd2l0aC1uby10aXRsZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4
NjkxMykKKysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvcHJvZmlsZS13aXRoLW5vLXRpdGxl
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCw3ICs0LDcgQEAgVG8gcnVuIHRoaXMg
dGVzdCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiAKIFRocmVhZF8x
IChubyBmaWxlKSAobGluZSAwOjApCi0gICBzdGFydFRlc3QgcHJvZmlsZS13aXRoLW5vLXRpdGxl
Lmh0bWwgKGxpbmUgMTE6MSkKLSAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJj
ZXMuanMgKGxpbmUgMToyMCkKKyAgIHN0YXJ0VGVzdCBwcm9maWxlLXdpdGgtbm8tdGl0bGUuaHRt
bCAobGluZSAxMDoxOSkKKyAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMu
anMgKGxpbmUgMToxNykKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3Byb2Zp
bGluZy1mcm9tLWEtbmVzdGVkLWxvY2F0aW9uLWJ1dC1zdG9wLXByb2ZpbGluZy1vdXRzaWRlLXRo
ZS1uZXN0aW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3By
b2ZpbGVyL3Byb2ZpbGluZy1mcm9tLWEtbmVzdGVkLWxvY2F0aW9uLWJ1dC1zdG9wLXByb2ZpbGlu
Zy1vdXRzaWRlLXRoZS1uZXN0aW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2OTEzKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9wcm9maWxpbmctZnJvbS1hLW5lc3RlZC1sb2NhdGlv
bi1idXQtc3RvcC1wcm9maWxpbmctb3V0c2lkZS10aGUtbmVzdGluZy1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTQsNyArNCw3IEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxv
YWQgaXQgaW4gdGgKIAogUHJvZmlsZSB0aXRsZTogUHJvZmlsaW5nIEZyb20gQSBOZXN0ZWQgTG9j
YXRpb24gQnV0IFN0b3AgUHJvZmlsaW5nIE91dHNpZGUgVGhlIE5lc3RpbmcKIFRocmVhZF8xIChu
byBmaWxlKSAobGluZSAwOjApCi0gICBmdW5jdGlvbldpY2hTdGFydHNUaGVQcm9maWxlciBwcm9m
aWxpbmctZnJvbS1hLW5lc3RlZC1sb2NhdGlvbi1idXQtc3RvcC1wcm9maWxpbmctb3V0c2lkZS10
aGUtbmVzdGluZy5odG1sIChsaW5lIDE3OjEpCi0gICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMt
cmVzb3VyY2VzLmpzIChsaW5lIDE6MjApCisgICBmdW5jdGlvbldpY2hTdGFydHNUaGVQcm9maWxl
ciBwcm9maWxpbmctZnJvbS1hLW5lc3RlZC1sb2NhdGlvbi1idXQtc3RvcC1wcm9maWxpbmctb3V0
c2lkZS10aGUtbmVzdGluZy5odG1sIChsaW5lIDE2OjM5KQorICAgZW5kVGVzdCBwcm9maWxlci10
ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiAKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvcHJvZmlsZXIvcHJvZmlsaW5nLWZyb20tYS1uZXN0ZWQtbG9jYXRpb24tZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvcHJvZmlsaW5nLWZyb20t
YS1uZXN0ZWQtbG9jYXRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY5MTMpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3Byb2ZpbGluZy1mcm9tLWEtbmVzdGVkLWxvY2F0aW9uLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCw3ICs0LDcgQEAgVG8gcnVuIHRoaXMgdGVz
dCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiBQcm9maWxpbmcgRnJv
bSBBIE5lc3RlZCBMb2NhdGlvbgogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIGZ1
bmN0aW9uV2ljaFN0YXJ0c0FuZFN0b3BzVGhlUHJvZmlsZXIgcHJvZmlsaW5nLWZyb20tYS1uZXN0
ZWQtbG9jYXRpb24uaHRtbCAobGluZSAxNjoxKQotICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0
LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgZnVuY3Rpb25XaWNoU3RhcnRzQW5kU3Rv
cHNUaGVQcm9maWxlciBwcm9maWxpbmctZnJvbS1hLW5lc3RlZC1sb2NhdGlvbi5odG1sIChsaW5l
IDE1OjQ3KQorICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGlu
ZSAxOjE3KQogCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvc2ltcGxlLWV2ZW50
LWNhbGwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmls
ZXIvc2ltcGxlLWV2ZW50LWNhbGwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY5MTMpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3NpbXBsZS1ldmVudC1jYWxsLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtNCw3ICs0LDcgQEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwg
bG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiBBIHNpbXBsZSBwcm9maWxlIHRlc3Qgd2hl
cmUgYW4gZXZlbnQgaGFwcGVucy4KIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBz
dGFydFRlc3Qgc2ltcGxlLWV2ZW50LWNhbGwuaHRtbCAobGluZSAxMToxKQotICAgICAgZW5kVGVz
dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgc3RhcnRUZXN0
IHNpbXBsZS1ldmVudC1jYWxsLmh0bWwgKGxpbmUgMTA6MTkpCisgICAgICBlbmRUZXN0IHByb2Zp
bGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MTcpCiAKIApJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9wcm9maWxlci9zaW1wbGUtbm8tbGV2ZWwtY2hhbmdlLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3NpbXBsZS1uby1sZXZlbC1jaGFu
Z2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY5MTMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3By
b2ZpbGVyL3NpbXBsZS1uby1sZXZlbC1jaGFuZ2UtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC00LDcgKzQsNyBAQCBUbyBydW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBsb2FkIGl0IGluIHRo
CiAKIFByb2ZpbGUgdGl0bGU6IEEgc2ltcGxlIHByb2ZpbGUgdGVzdCB3aGVyZSBubyBzY29wZSBj
aGFnbmVzCiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgZnVuY3Rpb25XaWNoU3Rh
cnRzQW5kU3RvcHNUaGVQcm9maWxlciBzaW1wbGUtbm8tbGV2ZWwtY2hhbmdlLmh0bWwgKGxpbmUg
MTY6MSkKKyAgIGZ1bmN0aW9uV2ljaFN0YXJ0c0FuZFN0b3BzVGhlUHJvZmlsZXIgc2ltcGxlLW5v
LWxldmVsLWNoYW5nZS5odG1sIChsaW5lIDE1OjQ3KQogICAgICAgZ2V0RWxlbWVudEJ5SWQgKG5v
IGZpbGUpIChsaW5lIDA6MCkKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3N0
YXJ0LWFuZC1zdG9wLXByb2ZpbGVyLW11bHRpcGxlLXRpbWVzLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3N0YXJ0LWFuZC1zdG9wLXByb2ZpbGVy
LW11bHRpcGxlLXRpbWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2OTEzKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9wcm9maWxlci9zdGFydC1hbmQtc3RvcC1wcm9maWxlci1tdWx0aXBsZS10aW1l
cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsNzAgKzQsNzAgQEAgVG8gcnVuIHRo
aXMgdGVzdCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiBTdGFydCB0
aGUgcHJvZmlsZXIgdGhlIGZpcnN0IHRpbWUuCiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDow
KQotICAgc3RhcnRUZXN0IHN0YXJ0LWFuZC1zdG9wLXByb2ZpbGVyLW11bHRpcGxlLXRpbWVzLmh0
bWwgKGxpbmUgMTE6MSkKLSAgICAgIGFub255bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMt
cmVzb3VyY2VzLmpzIChsaW5lIDI5OjM3KQotICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxl
ci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyNikKKyAgIHN0YXJ0VGVzdCBzdGFydC1h
bmQtc3RvcC1wcm9maWxlci1tdWx0aXBsZS10aW1lcy5odG1sIChsaW5lIDEwOjE5KQorICAgICAg
YW5vbnltb3VzRnVuY3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMjk6
MzQpCisgICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpz
IChsaW5lIDE3OjIzKQogICAgICAgICAgICAgY3JlYXRlRWxlbWVudCAobm8gZmlsZSkgKGxpbmUg
MDowKQogICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAg
ICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICBn
ZXRFbGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgZW5kVGVzdCBwcm9maWxl
ci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgICAgZW5kVGVzdCBwcm9maWxl
ci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiAKIFByb2ZpbGUgdGl0bGU6IFN0
YXJ0IHRoZSBwcm9maWxlciB0aGUgZmlyc3QgdGltZS4KIFRocmVhZF8xIChubyBmaWxlKSAobGlu
ZSAwOjApCi0gICBzdGFydFRlc3Qgc3RhcnQtYW5kLXN0b3AtcHJvZmlsZXItbXVsdGlwbGUtdGlt
ZXMuaHRtbCAobGluZSAxMToxKQotICAgICAgYW5vbnltb3VzRnVuY3Rpb24gcHJvZmlsZXItdGVz
dC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMjk6MzcpCi0gICAgICAgICBpbnNlcnROZXdUZXh0IHBy
b2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjI2KQorICAgc3RhcnRUZXN0IHN0
YXJ0LWFuZC1zdG9wLXByb2ZpbGVyLW11bHRpcGxlLXRpbWVzLmh0bWwgKGxpbmUgMTA6MTkpCisg
ICAgICBhbm9ueW1vdXNGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGlu
ZSAyOTozNCkKKyAgICAgICAgIGluc2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJj
ZXMuanMgKGxpbmUgMTc6MjMpCiAgICAgICAgICAgICBjcmVhdGVFbGVtZW50IChubyBmaWxlKSAo
bGluZSAwOjApCiAgICAgICAgICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDow
KQogICAgICAgICAgICAgYXBwZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAg
ICAgIGdldEVsZW1lbnRCeUlkIChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICBlbmRUZXN0IHBy
b2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MjApCisgICAgICBlbmRUZXN0IHBy
b2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MTcpCiAKIFByb2ZpbGUgdGl0bGU6
IFN0YXJ0IHRoZSBwcm9maWxlciB0aGUgc2Vjb25kIHRpbWUuCiBUaHJlYWRfMSAobm8gZmlsZSkg
KGxpbmUgMDowKQotICAgc3RhcnRUZXN0IHN0YXJ0LWFuZC1zdG9wLXByb2ZpbGVyLW11bHRpcGxl
LXRpbWVzLmh0bWwgKGxpbmUgMTE6MSkKLSAgICAgIGFub255bW91c0Z1bmN0aW9uIHByb2ZpbGVy
LXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI5OjM3KQotICAgICAgICAgaW5zZXJ0TmV3VGV4
dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyNikKKyAgIHN0YXJ0VGVz
dCBzdGFydC1hbmQtc3RvcC1wcm9maWxlci1tdWx0aXBsZS10aW1lcy5odG1sIChsaW5lIDEwOjE5
KQorICAgICAgYW5vbnltb3VzRnVuY3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMg
KGxpbmUgMjk6MzQpCisgICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVz
b3VyY2VzLmpzIChsaW5lIDE3OjIzKQogICAgICAgICAgICAgY3JlYXRlRWxlbWVudCAobm8gZmls
ZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5l
IDA6MCkKICAgICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjApCiAgICAg
ICAgICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgZW5kVGVz
dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgICAgZW5kVGVz
dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiAKIFByb2ZpbGUg
dGl0bGU6IFN0YXJ0IHRoZSBwcm9maWxlciB0aGUgZmlyc3QgdGltZS4KIFRocmVhZF8xIChubyBm
aWxlKSAobGluZSAwOjApCi0gICBzdGFydFRlc3Qgc3RhcnQtYW5kLXN0b3AtcHJvZmlsZXItbXVs
dGlwbGUtdGltZXMuaHRtbCAobGluZSAxMToxKQotICAgICAgYW5vbnltb3VzRnVuY3Rpb24gcHJv
ZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMjk6MzcpCi0gICAgICAgICBpbnNlcnRO
ZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjI2KQorICAgc3Rh
cnRUZXN0IHN0YXJ0LWFuZC1zdG9wLXByb2ZpbGVyLW11bHRpcGxlLXRpbWVzLmh0bWwgKGxpbmUg
MTA6MTkpCisgICAgICBhbm9ueW1vdXNGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpTLXJlc291cmNl
cy5qcyAobGluZSAyOTozNCkKKyAgICAgICAgIGluc2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1K
Uy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjMpCiAgICAgICAgICAgICBjcmVhdGVFbGVtZW50IChu
byBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkg
KGxpbmUgMDowKQogICAgICAgICAgICAgYXBwZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkK
ICAgICAgICAgICAgIGdldEVsZW1lbnRCeUlkIChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICBl
bmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MjApCisgICAgICBl
bmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MTcpCiAKIFByb2Zp
bGUgdGl0bGU6IFN0YXJ0IHRoZSBwcm9maWxlciB0aGUgc2Vjb25kIHRpbWUuCiBUaHJlYWRfMSAo
bm8gZmlsZSkgKGxpbmUgMDowKQotICAgc3RhcnRUZXN0IHN0YXJ0LWFuZC1zdG9wLXByb2ZpbGVy
LW11bHRpcGxlLXRpbWVzLmh0bWwgKGxpbmUgMTE6MSkKLSAgICAgIGFub255bW91c0Z1bmN0aW9u
IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI5OjM3KQotICAgICAgICAgaW5z
ZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyNikKKyAg
IHN0YXJ0VGVzdCBzdGFydC1hbmQtc3RvcC1wcm9maWxlci1tdWx0aXBsZS10aW1lcy5odG1sIChs
aW5lIDEwOjE5KQorICAgICAgYW5vbnltb3VzRnVuY3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNv
dXJjZXMuanMgKGxpbmUgMjk6MzQpCisgICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRl
c3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjIzKQogICAgICAgICAgICAgY3JlYXRlRWxlbWVu
dCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZp
bGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAw
OjApCiAgICAgICAgICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAg
ICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAg
ICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiBQ
cm9maWxlIHRpdGxlOiBTdGFydCB0aGUgcHJvZmlsZXIgdGhlIHRoaXJkIHRpbWUuCiBUaHJlYWRf
MSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgc3RhcnRUZXN0IHN0YXJ0LWFuZC1zdG9wLXByb2Zp
bGVyLW11bHRpcGxlLXRpbWVzLmh0bWwgKGxpbmUgMTE6MSkKLSAgICAgIGFub255bW91c0Z1bmN0
aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI5OjM3KQotICAgICAgICAg
aW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyNikK
KyAgIHN0YXJ0VGVzdCBzdGFydC1hbmQtc3RvcC1wcm9maWxlci1tdWx0aXBsZS10aW1lcy5odG1s
IChsaW5lIDEwOjE5KQorICAgICAgYW5vbnltb3VzRnVuY3Rpb24gcHJvZmlsZXItdGVzdC1KUy1y
ZXNvdXJjZXMuanMgKGxpbmUgMjk6MzQpCisgICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVy
LXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjIzKQogICAgICAgICAgICAgY3JlYXRlRWxl
bWVudCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5v
IGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGlu
ZSAwOjApCiAgICAgICAgICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMDowKQot
ICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQor
ICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQog
CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvc3RhcnQtYW5kLXN0b3AtcHJvZmls
aW5nLWluLXRoZS1zYW1lLWZ1bmN0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3N0YXJ0LWFuZC1zdG9wLXByb2ZpbGluZy1pbi10aGUtc2Ft
ZS1mdW5jdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4NjkxMykKKysrIExheW91dFRlc3Rz
L2Zhc3QvcHJvZmlsZXIvc3RhcnQtYW5kLXN0b3AtcHJvZmlsaW5nLWluLXRoZS1zYW1lLWZ1bmN0
aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCw3ICs0LDcgQEAgVG8gcnVuIHRo
aXMgdGVzdCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiBQcm9maWxp
bmcgRnJvbSBBIE5lc3RlZCBMb2NhdGlvbgogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkK
LSAgIHN0YXJ0VGVzdCBzdGFydC1hbmQtc3RvcC1wcm9maWxpbmctaW4tdGhlLXNhbWUtZnVuY3Rp
b24uaHRtbCAobGluZSAxMToxKQotICAgICAgZnVuY3Rpb25XaWNoU3RvcHNUaGVQcm9maWxlciBz
dGFydC1hbmQtc3RvcC1wcm9maWxpbmctaW4tdGhlLXNhbWUtZnVuY3Rpb24uaHRtbCAobGluZSAx
ODoxKQorICAgc3RhcnRUZXN0IHN0YXJ0LWFuZC1zdG9wLXByb2ZpbGluZy1pbi10aGUtc2FtZS1m
dW5jdGlvbi5odG1sIChsaW5lIDEwOjE5KQorICAgICAgZnVuY3Rpb25XaWNoU3RvcHNUaGVQcm9m
aWxlciBzdGFydC1hbmQtc3RvcC1wcm9maWxpbmctaW4tdGhlLXNhbWUtZnVuY3Rpb24uaHRtbCAo
bGluZSAxNzozOCkKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3N0b3AtcHJv
ZmlsaW5nLWFmdGVyLXNldFRpbWVvdXQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvcHJvZmlsZXIvc3RvcC1wcm9maWxpbmctYWZ0ZXItc2V0VGltZW91dC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDE4NjkxMykKKysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIv
c3RvcC1wcm9maWxpbmctYWZ0ZXItc2V0VGltZW91dC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTQsMTAgKzQsMTAgQEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgbG9hZCBpdCBp
biB0aAogCiBQcm9maWxlIHRpdGxlOiBTdG9wIHByb2ZpbGluZyBmcm9tIGEgdGltZW91dAogVGhy
ZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIG9ubG9hZCBzdG9wLXByb2ZpbGluZy1hZnRl
ci1zZXRUaW1lb3V0Lmh0bWwgKGxpbmUgMjE6NTIpCi0gICAgICBzdGFydFRlc3Qgc3RvcC1wcm9m
aWxpbmctYWZ0ZXItc2V0VGltZW91dC5odG1sIChsaW5lIDEzOjEpCisgICBvbmxvYWQgc3RvcC1w
cm9maWxpbmctYWZ0ZXItc2V0VGltZW91dC5odG1sIChsaW5lIDIxOjQ0KQorICAgICAgc3RhcnRU
ZXN0IHN0b3AtcHJvZmlsaW5nLWFmdGVyLXNldFRpbWVvdXQuaHRtbCAobGluZSAxMjoxOSkKICAg
ICAgICAgIHNldFRpbWVvdXQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgIChwcm9ncmFtKSBzdG9w
LXByb2ZpbGluZy1hZnRlci1zZXRUaW1lb3V0Lmh0bWwgKGxpbmUgMToxKQotICAgICAgZW5kVGVz
dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgICAgZW5kVGVz
dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiAKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvc3RvcC10aGVuLWZ1bmN0aW9uLWNhbGwtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvc3RvcC10aGVuLWZ1
bmN0aW9uLWNhbGwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY5MTMpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L3Byb2ZpbGVyL3N0b3AtdGhlbi1mdW5jdGlvbi1jYWxsLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtNSw2ICs1LDYgQEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgbG9h
ZCBpdCBpbiB0aAogUHJvZmlsZSB0aXRsZTogVGVzdAogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5l
IDA6MCkKICAgIChwcm9ncmFtKSAobm8gZmlsZSkgKGxpbmUgMToxNikKLSAgICAgIHRlc3Qgc3Rv
cC10aGVuLWZ1bmN0aW9uLWNhbGwuaHRtbCAobGluZSAxMToyMCkKKyAgICAgIHRlc3Qgc3RvcC10
aGVuLWZ1bmN0aW9uLWNhbGwuaHRtbCAobGluZSAxMToxNCkKIAogCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L3Byb2ZpbGVyL3R3by1leGVjdXRpb24tY29udGV4dHMtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvdHdvLWV4ZWN1dGlvbi1jb250ZXh0
cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4NjkxMykKKysrIExheW91dFRlc3RzL2Zhc3QvcHJv
ZmlsZXIvdHdvLWV4ZWN1dGlvbi1jb250ZXh0cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTQsOCArNCw4IEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxvYWQgaXQgaW4gdGgK
IAogUHJvZmlsZSB0aXRsZTogVHdvIEV4ZWN1dGlvbiBDb250ZXh0cwogVGhyZWFkXzEgKG5vIGZp
bGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCB0d28tZXhlY3V0aW9uLWNvbnRleHRzLmh0bWwg
KGxpbmUgMTE6MSkKLSAgICAgIGludGVybWVkaWFyeUZ1bmN0aW9uIHR3by1leGVjdXRpb24tY29u
dGV4dHMuaHRtbCAobGluZSAxODoxKQotICAgICAgICAgdGVzdEVuZCB0d28tZXhlY3V0aW9uLWNv
bnRleHRzLmh0bWwgKGxpbmUgMzM6MjApCisgICBzdGFydFRlc3QgdHdvLWV4ZWN1dGlvbi1jb250
ZXh0cy5odG1sIChsaW5lIDEwOjE5KQorICAgICAgaW50ZXJtZWRpYXJ5RnVuY3Rpb24gdHdvLWV4
ZWN1dGlvbi1jb250ZXh0cy5odG1sIChsaW5lIDE3OjMwKQorICAgICAgICAgdGVzdEVuZCB0d28t
ZXhlY3V0aW9uLWNvbnRleHRzLmh0bWwgKGxpbmUgMzM6MTcpCiAKIApJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9wcm9maWxlci91c2VyLWRlZmluZWQtZnVuY3Rpb24tY2FsbHMtYnVpbHQtaW4tZnVu
Y3Rpb25zLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Byb2Zp
bGVyL3VzZXItZGVmaW5lZC1mdW5jdGlvbi1jYWxscy1idWlsdC1pbi1mdW5jdGlvbnMtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAxODY5MTMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3Vz
ZXItZGVmaW5lZC1mdW5jdGlvbi1jYWxscy1idWlsdC1pbi1mdW5jdGlvbnMtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC02LDExICs2LDExIEBAIFRoaXMgaXMgaW5zZXJ0ZWQgVGV4dAog
CiBQcm9maWxlIHRpdGxlOiBVc2VyIGRlZmluZWQgZnVuY3Rpb24gY2FsbGVzIGJ1aWx0LWluIGZ1
bmN0aW9ucwogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCB1c2Vy
LWRlZmluZWQtZnVuY3Rpb24tY2FsbHMtYnVpbHQtaW4tZnVuY3Rpb25zLmh0bWwgKGxpbmUgMTE6
MSkKKyAgIHN0YXJ0VGVzdCB1c2VyLWRlZmluZWQtZnVuY3Rpb24tY2FsbHMtYnVpbHQtaW4tZnVu
Y3Rpb25zLmh0bWwgKGxpbmUgMTA6MTkpCiAgICAgICBjcmVhdGVFbGVtZW50IChubyBmaWxlKSAo
bGluZSAwOjApCiAgICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAg
ICAgYXBwZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgIGdldEVsZW1lbnRCeUlk
IChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVz
b3VyY2VzLmpzIChsaW5lIDE6MjApCisgICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVz
b3VyY2VzLmpzIChsaW5lIDE6MTcpCiAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxl
ci93aW5kb3ctZG90LWV2YWwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvcHJvZmlsZXIvd2luZG93LWRvdC1ldmFsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2
OTEzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci93aW5kb3ctZG90LWV2YWwtZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDEzICs0LDEzIEBAIFRvIHJ1biB0aGlzIHRlc3Qg
bWFudWFsbHksIGxvYWQgaXQgaW4gdGgKIAogUHJvZmlsZSB0aXRsZTogQ2FsbCB3aW5kb3cuZXZh
bCgpCiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgc3RhcnRUZXN0IHdpbmRvdy1k
b3QtZXZhbC5odG1sIChsaW5lIDExOjEpCi0gICAgICBldmFsRnVuY3Rpb24gKG5vIGZpbGUpIChs
aW5lIDE6MjUpCi0gICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3Vy
Y2VzLmpzIChsaW5lIDE3OjI2KQorICAgc3RhcnRUZXN0IHdpbmRvdy1kb3QtZXZhbC5odG1sIChs
aW5lIDEwOjE5KQorICAgICAgZXZhbEZ1bmN0aW9uIChubyBmaWxlKSAobGluZSAxOjIyKQorICAg
ICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAx
NzoyMykKICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAg
ICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAg
ICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgZ2V0RWxlbWVu
dEJ5SWQgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1K
Uy1yZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1K
Uy1yZXNvdXJjZXMuanMgKGxpbmUgMToxNykKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9kb20v
c2NyaXB0LXN0YXJ0LWVuZC1sb2NhdGlvbnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2pzL2RvbS9zY3JpcHQtc3RhcnQtZW5kLWxvY2F0aW9ucy1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDE4NjkxMykKKysrIExheW91dFRlc3RzL2pzL2RvbS9zY3JpcHQtc3RhcnQtZW5k
LWxvY2F0aW9ucy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUsMjczICs1LDI3MyBA
QCBwcm9ncmFtIHsgMjM6OSAtIDIzOjUwIH0KIHByb2dyYW0geyAyMzo2OCAtIDIzOjEwOSB9CiBw
cm9ncmFtIHsgMjU6OSAtIDI2OjEgfQogcHJvZ3JhbSB7IDI3OjEzIC0gMjg6MSB9Ci1mdW5jdGlv
biAiaGYxIiB7IDMwOjI0IC0gMzA6MzggfQotZnVuY3Rpb24gImhmMiIgeyAzMToyOCAtIDMxOjQy
IH0KLWZ1bmN0aW9uICJoZjMiIHsgMzI6MzIgLSAzMjo0NiB9Ci1mdW5jdGlvbiAiaGY0IiB7IDM0
OjI0IC0gMzY6OSB9Ci1mdW5jdGlvbiAiaGY1IiB7IDM3OjI4IC0gMzk6OSB9Ci1mdW5jdGlvbiAi
aGY2IiB7IDQwOjMyIC0gNDI6OSB9Ci1mdW5jdGlvbiAiaGY3IiB7IDQ1OjE2IC0gNDc6NSB9Ci1m
dW5jdGlvbiAiaGY4IiB7IDQ5OjM1IC0gNDk6NDUgfQotZnVuY3Rpb24gImhmOSIgeyA0OTo5NyAt
IDQ5OjEwNyB9CitmdW5jdGlvbiAiaGYxIiB7IDMwOjIxIC0gMzA6MzggfQorZnVuY3Rpb24gImhm
MiIgeyAzMToyNSAtIDMxOjQyIH0KK2Z1bmN0aW9uICJoZjMiIHsgMzI6MjkgLSAzMjo0NiB9Citm
dW5jdGlvbiAiaGY0IiB7IDM0OjIxIC0gMzY6OSB9CitmdW5jdGlvbiAiaGY1IiB7IDM3OjI1IC0g
Mzk6OSB9CitmdW5jdGlvbiAiaGY2IiB7IDQwOjI5IC0gNDI6OSB9CitmdW5jdGlvbiAiaGY3IiB7
IDQ1OjEzIC0gNDc6NSB9CitmdW5jdGlvbiAiaGY4IiB7IDQ5OjMyIC0gNDk6NDUgfQorZnVuY3Rp
b24gImhmOSIgeyA0OTo5NCAtIDQ5OjEwNyB9CiAKIHByb2dyYW0geyAxOjEgLSA0NzQ6MSB9CiAK
ICAgT24gZmlyc3QgbGluZToKLWZ1bmN0aW9uICJmMCIgeyAxOjExNSAtIDE6MjY2IH0KLWZ1bmN0
aW9uICJmMGEiIHsgMToxNDIgLSAxOjI1NyB9Ci1mdW5jdGlvbiAiZjBiIiB7IDE6MTcwIC0gMToy
NDggfQotZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gIngwIiB7IDE6Mjk4IC0gMTo0NzYg
fQotZnVuY3Rpb24gIngwYSIgeyAxOjMzMCAtIDE6NDY2IH0KLWZ1bmN0aW9uICJ4MGIiIHsgMToz
NjQgLSAxOjQ1NiB9CitmdW5jdGlvbiAiZjAiIHsgMToxMTIgLSAxOjI2NiB9CitmdW5jdGlvbiAi
ZjBhIiB7IDE6MTM5IC0gMToyNTcgfQorZnVuY3Rpb24gImYwYiIgeyAxOjE2NyAtIDE6MjQ4IH0K
K2V2YWwgeyAxOjEgLSAxOjU2IH0KK2Z1bmN0aW9uICJ4MCIgeyAxOjI5MiAtIDE6NDc2IH0KK2Z1
bmN0aW9uICJ4MGEiIHsgMTozMjcgLSAxOjQ2NiB9CitmdW5jdGlvbiAieDBiIiB7IDE6MzYxIC0g
MTo0NTYgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQogCiAgIEZ1bmN0aW9ucyBEZWNsYXJhdGlvbnMg
aW4gYSBmdW5jdGlvbjoKLWZ1bmN0aW9uICJmMSIgeyA5OjIyIC0gOToxMTMgfQorZnVuY3Rpb24g
ImYxIiB7IDk6MTYgLSA5OjExMyB9CiBldmFsIHsgMToxIC0gMTo1NiB9Ci1mdW5jdGlvbiAiZjIi
IHsgMTI6MjIgLSAxNjo1IH0KLWZ1bmN0aW9uICJmMmEiIHsgMTQ6MjQgLSAxNDoxMTYgfQorZnVu
Y3Rpb24gImYyIiB7IDEyOjE2IC0gMTY6NSB9CitmdW5jdGlvbiAiZjJhIiB7IDE0OjIxIC0gMTQ6
MTE2IH0KIGV2YWwgeyAxOjEgLSAxOjU2IH0KLWZ1bmN0aW9uICJmMyIgeyAxOToyMiAtIDMxOjUg
fQotZnVuY3Rpb24gImYzYSIgeyAyMToyNCAtIDI5OjkgfQotZnVuY3Rpb24gImYzYiIgeyAyMzoy
OCAtIDI3OjEzIH0KLWV2YWwgeyAxOjEgLSAxOjU2IH0KLWZ1bmN0aW9uICJmNCIgeyAzNDoyMiAt
IDM0OjcxIH0KLWZ1bmN0aW9uICJmNGEiIHsgMzQ6NDkgLSAzNDo1MCB9Ci1mdW5jdGlvbiAiZjUi
IHsgMzY6MjIgLSAzNjoxNTEgfQotZnVuY3Rpb24gImY1YSIgeyAzNjo0OSAtIDM2OjE0MSB9Ci1l
dmFsIHsgMToxIC0gMTo1NiB9Ci1mdW5jdGlvbiAiZjYiIHsgMzg6MjIgLSAzODoxODkgfQotZnVu
Y3Rpb24gImY2YSIgeyAzODo0OSAtIDM4OjE3OSB9Ci1mdW5jdGlvbiAiZjZiIiB7IDM4Ojc3IC0g
Mzg6MTY5IH0KK2Z1bmN0aW9uICJmMyIgeyAxOToxNiAtIDMxOjUgfQorZnVuY3Rpb24gImYzYSIg
eyAyMToyMSAtIDI5OjkgfQorZnVuY3Rpb24gImYzYiIgeyAyMzoyNSAtIDI3OjEzIH0KK2V2YWwg
eyAxOjEgLSAxOjU2IH0KK2Z1bmN0aW9uICJmNCIgeyAzNDoxNiAtIDM0OjcxIH0KK2Z1bmN0aW9u
ICJmNGEiIHsgMzQ6NDYgLSAzNDo1MCB9CitmdW5jdGlvbiAiZjUiIHsgMzY6MTYgLSAzNjoxNTEg
fQorZnVuY3Rpb24gImY1YSIgeyAzNjo0NiAtIDM2OjE0MSB9CitldmFsIHsgMToxIC0gMTo1NiB9
CitmdW5jdGlvbiAiZjYiIHsgMzg6MTYgLSAzODoxODkgfQorZnVuY3Rpb24gImY2YSIgeyAzODo0
NiAtIDM4OjE3OSB9CitmdW5jdGlvbiAiZjZiIiB7IDM4Ojc0IC0gMzg6MTY5IH0KIGV2YWwgeyAx
OjEgLSAxOjU2IH0KIAogICBJbmRlbnRlZCBGdW5jdGlvbnMgRGVjbGFyYXRpb25zIGluIGEgZnVu
Y3Rpb246Ci1mdW5jdGlvbiAiZmkxIiB7IDQzOjI3IC0gNDM6MTE5IH0KK2Z1bmN0aW9uICJmaTEi
IHsgNDM6MjEgLSA0MzoxMTkgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gImZpMiIg
eyA0NjoyNyAtIDUwOjkgfQotZnVuY3Rpb24gImZpMmEiIHsgNDg6MjkgLSA0ODoxMjIgfQorZnVu
Y3Rpb24gImZpMiIgeyA0NjoyMSAtIDUwOjkgfQorZnVuY3Rpb24gImZpMmEiIHsgNDg6MjYgLSA0
ODoxMjIgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gImZpMyIgeyA1MzoyNyAtIDY1
OjkgfQotZnVuY3Rpb24gImZpM2EiIHsgNTU6MjkgLSA2MzoxMyB9Ci1mdW5jdGlvbiAiZmkzYiIg
eyA1NzozMyAtIDYxOjE3IH0KLWV2YWwgeyAxOjEgLSAxOjU2IH0KLWZ1bmN0aW9uICJmaTQiIHsg
Njg6MjcgLSA2ODo4MCB9Ci1mdW5jdGlvbiAiZmk0YSIgeyA2ODo1NiAtIDY4OjU3IH0KLWZ1bmN0
aW9uICJmaTUiIHsgNzA6MjcgLSA3MDoxNjAgfQotZnVuY3Rpb24gImZpNWEiIHsgNzA6NTYgLSA3
MDoxNDkgfQotZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gImZpNiIgeyA3MjoyNyAtIDcy
OjIwMSB9Ci1mdW5jdGlvbiAiZmk2YSIgeyA3Mjo1NiAtIDcyOjE5MCB9Ci1mdW5jdGlvbiAiZmk2
YiIgeyA3Mjo4NiAtIDcyOjE3OSB9CitmdW5jdGlvbiAiZmkzIiB7IDUzOjIxIC0gNjU6OSB9Citm
dW5jdGlvbiAiZmkzYSIgeyA1NToyNiAtIDYzOjEzIH0KK2Z1bmN0aW9uICJmaTNiIiB7IDU3OjMw
IC0gNjE6MTcgfQorZXZhbCB7IDE6MSAtIDE6NTYgfQorZnVuY3Rpb24gImZpNCIgeyA2ODoyMSAt
IDY4OjgwIH0KK2Z1bmN0aW9uICJmaTRhIiB7IDY4OjUzIC0gNjg6NTcgfQorZnVuY3Rpb24gImZp
NSIgeyA3MDoyMSAtIDcwOjE2MCB9CitmdW5jdGlvbiAiZmk1YSIgeyA3MDo1MyAtIDcwOjE0OSB9
CitldmFsIHsgMToxIC0gMTo1NiB9CitmdW5jdGlvbiAiZmk2IiB7IDcyOjIxIC0gNzI6MjAxIH0K
K2Z1bmN0aW9uICJmaTZhIiB7IDcyOjUzIC0gNzI6MTkwIH0KK2Z1bmN0aW9uICJmaTZiIiB7IDcy
OjgzIC0gNzI6MTc5IH0KIGV2YWwgeyAxOjEgLSAxOjU2IH0KIAogICBGdW5jdGlvbnMgRXhwcmVz
c2lvbnMgaW4gYSBmdW5jdGlvbjoKLWZ1bmN0aW9uICJ4MSIgeyA3NzoyOCAtIDc3OjExOSB9Citm
dW5jdGlvbiAieDEiIHsgNzc6MjIgLSA3NzoxMTkgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVu
Y3Rpb24gIngyIiB7IDgwOjI4IC0gODQ6NSB9Ci1mdW5jdGlvbiAieDJhIiB7IDgyOjMwIC0gODI6
MTIyIH0KK2Z1bmN0aW9uICJ4MiIgeyA4MDoyMiAtIDg0OjUgfQorZnVuY3Rpb24gIngyYSIgeyA4
MjoyNyAtIDgyOjEyMiB9CiBldmFsIHsgMToxIC0gMTo1NiB9Ci1mdW5jdGlvbiAieDMiIHsgODc6
MjggLSA5OTo1IH0KLWZ1bmN0aW9uICJ4M2EiIHsgODk6MzAgLSA5Nzo5IH0KLWZ1bmN0aW9uICJ4
M2IiIHsgOTE6MzQgLSA5NToxMyB9Ci1ldmFsIHsgMToxIC0gMTo1NiB9Ci1mdW5jdGlvbiAieDQi
IHsgMTAyOjI4IC0gMTAyOjgzIH0KLWZ1bmN0aW9uICJ4NGEiIHsgMTAyOjYxIC0gMTAyOjYyIH0K
LWZ1bmN0aW9uICJ4NSIgeyAxMDQ6MjggLSAxMDQ6MTYzIH0KLWZ1bmN0aW9uICJ4NWEiIHsgMTA0
OjYxIC0gMTA0OjE1MyB9Ci1ldmFsIHsgMToxIC0gMTo1NiB9Ci1mdW5jdGlvbiAieDYiIHsgMTA2
OjI4IC0gMTA2OjIwNyB9Ci1mdW5jdGlvbiAieDZhIiB7IDEwNjo2MSAtIDEwNjoxOTcgfQotZnVu
Y3Rpb24gIng2YiIgeyAxMDY6OTUgLSAxMDY6MTg3IH0KK2Z1bmN0aW9uICJ4MyIgeyA4NzoyMiAt
IDk5OjUgfQorZnVuY3Rpb24gIngzYSIgeyA4OToyNyAtIDk3OjkgfQorZnVuY3Rpb24gIngzYiIg
eyA5MTozMSAtIDk1OjEzIH0KK2V2YWwgeyAxOjEgLSAxOjU2IH0KK2Z1bmN0aW9uICJ4NCIgeyAx
MDI6MjIgLSAxMDI6ODMgfQorZnVuY3Rpb24gIng0YSIgeyAxMDI6NTggLSAxMDI6NjIgfQorZnVu
Y3Rpb24gIng1IiB7IDEwNDoyMiAtIDEwNDoxNjMgfQorZnVuY3Rpb24gIng1YSIgeyAxMDQ6NTgg
LSAxMDQ6MTUzIH0KK2V2YWwgeyAxOjEgLSAxOjU2IH0KK2Z1bmN0aW9uICJ4NiIgeyAxMDY6MjIg
LSAxMDY6MjA3IH0KK2Z1bmN0aW9uICJ4NmEiIHsgMTA2OjU4IC0gMTA2OjE5NyB9CitmdW5jdGlv
biAieDZiIiB7IDEwNjo5MiAtIDEwNjoxODcgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQogCiAgIElu
ZGVudGVkIEZ1bmN0aW9ucyBFeHByZXNzaW9ucyBpbiBhIGZ1bmN0aW9uOgotZnVuY3Rpb24gInhp
MSIgeyAxMTE6MzMgLSAxMTE6MTI1IH0KK2Z1bmN0aW9uICJ4aTEiIHsgMTExOjI3IC0gMTExOjEy
NSB9CiBldmFsIHsgMToxIC0gMTo1NiB9Ci1mdW5jdGlvbiAieGkyIiB7IDExNDozMyAtIDExODo5
IH0KLWZ1bmN0aW9uICJ4aTJhIiB7IDExNjozNSAtIDExNjoxMjggfQorZnVuY3Rpb24gInhpMiIg
eyAxMTQ6MjcgLSAxMTg6OSB9CitmdW5jdGlvbiAieGkyYSIgeyAxMTY6MzIgLSAxMTY6MTI4IH0K
IGV2YWwgeyAxOjEgLSAxOjU2IH0KLWZ1bmN0aW9uICJ4aTMiIHsgMTIxOjMzIC0gMTMzOjkgfQot
ZnVuY3Rpb24gInhpM2EiIHsgMTIzOjM1IC0gMTMxOjEzIH0KLWZ1bmN0aW9uICJ4aTNiIiB7IDEy
NTozOSAtIDEyOToxNyB9Ci1ldmFsIHsgMToxIC0gMTo1NiB9Ci1mdW5jdGlvbiAieGk0IiB7IDEz
NjozMyAtIDEzNjo5MiB9Ci1mdW5jdGlvbiAieGk0YSIgeyAxMzY6NjggLSAxMzY6NjkgfQotZnVu
Y3Rpb24gInhpNSIgeyAxMzg6MzMgLSAxMzg6MTcyIH0KLWZ1bmN0aW9uICJ4aTVhIiB7IDEzODo2
OCAtIDEzODoxNjEgfQotZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gInhpNiIgeyAxNDA6
MzMgLSAxNDA6MjE5IH0KLWZ1bmN0aW9uICJ4aTZhIiB7IDE0MDo2OCAtIDE0MDoyMDggfQotZnVu
Y3Rpb24gInhpNmIiIHsgMTQwOjEwNCAtIDE0MDoxOTcgfQorZnVuY3Rpb24gInhpMyIgeyAxMjE6
MjcgLSAxMzM6OSB9CitmdW5jdGlvbiAieGkzYSIgeyAxMjM6MzIgLSAxMzE6MTMgfQorZnVuY3Rp
b24gInhpM2IiIHsgMTI1OjM2IC0gMTI5OjE3IH0KK2V2YWwgeyAxOjEgLSAxOjU2IH0KK2Z1bmN0
aW9uICJ4aTQiIHsgMTM2OjI3IC0gMTM2OjkyIH0KK2Z1bmN0aW9uICJ4aTRhIiB7IDEzNjo2NSAt
IDEzNjo2OSB9CitmdW5jdGlvbiAieGk1IiB7IDEzODoyNyAtIDEzODoxNzIgfQorZnVuY3Rpb24g
InhpNWEiIHsgMTM4OjY1IC0gMTM4OjE2MSB9CitldmFsIHsgMToxIC0gMTo1NiB9CitmdW5jdGlv
biAieGk2IiB7IDE0MDoyNyAtIDE0MDoyMTkgfQorZnVuY3Rpb24gInhpNmEiIHsgMTQwOjY1IC0g
MTQwOjIwOCB9CitmdW5jdGlvbiAieGk2YiIgeyAxNDA6MTAxIC0gMTQwOjE5NyB9CiBldmFsIHsg
MToxIC0gMTo1NiB9CiAKICAgQW5vbnltb3VzIEZ1bmN0aW9uIERlY2xhcmF0aW9uIGluIGEgZnVu
Y3Rpb246Ci1mdW5jdGlvbiAiIiB7IDE0Njo1OCAtIDE1MTo1IH0KK2Z1bmN0aW9uICIiIHsgMTQ2
OjUyIC0gMTUxOjUgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQogCiAgIEdsb2JhbCBldmFsOgogZXZh
bCB7IDE6MSAtIDE6NTYgfQogCiAgIEdsb2JhbCBGdW5jdGlvbnMgRGVjbGFyYXRpb25zOgotZnVu
Y3Rpb24gImdmMSIgeyAxNjE6MTkgLSAxNjE6MTExIH0KK2Z1bmN0aW9uICJnZjEiIHsgMTYxOjEz
IC0gMTYxOjExMSB9CiBldmFsIHsgMToxIC0gMTo1NiB9Ci1mdW5jdGlvbiAiZ2YyIiB7IDE2NDox
OSAtIDE2ODoxIH0KLWZ1bmN0aW9uICJnZjJhIiB7IDE2NjoyMSAtIDE2NjoxMTQgfQorZnVuY3Rp
b24gImdmMiIgeyAxNjQ6MTMgLSAxNjg6MSB9CitmdW5jdGlvbiAiZ2YyYSIgeyAxNjY6MTggLSAx
NjY6MTE0IH0KIGV2YWwgeyAxOjEgLSAxOjU2IH0KLWZ1bmN0aW9uICJnZjMiIHsgMTcxOjE5IC0g
MTgzOjEgfQotZnVuY3Rpb24gImdmM2EiIHsgMTczOjIxIC0gMTgxOjUgfQotZnVuY3Rpb24gImdm
M2IiIHsgMTc1OjI1IC0gMTc5OjkgfQotZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gImdm
NCIgeyAxODY6MTkgLSAxODY6NzIgfQotZnVuY3Rpb24gImdmNGEiIHsgMTg2OjQ4IC0gMTg2OjQ5
IH0KLWZ1bmN0aW9uICJnZjUiIHsgMTg4OjE5IC0gMTg4OjE1MiB9Ci1mdW5jdGlvbiAiZ2Y1YSIg
eyAxODg6NDggLSAxODg6MTQxIH0KLWV2YWwgeyAxOjEgLSAxOjU2IH0KLWZ1bmN0aW9uICJnZjYi
IHsgMTkwOjE5IC0gMTkwOjE5MyB9Ci1mdW5jdGlvbiAiZ2Y2YSIgeyAxOTA6NDggLSAxOTA6MTgy
IH0KLWZ1bmN0aW9uICJnZjZiIiB7IDE5MDo3OCAtIDE5MDoxNzEgfQorZnVuY3Rpb24gImdmMyIg
eyAxNzE6MTMgLSAxODM6MSB9CitmdW5jdGlvbiAiZ2YzYSIgeyAxNzM6MTggLSAxODE6NSB9Citm
dW5jdGlvbiAiZ2YzYiIgeyAxNzU6MjIgLSAxNzk6OSB9CitldmFsIHsgMToxIC0gMTo1NiB9Citm
dW5jdGlvbiAiZ2Y0IiB7IDE4NjoxMyAtIDE4Njo3MiB9CitmdW5jdGlvbiAiZ2Y0YSIgeyAxODY6
NDUgLSAxODY6NDkgfQorZnVuY3Rpb24gImdmNSIgeyAxODg6MTMgLSAxODg6MTUyIH0KK2Z1bmN0
aW9uICJnZjVhIiB7IDE4ODo0NSAtIDE4ODoxNDEgfQorZXZhbCB7IDE6MSAtIDE6NTYgfQorZnVu
Y3Rpb24gImdmNiIgeyAxOTA6MTMgLSAxOTA6MTkzIH0KK2Z1bmN0aW9uICJnZjZhIiB7IDE5MDo0
NSAtIDE5MDoxODIgfQorZnVuY3Rpb24gImdmNmIiIHsgMTkwOjc1IC0gMTkwOjE3MSB9CiBldmFs
IHsgMToxIC0gMTo1NiB9CiAKICAgSW5kZW50ZWQgR2xvYmFsIEZ1bmN0aW9ucyBEZWNsYXJhdGlv
bnM6Ci1mdW5jdGlvbiAiZ2ZpMSIgeyAxOTU6MjQgLSAxOTU6MTE3IH0KK2Z1bmN0aW9uICJnZmkx
IiB7IDE5NToxOCAtIDE5NToxMTcgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gImdm
aTIiIHsgMTk4OjI0IC0gMjAyOjUgfQotZnVuY3Rpb24gImdmaTJhIiB7IDIwMDoyNiAtIDIwMDox
MjAgfQorZnVuY3Rpb24gImdmaTIiIHsgMTk4OjE4IC0gMjAyOjUgfQorZnVuY3Rpb24gImdmaTJh
IiB7IDIwMDoyMyAtIDIwMDoxMjAgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gImdm
aTMiIHsgMjA1OjI0IC0gMjE3OjUgfQotZnVuY3Rpb24gImdmaTNhIiB7IDIwNzoyNiAtIDIxNTo5
IH0KLWZ1bmN0aW9uICJnZmkzYiIgeyAyMDk6MzAgLSAyMTM6MTMgfQotZXZhbCB7IDE6MSAtIDE6
NTYgfQotZnVuY3Rpb24gImdmaTQiIHsgMjIwOjI0IC0gMjIwOjgxIH0KLWZ1bmN0aW9uICJnZmk0
YSIgeyAyMjA6NTUgLSAyMjA6NTYgfQotZnVuY3Rpb24gImdmaTUiIHsgMjIyOjI0IC0gMjIyOjE2
MSB9Ci1mdW5jdGlvbiAiZ2ZpNWEiIHsgMjIyOjU1IC0gMjIyOjE0OSB9Ci1ldmFsIHsgMToxIC0g
MTo1NiB9Ci1mdW5jdGlvbiAiZ2ZpNiIgeyAyMjQ6MjQgLSAyMjQ6MjA1IH0KLWZ1bmN0aW9uICJn
Zmk2YSIgeyAyMjQ6NTUgLSAyMjQ6MTkzIH0KLWZ1bmN0aW9uICJnZmk2YiIgeyAyMjQ6ODcgLSAy
MjQ6MTgxIH0KK2Z1bmN0aW9uICJnZmkzIiB7IDIwNToxOCAtIDIxNzo1IH0KK2Z1bmN0aW9uICJn
ZmkzYSIgeyAyMDc6MjMgLSAyMTU6OSB9CitmdW5jdGlvbiAiZ2ZpM2IiIHsgMjA5OjI3IC0gMjEz
OjEzIH0KK2V2YWwgeyAxOjEgLSAxOjU2IH0KK2Z1bmN0aW9uICJnZmk0IiB7IDIyMDoxOCAtIDIy
MDo4MSB9CitmdW5jdGlvbiAiZ2ZpNGEiIHsgMjIwOjUyIC0gMjIwOjU2IH0KK2Z1bmN0aW9uICJn
Zmk1IiB7IDIyMjoxOCAtIDIyMjoxNjEgfQorZnVuY3Rpb24gImdmaTVhIiB7IDIyMjo1MiAtIDIy
MjoxNDkgfQorZXZhbCB7IDE6MSAtIDE6NTYgfQorZnVuY3Rpb24gImdmaTYiIHsgMjI0OjE4IC0g
MjI0OjIwNSB9CitmdW5jdGlvbiAiZ2ZpNmEiIHsgMjI0OjUyIC0gMjI0OjE5MyB9CitmdW5jdGlv
biAiZ2ZpNmIiIHsgMjI0Ojg0IC0gMjI0OjE4MSB9CiBldmFsIHsgMToxIC0gMTo1NiB9CiAKICAg
R2xvYmFsIEZ1bmN0aW9ucyBFeHByZXNzaW9uczoKLWZ1bmN0aW9uICJneDEiIHsgMjI5OjI1IC0g
MjI5OjExNyB9CitmdW5jdGlvbiAiZ3gxIiB7IDIyOToxOSAtIDIyOToxMTcgfQogZXZhbCB7IDE6
MSAtIDE6NTYgfQotZnVuY3Rpb24gImd4MiIgeyAyMzI6MjUgLSAyMzY6MSB9Ci1mdW5jdGlvbiAi
Z3gyYSIgeyAyMzQ6MjcgLSAyMzQ6MTIwIH0KK2Z1bmN0aW9uICJneDIiIHsgMjMyOjE5IC0gMjM2
OjEgfQorZnVuY3Rpb24gImd4MmEiIHsgMjM0OjI0IC0gMjM0OjEyMCB9CiBldmFsIHsgMToxIC0g
MTo1NiB9Ci1mdW5jdGlvbiAiZ3gzIiB7IDIzOToyNSAtIDI1MToxIH0KLWZ1bmN0aW9uICJneDNh
IiB7IDI0MToyNyAtIDI0OTo1IH0KLWZ1bmN0aW9uICJneDNiIiB7IDI0MzozMSAtIDI0Nzo5IH0K
LWV2YWwgeyAxOjEgLSAxOjU2IH0KLWZ1bmN0aW9uICJneDQiIHsgMjU0OjI1IC0gMjU0Ojg0IH0K
LWZ1bmN0aW9uICJneDRhIiB7IDI1NDo2MCAtIDI1NDo2MSB9Ci1mdW5jdGlvbiAiZ3g1IiB7IDI1
NjoyNSAtIDI1NjoxNjQgfQotZnVuY3Rpb24gImd4NWEiIHsgMjU2OjYwIC0gMjU2OjE1MyB9Ci1l
dmFsIHsgMToxIC0gMTo1NiB9Ci1mdW5jdGlvbiAiZ3g2IiB7IDI1ODoyNSAtIDI1ODoyMTEgfQot
ZnVuY3Rpb24gImd4NmEiIHsgMjU4OjYwIC0gMjU4OjIwMCB9Ci1mdW5jdGlvbiAiZ3g2YiIgeyAy
NTg6OTYgLSAyNTg6MTg5IH0KK2Z1bmN0aW9uICJneDMiIHsgMjM5OjE5IC0gMjUxOjEgfQorZnVu
Y3Rpb24gImd4M2EiIHsgMjQxOjI0IC0gMjQ5OjUgfQorZnVuY3Rpb24gImd4M2IiIHsgMjQzOjI4
IC0gMjQ3OjkgfQorZXZhbCB7IDE6MSAtIDE6NTYgfQorZnVuY3Rpb24gImd4NCIgeyAyNTQ6MTkg
LSAyNTQ6ODQgfQorZnVuY3Rpb24gImd4NGEiIHsgMjU0OjU3IC0gMjU0OjYxIH0KK2Z1bmN0aW9u
ICJneDUiIHsgMjU2OjE5IC0gMjU2OjE2NCB9CitmdW5jdGlvbiAiZ3g1YSIgeyAyNTY6NTcgLSAy
NTY6MTUzIH0KK2V2YWwgeyAxOjEgLSAxOjU2IH0KK2Z1bmN0aW9uICJneDYiIHsgMjU4OjE5IC0g
MjU4OjIxMSB9CitmdW5jdGlvbiAiZ3g2YSIgeyAyNTg6NTcgLSAyNTg6MjAwIH0KK2Z1bmN0aW9u
ICJneDZiIiB7IDI1ODo5MyAtIDI1ODoxODkgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQogCiAgIElu
ZGVudGVkIEZ1bmN0aW9ucyBEZWNsYXJhdGlvbnM6Ci1mdW5jdGlvbiAiZ3hpMSIgeyAyNjM6MzAg
LSAyNjM6MTIzIH0KK2Z1bmN0aW9uICJneGkxIiB7IDI2MzoyNCAtIDI2MzoxMjMgfQogZXZhbCB7
IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gImd4aTIiIHsgMjY2OjMwIC0gMjcwOjUgfQotZnVuY3Rp
b24gImd4aTJhIiB7IDI2ODozMiAtIDI2ODoxMjYgfQorZnVuY3Rpb24gImd4aTIiIHsgMjY2OjI0
IC0gMjcwOjUgfQorZnVuY3Rpb24gImd4aTJhIiB7IDI2ODoyOSAtIDI2ODoxMjYgfQogZXZhbCB7
IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gImd4aTMiIHsgMjczOjMwIC0gMjg1OjUgfQotZnVuY3Rp
b24gImd4aTNhIiB7IDI3NTozMiAtIDI4Mzo5IH0KLWZ1bmN0aW9uICJneGkzYiIgeyAyNzc6MzYg
LSAyODE6MTMgfQotZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gImd4aTQiIHsgMjg4OjMw
IC0gMjg4OjkzIH0KLWZ1bmN0aW9uICJneGk0YSIgeyAyODg6NjcgLSAyODg6NjggfQotZnVuY3Rp
b24gImd4aTUiIHsgMjkwOjMwIC0gMjkwOjE3MyB9Ci1mdW5jdGlvbiAiZ3hpNWEiIHsgMjkwOjY3
IC0gMjkwOjE2MSB9Ci1ldmFsIHsgMToxIC0gMTo1NiB9Ci1mdW5jdGlvbiAiZ3hpNiIgeyAyOTI6
MzAgLSAyOTI6MjIzIH0KLWZ1bmN0aW9uICJneGk2YSIgeyAyOTI6NjcgLSAyOTI6MjExIH0KLWZ1
bmN0aW9uICJneGk2YiIgeyAyOTI6MTA1IC0gMjkyOjE5OSB9CitmdW5jdGlvbiAiZ3hpMyIgeyAy
NzM6MjQgLSAyODU6NSB9CitmdW5jdGlvbiAiZ3hpM2EiIHsgMjc1OjI5IC0gMjgzOjkgfQorZnVu
Y3Rpb24gImd4aTNiIiB7IDI3NzozMyAtIDI4MToxMyB9CitldmFsIHsgMToxIC0gMTo1NiB9Citm
dW5jdGlvbiAiZ3hpNCIgeyAyODg6MjQgLSAyODg6OTMgfQorZnVuY3Rpb24gImd4aTRhIiB7IDI4
ODo2NCAtIDI4ODo2OCB9CitmdW5jdGlvbiAiZ3hpNSIgeyAyOTA6MjQgLSAyOTA6MTczIH0KK2Z1
bmN0aW9uICJneGk1YSIgeyAyOTA6NjQgLSAyOTA6MTYxIH0KK2V2YWwgeyAxOjEgLSAxOjU2IH0K
K2Z1bmN0aW9uICJneGk2IiB7IDI5MjoyNCAtIDI5MjoyMjMgfQorZnVuY3Rpb24gImd4aTZhIiB7
IDI5Mjo2NCAtIDI5MjoyMTEgfQorZnVuY3Rpb24gImd4aTZiIiB7IDI5MjoxMDIgLSAyOTI6MTk5
IH0KIGV2YWwgeyAxOjEgLSAxOjU2IH0KIAogICBBbm9ueW1vdXMgR2xvYmFsIEZ1bmN0aW9uIERl
Y2xhcmF0aW9uczoKLWZ1bmN0aW9uICIiIHsgMjk5OjU2IC0gMzA0OjEgfQorZnVuY3Rpb24gIiIg
eyAyOTk6NTAgLSAzMDQ6MSB9CiBldmFsIHsgMToxIC0gMTo1NiB9CiAKICAgRnVuY3Rpb24gRGVj
bGFyYXRpb25zIGluIGFuIGV2YWw6CiBldmFsIHsgMToxIC0gMTY6NyB9Ci1mdW5jdGlvbiAiZWYx
IiB7IDM6MjAgLSAxNDo1IH0KLWZ1bmN0aW9uICJlZjFhIiB7IDU6MjUgLSAxMjo5IH0KLWZ1bmN0
aW9uICJlZjFiIiB7IDc6MjkgLSAxMDoxMyB9CitmdW5jdGlvbiAiZWYxIiB7IDM6MTcgLSAxNDo1
IH0KK2Z1bmN0aW9uICJlZjFhIiB7IDU6MjIgLSAxMjo5IH0KK2Z1bmN0aW9uICJlZjFiIiB7IDc6
MjYgLSAxMDoxMyB9CiBldmFsIHsgMToxIC0gMTo1NiB9CiBldmFsIHsgMToxIC0gMToyMjUgfQot
ZnVuY3Rpb24gImVmMiIgeyAxOjU5IC0gMToyMTcgfQotZnVuY3Rpb24gImVmMmEiIHsgMTo4OCAt
IDE6MjA3IH0KLWZ1bmN0aW9uICJlZjJiIiB7IDE6MTE4IC0gMToxOTcgfQorZnVuY3Rpb24gImVm
MiIgeyAxOjU2IC0gMToyMTcgfQorZnVuY3Rpb24gImVmMmEiIHsgMTo4NSAtIDE6MjA3IH0KK2Z1
bmN0aW9uICJlZjJiIiB7IDE6MTE1IC0gMToxOTcgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQogZXZh
bCB7IDE6MSAtIDE3OjggfQotZnVuY3Rpb24gImVmaTEiIHsgNDoyMSAtIDE1OjUgfQotZnVuY3Rp
b24gImVmaTFhIiB7IDY6MjYgLSAxMzo5IH0KLWZ1bmN0aW9uICJlZmkxYiIgeyA4OjMwIC0gMTE6
MTMgfQorZnVuY3Rpb24gImVmaTEiIHsgNDoxOCAtIDE1OjUgfQorZnVuY3Rpb24gImVmaTFhIiB7
IDY6MjMgLSAxMzo5IH0KK2Z1bmN0aW9uICJlZmkxYiIgeyA4OjI3IC0gMTE6MTMgfQogZXZhbCB7
IDE6MSAtIDE6NTYgfQogZXZhbCB7IDE6MSAtIDE6MjM0IH0KLWZ1bmN0aW9uICJlZmkyIiB7IDE6
NjAgLSAxOjIyNSB9Ci1mdW5jdGlvbiAiZWZpMmEiIHsgMTo5MSAtIDE6MjE0IH0KLWZ1bmN0aW9u
ICJlZmkyYiIgeyAxOjEyMyAtIDE6MjAzIH0KK2Z1bmN0aW9uICJlZmkyIiB7IDE6NTcgLSAxOjIy
NSB9CitmdW5jdGlvbiAiZWZpMmEiIHsgMTo4OCAtIDE6MjE0IH0KK2Z1bmN0aW9uICJlZmkyYiIg
eyAxOjEyMCAtIDE6MjAzIH0KIGV2YWwgeyAxOjEgLSAxOjU2IH0KIAogICBGdW5jdGlvbiBFeHBy
ZXNzaW9ucyBpbiBhbiBldmFsOgogZXZhbCB7IDE6MSAtIDE2OjcgfQotZnVuY3Rpb24gImV4MSIg
eyAzOjI2IC0gMTQ6NSB9Ci1mdW5jdGlvbiAiZXgxYSIgeyA1OjMxIC0gMTI6OSB9Ci1mdW5jdGlv
biAiZXgxYiIgeyA3OjM1IC0gMTA6MTMgfQorZnVuY3Rpb24gImV4MSIgeyAzOjIzIC0gMTQ6NSB9
CitmdW5jdGlvbiAiZXgxYSIgeyA1OjI4IC0gMTI6OSB9CitmdW5jdGlvbiAiZXgxYiIgeyA3OjMy
IC0gMTA6MTMgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQogZXZhbCB7IDE6MSAtIDE6MjQ2IH0KLWZ1
bmN0aW9uICJleDIiIHsgMTo2NSAtIDE6MjM3IH0KLWZ1bmN0aW9uICJleDJhIiB7IDE6MTAwIC0g
MToyMjYgfQotZnVuY3Rpb24gImV4MmIiIHsgMToxMzYgLSAxOjIxNSB9CitmdW5jdGlvbiAiZXgy
IiB7IDE6NjIgLSAxOjIzNyB9CitmdW5jdGlvbiAiZXgyYSIgeyAxOjk3IC0gMToyMjYgfQorZnVu
Y3Rpb24gImV4MmIiIHsgMToxMzMgLSAxOjIxNSB9CiBldmFsIHsgMToxIC0gMTo1NiB9CiBldmFs
IHsgMToxIC0gMTc6OCB9Ci1mdW5jdGlvbiAiZXhpMSIgeyA0OjI3IC0gMTU6NSB9Ci1mdW5jdGlv
biAiZXhpMWEiIHsgNjozMiAtIDEzOjkgfQotZnVuY3Rpb24gImV4aTFiIiB7IDg6MzYgLSAxMTox
MyB9CitmdW5jdGlvbiAiZXhpMSIgeyA0OjI0IC0gMTU6NSB9CitmdW5jdGlvbiAiZXhpMWEiIHsg
NjoyOSAtIDEzOjkgfQorZnVuY3Rpb24gImV4aTFiIiB7IDg6MzMgLSAxMToxMyB9CiBldmFsIHsg
MToxIC0gMTo1NiB9CiBldmFsIHsgMToxIC0gMToyNTUgfQotZnVuY3Rpb24gImV4aTIiIHsgMTo2
NiAtIDE6MjQ1IH0KLWZ1bmN0aW9uICJleGkyYSIgeyAxOjEwMyAtIDE6MjMzIH0KLWZ1bmN0aW9u
ICJleGkyYiIgeyAxOjE0MSAtIDE6MjIxIH0KK2Z1bmN0aW9uICJleGkyIiB7IDE6NjMgLSAxOjI0
NSB9CitmdW5jdGlvbiAiZXhpMmEiIHsgMToxMDAgLSAxOjIzMyB9CitmdW5jdGlvbiAiZXhpMmIi
IHsgMToxMzggLSAxOjIyMSB9CiBldmFsIHsgMToxIC0gMTo1NiB9CiAKICAgbmV3IEZ1bmN0aW9u
IE9iamVjdDoKLWZ1bmN0aW9uICJhbm9ueW1vdXMiIHsgMToyNyAtIDI6MjI4IH0KLWZ1bmN0aW9u
ICJuZjFhIiB7IDI6NjAgLSAyOjIxOSB9Ci1mdW5jdGlvbiAibmYxYiIgeyAyOjkwIC0gMjoyMDkg
fQotZnVuY3Rpb24gIm5mMWMiIHsgMjoxMjAgLSAyOjE5OSB9Ci1ldmFsIHsgMToxIC0gMTo1NiB9
Ci1mdW5jdGlvbiAiYW5vbnltb3VzIiB7IDE6MjcgLSAxODo4IH0KLWZ1bmN0aW9uICJuZjJhIiB7
IDU6MjEgLSAxNjo1IH0KLWZ1bmN0aW9uICJuZjJiIiB7IDc6MjUgLSAxNDo5IH0KLWZ1bmN0aW9u
ICJuZjJjIiB7IDk6MjkgLSAxMjoxMyB9Ci1ldmFsIHsgMToxIC0gMTo1NiB9Ci1mdW5jdGlvbiAi
YW5vbnltb3VzIiB7IDE6MjcgLSAyOjIyOCB9Ci1mdW5jdGlvbiAibmYxYSIgeyAyOjYwIC0gMjoy
MTkgfQotZnVuY3Rpb24gIm5mMWIiIHsgMjo5MCAtIDI6MjA5IH0KLWZ1bmN0aW9uICJuZjFjIiB7
IDI6MTIwIC0gMjoxOTkgfQotZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gImFub255bW91
cyIgeyAxOjI3IC0gMjoyMzcgfQotZnVuY3Rpb24gIm5maTFhIiB7IDI6NjEgLSAyOjIyNyB9Ci1m
dW5jdGlvbiAibmZpMWIiIHsgMjo5MyAtIDI6MjE2IH0KLWZ1bmN0aW9uICJuZmkxYyIgeyAyOjEy
NSAtIDI6MjA1IH0KLWV2YWwgeyAxOjEgLSAxOjU2IH0KLWZ1bmN0aW9uICJhbm9ueW1vdXMiIHsg
MToyNyAtIDE4OjggfQotZnVuY3Rpb24gIm5mMmEiIHsgNToyMSAtIDE2OjUgfQotZnVuY3Rpb24g
Im5mMmIiIHsgNzoyNSAtIDE0OjkgfQotZnVuY3Rpb24gIm5mMmMiIHsgOToyOSAtIDEyOjEzIH0K
LWV2YWwgeyAxOjEgLSAxOjU2IH0KLWZ1bmN0aW9uICJhbm9ueW1vdXMiIHsgMToyNyAtIDE4Ojkg
fQotZnVuY3Rpb24gIm5maTJhIiB7IDU6MjIgLSAxNjo1IH0KLWZ1bmN0aW9uICJuZmkyYiIgeyA3
OjI2IC0gMTQ6OSB9Ci1mdW5jdGlvbiAibmZpMmMiIHsgOTozMCAtIDEyOjEzIH0KK2Z1bmN0aW9u
ICJhbm9ueW1vdXMiIHsgMToyMCAtIDI6MjI4IH0KK2Z1bmN0aW9uICJuZjFhIiB7IDI6NTcgLSAy
OjIxOSB9CitmdW5jdGlvbiAibmYxYiIgeyAyOjg3IC0gMjoyMDkgfQorZnVuY3Rpb24gIm5mMWMi
IHsgMjoxMTcgLSAyOjE5OSB9CitldmFsIHsgMToxIC0gMTo1NiB9CitmdW5jdGlvbiAiYW5vbnlt
b3VzIiB7IDE6MjAgLSAxODo4IH0KK2Z1bmN0aW9uICJuZjJhIiB7IDU6MTggLSAxNjo1IH0KK2Z1
bmN0aW9uICJuZjJiIiB7IDc6MjIgLSAxNDo5IH0KK2Z1bmN0aW9uICJuZjJjIiB7IDk6MjYgLSAx
MjoxMyB9CitldmFsIHsgMToxIC0gMTo1NiB9CitmdW5jdGlvbiAiYW5vbnltb3VzIiB7IDE6MjAg
LSAyOjIyOCB9CitmdW5jdGlvbiAibmYxYSIgeyAyOjU3IC0gMjoyMTkgfQorZnVuY3Rpb24gIm5m
MWIiIHsgMjo4NyAtIDI6MjA5IH0KK2Z1bmN0aW9uICJuZjFjIiB7IDI6MTE3IC0gMjoxOTkgfQor
ZXZhbCB7IDE6MSAtIDE6NTYgfQorZnVuY3Rpb24gImFub255bW91cyIgeyAxOjIwIC0gMjoyMzcg
fQorZnVuY3Rpb24gIm5maTFhIiB7IDI6NTggLSAyOjIyNyB9CitmdW5jdGlvbiAibmZpMWIiIHsg
Mjo5MCAtIDI6MjE2IH0KK2Z1bmN0aW9uICJuZmkxYyIgeyAyOjEyMiAtIDI6MjA1IH0KK2V2YWwg
eyAxOjEgLSAxOjU2IH0KK2Z1bmN0aW9uICJhbm9ueW1vdXMiIHsgMToyMCAtIDE4OjggfQorZnVu
Y3Rpb24gIm5mMmEiIHsgNToxOCAtIDE2OjUgfQorZnVuY3Rpb24gIm5mMmIiIHsgNzoyMiAtIDE0
OjkgfQorZnVuY3Rpb24gIm5mMmMiIHsgOToyNiAtIDEyOjEzIH0KK2V2YWwgeyAxOjEgLSAxOjU2
IH0KK2Z1bmN0aW9uICJhbm9ueW1vdXMiIHsgMToyMCAtIDE4OjkgfQorZnVuY3Rpb24gIm5maTJh
IiB7IDU6MTkgLSAxNjo1IH0KK2Z1bmN0aW9uICJuZmkyYiIgeyA3OjIzIC0gMTQ6OSB9CitmdW5j
dGlvbiAibmZpMmMiIHsgOToyNyAtIDEyOjEzIH0KIGV2YWwgeyAxOjEgLSAxOjU2IH0KIAogUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256977</attachid>
            <date>2015-07-17 10:53:18 -0700</date>
            <delta_ts>2015-07-17 11:29:39 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>198888</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg2OTU0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxMiBA
QAorMjAxNS0wNy0xNyAgU2FhbSBiYXJhdGkgIDxzYWFtYmFyYXRpMUBnbWFpbC5jb20+CisKKyAg
ICAgICAgRnVuY3Rpb24gcGFyYW1ldGVycyBzaG91bGQgYmUgcGFyc2VkIGluIHRoZSBzYW1lIHBh
cnNlciBhcmVuYSBhcyB0aGUgZnVuY3Rpb24gYm9keQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1OTk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBjaGFuZ2VzIGhvdyBmdW5jdGlvbnMg
YXJlIHBhcnNlZCBpbiBKU0MuIEEgZnVuY3Rpb24ncworICAgICAgICBwYXJhbWV0ZXJzIGFyZSBu
b3cgcGFyc2VkIGluIHRoZSBzYW1lIGFyZW5hIGFzIHRoZSBmdW5jdGlvbiBpdHNlbGYuCisgICAg
ICAgIFRoaXMgYWxsb3dzIHVzIHRvIGFyZW5hIGFsbG9jYXRlIGFsbCBkZXN0cnVjdHVyaW5nIEFT
VCBub2RlcyBhbmQKKyAgICAgICAgdGhlIEZ1bmN0aW9uUGFyYW1ldGVycyBub2RlLiBUaGlzIHdp
bGwgaGVscCBtYWtlIGltcGxlbWVudGluZyBFUzYKKyAgICAgICAgZGVmYXVsdCBwYXJhbWV0ZXIg
dmFsdWVzIHNhbmUuCisKKyAgICAgICAgQSBzb3VyY2UgY29kZSB0aGF0IHJlcHJlc2VudHMgYSBm
dW5jdGlvbiBub3cgaW5jbHVkZXMgdGhlIHRleHQgb2YgdGhlIGZ1bmN0aW9uJ3MgCisgICAgICAg
IHBhcmFtZXRlcnMuIFRoZSBzdGFydGluZyBvZmZzZXQgaXMgYXQgdGhlIG9wZW5pbmcgcGFyZW50
aGVzaXMgb2YgdGhlIHBhcmFtZXRlcgorICAgICAgICBsaXN0IG9yIGF0IHRoZSBzdGFydGluZyBj
aGFyYWN0ZXIgb2YgdGhlIGlkZW50aWZpZXIgZm9yIGFycm93IGZ1bmN0aW9ucyB0aGF0CisgICAg
ICAgIGhhdmUgc2luZ2xlIGFyZ3VtZW50cyBhbmQgZG9uJ3Qgc3RhcnQgd2l0aCBwYXJlbnRoZXNp
cy4KKworICAgICAgICBGb3IgZXhhbXBsZToKKworICAgICAgICAiZnVuY3Rpb24gKHBhcmFtMSwg
cGFyYW0yKSB7IC4uLiB9IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVGhpcyBvZmZzZXQgdXNlZCB0byBi
ZSB0aGUgc3RhcnRpbmcgb2Zmc2V0IG9mIGEgZnVuY3Rpb24ncyBTb3VyY2VDb2RlCisgICAgICAg
ICAgICAgICAgICBeCisgICAgICAgICAgICAgICAgICB8IFRoaXMgaXMgdGhlIG5ldyBzdGFydGlu
ZyBvZmZzZXQgZm9yIGEgZnVuY3Rpb24ncyBTb3VyY2VDb2RlLgorCisgICAgICAgIFRoaXMgcmVx
dWlyZXMgdXMgdG8gY2hhbmdlIGhvdyBzb21lIG9mZnNldHMgYXJlIGNhbGN1bGF0ZWQKKyAgICAg
ICAgYW5kIGFsc28gcmVxdWlyZXMgdXMgdG8gcmVwb3J0IHNvbWUgZGlmZmVyZW50IGxpbmUgbnVt
YmVycyBmb3IgaW50ZXJuYWwKKyAgICAgICAgbWV0cmljcyB0aGF0IHVzZSBhIFNvdXJjZUNvZGUn
cyBzdGFydGluZyBsaW5lIGFuZCBjb2x1bW4gbnVtYmVycy4KKworICAgICAgICBUaGlzIHBhdGNo
IGFsc28gZG9lcyBhIGJpdCBvZiBjbGVhbnVwIHdpdGggcmVnYXJkcyB0byBob3cKKyAgICAgICAg
ZnVuY3Rpb25zIGFyZSBwYXJzZWQgaW4gZ2VuZXJhbCAoZXNwZWNpYWxseSBhcnJvdyBmdW5jdGlv
bnMpLgorICAgICAgICBJdCByZW1vdmVzIHNvbWUgdW5uZWNlc3NhcnkgI2lmZGVmcyBhbmQgdGhl
IGxpa2VzIGZvciBhcnJvdworICAgICAgICB0byBtYWtlIHRoaW5ncyBjbGVhcmVyIGFuZCBtb3Jl
IGRlbGliZXJhdGUuCisKKyAgICAgICAgKiBBUEkvSlNTY3JpcHRSZWYuY3BwOgorICAgICAgICAo
cGFyc2VTY3JpcHQpOgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHA6
CisgICAgICAgIChKU0M6OkJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhlY3V0YWJsZUludGVy
bmFsKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6CisgICAgICAg
IChKU0M6OmdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAg
ICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbik6CisgICAg
ICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpwYXJhbWV0ZXJDb3VudCk6IERl
bGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAg
KiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6RGVzdHJ1Y3R1
cmluZ0Fzc2lnbm1lbnROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjphc3NpZ25E
ZWZhdWx0VmFsdWVJZlVuZGVmaW5lZCk6CisgICAgICAgIChKU0M6OkFycmF5UGF0dGVybk5vZGU6
OmNvbGxlY3RCb3VuZElkZW50aWZpZXJzKToKKyAgICAgICAgKEpTQzo6RGVzdHJ1Y3R1cmluZ1Bh
dHRlcm5Ob2RlOjp+RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwYXJzZXIvQVNUQnVpbGRlci5oOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVD
bGFzc0V4cHIpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGdW5jdGlvbkV4cHIp
OgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGdW5jdGlvbkJvZHkpOgorICAgICAg
ICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBcnJvd0Z1bmN0aW9uRXhwcik6CisgICAgICAgIChK
U0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkpOgorICAgICAgICAo
SlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVFbGVtZW50TGlzdCk6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6OmNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QpOgorICAgICAgICAoSlNDOjpBU1RCdWls
ZGVyOjphcHBlbmRQYXJhbWV0ZXIpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVD
bGF1c2UpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVDbGF1c2VMaXN0KToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQpOgorICAgICAg
ICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGb3JJbkxvb3ApOgorICAgICAgICAoSlNDOjpBU1RC
dWlsZGVyOjpjcmVhdGVGb3JPZkxvb3ApOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjppc1Jl
c29sdmUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVEZXN0cnVjdHVyaW5nQXNz
aWdubWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUFycmF5UGF0dGVybik6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmFwcGVuZEFycmF5UGF0dGVyblNraXBFbnRyeSk6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmFwcGVuZEFycmF5UGF0dGVybkVudHJ5KToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6YXBwZW5kQXJyYXlQYXR0ZXJuUmVzdEVudHJ5KToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6ZmluaXNoQXJyYXlQYXR0ZXJuKToKKyAgICAgICAgKEpT
Qzo6QVNUQnVpbGRlcjo6Y3JlYXRlT2JqZWN0UGF0dGVybik6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6OmFwcGVuZE9iamVjdFBhdHRlcm5FbnRyeSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxk
ZXI6OmNyZWF0ZUJpbmRpbmdMb2NhdGlvbik6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OnNl
dEVuZE9mZnNldCk6CisgICAgICAgICogcGFyc2VyL0xleGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
TGV4ZXI8VD46OkxleGVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46Om5leHRUb2tlbklzQ29s
b24pOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6c2V0VG9rZW5Qb3NpdGlvbik6CisgICAgICAg
IChKU0M6OkxleGVyPFQ+OjpsZXgpOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6Y2xlYXIpOgor
ICAgICAgICAqIHBhcnNlci9MZXhlci5oOgorICAgICAgICAoSlNDOjpMZXhlcjo6c2V0SXNSZXBh
cnNpbmdGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkxleGVyOjppc1JlcGFyc2luZ0Z1bmN0aW9u
KToKKyAgICAgICAgKEpTQzo6TGV4ZXI6OmxpbmVOdW1iZXIpOgorICAgICAgICAoSlNDOjpMZXhl
cjo6c2V0SXNSZXBhcnNpbmcpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpMZXhlcjo6aXNSZXBh
cnNpbmcpOiBEZWxldGVkLgorICAgICAgICAqIHBhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmg6Cisg
ICAgICAgIChKU0M6OlRyeU5vZGU6OlRyeU5vZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvblBh
cmFtZXRlcnM6OkZ1bmN0aW9uUGFyYW1ldGVycyk6CisgICAgICAgIChKU0M6OkZ1bmNFeHByTm9k
ZTo6RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY0RlY2xOb2RlOjpGdW5jRGVjbE5v
ZGUpOgorICAgICAgICAoSlNDOjpBcnJheVBhdHRlcm5Ob2RlOjpBcnJheVBhdHRlcm5Ob2RlKToK
KyAgICAgICAgKEpTQzo6T2JqZWN0UGF0dGVybk5vZGU6Ok9iamVjdFBhdHRlcm5Ob2RlKToKKyAg
ICAgICAgKEpTQzo6QmluZGluZ05vZGU6OkJpbmRpbmdOb2RlKToKKyAgICAgICAgKEpTQzo6RGVz
dHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlOjpEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5vZGUpOgor
ICAgICAgICAoSlNDOjpQYXJhbWV0ZXJOb2RlOjpQYXJhbWV0ZXJOb2RlKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6QXJyYXlQYXR0ZXJuTm9kZTo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6T2JqZWN0UGF0dGVybk5vZGU6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkJpbmRpbmdOb2RlOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5j
cHA6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpQcm9ncmFtTm9kZSk6CisgICAgICAgIChK
U0M6OkV2YWxOb2RlOjpFdmFsTm9kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQm9keU5vZGU6
OkZ1bmN0aW9uQm9keU5vZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkJvZHlOb2RlOjpmaW5p
c2hQYXJzaW5nKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Ob2RlOjpGdW5jdGlvbk5vZGUpOgor
ICAgICAgICAoSlNDOjpGdW5jdGlvbk5vZGU6OmZpbmlzaFBhcnNpbmcpOgorICAgICAgICAoSlND
OjpGdW5jdGlvblBhcmFtZXRlcnM6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZ1
bmN0aW9uUGFyYW1ldGVyczo6RnVuY3Rpb25QYXJhbWV0ZXJzKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6RnVuY3Rpb25QYXJhbWV0ZXJzOjp+RnVuY3Rpb25QYXJhbWV0ZXJzKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OnN0
YXJ0Q29sdW1uKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OmVuZENvbHVtbik6CisgICAg
ICAgIChKU0M6OkV2YWxOb2RlOjpzdGFydENvbHVtbik6CisgICAgICAgIChKU0M6OkV2YWxOb2Rl
OjplbmRDb2x1bW4pOgorICAgICAgICAoSlNDOjpGdW5jdGlvblBhcmFtZXRlcnM6OnNpemUpOgor
ICAgICAgICAoSlNDOjpGdW5jdGlvblBhcmFtZXRlcnM6OmF0KToKKyAgICAgICAgKEpTQzo6RnVu
Y3Rpb25QYXJhbWV0ZXJzOjphcHBlbmQpOgorICAgICAgICAoSlNDOjpGdW5jRXhwck5vZGU6OmJv
ZHkpOgorICAgICAgICAoSlNDOjpEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU6On5EZXN0cnVjdHVy
aW5nUGF0dGVybk5vZGUpOgorICAgICAgICAoSlNDOjpEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU6
OmlzQmluZGluZ05vZGUpOgorICAgICAgICAoSlNDOjpEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU6
OmVtaXREaXJlY3RCaW5kaW5nKToKKyAgICAgICAgKEpTQzo6QXJyYXlQYXR0ZXJuTm9kZTo6YXBw
ZW5kSW5kZXgpOgorICAgICAgICAoSlNDOjpPYmplY3RQYXR0ZXJuTm9kZTo6YXBwZW5kRW50cnkp
OgorICAgICAgICAoSlNDOjpCaW5kaW5nTm9kZTo6Ym91bmRQcm9wZXJ0eSk6CisgICAgICAgIChK
U0M6OkJpbmRpbmdOb2RlOjpkaXZvdFN0YXJ0KToKKyAgICAgICAgKEpTQzo6QmluZGluZ05vZGU6
OmRpdm90RW5kKToKKyAgICAgICAgKEpTQzo6RGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlOjpi
aW5kaW5ncyk6CisgICAgICAgIChKU0M6OkZ1bmNEZWNsTm9kZTo6Ym9keSk6CisgICAgICAgIChK
U0M6OlBhcmFtZXRlck5vZGU6OnBhdHRlcm4pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpQYXJh
bWV0ZXJOb2RlOjpuZXh0UGFyYW0pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGdW5jdGlvblBh
cmFtZXRlcnM6OnBhdHRlcm5zKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNw
cDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OlBhcnNlcik6CisgICAgICAgIChK
U0M6OlBhcnNlcjxMZXhlclR5cGU+Ojp+UGFyc2VyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6
YWxsb3dBdXRvbWF0aWNTZW1pY29sb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VTb3VyY2VFbGVtZW50cyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+
OjpjcmVhdGVCaW5kaW5nUGF0dGVybik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUFycm93RnVuY3Rpb25TaW5nbGVFeHByZXNzaW9uQm9keVNvdXJjZUVsZW1lbnRzKToK
KyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnRyeVBhcnNlRGVzdHJ1Y3R1cmluZ1Bh
dHRlcm5FeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNl
U3dpdGNoQ2xhdXNlcyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVN3
aXRjaERlZmF1bHRDbGF1c2UpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VCbG9ja1N0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZvcm1h
bFBhcmFtZXRlcnMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5j
dGlvbkJvZHkpOgorICAgICAgICAoSlNDOjpzdHJpbmdGb3JGdW5jdGlvbk1vZGUpOgorICAgICAg
ICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvblBhcmFtZXRlcnMpOgorICAg
ICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8pOgorICAgICAg
ICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKToKKyAg
ICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3MpOgorICAgICAgICAoSlND
OjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcmltYXJ5RXhwcmVzc2lvbik6CisgICAgICAgIChK
U0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlc3Npb24pOgorICAgICAgICAo
SlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbik6Cisg
ICAgICAgIChKU0M6Om9wZXJhdG9yU3RyaW5nKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVy
VHlwZT46OnBhcnNlQXJyb3dGdW5jdGlvblNpbmdsZUV4cHJlc3Npb25Cb2R5KTogRGVsZXRlZC4K
KyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlBhcnNlcjo6cG9zaXRp
b25CZWZvcmVMYXN0TmV3bGluZSk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6bG9jYXRpb25CZWZv
cmVMYXN0VG9rZW4pOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmZpbmRDYWNoZWRGdW5jdGlvbklu
Zm8pOgorICAgICAgICAoSlNDOjpQYXJzZXI6Omlzb2ZUb2tlbik6CisgICAgICAgIChKU0M6OlBh
cnNlcjo6aXNFbmRPZkFycm93RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmlzQXJy
b3dGdW5jdGlvblBhcmFtdGVycyk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6dG9rZW5TdGFydCk6
CisgICAgICAgIChKU0M6OlBhcnNlcjo6aXNMRVRNYXNrZWRBc0lERU5UKToKKyAgICAgICAgKEpT
Qzo6UGFyc2VyOjphdXRvU2VtaUNvbG9uKToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpzZXRFbmRP
ZlN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6Y2FuUmVjdXJzZSk6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZSk6CisgICAgICAgIChKU0M6OnBhcnNlKToK
KyAgICAgICAgKiBwYXJzZXIvUGFyc2VyRnVuY3Rpb25JbmZvLmg6CisgICAgICAgICogcGFyc2Vy
L1BhcnNlck1vZGVzLmg6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uTmFtZUlzSW5TY29wZSk6Cisg
ICAgICAgICogcGFyc2VyL1NvdXJjZUNvZGUuaDoKKyAgICAgICAgKEpTQzo6bWFrZVNvdXJjZSk6
CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGU6OnN1YkV4cHJlc3Npb24pOgorICAgICAgICAoSlND
OjpTb3VyY2VDb2RlOjpzdWJBcnJvd0V4cHJlc3Npb24pOiBEZWxldGVkLgorICAgICAgICAqIHBh
cnNlci9Tb3VyY2VQcm92aWRlckNhY2hlLmg6CisgICAgICAgIChKU0M6OlNvdXJjZVByb3ZpZGVy
Q2FjaGU6OmdldCk6CisgICAgICAgICogcGFyc2VyL1NvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmg6
CisgICAgICAgIChKU0M6OlNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtOjplbmRGdW5jdGlvblRva2Vu
KToKKyAgICAgICAgKEpTQzo6U291cmNlUHJvdmlkZXJDYWNoZUl0ZW06OnVzZWRWYXJpYWJsZXMp
OgorICAgICAgICAoSlNDOjpTb3VyY2VQcm92aWRlckNhY2hlSXRlbTo6d3JpdHRlblZhcmlhYmxl
cyk6CisgICAgICAgIChKU0M6OlNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtOjpTb3VyY2VQcm92aWRl
ckNhY2hlSXRlbSk6CisgICAgICAgICogcGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAg
KEpTQzo6U3ludGF4Q2hlY2tlcjo6U3ludGF4Q2hlY2tlcik6CisgICAgICAgIChKU0M6OlN5bnRh
eENoZWNrZXI6OmNyZWF0ZUNsYXNzRXhwcik6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6
OmNyZWF0ZUZ1bmN0aW9uRXhwcik6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0
ZUZ1bmN0aW9uQm9keSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUFycm93
RnVuY3Rpb25FeHByKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6c2V0RnVuY3Rpb25O
YW1lU3RhcnQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVBcmd1bWVudHMp
OgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVQcm9wZXJ0eUxpc3QpOgorICAg
ICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVFbGVtZW50TGlzdCk6CisgICAgICAgIChK
U0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QpOgorICAgICAgICAo
SlNDOjpTeW50YXhDaGVja2VyOjphcHBlbmRQYXJhbWV0ZXIpOgorICAgICAgICAoSlNDOjpTeW50
YXhDaGVja2VyOjpjcmVhdGVDbGF1c2UpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpj
cmVhdGVDbGF1c2VMaXN0KToKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAg
ICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0R2xvYmFsQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6
Q29kZUNhY2hlOjpnZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZSk6CisgICAgICAg
ICogcnVudGltZS9Db21wbGV0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Y2hlY2tTeW50YXgpOgor
ICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OlByb2dyYW1F
eGVjdXRhYmxlOjpjaGVja1N5bnRheCk6CisgICAgICAgICogdGVzdHMvY29udHJvbEZsb3dQcm9m
aWxlci9jb25kaXRpb25hbC1leHByZXNzaW9uLmpzOgorICAgICAgICAodGVzdENvbmRpdGlvbmFs
RnVuY3Rpb25DYWxsKToKKwogMjAxNS0wNy0xNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCBidWlsZCBmb3IgbmV3ZXIgTExWTXMuCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcAkocmV2aXNpb24g
MTg2OTU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgcHJpdmF0ZToKIHN0YXRpYyBib29sIHBhcnNl
U2NyaXB0KFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZXJy
b3IpCiB7CiAgICAgcmV0dXJuICEhSlNDOjpwYXJzZTxKU0M6OlByb2dyYW1Ob2RlPigKLSAgICAg
ICAgdm0sIHNvdXJjZSwgMCwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RC
dWlsdGluLCAKKyAgICAgICAgdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0
aW5Nb2RlOjpOb3RCdWlsdGluLCAKICAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJp
Y3QsIEpTUGFyc2VyQ29kZVR5cGU6OlByb2dyYW0sIAogICAgICAgICBlcnJvcik7CiB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1
dGFibGVzLmNwcAkocmV2aXNpb24gMTg2OTU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDEwICs2
OSw5IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3UKICAgICBVbmxp
bmtlZEZ1bmN0aW9uS2luZCBraW5kID0gaXNQYXJzaW5nRGVmYXVsdENvbnN0cnVjdG9yID8gVW5s
aW5rZWROb3JtYWxGdW5jdGlvbiA6IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uOwogICAgIFJlZlB0
cjxTb3VyY2VQcm92aWRlcj4gc291cmNlT3ZlcnJpZGUgPSBpc1BhcnNpbmdEZWZhdWx0Q29uc3Ry
dWN0b3IgPyBzb3VyY2UucHJvdmlkZXIoKSA6IG51bGxwdHI7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PFByb2dyYW1Ob2RlPiBwcm9ncmFtID0gcGFyc2U8UHJvZ3JhbU5vZGU+KAotICAgICAgICAmbV92
bSwgc291cmNlLCAwLCBJZGVudGlmaWVyKCksIGJ1aWx0aW5Nb2RlLCAKLSAgICAgICAgSlNQYXJz
ZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIAotICAgICAgICBKU1BhcnNlckNvZGVUeXBlOjpQcm9n
cmFtLAotICAgICAgICBlcnJvciwgJnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUsIGNvbnN0cnVj
dG9yS2luZCk7CisgICAgICAgICZtX3ZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgYnVpbHRpbk1v
ZGUsIAorICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgSlNQYXJzZXJDb2Rl
VHlwZTo6UHJvZ3JhbSwgZXJyb3IsIAorICAgICAgICAmcG9zaXRpb25CZWZvcmVMYXN0TmV3bGlu
ZSwgRnVuY3Rpb25QYXJzZU1vZGU6Ok5vdEFGdW5jdGlvbk1vZGUsIGNvbnN0cnVjdG9yS2luZCk7
CiAKICAgICBpZiAoIXByb2dyYW0pIHsKICAgICAgICAgZGF0YUxvZygiRmF0YWwgZXJyb3IgY29t
cGlsaW5nIGJ1aWx0aW4gZnVuY3Rpb24gJyIsIG5hbWUuc3RyaW5nKCksICInOiAiLCBlcnJvci5t
ZXNzYWdlKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCShyZXZpc2lvbiAxODY5NTQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02MCwxNSArNjAsMTUgQEAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdl
bmVyYQogICAgIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUgPSBleGVjdXRhYmxlLT5p
c0J1aWx0aW5GdW5jdGlvbigpID8gSlNQYXJzZXJCdWlsdGluTW9kZTo6QnVpbHRpbiA6IEpTUGFy
c2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW47CiAgICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmlj
dE1vZGUgPSBleGVjdXRhYmxlLT5pc0luU3RyaWN0Q29udGV4dCgpID8gSlNQYXJzZXJTdHJpY3RN
b2RlOjpTdHJpY3QgOiBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdDsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8RnVuY3Rpb25Ob2RlPiBmdW5jdGlvbiA9IHBhcnNlPEZ1bmN0aW9uTm9kZT4oCi0g
ICAgICAgICZ2bSwgc291cmNlLCBleGVjdXRhYmxlLT5wYXJhbWV0ZXJzKCksIGV4ZWN1dGFibGUt
Pm5hbWUoKSwgYnVpbHRpbk1vZGUsCi0gICAgICAgIHN0cmljdE1vZGUsIEpTUGFyc2VyQ29kZVR5
cGU6OkZ1bmN0aW9uLCBlcnJvciwgMCk7CisgICAgICAgICZ2bSwgc291cmNlLCBleGVjdXRhYmxl
LT5uYW1lKCksIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCAKKyAgICAgICAgSlNQYXJzZXJDb2Rl
VHlwZTo6RnVuY3Rpb24sIGVycm9yLCBudWxscHRyLCBleGVjdXRhYmxlLT5wYXJzZU1vZGUoKSk7
CiAKICAgICBpZiAoIWZ1bmN0aW9uKSB7CiAgICAgICAgIEFTU0VSVChlcnJvci5pc1ZhbGlkKCkp
OwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBmdW5jdGlvbi0+ZmluaXNo
UGFyc2luZyhleGVjdXRhYmxlLT5wYXJhbWV0ZXJzKCksIGV4ZWN1dGFibGUtPm5hbWUoKSwgZXhl
Y3V0YWJsZS0+ZnVuY3Rpb25Nb2RlKCkpOworICAgIGZ1bmN0aW9uLT5maW5pc2hQYXJzaW5nKGV4
ZWN1dGFibGUtPm5hbWUoKSwgZXhlY3V0YWJsZS0+ZnVuY3Rpb25Nb2RlKCkpOwogICAgIGV4ZWN1
dGFibGUtPnJlY29yZFBhcnNlKGZ1bmN0aW9uLT5mZWF0dXJlcygpLCBmdW5jdGlvbi0+aGFzQ2Fw
dHVyZWRWYXJpYWJsZXMoKSk7CiAgICAgCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayog
cmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRlKCZ2bSwgRnVuY3Rpb25D
b2RlLApAQCAtODQsNyArODQsNiBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5r
ZWRGdW5jCiAgICAgOiBCYXNlKCp2bSwgc3RydWN0dXJlKQogICAgICwgbV9uYW1lKG5vZGUtPmlk
ZW50KCkpCiAgICAgLCBtX2luZmVycmVkTmFtZShub2RlLT5pbmZlcnJlZE5hbWUoKSkKLSAgICAs
IG1fcGFyYW1ldGVycyhub2RlLT5wYXJhbWV0ZXJzKCkpCiAgICAgLCBtX3NvdXJjZU92ZXJyaWRl
KFdURjo6bW92ZShzb3VyY2VPdmVycmlkZSkpCiAgICAgLCBtX2ZpcnN0TGluZU9mZnNldChub2Rl
LT5maXJzdExpbmUoKSAtIHNvdXJjZS5maXJzdExpbmUoKSkKICAgICAsIG1fbGluZUNvdW50KG5v
ZGUtPmxhc3RMaW5lKCkgLSBub2RlLT5maXJzdExpbmUoKSkKQEAgLTk2LDYgKzk1LDggQEAgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuYwogICAgICwgbV9wYXJhbWV0ZXJz
U3RhcnRPZmZzZXQobm9kZS0+cGFyYW1ldGVyc1N0YXJ0KCkpCiAgICAgLCBtX3R5cGVQcm9maWxp
bmdTdGFydE9mZnNldChub2RlLT5mdW5jdGlvbktleXdvcmRTdGFydCgpKQogICAgICwgbV90eXBl
UHJvZmlsaW5nRW5kT2Zmc2V0KG5vZGUtPnN0YXJ0U3RhcnRPZmZzZXQoKSArIG5vZGUtPnNvdXJj
ZSgpLmxlbmd0aCgpIC0gMSkKKyAgICAsIG1fcGFyYW1ldGVyQ291bnQobm9kZS0+cGFyYW1ldGVy
Q291bnQoKSkKKyAgICAsIG1fcGFyc2VNb2RlKG5vZGUtPnBhcnNlTW9kZSgpKQogICAgICwgbV9m
ZWF0dXJlcygwKQogICAgICwgbV9pc0luU3RyaWN0Q29udGV4dChub2RlLT5pc0luU3RyaWN0Q29u
dGV4dCgpKQogICAgICwgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyhmYWxzZSkKQEAgLTEwNywxMSAr
MTA4LDYgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuYwogICAgIG1f
cGFyZW50U2NvcGVURFpWYXJpYWJsZXMuc3dhcChwYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7CiB9
CiAKLXNpemVfdCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6cGFyYW1ldGVyQ291bnQoKSBj
b25zdAotewotICAgIHJldHVybiBtX3BhcmFtZXRlcnMtPnNpemUoKTsKLX0KLQogdm9pZCBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQogewogICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB0aGlz
T2JqZWN0ID0ganNDYXN0PFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKj4oY2VsbCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suaAkocmV2aXNpb24gMTg2OTU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDYgQEAgbmFt
ZXNwYWNlIEpTQyB7CiBjbGFzcyBEZWJ1Z2dlcjsKIGNsYXNzIEZ1bmN0aW9uQm9keU5vZGU7CiBj
bGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7Ci1jbGFzcyBGdW5jdGlvblBhcmFtZXRlcnM7CiBjbGFz
cyBKU1Njb3BlOwogY2xhc3MgUGFyc2VyRXJyb3I7CiBjbGFzcyBTY3JpcHRFeGVjdXRhYmxlOwpA
QCAtMTIzLDcgKzEyMiw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiAoa2luZCA9
PSBDb2RlRm9yQ2FsbCkgPyBtX3N5bWJvbFRhYmxlRm9yQ2FsbC5nZXQoKSA6IG1fc3ltYm9sVGFi
bGVGb3JDb25zdHJ1Y3QuZ2V0KCk7CiAgICAgfQotICAgIHNpemVfdCBwYXJhbWV0ZXJDb3VudCgp
IGNvbnN0OworICAgIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9w
YXJhbWV0ZXJDb3VudDsgfTsKKyAgICBGdW5jdGlvblBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25z
dCB7IHJldHVybiBtX3BhcnNlTW9kZTsgfTsKICAgICBib29sIGlzSW5TdHJpY3RDb250ZXh0KCkg
Y29uc3QgeyByZXR1cm4gbV9pc0luU3RyaWN0Q29udGV4dDsgfQogICAgIEZ1bmN0aW9uTW9kZSBm
dW5jdGlvbk1vZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxGdW5jdGlvbk1vZGU+KG1f
ZnVuY3Rpb25Nb2RlKTsgfQogICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JL
aW5kKTsgfQpAQCAtMTU1LDggKzE1NSw2IEBAIHB1YmxpYzoKICAgICAgICAgbV9jb2RlQmxvY2tG
b3JDb25zdHJ1Y3QuY2xlYXIoKTsKICAgICB9CiAKLSAgICBGdW5jdGlvblBhcmFtZXRlcnMqIHBh
cmFtZXRlcnMoKSB7IHJldHVybiBtX3BhcmFtZXRlcnMuZ2V0KCk7IH0KLQogICAgIHZvaWQgcmVj
b3JkUGFyc2UoQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBib29sIGhhc0NhcHR1cmVkVmFyaWFibGVz
KQogICAgIHsKICAgICAgICAgbV9mZWF0dXJlcyA9IGZlYXR1cmVzOwpAQCAtMTgzLDcgKzE4MSw2
IEBAIHByaXZhdGU6CiAgICAgV3JpdGVCYXJyaWVyPEpTU3RyaW5nPiBtX25hbWVWYWx1ZTsKICAg
ICBXcml0ZUJhcnJpZXI8U3ltYm9sVGFibGU+IG1fc3ltYm9sVGFibGVGb3JDYWxsOwogICAgIFdy
aXRlQmFycmllcjxTeW1ib2xUYWJsZT4gbV9zeW1ib2xUYWJsZUZvckNvbnN0cnVjdDsKLSAgICBS
ZWZQdHI8RnVuY3Rpb25QYXJhbWV0ZXJzPiBtX3BhcmFtZXRlcnM7CiAgICAgUmVmUHRyPFNvdXJj
ZVByb3ZpZGVyPiBtX3NvdXJjZU92ZXJyaWRlOwogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgbV9w
YXJlbnRTY29wZVREWlZhcmlhYmxlczsKICAgICB1bnNpZ25lZCBtX2ZpcnN0TGluZU9mZnNldDsK
QEAgLTE5Niw2ICsxOTMsOCBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fcGFyYW1ldGVyc1N0
YXJ0T2Zmc2V0OwogICAgIHVuc2lnbmVkIG1fdHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0OwogICAg
IHVuc2lnbmVkIG1fdHlwZVByb2ZpbGluZ0VuZE9mZnNldDsKKyAgICB1bnNpZ25lZCBtX3BhcmFt
ZXRlckNvdW50OworICAgIEZ1bmN0aW9uUGFyc2VNb2RlIG1fcGFyc2VNb2RlOwogCiAgICAgQ29k
ZUZlYXR1cmVzIG1fZmVhdHVyZXM7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHJldmlzaW9uIDE4Njk1NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzE4OSwxMCArMzE4OSw2IEBAIFJlZ2lzdGVySUQqIERlc3RydWN0dXJp
bmdBc3NpZ25tZW50Tm9kZToKICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9u
SWZOZWVkZWQoZHN0LCBpbml0aWFsaXplci5nZXQoKSk7CiB9CiAKLURlc3RydWN0dXJpbmdQYXR0
ZXJuTm9kZTo6fkRlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSgpCi17Ci19Ci0KIHN0YXRpYyB2b2lk
IGFzc2lnbkRlZmF1bHRWYWx1ZUlmVW5kZWZpbmVkKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIG1heWJlVW5kZWZpbmVkLCBFeHByZXNzaW9uTm9kZSogZGVmYXVsdFZh
bHVlKQogewogICAgIEFTU0VSVChkZWZhdWx0VmFsdWUpOwpAQCAtMzM1MCw3ICszMzQ2LDcgQEAg
dm9pZCBBcnJheVBhdHRlcm5Ob2RlOjp0b1N0cmluZyhTdHJpbmdCdQogdm9pZCBBcnJheVBhdHRl
cm5Ob2RlOjpjb2xsZWN0Qm91bmRJZGVudGlmaWVycyhWZWN0b3I8SWRlbnRpZmllcj4mIGlkZW50
aWZpZXJzKSBjb25zdAogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90YXJnZXRQYXR0
ZXJucy5zaXplKCk7IGkrKykgewotICAgICAgICBpZiAoRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2Rl
KiBub2RlID0gbV90YXJnZXRQYXR0ZXJuc1tpXS5wYXR0ZXJuLmdldCgpKQorICAgICAgICBpZiAo
RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiBub2RlID0gbV90YXJnZXRQYXR0ZXJuc1tpXS5wYXR0
ZXJuKQogICAgICAgICAgICAgbm9kZS0+Y29sbGVjdEJvdW5kSWRlbnRpZmllcnMoaWRlbnRpZmll
cnMpOwogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVp
bGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVp
bGRlci5oCShyZXZpc2lvbiAxODY5NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L0FTVEJ1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtOTQsOCArOTQsNiBAQCBwdWJsaWM6CiAg
ICAgfTsKIAogCi0gICAgdHlwZWRlZiBTeW50YXhDaGVja2VyIEZ1bmN0aW9uQm9keUJ1aWxkZXI7
Ci0KICAgICB0eXBlZGVmIEV4cHJlc3Npb25Ob2RlKiBFeHByZXNzaW9uOwogICAgIHR5cGVkZWYg
SlNDOjpTb3VyY2VFbGVtZW50cyogU291cmNlRWxlbWVudHM7CiAgICAgdHlwZWRlZiBBcmd1bWVu
dHNOb2RlKiBBcmd1bWVudHM7CkBAIC0xMTAsNyArMTA4LDcgQEAgcHVibGljOgogICAgIHR5cGVk
ZWYgVGVtcGxhdGVTdHJpbmdMaXN0Tm9kZSogVGVtcGxhdGVTdHJpbmdMaXN0OwogICAgIHR5cGVk
ZWYgVGVtcGxhdGVMaXRlcmFsTm9kZSogVGVtcGxhdGVMaXRlcmFsOwogI2VuZGlmCi0gICAgdHlw
ZWRlZiBQYXJhbWV0ZXJOb2RlKiBGb3JtYWxQYXJhbWV0ZXJMaXN0OworICAgIHR5cGVkZWYgRnVu
Y3Rpb25QYXJhbWV0ZXJzKiBGb3JtYWxQYXJhbWV0ZXJMaXN0OwogICAgIHR5cGVkZWYgRnVuY3Rp
b25Cb2R5Tm9kZSogRnVuY3Rpb25Cb2R5OwogI2lmIEVOQUJMRShFUzZfQ0xBU1NfU1lOVEFYKQog
ICAgIHR5cGVkZWYgQ2xhc3NFeHByTm9kZSogQ2xhc3NFeHByZXNzaW9uOwpAQCAtMTIwLDEwICsx
MTgsMTAgQEAgcHVibGljOgogICAgIHR5cGVkZWYgQ2FzZUNsYXVzZU5vZGUqIENsYXVzZTsKICAg
ICB0eXBlZGVmIENvbnN0RGVjbE5vZGUqIENvbnN0RGVjbExpc3Q7CiAgICAgdHlwZWRlZiBzdGQ6
OnBhaXI8RXhwcmVzc2lvbk5vZGUqLCBCaW5hcnlPcEluZm8+IEJpbmFyeU9wZXJhbmQ7Ci0gICAg
dHlwZWRlZiBSZWZQdHI8RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlPiBEZXN0cnVjdHVyaW5nUGF0
dGVybjsKLSAgICB0eXBlZGVmIFJlZlB0cjxBcnJheVBhdHRlcm5Ob2RlPiBBcnJheVBhdHRlcm47
Ci0gICAgdHlwZWRlZiBSZWZQdHI8T2JqZWN0UGF0dGVybk5vZGU+IE9iamVjdFBhdHRlcm47Ci0g
ICAgdHlwZWRlZiBSZWZQdHI8QmluZGluZ05vZGU+IEJpbmRpbmdQYXR0ZXJuOworICAgIHR5cGVk
ZWYgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiBEZXN0cnVjdHVyaW5nUGF0dGVybjsKKyAgICB0
eXBlZGVmIEFycmF5UGF0dGVybk5vZGUqIEFycmF5UGF0dGVybjsKKyAgICB0eXBlZGVmIE9iamVj
dFBhdHRlcm5Ob2RlKiBPYmplY3RQYXR0ZXJuOworICAgIHR5cGVkZWYgQmluZGluZ05vZGUqIEJp
bmRpbmdQYXR0ZXJuOwogICAgIHN0YXRpYyBjb25zdCBib29sIENyZWF0ZXNBU1QgPSB0cnVlOwog
ICAgIHN0YXRpYyBjb25zdCBib29sIE5lZWRzRnJlZVZhcmlhYmxlSW5mbyA9IHRydWU7CiAgICAg
c3RhdGljIGNvbnN0IGJvb2wgQ2FuVXNlRnVuY3Rpb25DYWNoZSA9IHRydWU7CkBAIC0zNDQsMTEg
KzM0MiwxMSBAQCBwdWJsaWM6CiAgICAgfQogI2VuZGlmCiAKLSAgICBFeHByZXNzaW9uTm9kZSog
Y3JlYXRlRnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0
IFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgaW5mbykKKyAgICBFeHByZXNzaW9uTm9k
ZSogY3JlYXRlRnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNv
bnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgZnVuY3Rpb25JbmZvKQogICAgIHsK
LSAgICAgICAgRnVuY0V4cHJOb2RlKiByZXN1bHQgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIEZ1bmNF
eHByTm9kZShsb2NhdGlvbiwgKmluZm8ubmFtZSwgaW5mby5ib2R5LAotICAgICAgICAgICAgbV9z
b3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKGluZm8uc3RhcnRGdW5jdGlvbk9mZnNldCwgaW5mby5l
bmRGdW5jdGlvbk9mZnNldCwgaW5mby5ib2R5U3RhcnRMaW5lLCBpbmZvLmJvZHlTdGFydENvbHVt
biksIGluZm8ucGFyYW1ldGVycyk7Ci0gICAgICAgIGluZm8uYm9keS0+c2V0TG9jKGluZm8uYm9k
eVN0YXJ0TGluZSwgaW5mby5ib2R5RW5kTGluZSwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0
aW9uLmxpbmVTdGFydE9mZnNldCk7CisgICAgICAgIEZ1bmNFeHByTm9kZSogcmVzdWx0ID0gbmV3
IChtX3BhcnNlckFyZW5hKSBGdW5jRXhwck5vZGUobG9jYXRpb24sICpmdW5jdGlvbkluZm8ubmFt
ZSwgZnVuY3Rpb25JbmZvLmJvZHksCisgICAgICAgICAgICBtX3NvdXJjZUNvZGUtPnN1YkV4cHJl
c3Npb24oZnVuY3Rpb25JbmZvLnN0YXJ0T2Zmc2V0LCBmdW5jdGlvbkluZm8uZW5kT2Zmc2V0LCBm
dW5jdGlvbkluZm8uc3RhcnRMaW5lLCBmdW5jdGlvbkluZm8uYm9keVN0YXJ0Q29sdW1uKSk7Cisg
ICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5LT5zZXRMb2MoZnVuY3Rpb25JbmZvLnN0YXJ0TGluZSwg
ZnVuY3Rpb25JbmZvLmVuZExpbmUsIGxvY2F0aW9uLnN0YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5l
U3RhcnRPZmZzZXQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMzU2LDQ1
ICszNTQsNDEgQEAgcHVibGljOgogICAgICAgICBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0
TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIAogICAgICAgICB1
bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3
b3JkU3RhcnQsIAogICAgICAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJz
U3RhcnQsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCAKLSAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNv
bnN0cnVjdG9yS2luZCkKKyAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwg
dW5zaWduZWQgcGFyYW1ldGVyQ291bnQsIEZ1bmN0aW9uUGFyc2VNb2RlIG1vZGUpCiAgICAgewog
ICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5jdGlvbkJvZHlOb2RlKAogICAg
ICAgICAgICAgbV9wYXJzZXJBcmVuYSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIHN0YXJ0
Q29sdW1uLCBlbmRDb2x1bW4sIAogICAgICAgICAgICAgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1
bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIAotICAgICAgICAgICAgaW5TdHJpY3RD
b250ZXh0LCBjb25zdHJ1Y3RvcktpbmQpOworICAgICAgICAgICAgaW5TdHJpY3RDb250ZXh0LCBj
b25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBtb2RlKTsKICAgICB9CiAKLSNpZiBFTkFC
TEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVB
cnJvd0Z1bmN0aW9uRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBQ
YXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4mIGluZm8pCisgICAgRXhwcmVzc2lvbk5vZGUq
IGNyZWF0ZUFycm93RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgZnVuY3Rpb25JbmZvKQogICAg
IHsKLSAgICAgICAgU291cmNlQ29kZSBzb3VyY2UgPSBpbmZvLmZ1bmN0aW9uQm9keVR5cGUgPT0g
QXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uCi0gICAgICAgICAgICA/IG1fc291cmNlQ29kZS0+
c3ViQXJyb3dFeHByZXNzaW9uKGluZm8uYXJyb3dGdW5jdGlvbk9mZnNldCwgaW5mby5lbmRGdW5j
dGlvbk9mZnNldCwgaW5mby5ib2R5U3RhcnRMaW5lLCBpbmZvLmJvZHlTdGFydENvbHVtbikKLSAg
ICAgICAgICAgIDogbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKGluZm8uc3RhcnRGdW5jdGlv
bk9mZnNldCwgaW5mby5lbmRGdW5jdGlvbk9mZnNldCwgaW5mby5ib2R5U3RhcnRMaW5lLCBpbmZv
LmJvZHlTdGFydENvbHVtbik7CisgICAgICAgIFNvdXJjZUNvZGUgc291cmNlID0gbV9zb3VyY2VD
b2RlLT5zdWJFeHByZXNzaW9uKGZ1bmN0aW9uSW5mby5zdGFydE9mZnNldCwgZnVuY3Rpb25JbmZv
LmVuZE9mZnNldCwgZnVuY3Rpb25JbmZvLnN0YXJ0TGluZSwgZnVuY3Rpb25JbmZvLmJvZHlTdGFy
dENvbHVtbik7CiAKLSAgICAgICAgRnVuY0V4cHJOb2RlKiByZXN1bHQgPSBuZXcgKG1fcGFyc2Vy
QXJlbmEpIEZ1bmNFeHByTm9kZShsb2NhdGlvbiwgKmluZm8ubmFtZSwgaW5mby5ib2R5LCBzb3Vy
Y2UsIGluZm8ucGFyYW1ldGVycyk7Ci0gICAgICAgIGluZm8uYm9keS0+c2V0TG9jKGluZm8uYm9k
eVN0YXJ0TGluZSwgaW5mby5ib2R5RW5kTGluZSwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0
aW9uLmxpbmVTdGFydE9mZnNldCk7CisgICAgICAgIEZ1bmNFeHByTm9kZSogcmVzdWx0ID0gbmV3
IChtX3BhcnNlckFyZW5hKSBGdW5jRXhwck5vZGUobG9jYXRpb24sICpmdW5jdGlvbkluZm8ubmFt
ZSwgZnVuY3Rpb25JbmZvLmJvZHksIHNvdXJjZSk7CisgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5
LT5zZXRMb2MoZnVuY3Rpb25JbmZvLnN0YXJ0TGluZSwgZnVuY3Rpb25JbmZvLmVuZExpbmUsIGxv
Y2F0aW9uLnN0YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOwogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KLSNlbmRpZgogCiAgICAgTkVWRVJfSU5MSU5FIFByb3BlcnR5
Tm9kZSogY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgYm9vbCwKLSAgICAgICAgY29uc3Qg
SWRlbnRpZmllciogbmFtZSwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+JiBp
bmZvLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKQorICAgICAgICBjb25zdCBJZGVudGlmaWVy
KiBuYW1lLCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4mIGZ1bmN0aW9uSW5m
bywgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZykKICAgICB7CiAgICAgICAgIEFTU0VSVChuYW1l
KTsKLSAgICAgICAgaW5mby5ib2R5LT5zZXRMb2MoaW5mby5ib2R5U3RhcnRMaW5lLCBpbmZvLmJv
ZHlFbmRMaW5lLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0
KTsKLSAgICAgICAgaW5mby5ib2R5LT5zZXRJbmZlcnJlZE5hbWUoKm5hbWUpOwotICAgICAgICBT
b3VyY2VDb2RlIHNvdXJjZSA9IG1fc291cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihpbmZvLnN0YXJ0
RnVuY3Rpb25PZmZzZXQsIGluZm8uZW5kRnVuY3Rpb25PZmZzZXQsIGluZm8uYm9keVN0YXJ0TGlu
ZSwgaW5mby5ib2R5U3RhcnRDb2x1bW4pOwotICAgICAgICBGdW5jRXhwck5vZGUqIGZ1bmNFeHBy
ID0gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5jRXhwck5vZGUobG9jYXRpb24sIG1fdm0tPnByb3Bl
cnR5TmFtZXMtPm51bGxJZGVudGlmaWVyLCBpbmZvLmJvZHksIHNvdXJjZSwgaW5mby5wYXJhbWV0
ZXJzKTsKKyAgICAgICAgZnVuY3Rpb25JbmZvLmJvZHktPnNldExvYyhmdW5jdGlvbkluZm8uc3Rh
cnRMaW5lLCBmdW5jdGlvbkluZm8uZW5kTGluZSwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0
aW9uLmxpbmVTdGFydE9mZnNldCk7CisgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5LT5zZXRJbmZl
cnJlZE5hbWUoKm5hbWUpOworICAgICAgICBTb3VyY2VDb2RlIHNvdXJjZSA9IG1fc291cmNlQ29k
ZS0+c3ViRXhwcmVzc2lvbihmdW5jdGlvbkluZm8uc3RhcnRPZmZzZXQsIGZ1bmN0aW9uSW5mby5l
bmRPZmZzZXQsIGZ1bmN0aW9uSW5mby5zdGFydExpbmUsIGZ1bmN0aW9uSW5mby5ib2R5U3RhcnRD
b2x1bW4pOworICAgICAgICBGdW5jRXhwck5vZGUqIGZ1bmNFeHByID0gbmV3IChtX3BhcnNlckFy
ZW5hKSBGdW5jRXhwck5vZGUobG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPm51bGxJZGVu
dGlmaWVyLCBmdW5jdGlvbkluZm8uYm9keSwgc291cmNlKTsKICAgICAgICAgcmV0dXJuIG5ldyAo
bV9wYXJzZXJBcmVuYSkgUHJvcGVydHlOb2RlKCpuYW1lLCBmdW5jRXhwciwgdHlwZSwgUHJvcGVy
dHlOb2RlOjpVbmtub3duLCBzdXBlckJpbmRpbmcpOwogICAgIH0KICAgICAKICAgICBORVZFUl9J
TkxJTkUgUHJvcGVydHlOb2RlKiBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KFZNKiB2bSwg
UGFyc2VyQXJlbmEmIHBhcnNlckFyZW5hLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9u
LCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgYm9vbCwKLSAgICAgICAgZG91YmxlIG5hbWUsIGNv
bnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgaW5mbywgU3VwZXJCaW5kaW5nIHN1
cGVyQmluZGluZykKKyAgICAgICAgZG91YmxlIG5hbWUsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5m
bzxBU1RCdWlsZGVyPiYgZnVuY3Rpb25JbmZvLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKQog
ICAgIHsKLSAgICAgICAgaW5mby5ib2R5LT5zZXRMb2MoaW5mby5ib2R5U3RhcnRMaW5lLCBpbmZv
LmJvZHlFbmRMaW5lLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zm
c2V0KTsKKyAgICAgICAgZnVuY3Rpb25JbmZvLmJvZHktPnNldExvYyhmdW5jdGlvbkluZm8uc3Rh
cnRMaW5lLCBmdW5jdGlvbkluZm8uZW5kTGluZSwgbG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0
aW9uLmxpbmVTdGFydE9mZnNldCk7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0g
cGFyc2VyQXJlbmEuaWRlbnRpZmllckFyZW5hKCkubWFrZU51bWVyaWNJZGVudGlmaWVyKHZtLCBu
YW1lKTsKLSAgICAgICAgU291cmNlQ29kZSBzb3VyY2UgPSBtX3NvdXJjZUNvZGUtPnN1YkV4cHJl
c3Npb24oaW5mby5zdGFydEZ1bmN0aW9uT2Zmc2V0LCBpbmZvLmVuZEZ1bmN0aW9uT2Zmc2V0LCBp
bmZvLmJvZHlTdGFydExpbmUsIGluZm8uYm9keVN0YXJ0Q29sdW1uKTsKLSAgICAgICAgRnVuY0V4
cHJOb2RlKiBmdW5jRXhwciA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRnVuY0V4cHJOb2RlKGxvY2F0
aW9uLCB2bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIsIGluZm8uYm9keSwgc291cmNl
LCBpbmZvLnBhcmFtZXRlcnMpOworICAgICAgICBTb3VyY2VDb2RlIHNvdXJjZSA9IG1fc291cmNl
Q29kZS0+c3ViRXhwcmVzc2lvbihmdW5jdGlvbkluZm8uc3RhcnRPZmZzZXQsIGZ1bmN0aW9uSW5m
by5lbmRPZmZzZXQsIGZ1bmN0aW9uSW5mby5zdGFydExpbmUsIGZ1bmN0aW9uSW5mby5ib2R5U3Rh
cnRDb2x1bW4pOworICAgICAgICBGdW5jRXhwck5vZGUqIGZ1bmNFeHByID0gbmV3IChtX3BhcnNl
ckFyZW5hKSBGdW5jRXhwck5vZGUobG9jYXRpb24sIHZtLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRl
bnRpZmllciwgZnVuY3Rpb25JbmZvLmJvZHksIHNvdXJjZSk7CiAgICAgICAgIHJldHVybiBuZXcg
KG1fcGFyc2VyQXJlbmEpIFByb3BlcnR5Tm9kZShpZGVudCwgZnVuY0V4cHIsIHR5cGUsIFByb3Bl
cnR5Tm9kZTo6VW5rbm93biwgc3VwZXJCaW5kaW5nKTsKICAgICB9CiAKQEAgLTQyMCwyMSArNDE0
LDIxIEBAIHB1YmxpYzoKICAgICBFbGVtZW50Tm9kZSogY3JlYXRlRWxlbWVudExpc3QoaW50IGVs
aXNpb25zLCBFeHByZXNzaW9uTm9kZSogZXhwcikgeyByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5h
KSBFbGVtZW50Tm9kZShlbGlzaW9ucywgZXhwcik7IH0KICAgICBFbGVtZW50Tm9kZSogY3JlYXRl
RWxlbWVudExpc3QoRWxlbWVudE5vZGUqIGVsZW1zLCBpbnQgZWxpc2lvbnMsIEV4cHJlc3Npb25O
b2RlKiBleHByKSB7IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEVsZW1lbnROb2RlKGVsZW1z
LCBlbGlzaW9ucywgZXhwcik7IH0KIAotICAgIFBhcmFtZXRlck5vZGUqIGNyZWF0ZUZvcm1hbFBh
cmFtZXRlckxpc3QoRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gcGF0dGVybikgeyByZXR1cm4gbmV3ICht
X3BhcnNlckFyZW5hKSBQYXJhbWV0ZXJOb2RlKHBhdHRlcm4pOyB9Ci0gICAgUGFyYW1ldGVyTm9k
ZSogY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdChQYXJhbWV0ZXJOb2RlKiBsaXN0LCBEZXN0cnVj
dHVyaW5nUGF0dGVybiBwYXR0ZXJuKSB7IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFBhcmFt
ZXRlck5vZGUobGlzdCwgcGF0dGVybik7IH0KKyAgICBGb3JtYWxQYXJhbWV0ZXJMaXN0IGNyZWF0
ZUZvcm1hbFBhcmFtZXRlckxpc3QoKSB7IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEZ1bmN0
aW9uUGFyYW1ldGVycygpOyB9CisgICAgdm9pZCBhcHBlbmRQYXJhbWV0ZXIoRm9ybWFsUGFyYW1l
dGVyTGlzdCBsaXN0LCBEZXN0cnVjdHVyaW5nUGF0dGVybiBwYXR0ZXJuKSB7IGxpc3QtPmFwcGVu
ZChwYXR0ZXJuKTsgfQogCiAgICAgQ2FzZUNsYXVzZU5vZGUqIGNyZWF0ZUNsYXVzZShFeHByZXNz
aW9uTm9kZSogZXhwciwgSlNDOjpTb3VyY2VFbGVtZW50cyogc3RhdGVtZW50cykgeyByZXR1cm4g
bmV3IChtX3BhcnNlckFyZW5hKSBDYXNlQ2xhdXNlTm9kZShleHByLCBzdGF0ZW1lbnRzKTsgfQog
ICAgIENsYXVzZUxpc3ROb2RlKiBjcmVhdGVDbGF1c2VMaXN0KENhc2VDbGF1c2VOb2RlKiBjbGF1
c2UpIHsgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgQ2xhdXNlTGlzdE5vZGUoY2xhdXNlKTsg
fQogICAgIENsYXVzZUxpc3ROb2RlKiBjcmVhdGVDbGF1c2VMaXN0KENsYXVzZUxpc3ROb2RlKiB0
YWlsLCBDYXNlQ2xhdXNlTm9kZSogY2xhdXNlKSB7IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEp
IENsYXVzZUxpc3ROb2RlKHRhaWwsIGNsYXVzZSk7IH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNy
ZWF0ZUZ1bmNEZWNsU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNv
bnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgaW5mbykKKyAgICBTdGF0ZW1lbnRO
b2RlKiBjcmVhdGVGdW5jRGVjbFN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4mIGZ1bmN0aW9uSW5mbykK
ICAgICB7Ci0gICAgICAgIEZ1bmNEZWNsTm9kZSogZGVjbCA9IG5ldyAobV9wYXJzZXJBcmVuYSkg
RnVuY0RlY2xOb2RlKGxvY2F0aW9uLCAqaW5mby5uYW1lLCBpbmZvLmJvZHksCi0gICAgICAgICAg
ICBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24oaW5mby5zdGFydEZ1bmN0aW9uT2Zmc2V0LCBp
bmZvLmVuZEZ1bmN0aW9uT2Zmc2V0LCBpbmZvLmJvZHlTdGFydExpbmUsIGluZm8uYm9keVN0YXJ0
Q29sdW1uKSwgaW5mby5wYXJhbWV0ZXJzKTsKLSAgICAgICAgaWYgKCppbmZvLm5hbWUgPT0gbV92
bS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzKQorICAgICAgICBGdW5jRGVjbE5vZGUqIGRlY2wg
PSBuZXcgKG1fcGFyc2VyQXJlbmEpIEZ1bmNEZWNsTm9kZShsb2NhdGlvbiwgKmZ1bmN0aW9uSW5m
by5uYW1lLCBmdW5jdGlvbkluZm8uYm9keSwKKyAgICAgICAgICAgIG1fc291cmNlQ29kZS0+c3Vi
RXhwcmVzc2lvbihmdW5jdGlvbkluZm8uc3RhcnRPZmZzZXQsIGZ1bmN0aW9uSW5mby5lbmRPZmZz
ZXQsIGZ1bmN0aW9uSW5mby5zdGFydExpbmUsIGZ1bmN0aW9uSW5mby5ib2R5U3RhcnRDb2x1bW4p
KTsKKyAgICAgICAgaWYgKCpmdW5jdGlvbkluZm8ubmFtZSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5hcmd1bWVudHMpCiAgICAgICAgICAgICB1c2VzQXJndW1lbnRzKCk7CiAgICAgICAgIG1fc2Nv
cGUubV9mdW5jRGVjbGFyYXRpb25zLmFwcGVuZChkZWNsLT5ib2R5KCkpOwotICAgICAgICBpbmZv
LmJvZHktPnNldExvYyhpbmZvLmJvZHlTdGFydExpbmUsIGluZm8uYm9keUVuZExpbmUsIGxvY2F0
aW9uLnN0YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQpOworICAgICAgICBmdW5j
dGlvbkluZm8uYm9keS0+c2V0TG9jKGZ1bmN0aW9uSW5mby5zdGFydExpbmUsIGZ1bmN0aW9uSW5m
by5lbmRMaW5lLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0
KTsKICAgICAgICAgcmV0dXJuIGRlY2w7CiAgICAgfQogCkBAIC00ODYsOSArNDgwLDkgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKLSAgICBTdGF0ZW1lbnRO
b2RlKiBjcmVhdGVGb3JJbkxvb3AoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUGFz
c1JlZlB0cjxEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU+IHBhdHRlcm4sIEV4cHJlc3Npb25Ob2Rl
KiBpdGVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
ZVN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZURpdm90LCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZUVuZCwgaW50IHN0YXJ0LCBpbnQgZW5kLCBWYXJpYWJsZUVudmlyb25tZW50JiBsZXhpY2Fs
VmFyaWFibGVzKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZvckluTG9vcChjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGxvY2F0aW9uLCBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUqIHBhdHRlcm4s
IEV4cHJlc3Npb25Ob2RlKiBpdGVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnRzLCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZVN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZURpdm90LCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZUVuZCwgaW50IHN0YXJ0LCBpbnQgZW5kLCBWYXJpYWJsZUVudmly
b25tZW50JiBsZXhpY2FsVmFyaWFibGVzKQogICAgIHsKLSAgICAgICAgYXV0byBsZXhwciA9IG5l
dyAobV9wYXJzZXJBcmVuYSkgRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlKGxvY2F0aW9uLCBw
YXR0ZXJuLmdldCgpLCAwKTsKKyAgICAgICAgYXV0byBsZXhwciA9IG5ldyAobV9wYXJzZXJBcmVu
YSkgRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlKGxvY2F0aW9uLCBwYXR0ZXJuLCAwKTsKICAg
ICAgICAgcmV0dXJuIGNyZWF0ZUZvckluTG9vcChsb2NhdGlvbiwgbGV4cHIsIGl0ZXIsIHN0YXRl
bWVudHMsIGVTdGFydCwgZURpdm90LCBlRW5kLCBzdGFydCwgZW5kLCBsZXhpY2FsVmFyaWFibGVz
KTsKICAgICB9CiAgICAgCkBAIC01MDAsOSArNDk0LDkgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIH0KICAgICAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVGb3JPZkxv
b3AoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUGFzc1JlZlB0cjxEZXN0cnVjdHVy
aW5nUGF0dGVybk5vZGU+IHBhdHRlcm4sIEV4cHJlc3Npb25Ob2RlKiBpdGVyLCBTdGF0ZW1lbnRO
b2RlKiBzdGF0ZW1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZVN0YXJ0LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZURpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZUVuZCwgaW50IHN0YXJ0
LCBpbnQgZW5kLCBWYXJpYWJsZUVudmlyb25tZW50JiBsZXhpY2FsVmFyaWFibGVzKQorICAgIFN0
YXRlbWVudE5vZGUqIGNyZWF0ZUZvck9mTG9vcChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUqIHBhdHRlcm4sIEV4cHJlc3Npb25Ob2RlKiBp
dGVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZVN0
YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZURpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
ZUVuZCwgaW50IHN0YXJ0LCBpbnQgZW5kLCBWYXJpYWJsZUVudmlyb25tZW50JiBsZXhpY2FsVmFy
aWFibGVzKQogICAgIHsKLSAgICAgICAgYXV0byBsZXhwciA9IG5ldyAobV9wYXJzZXJBcmVuYSkg
RGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlKGxvY2F0aW9uLCBwYXR0ZXJuLmdldCgpLCAwKTsK
KyAgICAgICAgYXV0byBsZXhwciA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRGVzdHJ1Y3R1cmluZ0Fz
c2lnbm1lbnROb2RlKGxvY2F0aW9uLCBwYXR0ZXJuLCAwKTsKICAgICAgICAgcmV0dXJuIGNyZWF0
ZUZvck9mTG9vcChsb2NhdGlvbiwgbGV4cHIsIGl0ZXIsIHN0YXRlbWVudHMsIGVTdGFydCwgZURp
dm90LCBlRW5kLCBzdGFydCwgZW5kLCBsZXhpY2FsVmFyaWFibGVzKTsKICAgICB9CiAKQEAgLTc0
NSwxNCArNzM5LDE0IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNSZXNvbHZlKEV4cHJlc3Npb25O
b2RlKiBleHByKSBjb25zdCB7IHJldHVybiBleHByLT5pc1Jlc29sdmVOb2RlKCk7IH0KIAotICAg
IEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVEZXN0cnVjdHVyaW5nQXNzaWdubWVudChjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQYXNzUmVmUHRyPERlc3RydWN0dXJpbmdQYXR0ZXJuTm9k
ZT4gcGF0dGVybiwgRXhwcmVzc2lvbk5vZGUqIGluaXRpYWxpemVyKQorICAgIEV4cHJlc3Npb25O
b2RlKiBjcmVhdGVEZXN0cnVjdHVyaW5nQXNzaWdubWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uLCBEZXN0cnVjdHVyaW5nUGF0dGVybiBwYXR0ZXJuLCBFeHByZXNzaW9uTm9kZSog
aW5pdGlhbGl6ZXIpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBE
ZXN0cnVjdHVyaW5nQXNzaWdubWVudE5vZGUobG9jYXRpb24sIHBhdHRlcm4uZ2V0KCksIGluaXRp
YWxpemVyKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgRGVzdHJ1Y3R1cmlu
Z0Fzc2lnbm1lbnROb2RlKGxvY2F0aW9uLCBwYXR0ZXJuLCBpbml0aWFsaXplcik7CiAgICAgfQog
ICAgIAogICAgIEFycmF5UGF0dGVybiBjcmVhdGVBcnJheVBhdHRlcm4oY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJikKICAgICB7Ci0gICAgICAgIHJldHVybiBBcnJheVBhdHRlcm5Ob2RlOjpjcmVhdGUo
KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgQXJyYXlQYXR0ZXJuTm9kZSgp
OwogICAgIH0KICAgICAKICAgICB2b2lkIGFwcGVuZEFycmF5UGF0dGVyblNraXBFbnRyeShBcnJh
eVBhdHRlcm4gbm9kZSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbikKQEAgLTc2Miwz
MiArNzU2LDMyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXBwZW5kQXJyYXlQYXR0ZXJuRW50cnko
QXJyYXlQYXR0ZXJuIG5vZGUsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIERlc3Ry
dWN0dXJpbmdQYXR0ZXJuIHBhdHRlcm4sIEV4cHJlc3Npb25Ob2RlKiBkZWZhdWx0VmFsdWUpCiAg
ICAgewotICAgICAgICBub2RlLT5hcHBlbmRJbmRleChBcnJheVBhdHRlcm5Ob2RlOjpCaW5kaW5n
VHlwZTo6RWxlbWVudCwgbG9jYXRpb24sIHBhdHRlcm4uZ2V0KCksIGRlZmF1bHRWYWx1ZSk7Cisg
ICAgICAgIG5vZGUtPmFwcGVuZEluZGV4KEFycmF5UGF0dGVybk5vZGU6OkJpbmRpbmdUeXBlOjpF
bGVtZW50LCBsb2NhdGlvbiwgcGF0dGVybiwgZGVmYXVsdFZhbHVlKTsKICAgICB9CiAKICAgICB2
b2lkIGFwcGVuZEFycmF5UGF0dGVyblJlc3RFbnRyeShBcnJheVBhdHRlcm4gbm9kZSwgY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gcGF0dGVybikK
ICAgICB7Ci0gICAgICAgIG5vZGUtPmFwcGVuZEluZGV4KEFycmF5UGF0dGVybk5vZGU6OkJpbmRp
bmdUeXBlOjpSZXN0RWxlbWVudCwgbG9jYXRpb24sIHBhdHRlcm4uZ2V0KCksIG51bGxwdHIpOwor
ICAgICAgICBub2RlLT5hcHBlbmRJbmRleChBcnJheVBhdHRlcm5Ob2RlOjpCaW5kaW5nVHlwZTo6
UmVzdEVsZW1lbnQsIGxvY2F0aW9uLCBwYXR0ZXJuLCBudWxscHRyKTsKICAgICB9CiAKICAgICB2
b2lkIGZpbmlzaEFycmF5UGF0dGVybihBcnJheVBhdHRlcm4gbm9kZSwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90RW5kKQogICAgIHsKLSAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRp
b24obm9kZS5nZXQoKSwgZGl2b3RTdGFydCwgZGl2b3QsIGRpdm90RW5kKTsKKyAgICAgICAgc2V0
RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgZGl2b3RTdGFydCwgZGl2b3QsIGRpdm90RW5kKTsKICAg
ICB9CiAgICAgCiAgICAgT2JqZWN0UGF0dGVybiBjcmVhdGVPYmplY3RQYXR0ZXJuKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYpCiAgICAgewotICAgICAgICByZXR1cm4gT2JqZWN0UGF0dGVybk5vZGU6
OmNyZWF0ZSgpOworICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBPYmplY3RQYXR0
ZXJuTm9kZSgpOwogICAgIH0KICAgICAKICAgICB2b2lkIGFwcGVuZE9iamVjdFBhdHRlcm5FbnRy
eShPYmplY3RQYXR0ZXJuIG5vZGUsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGJv
b2wgd2FzU3RyaW5nLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBEZXN0cnVjdHVyaW5n
UGF0dGVybiBwYXR0ZXJuLCBFeHByZXNzaW9uTm9kZSogZGVmYXVsdFZhbHVlKQogICAgIHsKLSAg
ICAgICAgbm9kZS0+YXBwZW5kRW50cnkobG9jYXRpb24sIGlkZW50aWZpZXIsIHdhc1N0cmluZywg
cGF0dGVybi5nZXQoKSwgZGVmYXVsdFZhbHVlKTsKKyAgICAgICAgbm9kZS0+YXBwZW5kRW50cnko
bG9jYXRpb24sIGlkZW50aWZpZXIsIHdhc1N0cmluZywgcGF0dGVybiwgZGVmYXVsdFZhbHVlKTsK
ICAgICB9CiAgICAgCiAgICAgQmluZGluZ1BhdHRlcm4gY3JlYXRlQmluZGluZ0xvY2F0aW9uKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImIGJvdW5kUHJvcGVydHksIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBzdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVuZCwgQXNz
aWdubWVudENvbnRleHQgY29udGV4dCkKICAgICB7Ci0gICAgICAgIHJldHVybiBCaW5kaW5nTm9k
ZTo6Y3JlYXRlKGJvdW5kUHJvcGVydHksIHN0YXJ0LCBlbmQsIGNvbnRleHQpOworICAgICAgICBy
ZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBCaW5kaW5nTm9kZShib3VuZFByb3BlcnR5LCBzdGFy
dCwgZW5kLCBjb250ZXh0KTsKICAgICB9CiAKICAgICB2b2lkIHNldEVuZE9mZnNldChOb2RlKiBu
b2RlLCBpbnQgb2Zmc2V0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5j
cHAJKHJldmlzaW9uIDE4Njk1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OTQsNyArNDk0LDcgQEAgc3RhdGljIGNvbnN0IExD
aGFyIHNpbmdsZUNoYXJhY3RlckVzY2FwZQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIExleGVy
PFQ+OjpMZXhlcihWTSogdm0sIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUpCi0gICAg
OiBtX2lzUmVwYXJzaW5nKGZhbHNlKQorICAgIDogbV9pc1JlcGFyc2luZ0Z1bmN0aW9uKGZhbHNl
KQogICAgICwgbV92bSh2bSkKICAgICAsIG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbihidWlsdGlu
TW9kZSA9PSBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpCdWlsdGluKQogewpAQCAtMTcxNSw3ICsxNzE1
LDYgQEAgYm9vbCBMZXhlcjxUPjo6bmV4dFRva2VuSXNDb2xvbigpCiAgICAgcmV0dXJuIGNvZGUg
PCBtX2NvZGVFbmQgJiYgKmNvZGUgPT0gJzonOwogfQogCi0jaWYgRU5BQkxFKEVTNl9BUlJPV0ZV
TkNUSU9OX1NZTlRBWCkKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogdm9pZCBMZXhlcjxUPjo6c2V0
VG9rZW5Qb3NpdGlvbihKU1Rva2VuKiB0b2tlblJlY29yZCkKIHsKQEAgLTE3MjUsNyArMTcyNCw2
IEBAIHZvaWQgTGV4ZXI8VD46OnNldFRva2VuUG9zaXRpb24oSlNUb2tlbioKICAgICB0b2tlbkRh
dGEtPmxpbmVTdGFydE9mZnNldCA9IGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQoKTsKICAgICBBU1NF
UlQodG9rZW5EYXRhLT5vZmZzZXQgPj0gdG9rZW5EYXRhLT5saW5lU3RhcnRPZmZzZXQpOwogfQot
I2VuZGlmCiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogSlNUb2tlblR5cGUgTGV4ZXI8VD46Omxl
eChKU1Rva2VuKiB0b2tlblJlY29yZCwgdW5zaWduZWQgbGV4ZXJGbGFncywgYm9vbCBzdHJpY3RN
b2RlKQpAQCAtMjQxMSw3ICsyNDA5LDcgQEAgdm9pZCBMZXhlcjxUPjo6Y2xlYXIoKQogICAgIFZl
Y3RvcjxVQ2hhcj4gbmV3QnVmZmVyRm9yUmF3VGVtcGxhdGVTdHJpbmcxNjsKICAgICBtX2J1ZmZl
ckZvclJhd1RlbXBsYXRlU3RyaW5nMTYuc3dhcChuZXdCdWZmZXJGb3JSYXdUZW1wbGF0ZVN0cmlu
ZzE2KTsKIAotICAgIG1faXNSZXBhcnNpbmcgPSBmYWxzZTsKKyAgICBtX2lzUmVwYXJzaW5nRnVu
Y3Rpb24gPSBmYWxzZTsKIH0KIAogLy8gSW5zdGFudGlhdGUgdGhlIHR3byBmbGF2b3JzIG9mIExl
eGVyIHdlIG5lZWQgaW5zdGVhZCBvZiBwdXR0aW5nIG1vc3Qgb2YgdGhpcyBmaWxlIGluIExleGVy
LmgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgJKHJldmlzaW9uIDE4Njk1
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtODQsMTIgKzg0LDEwIEBAIHB1YmxpYzoKIAogICAgIC8vIEZ1bmN0aW9ucyB0byBzZXQg
dXAgcGFyc2luZy4KICAgICB2b2lkIHNldENvZGUoY29uc3QgU291cmNlQ29kZSYsIFBhcnNlckFy
ZW5hKik7Ci0gICAgdm9pZCBzZXRJc1JlcGFyc2luZygpIHsgbV9pc1JlcGFyc2luZyA9IHRydWU7
IH0KLSAgICBib29sIGlzUmVwYXJzaW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc1JlcGFyc2luZzsg
fQorICAgIHZvaWQgc2V0SXNSZXBhcnNpbmdGdW5jdGlvbigpIHsgbV9pc1JlcGFyc2luZ0Z1bmN0
aW9uID0gdHJ1ZTsgfQorICAgIGJvb2wgaXNSZXBhcnNpbmdGdW5jdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1faXNSZXBhcnNpbmdGdW5jdGlvbjsgfQogCi0jaWYgRU5BQkxFKEVTNl9BUlJPV0ZVTkNU
SU9OX1NZTlRBWCkKICAgICB2b2lkIHNldFRva2VuUG9zaXRpb24oSlNUb2tlbiogdG9rZW5SZWNv
cmQpOwotI2VuZGlmCiAgICAgSlNUb2tlblR5cGUgbGV4KEpTVG9rZW4qLCB1bnNpZ25lZCwgYm9v
bCBzdHJpY3RNb2RlKTsKICAgICBib29sIG5leHRUb2tlbklzQ29sb24oKTsKICAgICBpbnQgbGlu
ZU51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fbGluZU51bWJlcjsgfQpAQCAtMjI0LDcgKzIyMiw3
IEBAIHByaXZhdGU6CiAgICAgY29uc3QgVCogbV9saW5lU3RhcnQ7CiAgICAgSlNUZXh0UG9zaXRp
b24gbV9wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lOwogICAgIEpTVG9rZW5Mb2NhdGlvbiBtX2xh
c3RUb2NrZW5Mb2NhdGlvbjsKLSAgICBib29sIG1faXNSZXBhcnNpbmc7CisgICAgYm9vbCBtX2lz
UmVwYXJzaW5nRnVuY3Rpb247CiAgICAgYm9vbCBtX2F0TGluZVN0YXJ0OwogICAgIGJvb2wgbV9l
cnJvcjsKICAgICBTdHJpbmcgbV9sZXhFcnJvck1lc3NhZ2U7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAkocmV2aXNpb24gMTg2OTU0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTgyOCwzNCArODI4LDIyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsK
ICAgICB9CiAKLSAgICBpbmxpbmUgUGFyYW1ldGVyTm9kZTo6UGFyYW1ldGVyTm9kZShQYXNzUmVm
UHRyPERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZT4gcGF0dGVybikKLSAgICAgICAgOiBtX3BhdHRl
cm4ocGF0dGVybikKLSAgICAgICAgLCBtX25leHQoMCkKKyAgICBpbmxpbmUgRnVuY3Rpb25QYXJh
bWV0ZXJzOjpGdW5jdGlvblBhcmFtZXRlcnMoKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fcGF0
dGVybik7CiAgICAgfQogCi0gICAgaW5saW5lIFBhcmFtZXRlck5vZGU6OlBhcmFtZXRlck5vZGUo
UGFyYW1ldGVyTm9kZSogcHJldmlvdXMsIFBhc3NSZWZQdHI8RGVzdHJ1Y3R1cmluZ1BhdHRlcm5O
b2RlPiBwYXR0ZXJuKQotICAgICAgICA6IG1fcGF0dGVybihwYXR0ZXJuKQotICAgICAgICAsIG1f
bmV4dCgwKQotICAgIHsKLSAgICAgICAgcHJldmlvdXMtPm1fbmV4dCA9IHRoaXM7Ci0gICAgICAg
IEFTU0VSVChtX3BhdHRlcm4pOwotICAgICAgICBBU1NFUlQocHJldmlvdXMtPm1fcGF0dGVybik7
Ci0gICAgfQotCi0gICAgaW5saW5lIEZ1bmNFeHByTm9kZTo6RnVuY0V4cHJOb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlv
bkJvZHlOb2RlKiBib2R5LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcmFtZXRlck5vZGUq
IHBhcmFtZXRlcikKKyAgICBpbmxpbmUgRnVuY0V4cHJOb2RlOjpGdW5jRXhwck5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEZ1bmN0
aW9uQm9keU5vZGUqIGJvZHksIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKICAgICAgICAgOiBF
eHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2JvZHkoYm9keSkKICAgICB7Ci0g
ICAgICAgIG1fYm9keS0+ZmluaXNoUGFyc2luZyhzb3VyY2UsIHBhcmFtZXRlciwgaWRlbnQsIEZ1
bmN0aW9uRXhwcmVzc2lvbik7CisgICAgICAgIG1fYm9keS0+ZmluaXNoUGFyc2luZyhzb3VyY2Us
IGlkZW50LCBGdW5jdGlvbkV4cHJlc3Npb24pOwogICAgIH0KIAotICAgIGlubGluZSBGdW5jRGVj
bE5vZGU6OkZ1bmNEZWNsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25z
dCBJZGVudGlmaWVyJiBpZGVudCwgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgY29uc3QgU291cmNl
Q29kZSYgc291cmNlLCBQYXJhbWV0ZXJOb2RlKiBwYXJhbWV0ZXIpCisgICAgaW5saW5lIEZ1bmNE
ZWNsTm9kZTo6RnVuY0RlY2xOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UpCiAgICAgICAgIDogU3RhdGVtZW50Tm9kZShsb2NhdGlvbikKICAgICAg
ICAgLCBtX2JvZHkoYm9keSkKICAgICB7Ci0gICAgICAgIG1fYm9keS0+ZmluaXNoUGFyc2luZyhz
b3VyY2UsIHBhcmFtZXRlciwgaWRlbnQsIEZ1bmN0aW9uRGVjbGFyYXRpb24pOworICAgICAgICBt
X2JvZHktPmZpbmlzaFBhcnNpbmcoc291cmNlLCBpZGVudCwgRnVuY3Rpb25EZWNsYXJhdGlvbik7
CiAgICAgfQogCiAjaWYgRU5BQkxFKEVTNl9DTEFTU19TWU5UQVgpCkBAIC05NTQsMjYgKzk0Miwx
MSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogICAgIAotICAgIGlubGluZSBSZWY8
QXJyYXlQYXR0ZXJuTm9kZT4gQXJyYXlQYXR0ZXJuTm9kZTo6Y3JlYXRlKCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFycmF5UGF0dGVybk5vZGUpOwotICAgIH0KLSAgICAK
ICAgICBpbmxpbmUgT2JqZWN0UGF0dGVybk5vZGU6Ok9iamVjdFBhdHRlcm5Ob2RlKCkKICAgICAg
ICAgOiBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUoKQogICAgIHsKICAgICB9CiAgICAgCi0gICAg
aW5saW5lIFJlZjxPYmplY3RQYXR0ZXJuTm9kZT4gT2JqZWN0UGF0dGVybk5vZGU6OmNyZWF0ZSgp
Ci0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBPYmplY3RQYXR0ZXJuTm9kZSk7
Ci0gICAgfQotCi0gICAgaW5saW5lIFJlZjxCaW5kaW5nTm9kZT4gQmluZGluZ05vZGU6OmNyZWF0
ZShjb25zdCBJZGVudGlmaWVyJiBib3VuZFByb3BlcnR5LCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
c3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlbmQsIEFzc2lnbm1lbnRDb250ZXh0IGNvbnRl
eHQpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCaW5kaW5nTm9kZShib3Vu
ZFByb3BlcnR5LCBzdGFydCwgZW5kLCBjb250ZXh0KSk7Ci0gICAgfQotICAgIAogICAgIGlubGlu
ZSBCaW5kaW5nTm9kZTo6QmluZGluZ05vZGUoY29uc3QgSWRlbnRpZmllciYgYm91bmRQcm9wZXJ0
eSwgY29uc3QgSlNUZXh0UG9zaXRpb24mIHN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZW5k
LCBBc3NpZ25tZW50Q29udGV4dCBjb250ZXh0KQogICAgICAgICA6IERlc3RydWN0dXJpbmdQYXR0
ZXJuTm9kZSgpCiAgICAgICAgICwgbV9kaXZvdFN0YXJ0KHN0YXJ0KQpAQCAtOTgzLDcgKzk1Niw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAgICAgCi0gICAgaW5saW5lIERlc3Ry
dWN0dXJpbmdBc3NpZ25tZW50Tm9kZTo6RGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFBhc3NSZWZQdHI8RGVzdHJ1Y3R1cmluZ1BhdHRl
cm5Ob2RlPiBiaW5kaW5ncywgRXhwcmVzc2lvbk5vZGUqIGluaXRpYWxpemVyKQorICAgIGlubGlu
ZSBEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5vZGU6OkRlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBEZXN0cnVjdHVyaW5nUGF0dGVybk5v
ZGUqIGJpbmRpbmdzLCBFeHByZXNzaW9uTm9kZSogaW5pdGlhbGl6ZXIpCiAgICAgICAgIDogRXhw
cmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9iaW5kaW5ncyhiaW5kaW5ncykKICAg
ICAgICAgLCBtX2luaXRpYWxpemVyKGluaXRpYWxpemVyKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Ob2Rlcy5jcHAJKHJldmlzaW9uIDE4Njk1NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNyArMTE3LDcg
QEAgU3RhdGVtZW50Tm9kZSogU2NvcGVOb2RlOjpzaW5nbGVTdGF0ZW1lbgogCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJvZ3JhbU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIAotUHJvZ3JhbU5vZGU6OlByb2dyYW1Ob2RlKFBhcnNlckFyZW5hJiBwYXJzZXJB
cmVuYSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5k
Q29sdW1uLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhcmlhYmxlRW52aXJvbm1lbnQmIHZh
ckVudmlyb25tZW50LCBGdW5jdGlvblN0YWNrJiBmdW5jU3RhY2ssIFZhcmlhYmxlRW52aXJvbm1l
bnQmIGxleGljYWxWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1
cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQorUHJvZ3JhbU5vZGU6OlByb2dyYW1Ob2Rl
KFBhcnNlckFyZW5hJiBwYXJzZXJBcmVuYSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExv
Y2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBzdGFy
dENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZh
cmlhYmxlRW52aXJvbm1lbnQmIHZhckVudmlyb25tZW50LCBGdW5jdGlvblN0YWNrJiBmdW5jU3Rh
Y2ssIFZhcmlhYmxlRW52aXJvbm1lbnQmIGxleGljYWxWYXJpYWJsZXMsIEZ1bmN0aW9uUGFyYW1l
dGVycyosIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBp
bnQgbnVtQ29uc3RhbnRzKQogICAgIDogU2NvcGVOb2RlKHBhcnNlckFyZW5hLCBzdGFydExvY2F0
aW9uLCBlbmRMb2NhdGlvbiwgc291cmNlLCBjaGlsZHJlbiwgdmFyRW52aXJvbm1lbnQsIGZ1bmNT
dGFjaywgbGV4aWNhbFZhcmlhYmxlcywgZmVhdHVyZXMsIG51bUNvbnN0YW50cykKICAgICAsIG1f
c3RhcnRDb2x1bW4oc3RhcnRDb2x1bW4pCiAgICAgLCBtX2VuZENvbHVtbihlbmRDb2x1bW4pCkBA
IC0xMzEsNyArMTMxLDcgQEAgdm9pZCBQcm9ncmFtTm9kZTo6c2V0Q2xvc2VkVmFyaWFibGVzKFZl
YwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRXZhbE5vZGUgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotRXZhbE5vZGU6OkV2YWxOb2RlKFBhcnNlckFyZW5hJiBw
YXJzZXJBcmVuYSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCwgdW5zaWduZWQgZW5kQ29sdW1u
LCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhcmlhYmxlRW52aXJvbm1lbnQmIHZhckVudmly
b25tZW50LCBGdW5jdGlvblN0YWNrJiBmdW5jU3RhY2ssIFZhcmlhYmxlRW52aXJvbm1lbnQmIGxl
eGljYWxWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZl
YXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQorRXZhbE5vZGU6OkV2YWxOb2RlKFBhcnNlckFyZW5h
JiBwYXJzZXJBcmVuYSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCwgdW5zaWduZWQgZW5kQ29s
dW1uLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhcmlhYmxlRW52aXJvbm1lbnQmIHZhckVu
dmlyb25tZW50LCBGdW5jdGlvblN0YWNrJiBmdW5jU3RhY2ssIFZhcmlhYmxlRW52aXJvbm1lbnQm
IGxleGljYWxWYXJpYWJsZXMsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQogICAgIDog
U2NvcGVOb2RlKHBhcnNlckFyZW5hLCBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgc291cmNl
LCBjaGlsZHJlbiwgdmFyRW52aXJvbm1lbnQsIGZ1bmNTdGFjaywgbGV4aWNhbFZhcmlhYmxlcywg
ZmVhdHVyZXMsIG51bUNvbnN0YW50cykKICAgICAsIG1fZW5kQ29sdW1uKGVuZENvbHVtbikKIHsK
QEAgLTEzOSwzOSArMTM5LDExIEBAIEV2YWxOb2RlOjpFdmFsTm9kZShQYXJzZXJBcmVuYSYgcGFy
c2VyQXIKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9uQm9keU5v
ZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVmPEZ1bmN0aW9uUGFyYW1ldGVy
cz4gRnVuY3Rpb25QYXJhbWV0ZXJzOjpjcmVhdGUoUGFyYW1ldGVyTm9kZSogZmlyc3RQYXJhbWV0
ZXIpCi17Ci0gICAgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQgPSAwOwotICAgIGZvciAoUGFyYW1l
dGVyTm9kZSogcGFyYW1ldGVyID0gZmlyc3RQYXJhbWV0ZXI7IHBhcmFtZXRlcjsgcGFyYW1ldGVy
ID0gcGFyYW1ldGVyLT5uZXh0UGFyYW0oKSkKLSAgICAgICAgKytwYXJhbWV0ZXJDb3VudDsKLQot
ICAgIHNpemVfdCBvYmplY3RTaXplID0gc2l6ZW9mKEZ1bmN0aW9uUGFyYW1ldGVycykgLSBzaXpl
b2Yodm9pZCopICsgc2l6ZW9mKERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSopICogcGFyYW1ldGVy
Q291bnQ7Ci0gICAgdm9pZCogc2xvdCA9IGZhc3RNYWxsb2Mob2JqZWN0U2l6ZSk7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgKHNsb3QpIEZ1bmN0aW9uUGFyYW1ldGVycyhmaXJzdFBhcmFtZXRl
ciwgcGFyYW1ldGVyQ291bnQpKTsKLX0KLQotRnVuY3Rpb25QYXJhbWV0ZXJzOjpGdW5jdGlvblBh
cmFtZXRlcnMoUGFyYW1ldGVyTm9kZSogZmlyc3RQYXJhbWV0ZXIsIHVuc2lnbmVkIHNpemUpCi0g
ICAgOiBtX3NpemUoc2l6ZSkKLXsKLSAgICB1bnNpZ25lZCBpID0gMDsKLSAgICBmb3IgKFBhcmFt
ZXRlck5vZGUqIHBhcmFtZXRlciA9IGZpcnN0UGFyYW1ldGVyOyBwYXJhbWV0ZXI7IHBhcmFtZXRl
ciA9IHBhcmFtZXRlci0+bmV4dFBhcmFtKCkpIHsKLSAgICAgICAgYXV0byBwYXR0ZXJuID0gcGFy
YW1ldGVyLT5wYXR0ZXJuKCk7Ci0gICAgICAgIHBhdHRlcm4tPnJlZigpOwotICAgICAgICBwYXR0
ZXJucygpW2krK10gPSBwYXR0ZXJuOwotICAgIH0KLX0KLQotRnVuY3Rpb25QYXJhbWV0ZXJzOjp+
RnVuY3Rpb25QYXJhbWV0ZXJzKCkKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9z
aXplOyArK2kpCi0gICAgICAgIHBhdHRlcm5zKClbaV0tPmRlcmVmKCk7Ci19Ci0KIEZ1bmN0aW9u
Qm9keU5vZGU6OkZ1bmN0aW9uQm9keU5vZGUoCiAgICAgUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIAogICAgIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
ZW5kTG9jYXRpb24sIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIAot
ICAgIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQg
cGFyYW1ldGVyc1N0YXJ0LAotICAgIGJvb2wgaXNJblN0cmljdENvbnRleHQsIENvbnN0cnVjdG9y
S2luZCBjb25zdHJ1Y3RvcktpbmQpCisgICAgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQg
ZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIGJvb2wgaXNJblN0cmljdENv
bnRleHQsIAorICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkIHBh
cmFtZXRlckNvdW50LCBGdW5jdGlvblBhcnNlTW9kZSBtb2RlKQogICAgICAgICA6IFN0YXRlbWVu
dE5vZGUoZW5kTG9jYXRpb24pCiAgICAgICAgICwgbV9zdGFydENvbHVtbihzdGFydENvbHVtbikK
ICAgICAgICAgLCBtX2VuZENvbHVtbihlbmRDb2x1bW4pCkBAIC0xNzksMTYgKzE1MSwxNyBAQCBG
dW5jdGlvbkJvZHlOb2RlOjpGdW5jdGlvbkJvZHlOb2RlKAogICAgICAgICAsIG1fZnVuY3Rpb25O
YW1lU3RhcnQoZnVuY3Rpb25OYW1lU3RhcnQpCiAgICAgICAgICwgbV9wYXJhbWV0ZXJzU3RhcnQo
cGFyYW1ldGVyc1N0YXJ0KQogICAgICAgICAsIG1fc3RhcnRTdGFydE9mZnNldChzdGFydExvY2F0
aW9uLnN0YXJ0T2Zmc2V0KQorICAgICAgICAsIG1fcGFyYW1ldGVyQ291bnQocGFyYW1ldGVyQ291
bnQpCisgICAgICAgICwgbV9wYXJzZU1vZGUobW9kZSkKICAgICAgICAgLCBtX2lzSW5TdHJpY3RD
b250ZXh0KGlzSW5TdHJpY3RDb250ZXh0KQogICAgICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKQogewogICAgIEFTU0VSVChtX2Nv
bnN0cnVjdG9yS2luZCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSk7
CiB9CiAKLXZvaWQgRnVuY3Rpb25Cb2R5Tm9kZTo6ZmluaXNoUGFyc2luZyhjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIFBhcmFtZXRlck5vZGUqIGZpcnN0UGFyYW1ldGVyLCBjb25zdCBJZGVudGlm
aWVyJiBpZGVudCwgZW51bSBGdW5jdGlvbk1vZGUgZnVuY3Rpb25Nb2RlKQordm9pZCBGdW5jdGlv
bkJvZHlOb2RlOjpmaW5pc2hQYXJzaW5nKGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQsIGVudW0gRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSkKIHsKICAg
ICBtX3NvdXJjZSA9IHNvdXJjZTsKLSAgICBtX3BhcmFtZXRlcnMgPSBGdW5jdGlvblBhcmFtZXRl
cnM6OmNyZWF0ZShmaXJzdFBhcmFtZXRlcik7CiAgICAgbV9pZGVudCA9IGlkZW50OwogICAgIG1f
ZnVuY3Rpb25Nb2RlID0gZnVuY3Rpb25Nb2RlOwogfQpAQCAtMjAxLDE3ICsxNzQsMTcgQEAgdm9p
ZCBGdW5jdGlvbkJvZHlOb2RlOjpzZXRFbmRQb3NpdGlvbihKUwogCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25Ob2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKLUZ1bmN0aW9uTm9kZTo6RnVuY3Rpb25Ob2RlKFBhcnNlckFyZW5hJiBwYXJzZXJBcmVu
YSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29s
dW1uLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhcmlhYmxlRW52aXJvbm1lbnQmIHZhckVu
dmlyb25tZW50LCBGdW5jdGlvblN0YWNrJiBmdW5jU3RhY2ssIFZhcmlhYmxlRW52aXJvbm1lbnQm
IGxleGljYWxWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIENvZGVGZWF0
dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKK0Z1bmN0aW9uTm9kZTo6RnVuY3Rpb25O
b2RlKFBhcnNlckFyZW5hJiBwYXJzZXJBcmVuYSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFy
dExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBz
dGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4s
IFZhcmlhYmxlRW52aXJvbm1lbnQmIHZhckVudmlyb25tZW50LCBGdW5jdGlvblN0YWNrJiBmdW5j
U3RhY2ssIFZhcmlhYmxlRW52aXJvbm1lbnQmIGxleGljYWxWYXJpYWJsZXMsIEZ1bmN0aW9uUGFy
YW1ldGVycyogcGFyYW1ldGVycywgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgQ29kZUZl
YXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQogICAgIDogU2NvcGVOb2RlKHBhcnNl
ckFyZW5hLCBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgc291cmNlQ29kZSwgY2hpbGRyZW4s
IHZhckVudmlyb25tZW50LCBmdW5jU3RhY2ssIGxleGljYWxWYXJpYWJsZXMsIGZlYXR1cmVzLCBu
dW1Db25zdGFudHMpCisgICAgLCBtX3BhcmFtZXRlcnMocGFyYW1ldGVycykKICAgICAsIG1fc3Rh
cnRDb2x1bW4oc3RhcnRDb2x1bW4pCiAgICAgLCBtX2VuZENvbHVtbihlbmRDb2x1bW4pCiB7CiB9
CiAKLXZvaWQgRnVuY3Rpb25Ob2RlOjpmaW5pc2hQYXJzaW5nKFBhc3NSZWZQdHI8RnVuY3Rpb25Q
YXJhbWV0ZXJzPiBwYXJhbWV0ZXJzLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgZW51bSBGdW5j
dGlvbk1vZGUgZnVuY3Rpb25Nb2RlKQordm9pZCBGdW5jdGlvbk5vZGU6OmZpbmlzaFBhcnNpbmco
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGVudW0gRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSkK
IHsKICAgICBBU1NFUlQoIXNvdXJjZSgpLmlzTnVsbCgpKTsKLSAgICBtX3BhcmFtZXRlcnMgPSBw
YXJhbWV0ZXJzOwogICAgIG1faWRlbnQgPSBpZGVudDsKICAgICBtX2Z1bmN0aW9uTW9kZSA9IGZ1
bmN0aW9uTW9kZTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgJKHJl
dmlzaW9uIDE4Njk1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAko
d29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFz
cyBBcmd1bWVudExpc3ROb2RlOwogICAgIGNsYXNzIEJ5dGVjb2RlR2VuZXJhdG9yOwogICAgIGNs
YXNzIEZ1bmN0aW9uQm9keU5vZGU7CisgICAgY2xhc3MgRnVuY3Rpb25QYXJhbWV0ZXJzOwogICAg
IGNsYXNzIExhYmVsOwogICAgIGNsYXNzIFByb3BlcnR5TGlzdE5vZGU7CiAgICAgY2xhc3MgUmVh
ZE1vZGlmeVJlc29sdmVOb2RlOwpAQCAtMTU0MSwxOSArMTU0Miw2IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBTdGF0ZW1lbnROb2RlKiBtX2ZpbmFsbHlCbG9jazsKICAgICB9OwogCi0gICAg
Y2xhc3MgUGFyYW1ldGVyTm9kZSA6IHB1YmxpYyBQYXJzZXJBcmVuYURlbGV0YWJsZSB7Ci0gICAg
cHVibGljOgotICAgICAgICBQYXJhbWV0ZXJOb2RlKFBhc3NSZWZQdHI8RGVzdHJ1Y3R1cmluZ1Bh
dHRlcm5Ob2RlPik7Ci0gICAgICAgIFBhcmFtZXRlck5vZGUoUGFyYW1ldGVyTm9kZSosIFBhc3NS
ZWZQdHI8RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlPik7Ci0KLSAgICAgICAgRGVzdHJ1Y3R1cmlu
Z1BhdHRlcm5Ob2RlKiBwYXR0ZXJuKCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuLmdldCgpOyB9
Ci0gICAgICAgIFBhcmFtZXRlck5vZGUqIG5leHRQYXJhbSgpIGNvbnN0IHsgcmV0dXJuIG1fbmV4
dDsgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgUmVmUHRyPERlc3RydWN0dXJpbmdQYXR0ZXJu
Tm9kZT4gbV9wYXR0ZXJuOwotICAgICAgICBQYXJhbWV0ZXJOb2RlKiBtX25leHQ7Ci0gICAgfTsK
LQogICAgIGNsYXNzIFNjb3BlTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlLCBwdWJsaWMgUGFy
c2VyQXJlbmFSb290LCBwdWJsaWMgVmFyaWFibGVFbnZpcm9ubWVudE5vZGUgewogICAgIHB1Ymxp
YzoKICAgICAgICAgdHlwZWRlZiBEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjayBGdW5j
dGlvblN0YWNrOwpAQCAtMTYxOSw3ICsxNjA3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBj
bGFzcyBQcm9ncmFtTm9kZSA6IHB1YmxpYyBTY29wZU5vZGUgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgUHJvZ3JhbU5vZGUoUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0
LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2ln
bmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMqLCBWYXJpYWJsZUVudmlyb25tZW50JiwgRnVu
Y3Rpb25TdGFjayYsIFZhcmlhYmxlRW52aXJvbm1lbnQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29k
ZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKKyAgICAgICAgUHJvZ3JhbU5vZGUoUGFyc2Vy
QXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGVuZCwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNl
RWxlbWVudHMqLCBWYXJpYWJsZUVudmlyb25tZW50JiwgRnVuY3Rpb25TdGFjayYsIFZhcmlhYmxl
RW52aXJvbm1lbnQmLCBGdW5jdGlvblBhcmFtZXRlcnMqLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29k
ZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKIAogICAgICAgICB1bnNpZ25lZCBzdGFydENv
bHVtbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRDb2x1bW47IH0KICAgICAgICAgdW5zaWduZWQg
ZW5kQ29sdW1uKCkgY29uc3QgeyByZXR1cm4gbV9lbmRDb2x1bW47IH0KQEAgLTE2MzgsNyArMTYy
Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRXZhbE5vZGUgOiBwdWJsaWMgU2Nv
cGVOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEV2YWxOb2RlKFBhcnNlckFyZW5hJiwgY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIHVu
c2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiwg
VmFyaWFibGVFbnZpcm9ubWVudCYsIEZ1bmN0aW9uU3RhY2smLCBWYXJpYWJsZUVudmlyb25tZW50
JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7Cisg
ICAgICAgIEV2YWxOb2RlKFBhcnNlckFyZW5hJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFy
dCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNp
Z25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiwgVmFyaWFibGVFbnZpcm9ubWVudCYsIEZ1
bmN0aW9uU3RhY2smLCBWYXJpYWJsZUVudmlyb25tZW50JiwgRnVuY3Rpb25QYXJhbWV0ZXJzKiwg
Y29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CiAKICAg
ICAgICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBzdGFydENvbHVtbigpIGNvbnN0IHsgcmV0dXJu
IDA7IH0KICAgICAgICAgdW5zaWduZWQgZW5kQ29sdW1uKCkgY29uc3QgeyByZXR1cm4gbV9lbmRD
b2x1bW47IH0KQEAgLTE2NTEsMjMgKzE2MzksMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHVuc2lnbmVkIG1fZW5kQ29sdW1uOwogICAgIH07CiAKLSAgICBjbGFzcyBGdW5jdGlvblBhcmFt
ZXRlcnMgOiBwdWJsaWMgUmVmQ291bnRlZDxGdW5jdGlvblBhcmFtZXRlcnM+IHsKLSAgICAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZ1
bmN0aW9uUGFyYW1ldGVycyk7CisgICAgY2xhc3MgRnVuY3Rpb25QYXJhbWV0ZXJzIDogcHVibGlj
IFBhcnNlckFyZW5hRGVsZXRhYmxlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBSZWY8
RnVuY3Rpb25QYXJhbWV0ZXJzPiBjcmVhdGUoUGFyYW1ldGVyTm9kZSopOwotICAgICAgICB+RnVu
Y3Rpb25QYXJhbWV0ZXJzKCk7Ci0KLSAgICAgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2l6ZTsgfQotICAgICAgICBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUqIGF0KHVuc2ln
bmVkIGluZGV4KSB7IEFTU0VSVChpbmRleCA8IG1fc2l6ZSk7IHJldHVybiBwYXR0ZXJucygpW2lu
ZGV4XTsgfQorICAgICAgICBGdW5jdGlvblBhcmFtZXRlcnMoKTsKKyAgICAgICAgQUxXQVlTX0lO
TElORSB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJucy5zaXplKCk7IH0K
KyAgICAgICAgQUxXQVlTX0lOTElORSBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUqIGF0KHVuc2ln
bmVkIGluZGV4KSB7IHJldHVybiBtX3BhdHRlcm5zW2luZGV4XTsgfQorICAgICAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgYXBwZW5kKERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogcGF0dGVybikgeyBB
U1NFUlQocGF0dGVybik7IG1fcGF0dGVybnMuYXBwZW5kKHBhdHRlcm4pOyB9CiAKICAgICBwcml2
YXRlOgotICAgICAgICBGdW5jdGlvblBhcmFtZXRlcnMoUGFyYW1ldGVyTm9kZSosIHVuc2lnbmVk
IHNpemUpOwotCi0gICAgICAgIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSoqIHBhdHRlcm5zKCkg
eyByZXR1cm4gJm1fc3RvcmFnZTsgfQogCi0gICAgICAgIHVuc2lnbmVkIG1fc2l6ZTsKLSAgICAg
ICAgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiBtX3N0b3JhZ2U7CisgICAgICAgIFZlY3RvcjxE
ZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUqLCAzPiBtX3BhdHRlcm5zOwogICAgIH07CiAKICAgICBj
bGFzcyBGdW5jdGlvbkJvZHlOb2RlIGZpbmFsIDogcHVibGljIFN0YXRlbWVudE5vZGUsIHB1Ymxp
YyBQYXJzZXJBcmVuYURlbGV0YWJsZSB7CkBAIC0xNjc4LDEzICsxNjU5LDExIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAgICAgUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24m
IHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgCiAgICAgICAgICAgICB1bnNpZ25l
ZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3Rh
cnQsIAogICAgICAgICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0
YXJ0LCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCAKLSAgICAgICAgICAgIENvbnN0cnVjdG9yS2lu
ZCk7Ci0KLSAgICAgICAgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzKCkgY29uc3QgeyBy
ZXR1cm4gbV9wYXJhbWV0ZXJzLmdldCgpOyB9CisgICAgICAgICAgICBDb25zdHJ1Y3RvcktpbmQs
IHVuc2lnbmVkLCBGdW5jdGlvblBhcnNlTW9kZSk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7
CiAKLSAgICAgICAgdm9pZCBmaW5pc2hQYXJzaW5nKGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJhbWV0
ZXJOb2RlKiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uTW9kZSk7CisgICAgICAgIHZvaWQg
ZmluaXNoUGFyc2luZyhjb25zdCBTb3VyY2VDb2RlJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0
aW9uTW9kZSk7CiAgICAgICAgIAogICAgICAgICB2b2lkIG92ZXJyaWRlTmFtZShjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCkgeyBtX2lkZW50ID0gaWRlbnQ7IH0KICAgICAgICAgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQoKSB7IHJldHVybiBtX2lkZW50OyB9CkBAIC0xNjk4LDYgKzE2NzcsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgaW50IHBhcmFtZXRlcnNTdGFydCgpIGNvbnN0IHsgcmV0
dXJuIG1fcGFyYW1ldGVyc1N0YXJ0OyB9CiAgICAgICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGFydENvbHVtbjsgfQogICAgICAgICB1bnNpZ25lZCBlbmRDb2x1
bW4oKSBjb25zdCB7IHJldHVybiBtX2VuZENvbHVtbjsgfQorICAgICAgICB1bnNpZ25lZCBwYXJh
bWV0ZXJDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVyQ291bnQ7IH0KKyAgICAgICAg
RnVuY3Rpb25QYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZU1vZGU7
IH0KIAogICAgICAgICB2b2lkIHNldEVuZFBvc2l0aW9uKEpTVGV4dFBvc2l0aW9uKTsKIApAQCAt
MTcxMSw3ICsxNjkyLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIElkZW50aWZpZXIgbV9p
ZGVudDsKICAgICAgICAgSWRlbnRpZmllciBtX2luZmVycmVkTmFtZTsKICAgICAgICAgRnVuY3Rp
b25Nb2RlIG1fZnVuY3Rpb25Nb2RlOwotICAgICAgICBSZWZQdHI8RnVuY3Rpb25QYXJhbWV0ZXJz
PiBtX3BhcmFtZXRlcnM7CiAgICAgICAgIHVuc2lnbmVkIG1fc3RhcnRDb2x1bW47CiAgICAgICAg
IHVuc2lnbmVkIG1fZW5kQ29sdW1uOwogICAgICAgICBpbnQgbV9mdW5jdGlvbktleXdvcmRTdGFy
dDsKQEAgLTE3MTksMTkgKzE2OTksMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGludCBt
X3BhcmFtZXRlcnNTdGFydDsKICAgICAgICAgU291cmNlQ29kZSBtX3NvdXJjZTsKICAgICAgICAg
aW50IG1fc3RhcnRTdGFydE9mZnNldDsKKyAgICAgICAgdW5zaWduZWQgbV9wYXJhbWV0ZXJDb3Vu
dDsKKyAgICAgICAgRnVuY3Rpb25QYXJzZU1vZGUgbV9wYXJzZU1vZGU7CiAgICAgICAgIHVuc2ln
bmVkIG1faXNJblN0cmljdENvbnRleHQgOiAxOwogICAgICAgICB1bnNpZ25lZCBtX2NvbnN0cnVj
dG9yS2luZCA6IDI7CiAgICAgfTsKIAogICAgIGNsYXNzIEZ1bmN0aW9uTm9kZSBmaW5hbCA6IHB1
YmxpYyBTY29wZU5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRnVuY3Rpb25Ob2RlKFBhcnNl
ckFyZW5hJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBlbmQsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJj
ZUVsZW1lbnRzKiwgVmFyaWFibGVFbnZpcm9ubWVudCYsIEZ1bmN0aW9uU3RhY2smLCBWYXJpYWJs
ZUVudmlyb25tZW50JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNv
bnN0YW50cyk7CisgICAgICAgIEZ1bmN0aW9uTm9kZShQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCB1bnNpZ25lZCBz
dGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyosIFZhcmlhYmxl
RW52aXJvbm1lbnQmLCBGdW5jdGlvblN0YWNrJiwgVmFyaWFibGVFbnZpcm9ubWVudCYsIEZ1bmN0
aW9uUGFyYW1ldGVycyosIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1D
b25zdGFudHMpOwogCi0gICAgICAgIEZ1bmN0aW9uUGFyYW1ldGVycyogcGFyYW1ldGVycygpIGNv
bnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5nZXQoKTsgfQorICAgICAgICBGdW5jdGlvblBhcmFt
ZXRlcnMqIHBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnM7IH0KIAogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwKSBvdmVycmlkZTsKIAotICAgICAgICB2b2lkIGZpbmlzaFBhcnNpbmcoUGFzc1Jl
ZlB0cjxGdW5jdGlvblBhcmFtZXRlcnM+LCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25Nb2Rl
KTsKKyAgICAgICAgdm9pZCBmaW5pc2hQYXJzaW5nKGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlv
bk1vZGUpOwogICAgICAgICAKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQoKSB7IHJl
dHVybiBtX2lkZW50OyB9CiAKQEAgLTE3NDUsMTQgKzE3MjcsMTQgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgcHJpdmF0ZToKICAgICAgICAgSWRlbnRpZmllciBtX2lkZW50OwogICAgICAgICBGdW5j
dGlvbk1vZGUgbV9mdW5jdGlvbk1vZGU7Ci0gICAgICAgIFJlZlB0cjxGdW5jdGlvblBhcmFtZXRl
cnM+IG1fcGFyYW1ldGVyczsKKyAgICAgICAgRnVuY3Rpb25QYXJhbWV0ZXJzKiBtX3BhcmFtZXRl
cnM7CiAgICAgICAgIHVuc2lnbmVkIG1fc3RhcnRDb2x1bW47CiAgICAgICAgIHVuc2lnbmVkIG1f
ZW5kQ29sdW1uOwogICAgIH07CiAKICAgICBjbGFzcyBGdW5jRXhwck5vZGUgOiBwdWJsaWMgRXhw
cmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRnVuY0V4cHJOb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlvbkJvZHlOb2RlKiwgY29u
c3QgU291cmNlQ29kZSYsIFBhcmFtZXRlck5vZGUqID0gMCk7CisgICAgICAgIEZ1bmNFeHByTm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25Cb2R5
Tm9kZSosIGNvbnN0IFNvdXJjZUNvZGUmKTsKIAogICAgICAgICBGdW5jdGlvbkJvZHlOb2RlKiBi
b2R5KCkgeyByZXR1cm4gbV9ib2R5OyB9CiAKQEAgLTE3ODMsMTEgKzE3NjUsOSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICB9OwogI2VuZGlmCiAKLSAgICBjbGFzcyBEZXN0cnVjdHVyaW5nUGF0dGVy
bk5vZGUgOiBwdWJsaWMgUmVmQ291bnRlZDxEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU+IHsKLSAg
ICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKTsKLSAg
ICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0KKyAgICBjbGFzcyBEZXN0cnVjdHVyaW5n
UGF0dGVybk5vZGUgOiBwdWJsaWMgUGFyc2VyQXJlbmFEZWxldGFibGUgewogICAgIHB1YmxpYzoK
KyAgICAgICAgdmlydHVhbCB+RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKCkgeyB9CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBjb2xsZWN0Qm91bmRJZGVudGlmaWVycyhWZWN0b3I8SWRlbnRpZmllcj4m
KSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBiaW5kVmFsdWUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiBzb3VyY2UpIGNvbnN0ID0gMDsKICAgICAgICAgdmlydHVhbCB2
b2lkIHRvU3RyaW5nKFN0cmluZ0J1aWxkZXImKSBjb25zdCA9IDA7CkBAIC0xNzk1LDIxICsxNzc1
LDE5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNCaW5kaW5nTm9k
ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCog
ZW1pdERpcmVjdEJpbmRpbmcoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiwgRXhwcmVz
c2lvbk5vZGUqKSB7IHJldHVybiAwOyB9CiAgICAgICAgIAotICAgICAgICB2aXJ0dWFsIH5EZXN0
cnVjdHVyaW5nUGF0dGVybk5vZGUoKSA9IDA7Ci0gICAgICAgIAogICAgIHByb3RlY3RlZDoKICAg
ICAgICAgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKCk7CiAgICAgfTsKIAogICAgIGNsYXNzIEFy
cmF5UGF0dGVybk5vZGUgOiBwdWJsaWMgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlLCBwdWJsaWMg
VGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKKyAgICAgICAgQXJyYXlQYXR0
ZXJuTm9kZSgpOwogICAgICAgICBlbnVtIGNsYXNzIEJpbmRpbmdUeXBlIHsKICAgICAgICAgICAg
IEVsaXNpb24sCiAgICAgICAgICAgICBFbGVtZW50LAogICAgICAgICAgICAgUmVzdEVsZW1lbnQK
ICAgICAgICAgfTsKIAotICAgICAgICBzdGF0aWMgUmVmPEFycmF5UGF0dGVybk5vZGU+IGNyZWF0
ZSgpOwogICAgICAgICB2b2lkIGFwcGVuZEluZGV4KEJpbmRpbmdUeXBlIGJpbmRpbmdUeXBlLCBj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUqIG5vZGUsIEV4
cHJlc3Npb25Ob2RlKiBkZWZhdWx0VmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fdGFy
Z2V0UGF0dGVybnMuYXBwZW5kKHsgYmluZGluZ1R5cGUsIG5vZGUsIGRlZmF1bHRWYWx1ZSB9KTsK
QEAgLTE4MTgsMTAgKzE3OTYsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcml2YXRlOgogICAg
ICAgICBzdHJ1Y3QgRW50cnkgewogICAgICAgICAgICAgQmluZGluZ1R5cGUgYmluZGluZ1R5cGU7
Ci0gICAgICAgICAgICBSZWZQdHI8RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlPiBwYXR0ZXJuOwor
ICAgICAgICAgICAgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiBwYXR0ZXJuOwogICAgICAgICAg
ICAgRXhwcmVzc2lvbk5vZGUqIGRlZmF1bHRWYWx1ZTsKICAgICAgICAgfTsKLSAgICAgICAgQXJy
YXlQYXR0ZXJuTm9kZSgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdEJvdW5kSWRlbnRp
ZmllcnMoVmVjdG9yPElkZW50aWZpZXI+JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBiaW5kVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKikgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdERpcmVjdEJpbmRpbmco
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkc3QsIEV4cHJlc3Npb25Ob2RlKikgb3Zl
cnJpZGU7CkBAIC0xODMyLDIxICsxODA5LDIwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIAogICAg
IGNsYXNzIE9iamVjdFBhdHRlcm5Ob2RlIDogcHVibGljIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9k
ZSB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUmVmPE9iamVjdFBhdHRlcm5Ob2RlPiBj
cmVhdGUoKTsKKyAgICAgICAgT2JqZWN0UGF0dGVybk5vZGUoKTsKICAgICAgICAgdm9pZCBhcHBl
bmRFbnRyeShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlm
aWVyLCBib29sIHdhc1N0cmluZywgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiBwYXR0ZXJuLCBF
eHByZXNzaW9uTm9kZSogZGVmYXVsdFZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBtX3Rh
cmdldFBhdHRlcm5zLmFwcGVuZChFbnRyeXsgaWRlbnRpZmllciwgd2FzU3RyaW5nLCBwYXR0ZXJu
LCBkZWZhdWx0VmFsdWUgfSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgcHJpdmF0ZToKLSAg
ICAgICAgT2JqZWN0UGF0dGVybk5vZGUoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RC
b3VuZElkZW50aWZpZXJzKFZlY3RvcjxJZGVudGlmaWVyPiYpIGNvbnN0IG92ZXJyaWRlOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgYmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCopIGNvbnN0IG92ZXJyaWRlOwogICAgICAgICB2aXJ0dWFsIHZvaWQgdG9TdHJpbmcoU3RyaW5n
QnVpbGRlciYpIGNvbnN0IG92ZXJyaWRlOwogICAgICAgICBzdHJ1Y3QgRW50cnkgewogICAgICAg
ICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWU7CiAgICAgICAgICAgICBib29sIHdhc1N0cmlu
ZzsKLSAgICAgICAgICAgIFJlZlB0cjxEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU+IHBhdHRlcm47
CisgICAgICAgICAgICBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUqIHBhdHRlcm47CiAgICAgICAg
ICAgICBFeHByZXNzaW9uTm9kZSogZGVmYXVsdFZhbHVlOwogICAgICAgICB9OwogICAgICAgICBW
ZWN0b3I8RW50cnk+IG1fdGFyZ2V0UGF0dGVybnM7CkBAIC0xODU0LDE1ICsxODMwLDEzIEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQmluZGluZ05vZGUgOiBwdWJsaWMgRGVzdHJ1Y3R1
cmluZ1BhdHRlcm5Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBSZWY8QmluZGlu
Z05vZGU+IGNyZWF0ZShjb25zdCBJZGVudGlmaWVyJiBib3VuZFByb3BlcnR5LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlbmQsIEFzc2lnbm1lbnRD
b250ZXh0KTsKKyAgICAgICAgQmluZGluZ05vZGUoY29uc3QgSWRlbnRpZmllciYgYm91bmRQcm9w
ZXJ0eSwgY29uc3QgSlNUZXh0UG9zaXRpb24mIHN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
ZW5kLCBBc3NpZ25tZW50Q29udGV4dCk7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGJvdW5k
UHJvcGVydHkoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kUHJvcGVydHk7IH0KIAogICAgICAgICBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fZGl2b3RT
dGFydDsgfQogICAgICAgICBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQoKSBjb25zdCB7
IHJldHVybiBtX2Rpdm90RW5kOyB9CiAgICAgICAgIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEJp
bmRpbmdOb2RlKGNvbnN0IElkZW50aWZpZXImIGJvdW5kUHJvcGVydHksIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBzdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVuZCwgQXNzaWdubWVudENvbnRl
eHQpOwotCiAgICAgICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0Qm91bmRJZGVudGlmaWVycyhWZWN0
b3I8SWRlbnRpZmllcj4mKSBjb25zdCBvdmVycmlkZTsKICAgICAgICAgdmlydHVhbCB2b2lkIGJp
bmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKSBjb25zdCBvdmVycmlkZTsK
ICAgICAgICAgdmlydHVhbCB2b2lkIHRvU3RyaW5nKFN0cmluZ0J1aWxkZXImKSBjb25zdCBvdmVy
cmlkZTsKQEAgLTE4NzcsOCArMTg1MSw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3Mg
RGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJs
aWMgUGFyc2VyQXJlbmFEZWxldGFibGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRGVzdHJ1Y3R1
cmluZ0Fzc2lnbm1lbnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFBhc3NSZWZQdHI8RGVz
dHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlPiwgRXhwcmVzc2lvbk5vZGUqKTsKLSAgICAgICAgRGVzdHJ1
Y3R1cmluZ1BhdHRlcm5Ob2RlKiBiaW5kaW5ncygpIHsgcmV0dXJuIG1fYmluZGluZ3MuZ2V0KCk7
IH0KKyAgICAgICAgRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSosIEV4cHJlc3Npb25Ob2RlKik7CisgICAg
ICAgIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogYmluZGluZ3MoKSB7IHJldHVybiBtX2JpbmRp
bmdzOyB9CiAgICAgICAgIAogICAgICAgICB1c2luZyBQYXJzZXJBcmVuYURlbGV0YWJsZTo6b3Bl
cmF0b3IgbmV3OwogCkBAIC0xODg3LDEzICsxODYxLDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNEZXN0cnVjdHVyaW5nTm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwogCi0gICAgICAg
IFJlZlB0cjxEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU+IG1fYmluZGluZ3M7CisgICAgICAgIERl
c3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogbV9iaW5kaW5nczsKICAgICAgICAgRXhwcmVzc2lvbk5v
ZGUqIG1faW5pdGlhbGl6ZXI7CiAgICAgfTsKIAogICAgIGNsYXNzIEZ1bmNEZWNsTm9kZSA6IHB1
YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEZ1bmNEZWNsTm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25Cb2R5Tm9k
ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJhbWV0ZXJOb2RlKiA9IDApOworICAgICAgICBGdW5j
RGVjbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0
aW9uQm9keU5vZGUqLCBjb25zdCBTb3VyY2VDb2RlJik7CiAKICAgICAgICAgdmlydHVhbCBib29s
IGlzRnVuY0RlY2xOb2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgICAg
ICBGdW5jdGlvbkJvZHlOb2RlKiBib2R5KCkgeyByZXR1cm4gbV9ib2R5OyB9CkBAIC0xOTg5LDEx
ICsxOTYzLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIENvbnN0RGVjbE5vZGUqIHRhaWw7
CiAgICAgfTsKIAotICAgIHN0cnVjdCBQYXJhbWV0ZXJMaXN0IHsKLSAgICAgICAgUGFyYW1ldGVy
Tm9kZSogaGVhZDsKLSAgICAgICAgUGFyYW1ldGVyTm9kZSogdGFpbDsKLSAgICB9OwotCiAgICAg
c3RydWN0IENsYXVzZUxpc3QgewogICAgICAgICBDbGF1c2VMaXN0Tm9kZSogaGVhZDsKICAgICAg
ICAgQ2xhdXNlTGlzdE5vZGUqIHRhaWw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuY3BwCShyZXZpc2lvbiAxODY5NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MSw4ICsxOTEsNyBAQCB2b2lk
IFBhcnNlcjxMZXhlclR5cGU+Ojpsb2dFcnJvcihib29sIHNoCiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBMZXhlclR5cGU+CiBQYXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2VyKAotICAgIFZNKiB2bSwgY29u
c3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIAot
ICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1v
ZGUsIAorICAgIFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1BhcnNlckJ1aWx0
aW5Nb2RlIGJ1aWx0aW5Nb2RlLCAKICAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwg
SlNQYXJzZXJDb2RlVHlwZSBjb2RlVHlwZSwgCiAgICAgQ29uc3RydWN0b3JLaW5kIGRlZmF1bHRD
b25zdHJ1Y3RvcktpbmQsIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlKQogICAgIDogbV92bSh2bSkK
QEAgLTIyMywzMCArMjIyLDcgQEAgUGFyc2VyPExleGVyVHlwZT46OlBhcnNlcigKICAgICAgICAg
c2NvcGUtPnNldElzRnVuY3Rpb24oKTsKICAgICBpZiAoc3RyaWN0TW9kZSA9PSBKU1BhcnNlclN0
cmljdE1vZGU6OlN0cmljdCkKICAgICAgICAgc2NvcGUtPnNldFN0cmljdE1vZGUoKTsKLSAgICBp
ZiAocGFyYW1ldGVycykgewotICAgICAgICBib29sIGhhZEJpbmRpbmdQYXJhbWV0ZXJzID0gZmFs
c2U7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLT5zaXplKCk7
IGkrKykgewotICAgICAgICAgICAgYXV0byBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXJzLT5hdChpKTsK
LSAgICAgICAgICAgIGlmICghcGFyYW1ldGVyLT5pc0JpbmRpbmdOb2RlKCkpIHsKLSAgICAgICAg
ICAgICAgICBoYWRCaW5kaW5nUGFyYW1ldGVycyA9IHRydWU7Ci0gICAgICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzY29wZS0+ZGVjbGFyZVBhcmFtZXRl
cigmc3RhdGljX2Nhc3Q8QmluZGluZ05vZGUqPihwYXJhbWV0ZXIpLT5ib3VuZFByb3BlcnR5KCkp
OwotICAgICAgICB9Ci0gICAgICAgIGlmIChoYWRCaW5kaW5nUGFyYW1ldGVycykgewotICAgICAg
ICAgICAgVmVjdG9yPElkZW50aWZpZXI+IGJvdW5kUGFyYW1ldGVyTmFtZXM7Ci0gICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFyYW1ldGVycy0+c2l6ZSgpOyBpKyspIHsKLSAg
ICAgICAgICAgICAgICBhdXRvIHBhcmFtZXRlciA9IHBhcmFtZXRlcnMtPmF0KGkpOwotICAgICAg
ICAgICAgICAgIGlmIChwYXJhbWV0ZXItPmlzQmluZGluZ05vZGUoKSkKLSAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgcGFyYW1ldGVyLT5jb2xsZWN0Qm91bmRJ
ZGVudGlmaWVycyhib3VuZFBhcmFtZXRlck5hbWVzKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGZvciAoYXV0byYgYm91bmRQYXJhbWV0ZXJOYW1lIDogYm91bmRQYXJhbWV0ZXJOYW1lcykK
LSAgICAgICAgICAgICAgICBzY29wZS0+ZGVjbGFyZVZhcmlhYmxlKCZib3VuZFBhcmFtZXRlck5h
bWUpOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmICghbmFtZS5pc051bGwoKSkKLSAgICAgICAg
c2NvcGUtPmRlY2xhcmVDYWxsZWUoJm5hbWUpOworCiAgICAgbmV4dCgpOwogfQogCkBAIC0yNTYs
MTggKzIzMiw1NiBAQCBQYXJzZXI8TGV4ZXJUeXBlPjo6flBhcnNlcigpCiB9CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBMZXhlclR5cGU+Ci1TdHJpbmcgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5u
ZXIoKQorU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKGNvbnN0IElkZW50aWZp
ZXImIGNhbGxlZU5hbWUsIEZ1bmN0aW9uUGFyc2VNb2RlIHBhcnNlTW9kZSkKIHsKICAgICBTdHJp
bmcgcGFyc2VFcnJvciA9IFN0cmluZygpOwogICAgIAogICAgIEFTVEJ1aWxkZXIgY29udGV4dChj
b25zdF9jYXN0PFZNKj4obV92bSksIG1fcGFyc2VyQXJlbmEsIGNvbnN0X2Nhc3Q8U291cmNlQ29k
ZSo+KG1fc291cmNlKSk7Ci0gICAgaWYgKG1fbGV4ZXItPmlzUmVwYXJzaW5nKCkpCi0gICAgICAg
IG1fc3RhdGVtZW50RGVwdGgtLTsKICAgICBTY29wZVJlZiBzY29wZSA9IGN1cnJlbnRTY29wZSgp
OwogICAgIHNjb3BlLT5zZXRJc0xleGljYWxTY29wZSgpOwogCi0gICAgU291cmNlRWxlbWVudHMq
IHNvdXJjZUVsZW1lbnRzID0gcGFyc2VTb3VyY2VFbGVtZW50cyhjb250ZXh0LCBDaGVja0ZvclN0
cmljdE1vZGUsIFN0YW5kYXJkRnVuY3Rpb25QYXJzZVR5cGUpOwotICAgIGlmICghc291cmNlRWxl
bWVudHMgfHwgIWNvbnN1bWUoRU9GVE9LKSkgeworICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9k
eUV4cHJlc3Npb24gPSBmYWxzZTsKKyAgICBpZiAobV9sZXhlci0+aXNSZXBhcnNpbmdGdW5jdGlv
bigpKSB7CisgICAgICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiBmdW5jdGlvbklu
Zm87CisgICAgICAgIHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKGNvbnRleHQsIHBhcnNlTW9kZSwg
ZnVuY3Rpb25JbmZvKTsKKyAgICAgICAgbV9wYXJhbWV0ZXJzID0gZnVuY3Rpb25JbmZvLnBhcmFt
ZXRlcnM7CisKKyNpZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQorICAgICAgICBp
ZiAocGFyc2VNb2RlID09IEFycm93RnVuY3Rpb25Nb2RlICYmICFoYXNFcnJvcigpKSB7CisgICAg
ICAgICAgICAvLyBUaGUgb25seSB3YXkgd2UgY291bGQgaGF2ZSBhbiBlcnJvciB3aWxlIHJlcGFy
c2luZyBpcyBpZiB3ZSBydW4gb3V0IG9mIHN0YWNrIHNwYWNlLgorICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQobWF0Y2goQVJST1dGVU5DVElPTikpOworICAgICAgICAgICAgbmV4dCgpOworICAg
ICAgICAgICAgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gPSAhbWF0Y2goT1BFTkJSQUNF
KTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgfQorCisgICAgaWYgKCFjYWxsZWVOYW1lLmlzTnVs
bCgpKQorICAgICAgICBzY29wZS0+ZGVjbGFyZUNhbGxlZSgmY2FsbGVlTmFtZSk7CisKKyAgICBp
ZiAobV9sZXhlci0+aXNSZXBhcnNpbmdGdW5jdGlvbigpKQorICAgICAgICBtX3N0YXRlbWVudERl
cHRoLS07CisKKyAgICBTb3VyY2VFbGVtZW50cyogc291cmNlRWxlbWVudHMgPSBudWxscHRyOwor
ICAgIC8vIFRoZSBvbmx5IHdheSB3ZSBjYW4gZXJyb3IgdGhpcyBlYXJseSBpcyBpZiB3ZSByZXBh
cnNlIGEgZnVuY3Rpb24gYW5kIHdlIHJ1biBvdXQgb2Ygc3RhY2sgc3BhY2UuCisgICAgaWYgKCFo
YXNFcnJvcigpKSB7CisgICAgICAgIGlmIChpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikK
KyAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VBcnJvd0Z1bmN0aW9uU2luZ2xlRXhw
cmVzc2lvbkJvZHlTb3VyY2VFbGVtZW50cyhjb250ZXh0KTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgc291cmNlRWxlbWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIENoZWNr
Rm9yU3RyaWN0TW9kZSk7CisgICAgfQorCisgICAgYm9vbCB2YWxpZEVuZGluZzsKKyAgICBpZiAo
aXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pIHsKKyAgICAgICAgQVNTRVJUKG1fbGV4ZXIt
PmlzUmVwYXJzaW5nRnVuY3Rpb24oKSk7CisgICAgICAgIC8vIFdoZW4gd2UgcmVwYXJzZSBhbmQg
c3RhY2sgb3ZlcmZsb3csIHdlJ3JlIG5vdCBndWFyYW50ZWVkIGEgdmFsaWQgZW5kaW5nLiBJZiB3
ZSBkb24ndCBydW4gb3V0IG9mIHN0YWNrIHNwYWNlLAorICAgICAgICAvLyB0aGVuIG9mIGNvdXJz
ZSB0aGlzIHdpbGwgYWx3YXlzIGJlIHZhbGlkIGJlY2F1c2Ugd2UgYWxyZWFkeSBwYXJzZWQgZm9y
IHN5bnRheCBlcnJvcnMuIEJ1dCB3ZSBtdXN0CisgICAgICAgIC8vIGJlIGNhdXRpb3VzIGluIGNh
c2Ugd2UgcnVuIG91dCBvZiBzdGFjayBzcGFjZS4KKyAgICAgICAgdmFsaWRFbmRpbmcgPSBpc0Vu
ZE9mQXJyb3dGdW5jdGlvbigpOyAKKyAgICB9IGVsc2UKKyAgICAgICAgdmFsaWRFbmRpbmcgPSBj
b25zdW1lKEVPRlRPSyk7CisKKyAgICBpZiAoIXNvdXJjZUVsZW1lbnRzIHx8ICF2YWxpZEVuZGlu
ZykgewogICAgICAgICBpZiAoaGFzRXJyb3IoKSkKICAgICAgICAgICAgIHBhcnNlRXJyb3IgPSBt
X2Vycm9yTWVzc2FnZTsKICAgICAgICAgZWxzZQpAQCAtMzQ2LDcgKzM2MCw3IEBAIGJvb2wgUGFy
c2VyPExleGVyVHlwZT46OmFsbG93QXV0b21hdGljU2UKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1l
IExleGVyVHlwZT4KLXRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1l
bnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJiBj
b250ZXh0LCBTb3VyY2VFbGVtZW50c01vZGUgbW9kZSwgRnVuY3Rpb25QYXJzZVR5cGUgZnVuY3Rp
b25QYXJzZVR5cGUpCit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVt
ZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYg
Y29udGV4dCwgU291cmNlRWxlbWVudHNNb2RlIG1vZGUpCiB7CiAgICAgY29uc3QgdW5zaWduZWQg
bGVuZ3RoT2ZVc2VTdHJpY3RMaXRlcmFsID0gMTI7IC8vICJ1c2Ugc3RyaWN0Ii5sZW5ndGgKICAg
ICBUcmVlU291cmNlRWxlbWVudHMgc291cmNlRWxlbWVudHMgPSBjb250ZXh0LmNyZWF0ZVNvdXJj
ZUVsZW1lbnRzKCk7CkBAIC0zNTYsMjIgKzM3MCw2IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZVNvdXJjZUUKICAgICBhdXRvIHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQb2ludCgp
OwogICAgIGJvb2wgaGFzU2V0U3RyaWN0ID0gZmFsc2U7CiAgICAgCi0jaWYgRU5BQkxFKEVTNl9B
UlJPV0ZVTkNUSU9OX1NZTlRBWCkKLSAgICBpZiAobWF0Y2goQVJST1dGVU5DVElPTikpIHsKLSAg
ICAgICAgVHJlZVN0YXRlbWVudCBhcnJvd2Z1bmN0aW9uU3RhdGVtZW50ID0gcGFyc2VBcnJvd0Z1
bmN0aW9uU2luZ2xlRXhwcmVzc2lvbkJvZHkoY29udGV4dCwgZnVuY3Rpb25QYXJzZVR5cGUpOwot
ICAgICAgICAgICAgCi0gICAgICAgIGlmIChhcnJvd2Z1bmN0aW9uU3RhdGVtZW50KSB7Ci0gICAg
ICAgICAgICBjb250ZXh0LnNldEVuZE9mZnNldChhcnJvd2Z1bmN0aW9uU3RhdGVtZW50LCBtX2xh
c3RUb2tlbkVuZFBvc2l0aW9uLm9mZnNldCk7Ci0gICAgICAgICAgICBjb250ZXh0LmFwcGVuZFN0
YXRlbWVudChzb3VyY2VFbGVtZW50cywgYXJyb3dmdW5jdGlvblN0YXRlbWVudCk7Ci0gICAgICAg
IH0KLSAgICAgICAgCi0gICAgICAgIHByb3BhZ2F0ZUVycm9yKCk7Ci0gICAgICAgIHJldHVybiBz
b3VyY2VFbGVtZW50czsKLSAgICB9Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShmdW5jdGlvblBh
cnNlVHlwZSk7Ci0jZW5kaWYKLSAgICAKICAgICB3aGlsZSAoVHJlZVN0YXRlbWVudCBzdGF0ZW1l
bnQgPSBwYXJzZVN0YXRlbWVudExpc3RJdGVtKGNvbnRleHQsIGRpcmVjdGl2ZSwgJmRpcmVjdGl2
ZUxpdGVyYWxMZW5ndGgpKSB7CiAgICAgICAgIGlmIChtb2RlID09IENoZWNrRm9yU3RyaWN0TW9k
ZSAmJiAhc2Vlbk5vbkRpcmVjdGl2ZSkgewogICAgICAgICAgICAgaWYgKGRpcmVjdGl2ZSkgewpA
QCAtNjYyLDI0ICs2NjAsMTMgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRGVz
dHJ1YwogICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbih0b2tlbi5tX2xv
Y2F0aW9uLCBuYW1lLCB0b2tlbi5tX3N0YXJ0UG9zaXRpb24sIHRva2VuLm1fZW5kUG9zaXRpb24s
IGJpbmRpbmdDb250ZXh0KTsKIH0KIAotI2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5U
QVgpCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgotdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUFycm93RnVuY3Rp
b25TaW5nbGVFeHByZXNzaW9uQm9keShUcmVlQnVpbGRlciYgY29udGV4dCwgRnVuY3Rpb25QYXJz
ZVR5cGUgcGFyc2VUeXBlKQordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNl
RWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXJyb3dGdW5jdGlvblNpbmdsZUV4cHJl
c3Npb25Cb2R5U291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7Ci0gICAgQVNT
RVJUKG1hdGNoKEFSUk9XRlVOQ1RJT04pKTsKKyAgICBBU1NFUlQoIW1hdGNoKE9QRU5CUkFDRSkp
OwogCi0gICAgLy8gV2hlbiByZXBhcnNpbmcgcGhhc2UsIHBhcnNlVHlwZSBiZWNvbWVzIFN0YW5k
YXJkRnVuY3Rpb25QYXJzZVR5cGUgZXZlbiBpZiB0aGUgZnVuY3Rpb24gaXMgYXJyb3cgZnVuY3Rp
b24uCi0gICAgLy8gVGhpcyBjb25kaXRpb24gY29uc2lkZXJzIHRoZSBmb2xsb3dpbmcgc2l0dWF0
aW9ucy4KLSAgICAvLyAoMSk6IElmIHdlIGFyZSBpbiB0aGUgcmVwYXJzaW5nIHBoYXNlLCB0aGlz
IGFycm93IGZ1bmN0aW9uIGlzIGFscmVhZHkgcGFyc2VkIG9uY2UsIHNvIHRoZXJlIGlzIG5vIHN5
bnRheCBlcnJvci4KLSAgICAvLyAoMik6IEJ1dCBpZiB3ZSBhcmUgbm90IGluIHRoZSByZXBhcnNp
bmcgcGhhc2UsIHdlIHNob3VsZCBjaGVjayB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBpbiB0aGUg
Y29udGV4dCBvZiB0aGUgYXJyb3cgZnVuY3Rpb24uCi0gICAgaWYgKCFtX2xleGVyLT5pc1JlcGFy
c2luZygpICYmIHBhcnNlVHlwZSAhPSBBcnJvd0Z1bmN0aW9uUGFyc2VUeXBlKQotICAgICAgICBm
YWlsRHVlVG9VbmV4cGVjdGVkVG9rZW4oKTsKLSAgICAKICAgICBKU1Rva2VuTG9jYXRpb24gbG9j
YXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICBKU1RleHRQb3NpdGlvbiBzdGFydCA9IHRva2Vu
U3RhcnRQb3NpdGlvbigpOwotICAgIEpTVGV4dFBvc2l0aW9uIGVuZCA9IHRva2VuRW5kUG9zaXRp
b24oKTsKLQotICAgIG5leHQoKTsKIAogICAgIGZhaWxJZlN0YWNrT3ZlcmZsb3coKTsKICAgICBU
cmVlRXhwcmVzc2lvbiBleHByID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsK
QEAgLTY4OSwxNCArNjc2LDE4IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0
YXRlbWUKIAogICAgIGZhaWxJZkZhbHNlKGlzRW5kT2ZBcnJvd0Z1bmN0aW9uKCksICJFeHBlY3Rl
ZCBhICc7JywgJ10nLCAnfScsICcpJywgJywnLCBsaW5lIHRlcm1pbmF0b3Igb3IgRU9GIGZvbGxv
d2luZyBhIGFycm93IGZ1bmN0aW9uIHN0YXRlbWVudCIpOwogCi0gICAgZW5kID0gdG9rZW5FbmRQ
b3NpdGlvbigpOworICAgIEpTVGV4dFBvc2l0aW9uIGVuZCA9IHRva2VuRW5kUG9zaXRpb24oKTsK
ICAgICAKICAgICBpZiAoIW1fbGV4ZXItPnByZXZUZXJtaW5hdG9yKCkpCiAgICAgICAgIHNldEVu
ZE9mU3RhdGVtZW50KCk7CiAKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVSZXR1cm5TdGF0ZW1l
bnQobG9jYXRpb24sIGV4cHIsIHN0YXJ0LCBlbmQpOworICAgIFRyZWVTb3VyY2VFbGVtZW50cyBz
b3VyY2VFbGVtZW50cyA9IGNvbnRleHQuY3JlYXRlU291cmNlRWxlbWVudHMoKTsKKyAgICBUcmVl
U3RhdGVtZW50IGJvZHkgPSBjb250ZXh0LmNyZWF0ZVJldHVyblN0YXRlbWVudChsb2NhdGlvbiwg
ZXhwciwgc3RhcnQsIGVuZCk7CisgICAgY29udGV4dC5zZXRFbmRPZmZzZXQoYm9keSwgbV9sYXN0
VG9rZW5FbmRQb3NpdGlvbi5vZmZzZXQpOworICAgIGNvbnRleHQuYXBwZW5kU3RhdGVtZW50KHNv
dXJjZUVsZW1lbnRzLCBib2R5KTsKKworICAgIHJldHVybiBzb3VyY2VFbGVtZW50czsKIH0KLSNl
bmRpZgogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gUGFyc2VyPExleGVyVHlwZT46OnRy
eVBhcnNlRGVzdHJ1Y3R1cmluZ1BhdHRlcm5FeHByZXNzaW9uKFRyZWVCdWlsZGVyJiBjb250ZXh0
LCBBc3NpZ25tZW50Q29udGV4dCBiaW5kaW5nQ29udGV4dCkKQEAgLTEyMjksNyArMTIyMCw3IEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUNsYXVzZUwKICAgICBUcmVlRXhwcmVz
c2lvbiBjb25kaXRpb24gPSBwYXJzZUV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgZmFpbElmRmFs
c2UoY29uZGl0aW9uLCAiQ2Fubm90IHBhcnNlIHN3aXRjaCBjbGF1c2UiKTsKICAgICBjb25zdW1l
T3JGYWlsKENPTE9OLCAiRXhwZWN0ZWQgYSAnOicgYWZ0ZXIgc3dpdGNoIGNsYXVzZSBleHByZXNz
aW9uIik7Ci0gICAgVHJlZVNvdXJjZUVsZW1lbnRzIHN0YXRlbWVudHMgPSBwYXJzZVNvdXJjZUVs
ZW1lbnRzKGNvbnRleHQsIERvbnRDaGVja0ZvclN0cmljdE1vZGUsIFN0YW5kYXJkRnVuY3Rpb25Q
YXJzZVR5cGUpOworICAgIFRyZWVTb3VyY2VFbGVtZW50cyBzdGF0ZW1lbnRzID0gcGFyc2VTb3Vy
Y2VFbGVtZW50cyhjb250ZXh0LCBEb250Q2hlY2tGb3JTdHJpY3RNb2RlKTsKICAgICBmYWlsSWZG
YWxzZShzdGF0ZW1lbnRzLCAiQ2Fubm90IHBhcnNlIHRoZSBib2R5IG9mIGEgc3dpdGNoIGNsYXVz
ZSIpOwogICAgIFRyZWVDbGF1c2UgY2xhdXNlID0gY29udGV4dC5jcmVhdGVDbGF1c2UoY29uZGl0
aW9uLCBzdGF0ZW1lbnRzKTsKICAgICBjb250ZXh0LnNldFN0YXJ0T2Zmc2V0KGNsYXVzZSwgc3Rh
cnRPZmZzZXQpOwpAQCAtMTI0Miw3ICsxMjMzLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlQ2xhdXNlTAogICAgICAgICBUcmVlRXhwcmVzc2lvbiBjb25kaXRpb24gPSBwYXJz
ZUV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgICAgIGZhaWxJZkZhbHNlKGNvbmRpdGlvbiwgIkNh
bm5vdCBwYXJzZSBzd2l0Y2ggY2FzZSBleHByZXNzaW9uIik7CiAgICAgICAgIGNvbnN1bWVPckZh
aWwoQ09MT04sICJFeHBlY3RlZCBhICc6JyBhZnRlciBzd2l0Y2ggY2xhdXNlIGV4cHJlc3Npb24i
KTsKLSAgICAgICAgVHJlZVNvdXJjZUVsZW1lbnRzIHN0YXRlbWVudHMgPSBwYXJzZVNvdXJjZUVs
ZW1lbnRzKGNvbnRleHQsIERvbnRDaGVja0ZvclN0cmljdE1vZGUsIFN0YW5kYXJkRnVuY3Rpb25Q
YXJzZVR5cGUpOworICAgICAgICBUcmVlU291cmNlRWxlbWVudHMgc3RhdGVtZW50cyA9IHBhcnNl
U291cmNlRWxlbWVudHMoY29udGV4dCwgRG9udENoZWNrRm9yU3RyaWN0TW9kZSk7CiAgICAgICAg
IGZhaWxJZkZhbHNlKHN0YXRlbWVudHMsICJDYW5ub3QgcGFyc2UgdGhlIGJvZHkgb2YgYSBzd2l0
Y2ggY2xhdXNlIik7CiAgICAgICAgIGNsYXVzZSA9IGNvbnRleHQuY3JlYXRlQ2xhdXNlKGNvbmRp
dGlvbiwgc3RhdGVtZW50cyk7CiAgICAgICAgIGNvbnRleHQuc2V0U3RhcnRPZmZzZXQoY2xhdXNl
LCBzdGFydE9mZnNldCk7CkBAIC0xMjU5LDcgKzEyNTAsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVDbGF1c2UgCiAgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSB0b2tlblN0
YXJ0KCk7CiAgICAgbmV4dCgpOwogICAgIGNvbnN1bWVPckZhaWwoQ09MT04sICJFeHBlY3RlZCBh
ICc6JyBhZnRlciBzd2l0Y2ggZGVmYXVsdCBjbGF1c2UiKTsKLSAgICBUcmVlU291cmNlRWxlbWVu
dHMgc3RhdGVtZW50cyA9IHBhcnNlU291cmNlRWxlbWVudHMoY29udGV4dCwgRG9udENoZWNrRm9y
U3RyaWN0TW9kZSwgU3RhbmRhcmRGdW5jdGlvblBhcnNlVHlwZSk7CisgICAgVHJlZVNvdXJjZUVs
ZW1lbnRzIHN0YXRlbWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIERvbnRDaGVj
a0ZvclN0cmljdE1vZGUpOwogICAgIGZhaWxJZkZhbHNlKHN0YXRlbWVudHMsICJDYW5ub3QgcGFy
c2UgdGhlIGJvZHkgb2YgYSBzd2l0Y2ggZGVmYXVsdCBjbGF1c2UiKTsKICAgICBUcmVlQ2xhdXNl
IHJlc3VsdCA9IGNvbnRleHQuY3JlYXRlQ2xhdXNlKDAsIHN0YXRlbWVudHMpOwogICAgIGNvbnRl
eHQuc2V0U3RhcnRPZmZzZXQocmVzdWx0LCBzdGFydE9mZnNldCk7CkBAIC0xMzU4LDcgKzEzNDks
NyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lCiAgICAgICAgICAg
ICBwb3BTY29wZShsZXhpY2FsU2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVkc0ZyZWVWYXJpYWJsZUlu
Zm8pOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KLSAgICBUcmVlU291cmNlRWxlbWVu
dHMgc3VidHJlZSA9IHBhcnNlU291cmNlRWxlbWVudHMoY29udGV4dCwgRG9udENoZWNrRm9yU3Ry
aWN0TW9kZSwgU3RhbmRhcmRGdW5jdGlvblBhcnNlVHlwZSk7CisgICAgVHJlZVNvdXJjZUVsZW1l
bnRzIHN1YnRyZWUgPSBwYXJzZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIERvbnRDaGVja0ZvclN0
cmljdE1vZGUpOwogICAgIGZhaWxJZkZhbHNlKHN1YnRyZWUsICJDYW5ub3QgcGFyc2UgdGhlIGJv
ZHkgb2YgdGhlIGJsb2NrIHN0YXRlbWVudCIpOwogICAgIG1hdGNoT3JGYWlsKENMT1NFQlJBQ0Us
ICJFeHBlY3RlZCBhIGNsb3NpbmcgJ30nIGF0IHRoZSBlbmQgb2YgYSBibG9jayBzdGF0ZW1lbnQi
KTsKICAgICBpbnQgZW5kT2Zmc2V0ID0gbV90b2tlbi5tX2RhdGEub2Zmc2V0OwpAQCAtMTQ2Niw0
NiArMTQ1Nyw0MyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lCiB9
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVGb3JtYWxQYXJhbWV0ZXJMaXN0IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZv
cm1hbFBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImIGNvbnRleHQpCit0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IGJvb2wgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRm9ybWFsUGFyYW1ldGVycyhU
cmVlQnVpbGRlciYgY29udGV4dCwgVHJlZUZvcm1hbFBhcmFtZXRlckxpc3QgbGlzdCwgdW5zaWdu
ZWQmIHBhcmFtZXRlckNvdW50KQogewogICAgIGF1dG8gcGFyYW1ldGVyID0gcGFyc2VEZXN0cnVj
dHVyaW5nUGF0dGVybihjb250ZXh0LCBEZXN0cnVjdHVyZVRvUGFyYW1ldGVycyk7CiAgICAgZmFp
bElmRmFsc2UocGFyYW1ldGVyLCAiQ2Fubm90IHBhcnNlIHBhcmFtZXRlciBwYXR0ZXJuIik7Ci0g
ICAgVHJlZUZvcm1hbFBhcmFtZXRlckxpc3QgbGlzdCA9IGNvbnRleHQuY3JlYXRlRm9ybWFsUGFy
YW1ldGVyTGlzdChwYXJhbWV0ZXIpOwotICAgIFRyZWVGb3JtYWxQYXJhbWV0ZXJMaXN0IHRhaWwg
PSBsaXN0OworICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKGxpc3QsIHBhcmFtZXRlcik7Cisg
ICAgcGFyYW1ldGVyQ291bnQrKzsKICAgICB3aGlsZSAoY29uc3VtZShDT01NQSkpIHsKICAgICAg
ICAgcGFyYW1ldGVyID0gcGFyc2VEZXN0cnVjdHVyaW5nUGF0dGVybihjb250ZXh0LCBEZXN0cnVj
dHVyZVRvUGFyYW1ldGVycyk7CiAgICAgICAgIGZhaWxJZkZhbHNlKHBhcmFtZXRlciwgIkNhbm5v
dCBwYXJzZSBwYXJhbWV0ZXIgcGF0dGVybiIpOwotICAgICAgICB0YWlsID0gY29udGV4dC5jcmVh
dGVGb3JtYWxQYXJhbWV0ZXJMaXN0KHRhaWwsIHBhcmFtZXRlcik7CisgICAgICAgIGNvbnRleHQu
YXBwZW5kUGFyYW1ldGVyKGxpc3QsIHBhcmFtZXRlcik7CisgICAgICAgIHBhcmFtZXRlckNvdW50
Kys7CiAgICAgfQotICAgIHJldHVybiBsaXN0OworICAgIHJldHVybiB0cnVlOwogfQogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlRnVuY3Rpb25Cb2R5IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSgKLSAg
ICBUcmVlQnVpbGRlciYgY29udGV4dCwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVu
Y3Rpb25OYW1lU3RhcnQsIAotICAgIGludCBwYXJhbWV0ZXJzU3RhcnQsIENvbnN0cnVjdG9yS2lu
ZCBjb25zdHJ1Y3RvcktpbmQsIEZ1bmN0aW9uUGFyc2VUeXBlIHBhcnNlVHlwZSkKKyAgICBUcmVl
QnVpbGRlciYgY29udGV4dCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBp
bnQgc3RhcnRDb2x1bW4sIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFt
ZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCAKKyAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3Ry
dWN0b3JLaW5kLCBGdW5jdGlvbkJvZHlUeXBlIGJvZHlUeXBlLCB1bnNpZ25lZCBwYXJhbWV0ZXJD
b3VudCwgRnVuY3Rpb25QYXJzZU1vZGUgcGFyc2VNb2RlKQogewotICAgIEpTVG9rZW5Mb2NhdGlv
biBzdGFydExvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7Ci0gICAgdW5zaWduZWQgc3RhcnRDb2x1
bW4gPSB0b2tlbkNvbHVtbigpOwotCi0gICAgaWYgKHBhcnNlVHlwZSA9PSBTdGFuZGFyZEZ1bmN0
aW9uUGFyc2VUeXBlKSB7CisgICAgaWYgKGJvZHlUeXBlID09IFN0YW5kYXJkRnVuY3Rpb25Cb2R5
QmxvY2sgfHwgYm9keVR5cGUgPT0gQXJyb3dGdW5jdGlvbkJvZHlCbG9jaykgewogICAgICAgICBu
ZXh0KCk7CiAgICAgICAgIGlmIChtYXRjaChDTE9TRUJSQUNFKSkgewogICAgICAgICAgICAgdW5z
aWduZWQgZW5kQ29sdW1uID0gdG9rZW5Db2x1bW4oKTsKLSAgICAgICAgICAgIHJldHVybiBjb250
ZXh0LmNyZWF0ZUZ1bmN0aW9uQm9keShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0
YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVT
dGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNvbnN0cnVjdG9yS2luZCk7Cisg
ICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkJvZHkoc3RhcnRMb2NhdGlv
biwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktleXdv
cmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgp
LCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUpOwogICAgICAgICB9
CiAgICAgfQogCiAgICAgRGVwdGhNYW5hZ2VyIHN0YXRlbWVudERlcHRoKCZtX3N0YXRlbWVudERl
cHRoKTsKICAgICBtX3N0YXRlbWVudERlcHRoID0gMDsKLSAgICB0eXBlbmFtZSBUcmVlQnVpbGRl
cjo6RnVuY3Rpb25Cb2R5QnVpbGRlciBib2R5QnVpbGRlcihjb25zdF9jYXN0PFZNKj4obV92bSks
IG1fbGV4ZXIuZ2V0KCkpOwotI2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCi0g
ICAgZmFpbElmRmFsc2UocGFyc2VTb3VyY2VFbGVtZW50cyhib2R5QnVpbGRlciwgQ2hlY2tGb3JT
dHJpY3RNb2RlLCBwYXJzZVR5cGUpLCBwYXJzZVR5cGUgPT0gU3RhbmRhcmRGdW5jdGlvblBhcnNl
VHlwZSA/ICJDYW5ub3QgcGFyc2UgYm9keSBvZiB0aGlzIGZ1bmN0aW9uIiA6ICJDYW5ub3QgcGFy
c2UgYm9keSBvZiB0aGlzIGFycm93IGZ1bmN0aW9uIik7Ci0jZWxzZQotICAgIGZhaWxJZkZhbHNl
KHBhcnNlU291cmNlRWxlbWVudHMoYm9keUJ1aWxkZXIsIENoZWNrRm9yU3RyaWN0TW9kZSwgU3Rh
bmRhcmRGdW5jdGlvblBhcnNlVHlwZSksICJDYW5ub3QgcGFyc2UgYm9keSBvZiB0aGlzIGZ1bmN0
aW9uIik7Ci0jZW5kaWYKKyAgICBTeW50YXhDaGVja2VyIHN5bnRheENoZWNrZXIoY29uc3RfY2Fz
dDxWTSo+KG1fdm0pLCBtX2xleGVyLmdldCgpKTsKKyAgICBpZiAoYm9keVR5cGUgPT0gQXJyb3dG
dW5jdGlvbkJvZHlFeHByZXNzaW9uKQorICAgICAgICBmYWlsSWZGYWxzZShwYXJzZUFycm93RnVu
Y3Rpb25TaW5nbGVFeHByZXNzaW9uQm9keVNvdXJjZUVsZW1lbnRzKHN5bnRheENoZWNrZXIpLCAi
Q2Fubm90IHBhcnNlIGJvZHkgb2YgdGhpcyBhcnJvdyBmdW5jdGlvbiIpOworICAgIGVsc2UKKyAg
ICAgICAgZmFpbElmRmFsc2UocGFyc2VTb3VyY2VFbGVtZW50cyhzeW50YXhDaGVja2VyLCBDaGVj
a0ZvclN0cmljdE1vZGUpLCBib2R5VHlwZSA9PSBTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrID8g
IkNhbm5vdCBwYXJzZSBib2R5IG9mIHRoaXMgZnVuY3Rpb24iIDogIkNhbm5vdCBwYXJzZSBib2R5
IG9mIHRoaXMgYXJyb3cgZnVuY3Rpb24iKTsKICAgICB1bnNpZ25lZCBlbmRDb2x1bW4gPSB0b2tl
bkNvbHVtbigpOwotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uQm9keShzdGFydExv
Y2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9u
S2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RN
b2RlKCksIGNvbnN0cnVjdG9yS2luZCk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rp
b25Cb2R5KHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENv
bHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJz
U3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBwYXJhbWV0ZXJDb3VudCwgcGFy
c2VNb2RlKTsKIH0KIAogc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShG
dW5jdGlvblBhcnNlTW9kZSBtb2RlKQpAQCAtMTUxNSwyNCArMTUwMywyOCBAQCBzdGF0aWMgY29u
c3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlCiAgICAgICAgIHJldHVybiAiZ2V0dGVyIjsK
ICAgICBjYXNlIFNldHRlck1vZGU6CiAgICAgICAgIHJldHVybiAic2V0dGVyIjsKLSAgICBjYXNl
IEZ1bmN0aW9uTW9kZToKKyAgICBjYXNlIE5vcm1hbEZ1bmN0aW9uTW9kZToKICAgICAgICAgcmV0
dXJuICJmdW5jdGlvbiI7CiAgICAgY2FzZSBNZXRob2RNb2RlOgogICAgICAgICByZXR1cm4gIm1l
dGhvZCI7Ci0jaWYgRU5BQkxFKEVTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCkKICAgICBjYXNlIEFy
cm93RnVuY3Rpb25Nb2RlOgogICAgICAgICByZXR1cm4gImFycm93IGZ1bmN0aW9uIjsKLSNlbmRp
ZgorICAgIGNhc2UgTm90QUZ1bmN0aW9uTW9kZToKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuICIiOwogICAgIH0KICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgTGV4ZXJUeXBlPiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGludCBQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImIGNvbnRleHQs
IEZ1bmN0aW9uUGFyc2VNb2RlIG1vZGUsIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4m
IGluZm8pCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPiB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IGludCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvblBhcmFtZXRlcnMo
VHJlZUJ1aWxkZXImIGNvbnRleHQsIEZ1bmN0aW9uUGFyc2VNb2RlIG1vZGUsIFBhcnNlckZ1bmN0
aW9uSW5mbzxUcmVlQnVpbGRlcj4mIGZ1bmN0aW9uSW5mbykKIHsKKyAgICBSRUxFQVNFX0FTU0VS
VChtb2RlICE9IE5vdEFGdW5jdGlvbk1vZGUpOwogICAgIGludCBwYXJhbWV0ZXJzU3RhcnQgPSBt
X3Rva2VuLm1fbG9jYXRpb24uc3RhcnRPZmZzZXQ7CisgICAgVHJlZUZvcm1hbFBhcmFtZXRlckxp
c3QgcGFyYW1ldGVyTGlzdCA9IGNvbnRleHQuY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdCgpOwor
ICAgIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJzID0gcGFyYW1ldGVyTGlzdDsKKyAgICBmdW5jdGlv
bkluZm8uc3RhcnRPZmZzZXQgPSBwYXJhbWV0ZXJzU3RhcnQ7CiAgICAgCi0jaWYgRU5BQkxFKEVT
Nl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCkKICAgICBpZiAobW9kZSA9PSBBcnJvd0Z1bmN0aW9uTW9k
ZSkgewogICAgICAgICBpZiAoIW1hdGNoKElERU5UKSAmJiAhbWF0Y2goT1BFTlBBUkVOKSkgewog
ICAgICAgICAgICAgc2VtYW50aWNGYWlsdXJlRHVlVG9LZXl3b3JkKHN0cmluZ0ZvckZ1bmN0aW9u
TW9kZShtb2RlKSwgIiBuYW1lIik7CkBAIC0xNTQxLDc2ICsxNTMzLDg3IEBAIHRlbXBsYXRlIDx0
eXBlbmFtZSBMZXhlclR5cGU+IHRlbXBsYXRlIDwKICAgICAgICAgICAgIGlmIChtYXRjaChPUEVO
UEFSRU4pKSB7CiAgICAgICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgIGlmICghbWF0Y2goQ0xPU0VQQVJFTikpIHsKLSAgICAgICAgICAgICAgICAg
ICAgaW5mby5wYXJhbWV0ZXJzID0gcGFyc2VGb3JtYWxQYXJhbWV0ZXJzKGNvbnRleHQpOwotICAg
ICAgICAgICAgICAgICAgICBmYWlsSWZGYWxzZShpbmZvLnBhcmFtZXRlcnMsICJDYW5ub3QgcGFy
c2UgcGFyYW1ldGVycyBmb3IgdGhpcyAiLCBzdHJpbmdGb3JGdW5jdGlvbk1vZGUobW9kZSkpOwot
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobWF0Y2goQ0xPU0VQQVJFTikp
CisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJDb3VudCA9IDA7Cisg
ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBmYWlsSWZGYWxzZShwYXJz
ZUZvcm1hbFBhcmFtZXRlcnMoY29udGV4dCwgcGFyYW1ldGVyTGlzdCwgZnVuY3Rpb25JbmZvLnBh
cmFtZXRlckNvdW50KSwgIkNhbm5vdCBwYXJzZSBwYXJhbWV0ZXJzIGZvciB0aGlzICIsIHN0cmlu
Z0ZvckZ1bmN0aW9uTW9kZShtb2RlKSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgY29uc3VtZU9yRmFpbChDTE9TRVBBUkVOLCAiRXhwZWN0ZWQgYSAnKScgb3IgYSAnLCcgYWZ0
ZXIgYSBwYXJhbWV0ZXIgZGVjbGFyYXRpb24iKTsKICAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgZnVuY3Rpb25JbmZvLnBhcmFtZXRlckNvdW50ID0gMTsKICAgICAgICAgICAg
ICAgICBhdXRvIHBhcmFtZXRlciA9IHBhcnNlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4oY29udGV4dCwg
RGVzdHJ1Y3R1cmVUb1BhcmFtZXRlcnMpOwogICAgICAgICAgICAgICAgIGZhaWxJZkZhbHNlKHBh
cmFtZXRlciwgIkNhbm5vdCBwYXJzZSBwYXJhbWV0ZXIgcGF0dGVybiIpOwotICAgICAgICAgICAg
ICAgIGluZm8ucGFyYW1ldGVycyA9IGNvbnRleHQuY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdChw
YXJhbWV0ZXIpOwotICAgICAgICAgICAgICAgIGZhaWxJZkZhbHNlKGluZm8ucGFyYW1ldGVycywg
IkNhbm5vdCBwYXJzZSBwYXJhbWV0ZXJzIGZvciB0aGlzICIsIHN0cmluZ0ZvckZ1bmN0aW9uTW9k
ZShtb2RlKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1l
dGVyTGlzdCwgcGFyYW1ldGVyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICAK
KwogICAgICAgICByZXR1cm4gcGFyYW1ldGVyc1N0YXJ0OwogICAgIH0KLSNlbmRpZgotICAgIAor
CiAgICAgaWYgKCFjb25zdW1lKE9QRU5QQVJFTikpIHsKICAgICAgICAgc2VtYW50aWNGYWlsdXJl
RHVlVG9LZXl3b3JkKHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShtb2RlKSwgIiBuYW1lIik7CiAgICAg
ICAgIGZhaWxXaXRoTWVzc2FnZSgiRXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgIiwg
c3RyaW5nRm9yRnVuY3Rpb25Nb2RlKG1vZGUpLCAiJ3MgcGFyYW1ldGVyIGxpc3QiKTsKICAgICB9
CiAKLSAgICBpZiAobW9kZSA9PSBHZXR0ZXJNb2RlKQorICAgIGlmIChtb2RlID09IEdldHRlck1v
ZGUpIHsKICAgICAgICAgY29uc3VtZU9yRmFpbChDTE9TRVBBUkVOLCAiZ2V0dGVyIGZ1bmN0aW9u
cyBtdXN0IGhhdmUgbm8gcGFyYW1ldGVycyIpOwotICAgIGVsc2UgaWYgKG1vZGUgPT0gU2V0dGVy
TW9kZSkgeworICAgICAgICBmdW5jdGlvbkluZm8ucGFyYW1ldGVyQ291bnQgPSAwOworICAgIH0g
ZWxzZSBpZiAobW9kZSA9PSBTZXR0ZXJNb2RlKSB7CiAgICAgICAgIGZhaWxJZlRydWUobWF0Y2go
Q0xPU0VQQVJFTiksICJzZXR0ZXIgZnVuY3Rpb25zIG11c3QgaGF2ZSBvbmUgcGFyYW1ldGVyIik7
CiAgICAgICAgIGF1dG8gcGFyYW1ldGVyID0gcGFyc2VEZXN0cnVjdHVyaW5nUGF0dGVybihjb250
ZXh0LCBEZXN0cnVjdHVyZVRvUGFyYW1ldGVycyk7CiAgICAgICAgIGZhaWxJZkZhbHNlKHBhcmFt
ZXRlciwgInNldHRlciBmdW5jdGlvbnMgbXVzdCBoYXZlIG9uZSBwYXJhbWV0ZXIiKTsKLSAgICAg
ICAgaW5mby5wYXJhbWV0ZXJzID0gY29udGV4dC5jcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KHBh
cmFtZXRlcik7CisgICAgICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlckxpc3Qs
IHBhcmFtZXRlcik7CisgICAgICAgIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJDb3VudCA9IDE7CiAg
ICAgICAgIGZhaWxJZlRydWUobWF0Y2goQ09NTUEpLCAic2V0dGVyIGZ1bmN0aW9ucyBtdXN0IGhh
dmUgb25lIHBhcmFtZXRlciIpOwogICAgICAgICBjb25zdW1lT3JGYWlsKENMT1NFUEFSRU4sICJF
eHBlY3RlZCBhICcpJyBhZnRlciBhIHBhcmFtZXRlciBkZWNsYXJhdGlvbiIpOwogICAgIH0gZWxz
ZSB7Ci0gICAgICAgIGlmICghbWF0Y2goQ0xPU0VQQVJFTikpIHsKLSAgICAgICAgICAgIGluZm8u
cGFyYW1ldGVycyA9IHBhcnNlRm9ybWFsUGFyYW1ldGVycyhjb250ZXh0KTsKLSAgICAgICAgICAg
IGZhaWxJZkZhbHNlKGluZm8ucGFyYW1ldGVycywgIkNhbm5vdCBwYXJzZSBwYXJhbWV0ZXJzIGZv
ciB0aGlzICIsIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShtb2RlKSk7Ci0gICAgICAgIH0KKyAgICAg
ICAgaWYgKG1hdGNoKENMT1NFUEFSRU4pKQorICAgICAgICAgICAgZnVuY3Rpb25JbmZvLnBhcmFt
ZXRlckNvdW50ID0gMDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZmFpbElmRmFsc2UocGFy
c2VGb3JtYWxQYXJhbWV0ZXJzKGNvbnRleHQsIHBhcmFtZXRlckxpc3QsIGZ1bmN0aW9uSW5mby5w
YXJhbWV0ZXJDb3VudCksICJDYW5ub3QgcGFyc2UgcGFyYW1ldGVycyBmb3IgdGhpcyAiLCBzdHJp
bmdGb3JGdW5jdGlvbk1vZGUobW9kZSkpOwogICAgICAgICBjb25zdW1lT3JGYWlsKENMT1NFUEFS
RU4sICJFeHBlY3RlZCBhICcpJyBvciBhICcsJyBhZnRlciBhIHBhcmFtZXRlciBkZWNsYXJhdGlv
biIpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBwYXJhbWV0ZXJzU3RhcnQ7CiB9CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IGJvb2wgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZGVyJiBj
b250ZXh0LCBGdW5jdGlvblJlcXVpcmVtZW50cyByZXF1aXJlbWVudHMsIEZ1bmN0aW9uUGFyc2VN
b2RlIG1vZGUsIGJvb2wgbmFtZUlzSW5Db250YWluaW5nU2NvcGUsIENvbnN0cnVjdG9yS2luZCBj
b25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZyBleHBlY3RlZFN1cGVyQmluZGluZywgaW50IGZ1
bmN0aW9uS2V5d29yZFN0YXJ0LCBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+JiBpbmZv
LCBGdW5jdGlvblBhcnNlVHlwZSBwYXJzZVR5cGUpCit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IGJvb2wgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZGVy
JiBjb250ZXh0LCBGdW5jdGlvblJlcXVpcmVtZW50cyByZXF1aXJlbWVudHMsIEZ1bmN0aW9uUGFy
c2VNb2RlIG1vZGUsIGJvb2wgbmFtZUlzSW5Db250YWluaW5nU2NvcGUsIENvbnN0cnVjdG9yS2lu
ZCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZyBleHBlY3RlZFN1cGVyQmluZGluZywgaW50
IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+JiBm
dW5jdGlvbkluZm8sIEZ1bmN0aW9uUGFyc2VUeXBlIHBhcnNlVHlwZSkKIHsKKyAgICBSRUxFQVNF
X0FTU0VSVChtb2RlICE9IE5vdEFGdW5jdGlvbk1vZGUpOworCiAgICAgQXV0b1BvcFNjb3BlUmVm
IGZ1bmN0aW9uU2NvcGUodGhpcywgcHVzaFNjb3BlKCkpOwogICAgIGZ1bmN0aW9uU2NvcGUtPnNl
dElzRnVuY3Rpb24oKTsKICAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQgPSBtX3Rva2VuLm1fbG9j
YXRpb24uc3RhcnRPZmZzZXQ7CiAgICAgY29uc3QgSWRlbnRpZmllciogbGFzdEZ1bmN0aW9uTmFt
ZSA9IG1fbGFzdEZ1bmN0aW9uTmFtZTsKICAgICBtX2xhc3RGdW5jdGlvbk5hbWUgPSBudWxscHRy
OwogICAgIGludCBwYXJhbWV0ZXJzU3RhcnQ7CisgICAgSlNUb2tlbkxvY2F0aW9uIHN0YXJ0TG9j
YXRpb247CisgICAgaW50IHN0YXJ0Q29sdW1uOworICAgIEZ1bmN0aW9uQm9keVR5cGUgZnVuY3Rp
b25Cb2R5VHlwZTsKICAgICAKICAgICBzd2l0Y2ggKHBhcnNlVHlwZSkgewogICAgIGNhc2UgU3Rh
bmRhcmRGdW5jdGlvblBhcnNlVHlwZTogeworICAgICAgICBSRUxFQVNFX0FTU0VSVChtb2RlICE9
IEFycm93RnVuY3Rpb25Nb2RlKTsKICAgICAgICAgaWYgKG1hdGNoKElERU5UKSB8fCBpc0xFVE1h
c2tlZEFzSURFTlQoKSkgewotICAgICAgICAgICAgaW5mby5uYW1lID0gbV90b2tlbi5tX2RhdGEu
aWRlbnQ7Ci0gICAgICAgICAgICBtX2xhc3RGdW5jdGlvbk5hbWUgPSBpbmZvLm5hbWU7CisgICAg
ICAgICAgICBmdW5jdGlvbkluZm8ubmFtZSA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OworICAgICAg
ICAgICAgbV9sYXN0RnVuY3Rpb25OYW1lID0gZnVuY3Rpb25JbmZvLm5hbWU7CiAgICAgICAgICAg
ICBuZXh0KCk7CiAgICAgICAgICAgICBpZiAoIW5hbWVJc0luQ29udGFpbmluZ1Njb3BlKQotICAg
ICAgICAgICAgICAgIGZhaWxJZkZhbHNlSWZTdHJpY3QoZnVuY3Rpb25TY29wZS0+ZGVjbGFyZVZh
cmlhYmxlKGluZm8ubmFtZSksICInIiwgaW5mby5uYW1lLT5pbXBsKCksICInIGlzIG5vdCBhIHZh
bGlkICIsIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShtb2RlKSwgIiBuYW1lIGluIHN0cmljdCBtb2Rl
Iik7CisgICAgICAgICAgICAgICAgZmFpbElmRmFsc2VJZlN0cmljdChmdW5jdGlvblNjb3BlLT5k
ZWNsYXJlVmFyaWFibGUoZnVuY3Rpb25JbmZvLm5hbWUpLCAiJyIsIGZ1bmN0aW9uSW5mby5uYW1l
LT5pbXBsKCksICInIGlzIG5vdCBhIHZhbGlkICIsIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShtb2Rl
KSwgIiBuYW1lIGluIHN0cmljdCBtb2RlIik7CiAgICAgICAgIH0gZWxzZSBpZiAocmVxdWlyZW1l
bnRzID09IEZ1bmN0aW9uTmVlZHNOYW1lKSB7Ci0gICAgICAgICAgICBpZiAobWF0Y2goT1BFTlBB
UkVOKSAmJiBtb2RlID09IEZ1bmN0aW9uTW9kZSkKKyAgICAgICAgICAgIGlmIChtYXRjaChPUEVO
UEFSRU4pICYmIG1vZGUgPT0gTm9ybWFsRnVuY3Rpb25Nb2RlKQogICAgICAgICAgICAgICAgIHNl
bWFudGljRmFpbCgiRnVuY3Rpb24gc3RhdGVtZW50cyBtdXN0IGhhdmUgYSBuYW1lIik7CiAgICAg
ICAgICAgICBzZW1hbnRpY0ZhaWx1cmVEdWVUb0tleXdvcmQoc3RyaW5nRm9yRnVuY3Rpb25Nb2Rl
KG1vZGUpLCAiIG5hbWUiKTsKICAgICAgICAgICAgIGZhaWxEdWVUb1VuZXhwZWN0ZWRUb2tlbigp
OwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAg
ICBwYXJhbWV0ZXJzU3RhcnQgPSBwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhjb250ZXh0LCBtb2Rl
LCBpbmZvKTsKKworICAgICAgICBzdGFydExvY2F0aW9uID0gdG9rZW5Mb2NhdGlvbigpOworICAg
ICAgICBmdW5jdGlvbkluZm8uc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CisgICAgICAgIHN0YXJ0
Q29sdW1uID0gdG9rZW5Db2x1bW4oKTsKKworICAgICAgICBwYXJhbWV0ZXJzU3RhcnQgPSBwYXJz
ZUZ1bmN0aW9uUGFyYW1ldGVycyhjb250ZXh0LCBtb2RlLCBmdW5jdGlvbkluZm8pOwogICAgICAg
ICBwcm9wYWdhdGVFcnJvcigpOwogICAgICAgICAKICAgICAgICAgbWF0Y2hPckZhaWwoT1BFTkJS
QUNFLCAiRXhwZWN0ZWQgYW4gb3BlbmluZyAneycgYXQgdGhlIHN0YXJ0IG9mIGEgIiwgc3RyaW5n
Rm9yRnVuY3Rpb25Nb2RlKG1vZGUpLCAiIGJvZHkiKTsKQEAgLTE2MjIsMTQgKzE2MjUsMjAgQEAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcgogICAgICAgICAgICAgY29u
c3RydWN0b3JLaW5kID0gbV9kZWZhdWx0Q29uc3RydWN0b3JLaW5kOwogICAgICAgICAgICAgZXhw
ZWN0ZWRTdXBlckJpbmRpbmcgPSBtX2RlZmF1bHRDb25zdHJ1Y3RvcktpbmQgPT0gQ29uc3RydWN0
b3JLaW5kOjpEZXJpdmVkID8gU3VwZXJCaW5kaW5nOjpOZWVkZWQgOiBTdXBlckJpbmRpbmc6Ok5v
dE5lZWRlZDsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaW5mby5zdGFydEZ1bmN0aW9u
T2Zmc2V0ID0gbV90b2tlbi5tX2RhdGEub2Zmc2V0OworCisgICAgICAgIGZ1bmN0aW9uQm9keVR5
cGUgPSBTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrOwogICAgICAgICAKICAgICAgICAgYnJlYWs7
CiAgICAgfQogI2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCiAgICAgY2FzZSBB
cnJvd0Z1bmN0aW9uUGFyc2VUeXBlOiB7Ci0gICAgICAgIHBhcmFtZXRlcnNTdGFydCA9IHBhcnNl
RnVuY3Rpb25QYXJhbWV0ZXJzKGNvbnRleHQsIEFycm93RnVuY3Rpb25Nb2RlLCBpbmZvKTsKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQobW9kZSA9PSBBcnJvd0Z1bmN0aW9uTW9kZSk7CisKKyAgICAg
ICAgc3RhcnRMb2NhdGlvbiA9IHRva2VuTG9jYXRpb24oKTsKKyAgICAgICAgZnVuY3Rpb25JbmZv
LnN0YXJ0TGluZSA9IHRva2VuTGluZSgpOworICAgICAgICBzdGFydENvbHVtbiA9IHRva2VuQ29s
dW1uKCk7CisKKyAgICAgICAgcGFyYW1ldGVyc1N0YXJ0ID0gcGFyc2VGdW5jdGlvblBhcmFtZXRl
cnMoY29udGV4dCwgbW9kZSwgZnVuY3Rpb25JbmZvKTsKICAgICAgICAgcHJvcGFnYXRlRXJyb3Io
KTsKICAgICAgICAgCiAgICAgICAgIG1hdGNoT3JGYWlsKEFSUk9XRlVOQ1RJT04sICJFeHBlY3Rl
ZCBhICc9PicgYWZ0ZXIgYXJyb3cgZnVuY3Rpb24gcGFyYW1ldGVyIGRlY2xhcmF0aW9uIik7CkBA
IC0xNjM5LDMwICsxNjQ4LDI1IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQ
YXJzZXIKIAogICAgICAgICBBU1NFUlQoY29uc3RydWN0b3JLaW5kID09IENvbnN0cnVjdG9yS2lu
ZDo6Tm9uZSk7CiAgICAgICAgIAotICAgICAgICBpbmZvLmFycm93RnVuY3Rpb25PZmZzZXQgPSBt
X3Rva2VuLm1fZGF0YS5vZmZzZXQ7CiAgICAgICAgIC8vIENoZWNrIGlmIGFycm93IGJvZHkgc3Rh
cnQgd2l0aCB7LiBJZiBpdCB0cnVlIGl0IG1lYW4gdGhhdCBhcnJvdyBmdW5jdGlvbiBpcyBGYXQg
YXJyb3cgZnVuY3Rpb24KICAgICAgICAgLy8gYW5kIHdlIG5lZWQgdXNlIGNvbW1vbiBhcHByb2Fj
aCB0byBwYXJzZSBmdW5jdGlvbiBib2R5Ci0gICAgICAgIFNhdmVQb2ludCBzYXZlUG9pbnQgPSBj
cmVhdGVTYXZlUG9pbnQoKTsKLSAgICAgICAgCiAgICAgICAgIG5leHQoKTsKLSAgICAgICAgaW5m
by5mdW5jdGlvbkJvZHlUeXBlID0gbWF0Y2goT1BFTkJSQUNFKSA/IEFycm93RnVuY3Rpb25Cb2R5
QmxvY2sgOiBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb247Ci0gICAgICAgIGluZm8uc3RhcnRG
dW5jdGlvbk9mZnNldCA9IChpbmZvLmZ1bmN0aW9uQm9keVR5cGUgPT0gQXJyb3dGdW5jdGlvbkJv
ZHlCbG9jaykgPyBtX3Rva2VuLm1fZGF0YS5vZmZzZXQgOiBpbmZvLmFycm93RnVuY3Rpb25PZmZz
ZXQ7CisgICAgICAgIGZ1bmN0aW9uQm9keVR5cGUgPSBtYXRjaChPUEVOQlJBQ0UpID8gQXJyb3dG
dW5jdGlvbkJvZHlCbG9jayA6IEFycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbjsKICAgICAgICAg
Ci0gICAgICAgIHJlc3RvcmVTYXZlUG9pbnQoc2F2ZVBvaW50KTsKLQogICAgICAgICBicmVhazsK
ICAgICB9CisjZWxzZQorICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAjZW5kaWYKICAgICB9CiAgICAgCiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0
b3IgPSBjb25zdHJ1Y3RvcktpbmQgIT0gQ29uc3RydWN0b3JLaW5kOjpOb25lOwogCi0gICAgaW5m
by5ib2R5U3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7Ci0gICAgaW5mby5ib2R5U3RhcnRDb2x1bW4g
PSBtX3Rva2VuLm1fZGF0YS5vZmZzZXQgLSBtX3Rva2VuLm1fZGF0YS5saW5lU3RhcnRPZmZzZXQ7
Ci0gICAgSlNUb2tlbkxvY2F0aW9uIHN0YXJ0TG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKKyAg
ICBmdW5jdGlvbkluZm8uYm9keVN0YXJ0Q29sdW1uID0gc3RhcnRDb2x1bW47CiAgICAgCiAgICAg
Ly8gSWYgd2Uga25vdyBhYm91dCB0aGlzIGZ1bmN0aW9uIGFscmVhZHksIHdlIGNhbiB1c2UgdGhl
IGNhY2hlZCBpbmZvIGFuZCBza2lwIHRoZSBwYXJzZXIgdG8gdGhlIGVuZCBvZiB0aGUgZnVuY3Rp
b24uCi0gICAgaWYgKGNvbnN0IFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtKiBjYWNoZWRJbmZvID0g
VHJlZUJ1aWxkZXI6OkNhblVzZUZ1bmN0aW9uQ2FjaGUgPyBmaW5kQ2FjaGVkRnVuY3Rpb25JbmZv
KGluZm8uc3RhcnRGdW5jdGlvbk9mZnNldCkgOiAwKSB7CisgICAgaWYgKGNvbnN0IFNvdXJjZVBy
b3ZpZGVyQ2FjaGVJdGVtKiBjYWNoZWRJbmZvID0gVHJlZUJ1aWxkZXI6OkNhblVzZUZ1bmN0aW9u
Q2FjaGUgPyBmaW5kQ2FjaGVkRnVuY3Rpb25JbmZvKGZ1bmN0aW9uSW5mby5zdGFydE9mZnNldCkg
OiAwKSB7CiAgICAgICAgIC8vIElmIHdlJ3JlIGluIGEgc3RyaWN0IGNvbnRleHQsIHRoZSBjYWNo
ZWQgZnVuY3Rpb24gaW5mbyBtdXN0IHNheSBpdCB3YXMgc3RyaWN0IHRvby4KICAgICAgICAgQVNT
RVJUKCFzdHJpY3RNb2RlKCkgfHwgY2FjaGVkSW5mby0+c3RyaWN0TW9kZSk7CiAgICAgICAgIEpT
VG9rZW5Mb2NhdGlvbiBlbmRMb2NhdGlvbjsKQEAgLTE2NzEsMTcgKzE2NzUsMTcgQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcgogICAgICAgICBlbmRMb2NhdGlvbi5z
dGFydE9mZnNldCA9IGNhY2hlZEluZm8tPmxhc3RUb2NrZW5TdGFydE9mZnNldDsKICAgICAgICAg
ZW5kTG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0ID0gY2FjaGVkSW5mby0+bGFzdFRvY2tlbkxpbmVT
dGFydE9mZnNldDsKIAotICAgICAgICBib29sIGVuZENvbHVtbklzT25TdGFydExpbmUgPSAoZW5k
TG9jYXRpb24ubGluZSA9PSBpbmZvLmJvZHlTdGFydExpbmUpOworICAgICAgICBib29sIGVuZENv
bHVtbklzT25TdGFydExpbmUgPSAoZW5kTG9jYXRpb24ubGluZSA9PSBmdW5jdGlvbkluZm8uc3Rh
cnRMaW5lKTsKICAgICAgICAgQVNTRVJUKGVuZExvY2F0aW9uLnN0YXJ0T2Zmc2V0ID49IGVuZExv
Y2F0aW9uLmxpbmVTdGFydE9mZnNldCk7CiAgICAgICAgIHVuc2lnbmVkIGJvZHlFbmRDb2x1bW4g
PSBlbmRDb2x1bW5Jc09uU3RhcnRMaW5lID8KICAgICAgICAgICAgIGVuZExvY2F0aW9uLnN0YXJ0
T2Zmc2V0IC0gbV90b2tlbi5tX2RhdGEubGluZVN0YXJ0T2Zmc2V0IDoKICAgICAgICAgICAgIGVu
ZExvY2F0aW9uLnN0YXJ0T2Zmc2V0IC0gZW5kTG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0OwogICAg
ICAgICB1bnNpZ25lZCBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0ID0gbV90b2tlbi5tX2xvY2F0aW9u
LmxpbmVTdGFydE9mZnNldDsKIAotICAgICAgICBpbmZvLmJvZHkgPSBjb250ZXh0LmNyZWF0ZUZ1
bmN0aW9uQm9keSgKLSAgICAgICAgICAgIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBpbmZv
LmJvZHlTdGFydENvbHVtbiwgYm9keUVuZENvbHVtbiwgCisgICAgICAgIGZ1bmN0aW9uSW5mby5i
b2R5ID0gY29udGV4dC5jcmVhdGVGdW5jdGlvbkJvZHkoCisgICAgICAgICAgICBzdGFydExvY2F0
aW9uLCBlbmRMb2NhdGlvbiwgZnVuY3Rpb25JbmZvLmJvZHlTdGFydENvbHVtbiwgYm9keUVuZENv
bHVtbiwgCiAgICAgICAgICAgICBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3Rh
cnQsIHBhcmFtZXRlcnNTdGFydCwgCi0gICAgICAgICAgICBjYWNoZWRJbmZvLT5zdHJpY3RNb2Rl
LCBjb25zdHJ1Y3RvcktpbmQpOworICAgICAgICAgICAgY2FjaGVkSW5mby0+c3RyaWN0TW9kZSwg
Y29uc3RydWN0b3JLaW5kLCBjYWNoZWRJbmZvLT5wYXJhbWV0ZXJDb3VudCwgbW9kZSk7CiAgICAg
ICAgIAogICAgICAgICBmdW5jdGlvblNjb3BlLT5yZXN0b3JlRnJvbVNvdXJjZVByb3ZpZGVyQ2Fj
aGUoY2FjaGVkSW5mbyk7CiAgICAgICAgIHBvcFNjb3BlKGZ1bmN0aW9uU2NvcGUsIFRyZWVCdWls
ZGVyOjpOZWVkc0ZyZWVWYXJpYWJsZUluZm8pOwpAQCAtMTY5Myw2NCArMTY5Nyw0MCBAQCB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyCiAKICAgICAgICAgbV9sZXhlci0+
c2V0T2Zmc2V0KG1fdG9rZW4ubV9sb2NhdGlvbi5lbmRPZmZzZXQsIG1fdG9rZW4ubV9sb2NhdGlv
bi5saW5lU3RhcnRPZmZzZXQpOwogICAgICAgICBtX2xleGVyLT5zZXRMaW5lTnVtYmVyKG1fdG9r
ZW4ubV9sb2NhdGlvbi5saW5lKTsKLSAgICAgICAgaW5mby5lbmRGdW5jdGlvbk9mZnNldCA9IGNh
Y2hlZEluZm8tPmVuZEZ1bmN0aW9uT2Zmc2V0OwotI2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElP
Tl9TWU5UQVgpCisgICAgICAgIGZ1bmN0aW9uSW5mby5lbmRPZmZzZXQgPSBjYWNoZWRJbmZvLT5l
bmRGdW5jdGlvbk9mZnNldDsKKwogICAgICAgICBpZiAocGFyc2VUeXBlID09IEFycm93RnVuY3Rp
b25QYXJzZVR5cGUpCi0gICAgICAgICAgICBpbmZvLmZ1bmN0aW9uQm9keVR5cGUgPSBjYWNoZWRJ
bmZvLT5pc0JvZHlBcnJvd0V4cHJlc3Npb24gPyAgQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9u
IDogQXJyb3dGdW5jdGlvbkJvZHlCbG9jazsKKyAgICAgICAgICAgIGZ1bmN0aW9uQm9keVR5cGUg
PSBjYWNoZWRJbmZvLT5pc0JvZHlBcnJvd0V4cHJlc3Npb24gPyAgQXJyb3dGdW5jdGlvbkJvZHlF
eHByZXNzaW9uIDogQXJyb3dGdW5jdGlvbkJvZHlCbG9jazsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgaW5mby5mdW5jdGlvbkJvZHlUeXBlID0gU3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jazsK
KyAgICAgICAgICAgIGZ1bmN0aW9uQm9keVR5cGUgPSBTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2Nr
OwogICAgICAgICAKLSAgICAgICAgc3dpdGNoIChpbmZvLmZ1bmN0aW9uQm9keVR5cGUpIHsKKyAg
ICAgICAgc3dpdGNoIChmdW5jdGlvbkJvZHlUeXBlKSB7CiAgICAgICAgIGNhc2UgQXJyb3dGdW5j
dGlvbkJvZHlFeHByZXNzaW9uOgogICAgICAgICAgICAgbmV4dCgpOwotICAgICAgICAgICAgY29u
dGV4dC5zZXRFbmRPZmZzZXQoaW5mby5ib2R5LCBtX2xleGVyLT5jdXJyZW50T2Zmc2V0KCkpOwor
ICAgICAgICAgICAgY29udGV4dC5zZXRFbmRPZmZzZXQoZnVuY3Rpb25JbmZvLmJvZHksIG1fbGV4
ZXItPmN1cnJlbnRPZmZzZXQoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBB
cnJvd0Z1bmN0aW9uQm9keUJsb2NrOgogICAgICAgICBjYXNlIFN0YW5kYXJkRnVuY3Rpb25Cb2R5
QmxvY2s6Ci0gICAgICAgICAgICBjb250ZXh0LnNldEVuZE9mZnNldChpbmZvLmJvZHksIG1fbGV4
ZXItPmN1cnJlbnRPZmZzZXQoKSk7CisgICAgICAgICAgICBjb250ZXh0LnNldEVuZE9mZnNldChm
dW5jdGlvbkluZm8uYm9keSwgbV9sZXhlci0+Y3VycmVudE9mZnNldCgpKTsKICAgICAgICAgICAg
IG5leHQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0jZWxzZQotICAgICAgICBj
b250ZXh0LnNldEVuZE9mZnNldChpbmZvLmJvZHksIG1fbGV4ZXItPmN1cnJlbnRPZmZzZXQoKSk7
Ci0gICAgICAgIG5leHQoKTsKLSNlbmRpZgotICAgICAgICBpbmZvLmJvZHlFbmRMaW5lID0gbV9s
YXN0VG9rZW5FbmRQb3NpdGlvbi5saW5lOworICAgICAgICBmdW5jdGlvbkluZm8uZW5kTGluZSA9
IG1fbGFzdFRva2VuRW5kUG9zaXRpb24ubGluZTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogICAgIAogICAgIG1fbGFzdEZ1bmN0aW9uTmFtZSA9IGxhc3RGdW5jdGlvbk5hbWU7CiAgICAg
UGFyc2VyU3RhdGUgb2xkU3RhdGUgPSBzYXZlU3RhdGUoKTsKICAgICAKLSNpZiBFTkFCTEUoRVM2
X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQotICAgIHN3aXRjaCAoaW5mby5mdW5jdGlvbkJvZHlUeXBl
KSB7Ci0gICAgY2FzZSBBcnJvd0Z1bmN0aW9uQm9keUJsb2NrOiB7Ci0gICAgICAgIC8vIENvbnN1
bWUgPT4gaW4gY2FzZSBvZiBhcnJvdyBmdW5jdGlvbiBibG9jayBlLmcuIHggPT4geyByZXR1cm4g
eDsgfQotICAgICAgICBuZXh0KCk7Ci0gICAgCi0gICAgICAgIGluZm8uYm9keVN0YXJ0TGluZSA9
IHRva2VuTGluZSgpOwotICAgICAgICBpbmZvLmJvZHlTdGFydENvbHVtbiA9IG1fdG9rZW4ubV9k
YXRhLm9mZnNldCAtIG1fdG9rZW4ubV9kYXRhLmxpbmVTdGFydE9mZnNldDsKLSAgICAgICAgICAg
IAotICAgICAgICBpbmZvLmJvZHkgPSBwYXJzZUZ1bmN0aW9uQm9keShjb250ZXh0LCBmdW5jdGlv
bktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgY29uc3Ry
dWN0b3JLaW5kLCBTdGFuZGFyZEZ1bmN0aW9uUGFyc2VUeXBlKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgfQotICAgIGNhc2UgU3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jazoKLSAgICBjYXNlIEFycm93
RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA6IHsKLSAgICAgICAgaW5mby5ib2R5ID0gcGFyc2VGdW5j
dGlvbkJvZHkoY29udGV4dCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0
LCBwYXJhbWV0ZXJzU3RhcnQsIGNvbnN0cnVjdG9yS2luZCwgcGFyc2VUeXBlKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgfQotICAgIH0KLSNlbHNlCi0gICAgaW5mby5ib2R5ID0gcGFyc2VGdW5jdGlv
bkJvZHkoY29udGV4dCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBw
YXJhbWV0ZXJzU3RhcnQsIGNvbnN0cnVjdG9yS2luZCwgU3RhbmRhcmRGdW5jdGlvblBhcnNlVHlw
ZSk7Ci0jZW5kaWYKKyAgICBmdW5jdGlvbkluZm8uYm9keSA9IHBhcnNlRnVuY3Rpb25Cb2R5KGNv
bnRleHQsIHN0YXJ0TG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwg
ZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgY29uc3RydWN0b3JLaW5kLCBmdW5j
dGlvbkJvZHlUeXBlLCBmdW5jdGlvbkluZm8ucGFyYW1ldGVyQ291bnQsIG1vZGUpOwogICAgIAog
ICAgIHJlc3RvcmVTdGF0ZShvbGRTdGF0ZSk7Ci0gICAgZmFpbElmRmFsc2UoaW5mby5ib2R5LCAi
Q2Fubm90IHBhcnNlIHRoZSBib2R5IG9mIHRoaXMgIiwgc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKG1v
ZGUpKTsKLSAgICBjb250ZXh0LnNldEVuZE9mZnNldChpbmZvLmJvZHksIG1fbGV4ZXItPmN1cnJl
bnRPZmZzZXQoKSk7Ci0gICAgaWYgKGZ1bmN0aW9uU2NvcGUtPnN0cmljdE1vZGUoKSAmJiBpbmZv
Lm5hbWUpIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobW9kZSA9PSBGdW5jdGlvbk1vZGUgfHwg
bW9kZSA9PSBNZXRob2RNb2RlKTsKLSAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKG1fdm0tPnBy
b3BlcnR5TmFtZXMtPmFyZ3VtZW50cyA9PSAqaW5mby5uYW1lLCAiJyIsIGluZm8ubmFtZS0+aW1w
bCgpLCAiJyBpcyBub3QgYSB2YWxpZCBmdW5jdGlvbiBuYW1lIGluIHN0cmljdCBtb2RlIik7Ci0g
ICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5ldmFsID09ICpp
bmZvLm5hbWUsICInIiwgaW5mby5uYW1lLT5pbXBsKCksICInIGlzIG5vdCBhIHZhbGlkIGZ1bmN0
aW9uIG5hbWUgaW4gc3RyaWN0IG1vZGUiKTsKKyAgICBmYWlsSWZGYWxzZShmdW5jdGlvbkluZm8u
Ym9keSwgIkNhbm5vdCBwYXJzZSB0aGUgYm9keSBvZiB0aGlzICIsIHN0cmluZ0ZvckZ1bmN0aW9u
TW9kZShtb2RlKSk7CisgICAgY29udGV4dC5zZXRFbmRPZmZzZXQoZnVuY3Rpb25JbmZvLmJvZHks
IG1fbGV4ZXItPmN1cnJlbnRPZmZzZXQoKSk7CisgICAgaWYgKGZ1bmN0aW9uU2NvcGUtPnN0cmlj
dE1vZGUoKSAmJiBmdW5jdGlvbkluZm8ubmFtZSkgeworICAgICAgICBSRUxFQVNFX0FTU0VSVCht
b2RlID09IE5vcm1hbEZ1bmN0aW9uTW9kZSB8fCBtb2RlID09IE1ldGhvZE1vZGUpOworICAgICAg
ICBzZW1hbnRpY0ZhaWxJZlRydWUobV92bS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzID09ICpm
dW5jdGlvbkluZm8ubmFtZSwgIiciLCBmdW5jdGlvbkluZm8ubmFtZS0+aW1wbCgpLCAiJyBpcyBu
b3QgYSB2YWxpZCBmdW5jdGlvbiBuYW1lIGluIHN0cmljdCBtb2RlIik7CisgICAgICAgIHNlbWFu
dGljRmFpbElmVHJ1ZShtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5ldmFsID09ICpmdW5jdGlvbkluZm8u
bmFtZSwgIiciLCBmdW5jdGlvbkluZm8ubmFtZS0+aW1wbCgpLCAiJyBpcyBub3QgYSB2YWxpZCBm
dW5jdGlvbiBuYW1lIGluIHN0cmljdCBtb2RlIik7CiAgICAgfQogICAgIGlmIChmdW5jdGlvblNj
b3BlLT5oYXNEaXJlY3RTdXBlcigpKSB7CiAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSghaXND
bGFzc0NvbnN0cnVjdG9yLCAiQ2Fubm90IGNhbGwgc3VwZXIoKSBvdXRzaWRlIG9mIGEgY2xhc3Mg
Y29uc3RydWN0b3IiKTsKQEAgLTE3NjAsNTYgKzE3NDAsNDggQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBib29sIFBhcnNlcgogICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoZXhwZWN0
ZWRTdXBlckJpbmRpbmcgPT0gU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsICJzdXBlciBjYW4gb25s
eSBiZSB1c2VkIGluIGEgbWV0aG9kIG9mIGEgZGVyaXZlZCBjbGFzcyIpOwogCiAgICAgSlNUb2tl
bkxvY2F0aW9uIGxvY2F0aW9uID0gSlNUb2tlbkxvY2F0aW9uKG1fdG9rZW4ubV9sb2NhdGlvbik7
Ci0gICAgaW5mby5lbmRGdW5jdGlvbk9mZnNldCA9IG1fdG9rZW4ubV9kYXRhLm9mZnNldDsKKyAg
ICBmdW5jdGlvbkluZm8uZW5kT2Zmc2V0ID0gbV90b2tlbi5tX2RhdGEub2Zmc2V0OwogICAgIAot
I2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCi0gICAgaWYgKGluZm8uZnVuY3Rp
b25Cb2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pIHsKKyAgICBpZiAoZnVu
Y3Rpb25Cb2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pIHsKICAgICAgICAg
bG9jYXRpb24gPSBsb2NhdGlvbkJlZm9yZUxhc3RUb2tlbigpOwotICAgICAgICBpbmZvLmVuZEZ1
bmN0aW9uT2Zmc2V0ID0gbG9jYXRpb24uZW5kT2Zmc2V0OworICAgICAgICBmdW5jdGlvbkluZm8u
ZW5kT2Zmc2V0ID0gbG9jYXRpb24uZW5kT2Zmc2V0OwogICAgIH0KLSNlbmRpZgogICAgIAogICAg
IC8vIENhY2hlIHRoZSB0b2tlbml6ZXIgc3RhdGUgYW5kIHRoZSBmdW5jdGlvbiBzY29wZSB0aGUg
Zmlyc3QgdGltZSB0aGUgZnVuY3Rpb24gaXMgcGFyc2VkLgogICAgIC8vIEFueSBmdXR1cmUgcmVw
YXJzaW5nIGNhbiB0aGVuIHNraXAgdGhlIGZ1bmN0aW9uLgogICAgIHN0YXRpYyBjb25zdCBpbnQg
bWluaW11bUZ1bmN0aW9uTGVuZ3RoVG9DYWNoZSA9IDE2OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxT
b3VyY2VQcm92aWRlckNhY2hlSXRlbT4gbmV3SW5mbzsKLSAgICBpbnQgZnVuY3Rpb25MZW5ndGgg
PSBpbmZvLmVuZEZ1bmN0aW9uT2Zmc2V0IC0gaW5mby5zdGFydEZ1bmN0aW9uT2Zmc2V0OworICAg
IGludCBmdW5jdGlvbkxlbmd0aCA9IGZ1bmN0aW9uSW5mby5lbmRPZmZzZXQgLSBmdW5jdGlvbklu
Zm8uc3RhcnRPZmZzZXQ7CiAgICAgaWYgKFRyZWVCdWlsZGVyOjpDYW5Vc2VGdW5jdGlvbkNhY2hl
ICYmIG1fZnVuY3Rpb25DYWNoZSAmJiBmdW5jdGlvbkxlbmd0aCA+IG1pbmltdW1GdW5jdGlvbkxl
bmd0aFRvQ2FjaGUpIHsKICAgICAgICAgU291cmNlUHJvdmlkZXJDYWNoZUl0ZW1DcmVhdGlvblBh
cmFtZXRlcnMgcGFyYW1ldGVyczsKLSAgICAgICAgcGFyYW1ldGVycy5lbmRGdW5jdGlvbk9mZnNl
dCA9IGluZm8uZW5kRnVuY3Rpb25PZmZzZXQ7CisgICAgICAgIHBhcmFtZXRlcnMuZW5kRnVuY3Rp
b25PZmZzZXQgPSBmdW5jdGlvbkluZm8uZW5kT2Zmc2V0OwogICAgICAgICBwYXJhbWV0ZXJzLmZ1
bmN0aW9uTmFtZVN0YXJ0ID0gZnVuY3Rpb25OYW1lU3RhcnQ7CiAgICAgICAgIHBhcmFtZXRlcnMu
bGFzdFRvY2tlbkxpbmUgPSBsb2NhdGlvbi5saW5lOwogICAgICAgICBwYXJhbWV0ZXJzLmxhc3RU
b2NrZW5TdGFydE9mZnNldCA9IGxvY2F0aW9uLnN0YXJ0T2Zmc2V0OwogICAgICAgICBwYXJhbWV0
ZXJzLmxhc3RUb2NrZW5FbmRPZmZzZXQgPSBsb2NhdGlvbi5lbmRPZmZzZXQ7CiAgICAgICAgIHBh
cmFtZXRlcnMubGFzdFRvY2tlbkxpbmVTdGFydE9mZnNldCA9IGxvY2F0aW9uLmxpbmVTdGFydE9m
ZnNldDsKLSNpZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQotICAgICAgICBpZiAo
aW5mby5mdW5jdGlvbkJvZHlUeXBlID09IEFycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikgewor
ICAgICAgICBwYXJhbWV0ZXJzLnBhcmFtZXRlckNvdW50ID0gZnVuY3Rpb25JbmZvLnBhcmFtZXRl
ckNvdW50OworICAgICAgICBpZiAoZnVuY3Rpb25Cb2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9k
eUV4cHJlc3Npb24pIHsKICAgICAgICAgICAgIHBhcmFtZXRlcnMuaXNCb2R5QXJyb3dFeHByZXNz
aW9uID0gdHJ1ZTsKICAgICAgICAgICAgIHBhcmFtZXRlcnMudG9rZW5UeXBlID0gbV90b2tlbi5t
X3R5cGU7CiAgICAgICAgIH0KLSNlbmRpZgogICAgICAgICBmdW5jdGlvblNjb3BlLT5maWxsUGFy
YW1ldGVyc0ZvclNvdXJjZVByb3ZpZGVyQ2FjaGUocGFyYW1ldGVycyk7CiAgICAgICAgIG5ld0lu
Zm8gPSBTb3VyY2VQcm92aWRlckNhY2hlSXRlbTo6Y3JlYXRlKHBhcmFtZXRlcnMpOwogICAgIH0K
ICAgICAKICAgICBwb3BTY29wZShmdW5jdGlvblNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVl
VmFyaWFibGVJbmZvKTsKICAgICAKLSNpZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFY
KQotICAgIGlmIChpbmZvLmZ1bmN0aW9uQm9keVR5cGUgPT0gQXJyb3dGdW5jdGlvbkJvZHlFeHBy
ZXNzaW9uKQorICAgIGlmIChmdW5jdGlvbkJvZHlUeXBlID09IEFycm93RnVuY3Rpb25Cb2R5RXhw
cmVzc2lvbikKICAgICAgICAgZmFpbElmRmFsc2UoaXNFbmRPZkFycm93RnVuY3Rpb24oKSwgIkV4
cGVjdGVkIHRoZSBjbG9zaW5nICc7JyAnLCcgJ10nICcpJyAnfScsIGxpbmUgdGVybWluYXRvciBv
ciBFT0YgYWZ0ZXIgYXJyb3cgZnVuY3Rpb24iKTsKICAgICBlbHNlIHsKICAgICAgICAgbWF0Y2hP
ckZhaWwoQ0xPU0VCUkFDRSwgIkV4cGVjdGVkIGEgY2xvc2luZyAnfScgYWZ0ZXIgYSAiLCBzdHJp
bmdGb3JGdW5jdGlvbk1vZGUobW9kZSksICIgYm9keSIpOwogICAgICAgICBuZXh0KCk7CiAgICAg
fQotI2Vsc2UKLSAgICBtYXRjaE9yRmFpbChDTE9TRUJSQUNFLCAiRXhwZWN0ZWQgYSBjbG9zaW5n
ICd9JyBhZnRlciBhICIsIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShtb2RlKSwgIiBib2R5Iik7Ci0g
ICAgbmV4dCgpOwotI2VuZGlmCiAgICAgCiAgICAgaWYgKG5ld0luZm8pCi0gICAgICAgIG1fZnVu
Y3Rpb25DYWNoZS0+YWRkKGluZm8uc3RhcnRGdW5jdGlvbk9mZnNldCwgV1RGOjptb3ZlKG5ld0lu
Zm8pKTsKKyAgICAgICAgbV9mdW5jdGlvbkNhY2hlLT5hZGQoZnVuY3Rpb25JbmZvLnN0YXJ0T2Zm
c2V0LCBXVEY6Om1vdmUobmV3SW5mbykpOwogICAgIAotICAgIGluZm8uYm9keUVuZExpbmUgPSBt
X2xhc3RUb2tlbkVuZFBvc2l0aW9uLmxpbmU7CisgICAgZnVuY3Rpb25JbmZvLmVuZExpbmUgPSBt
X2xhc3RUb2tlbkVuZFBvc2l0aW9uLmxpbmU7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTE4
MjAsMTIgKzE3OTIsMTIgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVt
ZQogICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIHVu
c2lnbmVkIGZ1bmN0aW9uS2V5d29yZFN0YXJ0ID0gdG9rZW5TdGFydCgpOwogICAgIG5leHQoKTsK
LSAgICBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+IGluZm87Ci0gICAgZmFpbElmRmFs
c2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTmVlZHNOYW1lLCBGdW5jdGlv
bk1vZGUsIHRydWUsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVk
ZWQsCi0gICAgICAgIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbmZvLCBTdGFuZGFyZEZ1bmN0aW9u
UGFyc2VUeXBlKSksICJDYW5ub3QgcGFyc2UgdGhpcyBmdW5jdGlvbiIpOwotICAgIGZhaWxJZkZh
bHNlKGluZm8ubmFtZSwgIkZ1bmN0aW9uIHN0YXRlbWVudHMgbXVzdCBoYXZlIGEgbmFtZSIpOwot
ICAgIGZhaWxJZkZhbHNlSWZTdHJpY3QoZGVjbGFyZVZhcmlhYmxlKGluZm8ubmFtZSksICJDYW5u
b3QgZGVjbGFyZSBhIGZ1bmN0aW9uIG5hbWVkICciLCBpbmZvLm5hbWUtPmltcGwoKSwgIicgaW4g
c3RyaWN0IG1vZGUiKTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jRGVjbFN0YXRlbWVu
dChsb2NhdGlvbiwgaW5mbyk7CisgICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiBm
dW5jdGlvbkluZm87CisgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQs
IEZ1bmN0aW9uTmVlZHNOYW1lLCBOb3JtYWxGdW5jdGlvbk1vZGUsIHRydWUsIENvbnN0cnVjdG9y
S2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsCisgICAgICAgIGZ1bmN0aW9uS2V5
d29yZFN0YXJ0LCBmdW5jdGlvbkluZm8sIFN0YW5kYXJkRnVuY3Rpb25QYXJzZVR5cGUpKSwgIkNh
bm5vdCBwYXJzZSB0aGlzIGZ1bmN0aW9uIik7CisgICAgZmFpbElmRmFsc2UoZnVuY3Rpb25JbmZv
Lm5hbWUsICJGdW5jdGlvbiBzdGF0ZW1lbnRzIG11c3QgaGF2ZSBhIG5hbWUiKTsKKyAgICBmYWls
SWZGYWxzZUlmU3RyaWN0KGRlY2xhcmVWYXJpYWJsZShmdW5jdGlvbkluZm8ubmFtZSksICJDYW5u
b3QgZGVjbGFyZSBhIGZ1bmN0aW9uIG5hbWVkICciLCBmdW5jdGlvbkluZm8ubmFtZS0+aW1wbCgp
LCAiJyBpbiBzdHJpY3QgbW9kZSIpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmNEZWNs
U3RhdGVtZW50KGxvY2F0aW9uLCBmdW5jdGlvbkluZm8pOwogfQogCiAjaWYgRU5BQkxFKEVTNl9D
TEFTU19TWU5UQVgpCkBAIC0xOTM5LDcgKzE5MTEsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVDbGFzc0V4CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBQYXJzZXJG
dW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+IG1ldGhvZEluZm87CiAgICAgICAgICAgICBib29sIGlz
Q29uc3RydWN0b3IgPSAhaXNTdGF0aWNNZXRob2QgJiYgKmlkZW50ID09IHByb3BlcnR5TmFtZXMu
Y29uc3RydWN0b3I7Ci0gICAgICAgICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8o
Y29udGV4dCwgRnVuY3Rpb25Ob1JlcXVpcmVtZW50cywgaXNTdGF0aWNNZXRob2QgPyBGdW5jdGlv
bk1vZGUgOiBNZXRob2RNb2RlLCBmYWxzZSwgaXNDb25zdHJ1Y3RvciA/IGNvbnN0cnVjdG9yS2lu
ZCA6IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOZWVkZWQsIG1ldGhvZFN0
YXJ0LCBtZXRob2RJbmZvLCBTdGFuZGFyZEZ1bmN0aW9uUGFyc2VUeXBlKSksICJDYW5ub3QgcGFy
c2UgdGhpcyBtZXRob2QiKTsKKyAgICAgICAgICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9u
SW5mbyhjb250ZXh0LCBGdW5jdGlvbk5vUmVxdWlyZW1lbnRzLCBpc1N0YXRpY01ldGhvZCA/IE5v
cm1hbEZ1bmN0aW9uTW9kZSA6IE1ldGhvZE1vZGUsIGZhbHNlLCBpc0NvbnN0cnVjdG9yID8gY29u
c3RydWN0b3JLaW5kIDogQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5lZWRl
ZCwgbWV0aG9kU3RhcnQsIG1ldGhvZEluZm8sIFN0YW5kYXJkRnVuY3Rpb25QYXJzZVR5cGUpKSwg
IkNhbm5vdCBwYXJzZSB0aGlzIG1ldGhvZCIpOwogICAgICAgICAgICAgZmFpbElmRmFsc2UoaWRl
bnQgJiYgZGVjbGFyZVZhcmlhYmxlKGlkZW50KSwgIkNhbm5vdCBkZWNsYXJlIGEgbWV0aG9kIG5h
bWVkICciLCBtZXRob2RJbmZvLm5hbWUtPmltcGwoKSwgIiciKTsKICAgICAgICAgICAgIG1ldGhv
ZEluZm8ubmFtZSA9IGlzQ29uc3RydWN0b3IgPyBjbGFzc05hbWUgOiBpZGVudDsKIApAQCAtMjc1
Nyw3ICsyNzI5LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzcwog
ICAgICAgICBuZXh0KCk7CiAgICAgICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4g
aW5mbzsKICAgICAgICAgaW5mby5uYW1lID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPm51bGxJZGVu
dGlmaWVyOwotICAgICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwg
RnVuY3Rpb25Ob1JlcXVpcmVtZW50cywgRnVuY3Rpb25Nb2RlLCBmYWxzZSwgQ29uc3RydWN0b3JL
aW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQs
IGluZm8sIFN0YW5kYXJkRnVuY3Rpb25QYXJzZVR5cGUpKSwgIkNhbm5vdCBwYXJzZSBmdW5jdGlv
biBleHByZXNzaW9uIik7CisgICAgICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhj
b250ZXh0LCBGdW5jdGlvbk5vUmVxdWlyZW1lbnRzLCBOb3JtYWxGdW5jdGlvbk1vZGUsIGZhbHNl
LCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBmdW5jdGlv
bktleXdvcmRTdGFydCwgaW5mbywgU3RhbmRhcmRGdW5jdGlvblBhcnNlVHlwZSkpLCAiQ2Fubm90
IHBhcnNlIGZ1bmN0aW9uIGV4cHJlc3Npb24iKTsKICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3Jl
YXRlRnVuY3Rpb25FeHByKGxvY2F0aW9uLCBpbmZvKTsKICAgICB9CiAjaWYgRU5BQkxFKEVTNl9D
TEFTU19TWU5UQVgpCkBAIC0zMDAyLDcgKzI5NzQsNiBAQCBlbmRNZW1iZXJFeHByZXNzaW9uOgog
ICAgIHJldHVybiBiYXNlOwogfQogCi0jaWYgRU5BQkxFKEVTNl9BUlJPV0ZVTkNUSU9OX1NZTlRB
WCkKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUFycm93RnVuY3Rp
b25FeHByZXNzaW9uKFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewpAQCAtMzAxMiwxMSArMjk4Mywx
MCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzCiAgICAgbG9jYXRp
b24gPSB0b2tlbkxvY2F0aW9uKCk7CiAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVy
PiBpbmZvOwogICAgIGluZm8ubmFtZSA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRp
ZmllcjsKLSAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rp
b25Ob1JlcXVpcmVtZW50cywgRnVuY3Rpb25Nb2RlLCB0cnVlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5v
bmUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW5mbywg
QXJyb3dGdW5jdGlvblBhcnNlVHlwZSkpLCAiQ2Fubm90IHBhcnNlIGFycm93IGZ1bmN0aW9uIGV4
cHJlc3Npb24iKTsKKyAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwg
RnVuY3Rpb25Ob1JlcXVpcmVtZW50cywgQXJyb3dGdW5jdGlvbk1vZGUsIHRydWUsIENvbnN0cnVj
dG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGZ1bmN0aW9uS2V5d29yZFN0
YXJ0LCBpbmZvLCBBcnJvd0Z1bmN0aW9uUGFyc2VUeXBlKSksICJDYW5ub3QgcGFyc2UgYXJyb3cg
ZnVuY3Rpb24gZXhwcmVzc2lvbiIpOwogCiAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQXJyb3dG
dW5jdGlvbkV4cHIobG9jYXRpb24sIGluZm8pOwogfQotI2VuZGlmCiAKIHN0YXRpYyBjb25zdCBj
aGFyKiBvcGVyYXRvclN0cmluZyhib29sIHByZWZpeCwgdW5zaWduZWQgdG9rKQogewpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCShyZXZpc2lvbiAxODY5NTQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC04
MSwyMSArODEsOSBAQCBjbGFzcyBTb3VyY2VDb2RlOwogQ09NUElMRV9BU1NFUlQoTGFzdFVudGFn
Z2VkVG9rZW4gPCA2NCwgTGVzc1RoYW42NFVudGFnZ2VkVG9rZW5zKTsKIAogZW51bSBTb3VyY2VF
bGVtZW50c01vZGUgeyBDaGVja0ZvclN0cmljdE1vZGUsIERvbnRDaGVja0ZvclN0cmljdE1vZGUg
fTsKLSNpZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQogZW51bSBGdW5jdGlvblBh
cnNlVHlwZSB7IFN0YW5kYXJkRnVuY3Rpb25QYXJzZVR5cGUsIEFycm93RnVuY3Rpb25QYXJzZVR5
cGUgfTsKLSNlbHNlCi1lbnVtIEZ1bmN0aW9uUGFyc2VUeXBlIHsgU3RhbmRhcmRGdW5jdGlvblBh
cnNlVHlwZX07Ci0jZW5kaWYKK2VudW0gRnVuY3Rpb25Cb2R5VHlwZSB7IEFycm93RnVuY3Rpb25C
b2R5RXhwcmVzc2lvbiwgQXJyb3dGdW5jdGlvbkJvZHlCbG9jaywgU3RhbmRhcmRGdW5jdGlvbkJv
ZHlCbG9jayB9OwogZW51bSBGdW5jdGlvblJlcXVpcmVtZW50cyB7IEZ1bmN0aW9uTm9SZXF1aXJl
bWVudHMsIEZ1bmN0aW9uTmVlZHNOYW1lIH07Ci1lbnVtIEZ1bmN0aW9uUGFyc2VNb2RlIHsKLSAg
ICBGdW5jdGlvbk1vZGUsCi0gICAgR2V0dGVyTW9kZSwKLSAgICBTZXR0ZXJNb2RlLAotICAgIE1l
dGhvZE1vZGUsCi0jaWYgRU5BQkxFKEVTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCkKLSAgICBBcnJv
d0Z1bmN0aW9uTW9kZQotI2VuZGlmCi19OwogZW51bSBEZXN0cnVjdHVyaW5nS2luZCB7CiAgICAg
RGVzdHJ1Y3R1cmVUb1ZhcmlhYmxlcywKICAgICBEZXN0cnVjdHVyZVRvTGV4aWNhbFZhcmlhYmxl
cywKQEAgLTUzNywxMyArNTI1LDEyIEBAIGNsYXNzIFBhcnNlciB7CiAKIHB1YmxpYzoKICAgICBQ
YXJzZXIoCi0gICAgICAgIFZNKiwgY29uc3QgU291cmNlQ29kZSYsIEZ1bmN0aW9uUGFyYW1ldGVy
cyosIGNvbnN0IElkZW50aWZpZXImLCAKLSAgICAgICAgSlNQYXJzZXJCdWlsdGluTW9kZSwgSlNQ
YXJzZXJTdHJpY3RNb2RlLCBKU1BhcnNlckNvZGVUeXBlLAorICAgICAgICBWTSosIGNvbnN0IFNv
dXJjZUNvZGUmLCBKU1BhcnNlckJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGUsIEpTUGFy
c2VyQ29kZVR5cGUsIAogICAgICAgICBDb25zdHJ1Y3RvcktpbmQgZGVmYXVsdENvbnN0cnVjdG9y
S2luZCA9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgVGhpc1REWk1vZGUgPSBUaGlzVERaTW9kZTo6
Q2hlY2tJZk5lZWRlZCk7CiAgICAgflBhcnNlcigpOwogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFBh
cnNlZE5vZGU+Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKFBhcnNlckVy
cm9yJik7CisgICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKFBhcnNlckVycm9y
JiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uUGFyc2VNb2RlKTsKIAogICAgIEpTVGV4dFBv
c2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKSBjb25zdCB7IHJldHVybiBtX2xleGVy
LT5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7IH0KICAgICBKU1Rva2VuTG9jYXRpb24gbG9j
YXRpb25CZWZvcmVMYXN0VG9rZW4oKSBjb25zdCB7IHJldHVybiBtX2xleGVyLT5sYXN0VG9rZW5M
b2NhdGlvbigpOyB9CkBAIC03MzksNyArNzI2LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBQ
YXJzZXIoKTsKLSAgICBTdHJpbmcgcGFyc2VJbm5lcigpOworICAgIFN0cmluZyBwYXJzZUlubmVy
KGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlvblBhcnNlTW9kZSk7CiAKICAgICB2b2lkIGRpZEZp
bmlzaFBhcnNpbmcoU291cmNlRWxlbWVudHMqLCBEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25T
dGFjayYsIFZhcmlhYmxlRW52aXJvbm1lbnQmLCBDb2RlRmVhdHVyZXMsIGludCwgY29uc3QgVmVj
dG9yPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+JiYpOwogCkBAIC03OTYsNyArNzgzLDYgQEAg
cHJpdmF0ZToKICAgICAgICAgcmV0dXJuIG1fdG9rZW4ubV90eXBlID09IElERU5UICYmICptX3Rv
a2VuLm1fZGF0YS5pZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5vZjsKICAgICB9CiAgICAg
Ci0jaWYgRU5BQkxFKEVTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCkKICAgICBBTFdBWVNfSU5MSU5F
IGJvb2wgaXNFbmRPZkFycm93RnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1hdGNo
KFNFTUlDT0xPTikgfHwgbWF0Y2goQ09NTUEpIHx8IG1hdGNoKENMT1NFUEFSRU4pIHx8IG1hdGNo
KENMT1NFQlJBQ0UpIHx8IG1hdGNoKENMT1NFQlJBQ0tFVCkgfHwgbWF0Y2goRU9GVE9LKSB8fCBt
X2xleGVyLT5wcmV2VGVybWluYXRvcigpOwpAQCAtODA0LDYgKzc5MCw3IEBAIHByaXZhdGU6CiAg
ICAgCiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzQXJyb3dGdW5jdGlvblBhcmFtdGVycygpCiAg
ICAgeworI2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCiAgICAgICAgIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uID0gZmFsc2U7CiAgICAgICAgIAogICAgICAgICBpZiAobWF0Y2goRU9G
VE9LKSkKQEAgLTgzNCw4ICs4MjEsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgcmVzdG9yZVNhdmVQ
b2ludChzYXZlQXJyb3dGdW5jdGlvblBvaW50KTsKICAgICAgICAgCiAgICAgICAgIHJldHVybiBp
c0Fycm93RnVuY3Rpb247Ci0gICAgfQorI2Vsc2UKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogI2Vu
ZGlmCisgICAgfQogICAgIAogICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgdG9rZW5TdGFydCgp
CiAgICAgewpAQCAtOTQ2LDcgKzkzNSw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBtYXRj
aChMRVQpICYmICFzdHJpY3RNb2RlKCk7CiAgICAgfQogCi0gICAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgcGFyc2VTb3VyY2VFbGVtZW50cyhUcmVlQnVp
bGRlciYsIFNvdXJjZUVsZW1lbnRzTW9kZSwgRnVuY3Rpb25QYXJzZVR5cGUpOworICAgIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIHBhcnNlU291cmNlRWxl
bWVudHMoVHJlZUJ1aWxkZXImLCBTb3VyY2VFbGVtZW50c01vZGUpOwogICAgIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZVN0YXRlbWVudExpc3RJdGVtKFRy
ZWVCdWlsZGVyJiwgY29uc3QgSWRlbnRpZmllciomIGRpcmVjdGl2ZSwgdW5zaWduZWQqIGRpcmVj
dGl2ZUxpdGVyYWxMZW5ndGgpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZVN0YXRlbWVudCBwYXJzZVN0YXRlbWVudChUcmVlQnVpbGRlciYsIGNvbnN0IElkZW50aWZpZXIq
JiBkaXJlY3RpdmUsIHVuc2lnbmVkKiBkaXJlY3RpdmVMaXRlcmFsTGVuZ3RoID0gMCk7CiAjaWYg
RU5BQkxFKEVTNl9DTEFTU19TWU5UQVgpCkBAIC05ODcsMTcgKzk3NiwxMyBAQCBwcml2YXRlOgog
ICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVByb3BlcnR5IHBhcnNlUHJvcGVy
dHkoVHJlZUJ1aWxkZXImLCBib29sIHN0cmljdCk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBwYXJzZVByb3BlcnR5TWV0aG9kKFRyZWVCdWlsZGVyJiBj
b250ZXh0LCBjb25zdCBJZGVudGlmaWVyKiBtZXRob2ROYW1lKTsKICAgICB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVQcm9wZXJ0eSBwYXJzZUdldHRlclNldHRlcihUcmVlQnVpbGRl
ciYsIGJvb2wgc3RyaWN0LCBQcm9wZXJ0eU5vZGU6OlR5cGUsIHVuc2lnbmVkIGdldHRlck9yU2V0
dGVyU3RhcnRPZmZzZXQsIENvbnN0cnVjdG9yS2luZCA9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwg
U3VwZXJCaW5kaW5nID0gU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQpOwotICAgIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBUcmVlRnVuY3Rpb25Cb2R5IHBhcnNlRnVu
Y3Rpb25Cb2R5KFRyZWVCdWlsZGVyJiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVu
Y3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIENvbnN0cnVjdG9yS2luZCwgRnVu
Y3Rpb25QYXJzZVR5cGUpOwotICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlT
X0lOTElORSBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCBwYXJzZUZvcm1hbFBhcmFtZXRlcnMoVHJl
ZUJ1aWxkZXImKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJ
TkUgVHJlZUZ1bmN0aW9uQm9keSBwYXJzZUZ1bmN0aW9uQm9keShUcmVlQnVpbGRlciYsIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVu
Y3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIENvbnN0cnVjdG9yS2luZCwgRnVu
Y3Rpb25Cb2R5VHlwZSwgdW5zaWduZWQsIEZ1bmN0aW9uUGFyc2VNb2RlKTsKKyAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgYm9vbCBwYXJzZUZvcm1hbFBhcmFt
ZXRlcnMoVHJlZUJ1aWxkZXImLCBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCwgdW5zaWduZWQmKTsK
ICAgICBlbnVtIFZhckRlY2xhcmF0aW9uTGlzdENvbnRleHQgeyBGb3JMb29wQ29udGV4dCwgVmFy
RGVjbGFyYXRpb25Db250ZXh0IH07CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlRXhwcmVzc2lvbiBwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KFRyZWVCdWlsZGVyJiwg
aW50JiBkZWNsYXJhdGlvbnMsIFRyZWVEZXN0cnVjdHVyaW5nUGF0dGVybiYgbGFzdFBhdHRlcm4s
IFRyZWVFeHByZXNzaW9uJiBsYXN0SW5pdGlhbGl6ZXIsIEpTVGV4dFBvc2l0aW9uJiBpZGVudFN0
YXJ0LCBKU1RleHRQb3NpdGlvbiYgaW5pdFN0YXJ0LCBKU1RleHRQb3NpdGlvbiYgaW5pdEVuZCwg
VmFyRGVjbGFyYXRpb25MaXN0Q29udGV4dCwgRGVjbGFyYXRpb25UeXBlKTsKICAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBUcmVlQ29uc3REZWNsTGlzdCBwYXJz
ZUNvbnN0RGVjbGFyYXRpb25MaXN0KFRyZWVCdWlsZGVyJik7Ci0KLSNpZiBFTkFCTEUoRVM2X0FS
Uk9XRlVOQ1RJT05fU1lOVEFYKQotICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZVN0YXRlbWVudCBwYXJzZUFycm93RnVuY3Rpb25TaW5nbGVFeHByZXNzaW9uQm9keShUcmVlQnVp
bGRlciYsIEZ1bmN0aW9uUGFyc2VUeXBlKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJzZUFycm93RnVuY3Rpb25TaW5nbGVFeHByZXNzaW9u
Qm9keVNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJik7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBwYXJzZUFycm93RnVuY3Rpb25FeHByZXNzaW9uKFRy
ZWVCdWlsZGVyJik7Ci0jZW5kaWYKLQogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
TkVWRVJfSU5MSU5FIFRyZWVEZXN0cnVjdHVyaW5nUGF0dGVybiBjcmVhdGVCaW5kaW5nUGF0dGVy
bihUcmVlQnVpbGRlciYsIERlc3RydWN0dXJpbmdLaW5kLCBjb25zdCBJZGVudGlmaWVyJiwgaW50
IGRlcHRoLCBKU1Rva2VuLCBBc3NpZ25tZW50Q29udGV4dCk7CiAgICAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgVHJlZURlc3RydWN0dXJpbmdQYXR0ZXJuIHBhcnNl
RGVzdHJ1Y3R1cmluZ1BhdHRlcm4oVHJlZUJ1aWxkZXImLCBEZXN0cnVjdHVyaW5nS2luZCwgQXNz
aWdubWVudENvbnRleHQgPSBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQs
IGludCBkZXB0aCA9IDApOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJf
SU5MSU5FIFRyZWVEZXN0cnVjdHVyaW5nUGF0dGVybiB0cnlQYXJzZURlc3RydWN0dXJpbmdQYXR0
ZXJuRXhwcmVzc2lvbihUcmVlQnVpbGRlciYsIEFzc2lnbm1lbnRDb250ZXh0KTsKQEAgLTEwMzAs
MTMgKzEwMTUsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIGFsbG93QXV0b21hdGljU2Vt
aWNvbG9uKCk7CiAgICAgfQogICAgIAotCi0jaWYgRU5BQkxFKEVTNl9BUlJPV0ZVTkNUSU9OX1NZ
TlRBWCkKICAgICB2b2lkIHNldEVuZE9mU3RhdGVtZW50KCkKICAgICB7CiAgICAgICAgIG1fbGV4
ZXItPnNldFRva2VuUG9zaXRpb24oJm1fdG9rZW4pOwogICAgIH0KLSNlbmRpZgogCiAgICAgYm9v
bCBjYW5SZWN1cnNlKCkKICAgICB7CkBAIC0xMTA4LDYgKzEwOTAsNyBAQCBwcml2YXRlOgogICAg
IGNvbnN0IFNvdXJjZUNvZGUqIG1fc291cmNlOwogICAgIFBhcnNlckFyZW5hIG1fcGFyc2VyQXJl
bmE7CiAgICAgc3RkOjp1bmlxdWVfcHRyPExleGVyVHlwZT4gbV9sZXhlcjsKKyAgICBGdW5jdGlv
blBhcmFtZXRlcnMqIG1fcGFyYW1ldGVycyB7IG51bGxwdHIgfTsKICAgICAKICAgICBib29sIG1f
aGFzU3RhY2tPdmVyZmxvdzsKICAgICBTdHJpbmcgbV9lcnJvck1lc3NhZ2U7CkBAIC0xMTUzLDEz
ICsxMTM2LDEzIEBAIHByaXZhdGU6CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0
ZW1wbGF0ZSA8Y2xhc3MgUGFyc2VkTm9kZT4KLXN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UoUGFyc2VyRXJyb3ImIGVycm9yKQorc3RkOjp1bmlxdWVf
cHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZShQYXJzZXJFcnJvciYgZXJy
b3IsIGNvbnN0IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIEZ1bmN0aW9uUGFyc2VNb2RlIHBhcnNl
TW9kZSkKIHsKICAgICBpbnQgZXJyTGluZTsKICAgICBTdHJpbmcgZXJyTXNnOwogCiAgICAgaWYg
KFBhcnNlZE5vZGU6OnNjb3BlSXNGdW5jdGlvbikKLSAgICAgICAgbV9sZXhlci0+c2V0SXNSZXBh
cnNpbmcoKTsKKyAgICAgICAgbV9sZXhlci0+c2V0SXNSZXBhcnNpbmdGdW5jdGlvbigpOwogCiAg
ICAgbV9zb3VyY2VFbGVtZW50cyA9IDA7CiAKQEAgLTExNzAsNyArMTE1Myw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4ZXIKICAgICBBU1NFUlQobV9zb3VyY2UtPnN0
YXJ0Q29sdW1uKCkgPiAwKTsKICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiA9IG1fc291cmNlLT5z
dGFydENvbHVtbigpIC0gMTsKIAotICAgIFN0cmluZyBwYXJzZUVycm9yID0gcGFyc2VJbm5lcigp
OworICAgIFN0cmluZyBwYXJzZUVycm9yID0gcGFyc2VJbm5lcihjYWxsZWVOYW1lLCBwYXJzZU1v
ZGUpOwogCiAgICAgaW50IGxpbmVOdW1iZXIgPSBtX2xleGVyLT5saW5lTnVtYmVyKCk7CiAgICAg
Ym9vbCBsZXhFcnJvciA9IG1fbGV4ZXItPnNhd0Vycm9yKCk7CkBAIC0xMjAwLDYgKzExODMsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtX3ZhckRlY2xhcmF0aW9ucywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1fZnVuY0RlY2xhcmF0aW9ucywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTY29wZSgpLT5maW5hbGl6ZUxleGljYWxFbnZp
cm9ubWVudCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJhbWV0
ZXJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm1fc291cmNlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9mZWF0dXJlcywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fbnVtQ29uc3RhbnRzKTsKQEAgLTEyMzMsMTggKzEy
MTcsMTkgQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxMZXhlcgogCiB0ZW1w
bGF0ZSA8Y2xhc3MgUGFyc2VkTm9kZT4KIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJz
ZSgKLSAgICBWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25QYXJhbWV0
ZXJzKiBwYXJhbWV0ZXJzLAorICAgIFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLAog
ICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1v
ZGUsCiAgICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIEpTUGFyc2VyQ29kZVR5cGUg
Y29kZVR5cGUsCi0gICAgUGFyc2VyRXJyb3ImIGVycm9yLCBKU1RleHRQb3NpdGlvbiogcG9zaXRp
b25CZWZvcmVMYXN0TmV3bGluZSA9IDAsCi0gICAgQ29uc3RydWN0b3JLaW5kIGRlZmF1bHRDb25z
dHJ1Y3RvcktpbmQgPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFRoaXNURFpNb2RlIHRoaXNURFpN
b2RlID0gVGhpc1REWk1vZGU6OkNoZWNrSWZOZWVkZWQpCisgICAgUGFyc2VyRXJyb3ImIGVycm9y
LCBKU1RleHRQb3NpdGlvbiogcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9IG51bGxwdHIsCisg
ICAgRnVuY3Rpb25QYXJzZU1vZGUgcGFyc2VNb2RlID0gTm90QUZ1bmN0aW9uTW9kZSwgQ29uc3Ry
dWN0b3JLaW5kIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQgPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUs
IAorICAgIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlID0gVGhpc1REWk1vZGU6OkNoZWNrSWZOZWVk
ZWQpCiB7CiAgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIlBhcnNpbmciKTsKIAog
ICAgIEFTU0VSVCghc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZSgpLmlzTnVsbCgpKTsKICAgICBp
ZiAoc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZSgpLmlzOEJpdCgpKSB7Ci0gICAgICAgIFBhcnNl
cjxMZXhlcjxMQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBwYXJhbWV0ZXJzLCBuYW1lLCBidWls
dGluTW9kZSwgc3RyaWN0TW9kZSwgY29kZVR5cGUsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIHRo
aXNURFpNb2RlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHJlc3VsdCA9
IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJvcik7CisgICAgICAgIFBhcnNlcjxMZXhlcjxM
Q2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgY29kZVR5
cGUsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIHRoaXNURFpNb2RlKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihl
cnJvciwgbmFtZSwgcGFyc2VNb2RlKTsKICAgICAgICAgaWYgKHBvc2l0aW9uQmVmb3JlTGFzdE5l
d2xpbmUpCiAgICAgICAgICAgICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9IHBhcnNlci5w
b3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7CiAgICAgICAgIGlmIChidWlsdGluTW9kZSA9PSBK
U1BhcnNlckJ1aWx0aW5Nb2RlOjpCdWlsdGluKSB7CkBAIC0xMjU2LDggKzEyNDEsOCBAQCBzdGQ6
OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgfQogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZGVmYXVsdENvbnN0cnVjdG9yS2luZCA9PSBD
b25zdHJ1Y3RvcktpbmQ6Ok5vbmUsICJCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZURlZmF1bHRD
b25zdHJ1Y3RvciBzaG91bGQgYWx3YXlzIHVzZSBhIDgtYml0IHN0cmluZyIpOwotICAgIFBhcnNl
cjxMZXhlcjxVQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBwYXJhbWV0ZXJzLCBuYW1lLCBidWls
dGluTW9kZSwgc3RyaWN0TW9kZSwgY29kZVR5cGUsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIHRo
aXNURFpNb2RlKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcmVzdWx0ID0gcGFy
c2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yKTsKKyAgICBQYXJzZXI8TGV4ZXI8VUNoYXI+PiBw
YXJzZXIodm0sIHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIGNvZGVUeXBlLCBkZWZh
dWx0Q29uc3RydWN0b3JLaW5kLCB0aGlzVERaTW9kZSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFBh
cnNlZE5vZGU+IHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJvciwgbmFtZSwg
cGFyc2VNb2RlKTsKICAgICBpZiAocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSkKICAgICAgICAg
KnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUgPSBwYXJzZXIucG9zaXRpb25CZWZvcmVMYXN0TmV3
bGluZSgpOwogICAgIHJldHVybiByZXN1bHQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlckZ1bmN0aW9uSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyRnVuY3Rpb25JbmZvLmgJKHJldmlzaW9uIDE4Njk1NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyRnVuY3Rpb25JbmZvLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDI3ICsyOCwxNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotI2lmIEVO
QUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCi1lbnVtIEZ1bmN0aW9uQm9keVR5cGUgeyBB
cnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24sIEFycm93RnVuY3Rpb25Cb2R5QmxvY2ssIFN0YW5k
YXJkRnVuY3Rpb25Cb2R5QmxvY2sgfTsKLSNlbmRpZgotCiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+CiBzdHJ1Y3QgUGFyc2VyRnVuY3Rpb25JbmZvIHsKICAgICBjb25zdCBJZGVudGlmaWVy
KiBuYW1lID0gMDsKICAgICB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlz
dCBwYXJhbWV0ZXJzID0gMDsKICAgICB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6RnVuY3Rpb25Cb2R5
IGJvZHkgPSAwOwotICAgIHVuc2lnbmVkIHN0YXJ0RnVuY3Rpb25PZmZzZXQgPSAwOwotICAgIHVu
c2lnbmVkIGVuZEZ1bmN0aW9uT2Zmc2V0ID0gMDsKLSAgICBpbnQgYm9keVN0YXJ0TGluZSA9IDA7
Ci0gICAgaW50IGJvZHlFbmRMaW5lID0gMDsKKyAgICB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCA9
IDA7CisgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSAwOworICAgIHVuc2lnbmVkIGVuZE9mZnNl
dCA9IDA7CisgICAgaW50IHN0YXJ0TGluZSA9IDA7CisgICAgaW50IGVuZExpbmUgPSAwOwogICAg
IHVuc2lnbmVkIGJvZHlTdGFydENvbHVtbiA9IDA7Ci0jaWYgRU5BQkxFKEVTNl9BUlJPV0ZVTkNU
SU9OX1NZTlRBWCkKLSAgICB1bnNpZ25lZCBhcnJvd0Z1bmN0aW9uT2Zmc2V0ID0gMDsKLSAgICB1
bnNpZ25lZCBhcnJvd0Z1bmN0aW9uTmV4dFRvY2tlbkVuZE9mZnNldCA9IDA7Ci0gICAgYm9vbCBp
c0Fycm93RnVuY3Rpb24geyBmYWxzZSB9OwotICAgIGJvb2wgaXNFbmRCeVRlcm1pbmF0b3IgeyBm
YWxzZSB9OwotICAgIEZ1bmN0aW9uQm9keVR5cGUgZnVuY3Rpb25Cb2R5VHlwZSB7IFN0YW5kYXJk
RnVuY3Rpb25Cb2R5QmxvY2sgfTsKLSNlbmRpZgogfTsKIAogI2lmIEVOQUJMRShFUzZfQ0xBU1Nf
U1lOVEFYKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMu
aAkocmV2aXNpb24gMTg2OTU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXJNb2Rlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCwxNSBAQCBlbnVtIERlYnVnZ2Vy
TW9kZSB7IERlYnVnZ2VyT2ZmLCBEZWJ1Z2dlCiAKIGVudW0gRnVuY3Rpb25Nb2RlIHsgRnVuY3Rp
b25FeHByZXNzaW9uLCBGdW5jdGlvbkRlY2xhcmF0aW9uIH07CiAKK2VudW0gRnVuY3Rpb25QYXJz
ZU1vZGUgeworICAgIE5vcm1hbEZ1bmN0aW9uTW9kZSwKKyAgICBHZXR0ZXJNb2RlLAorICAgIFNl
dHRlck1vZGUsCisgICAgTWV0aG9kTW9kZSwKKyAgICBOb3RBRnVuY3Rpb25Nb2RlLAorICAgIEFy
cm93RnVuY3Rpb25Nb2RlCit9OworCiBpbmxpbmUgYm9vbCBmdW5jdGlvbk5hbWVJc0luU2NvcGUo
Y29uc3QgSWRlbnRpZmllciYgbmFtZSwgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSkKIHsKICAg
ICBpZiAobmFtZS5pc051bGwoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
U291cmNlQ29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
U291cmNlQ29kZS5oCShyZXZpc2lvbiAxODY5NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1NvdXJjZUNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDkgKzEwNSw2IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgU291cmNlQ29kZSBzdWJFeHByZXNzaW9u
KHVuc2lnbmVkIG9wZW5CcmFjZSwgdW5zaWduZWQgY2xvc2VCcmFjZSwgaW50IGZpcnN0TGluZSwg
aW50IHN0YXJ0Q29sdW1uKTsKIAotI2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgp
Ci0gICAgICAgIFNvdXJjZUNvZGUgc3ViQXJyb3dFeHByZXNzaW9uKHVuc2lnbmVkIHN0YXJ0QXJy
b3dGdW5jdGlvbiwgdW5zaWduZWQgZW5kQXJyb3dGdW5jdGlvbiwgaW50IGZpcnN0TGluZSwgaW50
IHN0YXJ0Q29sdW1uKTsKLSNlbmRpZgogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZlB0cjxTb3Vy
Y2VQcm92aWRlcj4gbV9wcm92aWRlcjsKICAgICAgICAgaW50IG1fc3RhcnRDaGFyOwpAQCAtMTIx
LDIwICsxMTgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIFNvdXJjZUNvZGUo
U3RyaW5nU291cmNlUHJvdmlkZXI6OmNyZWF0ZShzb3VyY2UsIHVybCwgc3RhcnRQb3NpdGlvbiks
IHN0YXJ0UG9zaXRpb24ubV9saW5lLm9uZUJhc2VkSW50KCksIHN0YXJ0UG9zaXRpb24ubV9jb2x1
bW4ub25lQmFzZWRJbnQoKSk7CiAgICAgfQogICAgIAotI2lmIEVOQUJMRShFUzZfQVJST1dGVU5D
VElPTl9TWU5UQVgpCi0gICAgaW5saW5lIFNvdXJjZUNvZGUgU291cmNlQ29kZTo6c3ViQXJyb3dF
eHByZXNzaW9uKHVuc2lnbmVkIHN0YXJ0QXJyb3dGdW5jdGlvbiwgdW5zaWduZWQgZW5kQXJyb3dG
dW5jdGlvbiwgaW50IGZpcnN0TGluZSwgaW50IHN0YXJ0Q29sdW1uKQotICAgIHsKLSAgICAgICAg
QVNTRVJUKHByb3ZpZGVyKCktPnNvdXJjZSgpW3N0YXJ0QXJyb3dGdW5jdGlvbl0gPT0gJz0nICYm
IHByb3ZpZGVyKCktPnNvdXJjZSgpW3N0YXJ0QXJyb3dGdW5jdGlvbiArIDFdID09ICc+Jyk7Ci0K
LSAgICAgICAgc3RhcnRDb2x1bW4gKz0gMTsgLy8gQ29udmVydCB0byBiYXNlIDEuCi0gICAgICAg
IHJldHVybiBTb3VyY2VDb2RlKHByb3ZpZGVyKCksIHN0YXJ0QXJyb3dGdW5jdGlvbiwgZW5kQXJy
b3dGdW5jdGlvbiwgZmlyc3RMaW5lLCBzdGFydENvbHVtbik7Ci0gICAgfQotI2VuZGlmCi0KICAg
ICBpbmxpbmUgU291cmNlQ29kZSBTb3VyY2VDb2RlOjpzdWJFeHByZXNzaW9uKHVuc2lnbmVkIG9w
ZW5CcmFjZSwgdW5zaWduZWQgY2xvc2VCcmFjZSwgaW50IGZpcnN0TGluZSwgaW50IHN0YXJ0Q29s
dW1uKQogICAgIHsKLSAgICAgICAgQVNTRVJUKHByb3ZpZGVyKCktPnNvdXJjZSgpW29wZW5CcmFj
ZV0gPT0gJ3snKTsKLSAgICAgICAgQVNTRVJUKHByb3ZpZGVyKCktPnNvdXJjZSgpW2Nsb3NlQnJh
Y2VdID09ICd9Jyk7CiAgICAgICAgIHN0YXJ0Q29sdW1uICs9IDE7IC8vIENvbnZlcnQgdG8gYmFz
ZSAxLgogICAgICAgICByZXR1cm4gU291cmNlQ29kZShwcm92aWRlcigpLCBvcGVuQnJhY2UsIGNs
b3NlQnJhY2UgKyAxLCBmaXJzdExpbmUsIHN0YXJ0Q29sdW1uKTsKICAgICB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyQ2FjaGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyQ2FjaGUuaAko
cmV2aXNpb24gMTg2OTU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQ
cm92aWRlckNhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgog
ICAgIGNvbnN0IFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtKiBnZXQoaW50IHNvdXJjZVBvc2l0aW9u
KSBjb25zdCB7IHJldHVybiBtX21hcC5nZXQoc291cmNlUG9zaXRpb24pOyB9CiAKIHByaXZhdGU6
Ci0gICAgSGFzaE1hcDxpbnQsIHN0ZDo6dW5pcXVlX3B0cjxTb3VyY2VQcm92aWRlckNhY2hlSXRl
bT4+IG1fbWFwOworICAgIEhhc2hNYXA8aW50LCBzdGQ6OnVuaXF1ZV9wdHI8U291cmNlUHJvdmlk
ZXJDYWNoZUl0ZW0+LCBXVEY6OkludEhhc2g8aW50PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5
SGFzaFRyYWl0czxpbnQ+PiBtX21hcDsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmgJKHJldmlz
aW9uIDE4Njk1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlk
ZXJDYWNoZUl0ZW0uaAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTUgKzQwLDE0IEBAIHN0cnVjdCBT
b3VyY2VQcm92aWRlckNhY2hlSXRlbUNyZWF0aW9uUGEKICAgICB1bnNpZ25lZCBsYXN0VG9ja2Vu
RW5kT2Zmc2V0OwogICAgIHVuc2lnbmVkIGxhc3RUb2NrZW5MaW5lU3RhcnRPZmZzZXQ7CiAgICAg
dW5zaWduZWQgZW5kRnVuY3Rpb25PZmZzZXQ7CisgICAgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQ7
CiAgICAgYm9vbCBuZWVkc0Z1bGxBY3RpdmF0aW9uOwogICAgIGJvb2wgdXNlc0V2YWw7CiAgICAg
Ym9vbCBzdHJpY3RNb2RlOwogICAgIFZlY3RvcjxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiB1
c2VkVmFyaWFibGVzOwogICAgIFZlY3RvcjxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiB3cml0
dGVuVmFyaWFibGVzOwotI2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCiAgICAg
Ym9vbCBpc0JvZHlBcnJvd0V4cHJlc3Npb24geyBmYWxzZSB9OwogICAgIEpTVG9rZW5UeXBlIHRv
a2VuVHlwZSB7IENMT1NFQlJBQ0UgfTsKLSNlbmRpZgogfTsKIAogI2lmIENPTVBJTEVSKE1TVkMp
CkBAIC02NSwxMSArNjQsNyBAQCBwdWJsaWM6CiAgICAgSlNUb2tlbiBlbmRGdW5jdGlvblRva2Vu
KCkgY29uc3QgCiAgICAgewogICAgICAgICBKU1Rva2VuIHRva2VuOwotI2lmIEVOQUJMRShFUzZf
QVJST1dGVU5DVElPTl9TWU5UQVgpCiAgICAgICAgIHRva2VuLm1fdHlwZSA9IGlzQm9keUFycm93
RXhwcmVzc2lvbiA/IHRva2VuVHlwZSA6IENMT1NFQlJBQ0U7Ci0jZWxzZQotICAgICAgICB0b2tl
bi5tX3R5cGUgPSBDTE9TRUJSQUNFOwotI2VuZGlmCiAgICAgICAgIHRva2VuLm1fZGF0YS5vZmZz
ZXQgPSBsYXN0VG9ja2VuU3RhcnRPZmZzZXQ7CiAgICAgICAgIHRva2VuLm1fbG9jYXRpb24uc3Rh
cnRPZmZzZXQgPSBsYXN0VG9ja2VuU3RhcnRPZmZzZXQ7CiAgICAgICAgIHRva2VuLm1fbG9jYXRp
b24uZW5kT2Zmc2V0ID0gbGFzdFRvY2tlbkVuZE9mZnNldDsKQEAgLTg3LDYgKzgyLDcgQEAgcHVi
bGljOgogICAgIHVuc2lnbmVkIGxhc3RUb2NrZW5MaW5lIDogMzE7CiAgICAgdW5zaWduZWQgbGFz
dFRvY2tlblN0YXJ0T2Zmc2V0IDogMzE7CiAgICAgdW5zaWduZWQgbGFzdFRvY2tlbkVuZE9mZnNl
dDogMzE7CisgICAgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQ7CiAgICAgCiAgICAgYm9vbCB1c2Vz
RXZhbCA6IDE7CiAKQEAgLTk4LDEwICs5NCw4IEBAIHB1YmxpYzoKIAogICAgIFVuaXF1ZWRTdHJp
bmdJbXBsKiogdXNlZFZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8VW5pcXVl
ZFN0cmluZ0ltcGwqKj4obV92YXJpYWJsZXMpOyB9CiAgICAgVW5pcXVlZFN0cmluZ0ltcGwqKiB3
cml0dGVuVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxVbmlxdWVkU3RyaW5n
SW1wbCoqPigmbV92YXJpYWJsZXNbdXNlZFZhcmlhYmxlc0NvdW50XSk7IH0KLSNpZiBFTkFCTEUo
RVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQogICAgIGJvb2wgaXNCb2R5QXJyb3dFeHByZXNzaW9u
OwogICAgIEpTVG9rZW5UeXBlIHRva2VuVHlwZTsKLSNlbmRpZgogCiBwcml2YXRlOgogICAgIFNv
dXJjZVByb3ZpZGVyQ2FjaGVJdGVtKGNvbnN0IFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtQ3JlYXRp
b25QYXJhbWV0ZXJzJik7CkBAIC0xMzAsMTUgKzEyNCwxNCBAQCBpbmxpbmUgU291cmNlUHJvdmlk
ZXJDYWNoZUl0ZW06OlNvdXJjZVByCiAgICAgLCBsYXN0VG9ja2VuTGluZShwYXJhbWV0ZXJzLmxh
c3RUb2NrZW5MaW5lKQogICAgICwgbGFzdFRvY2tlblN0YXJ0T2Zmc2V0KHBhcmFtZXRlcnMubGFz
dFRvY2tlblN0YXJ0T2Zmc2V0KQogICAgICwgbGFzdFRvY2tlbkVuZE9mZnNldChwYXJhbWV0ZXJz
Lmxhc3RUb2NrZW5FbmRPZmZzZXQpCisgICAgLCBwYXJhbWV0ZXJDb3VudChwYXJhbWV0ZXJzLnBh
cmFtZXRlckNvdW50KQogICAgICwgdXNlc0V2YWwocGFyYW1ldGVycy51c2VzRXZhbCkKICAgICAs
IHN0cmljdE1vZGUocGFyYW1ldGVycy5zdHJpY3RNb2RlKQogICAgICwgbGFzdFRvY2tlbkxpbmVT
dGFydE9mZnNldChwYXJhbWV0ZXJzLmxhc3RUb2NrZW5MaW5lU3RhcnRPZmZzZXQpCiAgICAgLCB1
c2VkVmFyaWFibGVzQ291bnQocGFyYW1ldGVycy51c2VkVmFyaWFibGVzLnNpemUoKSkKICAgICAs
IHdyaXR0ZW5WYXJpYWJsZXNDb3VudChwYXJhbWV0ZXJzLndyaXR0ZW5WYXJpYWJsZXMuc2l6ZSgp
KQotI2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCiAgICAgLCBpc0JvZHlBcnJv
d0V4cHJlc3Npb24ocGFyYW1ldGVycy5pc0JvZHlBcnJvd0V4cHJlc3Npb24pCiAgICAgLCB0b2tl
blR5cGUocGFyYW1ldGVycy50b2tlblR5cGUpCi0jZW5kaWYKIHsKICAgICB1bnNpZ25lZCBqID0g
MDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdXNlZFZhcmlhYmxlc0NvdW50OyArK2ks
ICsraikgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2Vy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVj
a2VyLmgJKHJldmlzaW9uIDE4Njk1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
U3ludGF4Q2hlY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw2IEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgfQogCi0gICAgdHlwZWRlZiBTeW50YXhDaGVja2VyIEZ1bmN0aW9uQm9keUJ1
aWxkZXI7CiAgICAgZW51bSB7IE5vbmVFeHByID0gMCwKICAgICAgICAgUmVzb2x2ZUV2YWxFeHBy
LCBSZXNvbHZlRXhwciwgSW50ZWdlckV4cHIsIERvdWJsZUV4cHIsIFN0cmluZ0V4cHIsCiAgICAg
ICAgIFRoaXNFeHByLCBOdWxsRXhwciwgQm9vbEV4cHIsIFJlZ0V4cEV4cHIsIE9iamVjdExpdGVy
YWxFeHByLApAQCAtMTc5LDEwICsxNzgsOCBAQCBwdWJsaWM6CiAgICAgQ2xhc3NFeHByZXNzaW9u
IGNyZWF0ZUNsYXNzRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVy
JiwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBQcm9wZXJ0eUxpc3QsIFByb3BlcnR5
TGlzdCkgeyByZXR1cm4gQ2xhc3NFeHByOyB9CiAjZW5kaWYKICAgICBFeHByZXNzaW9uVHlwZSBj
cmVhdGVGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgUGFyc2VyRnVu
Y3Rpb25JbmZvPFN5bnRheENoZWNrZXI+JikgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9Ci0gICAg
aW50IGNyZWF0ZUZ1bmN0aW9uQm9keShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQsIGludCwgQ29uc3RydWN0b3JL
aW5kKSB7IHJldHVybiBGdW5jdGlvbkJvZHlSZXN1bHQ7IH0KLSNpZiBFTkFCTEUoRVM2X0FSUk9X
RlVOQ1RJT05fU1lOVEFYKQorICAgIGludCBjcmVhdGVGdW5jdGlvbkJvZHkoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGJvb2wsIGludCwg
aW50LCBpbnQsIENvbnN0cnVjdG9yS2luZCwgdW5zaWduZWQsIGludCkgeyByZXR1cm4gRnVuY3Rp
b25Cb2R5UmVzdWx0OyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQXJyb3dGdW5jdGlvbkV4
cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPFN5bnRh
eENoZWNrZXI+JikgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9Ci0jZW5kaWYgCiAgICAgdm9pZCBz
ZXRGdW5jdGlvbk5hbWVTdGFydChpbnQsIGludCkgeyB9CiAgICAgaW50IGNyZWF0ZUFyZ3VtZW50
cygpIHsgcmV0dXJuIEFyZ3VtZW50c1Jlc3VsdDsgfQogICAgIGludCBjcmVhdGVBcmd1bWVudHMo
aW50KSB7IHJldHVybiBBcmd1bWVudHNSZXN1bHQ7IH0KQEAgLTIyMSw4ICsyMTgsOCBAQCBwdWJs
aWM6CiAgICAgaW50IGNyZWF0ZVByb3BlcnR5TGlzdChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBQ
cm9wZXJ0eSwgaW50KSB7IHJldHVybiBQcm9wZXJ0eUxpc3RSZXN1bHQ7IH0KICAgICBpbnQgY3Jl
YXRlRWxlbWVudExpc3QoaW50LCBpbnQpIHsgcmV0dXJuIEVsZW1lbnRzTGlzdFJlc3VsdDsgfQog
ICAgIGludCBjcmVhdGVFbGVtZW50TGlzdChpbnQsIGludCwgaW50KSB7IHJldHVybiBFbGVtZW50
c0xpc3RSZXN1bHQ7IH0KLSAgICBpbnQgY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdChEZXN0cnVj
dHVyaW5nUGF0dGVybikgeyByZXR1cm4gRm9ybWFsUGFyYW1ldGVyTGlzdFJlc3VsdDsgfQotICAg
IGludCBjcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KGludCwgRGVzdHJ1Y3R1cmluZ1BhdHRlcm4p
IHsgcmV0dXJuIEZvcm1hbFBhcmFtZXRlckxpc3RSZXN1bHQ7IH0KKyAgICBpbnQgY3JlYXRlRm9y
bWFsUGFyYW1ldGVyTGlzdCgpIHsgcmV0dXJuIEZvcm1hbFBhcmFtZXRlckxpc3RSZXN1bHQ7IH0K
KyAgICB2b2lkIGFwcGVuZFBhcmFtZXRlcihpbnQsIERlc3RydWN0dXJpbmdQYXR0ZXJuKSB7IH0K
ICAgICBpbnQgY3JlYXRlQ2xhdXNlKGludCwgaW50KSB7IHJldHVybiBDbGF1c2VSZXN1bHQ7IH0K
ICAgICBpbnQgY3JlYXRlQ2xhdXNlTGlzdChpbnQpIHsgcmV0dXJuIENsYXVzZUxpc3RSZXN1bHQ7
IH0KICAgICBpbnQgY3JlYXRlQ2xhdXNlTGlzdChpbnQsIGludCkgeyByZXR1cm4gQ2xhdXNlTGlz
dFJlc3VsdDsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2Fj
aGUuY3BwCShyZXZpc2lvbiAxODY5NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db2RlQ2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NCw4ICs5NCw4IEBAIFVubGlua2Vk
Q29kZUJsb2NrVHlwZSogQ29kZUNhY2hlOjpnZXRHbG8KIAogICAgIHR5cGVkZWYgdHlwZW5hbWUg
Q2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+OjpSb290Tm9kZSBSb290Tm9kZTsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Um9vdE5vZGU+IHJvb3ROb2RlID0gcGFyc2U8Um9vdE5vZGU+KAot
ICAgICAgICAmdm0sIHNvdXJjZSwgMCwgSWRlbnRpZmllcigpLCBidWlsdGluTW9kZSwgc3RyaWN0
TW9kZSwgCi0gICAgICAgIEpTUGFyc2VyQ29kZVR5cGU6OlByb2dyYW0sIGVycm9yLCAwLCBDb25z
dHJ1Y3RvcktpbmQ6Ok5vbmUsIHRoaXNURFpNb2RlKTsKKyAgICAgICAgJnZtLCBzb3VyY2UsIElk
ZW50aWZpZXIoKSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIAorICAgICAgICBKU1BhcnNlckNv
ZGVUeXBlOjpQcm9ncmFtLCBlcnJvciwgbnVsbHB0ciwgRnVuY3Rpb25QYXJzZU1vZGU6Ok5vdEFG
dW5jdGlvbk1vZGUsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgdGhpc1REWk1vZGUpOwogICAgIGlm
ICghcm9vdE5vZGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0xNDUsNyArMTQ1LDcg
QEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIENvZGVDYWNoZTo6ZwogCiAgICAgSlNUZXh0
UG9zaXRpb24gcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UHJvZ3JhbU5vZGU+IHByb2dyYW0gPSBwYXJzZTxQcm9ncmFtTm9kZT4oCi0gICAgICAgICZ2bSwg
c291cmNlLCAwLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4s
IAorICAgICAgICAmdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2Rl
OjpOb3RCdWlsdGluLCAKICAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIEpT
UGFyc2VyQ29kZVR5cGU6OlByb2dyYW0sIAogICAgICAgICBlcnJvciwgJnBvc2l0aW9uQmVmb3Jl
TGFzdE5ld2xpbmUpOwogICAgIGlmICghcHJvZ3JhbSkgewpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAJKHJldmlzaW9uIDE4Njk1NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01Nyw3ICs1Nyw3IEBAIGJvb2wgY2hlY2tTeW50YXgoVk0mIHZtLCBjb25zdCBTb3VyY2VD
b2QKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgUkVMRUFTRV9BU1NFUlQodm0uYXRv
bWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7
CiAgICAgcmV0dXJuICEhcGFyc2U8UHJvZ3JhbU5vZGU+KAotICAgICAgICAmdm0sIHNvdXJjZSwg
MCwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCAKKyAgICAg
ICAgJnZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVp
bHRpbiwgCiAgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBKU1BhcnNlckNv
ZGVUeXBlOjpQcm9ncmFtLCBlcnJvcik7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAxODY5NTQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDc1LDcgKzQ3NSw3IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6Y2hlY2tTeW50YXgK
ICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW1Ob2RlID0gcGFyc2U8UHJvZ3JhbU5vZGU+KAotICAg
ICAgICB2bSwgbV9zb3VyY2UsIDAsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6
Tm90QnVpbHRpbiwgCisgICAgICAgIHZtLCBtX3NvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNl
ckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCAKICAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpO
b3RTdHJpY3QsIEpTUGFyc2VyQ29kZVR5cGU6OlByb2dyYW0sIGVycm9yKTsKICAgICBpZiAocHJv
Z3JhbU5vZGUpCiAgICAgICAgIHJldHVybiAwOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL2NvbnRyb2xGbG93UHJvZmlsZXIvY29uZGl0aW9uYWwtZXhwcmVzc2lvbi5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvY29udHJvbEZsb3dQcm9maWxl
ci9jb25kaXRpb25hbC1leHByZXNzaW9uLmpzCShyZXZpc2lvbiAxODY5NTQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvY29udHJvbEZsb3dQcm9maWxlci9jb25kaXRpb25hbC1leHBy
ZXNzaW9uLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxNyArMjQsMTcgQEAgZnVuY3Rpb24gdGVz
dENvbmRpdGlvbmFsRnVuY3Rpb25DYWxsKHgsIAogICAgICAgICA6IGJhcigpCiB9CiB0ZXN0Q29u
ZGl0aW9uYWxGdW5jdGlvbkNhbGwoZmFsc2UsIGZhbHNlKTsKLWNoZWNrQmFzaWNCbG9jayh0ZXN0
Q29uZGl0aW9uYWxGdW5jdGlvbkNhbGwsICJ4IiwgU2hvdWxkSGF2ZUV4ZWN1dGVkKTsKK2NoZWNr
QmFzaWNCbG9jayh0ZXN0Q29uZGl0aW9uYWxGdW5jdGlvbkNhbGwsICJ4ID8iLCBTaG91bGRIYXZl
RXhlY3V0ZWQpOwogY2hlY2tCYXNpY0Jsb2NrKHRlc3RDb25kaXRpb25hbEZ1bmN0aW9uQ2FsbCwg
Ij8geSIsIFNob3VsZEhhdmVFeGVjdXRlZCk7CiBjaGVja0Jhc2ljQmxvY2sodGVzdENvbmRpdGlv
bmFsRnVuY3Rpb25DYWxsLCAiYmFyIiwgU2hvdWxkSGF2ZUV4ZWN1dGVkKTsKIGNoZWNrQmFzaWNC
bG9jayh0ZXN0Q29uZGl0aW9uYWxGdW5jdGlvbkNhbGwsICI6IGJhciIsIFNob3VsZEhhdmVFeGVj
dXRlZCk7Ci1jaGVja0Jhc2ljQmxvY2sodGVzdENvbmRpdGlvbmFsRnVuY3Rpb25DYWxsLCAieSIs
IFNob3VsZE5vdEhhdmVFeGVjdXRlZCk7CitjaGVja0Jhc2ljQmxvY2sodGVzdENvbmRpdGlvbmFs
RnVuY3Rpb25DYWxsLCAieSA/IiwgU2hvdWxkTm90SGF2ZUV4ZWN1dGVkKTsKIGNoZWNrQmFzaWNC
bG9jayh0ZXN0Q29uZGl0aW9uYWxGdW5jdGlvbkNhbGwsICI/IGZvbyIsIFNob3VsZE5vdEhhdmVF
eGVjdXRlZCk7CiBjaGVja0Jhc2ljQmxvY2sodGVzdENvbmRpdGlvbmFsRnVuY3Rpb25DYWxsLCAi
Zm9vIiwgU2hvdWxkTm90SGF2ZUV4ZWN1dGVkKTsKIGNoZWNrQmFzaWNCbG9jayh0ZXN0Q29uZGl0
aW9uYWxGdW5jdGlvbkNhbGwsICJiYXoiLCBTaG91bGROb3RIYXZlRXhlY3V0ZWQpOwogCiB0ZXN0
Q29uZGl0aW9uYWxGdW5jdGlvbkNhbGwodHJ1ZSwgZmFsc2UpOwotY2hlY2tCYXNpY0Jsb2NrKHRl
c3RDb25kaXRpb25hbEZ1bmN0aW9uQ2FsbCwgInkiLCBTaG91bGRIYXZlRXhlY3V0ZWQpOworY2hl
Y2tCYXNpY0Jsb2NrKHRlc3RDb25kaXRpb25hbEZ1bmN0aW9uQ2FsbCwgInkgPyIsIFNob3VsZEhh
dmVFeGVjdXRlZCk7CiBjaGVja0Jhc2ljQmxvY2sodGVzdENvbmRpdGlvbmFsRnVuY3Rpb25DYWxs
LCAiPyBmb28iLCBTaG91bGRIYXZlRXhlY3V0ZWQpOwogY2hlY2tCYXNpY0Jsb2NrKHRlc3RDb25k
aXRpb25hbEZ1bmN0aW9uQ2FsbCwgIjogYmF6IiwgU2hvdWxkSGF2ZUV4ZWN1dGVkKTsKIGNoZWNr
QmFzaWNCbG9jayh0ZXN0Q29uZGl0aW9uYWxGdW5jdGlvbkNhbGwsICJiYXoiLCBTaG91bGRIYXZl
RXhlY3V0ZWQpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTg2OTU0KQorKysgTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsOTkgQEAKKzIwMTUtMDctMTcgIFNhYW0g
YmFyYXRpICA8c2FhbWJhcmF0aTFAZ21haWwuY29tPgorCisgICAgICAgIEZ1bmN0aW9uIHBhcmFt
ZXRlcnMgc2hvdWxkIGJlIHBhcnNlZCBpbiB0aGUgc2FtZSBwYXJzZXIgYXJlbmEgYXMgdGhlIGZ1
bmN0aW9uIGJvZHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0NTk5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogZmFzdC9wcm9maWxlci9hbm9ueW1vdXMtZXZlbnQtaGFuZGxlci1leHBlY3RlZC50eHQ6
CisgICAgICAgICogZmFzdC9wcm9maWxlci9hbm9ueW1vdXMtZnVuY3Rpb24tY2FsbGVkLWZyb20t
ZGlmZmVyZW50LWNvbnRleHRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2ZpbGVy
L2Fub255bW91cy1mdW5jdGlvbi1jYWxscy1idWlsdC1pbi1mdW5jdGlvbnMtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvYW5vbnltb3VzLWZ1bmN0aW9uLWNhbGxzLWV2YWwt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvYW5vbnltb3VzLWZ1bmN0aW9u
cy13aXRoLWRpc3BsYXktbmFtZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmls
ZXIvYXBwbHktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvYnVpbHQtaW4t
ZnVuY3Rpb24tY2FsbHMtYW5vbnltb3VzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3By
b2ZpbGVyL2J1aWx0LWluLWZ1bmN0aW9uLWNhbGxzLXVzZXItZGVmaW5lZC1mdW5jdGlvbi1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxlci9jYWxsLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBmYXN0L3Byb2ZpbGVyL2NhbGxpbmctdGhlLWZ1bmN0aW9uLXRoYXQtc3RhcnRlZC10
aGUtcHJvZmlsZXItZnJvbS1hbm90aGVyLXNjb3BlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBm
YXN0L3Byb2ZpbGVyL2NvbXBhcmUtbXVsdGlwbGUtcHJvZmlsZXMtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGZhc3QvcHJvZmlsZXIvY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGZhc3QvcHJvZmlsZXIvZGVhZC10aW1lLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3By
b2ZpbGVyL2RvY3VtZW50LWRvdC13cml0ZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9w
cm9maWxlci9ldmVudC1oYW5kbGVyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2Zp
bGVyL2V4ZWN1dGlvbi1jb250ZXh0LWFuZC1ldmFsLW9uLXNhbWUtbGluZS1leHBlY3RlZC50eHQ6
CisgICAgICAgICogZmFzdC9wcm9maWxlci9pbmxpbmUtZXZlbnQtaGFuZGxlci1leHBlY3RlZC50
eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxlci9tYW55LWNhbGxzLWluLXRoZS1zYW1lLXNjb3Bl
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2ZpbGVyL211bHRpcGxlLWFuZC1kaWZm
ZXJlbnQtc2NvcGVkLWFub255bW91cy1mdW5jdGlvbi1jYWxscy1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogZmFzdC9wcm9maWxlci9tdWx0aXBsZS1hbmQtZGlmZmVyZW50LXNjb3BlZC1mdW5jdGlv
bi1jYWxscy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxlci9tdWx0aXBsZS1h
bm9ueW1vdXMtZnVuY3Rpb25zLWNhbGxlZC1mcm9tLXRoZS1zYW1lLWZ1bmN0aW9uLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2ZpbGVyL211bHRpcGxlLWZyYW1lcy1leHBlY3RlZC50
eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxlci9uYW1lZC1mdW5jdGlvbnMtd2l0aC1kaXNwbGF5
LW5hbWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2ZpbGVyL25lc3RlZC1hbm9u
eW1vdXMtZnVuY3Rvbi1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxlci9uZXN0
ZWQtc3RhcnQtYW5kLXN0b3AtcHJvZmlsZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3Qv
cHJvZmlsZXIvb25lLWV4ZWN1dGlvbi1jb250ZXh0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBm
YXN0L3Byb2ZpbGVyL3Byb2ZpbGUtY2FsbHMtaW4taW5jbHVkZWQtZmlsZS1leHBlY3RlZC50eHQ6
CisgICAgICAgICogZmFzdC9wcm9maWxlci9wcm9maWxlLXdpdGgtbm8tdGl0bGUtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvcHJvZmlsaW5nLWZyb20tYS1uZXN0ZWQtbG9j
YXRpb24tYnV0LXN0b3AtcHJvZmlsaW5nLW91dHNpZGUtdGhlLW5lc3RpbmctZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvcHJvZmlsaW5nLWZyb20tYS1uZXN0ZWQtbG9jYXRp
b24tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvc2ltcGxlLWV2ZW50LWNh
bGwtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvc2ltcGxlLW5vLWxldmVs
LWNoYW5nZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxlci9zdGFydC1hbmQt
c3RvcC1wcm9maWxlci1tdWx0aXBsZS10aW1lcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFz
dC9wcm9maWxlci9zdGFydC1hbmQtc3RvcC1wcm9maWxpbmctaW4tdGhlLXNhbWUtZnVuY3Rpb24t
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvc3RvcC1wcm9maWxpbmctYWZ0
ZXItc2V0VGltZW91dC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxlci9zdG9w
LXRoZW4tZnVuY3Rpb24tY2FsbC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxl
ci90d28tZXhlY3V0aW9uLWNvbnRleHRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3By
b2ZpbGVyL3VzZXItZGVmaW5lZC1mdW5jdGlvbi1jYWxscy1idWlsdC1pbi1mdW5jdGlvbnMtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvd2luZG93LWRvdC1ldmFsLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBqcy9kb20vc2NyaXB0LXN0YXJ0LWVuZC1sb2NhdGlvbnMtZXhw
ZWN0ZWQudHh0OgorCisyMDE1LTA3LTE2ICBTYWFtIGJhcmF0aSAgPHNhYW1iYXJhdGkxQGdtYWls
LmNvbT4KKworICAgICAgICBGdW5jdGlvbiBwYXJhbWV0ZXJzIHNob3VsZCBiZSBwYXJzZWQgaW4g
dGhlIHNhbWUgcGFyc2VyIGFyZW5hIGFzIHRoZSBmdW5jdGlvbiBib2R5CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDU5OTUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvcHJvZmlsZXIvYW5vbnlt
b3VzLWV2ZW50LWhhbmRsZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIv
YW5vbnltb3VzLWZ1bmN0aW9uLWNhbGxlZC1mcm9tLWRpZmZlcmVudC1jb250ZXh0cy1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxlci9hbm9ueW1vdXMtZnVuY3Rpb24tY2FsbHMt
YnVpbHQtaW4tZnVuY3Rpb25zLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2ZpbGVy
L2Fub255bW91cy1mdW5jdGlvbi1jYWxscy1ldmFsLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBm
YXN0L3Byb2ZpbGVyL2Fub255bW91cy1mdW5jdGlvbnMtd2l0aC1kaXNwbGF5LW5hbWVzLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2ZpbGVyL2FwcGx5LWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBmYXN0L3Byb2ZpbGVyL2J1aWx0LWluLWZ1bmN0aW9uLWNhbGxzLWFub255bW91cy1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxlci9idWlsdC1pbi1mdW5jdGlvbi1j
YWxscy11c2VyLWRlZmluZWQtZnVuY3Rpb24tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3Qv
cHJvZmlsZXIvY2FsbC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxlci9jYWxs
aW5nLXRoZS1mdW5jdGlvbi10aGF0LXN0YXJ0ZWQtdGhlLXByb2ZpbGVyLWZyb20tYW5vdGhlci1z
Y29wZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxlci9jb21wYXJlLW11bHRp
cGxlLXByb2ZpbGVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2ZpbGVyL2NvbnN0
cnVjdG9yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2ZpbGVyL2RlYWQtdGltZS1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxlci9kb2N1bWVudC1kb3Qtd3JpdGUt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvZXZlbnQtaGFuZGxlci1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxlci9leGVjdXRpb24tY29udGV4dC1hbmQt
ZXZhbC1vbi1zYW1lLWxpbmUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIv
aW5saW5lLWV2ZW50LWhhbmRsZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmls
ZXIvbWFueS1jYWxscy1pbi10aGUtc2FtZS1zY29wZS1leHBlY3RlZC50eHQ6CisgICAgICAgICog
ZmFzdC9wcm9maWxlci9tdWx0aXBsZS1hbmQtZGlmZmVyZW50LXNjb3BlZC1hbm9ueW1vdXMtZnVu
Y3Rpb24tY2FsbHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvbXVsdGlw
bGUtYW5kLWRpZmZlcmVudC1zY29wZWQtZnVuY3Rpb24tY2FsbHMtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGZhc3QvcHJvZmlsZXIvbXVsdGlwbGUtYW5vbnltb3VzLWZ1bmN0aW9ucy1jYWxsZWQt
ZnJvbS10aGUtc2FtZS1mdW5jdGlvbi1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9m
aWxlci9tdWx0aXBsZS1mcmFtZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmls
ZXIvbmFtZWQtZnVuY3Rpb25zLXdpdGgtZGlzcGxheS1uYW1lcy1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogZmFzdC9wcm9maWxlci9uZXN0ZWQtYW5vbnltb3VzLWZ1bmN0b24tZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvbmVzdGVkLXN0YXJ0LWFuZC1zdG9wLXByb2ZpbGVy
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2ZpbGVyL29uZS1leGVjdXRpb24tY29u
dGV4dC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxlci9wcm9maWxlLWNhbGxz
LWluLWluY2x1ZGVkLWZpbGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIv
cHJvZmlsZS13aXRoLW5vLXRpdGxlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2Zp
bGVyL3Byb2ZpbGluZy1mcm9tLWEtbmVzdGVkLWxvY2F0aW9uLWJ1dC1zdG9wLXByb2ZpbGluZy1v
dXRzaWRlLXRoZS1uZXN0aW5nLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2ZpbGVy
L3Byb2ZpbGluZy1mcm9tLWEtbmVzdGVkLWxvY2F0aW9uLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBmYXN0L3Byb2ZpbGVyL3NpbXBsZS1ldmVudC1jYWxsLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBmYXN0L3Byb2ZpbGVyL3NpbXBsZS1uby1sZXZlbC1jaGFuZ2UtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGZhc3QvcHJvZmlsZXIvc3RhcnQtYW5kLXN0b3AtcHJvZmlsZXItbXVsdGlwbGUtdGlt
ZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvc3RhcnQtYW5kLXN0b3At
cHJvZmlsaW5nLWluLXRoZS1zYW1lLWZ1bmN0aW9uLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBm
YXN0L3Byb2ZpbGVyL3N0b3AtcHJvZmlsaW5nLWFmdGVyLXNldFRpbWVvdXQtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvc3RvcC10aGVuLWZ1bmN0aW9uLWNhbGwtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvdHdvLWV4ZWN1dGlvbi1jb250ZXh0cy1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxlci91c2VyLWRlZmluZWQtZnVuY3Rp
b24tY2FsbHMtYnVpbHQtaW4tZnVuY3Rpb25zLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0
L3Byb2ZpbGVyL3dpbmRvdy1kb3QtZXZhbC1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMvZG9t
L3NjcmlwdC1zdGFydC1lbmQtbG9jYXRpb25zLWV4cGVjdGVkLnR4dDoKKwogMjAxNS0wNy0xNiAg
U2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggZGlz
YXBwZWFyaW5nIHBvc2l0aW9uOmZpeGVkIGVsZW1lbnRzIGluIGZpeGVkIGxheW91dCBtb2RlCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2Fub255bW91cy1ldmVudC1oYW5kbGVyLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2Fub255
bW91cy1ldmVudC1oYW5kbGVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2OTU0KQorKysgTGF5
b3V0VGVzdHMvZmFzdC9wcm9maWxlci9hbm9ueW1vdXMtZXZlbnQtaGFuZGxlci1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsMTUgKzQsMTUgQEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51
YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiBBbm9ueW1vdXMgZXZlbnQgaGFu
ZGxlcgogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCBhbm9ueW1v
dXMtZXZlbnQtaGFuZGxlci5odG1sIChsaW5lIDExOjEpCisgICBzdGFydFRlc3QgYW5vbnltb3Vz
LWV2ZW50LWhhbmRsZXIuaHRtbCAobGluZSAxMDoxOSkKICAgICAgIGdldEVsZW1lbnRCeUlkIChu
byBmaWxlKSAobGluZSAwOjApCiAgICAgICBjbGljayAobm8gZmlsZSkgKGxpbmUgMDowKQotICAg
ICAgICAgb25jbGljayBhbm9ueW1vdXMtZXZlbnQtaGFuZGxlci5odG1sIChsaW5lIDE1OjU0KQot
ICAgICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAo
bGluZSAxNzoyNikKKyAgICAgICAgIG9uY2xpY2sgYW5vbnltb3VzLWV2ZW50LWhhbmRsZXIuaHRt
bCAobGluZSAxNTo1MSkKKyAgICAgICAgICAgIGluc2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1K
Uy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjMpCiAgICAgICAgICAgICAgICBjcmVhdGVFbGVtZW50
IChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICBjcmVhdGVUZXh0Tm9kZSAobm8g
ZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgYXBwZW5kQ2hpbGQgKG5vIGZpbGUpIChs
aW5lIDA6MCkKICAgICAgICAgICAgICAgIGdldEVsZW1lbnRCeUlkIChubyBmaWxlKSAobGluZSAw
OjApCi0gICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6
MjApCisgICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6
MTcpCiAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9hbm9ueW1vdXMtZnVuY3Rp
b24tY2FsbGVkLWZyb20tZGlmZmVyZW50LWNvbnRleHRzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2Fub255bW91cy1mdW5jdGlvbi1jYWxsZWQt
ZnJvbS1kaWZmZXJlbnQtY29udGV4dHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY5NTQpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2Fub255bW91cy1mdW5jdGlvbi1jYWxsZWQtZnJv
bS1kaWZmZXJlbnQtY29udGV4dHMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDIx
ICs0LDIxIEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxvYWQgaXQgaW4gdGgKIAogUHJv
ZmlsZSB0aXRsZTogU2FtZSBhbm9ueW1vdXMgZnVuY3Rpb24gY2FsbGVkIGZyb20gZGlmZmVyZW50
IGNvbnRleHRzCiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgc3RhcnRUZXN0IGFu
b255bW91cy1mdW5jdGlvbi1jYWxsZWQtZnJvbS1kaWZmZXJlbnQtY29udGV4dHMuaHRtbCAobGlu
ZSAxMToxKQotICAgICAgYW5vbnltb3VzRnVuY3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJj
ZXMuanMgKGxpbmUgMjk6MzcpCi0gICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3Qt
SlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjI2KQorICAgc3RhcnRUZXN0IGFub255bW91cy1mdW5j
dGlvbi1jYWxsZWQtZnJvbS1kaWZmZXJlbnQtY29udGV4dHMuaHRtbCAobGluZSAxMDoxOSkKKyAg
ICAgIGFub255bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5l
IDI5OjM0KQorICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNl
cy5qcyAobGluZSAxNzoyMykKICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQgKG5vIGZpbGUpIChs
aW5lIDA6MCkKICAgICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAwOjAp
CiAgICAgICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAg
ICAgZ2V0RWxlbWVudEJ5SWQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgIGV2YWwgKG5vIGZp
bGUpIChsaW5lIDA6MCkKICAgICAgICAgIChwcm9ncmFtKSAobm8gZmlsZSkgKGxpbmUgMToxKQot
ICAgICAgICAgICAgYW5vbnltb3VzRnVuY3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMu
anMgKGxpbmUgMjk6MzcpCi0gICAgICAgICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRl
c3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjI2KQorICAgICAgICAgICAgYW5vbnltb3VzRnVu
Y3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMjk6MzQpCisgICAgICAg
ICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5l
IDE3OjIzKQogICAgICAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudCAobm8gZmlsZSkgKGxpbmUg
MDowKQogICAgICAgICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6
MCkKICAgICAgICAgICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjApCiAg
ICAgICAgICAgICAgICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAg
ICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAg
ICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiAK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvYW5vbnltb3VzLWZ1bmN0aW9uLWNhbGxz
LWJ1aWx0LWluLWZ1bmN0aW9ucy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9wcm9maWxlci9hbm9ueW1vdXMtZnVuY3Rpb24tY2FsbHMtYnVpbHQtaW4tZnVuY3Rp
b25zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2OTU0KQorKysgTGF5b3V0VGVzdHMvZmFzdC9w
cm9maWxlci9hbm9ueW1vdXMtZnVuY3Rpb24tY2FsbHMtYnVpbHQtaW4tZnVuY3Rpb25zLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCwxMyArNCwxMyBAQCBUbyBydW4gdGhpcyB0ZXN0
IG1hbnVhbGx5LCBsb2FkIGl0IGluIHRoCiAKIFByb2ZpbGUgdGl0bGU6IEFub255bW91cyBmdW5j
dGlvbiBjYWxscyBidWlsdC1pbiBmdW5jdGlvbnMKIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAw
OjApCi0gICBzdGFydFRlc3QgYW5vbnltb3VzLWZ1bmN0aW9uLWNhbGxzLWJ1aWx0LWluLWZ1bmN0
aW9ucy5odG1sIChsaW5lIDExOjEpCi0gICAgICBhbm9ueW1vdXNGdW5jdGlvbiBwcm9maWxlci10
ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAyOTozNykKLSAgICAgICAgIGluc2VydE5ld1RleHQg
cHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjYpCisgICBzdGFydFRlc3Qg
YW5vbnltb3VzLWZ1bmN0aW9uLWNhbGxzLWJ1aWx0LWluLWZ1bmN0aW9ucy5odG1sIChsaW5lIDEw
OjE5KQorICAgICAgYW5vbnltb3VzRnVuY3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMu
anMgKGxpbmUgMjk6MzQpCisgICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMt
cmVzb3VyY2VzLmpzIChsaW5lIDE3OjIzKQogICAgICAgICAgICAgY3JlYXRlRWxlbWVudCAobm8g
ZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChs
aW5lIDA6MCkKICAgICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjApCiAg
ICAgICAgICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgZW5k
VGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgICAgZW5k
VGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiAKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvYW5vbnltb3VzLWZ1bmN0aW9uLWNhbGxzLWV2YWwt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvYW5v
bnltb3VzLWZ1bmN0aW9uLWNhbGxzLWV2YWwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY5NTQp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2Fub255bW91cy1mdW5jdGlvbi1jYWxscy1l
dmFsLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCwxNSArNCwxNSBAQCBUbyBydW4g
dGhpcyB0ZXN0IG1hbnVhbGx5LCBsb2FkIGl0IGluIHRoCiAKIFByb2ZpbGUgdGl0bGU6IEFub255
bW91cyBmdW5jdGlvbiBjYWxsZXMgZXZhbAogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkK
LSAgIHN0YXJ0VGVzdCBhbm9ueW1vdXMtZnVuY3Rpb24tY2FsbHMtZXZhbC5odG1sIChsaW5lIDEx
OjEpCi0gICAgICB2YXJpYWJsZVRoYXRQb2ludHNUb0FuQW5vbnltb3VzRnVuY3Rpb24gYW5vbnlt
b3VzLWZ1bmN0aW9uLWNhbGxzLWV2YWwuaHRtbCAobGluZSAxNDo2MikKKyAgIHN0YXJ0VGVzdCBh
bm9ueW1vdXMtZnVuY3Rpb24tY2FsbHMtZXZhbC5odG1sIChsaW5lIDEwOjE5KQorICAgICAgdmFy
aWFibGVUaGF0UG9pbnRzVG9BbkFub255bW91c0Z1bmN0aW9uIGFub255bW91cy1mdW5jdGlvbi1j
YWxscy1ldmFsLmh0bWwgKGxpbmUgMTQ6NTkpCiAgICAgICAgICBldmFsIChubyBmaWxlKSAobGlu
ZSAwOjApCiAgICAgICAgICAgICAocHJvZ3JhbSkgKG5vIGZpbGUpIChsaW5lIDE6MSkKLSAgICAg
ICAgICAgICAgIGluc2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxp
bmUgMTc6MjYpCisgICAgICAgICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMt
cmVzb3VyY2VzLmpzIChsaW5lIDE3OjIzKQogICAgICAgICAgICAgICAgICAgY3JlYXRlRWxlbWVu
dCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUg
KG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgICAgIGFwcGVuZENoaWxkIChubyBm
aWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmls
ZSkgKGxpbmUgMDowKQotICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5q
cyAobGluZSAxOjIwKQorICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5q
cyAobGluZSAxOjE3KQogCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvYW5vbnlt
b3VzLWZ1bmN0aW9ucy13aXRoLWRpc3BsYXktbmFtZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvYW5vbnltb3VzLWZ1bmN0aW9ucy13aXRoLWRp
c3BsYXktbmFtZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY5NTQpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L3Byb2ZpbGVyL2Fub255bW91cy1mdW5jdGlvbnMtd2l0aC1kaXNwbGF5LW5hbWVzLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCwxMyArNCwxMyBAQCBUbyBydW4gdGhpcyB0
ZXN0IG1hbnVhbGx5LCBsb2FkIGl0IGluIHRoCiAKIFByb2ZpbGUgdGl0bGU6IEFub255bW91cyBm
dW5jdGlvbnMgd2l0aCBkaXNwbGF5IG5hbWVzCiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDow
KQotICAgc3RhcnRUZXN0IGFub255bW91cy1mdW5jdGlvbnMtd2l0aC1kaXNwbGF5LW5hbWVzLmh0
bWwgKGxpbmUgMjM6MSkKLSAgICAgIGFub255bW91c0Z1bmN0aW9uR2VuZXJhdG9yIGFub255bW91
cy1mdW5jdGlvbnMtd2l0aC1kaXNwbGF5LW5hbWVzLmh0bWwgKGxpbmUgMTE6MSkKLSAgICAgIDAg
aXRlcmF0aW9ucyBmdW5jdGlvbiBhbm9ueW1vdXMtZnVuY3Rpb25zLXdpdGgtZGlzcGxheS1uYW1l
cy5odG1sIChsaW5lIDEzOjUpCi0gICAgICAxIGl0ZXJhdGlvbnMgZnVuY3Rpb24gYW5vbnltb3Vz
LWZ1bmN0aW9ucy13aXRoLWRpc3BsYXktbmFtZXMuaHRtbCAobGluZSAxMzo1KQotICAgICAgMiBp
dGVyYXRpb25zIGZ1bmN0aW9uIGFub255bW91cy1mdW5jdGlvbnMtd2l0aC1kaXNwbGF5LW5hbWVz
Lmh0bWwgKGxpbmUgMTM6NSkKLSAgICAgIDIwIGl0ZXJhdGlvbnMgZnVuY3Rpb24gYW5vbnltb3Vz
LWZ1bmN0aW9ucy13aXRoLWRpc3BsYXktbmFtZXMuaHRtbCAobGluZSAxMzo1KQotICAgICAgMTAw
MCBpdGVyYXRpb25zIGZ1bmN0aW9uIGFub255bW91cy1mdW5jdGlvbnMtd2l0aC1kaXNwbGF5LW5h
bWVzLmh0bWwgKGxpbmUgMTM6NSkKLSAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNv
dXJjZXMuanMgKGxpbmUgMToyMCkKKyAgIHN0YXJ0VGVzdCBhbm9ueW1vdXMtZnVuY3Rpb25zLXdp
dGgtZGlzcGxheS1uYW1lcy5odG1sIChsaW5lIDIyOjE5KQorICAgICAgYW5vbnltb3VzRnVuY3Rp
b25HZW5lcmF0b3IgYW5vbnltb3VzLWZ1bmN0aW9ucy13aXRoLWRpc3BsYXktbmFtZXMuaHRtbCAo
bGluZSAxMDozNikKKyAgICAgIDAgaXRlcmF0aW9ucyBmdW5jdGlvbiBhbm9ueW1vdXMtZnVuY3Rp
b25zLXdpdGgtZGlzcGxheS1uYW1lcy5odG1sIChsaW5lIDEyOjU5KQorICAgICAgMSBpdGVyYXRp
b25zIGZ1bmN0aW9uIGFub255bW91cy1mdW5jdGlvbnMtd2l0aC1kaXNwbGF5LW5hbWVzLmh0bWwg
KGxpbmUgMTI6NTkpCisgICAgICAyIGl0ZXJhdGlvbnMgZnVuY3Rpb24gYW5vbnltb3VzLWZ1bmN0
aW9ucy13aXRoLWRpc3BsYXktbmFtZXMuaHRtbCAobGluZSAxMjo1OSkKKyAgICAgIDIwIGl0ZXJh
dGlvbnMgZnVuY3Rpb24gYW5vbnltb3VzLWZ1bmN0aW9ucy13aXRoLWRpc3BsYXktbmFtZXMuaHRt
bCAobGluZSAxMjo1OSkKKyAgICAgIDEwMDAgaXRlcmF0aW9ucyBmdW5jdGlvbiBhbm9ueW1vdXMt
ZnVuY3Rpb25zLXdpdGgtZGlzcGxheS1uYW1lcy5odG1sIChsaW5lIDEyOjU5KQorICAgICAgZW5k
VGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiAKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvYXBwbHktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvYXBwbHktZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAxODY5NTQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2FwcGx5LWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtNCw5ICs0LDkgQEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxs
eSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiBVc2luZyB0aGUgYXBwbHkoKSBtZXRo
b2QKIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBzdGFydFRlc3QgYXBwbHkuaHRt
bCAobGluZSAxMToxKQotICAgICAgZmFrZU9iamVjdCBhcHBseS5odG1sIChsaW5lIDE4OjEpCi0g
ICAgICAgICBmYWtlSW50ZXJpb3JGdW5jdGlvbiBhcHBseS5odG1sIChsaW5lIDI0OjEpCi0gICAg
ICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MjApCisgICBz
dGFydFRlc3QgYXBwbHkuaHRtbCAobGluZSAxMDoxOSkKKyAgICAgIGZha2VPYmplY3QgYXBwbHku
aHRtbCAobGluZSAxNzoyMSkKKyAgICAgICAgIGZha2VJbnRlcmlvckZ1bmN0aW9uIGFwcGx5Lmh0
bWwgKGxpbmUgMjM6MzApCisgICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2Vz
LmpzIChsaW5lIDE6MTcpCiAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9idWls
dC1pbi1mdW5jdGlvbi1jYWxscy1hbm9ueW1vdXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvYnVpbHQtaW4tZnVuY3Rpb24tY2FsbHMtYW5vbnlt
b3VzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2OTU0KQorKysgTGF5b3V0VGVzdHMvZmFzdC9w
cm9maWxlci9idWlsdC1pbi1mdW5jdGlvbi1jYWxscy1hbm9ueW1vdXMtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC00LDcgKzQsNyBAQCBUbyBydW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBs
b2FkIGl0IGluIHRoCiAKIFByb2ZpbGUgdGl0bGU6IEJ1aWx0LWluIGZ1bmN0aW9uIGNhbGxzIGFu
IGFub255bW91cyBmdW5jdGlvbgogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0
YXJ0VGVzdCBidWlsdC1pbi1mdW5jdGlvbi1jYWxscy1hbm9ueW1vdXMuaHRtbCAobGluZSAxMTox
KQorICAgc3RhcnRUZXN0IGJ1aWx0LWluLWZ1bmN0aW9uLWNhbGxzLWFub255bW91cy5odG1sIChs
aW5lIDEwOjE5KQogICAgICAgQXJyYXkgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgIG1hcCAo
bm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgT2JqZWN0IChubyBmaWxlKSAobGluZSAwOjAp
CkBAIC0xMiw4ICsxMiw4IEBAIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAg
ICAgICB0b0ludGVnZXIgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgIE51bWJl
ciAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgKGFub255bW91cyBmdW5jdGlv
bikgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAgICAgIG15RnVuY3Rpb24gYnVpbHQtaW4tZnVu
Y3Rpb24tY2FsbHMtYW5vbnltb3VzLmh0bWwgKGxpbmUgMTQ6NDUpCi0gICAgICAgICAgICBhcnJh
eU9wZXJhdG9yRnVuY3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMjU6
NDYpCi0gICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6
MjApCisgICAgICAgICBteUZ1bmN0aW9uIGJ1aWx0LWluLWZ1bmN0aW9uLWNhbGxzLWFub255bW91
cy5odG1sIChsaW5lIDE0OjMwKQorICAgICAgICAgICAgYXJyYXlPcGVyYXRvckZ1bmN0aW9uIHBy
b2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI1OjMxKQorICAgICAgZW5kVGVzdCBw
cm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiAKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvcHJvZmlsZXIvYnVpbHQtaW4tZnVuY3Rpb24tY2FsbHMtdXNlci1kZWZpbmVk
LWZ1bmN0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3By
b2ZpbGVyL2J1aWx0LWluLWZ1bmN0aW9uLWNhbGxzLXVzZXItZGVmaW5lZC1mdW5jdGlvbi1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDE4Njk1NCkKKysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIv
YnVpbHQtaW4tZnVuY3Rpb24tY2FsbHMtdXNlci1kZWZpbmVkLWZ1bmN0aW9uLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtNCw3ICs0LDcgQEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxs
eSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiBCdWlsdC1pbiBmdW5jdGlvbiBjYWxs
cyBhIHVzZXIgZGVmaW5lZCBmdW5jdGlvbgogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkK
LSAgIHN0YXJ0VGVzdCBidWlsdC1pbi1mdW5jdGlvbi1jYWxscy11c2VyLWRlZmluZWQtZnVuY3Rp
b24uaHRtbCAobGluZSAxMToxKQorICAgc3RhcnRUZXN0IGJ1aWx0LWluLWZ1bmN0aW9uLWNhbGxz
LXVzZXItZGVmaW5lZC1mdW5jdGlvbi5odG1sIChsaW5lIDEwOjE5KQogICAgICAgQXJyYXkgKG5v
IGZpbGUpIChsaW5lIDA6MCkKICAgICAgIG1hcCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAg
ICAgT2JqZWN0IChubyBmaWxlKSAobGluZSAwOjApCkBAIC0xMiw3ICsxMiw3IEBAIFRocmVhZF8x
IChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICB0b0ludGVnZXIgKG5vIGZpbGUpIChs
aW5lIDA6MCkKICAgICAgICAgICAgICAgIE51bWJlciAobm8gZmlsZSkgKGxpbmUgMDowKQogICAg
ICAgICAgICAgICAgKGFub255bW91cyBmdW5jdGlvbikgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAg
ICAgICAgIGFycmF5T3BlcmF0b3JGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5q
cyAobGluZSAyNTo0NikKLSAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMu
anMgKGxpbmUgMToyMCkKKyAgICAgICAgIGFycmF5T3BlcmF0b3JGdW5jdGlvbiBwcm9maWxlci10
ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAyNTozMSkKKyAgICAgIGVuZFRlc3QgcHJvZmlsZXIt
dGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToxNykKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L3Byb2ZpbGVyL2NhbGwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvcHJvZmlsZXIvY2FsbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4Njk1NCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvY2FsbC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTQsOSArNCw5IEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxvYWQgaXQgaW4gdGgK
IAogUHJvZmlsZSB0aXRsZTogVXNpbmcgdGhlIGNhbGwoKSBtZXRob2QKIFRocmVhZF8xIChubyBm
aWxlKSAobGluZSAwOjApCi0gICBzdGFydFRlc3QgY2FsbC5odG1sIChsaW5lIDExOjEpCi0gICAg
ICBmYWtlT2JqZWN0IGNhbGwuaHRtbCAobGluZSAyMDoxKQotICAgICAgICAgZmFrZUludGVyaW9y
RnVuY3Rpb24gY2FsbC5odG1sIChsaW5lIDI2OjEpCi0gICAgICBlbmRUZXN0IHByb2ZpbGVyLXRl
c3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MjApCisgICBzdGFydFRlc3QgY2FsbC5odG1sIChs
aW5lIDEwOjE5KQorICAgICAgZmFrZU9iamVjdCBjYWxsLmh0bWwgKGxpbmUgMTk6MjEpCisgICAg
ICAgICBmYWtlSW50ZXJpb3JGdW5jdGlvbiBjYWxsLmh0bWwgKGxpbmUgMjU6MzApCisgICAgICBl
bmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MTcpCiAKIApJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9jYWxsaW5nLXRoZS1mdW5jdGlvbi10aGF0LXN0
YXJ0ZWQtdGhlLXByb2ZpbGVyLWZyb20tYW5vdGhlci1zY29wZS1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9jYWxsaW5nLXRoZS1mdW5jdGlvbi10
aGF0LXN0YXJ0ZWQtdGhlLXByb2ZpbGVyLWZyb20tYW5vdGhlci1zY29wZS1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDE4Njk1NCkKKysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvY2FsbGluZy10
aGUtZnVuY3Rpb24tdGhhdC1zdGFydGVkLXRoZS1wcm9maWxlci1mcm9tLWFub3RoZXItc2NvcGUt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDkgKzQsOSBAQCBUbyBydW4gdGhpcyB0
ZXN0IG1hbnVhbGx5LCBsb2FkIGl0IGluIHRoCiAKIFByb2ZpbGUgdGl0bGU6IENhbGxpbmcgdGhl
IHNhbWUgZnVuY3Rpb24gd2hlcmUgdGhlIHByb2ZpbGUgc3RhcnRlZCBmcm9tIGFub3RoZXIgZnVu
Y3Rpb24KIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBpbmRpcmVjdGlvbiBjYWxs
aW5nLXRoZS1mdW5jdGlvbi10aGF0LXN0YXJ0ZWQtdGhlLXByb2ZpbGVyLWZyb20tYW5vdGhlci1z
Y29wZS5odG1sIChsaW5lIDE4OjEpCi0gICAgICBmdW5jdGlvbldpY2hTdGFydHNBbmRTdG9wc1Ro
ZVByb2ZpbGVyIGNhbGxpbmctdGhlLWZ1bmN0aW9uLXRoYXQtc3RhcnRlZC10aGUtcHJvZmlsZXIt
ZnJvbS1hbm90aGVyLXNjb3BlLmh0bWwgKGxpbmUgMjQ6MSkKLSAgIGZ1bmN0aW9uV2ljaFN0YXJ0
c0FuZFN0b3BzVGhlUHJvZmlsZXIgY2FsbGluZy10aGUtZnVuY3Rpb24tdGhhdC1zdGFydGVkLXRo
ZS1wcm9maWxlci1mcm9tLWFub3RoZXItc2NvcGUuaHRtbCAobGluZSAyNDoxKQotICAgZW5kVGVz
dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgaW5kaXJlY3Rp
b24gY2FsbGluZy10aGUtZnVuY3Rpb24tdGhhdC1zdGFydGVkLXRoZS1wcm9maWxlci1mcm9tLWFu
b3RoZXItc2NvcGUuaHRtbCAobGluZSAxNzoyMSkKKyAgICAgIGZ1bmN0aW9uV2ljaFN0YXJ0c0Fu
ZFN0b3BzVGhlUHJvZmlsZXIgY2FsbGluZy10aGUtZnVuY3Rpb24tdGhhdC1zdGFydGVkLXRoZS1w
cm9maWxlci1mcm9tLWFub3RoZXItc2NvcGUuaHRtbCAobGluZSAyMzo0NykKKyAgIGZ1bmN0aW9u
V2ljaFN0YXJ0c0FuZFN0b3BzVGhlUHJvZmlsZXIgY2FsbGluZy10aGUtZnVuY3Rpb24tdGhhdC1z
dGFydGVkLXRoZS1wcm9maWxlci1mcm9tLWFub3RoZXItc2NvcGUuaHRtbCAobGluZSAyMzo0NykK
KyAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToxNykKIAog
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2NvbXBhcmUtbXVsdGlwbGUtcHJvZmls
ZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIv
Y29tcGFyZS1tdWx0aXBsZS1wcm9maWxlcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4Njk1NCkK
KysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvY29tcGFyZS1tdWx0aXBsZS1wcm9maWxlcy1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsMTQgKzQsMTQgQEAgVG8gcnVuIHRoaXMg
dGVzdCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiBUZXN0CiBUaHJl
YWRfMSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgc3RhcnRUZXN0IGNvbXBhcmUtbXVsdGlwbGUt
cHJvZmlsZXMuaHRtbCAobGluZSAyMzoxKQotICAgICAgdGVzdCBjb21wYXJlLW11bHRpcGxlLXBy
b2ZpbGVzLmh0bWwgKGxpbmUgMTE6MjApCi0gICAgICAgICB0ZXN0MiBjb21wYXJlLW11bHRpcGxl
LXByb2ZpbGVzLmh0bWwgKGxpbmUgMTc6MjEpCisgICBzdGFydFRlc3QgY29tcGFyZS1tdWx0aXBs
ZS1wcm9maWxlcy5odG1sIChsaW5lIDIyOjE5KQorICAgICAgdGVzdCBjb21wYXJlLW11bHRpcGxl
LXByb2ZpbGVzLmh0bWwgKGxpbmUgMTE6MTQpCisgICAgICAgICB0ZXN0MiBjb21wYXJlLW11bHRp
cGxlLXByb2ZpbGVzLmh0bWwgKGxpbmUgMTc6MTUpCiAKIFByb2ZpbGUgdGl0bGU6IFRlc3QKIFRo
cmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBzdGFydFRlc3QgY29tcGFyZS1tdWx0aXBs
ZS1wcm9maWxlcy5odG1sIChsaW5lIDIzOjEpCi0gICAgICB0ZXN0IGNvbXBhcmUtbXVsdGlwbGUt
cHJvZmlsZXMuaHRtbCAobGluZSAxMToyMCkKLSAgICAgICAgIHRlc3QyIGNvbXBhcmUtbXVsdGlw
bGUtcHJvZmlsZXMuaHRtbCAobGluZSAxNzoyMSkKKyAgIHN0YXJ0VGVzdCBjb21wYXJlLW11bHRp
cGxlLXByb2ZpbGVzLmh0bWwgKGxpbmUgMjI6MTkpCisgICAgICB0ZXN0IGNvbXBhcmUtbXVsdGlw
bGUtcHJvZmlsZXMuaHRtbCAobGluZSAxMToxNCkKKyAgICAgICAgIHRlc3QyIGNvbXBhcmUtbXVs
dGlwbGUtcHJvZmlsZXMuaHRtbCAobGluZSAxNzoxNSkKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L3Byb2ZpbGVyL2NvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2NvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MTg2OTU0KQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9jb25zdHJ1Y3Rvci1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsOSArNCw5IEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFu
dWFsbHksIGxvYWQgaXQgaW4gdGgKIAogUHJvZmlsZSB0aXRsZTogVXNpbmcgYSBjb25zdHJ1Y3Rv
ci4KIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBzdGFydFRlc3QgY29uc3RydWN0
b3IuaHRtbCAobGluZSAxMToxKQotICAgICAgZmFrZU9iamVjdCBjb25zdHJ1Y3Rvci5odG1sIChs
aW5lIDIwOjEpCisgICBzdGFydFRlc3QgY29uc3RydWN0b3IuaHRtbCAobGluZSAxMDoxOSkKKyAg
ICAgIGZha2VPYmplY3QgY29uc3RydWN0b3IuaHRtbCAobGluZSAxOToyMSkKICAgICAgICAgIEFy
cmF5IChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMt
cmVzb3VyY2VzLmpzIChsaW5lIDE6MjApCisgICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMt
cmVzb3VyY2VzLmpzIChsaW5lIDE6MTcpCiAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9m
aWxlci9kZWFkLXRpbWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvcHJvZmlsZXIvZGVhZC10aW1lLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2OTU0KQorKysg
TGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9kZWFkLXRpbWUtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC00LDEwICs0LDEwIEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxvYWQg
aXQgaW4gdGgKIAogUHJvZmlsZSB0aXRsZTogRGVhZCB0aW1lIGluIHByb2ZpbGUuCiBUaHJlYWRf
MSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgb25sb2FkIGRlYWQtdGltZS5odG1sIChsaW5lIDIx
OjUyKQotICAgICAgc3RhcnRUZXN0IGRlYWQtdGltZS5odG1sIChsaW5lIDEzOjEpCisgICBvbmxv
YWQgZGVhZC10aW1lLmh0bWwgKGxpbmUgMjE6NDQpCisgICAgICBzdGFydFRlc3QgZGVhZC10aW1l
Lmh0bWwgKGxpbmUgMTI6MTkpCiAgICAgICAgICBzZXRUaW1lb3V0IChubyBmaWxlKSAobGluZSAw
OjApCiAgICAocHJvZ3JhbSkgZGVhZC10aW1lLmh0bWwgKGxpbmUgMToxKQotICAgICAgZW5kVGVz
dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgICAgZW5kVGVz
dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiAKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvZG9jdW1lbnQtZG90LXdyaXRlLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2RvY3VtZW50LWRvdC13cml0
ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4Njk1NCkKKysrIExheW91dFRlc3RzL2Zhc3QvcHJv
ZmlsZXIvZG9jdW1lbnQtZG90LXdyaXRlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MSw4ICsxLDggQEAKIAogUHJvZmlsZSB0aXRsZTogQ2FsbCBEb2N1bWVudC53cml0ZSgpCiBUaHJl
YWRfMSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgc3RhcnRUZXN0IGRvY3VtZW50LWRvdC13cml0
ZS5odG1sIChsaW5lIDExOjEpCisgICBzdGFydFRlc3QgZG9jdW1lbnQtZG90LXdyaXRlLmh0bWwg
KGxpbmUgMTA6MTkpCiAgICAgICB3cml0ZSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgZW5k
VGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgICAgZW5k
VGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiAKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvZXZlbnQtaGFuZGxlci1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9ldmVudC1oYW5kbGVyLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMTg2OTU0KQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9l
dmVudC1oYW5kbGVyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCwxNSArNCwxNSBA
QCBUbyBydW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBsb2FkIGl0IGluIHRoCiAKIFByb2ZpbGUgdGl0
bGU6IEV2ZW50IGhhbmRsZXIKIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBzdGFy
dFRlc3QgZXZlbnQtaGFuZGxlci5odG1sIChsaW5lIDExOjEpCisgICBzdGFydFRlc3QgZXZlbnQt
aGFuZGxlci5odG1sIChsaW5lIDEwOjE5KQogICAgICAgZ2V0RWxlbWVudEJ5SWQgKG5vIGZpbGUp
IChsaW5lIDA6MCkKICAgICAgIGFkZEV2ZW50TGlzdGVuZXIgKG5vIGZpbGUpIChsaW5lIDA6MCkK
ICAgICAgIGNsaWNrIChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICAgICBpbnNlcnROZXdUZXh0
IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjI2KQorICAgICAgICAgaW5z
ZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyMykKICAg
ICAgICAgICAgIGNyZWF0ZUVsZW1lbnQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAg
IGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICBhcHBlbmRD
aGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgZ2V0RWxlbWVudEJ5SWQgKG5v
IGZpbGUpIChsaW5lIDA6MCkKLSAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJj
ZXMuanMgKGxpbmUgMToyMCkKKyAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJj
ZXMuanMgKGxpbmUgMToxNykKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2V4
ZWN1dGlvbi1jb250ZXh0LWFuZC1ldmFsLW9uLXNhbWUtbGluZS1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9leGVjdXRpb24tY29udGV4dC1hbmQt
ZXZhbC1vbi1zYW1lLWxpbmUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY5NTQpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2V4ZWN1dGlvbi1jb250ZXh0LWFuZC1ldmFsLW9uLXNhbWUt
bGluZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsMTMgKzQsMTMgQEAgVG8gcnVu
IHRoaXMgdGVzdCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiBUd28g
RXhlY3V0aW9uIENvbnRleHRzIG9uIHRoZSBzYW1lIGxpbmUKIFRocmVhZF8xIChubyBmaWxlKSAo
bGluZSAwOjApCi0gICBzdGFydFRlc3QgZXhlY3V0aW9uLWNvbnRleHQtYW5kLWV2YWwtb24tc2Ft
ZS1saW5lLmh0bWwgKGxpbmUgMTE6MSkKLSAgICAgIGV2YWxGdW5jdGlvbiAobm8gZmlsZSkgKGxp
bmUgMToyNSkKLSAgICAgICAgIGluc2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJj
ZXMuanMgKGxpbmUgMTc6MjYpCisgICBzdGFydFRlc3QgZXhlY3V0aW9uLWNvbnRleHQtYW5kLWV2
YWwtb24tc2FtZS1saW5lLmh0bWwgKGxpbmUgMTA6MTkpCisgICAgICBldmFsRnVuY3Rpb24gKG5v
IGZpbGUpIChsaW5lIDE6MjIpCisgICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3Qt
SlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjIzKQogICAgICAgICAgICAgY3JlYXRlRWxlbWVudCAo
bm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUp
IChsaW5lIDA6MCkKICAgICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjAp
CiAgICAgICAgICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAg
ZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgICAg
ZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiAKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvaW5saW5lLWV2ZW50LWhhbmRsZXItZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvaW5saW5lLWV2
ZW50LWhhbmRsZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY5NTQpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L3Byb2ZpbGVyL2lubGluZS1ldmVudC1oYW5kbGVyLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtNCwxNyArNCwxNyBAQCBUbyBydW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBsb2Fk
IGl0IGluIHRoCiAKIFByb2ZpbGUgdGl0bGU6IElubGluZSBldmVudCBoYW5kbGVyCiBUaHJlYWRf
MSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgc3RhcnRUZXN0IGlubGluZS1ldmVudC1oYW5kbGVy
Lmh0bWwgKGxpbmUgMTE6MSkKKyAgIHN0YXJ0VGVzdCBpbmxpbmUtZXZlbnQtaGFuZGxlci5odG1s
IChsaW5lIDEwOjE5KQogICAgICAgZ2V0RWxlbWVudEJ5SWQgKG5vIGZpbGUpIChsaW5lIDA6MCkK
ICAgICAgIGNsaWNrIChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICAgICBvbmNsaWNrIGlubGlu
ZS1ldmVudC1oYW5kbGVyLmh0bWwgKGxpbmUgMzE6MTM1KQotICAgICAgICAgICAgZXZlbnRMaXN0
ZW5lciBpbmxpbmUtZXZlbnQtaGFuZGxlci5odG1sIChsaW5lIDE3OjI2KQotICAgICAgICAgICAg
ICAgYW5vbnltb3VzRnVuY3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUg
Mjk6MzcpCi0gICAgICAgICAgICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMt
cmVzb3VyY2VzLmpzIChsaW5lIDE3OjI2KQorICAgICAgICAgb25jbGljayBpbmxpbmUtZXZlbnQt
aGFuZGxlci5odG1sIChsaW5lIDMxOjEyNykKKyAgICAgICAgICAgIGV2ZW50TGlzdGVuZXIgaW5s
aW5lLWV2ZW50LWhhbmRsZXIuaHRtbCAobGluZSAxNzoyMykKKyAgICAgICAgICAgICAgIGFub255
bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI5OjM0KQor
ICAgICAgICAgICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNl
cy5qcyAobGluZSAxNzoyMykKICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQgKG5v
IGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChu
byBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRDaGlsZCAobm8g
ZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgICAgICAgZ2V0RWxlbWVudEJ5SWQgKG5v
IGZpbGUpIChsaW5lIDA6MCkKLSAgICAgICAgICAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1K
Uy1yZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAgICAgICAgICAgICAgIGVuZFRlc3QgcHJvZmls
ZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToxNykKIAogCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L3Byb2ZpbGVyL21hbnktY2FsbHMtaW4tdGhlLXNhbWUtc2NvcGUtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvbWFueS1jYWxscy1pbi10
aGUtc2FtZS1zY29wZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4Njk1NCkKKysrIExheW91dFRl
c3RzL2Zhc3QvcHJvZmlsZXIvbWFueS1jYWxscy1pbi10aGUtc2FtZS1zY29wZS1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsMzMgKzQsMzMgQEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51
YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiBNYW55IENhbGxzIEluIFRoZSBT
YW1lIFNjb3BlCiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgc3RhcnRUZXN0IG1h
bnktY2FsbHMtaW4tdGhlLXNhbWUtc2NvcGUuaHRtbCAobGluZSAxMToxKQotICAgICAgaW5zZXJ0
TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyNikKKyAgIHN0
YXJ0VGVzdCBtYW55LWNhbGxzLWluLXRoZS1zYW1lLXNjb3BlLmh0bWwgKGxpbmUgMTA6MTkpCisg
ICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3
OjIzKQogICAgICAgICAgY3JlYXRlRWxlbWVudCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAg
ICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgIGFwcGVuZENo
aWxkIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmls
ZSkgKGxpbmUgMDowKQotICAgICAgaW5zZXJ0R2l2ZW5UZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVz
b3VyY2VzLmpzIChsaW5lIDk6MzIpCisgICAgICBpbnNlcnRHaXZlblRleHQgcHJvZmlsZXItdGVz
dC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgOToyNSkKICAgICAgICAgIGNyZWF0ZUVsZW1lbnQgKG5v
IGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGlu
ZSAwOjApCiAgICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAg
ICAgZ2V0RWxlbWVudEJ5SWQgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAgIGFycmF5T3BlcmF0
b3JGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAyNTo0NikKLSAg
ICAgIGludGVybWVkaWFyeUZ1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChs
aW5lIDMzOjEpCi0gICAgICAgICBhbm9ueW1vdXNGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpTLXJl
c291cmNlcy5qcyAobGluZSAyOTozNykKLSAgICAgICAgICAgIGluc2VydE5ld1RleHQgcHJvZmls
ZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjYpCisgICAgICBhcnJheU9wZXJhdG9y
RnVuY3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMjU6MzEpCisgICAg
ICBpbnRlcm1lZGlhcnlGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGlu
ZSAzMjozMCkKKyAgICAgICAgIGFub255bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVz
b3VyY2VzLmpzIChsaW5lIDI5OjM0KQorICAgICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxl
ci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyMykKICAgICAgICAgICAgICAgIGNyZWF0
ZUVsZW1lbnQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgIGNyZWF0ZVRleHRO
b2RlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICBhcHBlbmRDaGlsZCAobm8g
ZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgZ2V0RWxlbWVudEJ5SWQgKG5vIGZpbGUp
IChsaW5lIDA6MCkKLSAgICAgIGFub255bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVz
b3VyY2VzLmpzIChsaW5lIDI5OjM3KQotICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10
ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyNikKKyAgICAgIGFub255bW91c0Z1bmN0aW9u
IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI5OjM0KQorICAgICAgICAgaW5z
ZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyMykKICAg
ICAgICAgICAgIGNyZWF0ZUVsZW1lbnQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAg
IGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICBhcHBlbmRD
aGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgZ2V0RWxlbWVudEJ5SWQgKG5v
IGZpbGUpIChsaW5lIDA6MCkKLSAgICAgIGVuZCBtYW55LWNhbGxzLWluLXRoZS1zYW1lLXNjb3Bl
Lmh0bWwgKGxpbmUgMjc6MSkKLSAgICAgIGVuZFQgbWFueS1jYWxscy1pbi10aGUtc2FtZS1zY29w
ZS5odG1sIChsaW5lIDMyOjEpCi0gICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3Vy
Y2VzLmpzIChsaW5lIDE6MjApCisgICAgICBlbmQgbWFueS1jYWxscy1pbi10aGUtc2FtZS1zY29w
ZS5odG1sIChsaW5lIDI2OjEzKQorICAgICAgZW5kVCBtYW55LWNhbGxzLWluLXRoZS1zYW1lLXNj
b3BlLmh0bWwgKGxpbmUgMzE6MTQpCisgICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVz
b3VyY2VzLmpzIChsaW5lIDE6MTcpCiAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxl
ci9tdWx0aXBsZS1hbmQtZGlmZmVyZW50LXNjb3BlZC1hbm9ueW1vdXMtZnVuY3Rpb24tY2FsbHMt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvbXVs
dGlwbGUtYW5kLWRpZmZlcmVudC1zY29wZWQtYW5vbnltb3VzLWZ1bmN0aW9uLWNhbGxzLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMTg2OTU0KQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9t
dWx0aXBsZS1hbmQtZGlmZmVyZW50LXNjb3BlZC1hbm9ueW1vdXMtZnVuY3Rpb24tY2FsbHMtZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDIwICs0LDIwIEBAIFRvIHJ1biB0aGlzIHRl
c3QgbWFudWFsbHksIGxvYWQgaXQgaW4gdGgKIAogUHJvZmlsZSB0aXRsZTogTXVsdGlwbGUgYW5k
IGRpZmZlcmVudCBzY29wZWQgY2FsbHMgdG8gdGhlIHNhbWUgYW5vbnltb3VzIGZ1bmN0aW9uCiBU
aHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgc3RhcnRUZXN0IG11bHRpcGxlLWFuZC1k
aWZmZXJlbnQtc2NvcGVkLWFub255bW91cy1mdW5jdGlvbi1jYWxscy5odG1sIChsaW5lIDExOjEp
Ci0gICAgICBhbm9ueW1vdXNGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAo
bGluZSAyOTozNykKLSAgICAgICAgIGluc2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNv
dXJjZXMuanMgKGxpbmUgMTc6MjYpCisgICBzdGFydFRlc3QgbXVsdGlwbGUtYW5kLWRpZmZlcmVu
dC1zY29wZWQtYW5vbnltb3VzLWZ1bmN0aW9uLWNhbGxzLmh0bWwgKGxpbmUgMTA6MTkpCisgICAg
ICBhbm9ueW1vdXNGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAy
OTozNCkKKyAgICAgICAgIGluc2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMu
anMgKGxpbmUgMTc6MjMpCiAgICAgICAgICAgICBjcmVhdGVFbGVtZW50IChubyBmaWxlKSAobGlu
ZSAwOjApCiAgICAgICAgICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQog
ICAgICAgICAgICAgYXBwZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAg
IGdldEVsZW1lbnRCeUlkIChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICBpbnRlcm1lZGlhcnlG
dW5jdGlvbiBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAzMzoxKQotICAgICAg
ICAgYW5vbnltb3VzRnVuY3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUg
Mjk6MzcpCi0gICAgICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3Vy
Y2VzLmpzIChsaW5lIDE3OjI2KQorICAgICAgaW50ZXJtZWRpYXJ5RnVuY3Rpb24gcHJvZmlsZXIt
dGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMzI6MzApCisgICAgICAgICBhbm9ueW1vdXNGdW5j
dGlvbiBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAyOTozNCkKKyAgICAgICAg
ICAgIGluc2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6
MjMpCiAgICAgICAgICAgICAgICBjcmVhdGVFbGVtZW50IChubyBmaWxlKSAobGluZSAwOjApCiAg
ICAgICAgICAgICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAg
ICAgICAgICAgYXBwZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAg
IGdldEVsZW1lbnRCeUlkIChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICBlbmRUZXN0IHByb2Zp
bGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MjApCisgICAgICBlbmRUZXN0IHByb2Zp
bGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MTcpCiAKIApJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9wcm9maWxlci9tdWx0aXBsZS1hbmQtZGlmZmVyZW50LXNjb3BlZC1mdW5jdGlvbi1j
YWxscy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxl
ci9tdWx0aXBsZS1hbmQtZGlmZmVyZW50LXNjb3BlZC1mdW5jdGlvbi1jYWxscy1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDE4Njk1NCkKKysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvbXVsdGlw
bGUtYW5kLWRpZmZlcmVudC1zY29wZWQtZnVuY3Rpb24tY2FsbHMtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC00LDE5ICs0LDE5IEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxv
YWQgaXQgaW4gdGgKIAogUHJvZmlsZSB0aXRsZTogTXVsdGlwbGUgYW5kIGRpZmZlcmVudCBzY29w
ZWQgY2FsbHMgdG8gdGhlIHNhbWUgZnVuY3Rpb24KIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAw
OjApCi0gICBzdGFydFRlc3QgbXVsdGlwbGUtYW5kLWRpZmZlcmVudC1zY29wZWQtZnVuY3Rpb24t
Y2FsbHMuaHRtbCAobGluZSAxMToxKQotICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0
LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyNikKKyAgIHN0YXJ0VGVzdCBtdWx0aXBsZS1hbmQt
ZGlmZmVyZW50LXNjb3BlZC1mdW5jdGlvbi1jYWxscy5odG1sIChsaW5lIDEwOjE5KQorICAgICAg
aW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyMykK
ICAgICAgICAgIGNyZWF0ZUVsZW1lbnQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgIGNy
ZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICBhcHBlbmRDaGlsZCAo
bm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgZ2V0RWxlbWVudEJ5SWQgKG5vIGZpbGUpIChs
aW5lIDA6MCkKLSAgICAgIGludGVybWVkaWFyeUZ1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVz
b3VyY2VzLmpzIChsaW5lIDMzOjEpCi0gICAgICAgICBhbm9ueW1vdXNGdW5jdGlvbiBwcm9maWxl
ci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAyOTozNykKLSAgICAgICAgICAgIGluc2VydE5l
d1RleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjYpCisgICAgICBp
bnRlcm1lZGlhcnlGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAz
MjozMCkKKyAgICAgICAgIGFub255bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3Vy
Y2VzLmpzIChsaW5lIDI5OjM0KQorICAgICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10
ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyMykKICAgICAgICAgICAgICAgIGNyZWF0ZUVs
ZW1lbnQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgIGNyZWF0ZVRleHROb2Rl
IChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmls
ZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgZ2V0RWxlbWVudEJ5SWQgKG5vIGZpbGUpIChs
aW5lIDA6MCkKLSAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxp
bmUgMToyMCkKKyAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxp
bmUgMToxNykKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL211bHRpcGxlLWFu
b255bW91cy1mdW5jdGlvbnMtY2FsbGVkLWZyb20tdGhlLXNhbWUtZnVuY3Rpb24tZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvbXVsdGlwbGUtYW5v
bnltb3VzLWZ1bmN0aW9ucy1jYWxsZWQtZnJvbS10aGUtc2FtZS1mdW5jdGlvbi1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDE4Njk1NCkKKysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvbXVsdGlw
bGUtYW5vbnltb3VzLWZ1bmN0aW9ucy1jYWxsZWQtZnJvbS10aGUtc2FtZS1mdW5jdGlvbi1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsMTkgKzQsMTkgQEAgVG8gcnVuIHRoaXMgdGVz
dCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiBNdWx0aXBsZSBjYWxs
cyB0byBkaWZmZXJlbnQgYW5vbnltb3VzIGZ1bmN0aW9ucwogVGhyZWFkXzEgKG5vIGZpbGUpIChs
aW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCBtdWx0aXBsZS1hbm9ueW1vdXMtZnVuY3Rpb25zLWNhbGxl
ZC1mcm9tLXRoZS1zYW1lLWZ1bmN0aW9uLmh0bWwgKGxpbmUgMTE6MSkKLSAgICAgIGFub255bW91
c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI5OjM3KQotICAg
ICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAx
NzoyNikKKyAgIHN0YXJ0VGVzdCBtdWx0aXBsZS1hbm9ueW1vdXMtZnVuY3Rpb25zLWNhbGxlZC1m
cm9tLXRoZS1zYW1lLWZ1bmN0aW9uLmh0bWwgKGxpbmUgMTA6MTkpCisgICAgICBhbm9ueW1vdXNG
dW5jdGlvbiBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAyOTozNCkKKyAgICAg
ICAgIGluc2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6
MjMpCiAgICAgICAgICAgICBjcmVhdGVFbGVtZW50IChubyBmaWxlKSAobGluZSAwOjApCiAgICAg
ICAgICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAg
YXBwZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIGdldEVsZW1lbnRC
eUlkIChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICBhbm90aGVyQW5vbnltb3VzRnVuY3Rpb24g
cHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMzA6NDQpCi0gICAgICAgICBpbnNl
cnRHaXZlblRleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgOTozMikKKyAg
ICAgIGFub3RoZXJBbm9ueW1vdXNGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5q
cyAobGluZSAzMDo0MSkKKyAgICAgICAgIGluc2VydEdpdmVuVGV4dCBwcm9maWxlci10ZXN0LUpT
LXJlc291cmNlcy5qcyAobGluZSA5OjI1KQogICAgICAgICAgICAgY3JlYXRlRWxlbWVudCAobm8g
ZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChs
aW5lIDA6MCkKICAgICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjApCiAg
ICAgICAgICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgZW5k
VGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgICAgZW5k
VGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiAKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvbXVsdGlwbGUtZnJhbWVzLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL211bHRpcGxlLWZyYW1lcy1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDE4Njk1NCkKKysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmls
ZXIvbXVsdGlwbGUtZnJhbWVzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCwxNSAr
NCwxNSBAQCBUbyBydW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBsb2FkIGl0IGluIHRoCiAKIFByb2Zp
bGUgdGl0bGU6IE90aGVyIHdpbmRvdyBleGVjdXRpbmcgSmF2YVNjcmlwdAogVGhyZWFkXzEgKG5v
IGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCBtdWx0aXBsZS1mcmFtZXMuaHRtbCAobGlu
ZSAxMToxKQorICAgc3RhcnRUZXN0IG11bHRpcGxlLWZyYW1lcy5odG1sIChsaW5lIDEwOjE5KQog
ICAgICAgZ2V0RWxlbWVudEJ5SWQgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAgIGZ1bmN0aW9u
SW5PdGhlckZyYW1lIG90aGVyLWZyYW1lLmh0bWwgKGxpbmUgNDozMykKLSAgICAgICAgIGZ1bmN0
aW9uSW5QYXJlbnRGcmFtZSBtdWx0aXBsZS1mcmFtZXMuaHRtbCAobGluZSAyMTozNCkKLSAgICAg
IGluc2VydEdpdmVuVGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA5OjMy
KQorICAgICAgZnVuY3Rpb25Jbk90aGVyRnJhbWUgb3RoZXItZnJhbWUuaHRtbCAobGluZSA0OjMw
KQorICAgICAgICAgZnVuY3Rpb25JblBhcmVudEZyYW1lIG11bHRpcGxlLWZyYW1lcy5odG1sIChs
aW5lIDIxOjMxKQorICAgICAgaW5zZXJ0R2l2ZW5UZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3Vy
Y2VzLmpzIChsaW5lIDk6MjUpCiAgICAgICAgICBjcmVhdGVFbGVtZW50IChubyBmaWxlKSAobGlu
ZSAwOjApCiAgICAgICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAg
ICAgICAgYXBwZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgIGdldEVsZW1l
bnRCeUlkIChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3Qt
SlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MjApCisgICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3Qt
SlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MTcpCiAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9w
cm9maWxlci9uYW1lZC1mdW5jdGlvbnMtd2l0aC1kaXNwbGF5LW5hbWVzLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL25hbWVkLWZ1bmN0aW9ucy13
aXRoLWRpc3BsYXktbmFtZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY5NTQpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L3Byb2ZpbGVyL25hbWVkLWZ1bmN0aW9ucy13aXRoLWRpc3BsYXktbmFtZXMt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDEzICs0LDEzIEBAIFRvIHJ1biB0aGlz
IHRlc3QgbWFudWFsbHksIGxvYWQgaXQgaW4gdGgKIAogUHJvZmlsZSB0aXRsZTogTmFtZWQgZnVu
Y3Rpb25zIHdpdGggZGlzcGxheSBuYW1lcwogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkK
LSAgIHN0YXJ0VGVzdCBuYW1lZC1mdW5jdGlvbnMtd2l0aC1kaXNwbGF5LW5hbWVzLmh0bWwgKGxp
bmUgNTQ6MSkKLSAgICAgIDAgaXRlcmF0aW9ucyBmdW5jdGlvbiBuYW1lZC1mdW5jdGlvbnMtd2l0
aC1kaXNwbGF5LW5hbWVzLmh0bWwgKGxpbmUgMTE6MSkKLSAgICAgIDEgaXRlcmF0aW9uIGZ1bmN0
aW9uIG5hbWVkLWZ1bmN0aW9ucy13aXRoLWRpc3BsYXktbmFtZXMuaHRtbCAobGluZSAxODoxKQot
ICAgICAgMiBpdGVyYXRpb25zIGZ1bmN0aW9uIG5hbWVkLWZ1bmN0aW9ucy13aXRoLWRpc3BsYXkt
bmFtZXMuaHRtbCAobGluZSAyNToxKQotICAgICAgMjAgaXRlcmF0aW9ucyBmdW5jdGlvbiBuYW1l
ZC1mdW5jdGlvbnMtd2l0aC1kaXNwbGF5LW5hbWVzLmh0bWwgKGxpbmUgMzI6MSkKLSAgICAgIDEw
MDAgaXRlcmF0aW9ucyBmdW5jdGlvbiBuYW1lZC1mdW5jdGlvbnMtd2l0aC1kaXNwbGF5LW5hbWVz
Lmh0bWwgKGxpbmUgMzk6MSkKLSAgICAgIGJvZ3VzRGlzcGxheU5hbWVGdW5jdGlvbiBuYW1lZC1m
dW5jdGlvbnMtd2l0aC1kaXNwbGF5LW5hbWVzLmh0bWwgKGxpbmUgNDc6MSkKLSAgICAgIGVuZFRl
c3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAgIHN0YXJ0VGVz
dCBuYW1lZC1mdW5jdGlvbnMtd2l0aC1kaXNwbGF5LW5hbWVzLmh0bWwgKGxpbmUgNTM6MTkpCisg
ICAgICAwIGl0ZXJhdGlvbnMgZnVuY3Rpb24gbmFtZWQtZnVuY3Rpb25zLXdpdGgtZGlzcGxheS1u
YW1lcy5odG1sIChsaW5lIDEwOjE5KQorICAgICAgMSBpdGVyYXRpb24gZnVuY3Rpb24gbmFtZWQt
ZnVuY3Rpb25zLXdpdGgtZGlzcGxheS1uYW1lcy5odG1sIChsaW5lIDE3OjE5KQorICAgICAgMiBp
dGVyYXRpb25zIGZ1bmN0aW9uIG5hbWVkLWZ1bmN0aW9ucy13aXRoLWRpc3BsYXktbmFtZXMuaHRt
bCAobGluZSAyNDoxOSkKKyAgICAgIDIwIGl0ZXJhdGlvbnMgZnVuY3Rpb24gbmFtZWQtZnVuY3Rp
b25zLXdpdGgtZGlzcGxheS1uYW1lcy5odG1sIChsaW5lIDMxOjIwKQorICAgICAgMTAwMCBpdGVy
YXRpb25zIGZ1bmN0aW9uIG5hbWVkLWZ1bmN0aW9ucy13aXRoLWRpc3BsYXktbmFtZXMuaHRtbCAo
bGluZSAzODoyMikKKyAgICAgIGJvZ3VzRGlzcGxheU5hbWVGdW5jdGlvbiBuYW1lZC1mdW5jdGlv
bnMtd2l0aC1kaXNwbGF5LW5hbWVzLmh0bWwgKGxpbmUgNDY6MzQpCisgICAgICBlbmRUZXN0IHBy
b2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MTcpCiAKIApJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9wcm9maWxlci9uZXN0ZWQtYW5vbnltb3VzLWZ1bmN0b24tZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvbmVzdGVkLWFub255bW91
cy1mdW5jdG9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2OTU0KQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9wcm9maWxlci9uZXN0ZWQtYW5vbnltb3VzLWZ1bmN0b24tZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC00LDE0ICs0LDE0IEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxv
YWQgaXQgaW4gdGgKIAogUHJvZmlsZSB0aXRsZTogTmVzdGVkIGFub255bW91cyBmdW5jdGlvbnMg
Y2FsbGVkCiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgc3RhcnRUZXN0IG5lc3Rl
ZC1hbm9ueW1vdXMtZnVuY3Rvbi5odG1sIChsaW5lIDExOjEpCi0gICAgICBBbm9ueW1vdXNGdW5j
dGlvbldpY2hDYWxsc0FuQW5vbnltb3VzRnVuY3Rpb24gbmVzdGVkLWFub255bW91cy1mdW5jdG9u
Lmh0bWwgKGxpbmUgMTQ6NjgpCi0gICAgICAgICBhbm9ueW1vdXNGdW5jdGlvbiBwcm9maWxlci10
ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAyOTozNykKLSAgICAgICAgICAgIGluc2VydE5ld1Rl
eHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjYpCisgICBzdGFydFRl
c3QgbmVzdGVkLWFub255bW91cy1mdW5jdG9uLmh0bWwgKGxpbmUgMTA6MTkpCisgICAgICBBbm9u
eW1vdXNGdW5jdGlvbldpY2hDYWxsc0FuQW5vbnltb3VzRnVuY3Rpb24gbmVzdGVkLWFub255bW91
cy1mdW5jdG9uLmh0bWwgKGxpbmUgMTQ6NjUpCisgICAgICAgICBhbm9ueW1vdXNGdW5jdGlvbiBw
cm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAyOTozNCkKKyAgICAgICAgICAgIGlu
c2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjMpCiAg
ICAgICAgICAgICAgICBjcmVhdGVFbGVtZW50IChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAg
ICAgICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAg
ICAgYXBwZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgIGdldEVs
ZW1lbnRCeUlkIChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICBlbmRUZXN0IHByb2ZpbGVyLXRl
c3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MjApCisgICAgICBlbmRUZXN0IHByb2ZpbGVyLXRl
c3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MTcpCiAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9wcm9maWxlci9uZXN0ZWQtc3RhcnQtYW5kLXN0b3AtcHJvZmlsZXItZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvbmVzdGVkLXN0YXJ0LWFuZC1z
dG9wLXByb2ZpbGVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2OTU0KQorKysgTGF5b3V0VGVz
dHMvZmFzdC9wcm9maWxlci9uZXN0ZWQtc3RhcnQtYW5kLXN0b3AtcHJvZmlsZXItZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDM1ICs0LDM1IEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFu
dWFsbHksIGxvYWQgaXQgaW4gdGgKIAogUHJvZmlsZSB0aXRsZTogU3RhcnQgdGhlIHByb2ZpbGVy
IHRoZSB0aGlyZCB0aW1lLgogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0
VGVzdCBuZXN0ZWQtc3RhcnQtYW5kLXN0b3AtcHJvZmlsZXIuaHRtbCAobGluZSAxMToxKQotICAg
ICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAg
c3RhcnRUZXN0IG5lc3RlZC1zdGFydC1hbmQtc3RvcC1wcm9maWxlci5odG1sIChsaW5lIDEwOjE5
KQorICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3
KQogCiAKIFByb2ZpbGUgdGl0bGU6IFN0YXJ0IHRoZSBwcm9maWxlciB0aGUgdGhpcmQgdGltZS4K
IFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBzdGFydFRlc3QgbmVzdGVkLXN0YXJ0
LWFuZC1zdG9wLXByb2ZpbGVyLmh0bWwgKGxpbmUgMTE6MSkKLSAgICAgIGVuZFRlc3QgcHJvZmls
ZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAgIHN0YXJ0VGVzdCBuZXN0ZWQt
c3RhcnQtYW5kLXN0b3AtcHJvZmlsZXIuaHRtbCAobGluZSAxMDoxOSkKKyAgICAgIGVuZFRlc3Qg
cHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToxNykKIAogUHJvZmlsZSB0aXRs
ZTogU3RhcnQgdGhlIHByb2ZpbGVyIHRoZSBzZWNvbmQgdGltZS4KIFRocmVhZF8xIChubyBmaWxl
KSAobGluZSAwOjApCi0gICBzdGFydFRlc3QgbmVzdGVkLXN0YXJ0LWFuZC1zdG9wLXByb2ZpbGVy
Lmh0bWwgKGxpbmUgMTE6MSkKLSAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJj
ZXMuanMgKGxpbmUgMToyMCkKKyAgIHN0YXJ0VGVzdCBuZXN0ZWQtc3RhcnQtYW5kLXN0b3AtcHJv
ZmlsZXIuaHRtbCAobGluZSAxMDoxOSkKKyAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1y
ZXNvdXJjZXMuanMgKGxpbmUgMToxNykKICAgICAgICAgIHByb2ZpbGVFbmQgKG5vIGZpbGUpIChs
aW5lIDA6MCkKLSAgICAgICAgIHByaW50UHJvZmlsZXNEYXRhV2l0aG91dFRpbWUgcHJvZmlsZXIt
dGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgNjM6MSkKKyAgICAgICAgIHByaW50UHJvZmlsZXNE
YXRhV2l0aG91dFRpbWUgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgNjI6Mzgp
CiAgICAgICAgICAgICBjcmVhdGVFbGVtZW50IChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAg
ICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgYXBw
ZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAgICAgICAgIHByaW50UHJvZmlsZU5v
ZGVXaXRob3V0VGltZSBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA3ODoxKQor
ICAgICAgICAgICAgcHJpbnRQcm9maWxlTm9kZVdpdGhvdXRUaW1lIHByb2ZpbGVyLXRlc3QtSlMt
cmVzb3VyY2VzLmpzIChsaW5lIDc3OjM3KQogICAgICAgICAgICAgICAgcmVwbGFjZSAobm8gZmls
ZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChs
aW5lIDA6MCkKICAgICAgICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjAp
CiAgICAgICAgICAgICAgICBjaGlsZHJlbiAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgICAg
ICAgICAgcHJpbnRQcm9maWxlTm9kZVdpdGhvdXRUaW1lIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3Vy
Y2VzLmpzIChsaW5lIDc4OjEpCisgICAgICAgICAgICAgICBwcmludFByb2ZpbGVOb2RlV2l0aG91
dFRpbWUgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgNzc6MzcpCiAgICAgICAg
ICAgICAgICAgICByZXBsYWNlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICAg
ICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgICAg
YXBwZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgICAgIGNoaWxk
cmVuIChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICAgICAgICAgICAgICBwcmludFByb2ZpbGVO
b2RlV2l0aG91dFRpbWUgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgNzg6MSkK
KyAgICAgICAgICAgICAgICAgIHByaW50UHJvZmlsZU5vZGVXaXRob3V0VGltZSBwcm9maWxlci10
ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA3NzozNykKICAgICAgICAgICAgICAgICAgICAgIHJl
cGxhY2UgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZVRl
eHROb2RlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRD
aGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQpAQCAtNDMsMjkgKzQzLDI5IEBAIFRocmVhZF8xIChu
byBmaWxlKSAobGluZSAwOjApCiAKIFByb2ZpbGUgdGl0bGU6IFN0YXJ0IHRoZSBwcm9maWxlciB0
aGUgdGhpcmQgdGltZS4KIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBzdGFydFRl
c3QgbmVzdGVkLXN0YXJ0LWFuZC1zdG9wLXByb2ZpbGVyLmh0bWwgKGxpbmUgMTE6MSkKLSAgICAg
IGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAgIHN0
YXJ0VGVzdCBuZXN0ZWQtc3RhcnQtYW5kLXN0b3AtcHJvZmlsZXIuaHRtbCAobGluZSAxMDoxOSkK
KyAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToxNykK
IAogUHJvZmlsZSB0aXRsZTogU3RhcnQgdGhlIHByb2ZpbGVyIHRoZSBzZWNvbmQgdGltZS4KIFRo
cmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBzdGFydFRlc3QgbmVzdGVkLXN0YXJ0LWFu
ZC1zdG9wLXByb2ZpbGVyLmh0bWwgKGxpbmUgMTE6MSkKLSAgICAgIGVuZFRlc3QgcHJvZmlsZXIt
dGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAgIHN0YXJ0VGVzdCBuZXN0ZWQtc3Rh
cnQtYW5kLXN0b3AtcHJvZmlsZXIuaHRtbCAobGluZSAxMDoxOSkKKyAgICAgIGVuZFRlc3QgcHJv
ZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToxNykKICAgICAgICAgIHByb2ZpbGVF
bmQgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAgICAgIHByaW50UHJvZmlsZXNEYXRhV2l0aG91
dFRpbWUgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgNjM6MSkKKyAgICAgICAg
IHByaW50UHJvZmlsZXNEYXRhV2l0aG91dFRpbWUgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMu
anMgKGxpbmUgNjI6MzgpCiAgICAgICAgICAgICBjcmVhdGVFbGVtZW50IChubyBmaWxlKSAobGlu
ZSAwOjApCiAgICAgICAgICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQog
ICAgICAgICAgICAgYXBwZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAgICAgICAg
IHByaW50UHJvZmlsZU5vZGVXaXRob3V0VGltZSBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5q
cyAobGluZSA3ODoxKQorICAgICAgICAgICAgcHJpbnRQcm9maWxlTm9kZVdpdGhvdXRUaW1lIHBy
b2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDc3OjM3KQogICAgICAgICAgICAgICAg
cmVwbGFjZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgY3JlYXRlVGV4dE5v
ZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgIGFwcGVuZENoaWxkIChubyBm
aWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICBjaGlsZHJlbiAobm8gZmlsZSkgKGxpbmUg
MDowKQotICAgICAgICAgICAgICAgcHJpbnRQcm9maWxlTm9kZVdpdGhvdXRUaW1lIHByb2ZpbGVy
LXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDc4OjEpCisgICAgICAgICAgICAgICBwcmludFBy
b2ZpbGVOb2RlV2l0aG91dFRpbWUgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUg
Nzc6MzcpCiAgICAgICAgICAgICAgICAgICByZXBsYWNlIChubyBmaWxlKSAobGluZSAwOjApCiAg
ICAgICAgICAgICAgICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAg
ICAgICAgICAgICAgICAgYXBwZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAg
ICAgICAgICAgIGNoaWxkcmVuIChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICAgICAgICAgICAg
ICBwcmludFByb2ZpbGVOb2RlV2l0aG91dFRpbWUgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMu
anMgKGxpbmUgNzg6MSkKKyAgICAgICAgICAgICAgICAgIHByaW50UHJvZmlsZU5vZGVXaXRob3V0
VGltZSBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA3NzozNykKICAgICAgICAg
ICAgICAgICAgICAgIHJlcGxhY2UgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAg
ICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAg
ICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQpAQCAtNzUsNDkgKzc1LDQ5
IEBAIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCiAKIFByb2ZpbGUgdGl0bGU6IFN0YXJ0
IHRoZSBwcm9maWxlciB0aGUgZmlyc3QgdGltZS4KIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAw
OjApCi0gICBzdGFydFRlc3QgbmVzdGVkLXN0YXJ0LWFuZC1zdG9wLXByb2ZpbGVyLmh0bWwgKGxp
bmUgMTE6MSkKLSAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxp
bmUgMToyMCkKKyAgIHN0YXJ0VGVzdCBuZXN0ZWQtc3RhcnQtYW5kLXN0b3AtcHJvZmlsZXIuaHRt
bCAobGluZSAxMDoxOSkKKyAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMu
anMgKGxpbmUgMToxNykKICAgICAgICAgIHByb2ZpbGVFbmQgKG5vIGZpbGUpIChsaW5lIDA6MCkK
LSAgICAgICAgIHByaW50UHJvZmlsZXNEYXRhV2l0aG91dFRpbWUgcHJvZmlsZXItdGVzdC1KUy1y
ZXNvdXJjZXMuanMgKGxpbmUgNjM6MSkKKyAgICAgICAgIHByaW50UHJvZmlsZXNEYXRhV2l0aG91
dFRpbWUgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgNjI6MzgpCiAgICAgICAg
ICAgICBjcmVhdGVFbGVtZW50IChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICBjcmVh
dGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgYXBwZW5kQ2hpbGQg
KG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAgICAgICAgIHByaW50UHJvZmlsZU5vZGVXaXRob3V0
VGltZSBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA3ODoxKQorICAgICAgICAg
ICAgcHJpbnRQcm9maWxlTm9kZVdpdGhvdXRUaW1lIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2Vz
LmpzIChsaW5lIDc3OjM3KQogICAgICAgICAgICAgICAgcmVwbGFjZSAobm8gZmlsZSkgKGxpbmUg
MDowKQogICAgICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkK
ICAgICAgICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAg
ICAgICAgICBjaGlsZHJlbiAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgICAgICAgICAgcHJp
bnRQcm9maWxlTm9kZVdpdGhvdXRUaW1lIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChs
aW5lIDc4OjEpCisgICAgICAgICAgICAgICBwcmludFByb2ZpbGVOb2RlV2l0aG91dFRpbWUgcHJv
ZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgNzc6MzcpCiAgICAgICAgICAgICAgICAg
ICByZXBsYWNlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICAgICBjcmVhdGVU
ZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgICAgYXBwZW5kQ2hp
bGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuIChubyBm
aWxlKSAobGluZSAwOjApCi0gICAgICAgICAgICAgICAgICBwcmludFByb2ZpbGVOb2RlV2l0aG91
dFRpbWUgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgNzg6MSkKKyAgICAgICAg
ICAgICAgICAgIHByaW50UHJvZmlsZU5vZGVXaXRob3V0VGltZSBwcm9maWxlci10ZXN0LUpTLXJl
c291cmNlcy5qcyAobGluZSA3NzozNykKICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2UgKG5v
IGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChu
byBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRDaGlsZCAobm8g
ZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gKG5vIGZpbGUp
IChsaW5lIDA6MCkKLSAgICAgICAgICAgICAgICAgICAgIHByaW50UHJvZmlsZU5vZGVXaXRob3V0
VGltZSBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA3ODoxKQorICAgICAgICAg
ICAgICAgICAgICAgcHJpbnRQcm9maWxlTm9kZVdpdGhvdXRUaW1lIHByb2ZpbGVyLXRlc3QtSlMt
cmVzb3VyY2VzLmpzIChsaW5lIDc3OjM3KQogICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFj
ZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlVGV4
dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVu
ZENoaWxkIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICAgICAgICAgICBjaGls
ZHJlbiAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRQ
cm9maWxlTm9kZVdpdGhvdXRUaW1lIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5l
IDc4OjEpCisgICAgICAgICAgICAgICAgICAgICAgICBwcmludFByb2ZpbGVOb2RlV2l0aG91dFRp
bWUgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgNzc6MzcpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXBsYWNlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDA6MCkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuIChubyBmaWxlKSAobGluZSAwOjAp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludFByb2ZpbGVOb2RlV2l0aG91dFRpbWUg
cHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgNzg6MSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHByaW50UHJvZmlsZU5vZGVXaXRob3V0VGltZSBwcm9maWxlci10ZXN0LUpT
LXJlc291cmNlcy5qcyAobGluZSA3NzozNykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlcGxhY2UgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50UHJvZmlsZU5vZGVXaXRob3V0VGltZSBwcm9m
aWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA3ODoxKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHJpbnRQcm9maWxlTm9kZVdpdGhvdXRUaW1lIHByb2ZpbGVyLXRlc3QtSlMt
cmVzb3VyY2VzLmpzIChsaW5lIDc3OjM3KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVwbGFjZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjApCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiAobm8gZmlsZSkgKGxpbmUg
MDowKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRQcm9maWxlTm9kZVdp
dGhvdXRUaW1lIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDc4OjEpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludFByb2ZpbGVOb2RlV2l0aG91dFRpbWUg
cHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgNzc6MzcpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkg
KGxpbmUgMDowKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kQ2hp
bGQgKG5vIGZpbGUpIChsaW5lIDA6MCkKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIv
b25lLWV4ZWN1dGlvbi1jb250ZXh0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L3Byb2ZpbGVyL29uZS1leGVjdXRpb24tY29udGV4dC1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDE4Njk1NCkKKysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvb25lLWV4ZWN1dGlv
bi1jb250ZXh0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCw3ICs0LDcgQEAgVG8g
cnVuIHRoaXMgdGVzdCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRpdGxlOiBP
bmUgRXhlY3V0aW9uIENvbnRleHQKIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBz
dGFydFRlc3Qgb25lLWV4ZWN1dGlvbi1jb250ZXh0Lmh0bWwgKGxpbmUgMTE6MSkKLSAgICAgIGVu
ZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAgIHN0YXJ0
VGVzdCBvbmUtZXhlY3V0aW9uLWNvbnRleHQuaHRtbCAobGluZSAxMDoxOSkKKyAgICAgIGVuZFRl
c3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToxNykKIAogCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3Byb2ZpbGUtY2FsbHMtaW4taW5jbHVkZWQtZmlsZS1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9wcm9m
aWxlLWNhbGxzLWluLWluY2x1ZGVkLWZpbGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY5NTQp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3Byb2ZpbGUtY2FsbHMtaW4taW5jbHVkZWQt
ZmlsZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsNyArNCw3IEBAIFRvIHJ1biB0
aGlzIHRlc3QgbWFudWFsbHksIGxvYWQgaXQgaW4gdGgKIAogUHJvZmlsZSB0aXRsZTogUHJvZmls
ZSBjYWxsIGluIGluY2x1ZGVkIGZpbGUKIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0g
ICBzdGFydFByb2ZpbGUgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgNDM6MSkK
LSAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAg
IHN0YXJ0UHJvZmlsZSBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSA0MjoyMikK
KyAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToxNykKIAog
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3Byb2ZpbGUtd2l0aC1uby10aXRsZS1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9wcm9m
aWxlLXdpdGgtbm8tdGl0bGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY5NTQpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3Byb2ZpbGUtd2l0aC1uby10aXRsZS1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTQsNyArNCw3IEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHks
IGxvYWQgaXQgaW4gdGgKIAogUHJvZmlsZSB0aXRsZTogCiBUaHJlYWRfMSAobm8gZmlsZSkgKGxp
bmUgMDowKQotICAgc3RhcnRUZXN0IHByb2ZpbGUtd2l0aC1uby10aXRsZS5odG1sIChsaW5lIDEx
OjEpCi0gICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6
MjApCisgICBzdGFydFRlc3QgcHJvZmlsZS13aXRoLW5vLXRpdGxlLmh0bWwgKGxpbmUgMTA6MTkp
CisgICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE6MTcp
CiAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9wcm9maWxpbmctZnJvbS1hLW5l
c3RlZC1sb2NhdGlvbi1idXQtc3RvcC1wcm9maWxpbmctb3V0c2lkZS10aGUtbmVzdGluZy1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9wcm9maWxp
bmctZnJvbS1hLW5lc3RlZC1sb2NhdGlvbi1idXQtc3RvcC1wcm9maWxpbmctb3V0c2lkZS10aGUt
bmVzdGluZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4Njk1NCkKKysrIExheW91dFRlc3RzL2Zh
c3QvcHJvZmlsZXIvcHJvZmlsaW5nLWZyb20tYS1uZXN0ZWQtbG9jYXRpb24tYnV0LXN0b3AtcHJv
ZmlsaW5nLW91dHNpZGUtdGhlLW5lc3RpbmctZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC00LDcgKzQsNyBAQCBUbyBydW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBsb2FkIGl0IGluIHRoCiAK
IFByb2ZpbGUgdGl0bGU6IFByb2ZpbGluZyBGcm9tIEEgTmVzdGVkIExvY2F0aW9uIEJ1dCBTdG9w
IFByb2ZpbGluZyBPdXRzaWRlIFRoZSBOZXN0aW5nCiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUg
MDowKQotICAgZnVuY3Rpb25XaWNoU3RhcnRzVGhlUHJvZmlsZXIgcHJvZmlsaW5nLWZyb20tYS1u
ZXN0ZWQtbG9jYXRpb24tYnV0LXN0b3AtcHJvZmlsaW5nLW91dHNpZGUtdGhlLW5lc3RpbmcuaHRt
bCAobGluZSAxNzoxKQotICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAo
bGluZSAxOjIwKQorICAgZnVuY3Rpb25XaWNoU3RhcnRzVGhlUHJvZmlsZXIgcHJvZmlsaW5nLWZy
b20tYS1uZXN0ZWQtbG9jYXRpb24tYnV0LXN0b3AtcHJvZmlsaW5nLW91dHNpZGUtdGhlLW5lc3Rp
bmcuaHRtbCAobGluZSAxNjozOSkKKyAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJj
ZXMuanMgKGxpbmUgMToxNykKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3By
b2ZpbGluZy1mcm9tLWEtbmVzdGVkLWxvY2F0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3Byb2ZpbGluZy1mcm9tLWEtbmVzdGVkLWxvY2F0
aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2OTU0KQorKysgTGF5b3V0VGVzdHMvZmFzdC9w
cm9maWxlci9wcm9maWxpbmctZnJvbS1hLW5lc3RlZC1sb2NhdGlvbi1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTQsNyArNCw3IEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxv
YWQgaXQgaW4gdGgKIAogUHJvZmlsZSB0aXRsZTogUHJvZmlsaW5nIEZyb20gQSBOZXN0ZWQgTG9j
YXRpb24KIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBmdW5jdGlvbldpY2hTdGFy
dHNBbmRTdG9wc1RoZVByb2ZpbGVyIHByb2ZpbGluZy1mcm9tLWEtbmVzdGVkLWxvY2F0aW9uLmh0
bWwgKGxpbmUgMTY6MSkKLSAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMu
anMgKGxpbmUgMToyMCkKKyAgIGZ1bmN0aW9uV2ljaFN0YXJ0c0FuZFN0b3BzVGhlUHJvZmlsZXIg
cHJvZmlsaW5nLWZyb20tYS1uZXN0ZWQtbG9jYXRpb24uaHRtbCAobGluZSAxNTo0NykKKyAgICAg
IGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToxNykKIAogCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3NpbXBsZS1ldmVudC1jYWxsLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3NpbXBsZS1ldmVu
dC1jYWxsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2OTU0KQorKysgTGF5b3V0VGVzdHMvZmFz
dC9wcm9maWxlci9zaW1wbGUtZXZlbnQtY2FsbC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTQsNyArNCw3IEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxvYWQgaXQgaW4gdGgK
IAogUHJvZmlsZSB0aXRsZTogQSBzaW1wbGUgcHJvZmlsZSB0ZXN0IHdoZXJlIGFuIGV2ZW50IGhh
cHBlbnMuCiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgc3RhcnRUZXN0IHNpbXBs
ZS1ldmVudC1jYWxsLmh0bWwgKGxpbmUgMTE6MSkKLSAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVz
dC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAgIHN0YXJ0VGVzdCBzaW1wbGUtZXZlbnQt
Y2FsbC5odG1sIChsaW5lIDEwOjE5KQorICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJl
c291cmNlcy5qcyAobGluZSAxOjE3KQogCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcHJvZmls
ZXIvc2ltcGxlLW5vLWxldmVsLWNoYW5nZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9wcm9maWxlci9zaW1wbGUtbm8tbGV2ZWwtY2hhbmdlLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMTg2OTU0KQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9zaW1wbGUt
bm8tbGV2ZWwtY2hhbmdlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCw3ICs0LDcg
QEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogCiBQcm9maWxlIHRp
dGxlOiBBIHNpbXBsZSBwcm9maWxlIHRlc3Qgd2hlcmUgbm8gc2NvcGUgY2hhZ25lcwogVGhyZWFk
XzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIGZ1bmN0aW9uV2ljaFN0YXJ0c0FuZFN0b3BzVGhl
UHJvZmlsZXIgc2ltcGxlLW5vLWxldmVsLWNoYW5nZS5odG1sIChsaW5lIDE2OjEpCisgICBmdW5j
dGlvbldpY2hTdGFydHNBbmRTdG9wc1RoZVByb2ZpbGVyIHNpbXBsZS1uby1sZXZlbC1jaGFuZ2Uu
aHRtbCAobGluZSAxNTo0NykKICAgICAgIGdldEVsZW1lbnRCeUlkIChubyBmaWxlKSAobGluZSAw
OjApCiAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9zdGFydC1hbmQtc3RvcC1w
cm9maWxlci1tdWx0aXBsZS10aW1lcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9wcm9maWxlci9zdGFydC1hbmQtc3RvcC1wcm9maWxlci1tdWx0aXBsZS10aW1l
cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4Njk1NCkKKysrIExheW91dFRlc3RzL2Zhc3QvcHJv
ZmlsZXIvc3RhcnQtYW5kLXN0b3AtcHJvZmlsZXItbXVsdGlwbGUtdGltZXMtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC00LDcwICs0LDcwIEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFs
bHksIGxvYWQgaXQgaW4gdGgKIAogUHJvZmlsZSB0aXRsZTogU3RhcnQgdGhlIHByb2ZpbGVyIHRo
ZSBmaXJzdCB0aW1lLgogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVz
dCBzdGFydC1hbmQtc3RvcC1wcm9maWxlci1tdWx0aXBsZS10aW1lcy5odG1sIChsaW5lIDExOjEp
Ci0gICAgICBhbm9ueW1vdXNGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAo
bGluZSAyOTozNykKLSAgICAgICAgIGluc2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNv
dXJjZXMuanMgKGxpbmUgMTc6MjYpCisgICBzdGFydFRlc3Qgc3RhcnQtYW5kLXN0b3AtcHJvZmls
ZXItbXVsdGlwbGUtdGltZXMuaHRtbCAobGluZSAxMDoxOSkKKyAgICAgIGFub255bW91c0Z1bmN0
aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI5OjM0KQorICAgICAgICAg
aW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyMykK
ICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAg
ICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICBhcHBl
bmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgZ2V0RWxlbWVudEJ5SWQg
KG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNv
dXJjZXMuanMgKGxpbmUgMToyMCkKKyAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVzdC1KUy1yZXNv
dXJjZXMuanMgKGxpbmUgMToxNykKIAogCiBQcm9maWxlIHRpdGxlOiBTdGFydCB0aGUgcHJvZmls
ZXIgdGhlIGZpcnN0IHRpbWUuCiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgc3Rh
cnRUZXN0IHN0YXJ0LWFuZC1zdG9wLXByb2ZpbGVyLW11bHRpcGxlLXRpbWVzLmh0bWwgKGxpbmUg
MTE6MSkKLSAgICAgIGFub255bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2Vz
LmpzIChsaW5lIDI5OjM3KQotICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpT
LXJlc291cmNlcy5qcyAobGluZSAxNzoyNikKKyAgIHN0YXJ0VGVzdCBzdGFydC1hbmQtc3RvcC1w
cm9maWxlci1tdWx0aXBsZS10aW1lcy5odG1sIChsaW5lIDEwOjE5KQorICAgICAgYW5vbnltb3Vz
RnVuY3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMjk6MzQpCisgICAg
ICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3
OjIzKQogICAgICAgICAgICAgY3JlYXRlRWxlbWVudCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAg
ICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAg
IGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICBnZXRFbGVtZW50
QnlJZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpT
LXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpT
LXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiBQcm9maWxlIHRpdGxlOiBTdGFydCB0aGUgcHJv
ZmlsZXIgdGhlIHNlY29uZCB0aW1lLgogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAg
IHN0YXJ0VGVzdCBzdGFydC1hbmQtc3RvcC1wcm9maWxlci1tdWx0aXBsZS10aW1lcy5odG1sIChs
aW5lIDExOjEpCi0gICAgICBhbm9ueW1vdXNGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpTLXJlc291
cmNlcy5qcyAobGluZSAyOTozNykKLSAgICAgICAgIGluc2VydE5ld1RleHQgcHJvZmlsZXItdGVz
dC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjYpCisgICBzdGFydFRlc3Qgc3RhcnQtYW5kLXN0
b3AtcHJvZmlsZXItbXVsdGlwbGUtdGltZXMuaHRtbCAobGluZSAxMDoxOSkKKyAgICAgIGFub255
bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI5OjM0KQor
ICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGlu
ZSAxNzoyMykKICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQgKG5vIGZpbGUpIChsaW5lIDA6MCkK
ICAgICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAg
ICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgZ2V0RWxl
bWVudEJ5SWQgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVz
dC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVz
dC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToxNykKIAogCiBQcm9maWxlIHRpdGxlOiBTdGFydCB0
aGUgcHJvZmlsZXIgdGhlIGZpcnN0IHRpbWUuCiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDow
KQotICAgc3RhcnRUZXN0IHN0YXJ0LWFuZC1zdG9wLXByb2ZpbGVyLW11bHRpcGxlLXRpbWVzLmh0
bWwgKGxpbmUgMTE6MSkKLSAgICAgIGFub255bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMt
cmVzb3VyY2VzLmpzIChsaW5lIDI5OjM3KQotICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxl
ci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNzoyNikKKyAgIHN0YXJ0VGVzdCBzdGFydC1h
bmQtc3RvcC1wcm9maWxlci1tdWx0aXBsZS10aW1lcy5odG1sIChsaW5lIDEwOjE5KQorICAgICAg
YW5vbnltb3VzRnVuY3Rpb24gcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMjk6
MzQpCisgICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpz
IChsaW5lIDE3OjIzKQogICAgICAgICAgICAgY3JlYXRlRWxlbWVudCAobm8gZmlsZSkgKGxpbmUg
MDowKQogICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAg
ICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICBn
ZXRFbGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgZW5kVGVzdCBwcm9maWxl
ci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjIwKQorICAgICAgZW5kVGVzdCBwcm9maWxl
ci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxOjE3KQogCiBQcm9maWxlIHRpdGxlOiBTdGFy
dCB0aGUgcHJvZmlsZXIgdGhlIHNlY29uZCB0aW1lLgogVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5l
IDA6MCkKLSAgIHN0YXJ0VGVzdCBzdGFydC1hbmQtc3RvcC1wcm9maWxlci1tdWx0aXBsZS10aW1l
cy5odG1sIChsaW5lIDExOjEpCi0gICAgICBhbm9ueW1vdXNGdW5jdGlvbiBwcm9maWxlci10ZXN0
LUpTLXJlc291cmNlcy5qcyAobGluZSAyOTozNykKLSAgICAgICAgIGluc2VydE5ld1RleHQgcHJv
ZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjYpCisgICBzdGFydFRlc3Qgc3Rh
cnQtYW5kLXN0b3AtcHJvZmlsZXItbXVsdGlwbGUtdGltZXMuaHRtbCAobGluZSAxMDoxOSkKKyAg
ICAgIGFub255bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5l
IDI5OjM0KQorICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNl
cy5qcyAobGluZSAxNzoyMykKICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQgKG5vIGZpbGUpIChs
aW5lIDA6MCkKICAgICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAwOjAp
CiAgICAgICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAg
ICAgZ2V0RWxlbWVudEJ5SWQgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAgIGVuZFRlc3QgcHJv
ZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAgICAgIGVuZFRlc3QgcHJv
ZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToxNykKIAogUHJvZmlsZSB0aXRsZTog
U3RhcnQgdGhlIHByb2ZpbGVyIHRoZSB0aGlyZCB0aW1lLgogVGhyZWFkXzEgKG5vIGZpbGUpIChs
aW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCBzdGFydC1hbmQtc3RvcC1wcm9maWxlci1tdWx0aXBsZS10
aW1lcy5odG1sIChsaW5lIDExOjEpCi0gICAgICBhbm9ueW1vdXNGdW5jdGlvbiBwcm9maWxlci10
ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAyOTozNykKLSAgICAgICAgIGluc2VydE5ld1RleHQg
cHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjYpCisgICBzdGFydFRlc3Qg
c3RhcnQtYW5kLXN0b3AtcHJvZmlsZXItbXVsdGlwbGUtdGltZXMuaHRtbCAobGluZSAxMDoxOSkK
KyAgICAgIGFub255bW91c0Z1bmN0aW9uIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChs
aW5lIDI5OjM0KQorICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291
cmNlcy5qcyAobGluZSAxNzoyMykKICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQgKG5vIGZpbGUp
IChsaW5lIDA6MCkKICAgICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAw
OjApCiAgICAgICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAg
ICAgICAgZ2V0RWxlbWVudEJ5SWQgKG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgICAgIGVuZFRlc3Qg
cHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAgICAgIGVuZFRlc3Qg
cHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToxNykKIAogCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3N0YXJ0LWFuZC1zdG9wLXByb2ZpbGluZy1pbi10aGUtc2Ft
ZS1mdW5jdGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9w
cm9maWxlci9zdGFydC1hbmQtc3RvcC1wcm9maWxpbmctaW4tdGhlLXNhbWUtZnVuY3Rpb24tZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAxODY5NTQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVy
L3N0YXJ0LWFuZC1zdG9wLXByb2ZpbGluZy1pbi10aGUtc2FtZS1mdW5jdGlvbi1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsNyArNCw3IEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFs
bHksIGxvYWQgaXQgaW4gdGgKIAogUHJvZmlsZSB0aXRsZTogUHJvZmlsaW5nIEZyb20gQSBOZXN0
ZWQgTG9jYXRpb24KIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBzdGFydFRlc3Qg
c3RhcnQtYW5kLXN0b3AtcHJvZmlsaW5nLWluLXRoZS1zYW1lLWZ1bmN0aW9uLmh0bWwgKGxpbmUg
MTE6MSkKLSAgICAgIGZ1bmN0aW9uV2ljaFN0b3BzVGhlUHJvZmlsZXIgc3RhcnQtYW5kLXN0b3At
cHJvZmlsaW5nLWluLXRoZS1zYW1lLWZ1bmN0aW9uLmh0bWwgKGxpbmUgMTg6MSkKKyAgIHN0YXJ0
VGVzdCBzdGFydC1hbmQtc3RvcC1wcm9maWxpbmctaW4tdGhlLXNhbWUtZnVuY3Rpb24uaHRtbCAo
bGluZSAxMDoxOSkKKyAgICAgIGZ1bmN0aW9uV2ljaFN0b3BzVGhlUHJvZmlsZXIgc3RhcnQtYW5k
LXN0b3AtcHJvZmlsaW5nLWluLXRoZS1zYW1lLWZ1bmN0aW9uLmh0bWwgKGxpbmUgMTc6MzgpCiAK
IApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9zdG9wLXByb2ZpbGluZy1hZnRlci1z
ZXRUaW1lb3V0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3By
b2ZpbGVyL3N0b3AtcHJvZmlsaW5nLWFmdGVyLXNldFRpbWVvdXQtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAxODY5NTQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3N0b3AtcHJvZmlsaW5n
LWFmdGVyLXNldFRpbWVvdXQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDEwICs0
LDEwIEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxvYWQgaXQgaW4gdGgKIAogUHJvZmls
ZSB0aXRsZTogU3RvcCBwcm9maWxpbmcgZnJvbSBhIHRpbWVvdXQKIFRocmVhZF8xIChubyBmaWxl
KSAobGluZSAwOjApCi0gICBvbmxvYWQgc3RvcC1wcm9maWxpbmctYWZ0ZXItc2V0VGltZW91dC5o
dG1sIChsaW5lIDIxOjUyKQotICAgICAgc3RhcnRUZXN0IHN0b3AtcHJvZmlsaW5nLWFmdGVyLXNl
dFRpbWVvdXQuaHRtbCAobGluZSAxMzoxKQorICAgb25sb2FkIHN0b3AtcHJvZmlsaW5nLWFmdGVy
LXNldFRpbWVvdXQuaHRtbCAobGluZSAyMTo0NCkKKyAgICAgIHN0YXJ0VGVzdCBzdG9wLXByb2Zp
bGluZy1hZnRlci1zZXRUaW1lb3V0Lmh0bWwgKGxpbmUgMTI6MTkpCiAgICAgICAgICBzZXRUaW1l
b3V0IChubyBmaWxlKSAobGluZSAwOjApCiAgICAocHJvZ3JhbSkgc3RvcC1wcm9maWxpbmctYWZ0
ZXItc2V0VGltZW91dC5odG1sIChsaW5lIDE6MSkKLSAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVz
dC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToyMCkKKyAgICAgIGVuZFRlc3QgcHJvZmlsZXItdGVz
dC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMToxNykKIAogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L3Byb2ZpbGVyL3N0b3AtdGhlbi1mdW5jdGlvbi1jYWxsLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3N0b3AtdGhlbi1mdW5jdGlvbi1jYWxsLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2OTU0KQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxl
ci9zdG9wLXRoZW4tZnVuY3Rpb24tY2FsbC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTUsNiArNSw2IEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxvYWQgaXQgaW4gdGgKIFBy
b2ZpbGUgdGl0bGU6IFRlc3QKIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCiAgICAocHJv
Z3JhbSkgKG5vIGZpbGUpIChsaW5lIDE6MTYpCi0gICAgICB0ZXN0IHN0b3AtdGhlbi1mdW5jdGlv
bi1jYWxsLmh0bWwgKGxpbmUgMTE6MjApCisgICAgICB0ZXN0IHN0b3AtdGhlbi1mdW5jdGlvbi1j
YWxsLmh0bWwgKGxpbmUgMTE6MTQpCiAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxl
ci90d28tZXhlY3V0aW9uLWNvbnRleHRzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3R3by1leGVjdXRpb24tY29udGV4dHMtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAxODY5NTQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3R3by1leGVj
dXRpb24tY29udGV4dHMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDggKzQsOCBA
QCBUbyBydW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBsb2FkIGl0IGluIHRoCiAKIFByb2ZpbGUgdGl0
bGU6IFR3byBFeGVjdXRpb24gQ29udGV4dHMKIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjAp
Ci0gICBzdGFydFRlc3QgdHdvLWV4ZWN1dGlvbi1jb250ZXh0cy5odG1sIChsaW5lIDExOjEpCi0g
ICAgICBpbnRlcm1lZGlhcnlGdW5jdGlvbiB0d28tZXhlY3V0aW9uLWNvbnRleHRzLmh0bWwgKGxp
bmUgMTg6MSkKLSAgICAgICAgIHRlc3RFbmQgdHdvLWV4ZWN1dGlvbi1jb250ZXh0cy5odG1sIChs
aW5lIDMzOjIwKQorICAgc3RhcnRUZXN0IHR3by1leGVjdXRpb24tY29udGV4dHMuaHRtbCAobGlu
ZSAxMDoxOSkKKyAgICAgIGludGVybWVkaWFyeUZ1bmN0aW9uIHR3by1leGVjdXRpb24tY29udGV4
dHMuaHRtbCAobGluZSAxNzozMCkKKyAgICAgICAgIHRlc3RFbmQgdHdvLWV4ZWN1dGlvbi1jb250
ZXh0cy5odG1sIChsaW5lIDMzOjE3KQogCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcHJvZmls
ZXIvdXNlci1kZWZpbmVkLWZ1bmN0aW9uLWNhbGxzLWJ1aWx0LWluLWZ1bmN0aW9ucy1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci91c2VyLWRlZmlu
ZWQtZnVuY3Rpb24tY2FsbHMtYnVpbHQtaW4tZnVuY3Rpb25zLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMTg2OTU0KQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci91c2VyLWRlZmluZWQtZnVu
Y3Rpb24tY2FsbHMtYnVpbHQtaW4tZnVuY3Rpb25zLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtNiwxMSArNiwxMSBAQCBUaGlzIGlzIGluc2VydGVkIFRleHQKIAogUHJvZmlsZSB0aXRs
ZTogVXNlciBkZWZpbmVkIGZ1bmN0aW9uIGNhbGxlcyBidWlsdC1pbiBmdW5jdGlvbnMKIFRocmVh
ZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBzdGFydFRlc3QgdXNlci1kZWZpbmVkLWZ1bmN0
aW9uLWNhbGxzLWJ1aWx0LWluLWZ1bmN0aW9ucy5odG1sIChsaW5lIDExOjEpCisgICBzdGFydFRl
c3QgdXNlci1kZWZpbmVkLWZ1bmN0aW9uLWNhbGxzLWJ1aWx0LWluLWZ1bmN0aW9ucy5odG1sIChs
aW5lIDEwOjE5KQogICAgICAgY3JlYXRlRWxlbWVudCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAg
ICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgIGFwcGVuZENoaWxk
IChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmlsZSkgKGxp
bmUgMDowKQotICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGlu
ZSAxOjIwKQorICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGlu
ZSAxOjE3KQogCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvd2luZG93LWRvdC1l
dmFsLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVy
L3dpbmRvdy1kb3QtZXZhbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4Njk1NCkKKysrIExheW91
dFRlc3RzL2Zhc3QvcHJvZmlsZXIvd2luZG93LWRvdC1ldmFsLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtNCwxMyArNCwxMyBAQCBUbyBydW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBsb2Fk
IGl0IGluIHRoCiAKIFByb2ZpbGUgdGl0bGU6IENhbGwgd2luZG93LmV2YWwoKQogVGhyZWFkXzEg
KG5vIGZpbGUpIChsaW5lIDA6MCkKLSAgIHN0YXJ0VGVzdCB3aW5kb3ctZG90LWV2YWwuaHRtbCAo
bGluZSAxMToxKQotICAgICAgZXZhbEZ1bmN0aW9uIChubyBmaWxlKSAobGluZSAxOjI1KQotICAg
ICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAx
NzoyNikKKyAgIHN0YXJ0VGVzdCB3aW5kb3ctZG90LWV2YWwuaHRtbCAobGluZSAxMDoxOSkKKyAg
ICAgIGV2YWxGdW5jdGlvbiAobm8gZmlsZSkgKGxpbmUgMToyMikKKyAgICAgICAgIGluc2VydE5l
d1RleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjMpCiAgICAgICAg
ICAgICBjcmVhdGVFbGVtZW50IChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICAgICAgICBjcmVh
dGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgICAgICAgYXBwZW5kQ2hpbGQg
KG5vIGZpbGUpIChsaW5lIDA6MCkKICAgICAgICAgICAgIGdldEVsZW1lbnRCeUlkIChubyBmaWxl
KSAobGluZSAwOjApCi0gICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpz
IChsaW5lIDE6MjApCisgICAgICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpz
IChsaW5lIDE6MTcpCiAKIApJbmRleDogTGF5b3V0VGVzdHMvanMvZG9tL3NjcmlwdC1zdGFydC1l
bmQtbG9jYXRpb25zLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9k
b20vc2NyaXB0LXN0YXJ0LWVuZC1sb2NhdGlvbnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODY5
NTQpCisrKyBMYXlvdXRUZXN0cy9qcy9kb20vc2NyaXB0LXN0YXJ0LWVuZC1sb2NhdGlvbnMtZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01LDI3MyArNSwyNzMgQEAgcHJvZ3JhbSB7IDIz
OjkgLSAyMzo1MCB9CiBwcm9ncmFtIHsgMjM6NjggLSAyMzoxMDkgfQogcHJvZ3JhbSB7IDI1Ojkg
LSAyNjoxIH0KIHByb2dyYW0geyAyNzoxMyAtIDI4OjEgfQotZnVuY3Rpb24gImhmMSIgeyAzMDoy
NCAtIDMwOjM4IH0KLWZ1bmN0aW9uICJoZjIiIHsgMzE6MjggLSAzMTo0MiB9Ci1mdW5jdGlvbiAi
aGYzIiB7IDMyOjMyIC0gMzI6NDYgfQotZnVuY3Rpb24gImhmNCIgeyAzNDoyNCAtIDM2OjkgfQot
ZnVuY3Rpb24gImhmNSIgeyAzNzoyOCAtIDM5OjkgfQotZnVuY3Rpb24gImhmNiIgeyA0MDozMiAt
IDQyOjkgfQotZnVuY3Rpb24gImhmNyIgeyA0NToxNiAtIDQ3OjUgfQotZnVuY3Rpb24gImhmOCIg
eyA0OTozNSAtIDQ5OjQ1IH0KLWZ1bmN0aW9uICJoZjkiIHsgNDk6OTcgLSA0OToxMDcgfQorZnVu
Y3Rpb24gImhmMSIgeyAzMDoyMSAtIDMwOjM4IH0KK2Z1bmN0aW9uICJoZjIiIHsgMzE6MjUgLSAz
MTo0MiB9CitmdW5jdGlvbiAiaGYzIiB7IDMyOjI5IC0gMzI6NDYgfQorZnVuY3Rpb24gImhmNCIg
eyAzNDoyMSAtIDM2OjkgfQorZnVuY3Rpb24gImhmNSIgeyAzNzoyNSAtIDM5OjkgfQorZnVuY3Rp
b24gImhmNiIgeyA0MDoyOSAtIDQyOjkgfQorZnVuY3Rpb24gImhmNyIgeyA0NToxMyAtIDQ3OjUg
fQorZnVuY3Rpb24gImhmOCIgeyA0OTozMiAtIDQ5OjQ1IH0KK2Z1bmN0aW9uICJoZjkiIHsgNDk6
OTQgLSA0OToxMDcgfQogCiBwcm9ncmFtIHsgMToxIC0gNDc0OjEgfQogCiAgIE9uIGZpcnN0IGxp
bmU6Ci1mdW5jdGlvbiAiZjAiIHsgMToxMTUgLSAxOjI2NiB9Ci1mdW5jdGlvbiAiZjBhIiB7IDE6
MTQyIC0gMToyNTcgfQotZnVuY3Rpb24gImYwYiIgeyAxOjE3MCAtIDE6MjQ4IH0KLWV2YWwgeyAx
OjEgLSAxOjU2IH0KLWZ1bmN0aW9uICJ4MCIgeyAxOjI5OCAtIDE6NDc2IH0KLWZ1bmN0aW9uICJ4
MGEiIHsgMTozMzAgLSAxOjQ2NiB9Ci1mdW5jdGlvbiAieDBiIiB7IDE6MzY0IC0gMTo0NTYgfQor
ZnVuY3Rpb24gImYwIiB7IDE6MTEyIC0gMToyNjYgfQorZnVuY3Rpb24gImYwYSIgeyAxOjEzOSAt
IDE6MjU3IH0KK2Z1bmN0aW9uICJmMGIiIHsgMToxNjcgLSAxOjI0OCB9CitldmFsIHsgMToxIC0g
MTo1NiB9CitmdW5jdGlvbiAieDAiIHsgMToyOTIgLSAxOjQ3NiB9CitmdW5jdGlvbiAieDBhIiB7
IDE6MzI3IC0gMTo0NjYgfQorZnVuY3Rpb24gIngwYiIgeyAxOjM2MSAtIDE6NDU2IH0KIGV2YWwg
eyAxOjEgLSAxOjU2IH0KIAogICBGdW5jdGlvbnMgRGVjbGFyYXRpb25zIGluIGEgZnVuY3Rpb246
Ci1mdW5jdGlvbiAiZjEiIHsgOToyMiAtIDk6MTEzIH0KK2Z1bmN0aW9uICJmMSIgeyA5OjE2IC0g
OToxMTMgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gImYyIiB7IDEyOjIyIC0gMTY6
NSB9Ci1mdW5jdGlvbiAiZjJhIiB7IDE0OjI0IC0gMTQ6MTE2IH0KK2Z1bmN0aW9uICJmMiIgeyAx
MjoxNiAtIDE2OjUgfQorZnVuY3Rpb24gImYyYSIgeyAxNDoyMSAtIDE0OjExNiB9CiBldmFsIHsg
MToxIC0gMTo1NiB9Ci1mdW5jdGlvbiAiZjMiIHsgMTk6MjIgLSAzMTo1IH0KLWZ1bmN0aW9uICJm
M2EiIHsgMjE6MjQgLSAyOTo5IH0KLWZ1bmN0aW9uICJmM2IiIHsgMjM6MjggLSAyNzoxMyB9Ci1l
dmFsIHsgMToxIC0gMTo1NiB9Ci1mdW5jdGlvbiAiZjQiIHsgMzQ6MjIgLSAzNDo3MSB9Ci1mdW5j
dGlvbiAiZjRhIiB7IDM0OjQ5IC0gMzQ6NTAgfQotZnVuY3Rpb24gImY1IiB7IDM2OjIyIC0gMzY6
MTUxIH0KLWZ1bmN0aW9uICJmNWEiIHsgMzY6NDkgLSAzNjoxNDEgfQotZXZhbCB7IDE6MSAtIDE6
NTYgfQotZnVuY3Rpb24gImY2IiB7IDM4OjIyIC0gMzg6MTg5IH0KLWZ1bmN0aW9uICJmNmEiIHsg
Mzg6NDkgLSAzODoxNzkgfQotZnVuY3Rpb24gImY2YiIgeyAzODo3NyAtIDM4OjE2OSB9CitmdW5j
dGlvbiAiZjMiIHsgMTk6MTYgLSAzMTo1IH0KK2Z1bmN0aW9uICJmM2EiIHsgMjE6MjEgLSAyOTo5
IH0KK2Z1bmN0aW9uICJmM2IiIHsgMjM6MjUgLSAyNzoxMyB9CitldmFsIHsgMToxIC0gMTo1NiB9
CitmdW5jdGlvbiAiZjQiIHsgMzQ6MTYgLSAzNDo3MSB9CitmdW5jdGlvbiAiZjRhIiB7IDM0OjQ2
IC0gMzQ6NTAgfQorZnVuY3Rpb24gImY1IiB7IDM2OjE2IC0gMzY6MTUxIH0KK2Z1bmN0aW9uICJm
NWEiIHsgMzY6NDYgLSAzNjoxNDEgfQorZXZhbCB7IDE6MSAtIDE6NTYgfQorZnVuY3Rpb24gImY2
IiB7IDM4OjE2IC0gMzg6MTg5IH0KK2Z1bmN0aW9uICJmNmEiIHsgMzg6NDYgLSAzODoxNzkgfQor
ZnVuY3Rpb24gImY2YiIgeyAzODo3NCAtIDM4OjE2OSB9CiBldmFsIHsgMToxIC0gMTo1NiB9CiAK
ICAgSW5kZW50ZWQgRnVuY3Rpb25zIERlY2xhcmF0aW9ucyBpbiBhIGZ1bmN0aW9uOgotZnVuY3Rp
b24gImZpMSIgeyA0MzoyNyAtIDQzOjExOSB9CitmdW5jdGlvbiAiZmkxIiB7IDQzOjIxIC0gNDM6
MTE5IH0KIGV2YWwgeyAxOjEgLSAxOjU2IH0KLWZ1bmN0aW9uICJmaTIiIHsgNDY6MjcgLSA1MDo5
IH0KLWZ1bmN0aW9uICJmaTJhIiB7IDQ4OjI5IC0gNDg6MTIyIH0KK2Z1bmN0aW9uICJmaTIiIHsg
NDY6MjEgLSA1MDo5IH0KK2Z1bmN0aW9uICJmaTJhIiB7IDQ4OjI2IC0gNDg6MTIyIH0KIGV2YWwg
eyAxOjEgLSAxOjU2IH0KLWZ1bmN0aW9uICJmaTMiIHsgNTM6MjcgLSA2NTo5IH0KLWZ1bmN0aW9u
ICJmaTNhIiB7IDU1OjI5IC0gNjM6MTMgfQotZnVuY3Rpb24gImZpM2IiIHsgNTc6MzMgLSA2MTox
NyB9Ci1ldmFsIHsgMToxIC0gMTo1NiB9Ci1mdW5jdGlvbiAiZmk0IiB7IDY4OjI3IC0gNjg6ODAg
fQotZnVuY3Rpb24gImZpNGEiIHsgNjg6NTYgLSA2ODo1NyB9Ci1mdW5jdGlvbiAiZmk1IiB7IDcw
OjI3IC0gNzA6MTYwIH0KLWZ1bmN0aW9uICJmaTVhIiB7IDcwOjU2IC0gNzA6MTQ5IH0KLWV2YWwg
eyAxOjEgLSAxOjU2IH0KLWZ1bmN0aW9uICJmaTYiIHsgNzI6MjcgLSA3MjoyMDEgfQotZnVuY3Rp
b24gImZpNmEiIHsgNzI6NTYgLSA3MjoxOTAgfQotZnVuY3Rpb24gImZpNmIiIHsgNzI6ODYgLSA3
MjoxNzkgfQorZnVuY3Rpb24gImZpMyIgeyA1MzoyMSAtIDY1OjkgfQorZnVuY3Rpb24gImZpM2Ei
IHsgNTU6MjYgLSA2MzoxMyB9CitmdW5jdGlvbiAiZmkzYiIgeyA1NzozMCAtIDYxOjE3IH0KK2V2
YWwgeyAxOjEgLSAxOjU2IH0KK2Z1bmN0aW9uICJmaTQiIHsgNjg6MjEgLSA2ODo4MCB9CitmdW5j
dGlvbiAiZmk0YSIgeyA2ODo1MyAtIDY4OjU3IH0KK2Z1bmN0aW9uICJmaTUiIHsgNzA6MjEgLSA3
MDoxNjAgfQorZnVuY3Rpb24gImZpNWEiIHsgNzA6NTMgLSA3MDoxNDkgfQorZXZhbCB7IDE6MSAt
IDE6NTYgfQorZnVuY3Rpb24gImZpNiIgeyA3MjoyMSAtIDcyOjIwMSB9CitmdW5jdGlvbiAiZmk2
YSIgeyA3Mjo1MyAtIDcyOjE5MCB9CitmdW5jdGlvbiAiZmk2YiIgeyA3Mjo4MyAtIDcyOjE3OSB9
CiBldmFsIHsgMToxIC0gMTo1NiB9CiAKICAgRnVuY3Rpb25zIEV4cHJlc3Npb25zIGluIGEgZnVu
Y3Rpb246Ci1mdW5jdGlvbiAieDEiIHsgNzc6MjggLSA3NzoxMTkgfQorZnVuY3Rpb24gIngxIiB7
IDc3OjIyIC0gNzc6MTE5IH0KIGV2YWwgeyAxOjEgLSAxOjU2IH0KLWZ1bmN0aW9uICJ4MiIgeyA4
MDoyOCAtIDg0OjUgfQotZnVuY3Rpb24gIngyYSIgeyA4MjozMCAtIDgyOjEyMiB9CitmdW5jdGlv
biAieDIiIHsgODA6MjIgLSA4NDo1IH0KK2Z1bmN0aW9uICJ4MmEiIHsgODI6MjcgLSA4MjoxMjIg
fQogZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gIngzIiB7IDg3OjI4IC0gOTk6NSB9Ci1m
dW5jdGlvbiAieDNhIiB7IDg5OjMwIC0gOTc6OSB9Ci1mdW5jdGlvbiAieDNiIiB7IDkxOjM0IC0g
OTU6MTMgfQotZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gIng0IiB7IDEwMjoyOCAtIDEw
Mjo4MyB9Ci1mdW5jdGlvbiAieDRhIiB7IDEwMjo2MSAtIDEwMjo2MiB9Ci1mdW5jdGlvbiAieDUi
IHsgMTA0OjI4IC0gMTA0OjE2MyB9Ci1mdW5jdGlvbiAieDVhIiB7IDEwNDo2MSAtIDEwNDoxNTMg
fQotZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gIng2IiB7IDEwNjoyOCAtIDEwNjoyMDcg
fQotZnVuY3Rpb24gIng2YSIgeyAxMDY6NjEgLSAxMDY6MTk3IH0KLWZ1bmN0aW9uICJ4NmIiIHsg
MTA2Ojk1IC0gMTA2OjE4NyB9CitmdW5jdGlvbiAieDMiIHsgODc6MjIgLSA5OTo1IH0KK2Z1bmN0
aW9uICJ4M2EiIHsgODk6MjcgLSA5Nzo5IH0KK2Z1bmN0aW9uICJ4M2IiIHsgOTE6MzEgLSA5NTox
MyB9CitldmFsIHsgMToxIC0gMTo1NiB9CitmdW5jdGlvbiAieDQiIHsgMTAyOjIyIC0gMTAyOjgz
IH0KK2Z1bmN0aW9uICJ4NGEiIHsgMTAyOjU4IC0gMTAyOjYyIH0KK2Z1bmN0aW9uICJ4NSIgeyAx
MDQ6MjIgLSAxMDQ6MTYzIH0KK2Z1bmN0aW9uICJ4NWEiIHsgMTA0OjU4IC0gMTA0OjE1MyB9Citl
dmFsIHsgMToxIC0gMTo1NiB9CitmdW5jdGlvbiAieDYiIHsgMTA2OjIyIC0gMTA2OjIwNyB9Citm
dW5jdGlvbiAieDZhIiB7IDEwNjo1OCAtIDEwNjoxOTcgfQorZnVuY3Rpb24gIng2YiIgeyAxMDY6
OTIgLSAxMDY6MTg3IH0KIGV2YWwgeyAxOjEgLSAxOjU2IH0KIAogICBJbmRlbnRlZCBGdW5jdGlv
bnMgRXhwcmVzc2lvbnMgaW4gYSBmdW5jdGlvbjoKLWZ1bmN0aW9uICJ4aTEiIHsgMTExOjMzIC0g
MTExOjEyNSB9CitmdW5jdGlvbiAieGkxIiB7IDExMToyNyAtIDExMToxMjUgfQogZXZhbCB7IDE6
MSAtIDE6NTYgfQotZnVuY3Rpb24gInhpMiIgeyAxMTQ6MzMgLSAxMTg6OSB9Ci1mdW5jdGlvbiAi
eGkyYSIgeyAxMTY6MzUgLSAxMTY6MTI4IH0KK2Z1bmN0aW9uICJ4aTIiIHsgMTE0OjI3IC0gMTE4
OjkgfQorZnVuY3Rpb24gInhpMmEiIHsgMTE2OjMyIC0gMTE2OjEyOCB9CiBldmFsIHsgMToxIC0g
MTo1NiB9Ci1mdW5jdGlvbiAieGkzIiB7IDEyMTozMyAtIDEzMzo5IH0KLWZ1bmN0aW9uICJ4aTNh
IiB7IDEyMzozNSAtIDEzMToxMyB9Ci1mdW5jdGlvbiAieGkzYiIgeyAxMjU6MzkgLSAxMjk6MTcg
fQotZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gInhpNCIgeyAxMzY6MzMgLSAxMzY6OTIg
fQotZnVuY3Rpb24gInhpNGEiIHsgMTM2OjY4IC0gMTM2OjY5IH0KLWZ1bmN0aW9uICJ4aTUiIHsg
MTM4OjMzIC0gMTM4OjE3MiB9Ci1mdW5jdGlvbiAieGk1YSIgeyAxMzg6NjggLSAxMzg6MTYxIH0K
LWV2YWwgeyAxOjEgLSAxOjU2IH0KLWZ1bmN0aW9uICJ4aTYiIHsgMTQwOjMzIC0gMTQwOjIxOSB9
Ci1mdW5jdGlvbiAieGk2YSIgeyAxNDA6NjggLSAxNDA6MjA4IH0KLWZ1bmN0aW9uICJ4aTZiIiB7
IDE0MDoxMDQgLSAxNDA6MTk3IH0KK2Z1bmN0aW9uICJ4aTMiIHsgMTIxOjI3IC0gMTMzOjkgfQor
ZnVuY3Rpb24gInhpM2EiIHsgMTIzOjMyIC0gMTMxOjEzIH0KK2Z1bmN0aW9uICJ4aTNiIiB7IDEy
NTozNiAtIDEyOToxNyB9CitldmFsIHsgMToxIC0gMTo1NiB9CitmdW5jdGlvbiAieGk0IiB7IDEz
NjoyNyAtIDEzNjo5MiB9CitmdW5jdGlvbiAieGk0YSIgeyAxMzY6NjUgLSAxMzY6NjkgfQorZnVu
Y3Rpb24gInhpNSIgeyAxMzg6MjcgLSAxMzg6MTcyIH0KK2Z1bmN0aW9uICJ4aTVhIiB7IDEzODo2
NSAtIDEzODoxNjEgfQorZXZhbCB7IDE6MSAtIDE6NTYgfQorZnVuY3Rpb24gInhpNiIgeyAxNDA6
MjcgLSAxNDA6MjE5IH0KK2Z1bmN0aW9uICJ4aTZhIiB7IDE0MDo2NSAtIDE0MDoyMDggfQorZnVu
Y3Rpb24gInhpNmIiIHsgMTQwOjEwMSAtIDE0MDoxOTcgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQog
CiAgIEFub255bW91cyBGdW5jdGlvbiBEZWNsYXJhdGlvbiBpbiBhIGZ1bmN0aW9uOgotZnVuY3Rp
b24gIiIgeyAxNDY6NTggLSAxNTE6NSB9CitmdW5jdGlvbiAiIiB7IDE0Njo1MiAtIDE1MTo1IH0K
IGV2YWwgeyAxOjEgLSAxOjU2IH0KIAogICBHbG9iYWwgZXZhbDoKIGV2YWwgeyAxOjEgLSAxOjU2
IH0KIAogICBHbG9iYWwgRnVuY3Rpb25zIERlY2xhcmF0aW9uczoKLWZ1bmN0aW9uICJnZjEiIHsg
MTYxOjE5IC0gMTYxOjExMSB9CitmdW5jdGlvbiAiZ2YxIiB7IDE2MToxMyAtIDE2MToxMTEgfQog
ZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gImdmMiIgeyAxNjQ6MTkgLSAxNjg6MSB9Ci1m
dW5jdGlvbiAiZ2YyYSIgeyAxNjY6MjEgLSAxNjY6MTE0IH0KK2Z1bmN0aW9uICJnZjIiIHsgMTY0
OjEzIC0gMTY4OjEgfQorZnVuY3Rpb24gImdmMmEiIHsgMTY2OjE4IC0gMTY2OjExNCB9CiBldmFs
IHsgMToxIC0gMTo1NiB9Ci1mdW5jdGlvbiAiZ2YzIiB7IDE3MToxOSAtIDE4MzoxIH0KLWZ1bmN0
aW9uICJnZjNhIiB7IDE3MzoyMSAtIDE4MTo1IH0KLWZ1bmN0aW9uICJnZjNiIiB7IDE3NToyNSAt
IDE3OTo5IH0KLWV2YWwgeyAxOjEgLSAxOjU2IH0KLWZ1bmN0aW9uICJnZjQiIHsgMTg2OjE5IC0g
MTg2OjcyIH0KLWZ1bmN0aW9uICJnZjRhIiB7IDE4Njo0OCAtIDE4Njo0OSB9Ci1mdW5jdGlvbiAi
Z2Y1IiB7IDE4ODoxOSAtIDE4ODoxNTIgfQotZnVuY3Rpb24gImdmNWEiIHsgMTg4OjQ4IC0gMTg4
OjE0MSB9Ci1ldmFsIHsgMToxIC0gMTo1NiB9Ci1mdW5jdGlvbiAiZ2Y2IiB7IDE5MDoxOSAtIDE5
MDoxOTMgfQotZnVuY3Rpb24gImdmNmEiIHsgMTkwOjQ4IC0gMTkwOjE4MiB9Ci1mdW5jdGlvbiAi
Z2Y2YiIgeyAxOTA6NzggLSAxOTA6MTcxIH0KK2Z1bmN0aW9uICJnZjMiIHsgMTcxOjEzIC0gMTgz
OjEgfQorZnVuY3Rpb24gImdmM2EiIHsgMTczOjE4IC0gMTgxOjUgfQorZnVuY3Rpb24gImdmM2Ii
IHsgMTc1OjIyIC0gMTc5OjkgfQorZXZhbCB7IDE6MSAtIDE6NTYgfQorZnVuY3Rpb24gImdmNCIg
eyAxODY6MTMgLSAxODY6NzIgfQorZnVuY3Rpb24gImdmNGEiIHsgMTg2OjQ1IC0gMTg2OjQ5IH0K
K2Z1bmN0aW9uICJnZjUiIHsgMTg4OjEzIC0gMTg4OjE1MiB9CitmdW5jdGlvbiAiZ2Y1YSIgeyAx
ODg6NDUgLSAxODg6MTQxIH0KK2V2YWwgeyAxOjEgLSAxOjU2IH0KK2Z1bmN0aW9uICJnZjYiIHsg
MTkwOjEzIC0gMTkwOjE5MyB9CitmdW5jdGlvbiAiZ2Y2YSIgeyAxOTA6NDUgLSAxOTA6MTgyIH0K
K2Z1bmN0aW9uICJnZjZiIiB7IDE5MDo3NSAtIDE5MDoxNzEgfQogZXZhbCB7IDE6MSAtIDE6NTYg
fQogCiAgIEluZGVudGVkIEdsb2JhbCBGdW5jdGlvbnMgRGVjbGFyYXRpb25zOgotZnVuY3Rpb24g
ImdmaTEiIHsgMTk1OjI0IC0gMTk1OjExNyB9CitmdW5jdGlvbiAiZ2ZpMSIgeyAxOTU6MTggLSAx
OTU6MTE3IH0KIGV2YWwgeyAxOjEgLSAxOjU2IH0KLWZ1bmN0aW9uICJnZmkyIiB7IDE5ODoyNCAt
IDIwMjo1IH0KLWZ1bmN0aW9uICJnZmkyYSIgeyAyMDA6MjYgLSAyMDA6MTIwIH0KK2Z1bmN0aW9u
ICJnZmkyIiB7IDE5ODoxOCAtIDIwMjo1IH0KK2Z1bmN0aW9uICJnZmkyYSIgeyAyMDA6MjMgLSAy
MDA6MTIwIH0KIGV2YWwgeyAxOjEgLSAxOjU2IH0KLWZ1bmN0aW9uICJnZmkzIiB7IDIwNToyNCAt
IDIxNzo1IH0KLWZ1bmN0aW9uICJnZmkzYSIgeyAyMDc6MjYgLSAyMTU6OSB9Ci1mdW5jdGlvbiAi
Z2ZpM2IiIHsgMjA5OjMwIC0gMjEzOjEzIH0KLWV2YWwgeyAxOjEgLSAxOjU2IH0KLWZ1bmN0aW9u
ICJnZmk0IiB7IDIyMDoyNCAtIDIyMDo4MSB9Ci1mdW5jdGlvbiAiZ2ZpNGEiIHsgMjIwOjU1IC0g
MjIwOjU2IH0KLWZ1bmN0aW9uICJnZmk1IiB7IDIyMjoyNCAtIDIyMjoxNjEgfQotZnVuY3Rpb24g
ImdmaTVhIiB7IDIyMjo1NSAtIDIyMjoxNDkgfQotZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rp
b24gImdmaTYiIHsgMjI0OjI0IC0gMjI0OjIwNSB9Ci1mdW5jdGlvbiAiZ2ZpNmEiIHsgMjI0OjU1
IC0gMjI0OjE5MyB9Ci1mdW5jdGlvbiAiZ2ZpNmIiIHsgMjI0Ojg3IC0gMjI0OjE4MSB9CitmdW5j
dGlvbiAiZ2ZpMyIgeyAyMDU6MTggLSAyMTc6NSB9CitmdW5jdGlvbiAiZ2ZpM2EiIHsgMjA3OjIz
IC0gMjE1OjkgfQorZnVuY3Rpb24gImdmaTNiIiB7IDIwOToyNyAtIDIxMzoxMyB9CitldmFsIHsg
MToxIC0gMTo1NiB9CitmdW5jdGlvbiAiZ2ZpNCIgeyAyMjA6MTggLSAyMjA6ODEgfQorZnVuY3Rp
b24gImdmaTRhIiB7IDIyMDo1MiAtIDIyMDo1NiB9CitmdW5jdGlvbiAiZ2ZpNSIgeyAyMjI6MTgg
LSAyMjI6MTYxIH0KK2Z1bmN0aW9uICJnZmk1YSIgeyAyMjI6NTIgLSAyMjI6MTQ5IH0KK2V2YWwg
eyAxOjEgLSAxOjU2IH0KK2Z1bmN0aW9uICJnZmk2IiB7IDIyNDoxOCAtIDIyNDoyMDUgfQorZnVu
Y3Rpb24gImdmaTZhIiB7IDIyNDo1MiAtIDIyNDoxOTMgfQorZnVuY3Rpb24gImdmaTZiIiB7IDIy
NDo4NCAtIDIyNDoxODEgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQogCiAgIEdsb2JhbCBGdW5jdGlv
bnMgRXhwcmVzc2lvbnM6Ci1mdW5jdGlvbiAiZ3gxIiB7IDIyOToyNSAtIDIyOToxMTcgfQorZnVu
Y3Rpb24gImd4MSIgeyAyMjk6MTkgLSAyMjk6MTE3IH0KIGV2YWwgeyAxOjEgLSAxOjU2IH0KLWZ1
bmN0aW9uICJneDIiIHsgMjMyOjI1IC0gMjM2OjEgfQotZnVuY3Rpb24gImd4MmEiIHsgMjM0OjI3
IC0gMjM0OjEyMCB9CitmdW5jdGlvbiAiZ3gyIiB7IDIzMjoxOSAtIDIzNjoxIH0KK2Z1bmN0aW9u
ICJneDJhIiB7IDIzNDoyNCAtIDIzNDoxMjAgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rp
b24gImd4MyIgeyAyMzk6MjUgLSAyNTE6MSB9Ci1mdW5jdGlvbiAiZ3gzYSIgeyAyNDE6MjcgLSAy
NDk6NSB9Ci1mdW5jdGlvbiAiZ3gzYiIgeyAyNDM6MzEgLSAyNDc6OSB9Ci1ldmFsIHsgMToxIC0g
MTo1NiB9Ci1mdW5jdGlvbiAiZ3g0IiB7IDI1NDoyNSAtIDI1NDo4NCB9Ci1mdW5jdGlvbiAiZ3g0
YSIgeyAyNTQ6NjAgLSAyNTQ6NjEgfQotZnVuY3Rpb24gImd4NSIgeyAyNTY6MjUgLSAyNTY6MTY0
IH0KLWZ1bmN0aW9uICJneDVhIiB7IDI1Njo2MCAtIDI1NjoxNTMgfQotZXZhbCB7IDE6MSAtIDE6
NTYgfQotZnVuY3Rpb24gImd4NiIgeyAyNTg6MjUgLSAyNTg6MjExIH0KLWZ1bmN0aW9uICJneDZh
IiB7IDI1ODo2MCAtIDI1ODoyMDAgfQotZnVuY3Rpb24gImd4NmIiIHsgMjU4Ojk2IC0gMjU4OjE4
OSB9CitmdW5jdGlvbiAiZ3gzIiB7IDIzOToxOSAtIDI1MToxIH0KK2Z1bmN0aW9uICJneDNhIiB7
IDI0MToyNCAtIDI0OTo1IH0KK2Z1bmN0aW9uICJneDNiIiB7IDI0MzoyOCAtIDI0Nzo5IH0KK2V2
YWwgeyAxOjEgLSAxOjU2IH0KK2Z1bmN0aW9uICJneDQiIHsgMjU0OjE5IC0gMjU0Ojg0IH0KK2Z1
bmN0aW9uICJneDRhIiB7IDI1NDo1NyAtIDI1NDo2MSB9CitmdW5jdGlvbiAiZ3g1IiB7IDI1Njox
OSAtIDI1NjoxNjQgfQorZnVuY3Rpb24gImd4NWEiIHsgMjU2OjU3IC0gMjU2OjE1MyB9CitldmFs
IHsgMToxIC0gMTo1NiB9CitmdW5jdGlvbiAiZ3g2IiB7IDI1ODoxOSAtIDI1ODoyMTEgfQorZnVu
Y3Rpb24gImd4NmEiIHsgMjU4OjU3IC0gMjU4OjIwMCB9CitmdW5jdGlvbiAiZ3g2YiIgeyAyNTg6
OTMgLSAyNTg6MTg5IH0KIGV2YWwgeyAxOjEgLSAxOjU2IH0KIAogICBJbmRlbnRlZCBGdW5jdGlv
bnMgRGVjbGFyYXRpb25zOgotZnVuY3Rpb24gImd4aTEiIHsgMjYzOjMwIC0gMjYzOjEyMyB9Citm
dW5jdGlvbiAiZ3hpMSIgeyAyNjM6MjQgLSAyNjM6MTIzIH0KIGV2YWwgeyAxOjEgLSAxOjU2IH0K
LWZ1bmN0aW9uICJneGkyIiB7IDI2NjozMCAtIDI3MDo1IH0KLWZ1bmN0aW9uICJneGkyYSIgeyAy
Njg6MzIgLSAyNjg6MTI2IH0KK2Z1bmN0aW9uICJneGkyIiB7IDI2NjoyNCAtIDI3MDo1IH0KK2Z1
bmN0aW9uICJneGkyYSIgeyAyNjg6MjkgLSAyNjg6MTI2IH0KIGV2YWwgeyAxOjEgLSAxOjU2IH0K
LWZ1bmN0aW9uICJneGkzIiB7IDI3MzozMCAtIDI4NTo1IH0KLWZ1bmN0aW9uICJneGkzYSIgeyAy
NzU6MzIgLSAyODM6OSB9Ci1mdW5jdGlvbiAiZ3hpM2IiIHsgMjc3OjM2IC0gMjgxOjEzIH0KLWV2
YWwgeyAxOjEgLSAxOjU2IH0KLWZ1bmN0aW9uICJneGk0IiB7IDI4ODozMCAtIDI4ODo5MyB9Ci1m
dW5jdGlvbiAiZ3hpNGEiIHsgMjg4OjY3IC0gMjg4OjY4IH0KLWZ1bmN0aW9uICJneGk1IiB7IDI5
MDozMCAtIDI5MDoxNzMgfQotZnVuY3Rpb24gImd4aTVhIiB7IDI5MDo2NyAtIDI5MDoxNjEgfQot
ZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gImd4aTYiIHsgMjkyOjMwIC0gMjkyOjIyMyB9
Ci1mdW5jdGlvbiAiZ3hpNmEiIHsgMjkyOjY3IC0gMjkyOjIxMSB9Ci1mdW5jdGlvbiAiZ3hpNmIi
IHsgMjkyOjEwNSAtIDI5MjoxOTkgfQorZnVuY3Rpb24gImd4aTMiIHsgMjczOjI0IC0gMjg1OjUg
fQorZnVuY3Rpb24gImd4aTNhIiB7IDI3NToyOSAtIDI4Mzo5IH0KK2Z1bmN0aW9uICJneGkzYiIg
eyAyNzc6MzMgLSAyODE6MTMgfQorZXZhbCB7IDE6MSAtIDE6NTYgfQorZnVuY3Rpb24gImd4aTQi
IHsgMjg4OjI0IC0gMjg4OjkzIH0KK2Z1bmN0aW9uICJneGk0YSIgeyAyODg6NjQgLSAyODg6Njgg
fQorZnVuY3Rpb24gImd4aTUiIHsgMjkwOjI0IC0gMjkwOjE3MyB9CitmdW5jdGlvbiAiZ3hpNWEi
IHsgMjkwOjY0IC0gMjkwOjE2MSB9CitldmFsIHsgMToxIC0gMTo1NiB9CitmdW5jdGlvbiAiZ3hp
NiIgeyAyOTI6MjQgLSAyOTI6MjIzIH0KK2Z1bmN0aW9uICJneGk2YSIgeyAyOTI6NjQgLSAyOTI6
MjExIH0KK2Z1bmN0aW9uICJneGk2YiIgeyAyOTI6MTAyIC0gMjkyOjE5OSB9CiBldmFsIHsgMTox
IC0gMTo1NiB9CiAKICAgQW5vbnltb3VzIEdsb2JhbCBGdW5jdGlvbiBEZWNsYXJhdGlvbnM6Ci1m
dW5jdGlvbiAiIiB7IDI5OTo1NiAtIDMwNDoxIH0KK2Z1bmN0aW9uICIiIHsgMjk5OjUwIC0gMzA0
OjEgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQogCiAgIEZ1bmN0aW9uIERlY2xhcmF0aW9ucyBpbiBh
biBldmFsOgogZXZhbCB7IDE6MSAtIDE2OjcgfQotZnVuY3Rpb24gImVmMSIgeyAzOjIwIC0gMTQ6
NSB9Ci1mdW5jdGlvbiAiZWYxYSIgeyA1OjI1IC0gMTI6OSB9Ci1mdW5jdGlvbiAiZWYxYiIgeyA3
OjI5IC0gMTA6MTMgfQorZnVuY3Rpb24gImVmMSIgeyAzOjE3IC0gMTQ6NSB9CitmdW5jdGlvbiAi
ZWYxYSIgeyA1OjIyIC0gMTI6OSB9CitmdW5jdGlvbiAiZWYxYiIgeyA3OjI2IC0gMTA6MTMgfQog
ZXZhbCB7IDE6MSAtIDE6NTYgfQogZXZhbCB7IDE6MSAtIDE6MjI1IH0KLWZ1bmN0aW9uICJlZjIi
IHsgMTo1OSAtIDE6MjE3IH0KLWZ1bmN0aW9uICJlZjJhIiB7IDE6ODggLSAxOjIwNyB9Ci1mdW5j
dGlvbiAiZWYyYiIgeyAxOjExOCAtIDE6MTk3IH0KK2Z1bmN0aW9uICJlZjIiIHsgMTo1NiAtIDE6
MjE3IH0KK2Z1bmN0aW9uICJlZjJhIiB7IDE6ODUgLSAxOjIwNyB9CitmdW5jdGlvbiAiZWYyYiIg
eyAxOjExNSAtIDE6MTk3IH0KIGV2YWwgeyAxOjEgLSAxOjU2IH0KIGV2YWwgeyAxOjEgLSAxNzo4
IH0KLWZ1bmN0aW9uICJlZmkxIiB7IDQ6MjEgLSAxNTo1IH0KLWZ1bmN0aW9uICJlZmkxYSIgeyA2
OjI2IC0gMTM6OSB9Ci1mdW5jdGlvbiAiZWZpMWIiIHsgODozMCAtIDExOjEzIH0KK2Z1bmN0aW9u
ICJlZmkxIiB7IDQ6MTggLSAxNTo1IH0KK2Z1bmN0aW9uICJlZmkxYSIgeyA2OjIzIC0gMTM6OSB9
CitmdW5jdGlvbiAiZWZpMWIiIHsgODoyNyAtIDExOjEzIH0KIGV2YWwgeyAxOjEgLSAxOjU2IH0K
IGV2YWwgeyAxOjEgLSAxOjIzNCB9Ci1mdW5jdGlvbiAiZWZpMiIgeyAxOjYwIC0gMToyMjUgfQot
ZnVuY3Rpb24gImVmaTJhIiB7IDE6OTEgLSAxOjIxNCB9Ci1mdW5jdGlvbiAiZWZpMmIiIHsgMTox
MjMgLSAxOjIwMyB9CitmdW5jdGlvbiAiZWZpMiIgeyAxOjU3IC0gMToyMjUgfQorZnVuY3Rpb24g
ImVmaTJhIiB7IDE6ODggLSAxOjIxNCB9CitmdW5jdGlvbiAiZWZpMmIiIHsgMToxMjAgLSAxOjIw
MyB9CiBldmFsIHsgMToxIC0gMTo1NiB9CiAKICAgRnVuY3Rpb24gRXhwcmVzc2lvbnMgaW4gYW4g
ZXZhbDoKIGV2YWwgeyAxOjEgLSAxNjo3IH0KLWZ1bmN0aW9uICJleDEiIHsgMzoyNiAtIDE0OjUg
fQotZnVuY3Rpb24gImV4MWEiIHsgNTozMSAtIDEyOjkgfQotZnVuY3Rpb24gImV4MWIiIHsgNzoz
NSAtIDEwOjEzIH0KK2Z1bmN0aW9uICJleDEiIHsgMzoyMyAtIDE0OjUgfQorZnVuY3Rpb24gImV4
MWEiIHsgNToyOCAtIDEyOjkgfQorZnVuY3Rpb24gImV4MWIiIHsgNzozMiAtIDEwOjEzIH0KIGV2
YWwgeyAxOjEgLSAxOjU2IH0KIGV2YWwgeyAxOjEgLSAxOjI0NiB9Ci1mdW5jdGlvbiAiZXgyIiB7
IDE6NjUgLSAxOjIzNyB9Ci1mdW5jdGlvbiAiZXgyYSIgeyAxOjEwMCAtIDE6MjI2IH0KLWZ1bmN0
aW9uICJleDJiIiB7IDE6MTM2IC0gMToyMTUgfQorZnVuY3Rpb24gImV4MiIgeyAxOjYyIC0gMToy
MzcgfQorZnVuY3Rpb24gImV4MmEiIHsgMTo5NyAtIDE6MjI2IH0KK2Z1bmN0aW9uICJleDJiIiB7
IDE6MTMzIC0gMToyMTUgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQogZXZhbCB7IDE6MSAtIDE3Ojgg
fQotZnVuY3Rpb24gImV4aTEiIHsgNDoyNyAtIDE1OjUgfQotZnVuY3Rpb24gImV4aTFhIiB7IDY6
MzIgLSAxMzo5IH0KLWZ1bmN0aW9uICJleGkxYiIgeyA4OjM2IC0gMTE6MTMgfQorZnVuY3Rpb24g
ImV4aTEiIHsgNDoyNCAtIDE1OjUgfQorZnVuY3Rpb24gImV4aTFhIiB7IDY6MjkgLSAxMzo5IH0K
K2Z1bmN0aW9uICJleGkxYiIgeyA4OjMzIC0gMTE6MTMgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQog
ZXZhbCB7IDE6MSAtIDE6MjU1IH0KLWZ1bmN0aW9uICJleGkyIiB7IDE6NjYgLSAxOjI0NSB9Ci1m
dW5jdGlvbiAiZXhpMmEiIHsgMToxMDMgLSAxOjIzMyB9Ci1mdW5jdGlvbiAiZXhpMmIiIHsgMTox
NDEgLSAxOjIyMSB9CitmdW5jdGlvbiAiZXhpMiIgeyAxOjYzIC0gMToyNDUgfQorZnVuY3Rpb24g
ImV4aTJhIiB7IDE6MTAwIC0gMToyMzMgfQorZnVuY3Rpb24gImV4aTJiIiB7IDE6MTM4IC0gMToy
MjEgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQogCiAgIG5ldyBGdW5jdGlvbiBPYmplY3Q6Ci1mdW5j
dGlvbiAiYW5vbnltb3VzIiB7IDE6MjcgLSAyOjIyOCB9Ci1mdW5jdGlvbiAibmYxYSIgeyAyOjYw
IC0gMjoyMTkgfQotZnVuY3Rpb24gIm5mMWIiIHsgMjo5MCAtIDI6MjA5IH0KLWZ1bmN0aW9uICJu
ZjFjIiB7IDI6MTIwIC0gMjoxOTkgfQotZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gImFu
b255bW91cyIgeyAxOjI3IC0gMTg6OCB9Ci1mdW5jdGlvbiAibmYyYSIgeyA1OjIxIC0gMTY6NSB9
Ci1mdW5jdGlvbiAibmYyYiIgeyA3OjI1IC0gMTQ6OSB9Ci1mdW5jdGlvbiAibmYyYyIgeyA5OjI5
IC0gMTI6MTMgfQotZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gImFub255bW91cyIgeyAx
OjI3IC0gMjoyMjggfQotZnVuY3Rpb24gIm5mMWEiIHsgMjo2MCAtIDI6MjE5IH0KLWZ1bmN0aW9u
ICJuZjFiIiB7IDI6OTAgLSAyOjIwOSB9Ci1mdW5jdGlvbiAibmYxYyIgeyAyOjEyMCAtIDI6MTk5
IH0KLWV2YWwgeyAxOjEgLSAxOjU2IH0KLWZ1bmN0aW9uICJhbm9ueW1vdXMiIHsgMToyNyAtIDI6
MjM3IH0KLWZ1bmN0aW9uICJuZmkxYSIgeyAyOjYxIC0gMjoyMjcgfQotZnVuY3Rpb24gIm5maTFi
IiB7IDI6OTMgLSAyOjIxNiB9Ci1mdW5jdGlvbiAibmZpMWMiIHsgMjoxMjUgLSAyOjIwNSB9Ci1l
dmFsIHsgMToxIC0gMTo1NiB9Ci1mdW5jdGlvbiAiYW5vbnltb3VzIiB7IDE6MjcgLSAxODo4IH0K
LWZ1bmN0aW9uICJuZjJhIiB7IDU6MjEgLSAxNjo1IH0KLWZ1bmN0aW9uICJuZjJiIiB7IDc6MjUg
LSAxNDo5IH0KLWZ1bmN0aW9uICJuZjJjIiB7IDk6MjkgLSAxMjoxMyB9Ci1ldmFsIHsgMToxIC0g
MTo1NiB9Ci1mdW5jdGlvbiAiYW5vbnltb3VzIiB7IDE6MjcgLSAxODo5IH0KLWZ1bmN0aW9uICJu
ZmkyYSIgeyA1OjIyIC0gMTY6NSB9Ci1mdW5jdGlvbiAibmZpMmIiIHsgNzoyNiAtIDE0OjkgfQot
ZnVuY3Rpb24gIm5maTJjIiB7IDk6MzAgLSAxMjoxMyB9CitmdW5jdGlvbiAiYW5vbnltb3VzIiB7
IDE6MjAgLSAyOjIyOCB9CitmdW5jdGlvbiAibmYxYSIgeyAyOjU3IC0gMjoyMTkgfQorZnVuY3Rp
b24gIm5mMWIiIHsgMjo4NyAtIDI6MjA5IH0KK2Z1bmN0aW9uICJuZjFjIiB7IDI6MTE3IC0gMjox
OTkgfQorZXZhbCB7IDE6MSAtIDE6NTYgfQorZnVuY3Rpb24gImFub255bW91cyIgeyAxOjIwIC0g
MTg6OCB9CitmdW5jdGlvbiAibmYyYSIgeyA1OjE4IC0gMTY6NSB9CitmdW5jdGlvbiAibmYyYiIg
eyA3OjIyIC0gMTQ6OSB9CitmdW5jdGlvbiAibmYyYyIgeyA5OjI2IC0gMTI6MTMgfQorZXZhbCB7
IDE6MSAtIDE6NTYgfQorZnVuY3Rpb24gImFub255bW91cyIgeyAxOjIwIC0gMjoyMjggfQorZnVu
Y3Rpb24gIm5mMWEiIHsgMjo1NyAtIDI6MjE5IH0KK2Z1bmN0aW9uICJuZjFiIiB7IDI6ODcgLSAy
OjIwOSB9CitmdW5jdGlvbiAibmYxYyIgeyAyOjExNyAtIDI6MTk5IH0KK2V2YWwgeyAxOjEgLSAx
OjU2IH0KK2Z1bmN0aW9uICJhbm9ueW1vdXMiIHsgMToyMCAtIDI6MjM3IH0KK2Z1bmN0aW9uICJu
ZmkxYSIgeyAyOjU4IC0gMjoyMjcgfQorZnVuY3Rpb24gIm5maTFiIiB7IDI6OTAgLSAyOjIxNiB9
CitmdW5jdGlvbiAibmZpMWMiIHsgMjoxMjIgLSAyOjIwNSB9CitldmFsIHsgMToxIC0gMTo1NiB9
CitmdW5jdGlvbiAiYW5vbnltb3VzIiB7IDE6MjAgLSAxODo4IH0KK2Z1bmN0aW9uICJuZjJhIiB7
IDU6MTggLSAxNjo1IH0KK2Z1bmN0aW9uICJuZjJiIiB7IDc6MjIgLSAxNDo5IH0KK2Z1bmN0aW9u
ICJuZjJjIiB7IDk6MjYgLSAxMjoxMyB9CitldmFsIHsgMToxIC0gMTo1NiB9CitmdW5jdGlvbiAi
YW5vbnltb3VzIiB7IDE6MjAgLSAxODo5IH0KK2Z1bmN0aW9uICJuZmkyYSIgeyA1OjE5IC0gMTY6
NSB9CitmdW5jdGlvbiAibmZpMmIiIHsgNzoyMyAtIDE0OjkgfQorZnVuY3Rpb24gIm5maTJjIiB7
IDk6MjcgLSAxMjoxMyB9CiBldmFsIHsgMToxIC0gMTo1NiB9CiAKIFBBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUK
</data>
<flag name="review"
          id="282085"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
    <flag name="commit-queue"
          id="282086"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>