<?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>69716</bug_id>
          
          <creation_ts>2011-10-09 00:29:35 -0700</creation_ts>
          <short_desc>DFG should not always speculate that a ByVal access has an integer index</short_desc>
          <delta_ts>2011-10-09 13:07:04 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>480668</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-10-09 00:29:35 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480669</commentid>
    <comment_count>1</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-10-09 00:58:12 -0700</bug_when>
    <thetext>This is great for SunSpider.



Benchmark report for SunSpider, V8, and Kraken.

VMs tested:
&quot;TipOfTree&quot; at /Volumes/Data/pizlo/quinary/OpenSource/WebKitBuild/Release/jsc
&quot;ByValNotInt&quot; at /Volumes/Data/pizlo/tertiary/OpenSource/WebKitBuild/Release/jsc

Collected 60 samples per benchmark/VM, with 20 VM invocations per benchmark. Used 1 benchmark iteration per VM
invocation for warm-up. Used the jsc-specific preciseTime() function to get microsecond-level timing. Reporting
benchmark execution times with 95% confidence intervals in milliseconds.

                                            TipOfTree              ByValNotInt                                   
SunSpider:
   3d-cube                                7.6169+-0.0691    ?     7.6897+-0.0548       ?
   3d-morph                               8.0379+-0.0506          7.9423+-0.0516         might be 1.0120x faster
   3d-raytrace                            7.6978+-0.0749    !     7.8649+-0.0652       ! definitely 1.0217x slower
   access-binary-trees                    1.7896+-0.0205    ?     1.7972+-0.0153       ?
   access-fannkuch                        6.6428+-0.0555    ?     6.6455+-0.0486       ?
   access-nbody                           3.6240+-0.0311    ^     3.5547+-0.0334       ^ definitely 1.0195x faster
   access-nsieve                          2.6442+-0.0186          2.6143+-0.0273         might be 1.0114x faster
   bitops-3bit-bits-in-byte               1.7369+-0.0113          1.7297+-0.0148       
   bitops-bits-in-byte                    2.8179+-0.0260    ?     2.8259+-0.0230       ?
   bitops-bitwise-and                     3.4138+-0.0386    ?     3.4341+-0.0370       ?
   bitops-nsieve-bits                     5.6968+-0.0492          5.6713+-0.0507       
   controlflow-recursive                  2.1031+-0.0128          2.0855+-0.0168       
   crypto-aes                             6.9742+-0.0649    ?     6.9839+-0.0776       ?
   crypto-md5                             2.9023+-0.0270          2.8799+-0.0277       
   crypto-sha1                            2.5166+-0.0190    ?     2.5291+-0.0188       ?
   date-format-tofte                     10.3428+-0.0942    ?    10.3728+-0.0696       ?
   date-format-xparb                      9.9708+-0.0791    ^     9.1980+-0.1098       ^ definitely 1.0840x faster
   math-cordic                            6.5107+-0.0610    ?     6.6185+-0.0654       ? might be 1.0165x slower
   math-partial-sums                      7.8267+-0.0628    ?     7.9017+-0.0857       ?
   math-spectral-norm                     2.9237+-0.0218    ^     2.8757+-0.0215       ^ definitely 1.0167x faster
   regexp-dna                            11.1428+-0.0708         11.0864+-0.0677       
   string-base64                          5.4737+-0.0543    ?     5.5158+-0.0466       ?
   string-fasta                           6.5874+-0.0637    !     6.7215+-0.0646       ! definitely 1.0204x slower
   string-tagcloud                       11.5905+-0.0998    ?    11.6331+-0.0924       ?
   string-unpack-code                    22.0113+-0.1475    ^    21.1380+-0.1202       ^ definitely 1.0413x faster
   string-validate-input                  6.6112+-0.0600          6.5897+-0.0528       

   &lt;arithmetic&gt; *                         6.4310+-0.0116    ^     6.3807+-0.0101       ^ definitely 1.0079x faster
   &lt;geometric&gt;                            5.2620+-0.0097    ^     5.2412+-0.0083       ^ definitely 1.0040x faster
   &lt;harmonic&gt;                             4.3026+-0.0098          4.2897+-0.0092       

                                            TipOfTree              ByValNotInt                                   
V8:
   crypto                                75.2488+-0.6194    ?    76.2060+-0.4581       ? might be 1.0127x slower
   deltablue                            235.1796+-1.5580        232.8426+-1.6325         might be 1.0100x faster
   earley-boyer                          94.9535+-0.5838         94.3785+-0.5640       
   raytrace                              61.8106+-0.4933    ?    61.9132+-0.5004       ?
   regexp                               106.5991+-0.6673    !   108.4383+-0.6386       ! definitely 1.0173x slower
   richards                             215.7850+-1.5067    ?   216.2889+-1.6113       ?
   splay                                 98.7555+-0.5208         98.2535+-0.5803       

   &lt;arithmetic&gt;                         126.9046+-0.3816        126.9030+-0.4350       
   &lt;geometric&gt; *                        113.0139+-0.3111    ?   113.2183+-0.2902       ?
   &lt;harmonic&gt;                           102.2886+-0.3014    ?   102.5998+-0.2601       ?

                                            TipOfTree              ByValNotInt                                   
Kraken:
   ai-astar                             520.2923+-3.5557    ?   523.2330+-3.2066       ?
   audio-beat-detection                 201.7911+-1.2701    ?   202.5094+-0.9876       ?
   audio-dft                            294.6874+-2.5177        293.2471+-3.0596       
   audio-fft                            132.0817+-0.8217    ?   132.1278+-0.7498       ?
   audio-oscillator                     264.2873+-1.9596    ?   264.6216+-1.9070       ?
   imaging-darkroom                     433.4907+-3.0211    ?   434.0920+-2.6112       ?
   imaging-desaturate                   240.9382+-1.7110    ?   242.4303+-1.6966       ?
   imaging-gaussian-blur                607.5867+-4.2884    ?   609.5590+-3.8772       ?
   json-parse-financial                  56.8202+-0.3853    ?    57.0804+-0.3341       ?
   json-stringify-tinderbox              71.6916+-0.4857    ?    71.7657+-0.5842       ?
   stanford-crypto-aes                  137.2520+-1.1420    ?   137.5863+-1.1203       ?
   stanford-crypto-ccm                  104.7301+-0.6575    ?   106.1123+-0.7404       ? might be 1.0132x slower
   stanford-crypto-pbkdf2               197.4362+-1.4359    ?   198.0337+-1.3287       ?
   stanford-crypto-sha256-iterative      73.9388+-0.4936    !    74.7318+-0.2638       ! definitely 1.0107x slower

   &lt;arithmetic&gt; *                       238.3589+-0.5663    ?   239.0808+-0.7029       ?
   &lt;geometric&gt;                          185.7711+-0.3691    ?   186.4627+-0.4280       ?
   &lt;harmonic&gt;                           144.6839+-0.3407    !   145.3671+-0.3337       ! definitely 1.0047x slower

                                            TipOfTree              ByValNotInt                                   
All benchmarks:
   &lt;arithmetic&gt;                          93.4588+-0.1647    ?    93.6458+-0.2074       ?
   &lt;geometric&gt;                           24.0202+-0.0275         24.0008+-0.0292       
   &lt;harmonic&gt;                             7.5708+-0.0167          7.5495+-0.0159       

                                            TipOfTree              ByValNotInt                                   
Geomean of preferred means:
   &lt;scaled-result&gt;                       55.7443+-0.0630         55.6882+-0.0679       

[pizlo@minime bencher]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480676</commentid>
    <comment_count>2</comment_count>
      <attachid>110293</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-10-09 01:33:18 -0700</bug_when>
    <thetext>Created attachment 110293
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480677</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-09 01:36:24 -0700</bug_when>
    <thetext>Attachment 110293 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/dfg/DFGOperations.cpp:270:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Source/JavaScriptCore/dfg/DFGOperations.h:57:  DFG_OPERATION is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/dfg/DFGOperations.h:69:  DFG_OPERATION is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 3 in 8 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>480678</commentid>
    <comment_count>4</comment_count>
      <attachid>110294</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-10-09 01:37:52 -0700</bug_when>
    <thetext>Created attachment 110294
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480679</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-09 01:42:07 -0700</bug_when>
    <thetext>Attachment 110294 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/dfg/DFGOperations.cpp:270:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Source/JavaScriptCore/dfg/DFGOperations.h:57:  DFG_OPERATION is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/dfg/DFGOperations.h:69:  DFG_OPERATION is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 3 in 8 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>480680</commentid>
    <comment_count>6</comment_count>
      <attachid>110295</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-10-09 01:47:55 -0700</bug_when>
    <thetext>Created attachment 110295
the patch - another attempt to make stylebot happy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480681</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-09 01:51:20 -0700</bug_when>
    <thetext>Attachment 110295 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/dfg/DFGOperations.h:57:  DFG_OPERATION is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/dfg/DFGOperations.h:69:  DFG_OPERATION is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 2 in 8 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>480718</commentid>
    <comment_count>8</comment_count>
      <attachid>110295</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-10-09 10:13:57 -0700</bug_when>
    <thetext>Comment on attachment 110295
the patch - another attempt to make stylebot happy

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

r=me, but update those comments

&gt; Source/JavaScriptCore/dfg/DFGPropagator.cpp:1025
&gt; +                    // PutByVal currently always speculates that it&apos;s accessing an array with an
&gt; +                    // integer index, which means that it&apos;s impossible for it to cause a structure
&gt; +                    // change.

This comment should be updated to indicate this only applies when integer properties are being accessed

&gt; Source/JavaScriptCore/dfg/DFGPropagator.cpp:1093
&gt; +                    // PutByVal currently always speculates that it&apos;s accessing an array with an
&gt; +                    // integer index, which means that it&apos;s impossible for it to cause a structure
&gt; +                    // change.

as above

&gt; Source/JavaScriptCore/dfg/DFGPropagator.cpp:1136
&gt; +                    // PutByVal currently always speculates that it&apos;s accessing an array with an
&gt; +                    // integer index, which means that it&apos;s impossible for it to cause a structure
&gt; +                    // change.

ditto

&gt; Source/JavaScriptCore/dfg/DFGPropagator.cpp:1172
&gt; +                    // PutByVal currently always speculates that it&apos;s accessing an array with an
&gt; +                    // integer index, which means that it&apos;s impossible for it to cause a structure
&gt; +                    // change.

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480731</commentid>
    <comment_count>9</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-10-09 12:12:42 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 110295 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=110295&amp;action=review
&gt; 
&gt; r=me, but update those comments

Oh, yeah, oops.  Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480737</commentid>
    <comment_count>10</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-10-09 13:07:04 -0700</bug_when>
    <thetext>Landed in r97030.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110293</attachid>
            <date>2011-10-09 01:33:18 -0700</date>
            <delta_ts>2011-10-09 01:37:52 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>byvalnotint_patch_1.diff</filename>
            <type>text/plain</type>
            <size>20866</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTcwMjEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAK
KzIwMTEtMTAtMDkgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBE
Rkcgc2hvdWxkIG5vdCBhbHdheXMgc3BlY3VsYXRlIHRoYXQgYSBCeVZhbCBhY2Nlc3MgaGFzIGFu
IGludGVnZXIgaW5kZXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY5NzE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAg
ICAgIAorICAgICAgICAxJSB3aW4gb24gU3VuU3BpZGVyLCBuZXV0cmFsIGVsc2V3aGVyZS4KKwor
ICAgICAgICAqIGRmZy9ERkdKSVRDb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkRGRzo6
Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKiBkZmcv
REZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAg
ICAgKiBkZmcvREZHUHJvcGFnYXRvci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGFnYXRv
cjo6YnlWYWxIYXNJbnRCYXNlKToKKyAgICAgICAgKEpTQzo6REZHOjpQcm9wYWdhdG9yOjpjbG9i
YmVyc1dvcmxkKToKKyAgICAgICAgKEpTQzo6REZHOjpQcm9wYWdhdG9yOjpnZXRNZXRob2RMb2Fk
RWxpbWluYXRpb24pOgorICAgICAgICAoSlNDOjpERkc6OlByb3BhZ2F0b3I6OmNoZWNrU3RydWN0
dXJlTG9hZEVsaW1pbmF0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpQcm9wYWdhdG9yOjpnZXRC
eU9mZnNldExvYWRFbGltaW5hdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGFnYXRvcjo6
Z2V0UHJvcGVydHlTdG9yYWdlTG9hZEVsaW1pbmF0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpQ
cm9wYWdhdG9yOjpwZXJmb3JtTm9kZUNTRSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorCiAyMDExLTEwLTA4ICBNYXJrIEhhaG5l
bmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN0YXRpYyB2ZXJz
aW9uIG9mIEpTQ2VsbDo6Z2V0Q29uc3RydWN0RGF0YQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdKSVRDb2RlR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDk3MDE0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTExNTQsNiArMTE1NCwxNCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGFwcGVuZENh
bGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKICAgICAgICAgbV9qaXQubW92ZShHUFJJ
bmZvOjpyZXR1cm5WYWx1ZUdQUiwgcmVzdWx0KTsKICAgICB9CisgICAgdm9pZCBjYWxsT3BlcmF0
aW9uKEpfREZHT3BlcmF0aW9uX0VDSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBh
cmcxLCBHUFJSZWcgYXJnMikKKyAgICB7CisgICAgICAgIHNldHVwU3R1YkFyZ3VtZW50cyhhcmcx
LCBhcmcyKTsKKyAgICAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKworICAgICAgICBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrKG9wZXJhdGlvbik7CisgICAgICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6cmV0dXJuVmFs
dWVHUFIsIHJlc3VsdCk7CisgICAgfQogICAgIHZvaWQgY2FsbE9wZXJhdGlvbihWX0RGR09wZXJh
dGlvbl9FSkpQIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCB2b2lkKiBwb2lu
dGVyKQogICAgIHsKICAgICAgICAgc2V0dXBTdHViQXJndW1lbnRzKGFyZzEsIGFyZzIpOwpAQCAt
MTE3Myw2ICsxMTgxLDEzIEBAIHByb3RlY3RlZDoKIAogICAgICAgICBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiAgICAgfQorICAgIHZvaWQgY2FsbE9wZXJhdGlvbihW
X0RGR09wZXJhdGlvbl9FQ0pKIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBH
UFJSZWcgYXJnMykKKyAgICB7CisgICAgICAgIHNldHVwU3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcy
LCBhcmczKTsKKyAgICAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKworICAgICAgICBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrKG9wZXJhdGlvbik7CisgICAgfQogICAgIHZvaWQgY2FsbE9wZXJhdGlvbihEX0RGR09w
ZXJhdGlvbl9ERCBvcGVyYXRpb24sIEZQUlJlZyByZXN1bHQsIEZQUlJlZyBhcmcxLCBGUFJSZWcg
YXJnMikKICAgICB7CiAgICAgICAgIHNldHVwVHdvU3R1YkFyZ3M8RlBSSW5mbzo6YXJndW1lbnRG
UFIwLCBGUFJJbmZvOjphcmd1bWVudEZQUjE+KGFyZzEsIGFyZzIpOwpAQCAtMTMyOCw2ICsxMzQz
LDE2IEBAIHByb3RlY3RlZDoKICAgICAgICAgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhv
cGVyYXRpb24pOwogICAgICAgICBzZXR1cFJlc3VsdHMocmVzdWx0VGFnLCByZXN1bHRQYXlsb2Fk
KTsKICAgICB9CisgICAgdm9pZCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0aW9uX0VDSiBvcGVy
YXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJn
MSwgR1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCkKKyAgICB7CisgICAgICAgIG1f
aml0LnB1c2goYXJnMlRhZyk7CisgICAgICAgIG1faml0LnB1c2goYXJnMlBheWxvYWQpOworICAg
ICAgICBtX2ppdC5wdXNoKGFyZzEpOworICAgICAgICBtX2ppdC5wdXNoKEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyKTsKKworICAgICAgICBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9w
ZXJhdGlvbik7CisgICAgICAgIHNldHVwUmVzdWx0cyhyZXN1bHRUYWcsIHJlc3VsdFBheWxvYWQp
OworICAgIH0KICAgICB2b2lkIGNhbGxPcGVyYXRpb24oVl9ERkdPcGVyYXRpb25fRUpKUCBvcGVy
YXRpb24sIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIEdQUlJlZyBhcmcyVGFn
LCBHUFJSZWcgYXJnMlBheWxvYWQsIHZvaWQqIHBvaW50ZXIpCiAgICAgewogICAgICAgICBtX2pp
dC5wdXNoKEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIocmVpbnRlcnByZXRfY2FzdDxpbnQ+KHBv
aW50ZXIpKSk7CkBAIC0xMzU1LDYgKzEzODAsMTcgQEAgcHJvdGVjdGVkOgogCiAgICAgICAgIGFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKICAgICB9CisgICAgdm9pZCBj
YWxsT3BlcmF0aW9uKFZfREZHT3BlcmF0aW9uX0VDSkogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwg
R1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCwgR1BSUmVnIGFyZzNUYWcsIEdQUlJl
ZyBhcmczUGF5bG9hZCkKKyAgICB7CisgICAgICAgIG1faml0LnB1c2goYXJnM1RhZyk7CisgICAg
ICAgIG1faml0LnB1c2goYXJnM1BheWxvYWQpOworICAgICAgICBtX2ppdC5wdXNoKGFyZzJUYWcp
OworICAgICAgICBtX2ppdC5wdXNoKGFyZzJQYXlsb2FkKTsKKyAgICAgICAgbV9qaXQucHVzaChh
cmcxKTsKKyAgICAgICAgbV9qaXQucHVzaChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisK
KyAgICAgICAgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOworICAgIH0K
IAogICAgIHZvaWQgY2FsbE9wZXJhdGlvbihEX0RGR09wZXJhdGlvbl9ERCBvcGVyYXRpb24sIEZQ
UlJlZyByZXN1bHQsIEZQUlJlZyBhcmcxLCBGUFJSZWcgYXJnMikKICAgICB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gOTcwMTQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzIxLDcgKzMyMSw3
IEBAIHN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciogYXJpdGhOb2RlRmxhZ3MKICAgICAvKiBQdXRC
eVZhbEFsaWFzIGluZGljYXRlcyBhICdwdXQnIGFsaWFzZXMgYSBwcmlvciB3cml0ZSB0byB0aGUg
c2FtZSBwcm9wZXJ0eS4gKi9cCiAgICAgLyogU2luY2UgYSBwdXQgdG8gJ2xlbmd0aCcgbWF5IGlu
dmFsaWRhdGUgb3B0aW1pemF0aW9ucyBoZXJlLCAqL1wKICAgICAvKiB0aGlzIG11c3QgYmUgdGhl
IGRpcmVjdGx5IHN1YnNlcXVlbnQgcHJvcGVydHkgcHV0LiAqL1wKLSAgICBtYWNybyhHZXRCeVZh
bCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKEdldEJ5VmFs
LCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZU1pZ2h0Q2xvYmJlcikgXAog
ICAgIG1hY3JvKFB1dEJ5VmFsLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUNsb2JiZXJzV29ybGQp
IFwKICAgICBtYWNybyhQdXRCeVZhbEFsaWFzLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUNsb2Ji
ZXJzV29ybGQpIFwKICAgICBtYWNybyhHZXRCeUlkLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdl
bmVyYXRlIHwgTm9kZUNsb2JiZXJzV29ybGQpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gOTcwMTQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjMs
NiArMjYzLDI2IEBAIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uR2UKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQpKTsKIH0K
IAorRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbENlbGwoRXhl
Y1N0YXRlKiBleGVjLCBKU0NlbGwqIGJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0
eSkKK3sKKyAgICBKU1ZhbHVlIHByb3BlcnR5ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRQcm9w
ZXJ0eSk7CisKKyAgICBpZiAocHJvcGVydHkuaXNVSW50MzIoKSkgeworICAgICAgICByZXR1cm4g
Z2V0QnlWYWwoZXhlYywgYmFzZSwgcHJvcGVydHkuYXNVSW50MzIoKSk7CisgICAgfSBlbHNlIGlm
IChwcm9wZXJ0eS5pc0RvdWJsZSgpKSB7CisgICAgICAgIGRvdWJsZSBwcm9wZXJ0eUFzRG91Ymxl
ID0gcHJvcGVydHkuYXNEb3VibGUoKTsKKyAgICAgICAgdWludDMyX3QgcHJvcGVydHlBc1VJbnQz
MiA9IHN0YXRpY19jYXN0PHVpbnQzMl90Pihwcm9wZXJ0eUFzRG91YmxlKTsKKyAgICAgICAgaWYg
KHByb3BlcnR5QXNVSW50MzIgPT0gcHJvcGVydHlBc0RvdWJsZSkKKyAgICAgICAgICAgIHJldHVy
biBnZXRCeVZhbChleGVjLCBiYXNlLCBwcm9wZXJ0eUFzVUludDMyKTsKKyAgICB9IGVsc2UgaWYg
KHByb3BlcnR5LmlzU3RyaW5nKCkpIHsKKyAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gYmFz
ZS0+ZmFzdEdldE93blByb3BlcnR5KGV4ZWMsIGFzU3RyaW5nKHByb3BlcnR5KS0+dmFsdWUoZXhl
YykpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworICAgIH0K
KworICAgIElkZW50aWZpZXIgaWRlbnQoZXhlYywgcHJvcGVydHkudG9TdHJpbmcoZXhlYykpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShiYXNlKS5nZXQoZXhlYywgaWRlbnQp
KTsKK30KKwogRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkKEV4
ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIElkZW50aWZpZXIqIHBy
b3BlcnR5TmFtZSkKIHsKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkQmFzZSk7CkBAIC0zNjYsNiArMzg2LDE2IEBAIHZvaWQgREZHX09QRVJBVElPTiBvcGVy
YXRpb25QdXRCeVZhbE5vblMKICAgICBvcGVyYXRpb25QdXRCeVZhbEludGVybmFsPGZhbHNlPihl
eGVjLCBlbmNvZGVkQmFzZSwgZW5jb2RlZFByb3BlcnR5LCBlbmNvZGVkVmFsdWUpOwogfQogCit2
b2lkIERGR19PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3RyaWN0KEV4ZWNTdGF0ZSog
ZXhlYywgSlNDZWxsKiBjZWxsLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVydHksIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK3sKKyAgICBvcGVyYXRpb25QdXRCeVZhbEludGVybmFs
PHRydWU+KGV4ZWMsIEpTVmFsdWU6OmVuY29kZShjZWxsKSwgZW5jb2RlZFByb3BlcnR5LCBlbmNv
ZGVkVmFsdWUpOworfQorCit2b2lkIERGR19PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxDZWxs
Tm9uU3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBjZWxsLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkUHJvcGVydHksIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK3sKKyAgICBvcGVy
YXRpb25QdXRCeVZhbEludGVybmFsPGZhbHNlPihleGVjLCBKU1ZhbHVlOjplbmNvZGUoY2VsbCks
IGVuY29kZWRQcm9wZXJ0eSwgZW5jb2RlZFZhbHVlKTsKK30KKwogdm9pZCBERkdfT1BFUkFUSU9O
IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHMoRXhlY1N0YXRlKiBleGVjLCBKU0Fy
cmF5KiBhcnJheSwgaW50MzJfdCBpbmRleCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQog
ewogICAgIC8vIFdlIHNob3VsZCBvbmx5IGdldCBoZXJlIGlmIGluZGV4IGlzIG91dHNpZGUgdGhl
IGV4aXN0aW5nIHZlY3Rvci4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5oCShyZXZpc2lvbiA5NzAxNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1NCw3IEBAIHR5cGVkZWYg
SlNDZWxsKiBERkdfT1BFUkFUSU9OICgqQ19ERkdPcGUKIHR5cGVkZWYgSlNDZWxsKiBERkdfT1BF
UkFUSU9OICgqQ19ERkdPcGVyYXRpb25fRUMpKEV4ZWNTdGF0ZSosIEpTQ2VsbCopOwogdHlwZWRl
ZiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OICgqSl9ERkdPcGVyYXRpb25fRUEpKEV4ZWNT
dGF0ZSosIEpTQXJyYXkqKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiAo
KkpfREZHT3BlcmF0aW9uX0VKQSkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEpTQXJyYXkq
KTsKK3R5cGVkZWYgRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiAoKkpfREZHT3BlcmF0aW9u
X0VDSikoRXhlY1N0YXRlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUpOwogdHlwZWRlZiBFbmNv
ZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OICgqSl9ERkdPcGVyYXRpb25fRUpKKShFeGVjU3RhdGUq
LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1
ZSBERkdfT1BFUkFUSU9OICgqSl9ERkdPcGVyYXRpb25fRUopKEV4ZWNTdGF0ZSosIEVuY29kZWRK
U1ZhbHVlKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiAoKkpfREZHT3Bl
cmF0aW9uX0VKUCkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIHZvaWQqKTsKQEAgLTY1LDYg
KzY2LDcgQEAgdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OICgqSgogdHlwZWRl
ZiBSZWdpc3RlclNpemVkQm9vbGVhbiBERkdfT1BFUkFUSU9OICgqWl9ERkdPcGVyYXRpb25fRUop
KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlKTsKIHR5cGVkZWYgUmVnaXN0ZXJTaXplZEJvb2xl
YW4gREZHX09QRVJBVElPTiAoKlpfREZHT3BlcmF0aW9uX0VKSikoRXhlY1N0YXRlKiwgRW5jb2Rl
ZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKTsKIHR5cGVkZWYgdm9pZCBERkdfT1BFUkFUSU9OICgq
Vl9ERkdPcGVyYXRpb25fRUpKSikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRK
U1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSk7Cit0eXBlZGVmIHZvaWQgREZHX09QRVJBVElPTiAoKlZf
REZHT3BlcmF0aW9uX0VDSkopKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIHZvaWQgREZHX09QRVJBVElPTiAoKlZfREZHT3BlcmF0
aW9uX0VKSlApKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgdm9p
ZCopOwogdHlwZWRlZiB2b2lkIERGR19PUEVSQVRJT04gKCpWX0RGR09wZXJhdGlvbl9FSkpJKShF
eGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIElkZW50aWZpZXIqKTsK
IHR5cGVkZWYgZG91YmxlICgqRF9ERkdPcGVyYXRpb25fREQpKGRvdWJsZSwgZG91YmxlKTsgLy8g
VXNpbmcgZGVmYXVsdCBjYWxsaW5nIGNvbnZlbnRpb25zIQpAQCAtODIsNiArODQsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkFyCiBFbmNvZGVkSlNWYWx1ZSBERkdf
T1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoRGl2KEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpOwogRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBv
cGVyYXRpb25Bcml0aE1vZChFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkT3AyKTsKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uR2V0
QnlWYWwoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRQcm9wZXJ0eSk7CitFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJh
dGlvbkdldEJ5VmFsQ2VsbChFeGVjU3RhdGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkUHJvcGVydHkpOwogRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25HZXRC
eUlkKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBJZGVudGlmaWVyKik7
CiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRCdWlsZExpc3Qo
RXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIElkZW50aWZpZXIqKTsKIEVu
Y29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZFByb3RvQnVpbGRMaXN0
KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBJZGVudGlmaWVyKik7CkBA
IC0xMDAsNiArMTAzLDggQEAgRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25O
ZQogdm9pZCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93SGFzSW5zdGFuY2VFcnJvcihFeGVj
U3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBiYXNlKTsKIHZvaWQgREZHX09QRVJBVElPTiBvcGVyYXRp
b25QdXRCeVZhbFN0cmljdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpOwogdm9pZCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsTm9uU3RyaWN0KEV4ZWNT
dGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
UHJvcGVydHksIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSk7Cit2b2lkIERGR19PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3RyaWN0KEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKTsK
K3ZvaWQgREZHX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbENlbGxOb25TdHJpY3QoRXhlY1N0
YXRlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5LCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpOwogdm9pZCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFs
QmV5b25kQXJyYXlCb3VuZHMoRXhlY1N0YXRlKiwgSlNBcnJheSosIGludDMyX3QgaW5kZXgsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSk7CiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9O
IG9wZXJhdGlvbkFycmF5UHVzaChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUsIEpTQXJyYXkqKTsKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uQXJy
YXlQb3AoRXhlY1N0YXRlKiwgSlNBcnJheSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcm9wYWdhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1Byb3BhZ2F0b3IuY3BwCShyZXZpc2lvbiA5NzAxNCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJvcGFnYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4MCw2
ICs4ODAsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIGlzQm9vbGVhblByZWRpY3Rpb24o
cHJlZGljdGlvbikgfHwgIXByZWRpY3Rpb247CiAgICAgfQogICAgIAorICAgIGJvb2wgYnlWYWxI
YXNJbnRCYXNlKE5vZGUmIG5vZGUpCisgICAgeworICAgICAgICBQcmVkaWN0ZWRUeXBlIHByZWRp
Y3Rpb24gPSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLnByZWRpY3Rpb24oKTsKKyAgICAgICAgcmV0
dXJuIChwcmVkaWN0aW9uICYgUHJlZGljdEludDMyKSB8fCAhcHJlZGljdGlvbjsKKyAgICB9Cisg
ICAgCiAgICAgYm9vbCBjbG9iYmVyc1dvcmxkKE5vZGVJbmRleCBub2RlSW5kZXgpCiAgICAgewog
ICAgICAgICBOb2RlJiBub2RlID0gbV9ncmFwaFtub2RlSW5kZXhdOwpAQCAtODk3LDYgKzkwMyw4
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gIWlzUHJlZGljdGVkTnVtZXJpY2FsKG5v
ZGUpOwogICAgICAgICBjYXNlIExvZ2ljYWxOb3Q6CiAgICAgICAgICAgICByZXR1cm4gIWxvZ2lj
YWxOb3RJc1B1cmUobm9kZSk7CisgICAgICAgIGNhc2UgR2V0QnlWYWw6CisgICAgICAgICAgICBy
ZXR1cm4gIWJ5VmFsSGFzSW50QmFzZShub2RlKTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7IC8vIElm
IGJ5IHNvbWUgb2RkaXR5IHdlIGhpdCB0aGlzIGNhc2UgaW4gcmVsZWFzZSBidWlsZCBpdCdzIHNh
ZmVyIHRvIGhhdmUgQ1NFIGFzc3VtZSB0aGUgd29yc3QuCkBAIC0xMDExLDEwICsxMDE5LDEzIEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFsOgog
ICAgICAgICAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOgotICAgICAgICAgICAgICAgIC8vIFB1dEJ5
VmFsIGN1cnJlbnRseSBhbHdheXMgc3BlY3VsYXRlcyB0aGF0IGl0J3MgYWNjZXNzaW5nIGFuIGFy
cmF5IHdpdGggYW4KLSAgICAgICAgICAgICAgICAvLyBpbnRlZ2VyIGluZGV4LCB3aGljaCBtZWFu
cyB0aGF0IGl0J3MgaW1wb3NzaWJsZSBmb3IgaXQgdG8gY2F1c2UgYSBzdHJ1Y3R1cmUKLSAgICAg
ICAgICAgICAgICAvLyBjaGFuZ2UuCi0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgaWYgKGJ5VmFsSGFzSW50QmFzZShub2RlKSkgeworICAgICAgICAgICAgICAgICAgICAv
LyBQdXRCeVZhbCBjdXJyZW50bHkgYWx3YXlzIHNwZWN1bGF0ZXMgdGhhdCBpdCdzIGFjY2Vzc2lu
ZyBhbiBhcnJheSB3aXRoIGFuCisgICAgICAgICAgICAgICAgICAgIC8vIGludGVnZXIgaW5kZXgs
IHdoaWNoIG1lYW5zIHRoYXQgaXQncyBpbXBvc3NpYmxlIGZvciBpdCB0byBjYXVzZSBhIHN0cnVj
dHVyZQorICAgICAgICAgICAgICAgICAgICAvLyBjaGFuZ2UuCisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gTm9Ob2Rl
OwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgY2FzZSBBcnJheVB1c2g6CiAgICAgICAg
ICAgICBjYXNlIEFycmF5UG9wOgpAQCAtMTA3NiwxMCArMTA4NywxMyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgY2FzZSBQdXRCeVZhbDoKICAgICAgICAgICAgIGNh
c2UgUHV0QnlWYWxBbGlhczoKLSAgICAgICAgICAgICAgICAvLyBQdXRCeVZhbCBjdXJyZW50bHkg
YWx3YXlzIHNwZWN1bGF0ZXMgdGhhdCBpdCdzIGFjY2Vzc2luZyBhbiBhcnJheSB3aXRoIGFuCi0g
ICAgICAgICAgICAgICAgLy8gaW50ZWdlciBpbmRleCwgd2hpY2ggbWVhbnMgdGhhdCBpdCdzIGlt
cG9zc2libGUgZm9yIGl0IHRvIGNhdXNlIGEgc3RydWN0dXJlCi0gICAgICAgICAgICAgICAgLy8g
Y2hhbmdlLgotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGlmIChieVZh
bEhhc0ludEJhc2Uobm9kZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gUHV0QnlWYWwgY3Vy
cmVudGx5IGFsd2F5cyBzcGVjdWxhdGVzIHRoYXQgaXQncyBhY2Nlc3NpbmcgYW4gYXJyYXkgd2l0
aCBhbgorICAgICAgICAgICAgICAgICAgICAvLyBpbnRlZ2VyIGluZGV4LCB3aGljaCBtZWFucyB0
aGF0IGl0J3MgaW1wb3NzaWJsZSBmb3IgaXQgdG8gY2F1c2UgYSBzdHJ1Y3R1cmUKKyAgICAgICAg
ICAgICAgICAgICAgLy8gY2hhbmdlLgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBpZiAoY2xvYmJlcnNX
b3JsZChpbmRleCkpCkBAIC0xMTE2LDEwICsxMTMwLDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFsOgogICAgICAgICAgICAgY2FzZSBQdXRC
eVZhbEFsaWFzOgotICAgICAgICAgICAgICAgIC8vIFB1dEJ5VmFsIGN1cnJlbnRseSBhbHdheXMg
c3BlY3VsYXRlcyB0aGF0IGl0J3MgYWNjZXNzaW5nIGFuIGFycmF5IHdpdGggYW4KLSAgICAgICAg
ICAgICAgICAvLyBpbnRlZ2VyIGluZGV4LCB3aGljaCBtZWFucyB0aGF0IGl0J3MgaW1wb3NzaWJs
ZSBmb3IgaXQgdG8gY2F1c2UgYSBzdHJ1Y3R1cmUKLSAgICAgICAgICAgICAgICAvLyBjaGFuZ2Uu
Ci0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaWYgKGJ5VmFsSGFzSW50
QmFzZShub2RlKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBQdXRCeVZhbCBjdXJyZW50bHkg
YWx3YXlzIHNwZWN1bGF0ZXMgdGhhdCBpdCdzIGFjY2Vzc2luZyBhbiBhcnJheSB3aXRoIGFuCisg
ICAgICAgICAgICAgICAgICAgIC8vIGludGVnZXIgaW5kZXgsIHdoaWNoIG1lYW5zIHRoYXQgaXQn
cyBpbXBvc3NpYmxlIGZvciBpdCB0byBjYXVzZSBhIHN0cnVjdHVyZQorICAgICAgICAgICAgICAg
ICAgICAvLyBjaGFuZ2UuCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gTm9Ob2RlOwogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBpZiAoY2xvYmJlcnNXb3JsZChp
bmRleCkpCkBAIC0xMTQ5LDEwICsxMTY2LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFsOgogICAgICAgICAgICAgY2FzZSBQdXRCeVZhbEFs
aWFzOgotICAgICAgICAgICAgICAgIC8vIFB1dEJ5VmFsIGN1cnJlbnRseSBhbHdheXMgc3BlY3Vs
YXRlcyB0aGF0IGl0J3MgYWNjZXNzaW5nIGFuIGFycmF5IHdpdGggYW4KLSAgICAgICAgICAgICAg
ICAvLyBpbnRlZ2VyIGluZGV4LCB3aGljaCBtZWFucyB0aGF0IGl0J3MgaW1wb3NzaWJsZSBmb3Ig
aXQgdG8gY2F1c2UgYSBzdHJ1Y3R1cmUKLSAgICAgICAgICAgICAgICAvLyBjaGFuZ2UuCi0gICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaWYgKGJ5VmFsSGFzSW50QmFzZShu
b2RlKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBQdXRCeVZhbCBjdXJyZW50bHkgYWx3YXlz
IHNwZWN1bGF0ZXMgdGhhdCBpdCdzIGFjY2Vzc2luZyBhbiBhcnJheSB3aXRoIGFuCisgICAgICAg
ICAgICAgICAgICAgIC8vIGludGVnZXIgaW5kZXgsIHdoaWNoIG1lYW5zIHRoYXQgaXQncyBpbXBv
c3NpYmxlIGZvciBpdCB0byBjYXVzZSBhIHN0cnVjdHVyZQorICAgICAgICAgICAgICAgICAgICAv
LyBjaGFuZ2UuCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICByZXR1cm4gTm9Ob2RlOwogICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBpZiAoY2xvYmJlcnNXb3JsZChpbmRleCkp
CkBAIC0xMzIxLDExICsxMzQxLDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIAogICAgICAgICBjYXNlIEdldEJ5VmFsOgotICAgICAgICAgICAgc2V0UmVwbGFj
ZW1lbnQoZ2V0QnlWYWxMb2FkRWxpbWluYXRpb24obm9kZS5jaGlsZDEoKSwgbm9kZS5jaGlsZDIo
KSkpOworICAgICAgICAgICAgaWYgKGJ5VmFsSGFzSW50QmFzZShub2RlKSkKKyAgICAgICAgICAg
ICAgICBzZXRSZXBsYWNlbWVudChnZXRCeVZhbExvYWRFbGltaW5hdGlvbihub2RlLmNoaWxkMSgp
LCBub2RlLmNoaWxkMigpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAg
ICAgICBjYXNlIFB1dEJ5VmFsOgotICAgICAgICAgICAgaWYgKGdldEJ5VmFsTG9hZEVsaW1pbmF0
aW9uKG5vZGUuY2hpbGQxKCksIG5vZGUuY2hpbGQyKCkpICE9IE5vTm9kZSkKKyAgICAgICAgICAg
IGlmIChieVZhbEhhc0ludEJhc2Uobm9kZSkgJiYgZ2V0QnlWYWxMb2FkRWxpbWluYXRpb24obm9k
ZS5jaGlsZDEoKSwgbm9kZS5jaGlsZDIoKSkgIT0gTm9Ob2RlKQogICAgICAgICAgICAgICAgIG5v
ZGUub3AgPSBQdXRCeVZhbEFsaWFzOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gOTcwMTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcyLDYg
KzEyNzIsMjMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAg
IH0KIAogICAgIGNhc2UgR2V0QnlWYWw6IHsKKyAgICAgICAgUHJlZGljdGVkVHlwZSBiYXNlUHJl
ZGljdGlvbiA9IGF0KG5vZGUuY2hpbGQyKCkpLnByZWRpY3Rpb24oKTsKKyAgICAgICAgaWYgKCEo
YmFzZVByZWRpY3Rpb24gJiBQcmVkaWN0SW50MzIpICYmIGJhc2VQcmVkaWN0aW9uKSB7CisgICAg
ICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOyAv
LyBTYXZlIGEgcmVnaXN0ZXIsIHNwZWN1bGF0ZSBjZWxsLiBXZSdsbCBwcm9iYWJseSBiZSByaWdo
dC4KKyAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG5vZGUuY2hpbGQy
KCkpOworICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgICAgICAg
ICAgR1BSUmVnIHByb3BlcnR5VGFnR1BSID0gcHJvcGVydHkudGFnR1BSKCk7CisgICAgICAgICAg
ICBHUFJSZWcgcHJvcGVydHlQYXlsb2FkR1BSID0gcHJvcGVydHkucGF5bG9hZEdQUigpOworICAg
ICAgICAgICAgCisgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICAgICAgR1BS
UmVzdWx0MiByZXN1bHRUYWcodGhpcyk7CisgICAgICAgICAgICBHUFJSZXN1bHQgcmVzdWx0UGF5
bG9hZCh0aGlzKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWxD
ZWxsLCByZXN1bHRUYWcuZ3ByKCksIHJlc3VsdFBheWxvYWQuZ3ByKCksIGJhc2VHUFIsIHByb3Bl
cnR5VGFnR1BSLCBwcm9wZXJ0eVBheWxvYWRHUFIpOworICAgICAgICAgICAgCisgICAgICAgICAg
ICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFRhZy5ncHIoKSwgcmVzdWx0UGF5bG9hZC5ncHIoKSwgbV9j
b21waWxlSW5kZXgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBp
ZiAoYXQobm9kZS5jaGlsZDEoKSkucHJlZGljdGlvbigpID09IFByZWRpY3RTdHJpbmcpIHsKICAg
ICAgICAgICAgIGNvbXBpbGVHZXRCeVZhbE9uU3RyaW5nKG5vZGUpOwogICAgICAgICAgICAgaWYg
KCFtX2NvbXBpbGVPa2F5KQpAQCAtMTMxNCw2ICsxMzMxLDI0IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICB9CiAKICAgICBjYXNlIFB1dEJ5VmFsOiB7Cisg
ICAgICAgIFByZWRpY3RlZFR5cGUgYmFzZVByZWRpY3Rpb24gPSBhdChub2RlLmNoaWxkMigpKS5w
cmVkaWN0aW9uKCk7CisgICAgICAgIGlmICghKGJhc2VQcmVkaWN0aW9uICYgUHJlZGljdEludDMy
KSAmJiBiYXNlUHJlZGljdGlvbikgeworICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQg
YmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsgLy8gU2F2ZSBhIHJlZ2lzdGVyLCBzcGVjdWxhdGUg
Y2VsbC4gV2UnbGwgcHJvYmFibHkgYmUgcmlnaHQuCisgICAgICAgICAgICBKU1ZhbHVlT3BlcmFu
ZCBwcm9wZXJ0eSh0aGlzLCBub2RlLmNoaWxkMigpKTsKKyAgICAgICAgICAgIEpTVmFsdWVPcGVy
YW5kIHZhbHVlKHRoaXMsIG5vZGUuY2hpbGQzKCkpOworICAgICAgICAgICAgR1BSUmVnIGJhc2VH
UFIgPSBiYXNlLmdwcigpOworICAgICAgICAgICAgR1BSUmVnIHByb3BlcnR5VGFnR1BSID0gcHJv
cGVydHkudGFnR1BSKCk7CisgICAgICAgICAgICBHUFJSZWcgcHJvcGVydHlQYXlsb2FkR1BSID0g
cHJvcGVydHkucGF5bG9hZEdQUigpOworICAgICAgICAgICAgR1BSUmVnIHZhbHVlVGFnR1BSID0g
dmFsdWUudGFnR1BSKCk7CisgICAgICAgICAgICBHUFJSZWcgdmFsdWVQYXlsb2FkR1BSID0gdmFs
dWUucGF5bG9hZEdQUigpOworICAgICAgICAgICAgCisgICAgICAgICAgICBmbHVzaFJlZ2lzdGVy
cygpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihtX2ppdC5jb2RlQmxvY2soKS0+aXNTdHJp
Y3RNb2RlKCkgPyBvcGVyYXRpb25QdXRCeVZhbENlbGxTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZh
bENlbGxOb25TdHJpY3QsIGJhc2VHUFIsIHByb3BlcnR5VGFnR1BSLCBwcm9wZXJ0eVBheWxvYWRH
UFIsIHZhbHVlVGFnR1BSLCB2YWx1ZVBheWxvYWRHUFIpOworICAgICAgICAgICAgCisgICAgICAg
ICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorCiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGls
ZDEoKSk7CiAgICAgICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBwcm9wZXJ0eSh0aGlz
LCBub2RlLmNoaWxkMigpKTsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9k
ZS5jaGlsZDMoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDk3MDE0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM4
Myw2ICsxMzgzLDIxIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkK
ICAgICB9CiAKICAgICBjYXNlIEdldEJ5VmFsOiB7CisgICAgICAgIFByZWRpY3RlZFR5cGUgYmFz
ZVByZWRpY3Rpb24gPSBhdChub2RlLmNoaWxkMigpKS5wcmVkaWN0aW9uKCk7CisgICAgICAgIGlm
ICghKGJhc2VQcmVkaWN0aW9uICYgUHJlZGljdEludDMyKSAmJiBiYXNlUHJlZGljdGlvbikgewor
ICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAg
ICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG5vZGUuY2hpbGQyKCkpOwor
ICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgICAgICAgICAgR1BS
UmVnIHByb3BlcnR5R1BSID0gcHJvcGVydHkuZ3ByKCk7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgICAgICBHUFJSZXN1bHQgcmVzdWx0KHRoaXMp
OworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbCwgcmVzdWx0Lmdw
cigpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGpz
VmFsdWVSZXN1bHQocmVzdWx0LmdwcigpLCBtX2NvbXBpbGVJbmRleCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkp
LnByZWRpY3Rpb24oKSA9PSBQcmVkaWN0U3RyaW5nKSB7CiAgICAgICAgICAgICBjb21waWxlR2V0
QnlWYWxPblN0cmluZyhub2RlKTsKICAgICAgICAgICAgIGlmICghbV9jb21waWxlT2theSkKQEAg
LTE0MjQsNiArMTQzOSwyMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5v
ZGUpCiAgICAgfQogCiAgICAgY2FzZSBQdXRCeVZhbDogeworICAgICAgICBQcmVkaWN0ZWRUeXBl
IGJhc2VQcmVkaWN0aW9uID0gYXQobm9kZS5jaGlsZDIoKSkucHJlZGljdGlvbigpOworICAgICAg
ICBpZiAoIShiYXNlUHJlZGljdGlvbiAmIFByZWRpY3RJbnQzMikgJiYgYmFzZVByZWRpY3Rpb24p
IHsKKyAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGFyZzEodGhpcywgbm9kZS5jaGlsZDEoKSk7
CisgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBhcmcyKHRoaXMsIG5vZGUuY2hpbGQyKCkpOwor
ICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYXJnMyh0aGlzLCBub2RlLmNoaWxkMygpKTsKKyAg
ICAgICAgICAgIEdQUlJlZyBhcmcxR1BSID0gYXJnMS5ncHIoKTsKKyAgICAgICAgICAgIEdQUlJl
ZyBhcmcyR1BSID0gYXJnMi5ncHIoKTsKKyAgICAgICAgICAgIEdQUlJlZyBhcmczR1BSID0gYXJn
My5ncHIoKTsKKyAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGNhbGxPcGVyYXRpb24obV9qaXQuY29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgp
ID8gb3BlcmF0aW9uUHV0QnlWYWxTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbE5vblN0cmljdCwg
YXJnMUdQUiwgYXJnMkdQUiwgYXJnM0dQUik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG5v
UmVzdWx0KG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisK
ICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsK
ICAgICAgICAgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG5vZGUu
Y2hpbGQyKCkpOwogICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLmNoaWxk
MygpKTsKQEAgLTE0ODgsNiArMTUxOSw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSYgbm9kZSkKICAgICB9CiAKICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6IHsKKyAgICAgICAg
UHJlZGljdGVkVHlwZSBiYXNlUHJlZGljdGlvbiA9IGF0KG5vZGUuY2hpbGQyKCkpLnByZWRpY3Rp
b24oKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChiYXNlUHJlZGljdGlvbiwgKGJhc2VQcmVkaWN0
aW9uICYgUHJlZGljdEludDMyKSB8fCAhYmFzZVByZWRpY3Rpb24pOworICAgICAgICAgICAgCiAg
ICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAg
ICAgICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBub2RlLmNo
aWxkMigpKTsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS5jaGlsZDMo
KSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110294</attachid>
            <date>2011-10-09 01:37:52 -0700</date>
            <delta_ts>2011-10-09 01:47:55 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>byvalnotint_patch_2.diff</filename>
            <type>text/plain</type>
            <size>20862</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTcwMjEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAK
KzIwMTEtMTAtMDkgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBE
Rkcgc2hvdWxkIG5vdCBhbHdheXMgc3BlY3VsYXRlIHRoYXQgYSBCeVZhbCBhY2Nlc3MgaGFzIGFu
IGludGVnZXIgaW5kZXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY5NzE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAg
ICAgIAorICAgICAgICAxJSB3aW4gb24gU3VuU3BpZGVyLCBuZXV0cmFsIGVsc2V3aGVyZS4KKwor
ICAgICAgICAqIGRmZy9ERkdKSVRDb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkRGRzo6
Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKiBkZmcv
REZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAg
ICAgKiBkZmcvREZHUHJvcGFnYXRvci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGFnYXRv
cjo6YnlWYWxIYXNJbnRCYXNlKToKKyAgICAgICAgKEpTQzo6REZHOjpQcm9wYWdhdG9yOjpjbG9i
YmVyc1dvcmxkKToKKyAgICAgICAgKEpTQzo6REZHOjpQcm9wYWdhdG9yOjpnZXRNZXRob2RMb2Fk
RWxpbWluYXRpb24pOgorICAgICAgICAoSlNDOjpERkc6OlByb3BhZ2F0b3I6OmNoZWNrU3RydWN0
dXJlTG9hZEVsaW1pbmF0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpQcm9wYWdhdG9yOjpnZXRC
eU9mZnNldExvYWRFbGltaW5hdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGFnYXRvcjo6
Z2V0UHJvcGVydHlTdG9yYWdlTG9hZEVsaW1pbmF0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpQ
cm9wYWdhdG9yOjpwZXJmb3JtTm9kZUNTRSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorCiAyMDExLTEwLTA4ICBNYXJrIEhhaG5l
bmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN0YXRpYyB2ZXJz
aW9uIG9mIEpTQ2VsbDo6Z2V0Q29uc3RydWN0RGF0YQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdKSVRDb2RlR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDk3MDE0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTExNTQsNiArMTE1NCwxNCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGFwcGVuZENh
bGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKICAgICAgICAgbV9qaXQubW92ZShHUFJJ
bmZvOjpyZXR1cm5WYWx1ZUdQUiwgcmVzdWx0KTsKICAgICB9CisgICAgdm9pZCBjYWxsT3BlcmF0
aW9uKEpfREZHT3BlcmF0aW9uX0VDSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBh
cmcxLCBHUFJSZWcgYXJnMikKKyAgICB7CisgICAgICAgIHNldHVwU3R1YkFyZ3VtZW50cyhhcmcx
LCBhcmcyKTsKKyAgICAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKworICAgICAgICBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrKG9wZXJhdGlvbik7CisgICAgICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6cmV0dXJuVmFs
dWVHUFIsIHJlc3VsdCk7CisgICAgfQogICAgIHZvaWQgY2FsbE9wZXJhdGlvbihWX0RGR09wZXJh
dGlvbl9FSkpQIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCB2b2lkKiBwb2lu
dGVyKQogICAgIHsKICAgICAgICAgc2V0dXBTdHViQXJndW1lbnRzKGFyZzEsIGFyZzIpOwpAQCAt
MTE3Myw2ICsxMTgxLDEzIEBAIHByb3RlY3RlZDoKIAogICAgICAgICBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiAgICAgfQorICAgIHZvaWQgY2FsbE9wZXJhdGlvbihW
X0RGR09wZXJhdGlvbl9FQ0pKIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBH
UFJSZWcgYXJnMykKKyAgICB7CisgICAgICAgIHNldHVwU3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcy
LCBhcmczKTsKKyAgICAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKworICAgICAgICBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrKG9wZXJhdGlvbik7CisgICAgfQogICAgIHZvaWQgY2FsbE9wZXJhdGlvbihEX0RGR09w
ZXJhdGlvbl9ERCBvcGVyYXRpb24sIEZQUlJlZyByZXN1bHQsIEZQUlJlZyBhcmcxLCBGUFJSZWcg
YXJnMikKICAgICB7CiAgICAgICAgIHNldHVwVHdvU3R1YkFyZ3M8RlBSSW5mbzo6YXJndW1lbnRG
UFIwLCBGUFJJbmZvOjphcmd1bWVudEZQUjE+KGFyZzEsIGFyZzIpOwpAQCAtMTMyOCw2ICsxMzQz
LDE2IEBAIHByb3RlY3RlZDoKICAgICAgICAgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhv
cGVyYXRpb24pOwogICAgICAgICBzZXR1cFJlc3VsdHMocmVzdWx0VGFnLCByZXN1bHRQYXlsb2Fk
KTsKICAgICB9CisgICAgdm9pZCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0aW9uX0VDSiBvcGVy
YXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJn
MSwgR1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCkKKyAgICB7CisgICAgICAgIG1f
aml0LnB1c2goYXJnMlRhZyk7CisgICAgICAgIG1faml0LnB1c2goYXJnMlBheWxvYWQpOworICAg
ICAgICBtX2ppdC5wdXNoKGFyZzEpOworICAgICAgICBtX2ppdC5wdXNoKEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyKTsKKworICAgICAgICBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9w
ZXJhdGlvbik7CisgICAgICAgIHNldHVwUmVzdWx0cyhyZXN1bHRUYWcsIHJlc3VsdFBheWxvYWQp
OworICAgIH0KICAgICB2b2lkIGNhbGxPcGVyYXRpb24oVl9ERkdPcGVyYXRpb25fRUpKUCBvcGVy
YXRpb24sIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIEdQUlJlZyBhcmcyVGFn
LCBHUFJSZWcgYXJnMlBheWxvYWQsIHZvaWQqIHBvaW50ZXIpCiAgICAgewogICAgICAgICBtX2pp
dC5wdXNoKEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIocmVpbnRlcnByZXRfY2FzdDxpbnQ+KHBv
aW50ZXIpKSk7CkBAIC0xMzU1LDYgKzEzODAsMTcgQEAgcHJvdGVjdGVkOgogCiAgICAgICAgIGFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKICAgICB9CisgICAgdm9pZCBj
YWxsT3BlcmF0aW9uKFZfREZHT3BlcmF0aW9uX0VDSkogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwg
R1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCwgR1BSUmVnIGFyZzNUYWcsIEdQUlJl
ZyBhcmczUGF5bG9hZCkKKyAgICB7CisgICAgICAgIG1faml0LnB1c2goYXJnM1RhZyk7CisgICAg
ICAgIG1faml0LnB1c2goYXJnM1BheWxvYWQpOworICAgICAgICBtX2ppdC5wdXNoKGFyZzJUYWcp
OworICAgICAgICBtX2ppdC5wdXNoKGFyZzJQYXlsb2FkKTsKKyAgICAgICAgbV9qaXQucHVzaChh
cmcxKTsKKyAgICAgICAgbV9qaXQucHVzaChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisK
KyAgICAgICAgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOworICAgIH0K
IAogICAgIHZvaWQgY2FsbE9wZXJhdGlvbihEX0RGR09wZXJhdGlvbl9ERCBvcGVyYXRpb24sIEZQ
UlJlZyByZXN1bHQsIEZQUlJlZyBhcmcxLCBGUFJSZWcgYXJnMikKICAgICB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gOTcwMTQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzIxLDcgKzMyMSw3
IEBAIHN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciogYXJpdGhOb2RlRmxhZ3MKICAgICAvKiBQdXRC
eVZhbEFsaWFzIGluZGljYXRlcyBhICdwdXQnIGFsaWFzZXMgYSBwcmlvciB3cml0ZSB0byB0aGUg
c2FtZSBwcm9wZXJ0eS4gKi9cCiAgICAgLyogU2luY2UgYSBwdXQgdG8gJ2xlbmd0aCcgbWF5IGlu
dmFsaWRhdGUgb3B0aW1pemF0aW9ucyBoZXJlLCAqL1wKICAgICAvKiB0aGlzIG11c3QgYmUgdGhl
IGRpcmVjdGx5IHN1YnNlcXVlbnQgcHJvcGVydHkgcHV0LiAqL1wKLSAgICBtYWNybyhHZXRCeVZh
bCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKEdldEJ5VmFs
LCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZU1pZ2h0Q2xvYmJlcikgXAog
ICAgIG1hY3JvKFB1dEJ5VmFsLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUNsb2JiZXJzV29ybGQp
IFwKICAgICBtYWNybyhQdXRCeVZhbEFsaWFzLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUNsb2Ji
ZXJzV29ybGQpIFwKICAgICBtYWNybyhHZXRCeUlkLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdl
bmVyYXRlIHwgTm9kZUNsb2JiZXJzV29ybGQpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gOTcwMTQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjMs
NiArMjYzLDI2IEBAIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uR2UKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQpKTsKIH0K
IAorRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbENlbGwoRXhl
Y1N0YXRlKiBleGVjLCBKU0NlbGwqIGJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0
eSkKK3sKKyAgICBKU1ZhbHVlIHByb3BlcnR5ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRQcm9w
ZXJ0eSk7CisKKyAgICBpZiAocHJvcGVydHkuaXNVSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGdl
dEJ5VmFsKGV4ZWMsIGJhc2UsIHByb3BlcnR5LmFzVUludDMyKCkpOworICAgIGVsc2UgaWYgKHBy
b3BlcnR5LmlzRG91YmxlKCkpIHsKKyAgICAgICAgZG91YmxlIHByb3BlcnR5QXNEb3VibGUgPSBw
cm9wZXJ0eS5hc0RvdWJsZSgpOworICAgICAgICB1aW50MzJfdCBwcm9wZXJ0eUFzVUludDMyID0g
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KHByb3BlcnR5QXNEb3VibGUpOworICAgICAgICBpZiAocHJv
cGVydHlBc1VJbnQzMiA9PSBwcm9wZXJ0eUFzRG91YmxlKQorICAgICAgICAgICAgcmV0dXJuIGdl
dEJ5VmFsKGV4ZWMsIGJhc2UsIHByb3BlcnR5QXNVSW50MzIpOworICAgIH0gZWxzZSBpZiAocHJv
cGVydHkuaXNTdHJpbmcoKSkgeworICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBiYXNlLT5m
YXN0R2V0T3duUHJvcGVydHkoZXhlYywgYXNTdHJpbmcocHJvcGVydHkpLT52YWx1ZShleGVjKSkp
CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAgfQorCisg
ICAgSWRlbnRpZmllciBpZGVudChleGVjLCBwcm9wZXJ0eS50b1N0cmluZyhleGVjKSk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKGJhc2UpLmdldChleGVjLCBpZGVudCkpOwor
fQorCiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWQoRXhlY1N0
YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgSWRlbnRpZmllciogcHJvcGVy
dHlOYW1lKQogewogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRCYXNlKTsKQEAgLTM2Niw2ICszODYsMTYgQEAgdm9pZCBERkdfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5VmFsTm9uUwogICAgIG9wZXJhdGlvblB1dEJ5VmFsSW50ZXJuYWw8ZmFsc2U+KGV4ZWMs
IGVuY29kZWRCYXNlLCBlbmNvZGVkUHJvcGVydHksIGVuY29kZWRWYWx1ZSk7CiB9CiAKK3ZvaWQg
REZHX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbENlbGxTdHJpY3QoRXhlY1N0YXRlKiBleGVj
LCBKU0NlbGwqIGNlbGwsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQoreworICAgIG9wZXJhdGlvblB1dEJ5VmFsSW50ZXJuYWw8dHJ1
ZT4oZXhlYywgSlNWYWx1ZTo6ZW5jb2RlKGNlbGwpLCBlbmNvZGVkUHJvcGVydHksIGVuY29kZWRW
YWx1ZSk7Cit9CisKK3ZvaWQgREZHX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbENlbGxOb25T
dHJpY3QoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIGNlbGwsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRQcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQoreworICAgIG9wZXJhdGlv
blB1dEJ5VmFsSW50ZXJuYWw8ZmFsc2U+KGV4ZWMsIEpTVmFsdWU6OmVuY29kZShjZWxsKSwgZW5j
b2RlZFByb3BlcnR5LCBlbmNvZGVkVmFsdWUpOworfQorCiB2b2lkIERGR19PUEVSQVRJT04gb3Bl
cmF0aW9uUHV0QnlWYWxCZXlvbmRBcnJheUJvdW5kcyhFeGVjU3RhdGUqIGV4ZWMsIEpTQXJyYXkq
IGFycmF5LCBpbnQzMl90IGluZGV4LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAg
ICAgLy8gV2Ugc2hvdWxkIG9ubHkgZ2V0IGhlcmUgaWYgaW5kZXggaXMgb3V0c2lkZSB0aGUgZXhp
c3RpbmcgdmVjdG9yLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRp
b25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRp
b25zLmgJKHJldmlzaW9uIDk3MDE0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDYgKzU0LDcgQEAgdHlwZWRlZiBKU0Nl
bGwqIERGR19PUEVSQVRJT04gKCpDX0RGR09wZQogdHlwZWRlZiBKU0NlbGwqIERGR19PUEVSQVRJ
T04gKCpDX0RGR09wZXJhdGlvbl9FQykoRXhlY1N0YXRlKiwgSlNDZWxsKik7CiB0eXBlZGVmIEVu
Y29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gKCpKX0RGR09wZXJhdGlvbl9FQSkoRXhlY1N0YXRl
KiwgSlNBcnJheSopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OICgqSl9E
RkdPcGVyYXRpb25fRUpBKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgSlNBcnJheSopOwor
dHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OICgqSl9ERkdPcGVyYXRpb25fRUNK
KShFeGVjU3RhdGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIEVuY29kZWRK
U1ZhbHVlIERGR19PUEVSQVRJT04gKCpKX0RGR09wZXJhdGlvbl9FSkopKEV4ZWNTdGF0ZSosIEVu
Y29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIERG
R19PUEVSQVRJT04gKCpKX0RGR09wZXJhdGlvbl9FSikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFs
dWUpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OICgqSl9ERkdPcGVyYXRp
b25fRUpQKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgdm9pZCopOwpAQCAtNjUsNiArNjYs
NyBAQCB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gKCpKCiB0eXBlZGVmIFJl
Z2lzdGVyU2l6ZWRCb29sZWFuIERGR19PUEVSQVRJT04gKCpaX0RGR09wZXJhdGlvbl9FSikoRXhl
Y1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUpOwogdHlwZWRlZiBSZWdpc3RlclNpemVkQm9vbGVhbiBE
RkdfT1BFUkFUSU9OICgqWl9ERkdPcGVyYXRpb25fRUpKKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUpOwogdHlwZWRlZiB2b2lkIERGR19PUEVSQVRJT04gKCpWX0RG
R09wZXJhdGlvbl9FSkpKKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUsIEVuY29kZWRKU1ZhbHVlKTsKK3R5cGVkZWYgdm9pZCBERkdfT1BFUkFUSU9OICgqVl9ERkdP
cGVyYXRpb25fRUNKSikoRXhlY1N0YXRlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlKTsKIHR5cGVkZWYgdm9pZCBERkdfT1BFUkFUSU9OICgqVl9ERkdPcGVyYXRpb25f
RUpKUCkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCB2b2lkKik7
CiB0eXBlZGVmIHZvaWQgREZHX09QRVJBVElPTiAoKlZfREZHT3BlcmF0aW9uX0VKSkkpKEV4ZWNT
dGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgSWRlbnRpZmllciopOwogdHlw
ZWRlZiBkb3VibGUgKCpEX0RGR09wZXJhdGlvbl9ERCkoZG91YmxlLCBkb3VibGUpOyAvLyBVc2lu
ZyBkZWZhdWx0IGNhbGxpbmcgY29udmVudGlvbnMhCkBAIC04Miw2ICs4NCw3IEBAIEVuY29kZWRK
U1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uQXIKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVS
QVRJT04gb3BlcmF0aW9uQXJpdGhEaXYoRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wMik7CiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJh
dGlvbkFyaXRoTW9kKEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRPcDIpOwogRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZh
bChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFByb3BlcnR5KTsKK0VuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9u
R2V0QnlWYWxDZWxsKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQ
cm9wZXJ0eSk7CiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWQo
RXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIElkZW50aWZpZXIqKTsKIEVu
Y29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZEJ1aWxkTGlzdChFeGVj
U3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgSWRlbnRpZmllciopOwogRW5jb2Rl
ZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkUHJvdG9CdWlsZExpc3QoRXhl
Y1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIElkZW50aWZpZXIqKTsKQEAgLTEw
MCw2ICsxMDMsOCBAQCBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbk5lCiB2
b2lkIERGR19PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3dIYXNJbnN0YW5jZUVycm9yKEV4ZWNTdGF0
ZSosIEVuY29kZWRKU1ZhbHVlIGJhc2UpOwogdm9pZCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblB1
dEJ5VmFsU3RyaWN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVydHksIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSk7
CiB2b2lkIERGR19PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxOb25TdHJpY3QoRXhlY1N0YXRl
KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9w
ZXJ0eSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKTsKK3ZvaWQgREZHX09QRVJBVElPTiBv
cGVyYXRpb25QdXRCeVZhbENlbGxTdHJpY3QoRXhlY1N0YXRlKiwgSlNDZWxsKiwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpOwordm9p
ZCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsQ2VsbE5vblN0cmljdChFeGVjU3RhdGUq
LCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVydHksIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSk7CiB2b2lkIERGR19PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxCZXlv
bmRBcnJheUJvdW5kcyhFeGVjU3RhdGUqLCBKU0FycmF5KiwgaW50MzJfdCBpbmRleCwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKTsKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3Bl
cmF0aW9uQXJyYXlQdXNoKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwg
SlNBcnJheSopOwogRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25BcnJheVBv
cChFeGVjU3RhdGUqLCBKU0FycmF5Kik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1Byb3BhZ2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJvcGFnYXRvci5jcHAJKHJldmlzaW9uIDk3MDE0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcm9wYWdhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODgwLDYgKzg4
MCwxMiBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gaXNCb29sZWFuUHJlZGljdGlvbihwcmVk
aWN0aW9uKSB8fCAhcHJlZGljdGlvbjsKICAgICB9CiAgICAgCisgICAgYm9vbCBieVZhbEhhc0lu
dEJhc2UoTm9kZSYgbm9kZSkKKyAgICB7CisgICAgICAgIFByZWRpY3RlZFR5cGUgcHJlZGljdGlv
biA9IG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0ucHJlZGljdGlvbigpOworICAgICAgICByZXR1cm4g
KHByZWRpY3Rpb24gJiBQcmVkaWN0SW50MzIpIHx8ICFwcmVkaWN0aW9uOworICAgIH0KKyAgICAK
ICAgICBib29sIGNsb2JiZXJzV29ybGQoTm9kZUluZGV4IG5vZGVJbmRleCkKICAgICB7CiAgICAg
ICAgIE5vZGUmIG5vZGUgPSBtX2dyYXBoW25vZGVJbmRleF07CkBAIC04OTcsNiArOTAzLDggQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiAhaXNQcmVkaWN0ZWROdW1lcmljYWwobm9kZSk7
CiAgICAgICAgIGNhc2UgTG9naWNhbE5vdDoKICAgICAgICAgICAgIHJldHVybiAhbG9naWNhbE5v
dElzUHVyZShub2RlKTsKKyAgICAgICAgY2FzZSBHZXRCeVZhbDoKKyAgICAgICAgICAgIHJldHVy
biAhYnlWYWxIYXNJbnRCYXNlKG5vZGUpOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gSWYgYnkg
c29tZSBvZGRpdHkgd2UgaGl0IHRoaXMgY2FzZSBpbiByZWxlYXNlIGJ1aWxkIGl0J3Mgc2FmZXIg
dG8gaGF2ZSBDU0UgYXNzdW1lIHRoZSB3b3JzdC4KQEAgLTEwMTEsMTAgKzEwMTksMTMgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGNhc2UgUHV0QnlWYWw6CiAgICAg
ICAgICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6Ci0gICAgICAgICAgICAgICAgLy8gUHV0QnlWYWwg
Y3VycmVudGx5IGFsd2F5cyBzcGVjdWxhdGVzIHRoYXQgaXQncyBhY2Nlc3NpbmcgYW4gYXJyYXkg
d2l0aCBhbgotICAgICAgICAgICAgICAgIC8vIGludGVnZXIgaW5kZXgsIHdoaWNoIG1lYW5zIHRo
YXQgaXQncyBpbXBvc3NpYmxlIGZvciBpdCB0byBjYXVzZSBhIHN0cnVjdHVyZQotICAgICAgICAg
ICAgICAgIC8vIGNoYW5nZS4KLSAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICBpZiAoYnlWYWxIYXNJbnRCYXNlKG5vZGUpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFB1
dEJ5VmFsIGN1cnJlbnRseSBhbHdheXMgc3BlY3VsYXRlcyB0aGF0IGl0J3MgYWNjZXNzaW5nIGFu
IGFycmF5IHdpdGggYW4KKyAgICAgICAgICAgICAgICAgICAgLy8gaW50ZWdlciBpbmRleCwgd2hp
Y2ggbWVhbnMgdGhhdCBpdCdzIGltcG9zc2libGUgZm9yIGl0IHRvIGNhdXNlIGEgc3RydWN0dXJl
CisgICAgICAgICAgICAgICAgICAgIC8vIGNoYW5nZS4KKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBOb05vZGU7CiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIEFycmF5UHVzaDoKICAgICAgICAgICAg
IGNhc2UgQXJyYXlQb3A6CkBAIC0xMDc2LDEwICsxMDg3LDEzIEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFsOgogICAgICAgICAgICAgY2FzZSBQ
dXRCeVZhbEFsaWFzOgotICAgICAgICAgICAgICAgIC8vIFB1dEJ5VmFsIGN1cnJlbnRseSBhbHdh
eXMgc3BlY3VsYXRlcyB0aGF0IGl0J3MgYWNjZXNzaW5nIGFuIGFycmF5IHdpdGggYW4KLSAgICAg
ICAgICAgICAgICAvLyBpbnRlZ2VyIGluZGV4LCB3aGljaCBtZWFucyB0aGF0IGl0J3MgaW1wb3Nz
aWJsZSBmb3IgaXQgdG8gY2F1c2UgYSBzdHJ1Y3R1cmUKLSAgICAgICAgICAgICAgICAvLyBjaGFu
Z2UuCi0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaWYgKGJ5VmFsSGFz
SW50QmFzZShub2RlKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBQdXRCeVZhbCBjdXJyZW50
bHkgYWx3YXlzIHNwZWN1bGF0ZXMgdGhhdCBpdCdzIGFjY2Vzc2luZyBhbiBhcnJheSB3aXRoIGFu
CisgICAgICAgICAgICAgICAgICAgIC8vIGludGVnZXIgaW5kZXgsIHdoaWNoIG1lYW5zIHRoYXQg
aXQncyBpbXBvc3NpYmxlIGZvciBpdCB0byBjYXVzZSBhIHN0cnVjdHVyZQorICAgICAgICAgICAg
ICAgICAgICAvLyBjaGFuZ2UuCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGlmIChjbG9iYmVyc1dvcmxk
KGluZGV4KSkKQEAgLTExMTYsMTAgKzExMzAsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFs
QWxpYXM6Ci0gICAgICAgICAgICAgICAgLy8gUHV0QnlWYWwgY3VycmVudGx5IGFsd2F5cyBzcGVj
dWxhdGVzIHRoYXQgaXQncyBhY2Nlc3NpbmcgYW4gYXJyYXkgd2l0aCBhbgotICAgICAgICAgICAg
ICAgIC8vIGludGVnZXIgaW5kZXgsIHdoaWNoIG1lYW5zIHRoYXQgaXQncyBpbXBvc3NpYmxlIGZv
ciBpdCB0byBjYXVzZSBhIHN0cnVjdHVyZQotICAgICAgICAgICAgICAgIC8vIGNoYW5nZS4KLSAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBpZiAoYnlWYWxIYXNJbnRCYXNl
KG5vZGUpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFB1dEJ5VmFsIGN1cnJlbnRseSBhbHdh
eXMgc3BlY3VsYXRlcyB0aGF0IGl0J3MgYWNjZXNzaW5nIGFuIGFycmF5IHdpdGggYW4KKyAgICAg
ICAgICAgICAgICAgICAgLy8gaW50ZWdlciBpbmRleCwgd2hpY2ggbWVhbnMgdGhhdCBpdCdzIGlt
cG9zc2libGUgZm9yIGl0IHRvIGNhdXNlIGEgc3RydWN0dXJlCisgICAgICAgICAgICAgICAgICAg
IC8vIGNoYW5nZS4KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIHJldHVybiBOb05vZGU7CiAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGlmIChjbG9iYmVyc1dvcmxkKGluZGV4
KSkKQEAgLTExNDksMTAgKzExNjYsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6
Ci0gICAgICAgICAgICAgICAgLy8gUHV0QnlWYWwgY3VycmVudGx5IGFsd2F5cyBzcGVjdWxhdGVz
IHRoYXQgaXQncyBhY2Nlc3NpbmcgYW4gYXJyYXkgd2l0aCBhbgotICAgICAgICAgICAgICAgIC8v
IGludGVnZXIgaW5kZXgsIHdoaWNoIG1lYW5zIHRoYXQgaXQncyBpbXBvc3NpYmxlIGZvciBpdCB0
byBjYXVzZSBhIHN0cnVjdHVyZQotICAgICAgICAgICAgICAgIC8vIGNoYW5nZS4KLSAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBpZiAoYnlWYWxIYXNJbnRCYXNlKG5vZGUp
KSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFB1dEJ5VmFsIGN1cnJlbnRseSBhbHdheXMgc3Bl
Y3VsYXRlcyB0aGF0IGl0J3MgYWNjZXNzaW5nIGFuIGFycmF5IHdpdGggYW4KKyAgICAgICAgICAg
ICAgICAgICAgLy8gaW50ZWdlciBpbmRleCwgd2hpY2ggbWVhbnMgdGhhdCBpdCdzIGltcG9zc2li
bGUgZm9yIGl0IHRvIGNhdXNlIGEgc3RydWN0dXJlCisgICAgICAgICAgICAgICAgICAgIC8vIGNo
YW5nZS4KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIHJldHVybiBOb05vZGU7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGlmIChjbG9iYmVyc1dvcmxkKGluZGV4KSkKQEAg
LTEzMjEsMTEgKzEzNDEsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgCiAgICAgICAgIGNhc2UgR2V0QnlWYWw6Ci0gICAgICAgICAgICBzZXRSZXBsYWNlbWVu
dChnZXRCeVZhbExvYWRFbGltaW5hdGlvbihub2RlLmNoaWxkMSgpLCBub2RlLmNoaWxkMigpKSk7
CisgICAgICAgICAgICBpZiAoYnlWYWxIYXNJbnRCYXNlKG5vZGUpKQorICAgICAgICAgICAgICAg
IHNldFJlcGxhY2VtZW50KGdldEJ5VmFsTG9hZEVsaW1pbmF0aW9uKG5vZGUuY2hpbGQxKCksIG5v
ZGUuY2hpbGQyKCkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAg
IGNhc2UgUHV0QnlWYWw6Ci0gICAgICAgICAgICBpZiAoZ2V0QnlWYWxMb2FkRWxpbWluYXRpb24o
bm9kZS5jaGlsZDEoKSwgbm9kZS5jaGlsZDIoKSkgIT0gTm9Ob2RlKQorICAgICAgICAgICAgaWYg
KGJ5VmFsSGFzSW50QmFzZShub2RlKSAmJiBnZXRCeVZhbExvYWRFbGltaW5hdGlvbihub2RlLmNo
aWxkMSgpLCBub2RlLmNoaWxkMigpKSAhPSBOb05vZGUpCiAgICAgICAgICAgICAgICAgbm9kZS5v
cCA9IFB1dEJ5VmFsQWxpYXM7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwCShyZXZpc2lvbiA5NzAxNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNzIsNiArMTI3
MiwyMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgfQog
CiAgICAgY2FzZSBHZXRCeVZhbDogeworICAgICAgICBQcmVkaWN0ZWRUeXBlIGJhc2VQcmVkaWN0
aW9uID0gYXQobm9kZS5jaGlsZDIoKSkucHJlZGljdGlvbigpOworICAgICAgICBpZiAoIShiYXNl
UHJlZGljdGlvbiAmIFByZWRpY3RJbnQzMikgJiYgYmFzZVByZWRpY3Rpb24pIHsKKyAgICAgICAg
ICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7IC8vIFNh
dmUgYSByZWdpc3Rlciwgc3BlY3VsYXRlIGNlbGwuIFdlJ2xsIHByb2JhYmx5IGJlIHJpZ2h0Lgor
ICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgcHJvcGVydHkodGhpcywgbm9kZS5jaGlsZDIoKSk7
CisgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CisgICAgICAgICAgICBH
UFJSZWcgcHJvcGVydHlUYWdHUFIgPSBwcm9wZXJ0eS50YWdHUFIoKTsKKyAgICAgICAgICAgIEdQ
UlJlZyBwcm9wZXJ0eVBheWxvYWRHUFIgPSBwcm9wZXJ0eS5wYXlsb2FkR1BSKCk7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgICAgICBHUFJSZXN1
bHQyIHJlc3VsdFRhZyh0aGlzKTsKKyAgICAgICAgICAgIEdQUlJlc3VsdCByZXN1bHRQYXlsb2Fk
KHRoaXMpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbENlbGws
IHJlc3VsdFRhZy5ncHIoKSwgcmVzdWx0UGF5bG9hZC5ncHIoKSwgYmFzZUdQUiwgcHJvcGVydHlU
YWdHUFIsIHByb3BlcnR5UGF5bG9hZEdQUik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGpz
VmFsdWVSZXN1bHQocmVzdWx0VGFnLmdwcigpLCByZXN1bHRQYXlsb2FkLmdwcigpLCBtX2NvbXBp
bGVJbmRleCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGlmIChh
dChub2RlLmNoaWxkMSgpKS5wcmVkaWN0aW9uKCkgPT0gUHJlZGljdFN0cmluZykgewogICAgICAg
ICAgICAgY29tcGlsZUdldEJ5VmFsT25TdHJpbmcobm9kZSk7CiAgICAgICAgICAgICBpZiAoIW1f
Y29tcGlsZU9rYXkpCkBAIC0xMzE0LDYgKzEzMzEsMjQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlJiBub2RlKQogICAgIH0KIAogICAgIGNhc2UgUHV0QnlWYWw6IHsKKyAgICAg
ICAgUHJlZGljdGVkVHlwZSBiYXNlUHJlZGljdGlvbiA9IGF0KG5vZGUuY2hpbGQyKCkpLnByZWRp
Y3Rpb24oKTsKKyAgICAgICAgaWYgKCEoYmFzZVByZWRpY3Rpb24gJiBQcmVkaWN0SW50MzIpICYm
IGJhc2VQcmVkaWN0aW9uKSB7CisgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNl
KHRoaXMsIG5vZGUuY2hpbGQxKCkpOyAvLyBTYXZlIGEgcmVnaXN0ZXIsIHNwZWN1bGF0ZSBjZWxs
LiBXZSdsbCBwcm9iYWJseSBiZSByaWdodC4KKyAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHBy
b3BlcnR5KHRoaXMsIG5vZGUuY2hpbGQyKCkpOworICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQg
dmFsdWUodGhpcywgbm9kZS5jaGlsZDMoKSk7CisgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9
IGJhc2UuZ3ByKCk7CisgICAgICAgICAgICBHUFJSZWcgcHJvcGVydHlUYWdHUFIgPSBwcm9wZXJ0
eS50YWdHUFIoKTsKKyAgICAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eVBheWxvYWRHUFIgPSBwcm9w
ZXJ0eS5wYXlsb2FkR1BSKCk7CisgICAgICAgICAgICBHUFJSZWcgdmFsdWVUYWdHUFIgPSB2YWx1
ZS50YWdHUFIoKTsKKyAgICAgICAgICAgIEdQUlJlZyB2YWx1ZVBheWxvYWRHUFIgPSB2YWx1ZS5w
YXlsb2FkR1BSKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7
CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG1faml0LmNvZGVCbG9jaygpLT5pc1N0cmljdE1v
ZGUoKSA/IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQ2Vs
bE5vblN0cmljdCwgYmFzZUdQUiwgcHJvcGVydHlUYWdHUFIsIHByb3BlcnR5UGF5bG9hZEdQUiwg
dmFsdWVUYWdHUFIsIHZhbHVlUGF5bG9hZEdQUik7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgp
KTsKICAgICAgICAgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG5v
ZGUuY2hpbGQyKCkpOwogICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLmNo
aWxkMygpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gOTcwMTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgzLDYg
KzEzODMsMjEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAg
IH0KIAogICAgIGNhc2UgR2V0QnlWYWw6IHsKKyAgICAgICAgUHJlZGljdGVkVHlwZSBiYXNlUHJl
ZGljdGlvbiA9IGF0KG5vZGUuY2hpbGQyKCkpLnByZWRpY3Rpb24oKTsKKyAgICAgICAgaWYgKCEo
YmFzZVByZWRpY3Rpb24gJiBQcmVkaWN0SW50MzIpICYmIGJhc2VQcmVkaWN0aW9uKSB7CisgICAg
ICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgICAg
ICAgICAgSlNWYWx1ZU9wZXJhbmQgcHJvcGVydHkodGhpcywgbm9kZS5jaGlsZDIoKSk7CisgICAg
ICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CisgICAgICAgICAgICBHUFJSZWcg
cHJvcGVydHlHUFIgPSBwcm9wZXJ0eS5ncHIoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
Zmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgICAgIEdQUlJlc3VsdCByZXN1bHQodGhpcyk7Cisg
ICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5VmFsLCByZXN1bHQuZ3ByKCks
IGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAganNWYWx1
ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkucHJl
ZGljdGlvbigpID09IFByZWRpY3RTdHJpbmcpIHsKICAgICAgICAgICAgIGNvbXBpbGVHZXRCeVZh
bE9uU3RyaW5nKG5vZGUpOwogICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQpAQCAtMTQy
NCw2ICsxNDM5LDIyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkK
ICAgICB9CiAKICAgICBjYXNlIFB1dEJ5VmFsOiB7CisgICAgICAgIFByZWRpY3RlZFR5cGUgYmFz
ZVByZWRpY3Rpb24gPSBhdChub2RlLmNoaWxkMigpKS5wcmVkaWN0aW9uKCk7CisgICAgICAgIGlm
ICghKGJhc2VQcmVkaWN0aW9uICYgUHJlZGljdEludDMyKSAmJiBiYXNlUHJlZGljdGlvbikgewor
ICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYXJnMSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAg
ICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGFyZzIodGhpcywgbm9kZS5jaGlsZDIoKSk7CisgICAg
ICAgICAgICBKU1ZhbHVlT3BlcmFuZCBhcmczKHRoaXMsIG5vZGUuY2hpbGQzKCkpOworICAgICAg
ICAgICAgR1BSUmVnIGFyZzFHUFIgPSBhcmcxLmdwcigpOworICAgICAgICAgICAgR1BSUmVnIGFy
ZzJHUFIgPSBhcmcyLmdwcigpOworICAgICAgICAgICAgR1BSUmVnIGFyZzNHUFIgPSBhcmczLmdw
cigpOworICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgY2FsbE9wZXJhdGlvbihtX2ppdC5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkgPyBv
cGVyYXRpb25QdXRCeVZhbFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsTm9uU3RyaWN0LCBhcmcx
R1BSLCBhcmcyR1BSLCBhcmczR1BSKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgbm9SZXN1
bHQobV9jb21waWxlSW5kZXgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAg
ICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAg
ICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgcHJvcGVydHkodGhpcywgbm9kZS5jaGls
ZDIoKSk7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUuY2hpbGQzKCkp
OwpAQCAtMTQ4OCw2ICsxNTE5LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
JiBub2RlKQogICAgIH0KIAogICAgIGNhc2UgUHV0QnlWYWxBbGlhczogeworICAgICAgICBQcmVk
aWN0ZWRUeXBlIGJhc2VQcmVkaWN0aW9uID0gYXQobm9kZS5jaGlsZDIoKSkucHJlZGljdGlvbigp
OworICAgICAgICBBU1NFUlRfVU5VU0VEKGJhc2VQcmVkaWN0aW9uLCAoYmFzZVByZWRpY3Rpb24g
JiBQcmVkaWN0SW50MzIpIHx8ICFiYXNlUHJlZGljdGlvbik7CisgICAgICAgICAgICAKICAgICAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAg
ICAgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG5vZGUuY2hpbGQy
KCkpOwogICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLmNoaWxkMygpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110295</attachid>
            <date>2011-10-09 01:47:55 -0700</date>
            <delta_ts>2011-10-09 10:13:57 -0700</delta_ts>
            <desc>the patch - another attempt to make stylebot happy</desc>
            <filename>byvalnotint_patch_3.diff</filename>
            <type>text/plain</type>
            <size>20857</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTcwMjEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAK
KzIwMTEtMTAtMDkgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBE
Rkcgc2hvdWxkIG5vdCBhbHdheXMgc3BlY3VsYXRlIHRoYXQgYSBCeVZhbCBhY2Nlc3MgaGFzIGFu
IGludGVnZXIgaW5kZXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY5NzE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAg
ICAgIAorICAgICAgICAxJSB3aW4gb24gU3VuU3BpZGVyLCBuZXV0cmFsIGVsc2V3aGVyZS4KKwor
ICAgICAgICAqIGRmZy9ERkdKSVRDb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkRGRzo6
Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKiBkZmcv
REZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAg
ICAgKiBkZmcvREZHUHJvcGFnYXRvci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGFnYXRv
cjo6YnlWYWxIYXNJbnRCYXNlKToKKyAgICAgICAgKEpTQzo6REZHOjpQcm9wYWdhdG9yOjpjbG9i
YmVyc1dvcmxkKToKKyAgICAgICAgKEpTQzo6REZHOjpQcm9wYWdhdG9yOjpnZXRNZXRob2RMb2Fk
RWxpbWluYXRpb24pOgorICAgICAgICAoSlNDOjpERkc6OlByb3BhZ2F0b3I6OmNoZWNrU3RydWN0
dXJlTG9hZEVsaW1pbmF0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpQcm9wYWdhdG9yOjpnZXRC
eU9mZnNldExvYWRFbGltaW5hdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGFnYXRvcjo6
Z2V0UHJvcGVydHlTdG9yYWdlTG9hZEVsaW1pbmF0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpQ
cm9wYWdhdG9yOjpwZXJmb3JtTm9kZUNTRSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorCiAyMDExLTEwLTA4ICBNYXJrIEhhaG5l
bmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN0YXRpYyB2ZXJz
aW9uIG9mIEpTQ2VsbDo6Z2V0Q29uc3RydWN0RGF0YQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdKSVRDb2RlR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDk3MDE0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTExNTQsNiArMTE1NCwxNCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGFwcGVuZENh
bGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKICAgICAgICAgbV9qaXQubW92ZShHUFJJ
bmZvOjpyZXR1cm5WYWx1ZUdQUiwgcmVzdWx0KTsKICAgICB9CisgICAgdm9pZCBjYWxsT3BlcmF0
aW9uKEpfREZHT3BlcmF0aW9uX0VDSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBh
cmcxLCBHUFJSZWcgYXJnMikKKyAgICB7CisgICAgICAgIHNldHVwU3R1YkFyZ3VtZW50cyhhcmcx
LCBhcmcyKTsKKyAgICAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKworICAgICAgICBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrKG9wZXJhdGlvbik7CisgICAgICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6cmV0dXJuVmFs
dWVHUFIsIHJlc3VsdCk7CisgICAgfQogICAgIHZvaWQgY2FsbE9wZXJhdGlvbihWX0RGR09wZXJh
dGlvbl9FSkpQIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCB2b2lkKiBwb2lu
dGVyKQogICAgIHsKICAgICAgICAgc2V0dXBTdHViQXJndW1lbnRzKGFyZzEsIGFyZzIpOwpAQCAt
MTE3Myw2ICsxMTgxLDEzIEBAIHByb3RlY3RlZDoKIAogICAgICAgICBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiAgICAgfQorICAgIHZvaWQgY2FsbE9wZXJhdGlvbihW
X0RGR09wZXJhdGlvbl9FQ0pKIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBH
UFJSZWcgYXJnMykKKyAgICB7CisgICAgICAgIHNldHVwU3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcy
LCBhcmczKTsKKyAgICAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKworICAgICAgICBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrKG9wZXJhdGlvbik7CisgICAgfQogICAgIHZvaWQgY2FsbE9wZXJhdGlvbihEX0RGR09w
ZXJhdGlvbl9ERCBvcGVyYXRpb24sIEZQUlJlZyByZXN1bHQsIEZQUlJlZyBhcmcxLCBGUFJSZWcg
YXJnMikKICAgICB7CiAgICAgICAgIHNldHVwVHdvU3R1YkFyZ3M8RlBSSW5mbzo6YXJndW1lbnRG
UFIwLCBGUFJJbmZvOjphcmd1bWVudEZQUjE+KGFyZzEsIGFyZzIpOwpAQCAtMTMyOCw2ICsxMzQz
LDE2IEBAIHByb3RlY3RlZDoKICAgICAgICAgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhv
cGVyYXRpb24pOwogICAgICAgICBzZXR1cFJlc3VsdHMocmVzdWx0VGFnLCByZXN1bHRQYXlsb2Fk
KTsKICAgICB9CisgICAgdm9pZCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0aW9uX0VDSiBvcGVy
YXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJn
MSwgR1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCkKKyAgICB7CisgICAgICAgIG1f
aml0LnB1c2goYXJnMlRhZyk7CisgICAgICAgIG1faml0LnB1c2goYXJnMlBheWxvYWQpOworICAg
ICAgICBtX2ppdC5wdXNoKGFyZzEpOworICAgICAgICBtX2ppdC5wdXNoKEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyKTsKKworICAgICAgICBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9w
ZXJhdGlvbik7CisgICAgICAgIHNldHVwUmVzdWx0cyhyZXN1bHRUYWcsIHJlc3VsdFBheWxvYWQp
OworICAgIH0KICAgICB2b2lkIGNhbGxPcGVyYXRpb24oVl9ERkdPcGVyYXRpb25fRUpKUCBvcGVy
YXRpb24sIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIEdQUlJlZyBhcmcyVGFn
LCBHUFJSZWcgYXJnMlBheWxvYWQsIHZvaWQqIHBvaW50ZXIpCiAgICAgewogICAgICAgICBtX2pp
dC5wdXNoKEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIocmVpbnRlcnByZXRfY2FzdDxpbnQ+KHBv
aW50ZXIpKSk7CkBAIC0xMzU1LDYgKzEzODAsMTcgQEAgcHJvdGVjdGVkOgogCiAgICAgICAgIGFw
cGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKICAgICB9CisgICAgdm9pZCBj
YWxsT3BlcmF0aW9uKFZfREZHT3BlcmF0aW9uX0VDSkogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwg
R1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCwgR1BSUmVnIGFyZzNUYWcsIEdQUlJl
ZyBhcmczUGF5bG9hZCkKKyAgICB7CisgICAgICAgIG1faml0LnB1c2goYXJnM1RhZyk7CisgICAg
ICAgIG1faml0LnB1c2goYXJnM1BheWxvYWQpOworICAgICAgICBtX2ppdC5wdXNoKGFyZzJUYWcp
OworICAgICAgICBtX2ppdC5wdXNoKGFyZzJQYXlsb2FkKTsKKyAgICAgICAgbV9qaXQucHVzaChh
cmcxKTsKKyAgICAgICAgbV9qaXQucHVzaChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisK
KyAgICAgICAgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOworICAgIH0K
IAogICAgIHZvaWQgY2FsbE9wZXJhdGlvbihEX0RGR09wZXJhdGlvbl9ERCBvcGVyYXRpb24sIEZQ
UlJlZyByZXN1bHQsIEZQUlJlZyBhcmcxLCBGUFJSZWcgYXJnMikKICAgICB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gOTcwMTQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzIxLDcgKzMyMSw3
IEBAIHN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciogYXJpdGhOb2RlRmxhZ3MKICAgICAvKiBQdXRC
eVZhbEFsaWFzIGluZGljYXRlcyBhICdwdXQnIGFsaWFzZXMgYSBwcmlvciB3cml0ZSB0byB0aGUg
c2FtZSBwcm9wZXJ0eS4gKi9cCiAgICAgLyogU2luY2UgYSBwdXQgdG8gJ2xlbmd0aCcgbWF5IGlu
dmFsaWRhdGUgb3B0aW1pemF0aW9ucyBoZXJlLCAqL1wKICAgICAvKiB0aGlzIG11c3QgYmUgdGhl
IGRpcmVjdGx5IHN1YnNlcXVlbnQgcHJvcGVydHkgcHV0LiAqL1wKLSAgICBtYWNybyhHZXRCeVZh
bCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKEdldEJ5VmFs
LCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZU1pZ2h0Q2xvYmJlcikgXAog
ICAgIG1hY3JvKFB1dEJ5VmFsLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUNsb2JiZXJzV29ybGQp
IFwKICAgICBtYWNybyhQdXRCeVZhbEFsaWFzLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUNsb2Ji
ZXJzV29ybGQpIFwKICAgICBtYWNybyhHZXRCeUlkLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdl
bmVyYXRlIHwgTm9kZUNsb2JiZXJzV29ybGQpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gOTcwMTQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjMs
NiArMjYzLDI2IEBAIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uR2UKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQpKTsKIH0K
IAorRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbENlbGwoRXhl
Y1N0YXRlKiBleGVjLCBKU0NlbGwqIGJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0
eSkKK3sKKyAgICBKU1ZhbHVlIHByb3BlcnR5ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRQcm9w
ZXJ0eSk7CisKKyAgICBpZiAocHJvcGVydHkuaXNVSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGdl
dEJ5VmFsKGV4ZWMsIGJhc2UsIHByb3BlcnR5LmFzVUludDMyKCkpOworICAgIGlmIChwcm9wZXJ0
eS5pc0RvdWJsZSgpKSB7CisgICAgICAgIGRvdWJsZSBwcm9wZXJ0eUFzRG91YmxlID0gcHJvcGVy
dHkuYXNEb3VibGUoKTsKKyAgICAgICAgdWludDMyX3QgcHJvcGVydHlBc1VJbnQzMiA9IHN0YXRp
Y19jYXN0PHVpbnQzMl90Pihwcm9wZXJ0eUFzRG91YmxlKTsKKyAgICAgICAgaWYgKHByb3BlcnR5
QXNVSW50MzIgPT0gcHJvcGVydHlBc0RvdWJsZSkKKyAgICAgICAgICAgIHJldHVybiBnZXRCeVZh
bChleGVjLCBiYXNlLCBwcm9wZXJ0eUFzVUludDMyKTsKKyAgICB9IGVsc2UgaWYgKHByb3BlcnR5
LmlzU3RyaW5nKCkpIHsKKyAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gYmFzZS0+ZmFzdEdl
dE93blByb3BlcnR5KGV4ZWMsIGFzU3RyaW5nKHByb3BlcnR5KS0+dmFsdWUoZXhlYykpKQorICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworICAgIH0KKworICAgIElk
ZW50aWZpZXIgaWRlbnQoZXhlYywgcHJvcGVydHkudG9TdHJpbmcoZXhlYykpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShiYXNlKS5nZXQoZXhlYywgaWRlbnQpKTsKK30KKwog
RW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkKEV4ZWNTdGF0ZSog
ZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIElkZW50aWZpZXIqIHByb3BlcnR5TmFt
ZSkKIHsKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFz
ZSk7CkBAIC0zNjYsNiArMzg2LDE2IEBAIHZvaWQgREZHX09QRVJBVElPTiBvcGVyYXRpb25QdXRC
eVZhbE5vblMKICAgICBvcGVyYXRpb25QdXRCeVZhbEludGVybmFsPGZhbHNlPihleGVjLCBlbmNv
ZGVkQmFzZSwgZW5jb2RlZFByb3BlcnR5LCBlbmNvZGVkVmFsdWUpOwogfQogCit2b2lkIERGR19P
UEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgSlND
ZWxsKiBjZWxsLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVydHksIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkKK3sKKyAgICBvcGVyYXRpb25QdXRCeVZhbEludGVybmFsPHRydWU+KGV4
ZWMsIEpTVmFsdWU6OmVuY29kZShjZWxsKSwgZW5jb2RlZFByb3BlcnR5LCBlbmNvZGVkVmFsdWUp
OworfQorCit2b2lkIERGR19PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxDZWxsTm9uU3RyaWN0
KEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBjZWxsLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJv
cGVydHksIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK3sKKyAgICBvcGVyYXRpb25QdXRC
eVZhbEludGVybmFsPGZhbHNlPihleGVjLCBKU1ZhbHVlOjplbmNvZGUoY2VsbCksIGVuY29kZWRQ
cm9wZXJ0eSwgZW5jb2RlZFZhbHVlKTsKK30KKwogdm9pZCBERkdfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHMoRXhlY1N0YXRlKiBleGVjLCBKU0FycmF5KiBhcnJh
eSwgaW50MzJfdCBpbmRleCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIC8v
IFdlIHNob3VsZCBvbmx5IGdldCBoZXJlIGlmIGluZGV4IGlzIG91dHNpZGUgdGhlIGV4aXN0aW5n
IHZlY3Rvci4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5o
CShyZXZpc2lvbiA5NzAxNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1NCw3IEBAIHR5cGVkZWYgSlNDZWxsKiBE
RkdfT1BFUkFUSU9OICgqQ19ERkdPcGUKIHR5cGVkZWYgSlNDZWxsKiBERkdfT1BFUkFUSU9OICgq
Q19ERkdPcGVyYXRpb25fRUMpKEV4ZWNTdGF0ZSosIEpTQ2VsbCopOwogdHlwZWRlZiBFbmNvZGVk
SlNWYWx1ZSBERkdfT1BFUkFUSU9OICgqSl9ERkdPcGVyYXRpb25fRUEpKEV4ZWNTdGF0ZSosIEpT
QXJyYXkqKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiAoKkpfREZHT3Bl
cmF0aW9uX0VKQSkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEpTQXJyYXkqKTsKK3R5cGVk
ZWYgRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiAoKkpfREZHT3BlcmF0aW9uX0VDSikoRXhl
Y1N0YXRlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1
ZSBERkdfT1BFUkFUSU9OICgqSl9ERkdPcGVyYXRpb25fRUpKKShFeGVjU3RhdGUqLCBFbmNvZGVk
SlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BF
UkFUSU9OICgqSl9ERkdPcGVyYXRpb25fRUopKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlKTsK
IHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiAoKkpfREZHT3BlcmF0aW9uX0VK
UCkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIHZvaWQqKTsKQEAgLTY1LDYgKzY2LDcgQEAg
dHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OICgqSgogdHlwZWRlZiBSZWdpc3Rl
clNpemVkQm9vbGVhbiBERkdfT1BFUkFUSU9OICgqWl9ERkdPcGVyYXRpb25fRUopKEV4ZWNTdGF0
ZSosIEVuY29kZWRKU1ZhbHVlKTsKIHR5cGVkZWYgUmVnaXN0ZXJTaXplZEJvb2xlYW4gREZHX09Q
RVJBVElPTiAoKlpfREZHT3BlcmF0aW9uX0VKSikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUs
IEVuY29kZWRKU1ZhbHVlKTsKIHR5cGVkZWYgdm9pZCBERkdfT1BFUkFUSU9OICgqVl9ERkdPcGVy
YXRpb25fRUpKSikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSk7Cit0eXBlZGVmIHZvaWQgREZHX09QRVJBVElPTiAoKlZfREZHT3BlcmF0
aW9uX0VDSkopKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSk7CiB0eXBlZGVmIHZvaWQgREZHX09QRVJBVElPTiAoKlZfREZHT3BlcmF0aW9uX0VKSlAp
KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgdm9pZCopOwogdHlw
ZWRlZiB2b2lkIERGR19PUEVSQVRJT04gKCpWX0RGR09wZXJhdGlvbl9FSkpJKShFeGVjU3RhdGUq
LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIElkZW50aWZpZXIqKTsKIHR5cGVkZWYg
ZG91YmxlICgqRF9ERkdPcGVyYXRpb25fREQpKGRvdWJsZSwgZG91YmxlKTsgLy8gVXNpbmcgZGVm
YXVsdCBjYWxsaW5nIGNvbnZlbnRpb25zIQpAQCAtODIsNiArODQsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkFyCiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9O
IG9wZXJhdGlvbkFyaXRoRGl2KEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDIpOwogRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25B
cml0aE1vZChFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3AyKTsKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWwoRXhl
Y1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRQcm9wZXJ0eSk7CitFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5
VmFsQ2VsbChFeGVjU3RhdGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVy
dHkpOwogRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkKEV4ZWNT
dGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBJZGVudGlmaWVyKik7CiBFbmNvZGVk
SlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRCdWlsZExpc3QoRXhlY1N0YXRl
KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIElkZW50aWZpZXIqKTsKIEVuY29kZWRKU1Zh
bHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZFByb3RvQnVpbGRMaXN0KEV4ZWNTdGF0
ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBJZGVudGlmaWVyKik7CkBAIC0xMDAsNiAr
MTAzLDggQEAgRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25OZQogdm9pZCBE
RkdfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93SGFzSW5zdGFuY2VFcnJvcihFeGVjU3RhdGUqLCBF
bmNvZGVkSlNWYWx1ZSBiYXNlKTsKIHZvaWQgREZHX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZh
bFN0cmljdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpOwogdm9p
ZCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsTm9uU3RyaWN0KEV4ZWNTdGF0ZSosIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVydHks
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSk7Cit2b2lkIERGR19PUEVSQVRJT04gb3BlcmF0
aW9uUHV0QnlWYWxDZWxsU3RyaWN0KEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRQcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKTsKK3ZvaWQgREZH
X09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbENlbGxOb25TdHJpY3QoRXhlY1N0YXRlKiwgSlND
ZWxsKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpOwogdm9pZCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJy
YXlCb3VuZHMoRXhlY1N0YXRlKiwgSlNBcnJheSosIGludDMyX3QgaW5kZXgsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSk7CiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlv
bkFycmF5UHVzaChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEpTQXJy
YXkqKTsKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uQXJyYXlQb3AoRXhl
Y1N0YXRlKiwgSlNBcnJheSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cm9wYWdhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1Byb3BhZ2F0b3IuY3BwCShyZXZpc2lvbiA5NzAxNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJvcGFnYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4MCw2ICs4ODAsMTIg
QEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIGlzQm9vbGVhblByZWRpY3Rpb24ocHJlZGljdGlv
bikgfHwgIXByZWRpY3Rpb247CiAgICAgfQogICAgIAorICAgIGJvb2wgYnlWYWxIYXNJbnRCYXNl
KE5vZGUmIG5vZGUpCisgICAgeworICAgICAgICBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb24gPSBt
X2dyYXBoW25vZGUuY2hpbGQyKCldLnByZWRpY3Rpb24oKTsKKyAgICAgICAgcmV0dXJuIChwcmVk
aWN0aW9uICYgUHJlZGljdEludDMyKSB8fCAhcHJlZGljdGlvbjsKKyAgICB9CisgICAgCiAgICAg
Ym9vbCBjbG9iYmVyc1dvcmxkKE5vZGVJbmRleCBub2RlSW5kZXgpCiAgICAgewogICAgICAgICBO
b2RlJiBub2RlID0gbV9ncmFwaFtub2RlSW5kZXhdOwpAQCAtODk3LDYgKzkwMyw4IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICByZXR1cm4gIWlzUHJlZGljdGVkTnVtZXJpY2FsKG5vZGUpOwogICAg
ICAgICBjYXNlIExvZ2ljYWxOb3Q6CiAgICAgICAgICAgICByZXR1cm4gIWxvZ2ljYWxOb3RJc1B1
cmUobm9kZSk7CisgICAgICAgIGNhc2UgR2V0QnlWYWw6CisgICAgICAgICAgICByZXR1cm4gIWJ5
VmFsSGFzSW50QmFzZShub2RlKTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7IC8vIElmIGJ5IHNvbWUg
b2RkaXR5IHdlIGhpdCB0aGlzIGNhc2UgaW4gcmVsZWFzZSBidWlsZCBpdCdzIHNhZmVyIHRvIGhh
dmUgQ1NFIGFzc3VtZSB0aGUgd29yc3QuCkBAIC0xMDExLDEwICsxMDE5LDEzIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFsOgogICAgICAgICAg
ICAgY2FzZSBQdXRCeVZhbEFsaWFzOgotICAgICAgICAgICAgICAgIC8vIFB1dEJ5VmFsIGN1cnJl
bnRseSBhbHdheXMgc3BlY3VsYXRlcyB0aGF0IGl0J3MgYWNjZXNzaW5nIGFuIGFycmF5IHdpdGgg
YW4KLSAgICAgICAgICAgICAgICAvLyBpbnRlZ2VyIGluZGV4LCB3aGljaCBtZWFucyB0aGF0IGl0
J3MgaW1wb3NzaWJsZSBmb3IgaXQgdG8gY2F1c2UgYSBzdHJ1Y3R1cmUKLSAgICAgICAgICAgICAg
ICAvLyBjaGFuZ2UuCi0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaWYg
KGJ5VmFsSGFzSW50QmFzZShub2RlKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBQdXRCeVZh
bCBjdXJyZW50bHkgYWx3YXlzIHNwZWN1bGF0ZXMgdGhhdCBpdCdzIGFjY2Vzc2luZyBhbiBhcnJh
eSB3aXRoIGFuCisgICAgICAgICAgICAgICAgICAgIC8vIGludGVnZXIgaW5kZXgsIHdoaWNoIG1l
YW5zIHRoYXQgaXQncyBpbXBvc3NpYmxlIGZvciBpdCB0byBjYXVzZSBhIHN0cnVjdHVyZQorICAg
ICAgICAgICAgICAgICAgICAvLyBjaGFuZ2UuCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gTm9Ob2RlOwogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgY2FzZSBBcnJheVB1c2g6CiAgICAgICAgICAgICBjYXNl
IEFycmF5UG9wOgpAQCAtMTA3NiwxMCArMTA4NywxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgY2FzZSBQdXRCeVZhbDoKICAgICAgICAgICAgIGNhc2UgUHV0QnlW
YWxBbGlhczoKLSAgICAgICAgICAgICAgICAvLyBQdXRCeVZhbCBjdXJyZW50bHkgYWx3YXlzIHNw
ZWN1bGF0ZXMgdGhhdCBpdCdzIGFjY2Vzc2luZyBhbiBhcnJheSB3aXRoIGFuCi0gICAgICAgICAg
ICAgICAgLy8gaW50ZWdlciBpbmRleCwgd2hpY2ggbWVhbnMgdGhhdCBpdCdzIGltcG9zc2libGUg
Zm9yIGl0IHRvIGNhdXNlIGEgc3RydWN0dXJlCi0gICAgICAgICAgICAgICAgLy8gY2hhbmdlLgot
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGlmIChieVZhbEhhc0ludEJh
c2Uobm9kZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gUHV0QnlWYWwgY3VycmVudGx5IGFs
d2F5cyBzcGVjdWxhdGVzIHRoYXQgaXQncyBhY2Nlc3NpbmcgYW4gYXJyYXkgd2l0aCBhbgorICAg
ICAgICAgICAgICAgICAgICAvLyBpbnRlZ2VyIGluZGV4LCB3aGljaCBtZWFucyB0aGF0IGl0J3Mg
aW1wb3NzaWJsZSBmb3IgaXQgdG8gY2F1c2UgYSBzdHJ1Y3R1cmUKKyAgICAgICAgICAgICAgICAg
ICAgLy8gY2hhbmdlLgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBpZiAoY2xvYmJlcnNXb3JsZChpbmRl
eCkpCkBAIC0xMTE2LDEwICsxMTMwLDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICBjYXNlIFB1dEJ5VmFsOgogICAgICAgICAgICAgY2FzZSBQdXRCeVZhbEFsaWFz
OgotICAgICAgICAgICAgICAgIC8vIFB1dEJ5VmFsIGN1cnJlbnRseSBhbHdheXMgc3BlY3VsYXRl
cyB0aGF0IGl0J3MgYWNjZXNzaW5nIGFuIGFycmF5IHdpdGggYW4KLSAgICAgICAgICAgICAgICAv
LyBpbnRlZ2VyIGluZGV4LCB3aGljaCBtZWFucyB0aGF0IGl0J3MgaW1wb3NzaWJsZSBmb3IgaXQg
dG8gY2F1c2UgYSBzdHJ1Y3R1cmUKLSAgICAgICAgICAgICAgICAvLyBjaGFuZ2UuCi0gICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaWYgKGJ5VmFsSGFzSW50QmFzZShub2Rl
KSkgeworICAgICAgICAgICAgICAgICAgICAvLyBQdXRCeVZhbCBjdXJyZW50bHkgYWx3YXlzIHNw
ZWN1bGF0ZXMgdGhhdCBpdCdzIGFjY2Vzc2luZyBhbiBhcnJheSB3aXRoIGFuCisgICAgICAgICAg
ICAgICAgICAgIC8vIGludGVnZXIgaW5kZXgsIHdoaWNoIG1lYW5zIHRoYXQgaXQncyBpbXBvc3Np
YmxlIGZvciBpdCB0byBjYXVzZSBhIHN0cnVjdHVyZQorICAgICAgICAgICAgICAgICAgICAvLyBj
aGFuZ2UuCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICByZXR1cm4gTm9Ob2RlOwogICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBpZiAoY2xvYmJlcnNXb3JsZChpbmRleCkpCkBA
IC0xMTQ5LDEwICsxMTY2LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICBjYXNlIFB1dEJ5VmFsOgogICAgICAgICAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOgotICAg
ICAgICAgICAgICAgIC8vIFB1dEJ5VmFsIGN1cnJlbnRseSBhbHdheXMgc3BlY3VsYXRlcyB0aGF0
IGl0J3MgYWNjZXNzaW5nIGFuIGFycmF5IHdpdGggYW4KLSAgICAgICAgICAgICAgICAvLyBpbnRl
Z2VyIGluZGV4LCB3aGljaCBtZWFucyB0aGF0IGl0J3MgaW1wb3NzaWJsZSBmb3IgaXQgdG8gY2F1
c2UgYSBzdHJ1Y3R1cmUKLSAgICAgICAgICAgICAgICAvLyBjaGFuZ2UuCi0gICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaWYgKGJ5VmFsSGFzSW50QmFzZShub2RlKSkgewor
ICAgICAgICAgICAgICAgICAgICAvLyBQdXRCeVZhbCBjdXJyZW50bHkgYWx3YXlzIHNwZWN1bGF0
ZXMgdGhhdCBpdCdzIGFjY2Vzc2luZyBhbiBhcnJheSB3aXRoIGFuCisgICAgICAgICAgICAgICAg
ICAgIC8vIGludGVnZXIgaW5kZXgsIHdoaWNoIG1lYW5zIHRoYXQgaXQncyBpbXBvc3NpYmxlIGZv
ciBpdCB0byBjYXVzZSBhIHN0cnVjdHVyZQorICAgICAgICAgICAgICAgICAgICAvLyBjaGFuZ2Uu
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICByZXR1cm4gTm9Ob2RlOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgICAgICBpZiAoY2xvYmJlcnNXb3JsZChpbmRleCkpCkBAIC0xMzIx
LDExICsxMzQxLDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IAogICAgICAgICBjYXNlIEdldEJ5VmFsOgotICAgICAgICAgICAgc2V0UmVwbGFjZW1lbnQoZ2V0
QnlWYWxMb2FkRWxpbWluYXRpb24obm9kZS5jaGlsZDEoKSwgbm9kZS5jaGlsZDIoKSkpOworICAg
ICAgICAgICAgaWYgKGJ5VmFsSGFzSW50QmFzZShub2RlKSkKKyAgICAgICAgICAgICAgICBzZXRS
ZXBsYWNlbWVudChnZXRCeVZhbExvYWRFbGltaW5hdGlvbihub2RlLmNoaWxkMSgpLCBub2RlLmNo
aWxkMigpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICBjYXNl
IFB1dEJ5VmFsOgotICAgICAgICAgICAgaWYgKGdldEJ5VmFsTG9hZEVsaW1pbmF0aW9uKG5vZGUu
Y2hpbGQxKCksIG5vZGUuY2hpbGQyKCkpICE9IE5vTm9kZSkKKyAgICAgICAgICAgIGlmIChieVZh
bEhhc0ludEJhc2Uobm9kZSkgJiYgZ2V0QnlWYWxMb2FkRWxpbWluYXRpb24obm9kZS5jaGlsZDEo
KSwgbm9kZS5jaGlsZDIoKSkgIT0gTm9Ob2RlKQogICAgICAgICAgICAgICAgIG5vZGUub3AgPSBQ
dXRCeVZhbEFsaWFzOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcAkocmV2aXNpb24gOTcwMTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcyLDYgKzEyNzIsMjMg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgIH0KIAogICAg
IGNhc2UgR2V0QnlWYWw6IHsKKyAgICAgICAgUHJlZGljdGVkVHlwZSBiYXNlUHJlZGljdGlvbiA9
IGF0KG5vZGUuY2hpbGQyKCkpLnByZWRpY3Rpb24oKTsKKyAgICAgICAgaWYgKCEoYmFzZVByZWRp
Y3Rpb24gJiBQcmVkaWN0SW50MzIpICYmIGJhc2VQcmVkaWN0aW9uKSB7CisgICAgICAgICAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOyAvLyBTYXZlIGEg
cmVnaXN0ZXIsIHNwZWN1bGF0ZSBjZWxsLiBXZSdsbCBwcm9iYWJseSBiZSByaWdodC4KKyAgICAg
ICAgICAgIEpTVmFsdWVPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG5vZGUuY2hpbGQyKCkpOworICAg
ICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgICAgICAgICAgR1BSUmVn
IHByb3BlcnR5VGFnR1BSID0gcHJvcGVydHkudGFnR1BSKCk7CisgICAgICAgICAgICBHUFJSZWcg
cHJvcGVydHlQYXlsb2FkR1BSID0gcHJvcGVydHkucGF5bG9hZEdQUigpOworICAgICAgICAgICAg
CisgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICAgICAgR1BSUmVzdWx0MiBy
ZXN1bHRUYWcodGhpcyk7CisgICAgICAgICAgICBHUFJSZXN1bHQgcmVzdWx0UGF5bG9hZCh0aGlz
KTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWxDZWxsLCByZXN1
bHRUYWcuZ3ByKCksIHJlc3VsdFBheWxvYWQuZ3ByKCksIGJhc2VHUFIsIHByb3BlcnR5VGFnR1BS
LCBwcm9wZXJ0eVBheWxvYWRHUFIpOworICAgICAgICAgICAgCisgICAgICAgICAgICBqc1ZhbHVl
UmVzdWx0KHJlc3VsdFRhZy5ncHIoKSwgcmVzdWx0UGF5bG9hZC5ncHIoKSwgbV9jb21waWxlSW5k
ZXgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBpZiAoYXQobm9k
ZS5jaGlsZDEoKSkucHJlZGljdGlvbigpID09IFByZWRpY3RTdHJpbmcpIHsKICAgICAgICAgICAg
IGNvbXBpbGVHZXRCeVZhbE9uU3RyaW5nKG5vZGUpOwogICAgICAgICAgICAgaWYgKCFtX2NvbXBp
bGVPa2F5KQpAQCAtMTMxNCw2ICsxMzMxLDI0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSYgbm9kZSkKICAgICB9CiAKICAgICBjYXNlIFB1dEJ5VmFsOiB7CisgICAgICAgIFBy
ZWRpY3RlZFR5cGUgYmFzZVByZWRpY3Rpb24gPSBhdChub2RlLmNoaWxkMigpKS5wcmVkaWN0aW9u
KCk7CisgICAgICAgIGlmICghKGJhc2VQcmVkaWN0aW9uICYgUHJlZGljdEludDMyKSAmJiBiYXNl
UHJlZGljdGlvbikgeworICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlz
LCBub2RlLmNoaWxkMSgpKTsgLy8gU2F2ZSBhIHJlZ2lzdGVyLCBzcGVjdWxhdGUgY2VsbC4gV2Un
bGwgcHJvYmFibHkgYmUgcmlnaHQuCisgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBwcm9wZXJ0
eSh0aGlzLCBub2RlLmNoaWxkMigpKTsKKyAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVl
KHRoaXMsIG5vZGUuY2hpbGQzKCkpOworICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNl
LmdwcigpOworICAgICAgICAgICAgR1BSUmVnIHByb3BlcnR5VGFnR1BSID0gcHJvcGVydHkudGFn
R1BSKCk7CisgICAgICAgICAgICBHUFJSZWcgcHJvcGVydHlQYXlsb2FkR1BSID0gcHJvcGVydHku
cGF5bG9hZEdQUigpOworICAgICAgICAgICAgR1BSUmVnIHZhbHVlVGFnR1BSID0gdmFsdWUudGFn
R1BSKCk7CisgICAgICAgICAgICBHUFJSZWcgdmFsdWVQYXlsb2FkR1BSID0gdmFsdWUucGF5bG9h
ZEdQUigpOworICAgICAgICAgICAgCisgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAg
ICAgICAgICAgY2FsbE9wZXJhdGlvbihtX2ppdC5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkg
PyBvcGVyYXRpb25QdXRCeVZhbENlbGxTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbENlbGxOb25T
dHJpY3QsIGJhc2VHUFIsIHByb3BlcnR5VGFnR1BSLCBwcm9wZXJ0eVBheWxvYWRHUFIsIHZhbHVl
VGFnR1BSLCB2YWx1ZVBheWxvYWRHUFIpOworICAgICAgICAgICAgCisgICAgICAgICAgICBub1Jl
c3VsdChtX2NvbXBpbGVJbmRleCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAg
ICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAg
ICAgICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBub2RlLmNo
aWxkMigpKTsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS5jaGlsZDMo
KSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAJKHJldmlzaW9uIDk3MDE0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM4Myw2ICsxMzgz
LDIxIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICB9CiAK
ICAgICBjYXNlIEdldEJ5VmFsOiB7CisgICAgICAgIFByZWRpY3RlZFR5cGUgYmFzZVByZWRpY3Rp
b24gPSBhdChub2RlLmNoaWxkMigpKS5wcmVkaWN0aW9uKCk7CisgICAgICAgIGlmICghKGJhc2VQ
cmVkaWN0aW9uICYgUHJlZGljdEludDMyKSAmJiBiYXNlUHJlZGljdGlvbikgeworICAgICAgICAg
ICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgICAg
IEpTVmFsdWVPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG5vZGUuY2hpbGQyKCkpOworICAgICAgICAg
ICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgICAgICAgICAgR1BSUmVnIHByb3Bl
cnR5R1BSID0gcHJvcGVydHkuZ3ByKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZsdXNo
UmVnaXN0ZXJzKCk7CisgICAgICAgICAgICBHUFJSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgICAg
ICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbCwgcmVzdWx0LmdwcigpLCBiYXNl
R1BSLCBwcm9wZXJ0eUdQUik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGpzVmFsdWVSZXN1
bHQocmVzdWx0LmdwcigpLCBtX2NvbXBpbGVJbmRleCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgICAKICAgICAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnByZWRpY3Rp
b24oKSA9PSBQcmVkaWN0U3RyaW5nKSB7CiAgICAgICAgICAgICBjb21waWxlR2V0QnlWYWxPblN0
cmluZyhub2RlKTsKICAgICAgICAgICAgIGlmICghbV9jb21waWxlT2theSkKQEAgLTE0MjQsNiAr
MTQzOSwyMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAg
fQogCiAgICAgY2FzZSBQdXRCeVZhbDogeworICAgICAgICBQcmVkaWN0ZWRUeXBlIGJhc2VQcmVk
aWN0aW9uID0gYXQobm9kZS5jaGlsZDIoKSkucHJlZGljdGlvbigpOworICAgICAgICBpZiAoIShi
YXNlUHJlZGljdGlvbiAmIFByZWRpY3RJbnQzMikgJiYgYmFzZVByZWRpY3Rpb24pIHsKKyAgICAg
ICAgICAgIEpTVmFsdWVPcGVyYW5kIGFyZzEodGhpcywgbm9kZS5jaGlsZDEoKSk7CisgICAgICAg
ICAgICBKU1ZhbHVlT3BlcmFuZCBhcmcyKHRoaXMsIG5vZGUuY2hpbGQyKCkpOworICAgICAgICAg
ICAgSlNWYWx1ZU9wZXJhbmQgYXJnMyh0aGlzLCBub2RlLmNoaWxkMygpKTsKKyAgICAgICAgICAg
IEdQUlJlZyBhcmcxR1BSID0gYXJnMS5ncHIoKTsKKyAgICAgICAgICAgIEdQUlJlZyBhcmcyR1BS
ID0gYXJnMi5ncHIoKTsKKyAgICAgICAgICAgIEdQUlJlZyBhcmczR1BSID0gYXJnMy5ncHIoKTsK
KyAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24obV9qaXQuY29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpID8gb3BlcmF0
aW9uUHV0QnlWYWxTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbE5vblN0cmljdCwgYXJnMUdQUiwg
YXJnMkdQUiwgYXJnM0dQUik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG5vUmVzdWx0KG1f
Y29tcGlsZUluZGV4KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAg
U3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG5vZGUuY2hpbGQyKCkp
OwogICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLmNoaWxkMygpKTsKQEAg
LTE0ODgsNiArMTUxOSw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9k
ZSkKICAgICB9CiAKICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6IHsKKyAgICAgICAgUHJlZGljdGVk
VHlwZSBiYXNlUHJlZGljdGlvbiA9IGF0KG5vZGUuY2hpbGQyKCkpLnByZWRpY3Rpb24oKTsKKyAg
ICAgICAgQVNTRVJUX1VOVVNFRChiYXNlUHJlZGljdGlvbiwgKGJhc2VQcmVkaWN0aW9uICYgUHJl
ZGljdEludDMyKSB8fCAhYmFzZVByZWRpY3Rpb24pOworICAgICAgICAgICAgCiAgICAgICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgIFNw
ZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBub2RlLmNoaWxkMigpKTsK
ICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS5jaGlsZDMoKSk7Cg==
</data>
<flag name="review"
          id="107775"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>