<?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>12059</bug_id>
          
          <creation_ts>2007-01-01 11:53:21 -0800</creation_ts>
          <short_desc>SVG colors have two separate parsing paths (one CSS and one SVGColor::setRGBColor)</short_desc>
          <delta_ts>2007-08-22 02:03:06 -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>SVG</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>38498</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-01-01 11:53:21 -0800</bug_when>
    <thetext>SVG colors have two separate parsing paths (one CSS and one SVGColor::setRGBColor)

That&apos;s just an accident waiting to happen.  Ideally these should be unified into a single parser.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>7810</commentid>
    <comment_count>1</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2007-06-12 10:31:04 -0700</bug_when>
    <thetext>Needs to be done, but low prio.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1979</commentid>
    <comment_count>2</comment_count>
      <attachid>16022</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2007-08-19 10:08:09 -0700</bug_when>
    <thetext>Created attachment 16022
First attempt

This tries to combine the two codepaths. Note that unfortunately I have to test for rgba,hsl and hsla constructs. One way to avoid it may be to make the parser aware that it is parsing svg css, but that
needs more discussion I suppose. One further thing that could fix is to parse SVG color property and
deliver a SVGColor, not a CSSPrimitiveValue like now.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1950</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2007-08-19 17:49:31 -0700</bug_when>
    <thetext>in RGBA32 CSSParser::parseColor(const String&amp; string, bool strict)

+    parseColor(color, string, strict);
+    return color;

Is it okay to ignore the return boolean of parseColor here? </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1941</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2007-08-19 17:51:15 -0700</bug_when>
    <thetext>Another question, is this line

+    if (s.startsWith(&quot;hsl&quot;) || s.startsWith(&quot;rgba&quot;) ||

supposed to be s.startsWith(&quot;rgba&quot;) and not  s.startsWith(&quot;rgb&quot;) ?

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1942</commentid>
    <comment_count>5</comment_count>
      <attachid>16022</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2007-08-19 17:54:01 -0700</bug_when>
    <thetext>Comment on attachment 16022
First attempt

r- until the above questions are answered.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1920</commentid>
    <comment_count>6</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2007-08-19 23:48:56 -0700</bug_when>
    <thetext>Hi,

(In reply to comment #4)
&gt; Another question, is this line
&gt; 
&gt; +    if (s.startsWith(&quot;hsl&quot;) || s.startsWith(&quot;rgba&quot;) ||
&gt; 
&gt; supposed to be s.startsWith(&quot;rgba&quot;) and not  s.startsWith(&quot;rgb&quot;) ?

Yes, if you look at CSSParser::parseColorFromValue you see rgb( is accepted by svg, but a check is made for rgba(, hsl( and hsla( to not be accepted if the svg flag is true.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1919</commentid>
    <comment_count>7</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2007-08-19 23:51:51 -0700</bug_when>
    <thetext>Hi Sam,

(In reply to comment #3)
&gt; in RGBA32 CSSParser::parseColor(const String&amp; string, bool strict)
&gt; 
&gt; +    parseColor(color, string, strict);
&gt; +    return color;
&gt; 
&gt; Is it okay to ignore the return boolean of parseColor here? 

Well, the old behaviour returned transparent color (all 0) but still valid color unless a color was found, I am emulating that behaviour here.
Cheers,

Rob.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1903</commentid>
    <comment_count>8</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2007-08-20 09:04:51 -0700</bug_when>
    <thetext>Rob,

Sounds good.  If you would add a comment in the code about those 2 cases it would be great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1884</commentid>
    <comment_count>9</comment_count>
      <attachid>16035</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2007-08-20 11:50:24 -0700</bug_when>
    <thetext>Created attachment 16035
Added some comments

Added some comments as per Sam&apos;s suggestion.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776</commentid>
    <comment_count>10</comment_count>
      <attachid>16035</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2007-08-21 11:59:48 -0700</bug_when>
    <thetext>Comment on attachment 16035
Added some comments

Talked to Rob in IRC about expanding the explanation in the comments to be more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777</commentid>
    <comment_count>11</comment_count>
      <attachid>16062</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2007-08-21 13:29:33 -0700</bug_when>
    <thetext>Created attachment 16062
Slightly different approach

This one has just one method and enables the client to set up a rgba32 default value, like what has happened in the past for html canvas code.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744</commentid>
    <comment_count>12</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2007-08-22 02:03:06 -0700</bug_when>
    <thetext>Landed in r25183.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>16022</attachid>
            <date>2007-08-19 10:08:09 -0700</date>
            <delta_ts>2007-08-21 13:29:33 -0700</delta_ts>
            <desc>First attempt</desc>
            <filename>12059.diff</filename>
            <type>text/plain</type>
            <size>12683</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDI1MTQ3KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDctMDgtMTkgIFJvYiBCdWlzICA8YnVpc0Br
ZGUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDU5CisgICAgICAgIFNW
RyBjb2xvcnMgaGF2ZSB0d28gc2VwYXJhdGUgcGFyc2luZyBwYXRocyAob25lIENTUyBhbmQgb25l
IFNWR0NvbG9yOjpzZXRSR0JDb2xvcikKKworICAgICAgICBJbXByb3ZlZCB0ZXN0IHJlc3VsdC4K
KworICAgICAgICAqIHN2Zy9kb20vcmdiLWNvbG9yLXBhcnNlci1leHBlY3RlZC50eHQ6CisKIDIw
MDctMDgtMTkgIFJvYiBCdWlzICA8YnVpc0BrZGUub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IE5pa29sYXMuCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZG9tL3JnYi1jb2xvci1wYXJzZXItZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9kb20vcmdiLWNvbG9yLXBh
cnNlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI1MTQzKQorKysgTGF5b3V0VGVzdHMvc3ZnL2Rv
bS9yZ2ItY29sb3ItcGFyc2VyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTksNyAr
MTksNyBAQCBUaHJldyBleGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFCiBUaHJldyBl
eGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VSUjogRE9NIFNWRyBFeGNlcHRpb24g
MTogcmdiKAk1NSwuCiBUaHJldyBleGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VS
UjogRE9NIFNWRyBFeGNlcHRpb24gMTogcmdiKDI2MywlCTEtNzQpZQogVGhyZXcgZXhjZXB0aW9u
IEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6IHJnYigg
NjQxMTAsICgxIAotUGFyc2VkIGFzIHJnYigxNTAsMywyNTUpOiByZ2IoIDU5JTMgICA3MjUpCitU
aHJldyBleGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VSUjogRE9NIFNWRyBFeGNl
cHRpb24gMTogcmdiKCA1OSUzICAgNzI1KQogVGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5W
QUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6IHJnYig2ZSktMi0gMTgwCiBUaHJl
dyBleGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VSUjogRE9NIFNWRyBFeGNlcHRp
b24gMTogcmdiKCwJLjU3OWUoKCAKIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURf
VkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2IoKSgKQEAgLTQzLDcgKzQzLDcgQEAg
VGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRQogVGhyZXcgZXhjZXB0aW9u
IEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6IHJnYigJ
KWVlLiUpCiBUaHJldyBleGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VSUjogRE9N
IFNWRyBFeGNlcHRpb24gMTogcmdiKC0lMCUtCiBUaHJldyBleGNlcHRpb24gRXJyb3I6IFNWR19J
TlZBTElEX1ZBTFVFX0VSUjogRE9NIFNWRyBFeGNlcHRpb24gMTogcmdiKDIzMTI5MyAxNiUKLVBh
cnNlZCBhcyByZ2IoMCwwLDM3KTogcmdiKCstMiszNyk4ODg1ODArOQkoCitUaHJldyBleGNlcHRp
b24gRXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VSUjogRE9NIFNWRyBFeGNlcHRpb24gMTogcmdi
KCstMiszNyk4ODg1ODArOQkoCiBUaHJldyBleGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElEX1ZB
TFVFX0VSUjogRE9NIFNWRyBFeGNlcHRpb24gMTogcmdiKDE4CTgwNQogVGhyZXcgZXhjZXB0aW9u
IEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6IHJnYigw
CiBUaHJldyBleGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VSUjogRE9NIFNWRyBF
eGNlcHRpb24gMTogcmdiKDYzLS42OTMrCkBAIC03OCw3ICs3OCw3IEBAIFRocmV3IGV4Y2VwdGlv
biBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUUKIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lO
VkFMSURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2IoIC4zLjYgCSwtNTclNyBl
KzYKIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZH
IEV4Y2VwdGlvbiAxOiByZ2IoMSk3ICslKzggCSktCSAtLjYzZQogVGhyZXcgZXhjZXB0aW9uIEVy
cm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6IHJnYig2Nzg2
KS4oODkxMiUKLVBhcnNlZCBhcyByZ2IoMCw4LDApOiByZ2IoLQklOC0sKTg4NistIDllKSllCitU
aHJldyBleGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VSUjogRE9NIFNWRyBFeGNl
cHRpb24gMTogcmdiKC0JJTgtLCk4ODYrLSA5ZSkpZQogVGhyZXcgZXhjZXB0aW9uIEVycm9yOiBT
VkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6IHJnYiggLAk1NzMyIAog
VGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhj
ZXB0aW9uIDE6IHJnYigxOCkoCiBUaHJldyBleGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElEX1ZB
TFVFX0VSUjogRE9NIFNWRyBFeGNlcHRpb24gMTogcmdiKDMsKzEzJSg3MTElOSUJJTAgLQpAQCAt
MTA5LDcgKzEwOSw3IEBAIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUUK
IFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZHIEV4
Y2VwdGlvbiAxOiByZ2IoMC43OTVlMCwpLgklJSwKIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZH
X0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2IoKzcpLgogVGhyZXcg
ZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9u
IDE6IHJnYigoJSsJOCAtNzQpLjkgKyguCi1QYXJzZWQgYXMgcmdiKDAsMjU1LDApOiByZ2IoIDAJ
NjM1Kyk5LC0gOAkKK1RocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUVfRVJS
OiBET00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2IoIDAJNjM1Kyk5LC0gOAkKIFRocmV3IGV4Y2VwdGlv
biBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2Io
JTQlOSUlLgogVGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERP
TSBTVkcgRXhjZXB0aW9uIDE6IHJnYig0OSksLDQtMzAzNzggMDUyCiBUaHJldyBleGNlcHRpb24g
RXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VSUjogRE9NIFNWRyBFeGNlcHRpb24gMTogcmdiKCU3
ODYzCQpAQCAtMTE4LDcgKzExOCw3IEBAIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFM
SURfVkFMVUUKIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUVfRVJSOiBE
T00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2IoCTU1LC4KIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZH
X0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2IoMjYzLCUJMS03NCll
CiBUaHJldyBleGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VSUjogRE9NIFNWRyBF
eGNlcHRpb24gMTogcmdiKCA2NDExMCwgKDEgCi1QYXJzZWQgYXMgcmdiKDE1MCwzLDI1NSk6IHJn
YiggNTklMyAgIDcyNSkKK1RocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUVf
RVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2IoIDU5JTMgICA3MjUpCiBUaHJldyBleGNlcHRp
b24gRXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VSUjogRE9NIFNWRyBFeGNlcHRpb24gMTogcmdi
KDZlKS0yLSAxODAKIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUVfRVJS
OiBET00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2IoLAkuNTc5ZSgoIAogVGhyZXcgZXhjZXB0aW9uIEVy
cm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6IHJnYigpKApA
QCAtMTQyLDcgKzE0Miw3IEBAIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFM
VUUKIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZH
IEV4Y2VwdGlvbiAxOiByZ2IoCSllZS4lKQogVGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5W
QUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6IHJnYigtJTAlLQogVGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6
IHJnYigyMzEyOTMgMTYlCi1QYXJzZWQgYXMgcmdiKDAsMCwzNyk6IHJnYigrLTIrMzcpODg4NTgw
KzkJKAorVGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBT
VkcgRXhjZXB0aW9uIDE6IHJnYigrLTIrMzcpODg4NTgwKzkJKAogVGhyZXcgZXhjZXB0aW9uIEVy
cm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6IHJnYigxOAk4
MDUKIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZH
IEV4Y2VwdGlvbiAxOiByZ2IoMAogVGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5WQUxJRF9W
QUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6IHJnYig2My0uNjkzKwpAQCAtMTc3LDcgKzE3
Nyw3IEBAIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUUKIFRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAx
OiByZ2IoIC4zLjYgCSwtNTclNyBlKzYKIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFM
SURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2IoMSk3ICslKzggCSktCSAtLjYz
ZQogVGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcg
RXhjZXB0aW9uIDE6IHJnYig2Nzg2KS4oODkxMiUKLVBhcnNlZCBhcyByZ2IoMCw4LDApOiByZ2Io
LQklOC0sKTg4NistIDllKSllCitUaHJldyBleGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElEX1ZB
TFVFX0VSUjogRE9NIFNWRyBFeGNlcHRpb24gMTogcmdiKC0JJTgtLCk4ODYrLSA5ZSkpZQogVGhy
ZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0
aW9uIDE6IHJnYiggLAk1NzMyIAogVGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5WQUxJRF9W
QUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6IHJnYigxOCkoCiBUaHJldyBleGNlcHRpb24g
RXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VSUjogRE9NIFNWRyBFeGNlcHRpb24gMTogcmdiKDMs
KzEzJSg3MTElOSUJJTAgLQpAQCAtMjA4LDcgKzIwOCw3IEBAIFRocmV3IGV4Y2VwdGlvbiBFcnJv
cjogU1ZHX0lOVkFMSURfVkFMVUUKIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURf
VkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2IoMC43OTVlMCwpLgklJSwKIFRocmV3
IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlv
biAxOiByZ2IoKzcpLgogVGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9F
UlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6IHJnYigoJSsJOCAtNzQpLjkgKyguCi1QYXJzZWQgYXMg
cmdiKDAsMjU1LDApOiByZ2IoIDAJNjM1Kyk5LC0gOAkKK1RocmV3IGV4Y2VwdGlvbiBFcnJvcjog
U1ZHX0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2IoIDAJNjM1Kyk5
LC0gOAkKIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUVfRVJSOiBET00g
U1ZHIEV4Y2VwdGlvbiAxOiByZ2IoJTQlOSUlLgogVGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdf
SU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6IHJnYig0OSksLDQtMzAzNzgg
MDUyCiBUaHJldyBleGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VSUjogRE9NIFNW
RyBFeGNlcHRpb24gMTogcmdiKCU3ODYzCQpAQCAtMjE3LDcgKzIxNyw3IEBAIFRocmV3IGV4Y2Vw
dGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUUKIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZH
X0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2IoCTU1LC4KIFRocmV3
IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlv
biAxOiByZ2IoMjYzLCUJMS03NCllCiBUaHJldyBleGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElE
X1ZBTFVFX0VSUjogRE9NIFNWRyBFeGNlcHRpb24gMTogcmdiKCA2NDExMCwgKDEgCi1QYXJzZWQg
YXMgcmdiKDE1MCwzLDI1NSk6IHJnYiggNTklMyAgIDcyNSkKK1RocmV3IGV4Y2VwdGlvbiBFcnJv
cjogU1ZHX0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2IoIDU5JTMg
ICA3MjUpCiBUaHJldyBleGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VSUjogRE9N
IFNWRyBFeGNlcHRpb24gMTogcmdiKDZlKS0yLSAxODAKIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjog
U1ZHX0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2IoLAkuNTc5ZSgo
IAogVGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcg
RXhjZXB0aW9uIDE6IHJnYigpKApAQCAtMjQxLDcgKzI0MSw3IEBAIFRocmV3IGV4Y2VwdGlvbiBF
cnJvcjogU1ZHX0lOVkFMSURfVkFMVUUKIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFM
SURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2IoCSllZS4lKQogVGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6
IHJnYigtJTAlLQogVGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6
IERPTSBTVkcgRXhjZXB0aW9uIDE6IHJnYigyMzEyOTMgMTYlCi1QYXJzZWQgYXMgcmdiKDAsMCwz
Nyk6IHJnYigrLTIrMzcpODg4NTgwKzkJKAorVGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5W
QUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6IHJnYigrLTIrMzcpODg4NTgwKzkJ
KAogVGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcg
RXhjZXB0aW9uIDE6IHJnYigxOAk4MDUKIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFM
SURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2IoMAogVGhyZXcgZXhjZXB0aW9u
IEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6IHJnYig2
My0uNjkzKwpJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9D
aGFuZ2VMb2cJKHJldmlzaW9uIDI1MTQ3KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAwNy0wOC0xOSAgUm9iIEJ1aXMgIDxidWlzQGtkZS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0
cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwNTkKKyAgICAgICAgU1ZHIGNv
bG9ycyBoYXZlIHR3byBzZXBhcmF0ZSBwYXJzaW5nIHBhdGhzIChvbmUgQ1NTIGFuZCBvbmUgU1ZH
Q29sb3I6OnNldFJHQkNvbG9yKQorCisgICAgICAgIFJldXNlIHRoZSBjc3MgcGFyc2VyIGFzIG11
Y2ggYXMgcG9zc2libGUgaW4gc2V0UkdCQ29sb3IuCisKKyAgICAgICAgKiBjc3MvY3NzcGFyc2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDb2xvcik6CisgICAgICAg
ICogY3NzL2Nzc3BhcnNlci5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdDb2xvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdDb2xvcjo6c2V0UkdCQ29sb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHQ29sb3I6OmNvbG9yRnJvbVJHQkNvbG9yU3RyaW5nKToKKwogMjAwNy0wOC0xOSAgUm9i
IEJ1aXMgIDxidWlzQGtkZS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTmlrb2xhcy4KSW5k
ZXg6IFdlYkNvcmUvY3NzL2Nzc3BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3Mv
Y3NzcGFyc2VyLmNwcAkocmV2aXNpb24gMjUxNDMpCisrKyBXZWJDb3JlL2Nzcy9jc3NwYXJzZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDQsMTYgKzI0NCwyMiBAQCBib29sIENTU1BhcnNlcjo6
cGFyc2VWYWx1ZShDU1NNdXRhYmxlU3R5CiAgICAgcmV0dXJuIG9rOwogfQogCi1SR0JBMzIgQ1NT
UGFyc2VyOjpwYXJzZUNvbG9yKGNvbnN0IFN0cmluZyAmc3RyaW5nLCBib29sIHN0cmljdCkKK1JH
QkEzMiBDU1NQYXJzZXI6OnBhcnNlQ29sb3IoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgc3Ry
aWN0KQogewogICAgIFJHQkEzMiBjb2xvciA9IDA7Ci0gICAgUmVmUHRyPENTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uPmR1bW15U3R5bGVEZWNsYXJhdGlvbiA9IG5ldyBDU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbjsKKyAgICBwYXJzZUNvbG9yKGNvbG9yLCBzdHJpbmcsIHN0cmljdCk7CisgICAg
cmV0dXJuIGNvbG9yOworfQogCitib29sIENTU1BhcnNlcjo6cGFyc2VDb2xvcihSR0JBMzImIGNv
bG9yLCBjb25zdCBTdHJpbmcgJnN0cmluZywgYm9vbCBzdHJpY3QpCit7CisgICAgY29sb3IgPSAw
OwogICAgIENTU1BhcnNlciBwYXJzZXIodHJ1ZSk7CiAKICAgICAvLyBGaXJzdCB0cnkgY3JlYXRp
bmcgYSBjb2xvciBzcGVjaWZpZWQgYnkgbmFtZSBvciB0aGUgIiMiIHN5bnRheC4KICAgICBpZiAo
IXBhcnNlci5wYXJzZUNvbG9yKHN0cmluZywgY29sb3IsIHN0cmljdCkpIHsKLSAgICAKKyAgICAg
ICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPmR1bW15U3R5bGVEZWNsYXJhdGlv
biA9IG5ldyBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjsKKwogICAgICAgICAvLyBOb3cgdHJ5
IHRvIGNyZWF0ZSBhIGNvbG9yIGZyb20gdGhlIHJnYigpIG9yIHJnYmEoKSBzeW50YXguCiAgICAg
ICAgIGlmIChwYXJzZXIucGFyc2VDb2xvcihkdW1teVN0eWxlRGVjbGFyYXRpb24uZ2V0KCksIHN0
cmluZykpIHsKICAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IHBhcnNlci5wYXJzZWRQcm9w
ZXJ0aWVzWzBdLT52YWx1ZSgpOwpAQCAtMjYxLDEwICsyNjcsMTEgQEAgUkdCQTMyIENTU1BhcnNl
cjo6cGFyc2VDb2xvcihjb25zdCBTdHJpbgogICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZh
bHVlICpwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlICo+KHZh
bHVlKTsKICAgICAgICAgICAgICAgICBjb2xvciA9IHByaW1pdGl2ZVZhbHVlLT5nZXRSR0JDb2xv
clZhbHVlKCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIAotICAgIHJldHVybiBjb2xvcjsKKwor
ICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIENTU1BhcnNlcjo6cGFyc2VDb2xvcihDU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbiAqZGVjbGFyYXRpb24sIGNvbnN0IFN0cmluZyAmc3RyaW5nKQpJ
bmRleDogV2ViQ29yZS9jc3MvY3NzcGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3Mv
Y3NzcGFyc2VyLmgJKHJldmlzaW9uIDI1MTQzKQorKysgV2ViQ29yZS9jc3MvY3NzcGFyc2VyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTExOCw2ICsxMTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIFBhc3NSZWZQdHI8Q1NTUnVsZT4gcGFyc2VSdWxlKENTU1N0eWxlU2hlZXQqLCBjb25z
dCBTdHJpbmcmKTsKICAgICAgICAgYm9vbCBwYXJzZVZhbHVlKENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uKiwgaW50IHByb3BJZCwgY29uc3QgU3RyaW5nJiwgYm9vbCBpbXBvcnRhbnQpOwogICAg
ICAgICBzdGF0aWMgUkdCQTMyIHBhcnNlQ29sb3IoY29uc3QgU3RyaW5nJiwgYm9vbCBzdHJpY3Qg
PSBmYWxzZSk7CisgICAgICAgIHN0YXRpYyBib29sIHBhcnNlQ29sb3IoUkdCQTMyJiBjb2xvciwg
Y29uc3QgU3RyaW5nJiwgYm9vbCBzdHJpY3QgPSBmYWxzZSk7CiAgICAgICAgIGJvb2wgcGFyc2VD
b2xvcihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiosIGNvbnN0IFN0cmluZyYpOwogICAgICAg
ICBib29sIHBhcnNlRGVjbGFyYXRpb24oQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qLCBjb25z
dCBTdHJpbmcmKTsKICAgICAgICAgYm9vbCBwYXJzZU1lZGlhUXVlcnkoTWVkaWFMaXN0KiwgY29u
c3QgU3RyaW5nJik7CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdDb2xvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ29sb3IuY3BwCShyZXZpc2lvbiAyNTE0MykK
KysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0NvbG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQs
OCArMjQsOCBAQAogI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiU1ZHQ29sb3IuaCIKIAorI2lu
Y2x1ZGUgImNzc3BhcnNlci5oIgogI2luY2x1ZGUgIlNWR0V4Y2VwdGlvbi5oIgotI2luY2x1ZGUg
IlNWR1BhcnNlclV0aWxpdGllcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTc5LDQw
ICs3OSwxNSBAQCB2b2lkIFNWR0NvbG9yOjpzZXRSR0JDb2xvcihjb25zdCBTdHJpbmcmCiAgICAg
ICAgIGVjID0gU1ZHX0lOVkFMSURfVkFMVUVfRVJSOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wg
cGFyc2VOdW1iZXJPclBlcmNlbnQoY29uc3QgVUNoYXIqJiBwdHIsIGNvbnN0IFVDaGFyKiBlbmQs
IGRvdWJsZSYgdmFsdWUpCi17Ci0gICAgaWYgKCFwYXJzZU51bWJlcihwdHIsIGVuZCwgdmFsdWUp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKHB0ciA8IGVuZCAmJiAqcHRyID09ICcl
JykgewotICAgICAgICB2YWx1ZSA9IGludCgoMjU1LjAgKiB2YWx1ZSkgLyAxMDAuMCk7Ci0gICAg
ICAgIHB0cisrOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogQ29sb3IgU1ZHQ29sb3I6
OmNvbG9yRnJvbVJHQkNvbG9yU3RyaW5nKGNvbnN0IFN0cmluZyYgY29sb3JTdHJpbmcpCiB7Ci0g
ICAgaWYgKGNvbG9yU3RyaW5nLmlzTnVsbCgpKQorICAgIFJHQkEzMiBjb2xvcjsKKyAgICBTdHJp
bmcgcyA9IGNvbG9yU3RyaW5nLnN0cmlwV2hpdGVTcGFjZSgpOworICAgIGlmIChzLnN0YXJ0c1dp
dGgoImhzbCIpIHx8IHMuc3RhcnRzV2l0aCgicmdiYSIpIHx8CisgICAgICAgICFDU1NQYXJzZXI6
OnBhcnNlQ29sb3IoY29sb3IsIHMpKQogICAgICAgICByZXR1cm4gQ29sb3IoKTsKIAotICAgIENv
bG9yIGNvbG9yOwotICAgIFN0cmluZyBwYXJzZSA9IGNvbG9yU3RyaW5nLnN0cmlwV2hpdGVTcGFj
ZSgpOwotICAgIGlmIChwYXJzZS5zdGFydHNXaXRoKCJyZ2IoIikpIHsKLSAgICAgICAgZG91Ymxl
IHIgPSAtMSwgZyA9IC0xLCBiID0gLTE7Ci0gICAgICAgIGNvbnN0IFVDaGFyKiBwdHIgPSBwYXJz
ZS5jaGFyYWN0ZXJzKCkgKyA0OwotICAgICAgICBjb25zdCBVQ2hhciogZW5kID0gcGFyc2UuY2hh
cmFjdGVycygpICsgcGFyc2UubGVuZ3RoKCk7Ci0gICAgICAgIHNraXBPcHRpb25hbFNwYWNlcyhw
dHIsIGVuZCk7Ci0gICAgICAgIGlmICghcGFyc2VOdW1iZXJPclBlcmNlbnQocHRyLCBlbmQsIHIp
Ci0gICAgICAgICB8fCAhcGFyc2VOdW1iZXJPclBlcmNlbnQocHRyLCBlbmQsIGcpCi0gICAgICAg
ICB8fCAhcGFyc2VOdW1iZXJPclBlcmNlbnQocHRyLCBlbmQsIGIpKQotICAgICAgICAgICAgcmV0
dXJuIENvbG9yKCk7Ci0KLSAgICAgICAgaWYgKHB0ciA+PSBlbmQgfHwgKnB0ciAhPSAnKScpCi0g
ICAgICAgICAgICByZXR1cm4gQ29sb3IoKTsKLQotICAgICAgICAgcmV0dXJuIENvbG9yKGludChy
KSwgaW50KGcpLCBpbnQoYikpOwotICAgIH0KLSAgICByZXR1cm4gQ29sb3IocGFyc2UubG93ZXIo
KSk7CisgICAgcmV0dXJuIGNvbG9yOwogfQogCiB2b2lkIFNWR0NvbG9yOjpzZXRSR0JDb2xvcklD
Q0NvbG9yKGNvbnN0IFN0cmluZyYgLyogcmdiQ29sb3IgKi8sIGNvbnN0IFN0cmluZyYgLyogaWNj
Q29sb3IgKi8sIEV4Y2VwdGlvbkNvZGUmIGVjKQo=
</data>
<flag name="review"
          id="6725"
          type_id="1"
          status="-"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>16035</attachid>
            <date>2007-08-20 11:50:24 -0700</date>
            <delta_ts>2007-08-21 13:29:33 -0700</delta_ts>
            <desc>Added some comments</desc>
            <filename>12059-2.diff</filename>
            <type>text/plain</type>
            <size>12844</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDI1MTU1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDctMDgtMjAgIFJvYiBCdWlzICA8YnVpc0Br
ZGUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDU5CisgICAgICAgIFNW
RyBjb2xvcnMgaGF2ZSB0d28gc2VwYXJhdGUgcGFyc2luZyBwYXRocyAob25lIENTUyBhbmQgb25l
IFNWR0NvbG9yOjpzZXRSR0JDb2xvcikKKworICAgICAgICBJbXByb3ZlZCB0ZXN0IHJlc3VsdC4K
KworICAgICAgICAqIHN2Zy9kb20vcmdiLWNvbG9yLXBhcnNlci1leHBlY3RlZC50eHQ6CisKIDIw
MDctMDgtMjAgIFJvYiBCdWlzICA8YnVpc0BrZGUub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IE5pa29sYXMuCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZG9tL3JnYi1jb2xvci1wYXJzZXItZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9kb20vcmdiLWNvbG9yLXBh
cnNlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI1MTUzKQorKysgTGF5b3V0VGVzdHMvc3ZnL2Rv
bS9yZ2ItY29sb3ItcGFyc2VyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTksNyAr
MTksNyBAQCBUaHJldyBleGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFCiBUaHJldyBl
eGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VSUjogRE9NIFNWRyBFeGNlcHRpb24g
MTogcmdiKAk1NSwuCiBUaHJldyBleGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VS
UjogRE9NIFNWRyBFeGNlcHRpb24gMTogcmdiKDI2MywlCTEtNzQpZQogVGhyZXcgZXhjZXB0aW9u
IEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6IHJnYigg
NjQxMTAsICgxIAotUGFyc2VkIGFzIHJnYigxNTAsMywyNTUpOiByZ2IoIDU5JTMgICA3MjUpCitU
aHJldyBleGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VSUjogRE9NIFNWRyBFeGNl
cHRpb24gMTogcmdiKCA1OSUzICAgNzI1KQogVGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5W
QUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6IHJnYig2ZSktMi0gMTgwCiBUaHJl
dyBleGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VSUjogRE9NIFNWRyBFeGNlcHRp
b24gMTogcmdiKCwJLjU3OWUoKCAKIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURf
VkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2IoKSgKQEAgLTQzLDcgKzQzLDcgQEAg
VGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRQogVGhyZXcgZXhjZXB0aW9u
IEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6IHJnYigJ
KWVlLiUpCiBUaHJldyBleGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VSUjogRE9N
IFNWRyBFeGNlcHRpb24gMTogcmdiKC0lMCUtCiBUaHJldyBleGNlcHRpb24gRXJyb3I6IFNWR19J
TlZBTElEX1ZBTFVFX0VSUjogRE9NIFNWRyBFeGNlcHRpb24gMTogcmdiKDIzMTI5MyAxNiUKLVBh
cnNlZCBhcyByZ2IoMCwwLDM3KTogcmdiKCstMiszNyk4ODg1ODArOQkoCitUaHJldyBleGNlcHRp
b24gRXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VSUjogRE9NIFNWRyBFeGNlcHRpb24gMTogcmdi
KCstMiszNyk4ODg1ODArOQkoCiBUaHJldyBleGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElEX1ZB
TFVFX0VSUjogRE9NIFNWRyBFeGNlcHRpb24gMTogcmdiKDE4CTgwNQogVGhyZXcgZXhjZXB0aW9u
IEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6IHJnYigw
CiBUaHJldyBleGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VSUjogRE9NIFNWRyBF
eGNlcHRpb24gMTogcmdiKDYzLS42OTMrCkBAIC03OCw3ICs3OCw3IEBAIFRocmV3IGV4Y2VwdGlv
biBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUUKIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lO
VkFMSURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2IoIC4zLjYgCSwtNTclNyBl
KzYKIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZH
IEV4Y2VwdGlvbiAxOiByZ2IoMSk3ICslKzggCSktCSAtLjYzZQogVGhyZXcgZXhjZXB0aW9uIEVy
cm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6IHJnYig2Nzg2
KS4oODkxMiUKLVBhcnNlZCBhcyByZ2IoMCw4LDApOiByZ2IoLQklOC0sKTg4NistIDllKSllCitU
aHJldyBleGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VSUjogRE9NIFNWRyBFeGNl
cHRpb24gMTogcmdiKC0JJTgtLCk4ODYrLSA5ZSkpZQogVGhyZXcgZXhjZXB0aW9uIEVycm9yOiBT
VkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6IHJnYiggLAk1NzMyIAog
VGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhj
ZXB0aW9uIDE6IHJnYigxOCkoCiBUaHJldyBleGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElEX1ZB
TFVFX0VSUjogRE9NIFNWRyBFeGNlcHRpb24gMTogcmdiKDMsKzEzJSg3MTElOSUJJTAgLQpAQCAt
MTA5LDcgKzEwOSw3IEBAIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUUK
IFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZHIEV4
Y2VwdGlvbiAxOiByZ2IoMC43OTVlMCwpLgklJSwKIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZH
X0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2IoKzcpLgogVGhyZXcg
ZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9u
IDE6IHJnYigoJSsJOCAtNzQpLjkgKyguCi1QYXJzZWQgYXMgcmdiKDAsMjU1LDApOiByZ2IoIDAJ
NjM1Kyk5LC0gOAkKK1RocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUVfRVJS
OiBET00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2IoIDAJNjM1Kyk5LC0gOAkKIFRocmV3IGV4Y2VwdGlv
biBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2Io
JTQlOSUlLgogVGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERP
TSBTVkcgRXhjZXB0aW9uIDE6IHJnYig0OSksLDQtMzAzNzggMDUyCiBUaHJldyBleGNlcHRpb24g
RXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VSUjogRE9NIFNWRyBFeGNlcHRpb24gMTogcmdiKCU3
ODYzCQpAQCAtMTE4LDcgKzExOCw3IEBAIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFM
SURfVkFMVUUKIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUVfRVJSOiBE
T00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2IoCTU1LC4KIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZH
X0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2IoMjYzLCUJMS03NCll
CiBUaHJldyBleGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VSUjogRE9NIFNWRyBF
eGNlcHRpb24gMTogcmdiKCA2NDExMCwgKDEgCi1QYXJzZWQgYXMgcmdiKDE1MCwzLDI1NSk6IHJn
YiggNTklMyAgIDcyNSkKK1RocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUVf
RVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2IoIDU5JTMgICA3MjUpCiBUaHJldyBleGNlcHRp
b24gRXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VSUjogRE9NIFNWRyBFeGNlcHRpb24gMTogcmdi
KDZlKS0yLSAxODAKIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUVfRVJS
OiBET00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2IoLAkuNTc5ZSgoIAogVGhyZXcgZXhjZXB0aW9uIEVy
cm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6IHJnYigpKApA
QCAtMTQyLDcgKzE0Miw3IEBAIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFM
VUUKIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZH
IEV4Y2VwdGlvbiAxOiByZ2IoCSllZS4lKQogVGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5W
QUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6IHJnYigtJTAlLQogVGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6
IHJnYigyMzEyOTMgMTYlCi1QYXJzZWQgYXMgcmdiKDAsMCwzNyk6IHJnYigrLTIrMzcpODg4NTgw
KzkJKAorVGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBT
VkcgRXhjZXB0aW9uIDE6IHJnYigrLTIrMzcpODg4NTgwKzkJKAogVGhyZXcgZXhjZXB0aW9uIEVy
cm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6IHJnYigxOAk4
MDUKIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZH
IEV4Y2VwdGlvbiAxOiByZ2IoMAogVGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5WQUxJRF9W
QUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6IHJnYig2My0uNjkzKwpAQCAtMTc3LDcgKzE3
Nyw3IEBAIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUUKIFRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAx
OiByZ2IoIC4zLjYgCSwtNTclNyBlKzYKIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFM
SURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2IoMSk3ICslKzggCSktCSAtLjYz
ZQogVGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcg
RXhjZXB0aW9uIDE6IHJnYig2Nzg2KS4oODkxMiUKLVBhcnNlZCBhcyByZ2IoMCw4LDApOiByZ2Io
LQklOC0sKTg4NistIDllKSllCitUaHJldyBleGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElEX1ZB
TFVFX0VSUjogRE9NIFNWRyBFeGNlcHRpb24gMTogcmdiKC0JJTgtLCk4ODYrLSA5ZSkpZQogVGhy
ZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0
aW9uIDE6IHJnYiggLAk1NzMyIAogVGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5WQUxJRF9W
QUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6IHJnYigxOCkoCiBUaHJldyBleGNlcHRpb24g
RXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VSUjogRE9NIFNWRyBFeGNlcHRpb24gMTogcmdiKDMs
KzEzJSg3MTElOSUJJTAgLQpAQCAtMjA4LDcgKzIwOCw3IEBAIFRocmV3IGV4Y2VwdGlvbiBFcnJv
cjogU1ZHX0lOVkFMSURfVkFMVUUKIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURf
VkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2IoMC43OTVlMCwpLgklJSwKIFRocmV3
IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlv
biAxOiByZ2IoKzcpLgogVGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9F
UlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6IHJnYigoJSsJOCAtNzQpLjkgKyguCi1QYXJzZWQgYXMg
cmdiKDAsMjU1LDApOiByZ2IoIDAJNjM1Kyk5LC0gOAkKK1RocmV3IGV4Y2VwdGlvbiBFcnJvcjog
U1ZHX0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2IoIDAJNjM1Kyk5
LC0gOAkKIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUVfRVJSOiBET00g
U1ZHIEV4Y2VwdGlvbiAxOiByZ2IoJTQlOSUlLgogVGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdf
SU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6IHJnYig0OSksLDQtMzAzNzgg
MDUyCiBUaHJldyBleGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VSUjogRE9NIFNW
RyBFeGNlcHRpb24gMTogcmdiKCU3ODYzCQpAQCAtMjE3LDcgKzIxNyw3IEBAIFRocmV3IGV4Y2Vw
dGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUUKIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZH
X0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2IoCTU1LC4KIFRocmV3
IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlv
biAxOiByZ2IoMjYzLCUJMS03NCllCiBUaHJldyBleGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElE
X1ZBTFVFX0VSUjogRE9NIFNWRyBFeGNlcHRpb24gMTogcmdiKCA2NDExMCwgKDEgCi1QYXJzZWQg
YXMgcmdiKDE1MCwzLDI1NSk6IHJnYiggNTklMyAgIDcyNSkKK1RocmV3IGV4Y2VwdGlvbiBFcnJv
cjogU1ZHX0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2IoIDU5JTMg
ICA3MjUpCiBUaHJldyBleGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VSUjogRE9N
IFNWRyBFeGNlcHRpb24gMTogcmdiKDZlKS0yLSAxODAKIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjog
U1ZHX0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2IoLAkuNTc5ZSgo
IAogVGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcg
RXhjZXB0aW9uIDE6IHJnYigpKApAQCAtMjQxLDcgKzI0MSw3IEBAIFRocmV3IGV4Y2VwdGlvbiBF
cnJvcjogU1ZHX0lOVkFMSURfVkFMVUUKIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFM
SURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2IoCSllZS4lKQogVGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6
IHJnYigtJTAlLQogVGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6
IERPTSBTVkcgRXhjZXB0aW9uIDE6IHJnYigyMzEyOTMgMTYlCi1QYXJzZWQgYXMgcmdiKDAsMCwz
Nyk6IHJnYigrLTIrMzcpODg4NTgwKzkJKAorVGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5W
QUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6IHJnYigrLTIrMzcpODg4NTgwKzkJ
KAogVGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcg
RXhjZXB0aW9uIDE6IHJnYigxOAk4MDUKIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFM
SURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2IoMAogVGhyZXcgZXhjZXB0aW9u
IEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6IHJnYig2
My0uNjkzKwpJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9D
aGFuZ2VMb2cJKHJldmlzaW9uIDI1MTU1KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAwNy0wOC0yMCAgUm9iIEJ1aXMgIDxidWlzQGtkZS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0
cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwNTkKKyAgICAgICAgU1ZHIGNv
bG9ycyBoYXZlIHR3byBzZXBhcmF0ZSBwYXJzaW5nIHBhdGhzIChvbmUgQ1NTIGFuZCBvbmUgU1ZH
Q29sb3I6OnNldFJHQkNvbG9yKQorCisgICAgICAgIFJldXNlIHRoZSBjc3MgcGFyc2VyIGFzIG11
Y2ggYXMgcG9zc2libGUgaW4gc2V0UkdCQ29sb3IuCisKKyAgICAgICAgKiBjc3MvY3NzcGFyc2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDb2xvcik6CisgICAgICAg
ICogY3NzL2Nzc3BhcnNlci5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdDb2xvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdDb2xvcjo6c2V0UkdCQ29sb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHQ29sb3I6OmNvbG9yRnJvbVJHQkNvbG9yU3RyaW5nKToKKwogMjAwNy0wOC0yMCAgUm9i
IEJ1aXMgIDxidWlzQGtkZS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTmlrb2xhcy4KSW5k
ZXg6IFdlYkNvcmUvY3NzL2Nzc3BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3Mv
Y3NzcGFyc2VyLmNwcAkocmV2aXNpb24gMjUxNTMpCisrKyBXZWJDb3JlL2Nzcy9jc3NwYXJzZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDQsMTYgKzI0NCwyMyBAQCBib29sIENTU1BhcnNlcjo6
cGFyc2VWYWx1ZShDU1NNdXRhYmxlU3R5CiAgICAgcmV0dXJuIG9rOwogfQogCi1SR0JBMzIgQ1NT
UGFyc2VyOjpwYXJzZUNvbG9yKGNvbnN0IFN0cmluZyAmc3RyaW5nLCBib29sIHN0cmljdCkKK1JH
QkEzMiBDU1NQYXJzZXI6OnBhcnNlQ29sb3IoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgc3Ry
aWN0KQogewogICAgIFJHQkEzMiBjb2xvciA9IDA7Ci0gICAgUmVmUHRyPENTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uPmR1bW15U3R5bGVEZWNsYXJhdGlvbiA9IG5ldyBDU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbjsKKyAgICAvLyByZXR1cm4gdmFsdWUgaWdub3JlZCB0byBtYXRjaCBvbGQgYmVo
YXZpb3VyCisgICAgcGFyc2VDb2xvcihjb2xvciwgc3RyaW5nLCBzdHJpY3QpOworICAgIHJldHVy
biBjb2xvcjsKK30KIAorYm9vbCBDU1NQYXJzZXI6OnBhcnNlQ29sb3IoUkdCQTMyJiBjb2xvciwg
Y29uc3QgU3RyaW5nICZzdHJpbmcsIGJvb2wgc3RyaWN0KQoreworICAgIGNvbG9yID0gMDsKICAg
ICBDU1NQYXJzZXIgcGFyc2VyKHRydWUpOwogCiAgICAgLy8gRmlyc3QgdHJ5IGNyZWF0aW5nIGEg
Y29sb3Igc3BlY2lmaWVkIGJ5IG5hbWUgb3IgdGhlICIjIiBzeW50YXguCiAgICAgaWYgKCFwYXJz
ZXIucGFyc2VDb2xvcihzdHJpbmcsIGNvbG9yLCBzdHJpY3QpKSB7Ci0gICAgCisgICAgICAgIFJl
ZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj5kdW1teVN0eWxlRGVjbGFyYXRpb24gPSBu
ZXcgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb247CisKICAgICAgICAgLy8gTm93IHRyeSB0byBj
cmVhdGUgYSBjb2xvciBmcm9tIHRoZSByZ2IoKSBvciByZ2JhKCkgc3ludGF4LgogICAgICAgICBp
ZiAocGFyc2VyLnBhcnNlQ29sb3IoZHVtbXlTdHlsZURlY2xhcmF0aW9uLmdldCgpLCBzdHJpbmcp
KSB7CiAgICAgICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBwYXJzZXIucGFyc2VkUHJvcGVydGll
c1swXS0+dmFsdWUoKTsKQEAgLTI2MSwxMCArMjY4LDExIEBAIFJHQkEzMiBDU1NQYXJzZXI6OnBh
cnNlQ29sb3IoY29uc3QgU3RyaW4KICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSAq
cHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSAqPih2YWx1ZSk7
CiAgICAgICAgICAgICAgICAgY29sb3IgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0UkdCQ29sb3JWYWx1
ZSgpOwogICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICAKLSAgICByZXR1cm4gY29sb3I7CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBDU1NQYXJzZXI6OnBhcnNlQ29sb3IoQ1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb24gKmRlY2xhcmF0aW9uLCBjb25zdCBTdHJpbmcgJnN0cmluZykKSW5kZXg6
IFdlYkNvcmUvY3NzL2Nzc3BhcnNlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL2Nzc3Bh
cnNlci5oCShyZXZpc2lvbiAyNTE1MykKKysrIFdlYkNvcmUvY3NzL2Nzc3BhcnNlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTgsNiArMTE4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBQYXNzUmVmUHRyPENTU1J1bGU+IHBhcnNlUnVsZShDU1NTdHlsZVNoZWV0KiwgY29uc3QgU3Ry
aW5nJik7CiAgICAgICAgIGJvb2wgcGFyc2VWYWx1ZShDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
biosIGludCBwcm9wSWQsIGNvbnN0IFN0cmluZyYsIGJvb2wgaW1wb3J0YW50KTsKICAgICAgICAg
c3RhdGljIFJHQkEzMiBwYXJzZUNvbG9yKGNvbnN0IFN0cmluZyYsIGJvb2wgc3RyaWN0ID0gZmFs
c2UpOworICAgICAgICBzdGF0aWMgYm9vbCBwYXJzZUNvbG9yKFJHQkEzMiYgY29sb3IsIGNvbnN0
IFN0cmluZyYsIGJvb2wgc3RyaWN0ID0gZmFsc2UpOwogICAgICAgICBib29sIHBhcnNlQ29sb3Io
Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qLCBjb25zdCBTdHJpbmcmKTsKICAgICAgICAgYm9v
bCBwYXJzZURlY2xhcmF0aW9uKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiwgY29uc3QgU3Ry
aW5nJik7CiAgICAgICAgIGJvb2wgcGFyc2VNZWRpYVF1ZXJ5KE1lZGlhTGlzdCosIGNvbnN0IFN0
cmluZyYpOwpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ29sb3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0NvbG9yLmNwcAkocmV2aXNpb24gMjUxNTMpCisrKyBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdDb2xvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDggKzI0
LDggQEAKICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNWR0NvbG9yLmgiCiAKKyNpbmNsdWRl
ICJjc3NwYXJzZXIuaCIKICNpbmNsdWRlICJTVkdFeGNlcHRpb24uaCIKLSNpbmNsdWRlICJTVkdQ
YXJzZXJVdGlsaXRpZXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03OSw0MCArNzks
MTcgQEAgdm9pZCBTVkdDb2xvcjo6c2V0UkdCQ29sb3IoY29uc3QgU3RyaW5nJgogICAgICAgICBl
YyA9IFNWR19JTlZBTElEX1ZBTFVFX0VSUjsKIH0KIAotc3RhdGljIGlubGluZSBib29sIHBhcnNl
TnVtYmVyT3JQZXJjZW50KGNvbnN0IFVDaGFyKiYgcHRyLCBjb25zdCBVQ2hhciogZW5kLCBkb3Vi
bGUmIHZhbHVlKQotewotICAgIGlmICghcGFyc2VOdW1iZXIocHRyLCBlbmQsIHZhbHVlKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChwdHIgPCBlbmQgJiYgKnB0ciA9PSAnJScpIHsK
LSAgICAgICAgdmFsdWUgPSBpbnQoKDI1NS4wICogdmFsdWUpIC8gMTAwLjApOwotICAgICAgICBw
dHIrKzsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIENvbG9yIFNWR0NvbG9yOjpjb2xv
ckZyb21SR0JDb2xvclN0cmluZyhjb25zdCBTdHJpbmcmIGNvbG9yU3RyaW5nKQogewotICAgIGlm
IChjb2xvclN0cmluZy5pc051bGwoKSkKKyAgICBSR0JBMzIgY29sb3I7CisgICAgU3RyaW5nIHMg
PSBjb2xvclN0cmluZy5zdHJpcFdoaXRlU3BhY2UoKTsKKyAgICAvLyBoc2wsIGhzbGEgYW5kIHJn
YmEgYXJlIG5vdCBpbiB0aGUgU1ZHIHNwZWMuCisgICAgLy8gRklYTUU6IHJld29yayBjc3MgcGFy
c2VyIHNvIGl0IGlzIG1vcmUgc3ZnIGF3YXJlCisgICAgaWYgKHMuc3RhcnRzV2l0aCgiaHNsIikg
fHwgcy5zdGFydHNXaXRoKCJyZ2JhIikgfHwKKyAgICAgICAgIUNTU1BhcnNlcjo6cGFyc2VDb2xv
cihjb2xvciwgcykpCiAgICAgICAgIHJldHVybiBDb2xvcigpOwogCi0gICAgQ29sb3IgY29sb3I7
Ci0gICAgU3RyaW5nIHBhcnNlID0gY29sb3JTdHJpbmcuc3RyaXBXaGl0ZVNwYWNlKCk7Ci0gICAg
aWYgKHBhcnNlLnN0YXJ0c1dpdGgoInJnYigiKSkgewotICAgICAgICBkb3VibGUgciA9IC0xLCBn
ID0gLTEsIGIgPSAtMTsKLSAgICAgICAgY29uc3QgVUNoYXIqIHB0ciA9IHBhcnNlLmNoYXJhY3Rl
cnMoKSArIDQ7Ci0gICAgICAgIGNvbnN0IFVDaGFyKiBlbmQgPSBwYXJzZS5jaGFyYWN0ZXJzKCkg
KyBwYXJzZS5sZW5ndGgoKTsKLSAgICAgICAgc2tpcE9wdGlvbmFsU3BhY2VzKHB0ciwgZW5kKTsK
LSAgICAgICAgaWYgKCFwYXJzZU51bWJlck9yUGVyY2VudChwdHIsIGVuZCwgcikKLSAgICAgICAg
IHx8ICFwYXJzZU51bWJlck9yUGVyY2VudChwdHIsIGVuZCwgZykKLSAgICAgICAgIHx8ICFwYXJz
ZU51bWJlck9yUGVyY2VudChwdHIsIGVuZCwgYikpCi0gICAgICAgICAgICByZXR1cm4gQ29sb3Io
KTsKLQotICAgICAgICBpZiAocHRyID49IGVuZCB8fCAqcHRyICE9ICcpJykKLSAgICAgICAgICAg
IHJldHVybiBDb2xvcigpOwotCi0gICAgICAgICByZXR1cm4gQ29sb3IoaW50KHIpLCBpbnQoZyks
IGludChiKSk7Ci0gICAgfQotICAgIHJldHVybiBDb2xvcihwYXJzZS5sb3dlcigpKTsKKyAgICBy
ZXR1cm4gY29sb3I7CiB9CiAKIHZvaWQgU1ZHQ29sb3I6OnNldFJHQkNvbG9ySUNDQ29sb3IoY29u
c3QgU3RyaW5nJiAvKiByZ2JDb2xvciAqLywgY29uc3QgU3RyaW5nJiAvKiBpY2NDb2xvciAqLywg
RXhjZXB0aW9uQ29kZSYgZWMpCg==
</data>
<flag name="review"
          id="6729"
          type_id="1"
          status="-"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>16062</attachid>
            <date>2007-08-21 13:29:33 -0700</date>
            <delta_ts>2007-08-21 21:33:51 -0700</delta_ts>
            <desc>Slightly different approach</desc>
            <filename>12059-3.diff</filename>
            <type>text/plain</type>
            <size>17794</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDI1MTc0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDctMDgtMjEgIFJvYiBCdWlzICA8YnVpc0Br
ZGUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDU5CisgICAgICAgIFNW
RyBjb2xvcnMgaGF2ZSB0d28gc2VwYXJhdGUgcGFyc2luZyBwYXRocyAob25lIENTUyBhbmQgb25l
IFNWR0NvbG9yOjpzZXRSR0JDb2xvcikKKworICAgICAgICBJbXByb3ZlZCB0ZXN0IHJlc3VsdC4K
KworICAgICAgICAqIHN2Zy9kb20vcmdiLWNvbG9yLXBhcnNlci1leHBlY3RlZC50eHQ6CisKIDIw
MDctMDgtMjAgIFJvYiBCdWlzICA8YnVpc0BrZGUub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IE5pa29sYXMuCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZG9tL3JnYi1jb2xvci1wYXJzZXItZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9kb20vcmdiLWNvbG9yLXBh
cnNlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI1MTc0KQorKysgTGF5b3V0VGVzdHMvc3ZnL2Rv
bS9yZ2ItY29sb3ItcGFyc2VyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTksNyAr
MTksNyBAQCBUaHJldyBleGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFCiBUaHJldyBl
eGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VSUjogRE9NIFNWRyBFeGNlcHRpb24g
MTogcmdiKAk1NSwuCiBUaHJldyBleGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VS
UjogRE9NIFNWRyBFeGNlcHRpb24gMTogcmdiKDI2MywlCTEtNzQpZQogVGhyZXcgZXhjZXB0aW9u
IEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6IHJnYigg
NjQxMTAsICgxIAotUGFyc2VkIGFzIHJnYigxNTAsMywyNTUpOiByZ2IoIDU5JTMgICA3MjUpCitU
aHJldyBleGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VSUjogRE9NIFNWRyBFeGNl
cHRpb24gMTogcmdiKCA1OSUzICAgNzI1KQogVGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5W
QUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6IHJnYig2ZSktMi0gMTgwCiBUaHJl
dyBleGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VSUjogRE9NIFNWRyBFeGNlcHRp
b24gMTogcmdiKCwJLjU3OWUoKCAKIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURf
VkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2IoKSgKQEAgLTQzLDcgKzQzLDcgQEAg
VGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRQogVGhyZXcgZXhjZXB0aW9u
IEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6IHJnYigJ
KWVlLiUpCiBUaHJldyBleGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VSUjogRE9N
IFNWRyBFeGNlcHRpb24gMTogcmdiKC0lMCUtCiBUaHJldyBleGNlcHRpb24gRXJyb3I6IFNWR19J
TlZBTElEX1ZBTFVFX0VSUjogRE9NIFNWRyBFeGNlcHRpb24gMTogcmdiKDIzMTI5MyAxNiUKLVBh
cnNlZCBhcyByZ2IoMCwwLDM3KTogcmdiKCstMiszNyk4ODg1ODArOQkoCitUaHJldyBleGNlcHRp
b24gRXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VSUjogRE9NIFNWRyBFeGNlcHRpb24gMTogcmdi
KCstMiszNyk4ODg1ODArOQkoCiBUaHJldyBleGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElEX1ZB
TFVFX0VSUjogRE9NIFNWRyBFeGNlcHRpb24gMTogcmdiKDE4CTgwNQogVGhyZXcgZXhjZXB0aW9u
IEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6IHJnYigw
CiBUaHJldyBleGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VSUjogRE9NIFNWRyBF
eGNlcHRpb24gMTogcmdiKDYzLS42OTMrCkBAIC03OCw3ICs3OCw3IEBAIFRocmV3IGV4Y2VwdGlv
biBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUUKIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lO
VkFMSURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2IoIC4zLjYgCSwtNTclNyBl
KzYKIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZH
IEV4Y2VwdGlvbiAxOiByZ2IoMSk3ICslKzggCSktCSAtLjYzZQogVGhyZXcgZXhjZXB0aW9uIEVy
cm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6IHJnYig2Nzg2
KS4oODkxMiUKLVBhcnNlZCBhcyByZ2IoMCw4LDApOiByZ2IoLQklOC0sKTg4NistIDllKSllCitU
aHJldyBleGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VSUjogRE9NIFNWRyBFeGNl
cHRpb24gMTogcmdiKC0JJTgtLCk4ODYrLSA5ZSkpZQogVGhyZXcgZXhjZXB0aW9uIEVycm9yOiBT
VkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6IHJnYiggLAk1NzMyIAog
VGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhj
ZXB0aW9uIDE6IHJnYigxOCkoCiBUaHJldyBleGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElEX1ZB
TFVFX0VSUjogRE9NIFNWRyBFeGNlcHRpb24gMTogcmdiKDMsKzEzJSg3MTElOSUJJTAgLQpAQCAt
MTA5LDcgKzEwOSw3IEBAIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUUK
IFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZHIEV4
Y2VwdGlvbiAxOiByZ2IoMC43OTVlMCwpLgklJSwKIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZH
X0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2IoKzcpLgogVGhyZXcg
ZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9u
IDE6IHJnYigoJSsJOCAtNzQpLjkgKyguCi1QYXJzZWQgYXMgcmdiKDAsMjU1LDApOiByZ2IoIDAJ
NjM1Kyk5LC0gOAkKK1RocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUVfRVJS
OiBET00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2IoIDAJNjM1Kyk5LC0gOAkKIFRocmV3IGV4Y2VwdGlv
biBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2Io
JTQlOSUlLgogVGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERP
TSBTVkcgRXhjZXB0aW9uIDE6IHJnYig0OSksLDQtMzAzNzggMDUyCiBUaHJldyBleGNlcHRpb24g
RXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VSUjogRE9NIFNWRyBFeGNlcHRpb24gMTogcmdiKCU3
ODYzCQpAQCAtMTE4LDcgKzExOCw3IEBAIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFM
SURfVkFMVUUKIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUVfRVJSOiBE
T00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2IoCTU1LC4KIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZH
X0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2IoMjYzLCUJMS03NCll
CiBUaHJldyBleGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VSUjogRE9NIFNWRyBF
eGNlcHRpb24gMTogcmdiKCA2NDExMCwgKDEgCi1QYXJzZWQgYXMgcmdiKDE1MCwzLDI1NSk6IHJn
YiggNTklMyAgIDcyNSkKK1RocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUVf
RVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2IoIDU5JTMgICA3MjUpCiBUaHJldyBleGNlcHRp
b24gRXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VSUjogRE9NIFNWRyBFeGNlcHRpb24gMTogcmdi
KDZlKS0yLSAxODAKIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUVfRVJS
OiBET00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2IoLAkuNTc5ZSgoIAogVGhyZXcgZXhjZXB0aW9uIEVy
cm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6IHJnYigpKApA
QCAtMTQyLDcgKzE0Miw3IEBAIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFM
VUUKIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZH
IEV4Y2VwdGlvbiAxOiByZ2IoCSllZS4lKQogVGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5W
QUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6IHJnYigtJTAlLQogVGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6
IHJnYigyMzEyOTMgMTYlCi1QYXJzZWQgYXMgcmdiKDAsMCwzNyk6IHJnYigrLTIrMzcpODg4NTgw
KzkJKAorVGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBT
VkcgRXhjZXB0aW9uIDE6IHJnYigrLTIrMzcpODg4NTgwKzkJKAogVGhyZXcgZXhjZXB0aW9uIEVy
cm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6IHJnYigxOAk4
MDUKIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZH
IEV4Y2VwdGlvbiAxOiByZ2IoMAogVGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5WQUxJRF9W
QUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6IHJnYig2My0uNjkzKwpAQCAtMTc3LDcgKzE3
Nyw3IEBAIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUUKIFRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAx
OiByZ2IoIC4zLjYgCSwtNTclNyBlKzYKIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFM
SURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2IoMSk3ICslKzggCSktCSAtLjYz
ZQogVGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcg
RXhjZXB0aW9uIDE6IHJnYig2Nzg2KS4oODkxMiUKLVBhcnNlZCBhcyByZ2IoMCw4LDApOiByZ2Io
LQklOC0sKTg4NistIDllKSllCitUaHJldyBleGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElEX1ZB
TFVFX0VSUjogRE9NIFNWRyBFeGNlcHRpb24gMTogcmdiKC0JJTgtLCk4ODYrLSA5ZSkpZQogVGhy
ZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0
aW9uIDE6IHJnYiggLAk1NzMyIAogVGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5WQUxJRF9W
QUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6IHJnYigxOCkoCiBUaHJldyBleGNlcHRpb24g
RXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VSUjogRE9NIFNWRyBFeGNlcHRpb24gMTogcmdiKDMs
KzEzJSg3MTElOSUJJTAgLQpAQCAtMjA4LDcgKzIwOCw3IEBAIFRocmV3IGV4Y2VwdGlvbiBFcnJv
cjogU1ZHX0lOVkFMSURfVkFMVUUKIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURf
VkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2IoMC43OTVlMCwpLgklJSwKIFRocmV3
IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlv
biAxOiByZ2IoKzcpLgogVGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9F
UlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6IHJnYigoJSsJOCAtNzQpLjkgKyguCi1QYXJzZWQgYXMg
cmdiKDAsMjU1LDApOiByZ2IoIDAJNjM1Kyk5LC0gOAkKK1RocmV3IGV4Y2VwdGlvbiBFcnJvcjog
U1ZHX0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2IoIDAJNjM1Kyk5
LC0gOAkKIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUVfRVJSOiBET00g
U1ZHIEV4Y2VwdGlvbiAxOiByZ2IoJTQlOSUlLgogVGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdf
SU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6IHJnYig0OSksLDQtMzAzNzgg
MDUyCiBUaHJldyBleGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VSUjogRE9NIFNW
RyBFeGNlcHRpb24gMTogcmdiKCU3ODYzCQpAQCAtMjE3LDcgKzIxNyw3IEBAIFRocmV3IGV4Y2Vw
dGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUUKIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZH
X0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2IoCTU1LC4KIFRocmV3
IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlv
biAxOiByZ2IoMjYzLCUJMS03NCllCiBUaHJldyBleGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElE
X1ZBTFVFX0VSUjogRE9NIFNWRyBFeGNlcHRpb24gMTogcmdiKCA2NDExMCwgKDEgCi1QYXJzZWQg
YXMgcmdiKDE1MCwzLDI1NSk6IHJnYiggNTklMyAgIDcyNSkKK1RocmV3IGV4Y2VwdGlvbiBFcnJv
cjogU1ZHX0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2IoIDU5JTMg
ICA3MjUpCiBUaHJldyBleGNlcHRpb24gRXJyb3I6IFNWR19JTlZBTElEX1ZBTFVFX0VSUjogRE9N
IFNWRyBFeGNlcHRpb24gMTogcmdiKDZlKS0yLSAxODAKIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjog
U1ZHX0lOVkFMSURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2IoLAkuNTc5ZSgo
IAogVGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcg
RXhjZXB0aW9uIDE6IHJnYigpKApAQCAtMjQxLDcgKzI0MSw3IEBAIFRocmV3IGV4Y2VwdGlvbiBF
cnJvcjogU1ZHX0lOVkFMSURfVkFMVUUKIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFM
SURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2IoCSllZS4lKQogVGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6
IHJnYigtJTAlLQogVGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6
IERPTSBTVkcgRXhjZXB0aW9uIDE6IHJnYigyMzEyOTMgMTYlCi1QYXJzZWQgYXMgcmdiKDAsMCwz
Nyk6IHJnYigrLTIrMzcpODg4NTgwKzkJKAorVGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5W
QUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6IHJnYigrLTIrMzcpODg4NTgwKzkJ
KAogVGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcg
RXhjZXB0aW9uIDE6IHJnYigxOAk4MDUKIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1ZHX0lOVkFM
SURfVkFMVUVfRVJSOiBET00gU1ZHIEV4Y2VwdGlvbiAxOiByZ2IoMAogVGhyZXcgZXhjZXB0aW9u
IEVycm9yOiBTVkdfSU5WQUxJRF9WQUxVRV9FUlI6IERPTSBTVkcgRXhjZXB0aW9uIDE6IHJnYig2
My0uNjkzKwpJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9D
aGFuZ2VMb2cJKHJldmlzaW9uIDI1MTc0KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwyOCBAQAorMjAwNy0wOC0yMSAgUm9iIEJ1aXMgIDxidWlzQGtkZS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0
cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwNTkKKyAgICAgICAgU1ZHIGNv
bG9ycyBoYXZlIHR3byBzZXBhcmF0ZSBwYXJzaW5nIHBhdGhzIChvbmUgQ1NTIGFuZCBvbmUgU1ZH
Q29sb3I6OnNldFJHQkNvbG9yKQorCisgICAgICAgIFJldXNlIHRoZSBjc3MgcGFyc2VyIGFzIG11
Y2ggYXMgcG9zc2libGUgaW4gc2V0UkdCQ29sb3IuCisKKyAgICAgICAgKiBjc3MvY3NzcGFyc2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDb2xvcik6CisgICAgICAg
ICogY3NzL2Nzc3BhcnNlci5oOgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDaGFuZ2U6OmNoZWNrRm9yTGVnYWN5SFRNTFN0
eWxlQ2hhbmdlKToKKyAgICAgICAgKiBodG1sL0NhbnZhc0dyYWRpZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhbnZhc0dyYWRpZW50OjphZGRDb2xvclN0b3ApOgorICAgICAgICAqIGh0bWwv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6YXBwbHlTaGFkb3cpOgorICAgICAgICAqIGh0bWwvQ2FudmFzU3R5
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OmFwcGx5U3Ryb2tlQ29sb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OmFwcGx5RmlsbENvbG9yKToKKyAgICAg
ICAgKiBrc3ZnMi9zdmcvU1ZHQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ29sb3I6
OmNvbG9yRnJvbVJHQkNvbG9yU3RyaW5nKToKKwogMjAwNy0wOC0yMCAgUm9iIEJ1aXMgIDxidWlz
QGtkZS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTmlrb2xhcy4KSW5kZXg6IFdlYkNvcmUv
Y3NzL2Nzc3BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvY3NzcGFyc2VyLmNw
cAkocmV2aXNpb24gMjUxNzQpCisrKyBXZWJDb3JlL2Nzcy9jc3NwYXJzZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNDQsMTYgKzI0NCwxNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShD
U1NNdXRhYmxlU3R5CiAgICAgcmV0dXJuIG9rOwogfQogCi1SR0JBMzIgQ1NTUGFyc2VyOjpwYXJz
ZUNvbG9yKGNvbnN0IFN0cmluZyAmc3RyaW5nLCBib29sIHN0cmljdCkKKy8vIGNvbG9yIHdpbGwg
b25seSBiZSBjaGFuZ2VkIHdoZW4gc3RyaW5nIGNvbnRhaW5zIGEgdmFsaWQgY3NzIGNvbG9yLCBt
YWtpbmcgaXQKKy8vIHBvc3NpYmxlIHRvIHNldCB1cCBhIGRlZmF1bHQgY29sb3IuCitib29sIENT
U1BhcnNlcjo6cGFyc2VDb2xvcihSR0JBMzImIGNvbG9yLCBjb25zdCBTdHJpbmcgJnN0cmluZywg
Ym9vbCBzdHJpY3QpCiB7Ci0gICAgUkdCQTMyIGNvbG9yID0gMDsKLSAgICBSZWZQdHI8Q1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb24+ZHVtbXlTdHlsZURlY2xhcmF0aW9uID0gbmV3IENTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uOwotCisgICAgY29sb3IgPSAwOwogICAgIENTU1BhcnNlciBwYXJz
ZXIodHJ1ZSk7CiAKICAgICAvLyBGaXJzdCB0cnkgY3JlYXRpbmcgYSBjb2xvciBzcGVjaWZpZWQg
YnkgbmFtZSBvciB0aGUgIiMiIHN5bnRheC4KICAgICBpZiAoIXBhcnNlci5wYXJzZUNvbG9yKHN0
cmluZywgY29sb3IsIHN0cmljdCkpIHsKLSAgICAKKyAgICAgICAgUmVmUHRyPENTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uPmR1bW15U3R5bGVEZWNsYXJhdGlvbiA9IG5ldyBDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbjsKKwogICAgICAgICAvLyBOb3cgdHJ5IHRvIGNyZWF0ZSBhIGNvbG9yIGZy
b20gdGhlIHJnYigpIG9yIHJnYmEoKSBzeW50YXguCiAgICAgICAgIGlmIChwYXJzZXIucGFyc2VD
b2xvcihkdW1teVN0eWxlRGVjbGFyYXRpb24uZ2V0KCksIHN0cmluZykpIHsKICAgICAgICAgICAg
IENTU1ZhbHVlKiB2YWx1ZSA9IHBhcnNlci5wYXJzZWRQcm9wZXJ0aWVzWzBdLT52YWx1ZSgpOwpA
QCAtMjYxLDEwICsyNjIsMTEgQEAgUkdCQTMyIENTU1BhcnNlcjo6cGFyc2VDb2xvcihjb25zdCBT
dHJpbgogICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlICpwcmltaXRpdmVWYWx1ZSA9
IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlICo+KHZhbHVlKTsKICAgICAgICAgICAgICAg
ICBjb2xvciA9IHByaW1pdGl2ZVZhbHVlLT5nZXRSR0JDb2xvclZhbHVlKCk7CiAgICAgICAgICAg
ICB9Ci0gICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQotICAgIAotICAgIHJldHVybiBjb2xvcjsKKworICAgIHJldHVybiB0cnVlOwogfQog
CiBib29sIENTU1BhcnNlcjo6cGFyc2VDb2xvcihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiAq
ZGVjbGFyYXRpb24sIGNvbnN0IFN0cmluZyAmc3RyaW5nKQpJbmRleDogV2ViQ29yZS9jc3MvY3Nz
cGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvY3NzcGFyc2VyLmgJKHJldmlzaW9u
IDI1MTc0KQorKysgV2ViQ29yZS9jc3MvY3NzcGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEx
Nyw3ICsxMTcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgcGFyc2VTaGVl
dChDU1NTdHlsZVNoZWV0KiwgY29uc3QgU3RyaW5nJik7CiAgICAgICAgIFBhc3NSZWZQdHI8Q1NT
UnVsZT4gcGFyc2VSdWxlKENTU1N0eWxlU2hlZXQqLCBjb25zdCBTdHJpbmcmKTsKICAgICAgICAg
Ym9vbCBwYXJzZVZhbHVlKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiwgaW50IHByb3BJZCwg
Y29uc3QgU3RyaW5nJiwgYm9vbCBpbXBvcnRhbnQpOwotICAgICAgICBzdGF0aWMgUkdCQTMyIHBh
cnNlQ29sb3IoY29uc3QgU3RyaW5nJiwgYm9vbCBzdHJpY3QgPSBmYWxzZSk7CisgICAgICAgIHN0
YXRpYyBib29sIHBhcnNlQ29sb3IoUkdCQTMyJiBjb2xvciwgY29uc3QgU3RyaW5nJiwgYm9vbCBz
dHJpY3QgPSBmYWxzZSk7CiAgICAgICAgIGJvb2wgcGFyc2VDb2xvcihDU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbiosIGNvbnN0IFN0cmluZyYpOwogICAgICAgICBib29sIHBhcnNlRGVjbGFyYXRp
b24oQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qLCBjb25zdCBTdHJpbmcmKTsKICAgICAgICAg
Ym9vbCBwYXJzZU1lZGlhUXVlcnkoTWVkaWFMaXN0KiwgY29uc3QgU3RyaW5nJik7CkluZGV4OiBX
ZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAJKHJldmlzaW9uIDI1MTc0KQorKysgV2Vi
Q29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU5
LDcgKzE1OSw5IEBAIGJvb2wgU3R5bGVDaGFuZ2U6OmNoZWNrRm9yTGVnYWN5SFRNTFN0eWwKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19QUk9QX0NP
TE9SOiB7Ci0gICAgICAgICAgICBDb2xvciBjb2xvcihDU1NQYXJzZXI6OnBhcnNlQ29sb3IodmFs
dWVUZXh0KSk7CisgICAgICAgICAgICBSR0JBMzIgcmdiYSA9IDA7CisgICAgICAgICAgICBDU1NQ
YXJzZXI6OnBhcnNlQ29sb3IocmdiYSwgdmFsdWVUZXh0KTsKKyAgICAgICAgICAgIENvbG9yIGNv
bG9yKHJnYmEpOwogICAgICAgICAgICAgbV9hcHBseUZvbnRDb2xvciA9IGNvbG9yLm5hbWUoKTsK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkluZGV4OiBXZWJDb3JlL2h0bWwv
Q2FudmFzR3JhZGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9DYW52YXNHcmFk
aWVudC5jcHAJKHJldmlzaW9uIDI1MTc0KQorKysgV2ViQ29yZS9odG1sL0NhbnZhc0dyYWRpZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTksOCBAQCBDYW52YXNHcmFkaWVudDo6fkNh
bnZhc0dyYWRpZW50KCkKIAogdm9pZCBDYW52YXNHcmFkaWVudDo6YWRkQ29sb3JTdG9wKGZsb2F0
IHZhbHVlLCBjb25zdCBTdHJpbmcmIGNvbG9yKQogewotICAgIFJHQkEzMiByZ2JhID0gQ1NTUGFy
c2VyOjpwYXJzZUNvbG9yKGNvbG9yKTsKKyAgICBSR0JBMzIgcmdiYSA9IDA7IC8vIGRlZmF1bHQg
aXMgdHJhbnNwYXJhbnQgYmxhY2sKKyAgICBDU1NQYXJzZXI6OnBhcnNlQ29sb3IocmdiYSwgY29s
b3IpOwogICAgIG1fc3RvcHMuYXBwZW5kKENvbG9yU3RvcCh2YWx1ZSwKICAgICAgICAgKChyZ2Jh
ID4+IDE2KSAmIDB4RkYpIC8gMjU1LjAsCiAgICAgICAgICgocmdiYSA+PiA4KSAmIDB4RkYpIC8g
MjU1LjAsCkluZGV4OiBXZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAko
cmV2aXNpb24gMjUxNzQpCisrKyBXZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjE1LDcgKzYxNSw4IEBAIHZvaWQgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpzZXRTaGFkb3cKICAgICAgICAgcmV0dXJuOwogICAgIC8vIEZJWE1FOiBE
byB0aGlzIHRocm91Z2ggcGxhdGZvcm0taW5kZXBlbmRlbnQgR3JhcGhpY3NDb250ZXh0IEFQSS4K
ICNpZiBQTEFURk9STShDRykKLSAgICBSR0JBMzIgcmdiYSA9IENTU1BhcnNlcjo6cGFyc2VDb2xv
cihjb2xvcik7CisgICAgUkdCQTMyIHJnYmEgPSAwOyAvLyBkZWZhdWx0IGlzIHRyYW5zcGFyYW50
IGJsYWNrCisgICAgQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKHJnYmEsIGNvbG9yKTsKICAgICBjb25z
dCBDR0Zsb2F0IGNvbXBvbmVudHNbNF0gPSB7CiAgICAgICAgICgocmdiYSA+PiAxNikgJiAweEZG
KSAvIDI1NS4wLAogICAgICAgICAoKHJnYmEgPj4gOCkgJiAweEZGKSAvIDI1NS4wLApAQCAtNzA1
LDcgKzcwNiw5IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjphcHBseVNoYWQKICAg
ICAgICAgcmV0dXJuOwogICAgIC8vIEZJWE1FOiBEbyB0aGlzIHRocm91Z2ggcGxhdGZvcm0taW5k
ZXBlbmRlbnQgR3JhcGhpY3NDb250ZXh0IEFQSS4KICNpZiBQTEFURk9STShDRykKLSAgICBSR0JB
MzIgcmdiYSA9IHN0YXRlKCkubV9zaGFkb3dDb2xvci5pc0VtcHR5KCkgPyAwIDogQ1NTUGFyc2Vy
OjpwYXJzZUNvbG9yKHN0YXRlKCkubV9zaGFkb3dDb2xvcik7CisgICAgUkdCQTMyIHJnYmEgPSAw
OyAvLyBkZWZhdWx0IGlzIHRyYW5zcGFyYW50IGJsYWNrCisgICAgaWYgKCFzdGF0ZSgpLm1fc2hh
ZG93Q29sb3IuaXNFbXB0eSgpKQorICAgICAgICBDU1NQYXJzZXI6OnBhcnNlQ29sb3IocmdiYSwg
c3RhdGUoKS5tX3NoYWRvd0NvbG9yKTsKICAgICBjb25zdCBDR0Zsb2F0IGNvbXBvbmVudHNbNF0g
PSB7CiAgICAgICAgICgocmdiYSA+PiAxNikgJiAweEZGKSAvIDI1NS4wLAogICAgICAgICAoKHJn
YmEgPj4gOCkgJiAweEZGKSAvIDI1NS4wLApJbmRleDogV2ViQ29yZS9odG1sL0NhbnZhc1N0eWxl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvQ2FudmFzU3R5bGUuY3BwCShyZXZpc2lv
biAyNTE3NCkKKysrIFdlYkNvcmUvaHRtbC9DYW52YXNTdHlsZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTgwLDcgKzgwLDggQEAgdm9pZCBDYW52YXNTdHlsZTo6YXBwbHlTdHJva2VDb2xvcihHcmFw
aAogICAgICAgICByZXR1cm47CiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICAgICAgY2FzZSBD
b2xvclN0cmluZzogewotICAgICAgICAgICAgUkdCQTMyIGNvbG9yID0gQ1NTUGFyc2VyOjpwYXJz
ZUNvbG9yKG1fY29sb3IpOworICAgICAgICAgICAgUkdCQTMyIGNvbG9yID0gMDsgLy8gZGVmYXVs
dCBpcyB0cmFuc3BhcmFudCBibGFjaworICAgICAgICAgICAgQ1NTUGFyc2VyOjpwYXJzZUNvbG9y
KGNvbG9yLCBtX2NvbG9yKTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBEbyB0aGlzIHRocm91Z2gg
cGxhdGZvcm0taW5kZXBlbmRlbnQgR3JhcGhpY3NDb250ZXh0IEFQSS4KICNpZiBQTEFURk9STShD
RykKICAgICAgICAgICAgIENHQ29udGV4dFNldFJHQlN0cm9rZUNvbG9yKGNvbnRleHQtPnBsYXRm
b3JtQ29udGV4dCgpLApAQCAtOTIsNyArOTMsOCBAQCB2b2lkIENhbnZhc1N0eWxlOjphcHBseVN0
cm9rZUNvbG9yKEdyYXBoCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIENvbG9yU3RyaW5nV2l0aEFscGhhOiB7Ci0gICAgICAgICAgICBSR0JBMzIgY29sb3IgPSBD
U1NQYXJzZXI6OnBhcnNlQ29sb3IobV9jb2xvcik7CisgICAgICAgICAgICBSR0JBMzIgY29sb3Ig
PSAwOyAvLyBkZWZhdWx0IGlzIHRyYW5zcGFyYW50IGJsYWNrCisgICAgICAgICAgICBDU1NQYXJz
ZXI6OnBhcnNlQ29sb3IoY29sb3IsIG1fY29sb3IpOwogICAgICAgICAgICAgLy8gRklYTUU6IERv
IHRoaXMgdGhyb3VnaCBwbGF0Zm9ybS1pbmRlcGVuZGVudCBHcmFwaGljc0NvbnRleHQgQVBJLgog
I2lmIFBMQVRGT1JNKENHKQogICAgICAgICAgICAgQ0dDb250ZXh0U2V0UkdCU3Ryb2tlQ29sb3Io
Y29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksCkBAIC0xMzMsNyArMTM1LDggQEAgdm9pZCBDYW52
YXNTdHlsZTo6YXBwbHlGaWxsQ29sb3IoR3JhcGhpYwogICAgICAgICByZXR1cm47CiAgICAgc3dp
dGNoIChtX3R5cGUpIHsKICAgICAgICAgY2FzZSBDb2xvclN0cmluZzogewotICAgICAgICAgICAg
UkdCQTMyIGNvbG9yID0gQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKG1fY29sb3IpOworICAgICAgICAg
ICAgUkdCQTMyIGNvbG9yID0gMDsgLy8gZGVmYXVsdCBpcyB0cmFuc3BhcmFudCBibGFjaworICAg
ICAgICAgICAgQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKGNvbG9yLCBtX2NvbG9yKTsKICAgICAgICAg
ICAgIC8vIEZJWE1FOiBEbyB0aGlzIHRocm91Z2ggcGxhdGZvcm0taW5kZXBlbmRlbnQgR3JhcGhp
Y3NDb250ZXh0IEFQSS4KICNpZiBQTEFURk9STShDRykKICAgICAgICAgICAgIENHQ29udGV4dFNl
dFJHQkZpbGxDb2xvcihjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwKQEAgLTE0NSw3ICsxNDgs
OCBAQCB2b2lkIENhbnZhc1N0eWxlOjphcHBseUZpbGxDb2xvcihHcmFwaGljCiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENvbG9yU3RyaW5nV2l0aEFscGhhOiB7
Ci0gICAgICAgICAgICBSR0JBMzIgY29sb3IgPSBDU1NQYXJzZXI6OnBhcnNlQ29sb3IobV9jb2xv
cik7CisgICAgICAgICAgICBSR0JBMzIgY29sb3IgPSAwOyAvLyBkZWZhdWx0IGlzIHRyYW5zcGFy
YW50IGJsYWNrCisgICAgICAgICAgICBDU1NQYXJzZXI6OnBhcnNlQ29sb3IoY29sb3IsIG1fY29s
b3IpOwogICAgICAgICAgICAgLy8gRklYTUU6IERvIHRoaXMgdGhyb3VnaCBwbGF0Zm9ybS1pbmRl
cGVuZGVudCBHcmFwaGljc0NvbnRleHQgQVBJLgogI2lmIFBMQVRGT1JNKENHKQogICAgICAgICAg
ICAgQ0dDb250ZXh0U2V0UkdCRmlsbENvbG9yKGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLApJ
bmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ29sb3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR0NvbG9yLmNwcAkocmV2aXNpb24gMjUxNzQpCisrKyBXZWJDb3JlL2tz
dmcyL3N2Zy9TVkdDb2xvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDggKzI0LDggQEAKICNp
ZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNWR0NvbG9yLmgiCiAKKyNpbmNsdWRlICJjc3NwYXJz
ZXIuaCIKICNpbmNsdWRlICJTVkdFeGNlcHRpb24uaCIKLSNpbmNsdWRlICJTVkdQYXJzZXJVdGls
aXRpZXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03OSw0MCArNzksMTcgQEAgdm9p
ZCBTVkdDb2xvcjo6c2V0UkdCQ29sb3IoY29uc3QgU3RyaW5nJgogICAgICAgICBlYyA9IFNWR19J
TlZBTElEX1ZBTFVFX0VSUjsKIH0KIAotc3RhdGljIGlubGluZSBib29sIHBhcnNlTnVtYmVyT3JQ
ZXJjZW50KGNvbnN0IFVDaGFyKiYgcHRyLCBjb25zdCBVQ2hhciogZW5kLCBkb3VibGUmIHZhbHVl
KQotewotICAgIGlmICghcGFyc2VOdW1iZXIocHRyLCBlbmQsIHZhbHVlKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGlmIChwdHIgPCBlbmQgJiYgKnB0ciA9PSAnJScpIHsKLSAgICAgICAg
dmFsdWUgPSBpbnQoKDI1NS4wICogdmFsdWUpIC8gMTAwLjApOwotICAgICAgICBwdHIrKzsKLSAg
ICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIENvbG9yIFNWR0NvbG9yOjpjb2xvckZyb21SR0JD
b2xvclN0cmluZyhjb25zdCBTdHJpbmcmIGNvbG9yU3RyaW5nKQogewotICAgIGlmIChjb2xvclN0
cmluZy5pc051bGwoKSkKKyAgICBSR0JBMzIgY29sb3I7CisgICAgU3RyaW5nIHMgPSBjb2xvclN0
cmluZy5zdHJpcFdoaXRlU3BhY2UoKTsKKyAgICAvLyBoc2wsIGhzbGEgYW5kIHJnYmEgYXJlIG5v
dCBpbiB0aGUgU1ZHIHNwZWMuCisgICAgLy8gRklYTUU6IHJld29yayBjc3MgcGFyc2VyIHNvIGl0
IGlzIG1vcmUgc3ZnIGF3YXJlCisgICAgaWYgKHMuc3RhcnRzV2l0aCgiaHNsIikgfHwgcy5zdGFy
dHNXaXRoKCJyZ2JhIikgfHwKKyAgICAgICAgIUNTU1BhcnNlcjo6cGFyc2VDb2xvcihjb2xvciwg
cykpCiAgICAgICAgIHJldHVybiBDb2xvcigpOwogCi0gICAgQ29sb3IgY29sb3I7Ci0gICAgU3Ry
aW5nIHBhcnNlID0gY29sb3JTdHJpbmcuc3RyaXBXaGl0ZVNwYWNlKCk7Ci0gICAgaWYgKHBhcnNl
LnN0YXJ0c1dpdGgoInJnYigiKSkgewotICAgICAgICBkb3VibGUgciA9IC0xLCBnID0gLTEsIGIg
PSAtMTsKLSAgICAgICAgY29uc3QgVUNoYXIqIHB0ciA9IHBhcnNlLmNoYXJhY3RlcnMoKSArIDQ7
Ci0gICAgICAgIGNvbnN0IFVDaGFyKiBlbmQgPSBwYXJzZS5jaGFyYWN0ZXJzKCkgKyBwYXJzZS5s
ZW5ndGgoKTsKLSAgICAgICAgc2tpcE9wdGlvbmFsU3BhY2VzKHB0ciwgZW5kKTsKLSAgICAgICAg
aWYgKCFwYXJzZU51bWJlck9yUGVyY2VudChwdHIsIGVuZCwgcikKLSAgICAgICAgIHx8ICFwYXJz
ZU51bWJlck9yUGVyY2VudChwdHIsIGVuZCwgZykKLSAgICAgICAgIHx8ICFwYXJzZU51bWJlck9y
UGVyY2VudChwdHIsIGVuZCwgYikpCi0gICAgICAgICAgICByZXR1cm4gQ29sb3IoKTsKLQotICAg
ICAgICBpZiAocHRyID49IGVuZCB8fCAqcHRyICE9ICcpJykKLSAgICAgICAgICAgIHJldHVybiBD
b2xvcigpOwotCi0gICAgICAgICByZXR1cm4gQ29sb3IoaW50KHIpLCBpbnQoZyksIGludChiKSk7
Ci0gICAgfQotICAgIHJldHVybiBDb2xvcihwYXJzZS5sb3dlcigpKTsKKyAgICByZXR1cm4gY29s
b3I7CiB9CiAKIHZvaWQgU1ZHQ29sb3I6OnNldFJHQkNvbG9ySUNDQ29sb3IoY29uc3QgU3RyaW5n
JiAvKiByZ2JDb2xvciAqLywgY29uc3QgU3RyaW5nJiAvKiBpY2NDb2xvciAqLywgRXhjZXB0aW9u
Q29kZSYgZWMpCg==
</data>
<flag name="review"
          id="6740"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>