1 |
|
2 | 0.18.0 / 2014-11-06
|
3 | ==================
|
4 |
|
5 | * bump htmlparser2 dependency to ~3.8.1 (Chris Rebert)
|
6 | * Correct unit test titles (Mike Pennisi)
|
7 | * Correct behavior of `after` and `before` (Mike Pennisi)
|
8 | * implement jQuery's .has() (Chris Rebert)
|
9 | * Update repository url (haqii)
|
10 | * attr() should return undefined or name for booleans (Raoul Millais)
|
11 | * Update Readme.md (Ryan Breen)
|
12 | * Implement `Cheerio#not` (Mike Pennisi)
|
13 | * Clone nodes according to original parsing options (Mike Pennisi)
|
14 | * fix lint error (David Chambers)
|
15 | * Add explicit tests for DOM level 1 API (Mike Pennisi)
|
16 | * Expose DOM level 1 API for Node-like objects (Mike Pennisi)
|
17 | * Correct error in documentation (Mike Pennisi)
|
18 | * Return a fully-qualified Function from `$.load` (Mike Pennisi)
|
19 | * Update tests to avoid duck typing (Mike Pennisi)
|
20 | * Alter "loaded" functions to produce true instances (Mike Pennisi)
|
21 | * Organize tests for `cheerio.load` (Mike Pennisi)
|
22 | * Complete `$.prototype.find` (Mike Pennisi)
|
23 | * Use JSHint's `extends` option (Mike Pennisi)
|
24 | * Remove aliases for exported methods (Mike Pennisi)
|
25 | * Disallow unused variables (Mike Pennisi)
|
26 | * Remove unused internal variables (Mike Pennisi)
|
27 | * Remove unused variables from unit tests (Mike Pennisi)
|
28 | * Remove unused API method references (Mike Pennisi)
|
29 | * Move tests for `contains` method (Mike Pennisi)
|
30 | * xyz@0.4.0 (David Chambers)
|
31 | * Created a wiki for companies using cheerio in production (Matthew Mueller)
|
32 | * Implement `$.prototype.index` (Mike Pennisi)
|
33 | * Implement `$.prototype.addBack` (Mike Pennisi)
|
34 | * Added double quotes to radio attribute name to account for characters such as brackets (akant10)
|
35 | * Update History.md (Gabriel Falkenberg)
|
36 | * add 0.17.0 changelog (David Chambers)
|
37 | * exit prepublish script if tag not found (David Chambers)
|
38 | * alphabetize devDependencies (fb55)
|
39 | * ignore coverage dir (fb55)
|
40 | * submit coverage to coveralls (fb55)
|
41 | * replace jscoverage with istanbul (fb55)
|
42 |
|
43 | 0.17.0 / 2014-06-10
|
44 | ==================
|
45 |
|
46 | * Fix bug in internal `uniqueSplice` function (Mike Pennisi)
|
47 | * accept buffer argument to cheerio.load (David Chambers)
|
48 | * Respect options on the element level (Alex Indigo)
|
49 | * Change state definition to more readable (Artem Burtsev)
|
50 | * added test (0xBADC0FFEE)
|
51 | * add class only if doesn't exist (Artem Burtsev)
|
52 | * Made it less insane. (Alex Indigo)
|
53 | * Implement `Cheerio#add` (Mike Pennisi)
|
54 | * Use "loaded" instance of Cheerio in unit tests (Mike Pennisi)
|
55 | * Be more strict with object check. (Alex Indigo)
|
56 | * Added options argument to .html() static method. (Alex Indigo)
|
57 | * Fixed encoding mishaps. Adjusted tests. (Alex Indigo)
|
58 | * use dom-serializer module (fb55)
|
59 | * don't test on 0.8, don't ignore 0.11 (Felix Böhm)
|
60 | * parse: rm unused variables (coderaiser)
|
61 | * cheerio: rm unused variable (coderaiser)
|
62 | * Fixed test (Avi Kohn)
|
63 | * Added test (Avi Kohn)
|
64 | * Changed == to === (Avi Kohn)
|
65 | * Fixed a bug in removing type="hidden" attr (Avi Kohn)
|
66 | * sorted (Alexey Raspopov)
|
67 | * add `muted` attr to booleanAttributes (Alexey Raspopov)
|
68 | * fixed context of `this` in .html (Felix Böhm)
|
69 | * append new elements for each element in selection (fb55)
|
70 |
|
71 | 0.16.0 / 2014-05-08
|
72 | ==================
|
73 |
|
74 | * fix `make bench` (David Chambers)
|
75 | * makefile: add release-* targets (David Chambers)
|
76 | * alphabetize dependencies (David Chambers)
|
77 | * Rewrite `data` internals with caching behavior (Mike Pennisi)
|
78 | * Fence .val example as js (Kevin Sawicki)
|
79 | * Fixed typos. Deleted trailing whitespace from test/render.js (Nattaphoom Ch)
|
80 | * Fix manipulation APIs with removed elements (kpdecker)
|
81 | * Perform manual string parsing for hasClass (kpdecker)
|
82 | * Fix existing element removal (kpdecker)
|
83 | * update render tests (Felix Böhm)
|
84 | * fixed cheerio path (Felix Böhm)
|
85 | * use `entities.escape` for attribute values (Felix Böhm)
|
86 | * bump entities version (Felix Böhm)
|
87 | * remove lowerCaseTags option from readme (Felix Böhm)
|
88 | * added test case for .html in xmlMode (fb55)
|
89 | * render xml in `html()` when `xmlMode: true` (fb55)
|
90 | * use a map for booleanAttributes (fb55)
|
91 | * update singleTags, use utils.isTag (fb55)
|
92 | * update travis badge URL (Felix Böhm)
|
93 | * use typeof instead of _.isString and _.isNumber (fb55)
|
94 | * use Array.isArray instead of _.isArray (fb55)
|
95 | * replace _.isFunction with typeof (fb55)
|
96 | * removed unnecessary error message (fb55)
|
97 | * decode entities in htmlparser2 (fb55)
|
98 | * pass options object to CSSselect (fb55)
|
99 |
|
100 | 0.15.0 / 2014-04-08
|
101 | ==================
|
102 |
|
103 | * Update callbacks to pass element per docs (@kpdecker)
|
104 | * preserve options (@fb55)
|
105 | * Use SVG travis badge (@t3chnoboy)
|
106 | * only use static requires (@fb55)
|
107 | * Optimize manipulation methods (@kpdecker)
|
108 | * Optimize add and remove class cases (@kpdecker)
|
109 | * accept dom of DomHandler to cheerio.load (@nleush)
|
110 | * added parentsUntil method (@finspin)
|
111 | * Add performance optimization and bug fix `empty` method (@kpdecker)
|
112 |
|
113 | 0.14.0 / 2014-04-01
|
114 | ==================
|
115 |
|
116 | * call encodeXML and directly expose decodeHTML (@fb55)
|
117 | * use latest htmlparser2 and entities versions (@fb55)
|
118 | * Deprecate `$.fn.toArray` (@jugglinmike)
|
119 | * Implement `$.fn.get` (@jugglinmike)
|
120 | * .replaceWith now replaces all selected elements. (@xavi-)
|
121 | * Correct arguments for 'replaceWith' callback (@jugglinmike)
|
122 | * switch to lodash (@fb55)
|
123 | * update to entities@0.5.0 (@fb55)
|
124 | * Fix attr when $ collection contains text modules (@kpdecker)
|
125 | * Update to latest version of expect.js (@jugglinmike)
|
126 | * Remove nodes from their previous structures (@jugglinmike)
|
127 | * Update render.js (@stevenvachon)
|
128 | * CDATA test (@stevenvachon)
|
129 | * only ever one child index for cdata (@stevenvachon)
|
130 | * don't loop through cdata children array (@stevenvachon)
|
131 | * proper rendering of CDATA (@stevenvachon)
|
132 | * Add cheerio-only bench option (@kpdecker)
|
133 | * Avoid delete operations (@kpdecker)
|
134 | * Add independent html benchmark (@kpdecker)
|
135 | * Cache tag check in render (@kpdecker)
|
136 | * Simplify attribute rendering step (@kpdecker)
|
137 | * Add html rendering bench case (@kpdecker)
|
138 | * Remove unnecessary check from removeAttr (@kpdecker)
|
139 | * Remove unnecessary encoding step for attrs (@kpdecker)
|
140 | * Add test for removeAttr+attr on boolean attributes (@kpdecker)
|
141 | * Add single element benchmark case (@kpdecker)
|
142 | * Optimize filter with selector (@kpdecker)
|
143 | * Fix passing context as dom node (@alfred-nsh)
|
144 | * Fix bug in `nextUntil` (@jugglinmike)
|
145 | * Fix bug in `nextAll` (@jugglinmike)
|
146 | * Implement `selector` argument of `next` method (@jugglinmike)
|
147 | * Fix bug in `prevUntil` (@jugglinmike)
|
148 | * Implement `selector` argument of `prev` method (@jugglinmike)
|
149 | * Fix bug in `prevAll` (@jugglinmike)
|
150 | * Fix bug in `siblings` (@jugglinmike)
|
151 | * Avoid unnecessary indexOf from toggleClass (@kpdecker)
|
152 | * Use strict equality rather than falsy check in eq (@kpdecker)
|
153 | * Add benchmark coverage for all $ APIs (@kpdecker)
|
154 | * Optimize filter Cheerio intermediate creation (@kpdecker)
|
155 | * Optimize siblings cheerio instance creation (@kpdecker)
|
156 | * Optimize identity cases for first/last/eq (@kpdecker)
|
157 | * Use domEach for traversal (@kpdecker)
|
158 | * Inline children lookup in find (@kpdecker)
|
159 | * Use domEach in data accessor (@kpdecker)
|
160 | * Avoid cheerio creation in add/remove/toggleClass (@kpdecker)
|
161 | * Implement getAttr local helper (@kpdecker)
|
162 |
|
163 | 0.13.1 / 2014-01-07
|
164 | ==================
|
165 |
|
166 | * Fix select with context in Cheerio function (@jugglinmike)
|
167 | * Remove unecessary DOM maintenance logic (@jugglinmike)
|
168 | * Deprecate support for node 0.6
|
169 |
|
170 | 0.13.0 / 2013-12-30
|
171 | ==================
|
172 |
|
173 | * Remove "root" node (@jugglinmike)
|
174 | * Fix bug in `prevAll`, `prev`, `nextAll`, `next`, `prevUntil`, `nextUntil` (@jugglinmike)
|
175 | * Fix `replaceWith` method (@jugglinmike)
|
176 | * added nextUntil() and prevUntil() (@finspin)
|
177 | * Remove internal `connect` function (@jugglinmike)
|
178 | * Rename `Cheerio#make` to document private status (@jugginmike)
|
179 | * Remove extraneous call to `_.uniq` (@jugglinmike)
|
180 | * Use CSSselect library directly (@jugglinmike)
|
181 | * Run CI against Node v0.11 as an allowed failure (@jugginmike)
|
182 | * Correct bug in `Cheerio#parents` (@jugglinmike)
|
183 | * Implement `$.fn.end` (@jugginmike)
|
184 | * Ignore colons inside of url(.*) when parsing css (@Meekohi)
|
185 | * Introduce rudimentary benchmark suite (@jugglinmike)
|
186 | * Update HtmlParser2 version (@jugglinmike)
|
187 | * Correct inconsistency in `$.fn.map` (@jugglinmike)
|
188 | * fixed traversing tests (@finspin)
|
189 | * Simplify `make` method (@jugglinmike)
|
190 | * Avoid shadowing instance methods from arrays (@jugglinmike)
|
191 |
|
192 | 0.12.4 / 2013-11-12
|
193 | ==================
|
194 |
|
195 | * Coerce JSON values returned by `data` (@jugglinmike)
|
196 | * issue #284: when rendering HTML, use original data attributes (@Trott)
|
197 | * Introduce JSHint for automated code linting (@jugglinmike)
|
198 | * Prevent `find` from returning duplicate elements (@jugglinmike)
|
199 | * Implement function signature of `replaceWith` (@jugglinmike)
|
200 | * Implement function signature of `before` (@jugglinmike)
|
201 | * Implement function signature of `after` (@jugglinmike)
|
202 | * Implement function signature of `append`/`prepend` (@jugglinmike)
|
203 | * Extend iteration methods to accept nodes (@jugglinmike)
|
204 | * Improve `removeClass` (@jugglinmike)
|
205 | * Complete function signature of `addClass` (@jugglinmike)
|
206 | * Fix bug in `removeClass` (@jugglinmike)
|
207 | * Improve contributing.md (@jugglinmike)
|
208 | * Fix and document .css() (@jugglinmike)
|
209 |
|
210 | 0.12.3 / 2013-10-04
|
211 | ===================
|
212 |
|
213 | * Add .toggleClass() function (@cyberthom)
|
214 | * Add contributing guidelines (@jugglinmike)
|
215 | * Fix bug in `siblings` (@jugglinmike)
|
216 | * Correct the implementation `filter` and `is` (@jugglinmike)
|
217 | * add .data() function (@andi-neck)
|
218 | * add .css() (@yields)
|
219 | * Implements contents() (@jlep)
|
220 |
|
221 | 0.12.2 / 2013-09-04
|
222 | ==================
|
223 |
|
224 | * Correct implementation of `$.fn.text` (@jugglinmike)
|
225 | * Refactor Cheerio array creation (@jugglinmike)
|
226 | * Extend manipulation methods to accept Arrays (@jugglinmike)
|
227 | * support .attr(attributeName, function(index, attr)) (@xiaohwan)
|
228 |
|
229 | 0.12.1 / 2013-07-30
|
230 | ==================
|
231 |
|
232 | * Correct behavior of `Cheerio#parents` (@jugglinmike)
|
233 | * Double quotes inside attributes kills HTML (@khoomeister)
|
234 | * Making next({}) and prev({}) return empty object (@absentTelegraph)
|
235 | * Implement $.parseHTML (@jugglinmike)
|
236 | * Correct bug in jQuery.fn.closest (@jugglinmike)
|
237 | * Correct behavior of $.fn.val on 'option' elements (@jugglinmike)
|
238 |
|
239 | 0.12.0 / 2013-06-09
|
240 | ===================
|
241 |
|
242 | * Breaking Change: Changed context from parent to the actual passed one (@swissmanu)
|
243 | * Fixed: jquery checkbox val behavior (@jhubble)
|
244 | * Added: output xml with $.xml() (@Maciek416)
|
245 | * Bumped: htmlparser2 to 3.1.1
|
246 | * Fixed: bug in attr(key, val) on empty objects (@farhadi)
|
247 | * Added: prevAll, nextAll (@lessmind)
|
248 | * Fixed: Safety check in parents and closest (@zero21xxx)
|
249 | * Added: .is(sel) (@zero21xxx)
|
250 |
|
251 | 0.11.0 / 2013-04-22
|
252 | ==================
|
253 |
|
254 | * Added: .closest() (@jeremy-dentel)
|
255 | * Added: .parents() (@zero21xxx)
|
256 | * Added: .val() (@rschmukler & @leahciMic)
|
257 | * Added: Travis support for node 0.10.0 (@jeremy-dentel)
|
258 | * Fixed: .find() if no selector (@davidchambers)
|
259 | * Fixed: Propagate syntax errors caused by invalid selectors (@davidchambers)
|
260 |
|
261 | 0.10.8 / 2013-03-11
|
262 | ==================
|
263 |
|
264 | * Add slice method (SBoudrias)
|
265 |
|
266 | 0.10.7 / 2013-02-10
|
267 | ==================
|
268 |
|
269 | * Code & doc cleanup (davidchambers)
|
270 | * Fixed bug in filter (jugglinmike)
|
271 |
|
272 | 0.10.6 / 2013-01-29
|
273 | ==================
|
274 |
|
275 | * Added `$.contains(...)` (jugglinmike)
|
276 | * formatting cleanup (davidchambers)
|
277 | * Bug fix for `.children()` (jugglinmike & davidchambers)
|
278 | * Remove global `render` bug (wvl)
|
279 |
|
280 | 0.10.5 / 2012-12-18
|
281 | ===================
|
282 |
|
283 | * Fixed botched publish from 0.10.4 - changes should now be present
|
284 |
|
285 | 0.10.4 / 2012-12-16
|
286 | ==================
|
287 |
|
288 | * $.find should query descendants only (@jugglinmike)
|
289 | * Tighter underscore dependency
|
290 |
|
291 | 0.10.3 / 2012-11-18
|
292 | ===================
|
293 |
|
294 | * fixed outer html bug
|
295 | * Updated documentation for $(...).html() and $.html()
|
296 |
|
297 | 0.10.2 / 2012-11-17
|
298 | ===================
|
299 |
|
300 | * Added a toString() method (@bensheldon)
|
301 | * use `_.each` and `_.map` to simplify cheerio namesakes (@davidchambers)
|
302 | * Added filter() with tests and updated readme (@bensheldon & @davidchambers)
|
303 | * Added spaces between attributes rewritten by removeClass (@jos3000)
|
304 | * updated docs to remove reference to size method (@ironchefpython)
|
305 | * removed HTML tidy/pretty print from cheerio
|
306 |
|
307 | 0.10.1 / 2012-10-04
|
308 | ===================
|
309 |
|
310 | * Fixed regression, filtering with a context (#106)
|
311 |
|
312 | 0.10.0 / 2012-09-24
|
313 | ===================
|
314 |
|
315 | * Greatly simplified and reorganized the library, reducing the loc by 30%
|
316 | * Now supports mocha's test-coverage
|
317 | * Deprecated self-closing tags (HTML5 doesn't require them)
|
318 | * Fixed error thrown in removeClass(...) @robashton
|
319 |
|
320 | 0.9.2 / 2012-08-10
|
321 | ==================
|
322 |
|
323 | * added $(...).map(fn)
|
324 | * manipulation: refactor `makeCheerioArray`
|
325 | * make .removeClass() remove *all* occurrences (#64)
|
326 |
|
327 | 0.9.1 / 2012-08-03
|
328 | ==================
|
329 |
|
330 | * fixed bug causing options not to make it to the parser
|
331 |
|
332 | 0.9.0 / 2012-07-24
|
333 | ==================
|
334 |
|
335 | * Added node 8.x support
|
336 | * Removed node 4.x support
|
337 | * Add html(dom) support (@wvl)
|
338 | * fixed xss vulnerabilities on .attr(), .text(), & .html() (@benatkin, @FB55)
|
339 | * Rewrote tests into javascript, removing coffeescript dependency (@davidchambers)
|
340 | * Tons of cleanup (@davidchambers)
|
341 |
|
342 | 0.8.3 / 2012-06-12
|
343 | ==================
|
344 |
|
345 | * Fixed minor package regression (closes #60)
|
346 |
|
347 | 0.8.2 / 2012-06-11
|
348 | ==================
|
349 |
|
350 | * Now fails gracefully in cases that involve special chars, which is inline with jQuery (closes #59)
|
351 | * text() now decode special entities (closes #52)
|
352 | * updated travis.yml to test node 4.x
|
353 |
|
354 | 0.8.1 / 2012-06-02
|
355 | ==================
|
356 |
|
357 | * fixed regression where if you created an element, it would update the root
|
358 | * compatible with node 4.x (again)
|
359 |
|
360 | 0.8.0 / 2012-05-27
|
361 | ==================
|
362 |
|
363 | * Updated CSS parser to use FB55/CSSselect. Cheerio now supports most CSS3 psuedo selectors thanks to @FB55.
|
364 | * ignoreWhitespace now on by default again. See #55 for context.
|
365 | * Changed $(':root') to $.root(), cleaned up $.clone()
|
366 | * Support for .eq(i) thanks to @alexbardas
|
367 | * Removed support for node 0.4.x
|
368 | * Fixed memory leak where package.json was continually loaded
|
369 | * Tons more tests
|
370 |
|
371 | 0.7.0 / 2012-04-08
|
372 | ==================
|
373 |
|
374 | * Now testing with node v0.7.7
|
375 | * Added travis-ci integration
|
376 | * Replaced should.js with expect.js. Browser testing to come
|
377 | * Fixed spacing between attributes and their values
|
378 | * Added HTML tidy/pretty print
|
379 | * Exposed node-htmlparser2 parsing options
|
380 | * Revert .replaceWith(...) to be consistent with jQuery
|
381 |
|
382 | 0.6.2 / 2012-02-12
|
383 | ==================
|
384 |
|
385 | * Fixed .replaceWith(...) regression
|
386 |
|
387 | 0.6.1 / 2012-02-12
|
388 | ==================
|
389 |
|
390 | * Added .first(), .last(), and .clone() commands.
|
391 | * Option to parse using whitespace added to `.load`.
|
392 | * Many bug fixes to make cheerio more aligned with jQuery.
|
393 | * Added $(':root') to select the highest level element.
|
394 |
|
395 | Many thanks to the contributors that made this release happen: @ironchefpython and @siddMahen
|
396 |
|
397 | 0.6.0 / 2012-02-07
|
398 | ==================
|
399 |
|
400 | * *Important:* `$(...).html()` now returns inner HTML, which is in line with the jQuery spec
|
401 | * `$.html()` returns the full HTML string. `$.html([cheerioObject])` will return the outer(selected element's tag) and inner HTML of that object
|
402 | * Fixed bug that prevented HTML strings with depth (eg. `append('<ul><li><li></ul>')`) from getting `parent`, `next`, `prev` attributes.
|
403 | * Halted [htmlparser2](https://github.com/FB55/node-htmlparser) at v2.2.2 until single attributes bug gets fixed.
|
404 |
|
405 | 0.5.1 / 2012-02-05
|
406 | ==================
|
407 |
|
408 | * Fixed minor regression: $(...).text(fn) would fail
|
409 |
|
410 | 0.5.1 / 2012-02-05
|
411 | ==================
|
412 |
|
413 | * Fixed regression: HTML pages with comments would fail
|
414 |
|
415 | 0.5.0 / 2012-02-04
|
416 | ==================
|
417 |
|
418 | * Transitioned from Coffeescript back to Javascript
|
419 | * Parser now ignores whitespace
|
420 | * Fixed issue with double slashes on self-enclosing tags
|
421 | * Added boolean attributes to html rendering
|
422 |
|
423 | 0.4.2 / 2012-01-16
|
424 | ==================
|
425 |
|
426 | * Multiple selectors support: $('.apple, .orange'). Thanks @siddMahen!
|
427 | * Update package.json to always use latest cheerio-soupselect
|
428 | * Fix memory leak in index.js
|
429 |
|
430 | 0.4.1 / 2011-12-19
|
431 | ==================
|
432 | * Minor packaging changes to allow `make test` to work from npm installation
|
433 |
|
434 | 0.4.0 / 2011-12-19
|
435 | ==================
|
436 |
|
437 | * Rewrote all unit tests as cheerio transitioned from vows -> mocha
|
438 | * Internally, renderer.render -> render(...), parser.parse -> parse(...)
|
439 | * Append, prepend, html, before, after all work with only text (no tags)
|
440 | * Bugfix: Attributes can now be removed from script and style tags
|
441 | * Added yield as a single tag
|
442 | * Cheerio now compatible with node >=0.4.7
|
443 |
|
444 | 0.3.2 / 2011-12-1
|
445 | =================
|
446 |
|
447 | * Fixed $(...).text(...) to work with "root" element
|
448 |
|
449 | 0.3.1 / 2011-11-25
|
450 | ==================
|
451 |
|
452 | * Now relying on cheerio-soupselect instead of node-soupselect
|
453 | * Removed all lingering htmlparser dependencies
|
454 | * parser now returns parent "root" element. Root now never needs to be updated when there is multiple roots. This fixes ongoing issues with before(...), after(...) and other manipulation functions
|
455 | * Added jQuery's $(...).replaceWith(...)
|
456 |
|
457 | 0.3.0 / 2011-11-19
|
458 | ==================
|
459 |
|
460 | * Now using htmlparser2 for parsing (2x speed increase, cleaner, actively developed)
|
461 | * Added benchmark directory for future speed tests
|
462 | * $('...').dom() was funky, so it was removed in favor of $('...').get(). $.dom() still works the same.
|
463 | * $.root now correctly static across all instances of $
|
464 | * Added a screencast
|
465 |
|
466 | 0.2.2 / 2011-11-9
|
467 | =================
|
468 |
|
469 | * Traversing will select `<script>` and `<style>` tags (Closes Issue: #8)
|
470 | * .text(string) now working with empty elements (Closes Issue: #7)
|
471 | * Fixed before(...) & after(...) again if there is no parent (Closes Issue: #2)
|
472 |
|
473 | 0.2.1 / 2011-11-5
|
474 | =================
|
475 |
|
476 | * Fixed before(...) & after(...) if there is no parent (Closes Issue: #2)
|
477 | * Comments now rendered correctly (Closes Issue: #5)
|
478 |
|
479 | < 0.2.0 / 2011-10-31
|
480 | ====================
|
481 |
|
482 | * Initial release (untracked development)
|
483 |
|
\ | No newline at end of file |