34.0.9 β€’ Published 4 months ago

putout v34.0.9

Weekly downloads
4,850
License
MIT
Repository
github
Last release
4 months ago

Putout NPM version Build Status Coverage Status

Perfection is finally attained not when there is no longer anything to add, but when there is no longer anything to take away.

(c) Antoine de Saint ExupΓ©ry

putout

🐊Putout is a pluggable and configurable code transformer with built-in ESLint and Babel plugins support for js, jsx, typescript and flow files. It has a lot of transformations that will keep your codebase in a clean state, transforming any code smell to readable code according to best practices.

putout

πŸ€·β€οΈ In doubt about using 🐊Putout?

Check out couple variants of plugins that does the same: linting debugger statement:

'use strict';

module.exports.report = () => 'Unexpected "debugger" statement';

module.exports.replace = () => ({
    debugger: '',
});

Choose wisely, competitors cannot even fix… 🀫

πŸ™ Whom should I thank for this project exist?

If I have seen further, it is by standing upon the shoulders of giants.

(c) Isaak Newton

  • πŸ’ͺ ESLint for stable releases and future proof API.
  • πŸ’ͺ Babel for amazing API documented in Handbook and responsiveness of a team.
  • πŸ’ͺ Prettier for minimalistic options and uniform codestyle.
  • πŸ’ͺ jscodeshift for making codemods simple and popular.

🀷 Why does this project exist?

☝️ 🐊Putout on the other hand can make more drastic code transformations that directly affects your codebase making it a better place to code πŸ’».

It can:

  • βœ… remove unused variables;
  • βœ… remove unused for-of variables;
  • βœ… remove unused typescripts types;
  • βœ… remove unreferenced variables;
  • βœ… remove unused private fields;
  • βœ… remove unused expressions;
  • βœ… remove useless variables;
  • βœ… remove useless Object.assign();
  • βœ… remove useless replace();
  • βœ… remove useless map;
  • βœ… remove useless mapped types;
  • βœ… remove useless mapping modifiers;
  • βœ… remove useless continue;
  • βœ… remove useless operand;
  • βœ… remove useless array constructor;
  • βœ… remove useless conditions;
  • βœ… remove useless type conversion;
  • βœ… remove useless functions;
  • βœ… remove useless Array.from;
  • βœ… remove useless spread;
  • βœ… remove useless arguments;
  • βœ… remove useless escape;
  • βœ… remove useless async;
  • βœ… remove useless await;
  • βœ… remove useless typeof;
  • βœ… remove useless template expressions;
  • βœ… remove useless for-of;
  • βœ… remove useless array.entries();
  • βœ… remove debugger statement;
  • βœ… remove iife;
  • βœ… remove nested blocks;
  • βœ… remove process.exit call;
  • βœ… remove console.log calls;
  • βœ… remove empty block statements;
  • βœ… remove empty patterns;
  • βœ… remove strict mode directive from esm;
  • βœ… remove constant conditions;
  • βœ… remove boolean from assertion;
  • βœ… remove boolean from logical expressions;
  • βœ… remove duplicates from TypeScript Union;
  • βœ… remove unreachable code;
  • βœ… remove duplicate keys;
  • βœ… remove useless typescripts types;
  • βœ… remove duplicate typescripts interface keys;
  • βœ… replace test.only to test calls;
  • βœ… replace test.skip to test calls;
  • βœ… reuse duplicate init;
  • βœ… split variable declarations;
  • βœ… split nested destructuring;
  • βœ… simplify assignment;
  • βœ… simplify ternary;
  • βœ… simplify logical expressions;
  • βœ… if absent strict mode directive in commonjs add it;
  • βœ… convert const to let (when needed to avoid TypeError);
  • βœ… convert apply to spread;
  • βœ… convert bitwise to logical operator;
  • βœ… convert concat to flat;
  • βœ… convert esm to commonjs (enabled for *.cjs);
  • βœ… convert commonjs to esm (enabled for *.mjs);
  • βœ… convert template with one expression to string;
  • βœ… convert equal to strict equal;
  • βœ… convert indexOf to includes;
  • βœ… convert replace to replaceAll;
  • βœ… convert assignment to arrow function;
  • βœ… convert forEach to for...of;
  • βœ… convert map to for...of;
  • βœ… convert reduce to for...of;
  • βœ… convert Math.sqrt() to Math.hypot();
  • βœ… extract sequence expressions;
  • βœ… extract object properties;
  • βœ… add return await;
  • βœ… remove useless Promise.resolve;
  • βœ… convert Promise.reject to throw;
  • βœ… declare before reference;
  • βœ… declare undefined variables;
  • βœ… declare imports first;
  • βœ… apply as type assertions;
  • βœ… apply utility types;
  • βœ… apply array.at;
  • βœ… apply filter(Boolean);
  • βœ… apply isArray;
  • βœ… apply if condition;
  • βœ… apply await import;
  • βœ… apply comparison order;
  • βœ… apply flatMap();
  • βœ… apply template literals;
  • βœ… merge duplicate imports;
  • βœ… merge duplicate functions;

Install

npm i putout -D

Usage

Usage: putout [options] [path]
Options:
   -h, --help                  display this help and exit
   -v, --version               output version information and exit
   -f, --format [formatter]    use a specific output format, the default is: 'progress-bar' locally and 'dump' on CI
   -s, --staged                add staged files when in git repository
   -i, --interactive           set lint options using interactive menu
   --fix                       apply fixes of errors to code
   --fix-count [count = 10]    count of fixes rounds
   --rulesdir                  use additional rules from directory
   --transform [replacer]      apply Replacer, for example 'var __a = __b -> const __a = __b', read about Replacer https://git.io/JqcMn
   --plugins [plugins]         a comma-separated list of plugins to use
   --enable [rule]             enable the rule and save it to '.putout.json' walking up parent directories
   --disable [rule]            disable the rule and save it to '.putout.json' walking up parent directories
   --enable-all                enable all found rules and save them to '.putout.json' walking up parent directories
   --disable-all               disable all found rules (set baseline) and save them to '.putout.json' walking up parent directories
   --match [pattern]           read '.putout.json' and convert 'rules' to 'match' according to 'pattern'
   --flow                      enable flow
   --fresh                     generate a fresh cache
   --no-config                 avoid reading '.putout.json'
   --no-ci                     disable the CI detection
   --no-cache                  disable the cache

To find errors:

putout lib test

To fix errors:

putout lib test --fix

Plugins

By default 🐊Putout uses all enabled by default plugins, anyways it can be run with a couple mentioned plugins (split with ","):

putout lib --plugins remove-debugger,remove-unused-variables

Environment variables

🐊Putout supports next environment variables:

  • PUTOUT_FILES - files that should be processed by putout, divided by ",";
  • PUTOUT_CONFIG_FILE - path to 🐊Putout config file;
  • ESLINT_CONFIG_FILE - path to ESLint config file;
  • NO_ESLINT - do not run ESLint after 🐊Putout;
  • NO_ESLINT_WARNINGS - do not show ESLint warnings;
  • PUTOUT_PRINTER - force 🐊Putout to use printers like babel, putout and recast to parse() and print(), useful for Babel Plugins to make locations output more accurate.
PUTOUT_FILES=lib,test putout --fix

Configuration

To configure create .putout.json file and override any of default options.

Match

When you need to match paths to rules you can use match section for this purpose in .putout.json:

{
    "match": {
        "server": {
            "remove-process-exit": true
        }
    }
}

Ignore

When you need to ignore some routes no metter what, you can use ignore section in .putout.json:

{
    "ignore": ["test/fixture"]
}

Plugins

🐊Putout supports two types of plugins, prefix with:

  • βœ… @putout/plugin-;
  • βœ… putout-plugin-;

To use your plugin createnpm package with keywords putout, putout-plugin and add it to .putout.json.

For example if you need to remove-something create 🐊Putout plugin with name putout-plugin-remove-something and it to package.json:

{
    "plugins": ["remove-something"]
}

Codemods

🐊Putout supports codemodes in the similar to plugins way, just create a directory ~/.putout and put your plugins there. Here is example: convert-tape-to-supertape and this is examples of work.

API

putout(source, options)

const putout = require('putout');

const source = `
    const t = 'hello';
    const m = t + '!';
    console.log(t);
`;

putout(source, {
    plugins: ['remove-unused-variables'],
});

// returns
`
const t = 'hello';
console.log(t);
`;

putoutAsync(source, options)

const {putoutAsync} = require('putout');

const source = `
    const t = 'hello';
    const m = t + '!';
    console.log(t);
`;

await putoutAsync(source, {
    plugins: ['remove-unused-variables'],
});

// returns
`
const t = 'hello';
console.log(t);
`;

License

MIT

@putout/babel@putout/cli-cache@putout/cli-choose-formatter@putout/cli-keypress@putout/cli-match@putout/cli-ruler@putout/cli-staged@putout/cli-validate-args@putout/compare@putout/engine-loader@putout/engine-parser@putout/engine-processor@putout/engine-runner@putout/eslint@putout/formatter-codeframe@putout/formatter-dump@putout/formatter-frame@putout/formatter-json@putout/formatter-json-lines@putout/formatter-memory@putout/formatter-progress@putout/formatter-progress-bar@putout/formatter-stream@putout/formatter-time@putout/operate@putout/operator-add-args@putout/operator-declare@putout/operator-filesystem@putout/operator-json@putout/operator-match-files@putout/operator-regexp@putout/plugin-apply-at@putout/plugin-apply-destructuring@putout/plugin-apply-dot-notation@putout/plugin-apply-early-return@putout/plugin-apply-flat-map@putout/plugin-apply-optional-chaining@putout/plugin-apply-starts-with@putout/plugin-apply-template-literals@putout/plugin-browserlist@putout/plugin-conditions@putout/plugin-convert-apply-to-spread@putout/plugin-convert-arguments-to-rest@putout/plugin-convert-array-copy-to-slice@putout/plugin-convert-assignment-to-arrow-function@putout/plugin-convert-assignment-to-comparison@putout/plugin-convert-concat-to-flat@putout/plugin-convert-const-to-let@putout/plugin-convert-index-of-to-includes@putout/plugin-convert-object-assign-to-merge-spread@putout/plugin-convert-object-entries-to-array-entries@putout/plugin-convert-optional-to-logical@putout/plugin-convert-quotes-to-backticks@putout/plugin-convert-template-to-string@putout/plugin-convert-to-arrow-function@putout/plugin-declare@putout/plugin-declare-before-reference@putout/plugin-declare-imports-first@putout/plugin-eslint@putout/plugin-extract-object-properties@putout/plugin-extract-sequence-expressions@putout/plugin-filesystem@putout/plugin-for-of@putout/plugin-github@putout/plugin-gitignore@putout/plugin-logical-expressions@putout/plugin-madrun@putout/plugin-math@putout/plugin-maybe@putout/plugin-merge-destructuring-properties@putout/plugin-merge-duplicate-functions@putout/plugin-merge-duplicate-imports@putout/plugin-montag@putout/plugin-new@putout/plugin-nodejs@putout/plugin-npmignore@putout/plugin-package-json@putout/plugin-promises@putout/plugin-putout@putout/plugin-putout-config@putout/plugin-regexp@putout/plugin-remove-console@putout/plugin-remove-constant-conditions@putout/plugin-remove-debugger@putout/plugin-remove-duplicate-case@putout/plugin-remove-duplicate-keys@putout/plugin-remove-empty@putout/plugin-remove-iife@putout/plugin-remove-nested-blocks@putout/plugin-remove-unreachable-code@putout/plugin-remove-unreferenced-variables@putout/plugin-remove-unused-expressions@putout/plugin-remove-unused-for-of-variables@putout/plugin-remove-unused-private-fields@putout/plugin-remove-unused-variables@putout/plugin-remove-useless-arguments@putout/plugin-remove-useless-array-constructor@putout/plugin-remove-useless-array-entries@putout/plugin-remove-useless-assign@putout/plugin-remove-useless-constructor@putout/plugin-remove-useless-continue@putout/plugin-remove-useless-escape@putout/plugin-remove-useless-functions@putout/plugin-remove-useless-map@putout/plugin-remove-useless-operand@putout/plugin-remove-useless-replace@putout/plugin-remove-useless-return@putout/plugin-remove-useless-spread@putout/plugin-remove-useless-template-expressions@putout/plugin-remove-useless-variables@putout/plugin-reuse-duplicate-init@putout/plugin-simplify-assignment@putout/plugin-simplify-boolean-return@putout/plugin-simplify-ternary@putout/plugin-split-nested-destructuring@putout/plugin-split-variable-declarations@putout/plugin-tape@putout/plugin-try-catch@putout/plugin-types@putout/plugin-typescript@putout/plugin-webpack@putout/processor-css@putout/processor-filesystem@putout/processor-ignore@putout/processor-javascript@putout/processor-json@putout/processor-markdown@putout/processor-yaml@putout/traverseajvchalkci-infodebugdeepmergeescaladefast-globfind-upfullstoreignoreis-relativenano-memoizeoncepicomatchtry-catchtry-to-catchwraptileyargs-parser
34.0.9

4 months ago

34.0.8

4 months ago

34.0.1

5 months ago

34.0.2

4 months ago

34.0.0

5 months ago

34.0.7

4 months ago

34.0.5

4 months ago

34.0.6

4 months ago

34.0.3

4 months ago

34.0.4

4 months ago

33.13.4

5 months ago

32.10.0

6 months ago

32.10.1

6 months ago

33.8.0

5 months ago

33.8.1

5 months ago

32.8.0

6 months ago

33.6.2

5 months ago

33.6.0

5 months ago

33.6.1

5 months ago

32.7.0

6 months ago

33.12.0

5 months ago

33.5.0

5 months ago

32.5.0

6 months ago

33.10.0

5 months ago

33.3.0

5 months ago

32.16.0

6 months ago

32.3.0

6 months ago

33.1.0

5 months ago

33.1.1

5 months ago

32.14.0

6 months ago

32.12.0

6 months ago

32.11.0

6 months ago

33.9.0

5 months ago

33.9.1

5 months ago

33.9.2

5 months ago

32.9.0

6 months ago

33.7.0

5 months ago

33.13.1

5 months ago

33.13.0

5 months ago

32.6.0

6 months ago

33.13.3

5 months ago

33.13.2

5 months ago

33.4.0

5 months ago

33.4.1

5 months ago

32.4.0

6 months ago

33.11.0

5 months ago

33.2.0

5 months ago

32.15.0

6 months ago

32.15.1

6 months ago

32.2.1

7 months ago

32.2.2

6 months ago

33.0.0

6 months ago

32.13.0

6 months ago

32.1.0

7 months ago

32.2.0

7 months ago

32.0.0

7 months ago

32.0.3

7 months ago

32.0.4

7 months ago

32.0.1

7 months ago

32.0.2

7 months ago

32.0.7

7 months ago

32.0.5

7 months ago

32.0.6

7 months ago

31.1.0

8 months ago

30.3.0

10 months ago

30.3.1

10 months ago

29.10.0

11 months ago

29.10.1

11 months ago

30.1.0

10 months ago

30.1.1

10 months ago

29.9.0

11 months ago

29.14.0

10 months ago

29.12.2

11 months ago

29.12.3

11 months ago

29.12.4

11 months ago

29.12.5

11 months ago

29.12.0

11 months ago

29.12.1

11 months ago

29.12.6

11 months ago

29.12.7

11 months ago

29.12.8

11 months ago

29.12.9

11 months ago

31.7.0

8 months ago

30.7.0

9 months ago

31.5.0

8 months ago

31.3.0

8 months ago

30.5.0

9 months ago

29.12.10

11 months ago

29.12.12

11 months ago

29.12.11

11 months ago

29.11.0

11 months ago

29.11.1

11 months ago

31.0.0

9 months ago

31.0.1

9 months ago

31.0.2

9 months ago

31.0.3

9 months ago

31.0.4

9 months ago

31.0.5

9 months ago

31.0.6

9 months ago

30.2.3

10 months ago

31.0.7

9 months ago

31.0.8

9 months ago

30.2.1

10 months ago

30.2.2

10 months ago

30.2.0

10 months ago

30.0.3

10 months ago

30.0.1

10 months ago

30.0.2

10 months ago

30.0.0

10 months ago

29.15.0

10 months ago

29.13.1

11 months ago

29.13.2

10 months ago

29.13.3

10 months ago

29.13.4

10 months ago

29.13.0

11 months ago

29.13.5

10 months ago

31.8.0

8 months ago

31.8.1

8 months ago

31.8.2

8 months ago

31.8.3

8 months ago

31.8.4

8 months ago

31.8.5

8 months ago

31.6.0

8 months ago

31.4.0

8 months ago

30.6.0

9 months ago

31.2.0

8 months ago

30.4.5

9 months ago

31.2.1

8 months ago

30.4.6

9 months ago

31.2.2

8 months ago

30.4.3

9 months ago

31.2.3

8 months ago

30.4.4

9 months ago

31.2.4

8 months ago

30.4.1

10 months ago

30.4.2

9 months ago

30.4.0

10 months ago

29.2.5

1 year ago

29.6.0

12 months ago

29.4.1

12 months ago

29.4.0

12 months ago

29.8.1

11 months ago

29.8.2

11 months ago

29.8.3

11 months ago

29.8.0

11 months ago

29.3.0

12 months ago

29.7.0

12 months ago

29.7.1

12 months ago

29.5.0

12 months ago

29.5.1

12 months ago

28.19.1

1 year ago

28.19.0

1 year ago

28.19.2

1 year ago

28.15.0

1 year ago

28.17.0

1 year ago

29.2.3

1 year ago

29.2.4

1 year ago

29.2.0

1 year ago

29.2.1

1 year ago

29.2.2

1 year ago

28.11.0

1 year ago

29.0.9

1 year ago

29.0.5

1 year ago

29.0.6

1 year ago

29.0.7

1 year ago

29.0.8

1 year ago

29.0.1

1 year ago

29.0.2

1 year ago

29.0.3

1 year ago

29.0.4

1 year ago

29.0.0

1 year ago

28.13.0

1 year ago

28.6.0

1 year ago

28.8.0

1 year ago

28.18.0

1 year ago

29.0.11

1 year ago

29.0.10

1 year ago

29.0.13

1 year ago

29.0.12

1 year ago

29.0.15

1 year ago

29.0.14

1 year ago

28.14.0

1 year ago

28.16.0

1 year ago

28.10.0

1 year ago

28.12.0

1 year ago

29.1.8

1 year ago

29.1.9

1 year ago

29.1.4

1 year ago

29.1.5

1 year ago

29.1.6

1 year ago

29.1.7

1 year ago

29.1.0

1 year ago

29.1.1

1 year ago

29.1.2

1 year ago

29.1.3

1 year ago

28.7.0

1 year ago

29.1.11

1 year ago

29.1.12

1 year ago

29.1.13

1 year ago

29.1.14

1 year ago

29.1.10

1 year ago

28.9.0

1 year ago

28.0.0

2 years ago

28.0.1

1 year ago

28.2.0

1 year ago

28.4.0

1 year ago

28.1.0

1 year ago

28.3.0

1 year ago

28.5.0

1 year ago

27.2.0

2 years ago

27.4.0

2 years ago

27.6.0

2 years ago

27.8.0

2 years ago

27.11.0

2 years ago

27.13.0

2 years ago

27.10.0

2 years ago

27.3.0

2 years ago

27.3.1

2 years ago

27.5.0

2 years ago

27.7.0

2 years ago

27.9.0

2 years ago

27.12.0

2 years ago

26.16.1

2 years ago

26.16.0

2 years ago

26.14.0

2 years ago

26.25.0

2 years ago

26.25.1

2 years ago

26.12.0

2 years ago

26.2.1

2 years ago

27.0.0

2 years ago

27.0.1

2 years ago

26.23.0

2 years ago

26.10.0

2 years ago

26.4.0

2 years ago

26.21.0

2 years ago

26.6.0

2 years ago

26.8.0

2 years ago

26.19.0

2 years ago

26.17.0

2 years ago

26.15.0

2 years ago

26.13.0

2 years ago

26.24.0

2 years ago

26.11.0

2 years ago

26.3.1

2 years ago

26.3.0

2 years ago

27.1.0

2 years ago

26.22.0

2 years ago

26.5.0

2 years ago

26.20.0

2 years ago

26.7.0

2 years ago

26.9.3

2 years ago

26.9.1

2 years ago

26.9.2

2 years ago

26.9.0

2 years ago

26.18.0

2 years ago

26.0.2

2 years ago

26.0.1

2 years ago

26.0.0

2 years ago

26.2.0

2 years ago

25.15.0

2 years ago

25.15.1

2 years ago

25.17.0

2 years ago

25.17.1

2 years ago

25.17.2

2 years ago

25.17.3

2 years ago

25.17.4

2 years ago

26.1.3

2 years ago

26.1.2

2 years ago

26.1.1

2 years ago

26.1.0

2 years ago

25.16.0

2 years ago

25.18.0

2 years ago

25.2.0

2 years ago

25.10.0

2 years ago

25.4.1

2 years ago

25.4.0

2 years ago

25.12.0

2 years ago

25.6.0

2 years ago

25.8.0

2 years ago

25.3.0

2 years ago

25.5.0

2 years ago

25.11.3

2 years ago

25.11.4

2 years ago

25.11.0

2 years ago

25.11.1

2 years ago

25.11.2

2 years ago

25.7.1

2 years ago

25.7.0

2 years ago

25.13.1

2 years ago

25.13.0

2 years ago

25.14.0

2 years ago

25.14.1

2 years ago

25.14.2

2 years ago

25.14.3

2 years ago

25.9.1

2 years ago

25.9.0

2 years ago

25.1.1

2 years ago

25.1.0

2 years ago

25.0.6

2 years ago

25.0.8

2 years ago

25.0.7

2 years ago

25.0.9

2 years ago

23.4.0

2 years ago

22.6.2

2 years ago

22.6.1

2 years ago

22.6.0

2 years ago

24.3.0

2 years ago

23.5.0

2 years ago

22.7.0

2 years ago

25.0.5

2 years ago

25.0.2

2 years ago

25.0.1

2 years ago

25.0.4

2 years ago

25.0.3

2 years ago

25.0.0

2 years ago

24.2.2

2 years ago

24.2.1

2 years ago

24.2.0

2 years ago

23.6.0

2 years ago

22.8.2

2 years ago

22.8.1

2 years ago

22.8.0

2 years ago

24.5.0

2 years ago

23.7.0

2 years ago

22.9.0

2 years ago

24.4.0

2 years ago

23.8.0

2 years ago

24.6.0

2 years ago

23.0.0

2 years ago

23.1.0

2 years ago

22.3.0

2 years ago

22.3.4

2 years ago

22.3.3

2 years ago

22.3.2

2 years ago

22.3.1

2 years ago

23.2.0

2 years ago

22.4.0

2 years ago

24.1.0

2 years ago

23.3.0

2 years ago

22.5.5

2 years ago

22.5.4

2 years ago

22.5.3

2 years ago

22.5.2

2 years ago

22.5.1

2 years ago

22.5.0

2 years ago

24.0.2

2 years ago

24.0.1

2 years ago

24.0.0

2 years ago

22.0.2

2 years ago

22.0.1

2 years ago

22.0.0

2 years ago

21.2.0

2 years ago

22.1.1

2 years ago

22.1.0

2 years ago

21.3.0

2 years ago

22.2.1

2 years ago

22.2.0

2 years ago

21.4.0

2 years ago

21.5.0

2 years ago

21.6.0

2 years ago

20.19.0

2 years ago

20.19.1

2 years ago

20.19.2

2 years ago

21.0.0

2 years ago

21.1.1

2 years ago

21.1.0

2 years ago

21.1.2

2 years ago

20.18.0

3 years ago

20.15.0

3 years ago

20.14.0

3 years ago

20.17.0

3 years ago

20.16.0

3 years ago

20.16.1

3 years ago

20.11.0

3 years ago

20.10.0

3 years ago

20.10.1

3 years ago

20.10.2

3 years ago

20.10.3

3 years ago

20.13.0

3 years ago

20.12.0

3 years ago

20.8.0

3 years ago

20.9.0

3 years ago

20.6.1

3 years ago

20.6.0

3 years ago

20.7.1

3 years ago

20.7.0

3 years ago

20.5.2

3 years ago

20.5.0

3 years ago

20.5.1

3 years ago

20.4.0

3 years ago

20.3.2

3 years ago

20.3.1

3 years ago

20.3.0

3 years ago

20.1.0

3 years ago

20.2.0

3 years ago

20.0.1

3 years ago

20.0.0

3 years ago

19.7.0

3 years ago

19.7.1

3 years ago

19.6.0

3 years ago

19.4.0

3 years ago

19.3.0

3 years ago

19.3.1

3 years ago

19.5.0

3 years ago

19.2.0

3 years ago

19.0.1

3 years ago

19.0.2

3 years ago

19.1.0

3 years ago

19.0.0

3 years ago

18.16.0

3 years ago

18.15.0

3 years ago

18.14.0

3 years ago

18.13.0

3 years ago

18.11.0

3 years ago

18.12.0

3 years ago

18.10.0

3 years ago

18.9.1

3 years ago

18.9.0

3 years ago

18.8.0

3 years ago

18.7.0

3 years ago

18.6.0

3 years ago

18.5.0

3 years ago

18.4.0

3 years ago

18.3.0

3 years ago

18.2.0

3 years ago

18.1.1

3 years ago

18.1.0

3 years ago

18.0.2

3 years ago

18.0.1

3 years ago

18.0.0

3 years ago

17.3.0

3 years ago

17.4.0

3 years ago

16.13.0

3 years ago

17.1.0

3 years ago

16.12.0

3 years ago

17.2.0

3 years ago

16.9.0

3 years ago

17.5.0

3 years ago

17.5.1

3 years ago

16.8.0

3 years ago

16.11.0

3 years ago

16.10.1

3 years ago

16.10.0

3 years ago

17.0.1

3 years ago

17.0.0

3 years ago

16.6.1

3 years ago

16.7.0

3 years ago

16.6.0

3 years ago

16.5.0

3 years ago

16.3.0

3 years ago

16.4.0

3 years ago

16.2.0

3 years ago

16.1.1

3 years ago

16.1.0

3 years ago

16.0.1

3 years ago

15.13.0

3 years ago

15.11.0

3 years ago

15.12.0

3 years ago

16.0.0

3 years ago

15.9.0

3 years ago

15.10.0

3 years ago

15.8.0

3 years ago

15.7.2

3 years ago

15.7.0

3 years ago

15.7.1

3 years ago

15.6.0

3 years ago

15.5.0

3 years ago

15.5.1

3 years ago

15.4.3

3 years ago

15.4.1

3 years ago

15.4.2

3 years ago

15.4.0

3 years ago

15.3.0

3 years ago

15.3.1

3 years ago

15.2.0

3 years ago

15.1.2

3 years ago

15.1.1

3 years ago

15.0.2

3 years ago

15.1.0

3 years ago

15.0.1

3 years ago

15.0.0

3 years ago

14.5.0

3 years ago

14.4.0

3 years ago

14.2.1

3 years ago

14.3.0

3 years ago

14.2.0

3 years ago

14.1.3

3 years ago

14.1.2

3 years ago

14.1.1

3 years ago

14.1.0

3 years ago

14.0.4

3 years ago

14.0.3

3 years ago

14.0.2

3 years ago

14.0.1

3 years ago

14.0.0

3 years ago

13.10.0

3 years ago

13.9.1

3 years ago

13.9.0

3 years ago

13.8.0

3 years ago

13.7.1

3 years ago

13.7.0

3 years ago

13.6.0

3 years ago

13.5.1

3 years ago

13.5.0

3 years ago

13.4.0

3 years ago

13.3.0

3 years ago

13.2.0

3 years ago

13.1.2

3 years ago

13.1.1

3 years ago

13.1.0

3 years ago

12.12.0

3 years ago

13.0.0

3 years ago

12.11.1

3 years ago

12.11.0

3 years ago

12.10.0

3 years ago

12.9.4

3 years ago

12.9.3

3 years ago

12.9.0

3 years ago

12.9.1

3 years ago

12.9.2

3 years ago

12.8.0

3 years ago

12.7.2

3 years ago

12.7.1

3 years ago

12.7.0

3 years ago

12.6.0

3 years ago

12.5.1

3 years ago

12.5.0

3 years ago

12.4.0

3 years ago

12.3.0

3 years ago

12.2.1

3 years ago

12.2.0

3 years ago

12.1.0

3 years ago

12.0.1

3 years ago

11.16.0

3 years ago

12.0.0

3 years ago

11.15.0

3 years ago

11.14.0

3 years ago

11.13.0

3 years ago

11.12.1

3 years ago

11.12.0

3 years ago

11.11.4

3 years ago

11.11.1

3 years ago

11.11.0

3 years ago

11.11.3

3 years ago

11.11.2

3 years ago

11.10.2

3 years ago

11.10.1

3 years ago

11.10.0

3 years ago

11.9.0

3 years ago

11.8.0

3 years ago

11.8.1

3 years ago

11.7.2

3 years ago

11.7.1

3 years ago

11.7.0

3 years ago

11.6.0

3 years ago

11.5.0

3 years ago

11.4.0

3 years ago

11.2.2

3 years ago

11.3.0

3 years ago

11.2.1

3 years ago

11.2.0

3 years ago

11.1.3

3 years ago

11.1.2

3 years ago

11.1.1

3 years ago

11.1.0

3 years ago

11.0.9

3 years ago

11.0.8

3 years ago

11.0.7

3 years ago

11.0.6

3 years ago

11.0.5

3 years ago

11.0.4

3 years ago

11.0.3

3 years ago

11.0.2

3 years ago

11.0.1

3 years ago

11.0.0

3 years ago

10.5.1

3 years ago

10.5.0

3 years ago

10.4.0

3 years ago

10.3.0

3 years ago

10.2.0

4 years ago

10.2.1

4 years ago

10.1.1

4 years ago

10.1.0

4 years ago

10.0.6

4 years ago

10.0.5

4 years ago

10.0.4

4 years ago

10.0.2

4 years ago

10.0.3

4 years ago

10.0.1

4 years ago

10.0.0

4 years ago

9.14.2

4 years ago

9.14.1

4 years ago

9.14.0

4 years ago

9.13.0

4 years ago

9.12.0

4 years ago

9.11.5

4 years ago

9.11.4

4 years ago

9.11.2

4 years ago

9.11.3

4 years ago

9.11.1

4 years ago

9.11.0

4 years ago

9.10.2

4 years ago

9.10.1

4 years ago

9.10.0

4 years ago

9.9.1

4 years ago

9.9.0

4 years ago

9.8.0

4 years ago

9.7.1

4 years ago

9.7.0

4 years ago

9.6.1

4 years ago

9.6.0

4 years ago

9.5.1

4 years ago

9.5.0

4 years ago

9.4.0

4 years ago

9.3.1

4 years ago

9.3.0

4 years ago

9.2.2

4 years ago

9.2.1

4 years ago

9.2.0

4 years ago

9.1.1

4 years ago

9.1.0

4 years ago

9.0.0

4 years ago

8.21.0

4 years ago

8.20.1

4 years ago

8.20.2

4 years ago

8.20.0

4 years ago

8.19.1

4 years ago

8.19.0

4 years ago

8.18.1

4 years ago

8.17.1

4 years ago

8.18.0

4 years ago

8.17.0

4 years ago

8.16.1

4 years ago

8.16.0

4 years ago

8.15.1

4 years ago

8.15.0

4 years ago

8.14.0

4 years ago

8.14.1

4 years ago

8.13.1

4 years ago

8.13.0

4 years ago

8.12.0

4 years ago

8.11.1

4 years ago

8.11.0

4 years ago

8.10.1

4 years ago

8.10.0

4 years ago

8.9.0

4 years ago

8.8.0

4 years ago

8.7.0

4 years ago

8.6.0

4 years ago

8.5.2

4 years ago

8.5.1

4 years ago

8.5.0

4 years ago

8.4.1

4 years ago

8.4.0

4 years ago

8.2.0

4 years ago

8.3.0

4 years ago

8.1.1

4 years ago

8.1.0

4 years ago

8.0.4

4 years ago

8.0.3

4 years ago

8.0.2

4 years ago

8.0.1

4 years ago

8.0.0

4 years ago

7.24.0

4 years ago

7.23.0

4 years ago

7.22.0

4 years ago

7.21.0

4 years ago

7.20.4

4 years ago

7.20.3

4 years ago

7.20.2

4 years ago

7.20.1

4 years ago

7.20.0

4 years ago

7.19.1

4 years ago

7.18.2

4 years ago

7.19.0

4 years ago

7.18.1

4 years ago

7.18.0

4 years ago

7.17.0

4 years ago

7.16.2

4 years ago

7.16.1

4 years ago

7.16.0

4 years ago

7.15.0

4 years ago

7.14.2

4 years ago

7.14.1

4 years ago

7.14.0

4 years ago

7.13.3

4 years ago

7.13.4

4 years ago

7.13.2

4 years ago

7.13.1

4 years ago

7.13.0

4 years ago

7.12.2

4 years ago

7.12.1

4 years ago

7.12.0

4 years ago

7.11.1

4 years ago

7.11.0

4 years ago

7.10.2

4 years ago

7.10.0

4 years ago

7.10.1

4 years ago

7.9.1

4 years ago

7.9.0

4 years ago

7.8.0

4 years ago

7.7.1

4 years ago

7.7.0

4 years ago

7.6.2

4 years ago

7.6.1

4 years ago

7.6.0

4 years ago

7.5.0

4 years ago

7.4.4

4 years ago

7.4.3

4 years ago

7.4.2

4 years ago

7.4.1

4 years ago

7.4.0

4 years ago

7.3.4

4 years ago

7.3.3

4 years ago

7.3.2

4 years ago

7.3.1

4 years ago

7.3.0

4 years ago

7.2.2

4 years ago

7.2.1

4 years ago

7.2.0

4 years ago

7.1.0

4 years ago

7.0.6

4 years ago

7.0.5

4 years ago

7.0.4

4 years ago

7.0.3

4 years ago

7.0.2

4 years ago

7.0.1

4 years ago

7.0.0

4 years ago

6.22.0

4 years ago

6.21.0

4 years ago

6.20.0

4 years ago

6.19.0

4 years ago

6.18.0

4 years ago

6.17.0

4 years ago

6.16.1

4 years ago

6.16.0

4 years ago

6.15.1

5 years ago

6.15.0

5 years ago

6.14.1

5 years ago

6.14.0

5 years ago

6.13.0

5 years ago

6.12.1

5 years ago

6.12.0

5 years ago

6.11.0

5 years ago

6.10.2

5 years ago

6.10.1

5 years ago

6.10.0

5 years ago

6.9.1

5 years ago

6.9.0

5 years ago

6.8.0

5 years ago

6.7.1

5 years ago

6.7.0

5 years ago

6.6.1

5 years ago

6.6.0

5 years ago

6.5.1

5 years ago

6.5.0

5 years ago

6.4.0

5 years ago

6.3.1

5 years ago

6.3.0

5 years ago

6.2.0

5 years ago

6.1.0

5 years ago

6.0.0

5 years ago

5.28.2

5 years ago

5.28.1

5 years ago

5.28.0

5 years ago

5.27.0

5 years ago

5.26.0

5 years ago

5.25.0

5 years ago

5.24.0

5 years ago

5.23.0

5 years ago

5.22.1

5 years ago

5.22.0

5 years ago

5.21.0

5 years ago

5.20.0

5 years ago

5.19.0

5 years ago

5.18.2

5 years ago

5.18.1

5 years ago

5.18.0

5 years ago

5.17.0

5 years ago

5.16.0

5 years ago

5.15.1

5 years ago

5.15.0

5 years ago

5.14.1

5 years ago

5.14.0

5 years ago

5.13.3

5 years ago

5.13.2

5 years ago

5.13.1

5 years ago

5.13.0

5 years ago

5.12.1

5 years ago

5.12.0

5 years ago

5.11.2

5 years ago

5.11.1

5 years ago

5.11.0

5 years ago

5.10.4

5 years ago

5.10.3

5 years ago

5.10.2

5 years ago

5.10.1

5 years ago

5.10.0

5 years ago

5.9.0

5 years ago

5.8.0

5 years ago

5.7.1

5 years ago

5.7.0

5 years ago

5.6.0

5 years ago

5.5.0

5 years ago

5.4.0

5 years ago

5.3.6

5 years ago

5.3.5

5 years ago

5.3.4

5 years ago

5.3.3

5 years ago

5.3.2

5 years ago

5.3.1

5 years ago

5.3.0

5 years ago

5.2.1

5 years ago

5.2.0

5 years ago

5.1.0

5 years ago

5.0.1

5 years ago

5.0.0

5 years ago

4.72.1

5 years ago

4.72.0

5 years ago

4.71.0

5 years ago

4.70.0

5 years ago

4.69.1

5 years ago

4.69.0

5 years ago

4.68.2

5 years ago

4.68.1

5 years ago

4.68.0

5 years ago

4.67.0

5 years ago

4.66.0

5 years ago

4.65.2

5 years ago

4.65.1

5 years ago

4.65.0

5 years ago

4.64.0

5 years ago

4.63.2

5 years ago

4.63.1

5 years ago

4.63.0

5 years ago

4.62.0

5 years ago

4.61.0

5 years ago

4.60.0

5 years ago

4.59.2

5 years ago

4.59.1

5 years ago

4.59.0

5 years ago

4.58.1

5 years ago

4.58.0

5 years ago

4.57.0

5 years ago

4.56.0

5 years ago

4.55.0

5 years ago

4.54.0

5 years ago

4.53.0

5 years ago

4.52.3

5 years ago

4.52.2

5 years ago

4.52.1

5 years ago

4.52.0

5 years ago

4.51.0

5 years ago

4.50.0

5 years ago

4.49.0

5 years ago

4.48.2

5 years ago

4.48.1

5 years ago

4.48.0

5 years ago

4.47.0

5 years ago

4.46.2

5 years ago

4.46.1

5 years ago

4.46.0

5 years ago

4.45.0

5 years ago

4.44.0

5 years ago

4.43.0

5 years ago

4.42.0

5 years ago

4.41.0

5 years ago

4.40.0

5 years ago

4.39.0

5 years ago

4.38.0

5 years ago

4.37.1

5 years ago

4.37.0

5 years ago

4.36.1

5 years ago

4.36.0

5 years ago

4.35.0

5 years ago

4.34.0

5 years ago

4.33.0

5 years ago

4.32.3

5 years ago

4.32.2

5 years ago

4.32.1

5 years ago

4.32.0

5 years ago

4.31.0

5 years ago

4.30.0

5 years ago

4.29.0

5 years ago

4.28.2

5 years ago

4.28.1

5 years ago

4.28.0

5 years ago

4.27.1

5 years ago

4.27.0

5 years ago

4.26.0

5 years ago

4.25.0

5 years ago

4.24.1

5 years ago

4.24.0

5 years ago

4.23.5

5 years ago

4.23.4

5 years ago

4.23.3

5 years ago

4.23.2

5 years ago

4.23.1

5 years ago

4.23.0

5 years ago

4.22.0

5 years ago

4.21.0

5 years ago

4.20.0

5 years ago

4.19.0

5 years ago

4.18.1

5 years ago

4.18.0

5 years ago

4.17.0

5 years ago

4.16.2

5 years ago

4.16.1

5 years ago

4.16.0

5 years ago

4.15.1

5 years ago

4.15.0

5 years ago

4.14.0

5 years ago

4.13.0

5 years ago

4.12.0

5 years ago

4.11.2

5 years ago

4.11.1

5 years ago

4.11.0

5 years ago

4.10.0

5 years ago

4.9.0

5 years ago

4.8.1

5 years ago

4.8.0

5 years ago

4.7.1

5 years ago

4.7.0

5 years ago

4.6.0

5 years ago

4.5.0

5 years ago

4.4.1

5 years ago

4.4.0

5 years ago

4.3.2

5 years ago

4.3.1

5 years ago

4.3.0

5 years ago

4.2.2

5 years ago

4.2.1

5 years ago

4.2.0

5 years ago

4.1.2

5 years ago

4.1.1

5 years ago

4.1.0

5 years ago

4.0.3

5 years ago

4.0.2

5 years ago

4.0.1

5 years ago

4.0.0

5 years ago

3.24.0

5 years ago

3.23.0

5 years ago

3.22.0

5 years ago

3.21.0

5 years ago

3.20.1

5 years ago

3.20.0

5 years ago

3.19.0

5 years ago

3.18.0

5 years ago

3.17.3

5 years ago

3.17.2

5 years ago

3.17.1

5 years ago

3.17.0

5 years ago

3.16.0

5 years ago

3.15.2

5 years ago

3.15.1

5 years ago

3.15.0

5 years ago

3.14.0

5 years ago

3.13.2

5 years ago

3.13.1

5 years ago

3.13.0

5 years ago

3.12.0

5 years ago

3.11.0

5 years ago

3.10.0

5 years ago

3.9.0

5 years ago

3.8.0

5 years ago

3.7.2

5 years ago

3.7.1

5 years ago

3.7.0

5 years ago

3.6.3

5 years ago

3.6.2

5 years ago

3.6.1

5 years ago

3.6.0

5 years ago

3.5.1

5 years ago

3.5.0

5 years ago

3.4.2

5 years ago

3.4.1

5 years ago

3.4.0

5 years ago

3.3.5

5 years ago

3.3.4

5 years ago

3.3.3

5 years ago

3.3.2

5 years ago

3.3.1

5 years ago

3.3.0

5 years ago

3.2.0

5 years ago

3.1.0

5 years ago

3.0.0

5 years ago

2.26.0

5 years ago

2.25.0

5 years ago

2.24.1

5 years ago

2.24.0

5 years ago

2.23.0

5 years ago

2.22.0

5 years ago

2.21.0

5 years ago

2.20.0

5 years ago

2.19.0

5 years ago

2.18.7

5 years ago

2.18.6

5 years ago

2.18.5

5 years ago

2.18.4

5 years ago

2.18.3

5 years ago

2.18.2

5 years ago

2.18.1

5 years ago

2.18.0

5 years ago

2.17.2

5 years ago

2.17.1

5 years ago

2.17.0

5 years ago

2.16.0

5 years ago

2.15.0

5 years ago

2.14.0

5 years ago

2.13.1

5 years ago

2.13.0

5 years ago

2.12.0

5 years ago

2.11.1

5 years ago

2.11.0

5 years ago

2.10.1

5 years ago

2.10.0

5 years ago

2.9.0

5 years ago

2.8.0

5 years ago

2.7.1

5 years ago

2.7.0

5 years ago

2.6.1

5 years ago

2.6.0

5 years ago

2.5.0

5 years ago

2.4.0

5 years ago

2.3.0

5 years ago

2.2.0

5 years ago

2.1.1

5 years ago

2.1.0

5 years ago

2.0.0

5 years ago

1.6.0

5 years ago

1.5.0

5 years ago

1.4.0

5 years ago

1.3.3

5 years ago

1.3.2

5 years ago

1.3.1

5 years ago

1.3.0

5 years ago

1.2.2

5 years ago

1.2.1

5 years ago

1.2.0

5 years ago

1.1.1

5 years ago

1.1.0

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago