87% leftsell

Code Review | LeftSell

WordPress plugin LeftSell scored 87% from 54 tests.

About plugin

  • Plugin page: leftsell
  • Plugin version: 2.0.4
  • PHP compatiblity: 5.4+
  • PHP version: 7.4.16
  • WordPress compatibility: 5.2-5.8
  • WordPress version: 5.8.1
  • First release: Aug 18, 2020
  • Latest release: Nov 18, 2021
  • Number of updates: 36
  • Update frequency: every 12.7 days
  • Top authors: kundschaft (100%)

Code review

54 tests

User reviews

1 review

Install metrics

10+ active / 366 total downloads

Benchmarks

Plugin footprint Passed 16 tests

Installer Passed 1 test

🔺 Critical test (weight: 50) | All plugins must install correctly, without throwing any errors, warnings, or notices
Installer ran successfully

Server metrics [RAM: ▲1.11MB] [CPU: ▼124.45ms] Passed 4 tests

A check of server-side resources used by LeftSell
This plugin does not affect your website's performance
PageMemory (MB)CPU Time (ms)
Home /3.79 ▲1.0760.66 ▲36.62
Dashboard /wp-admin4.19 ▲1.1362.71 ▲16.18
Posts /wp-admin/edit.php4.24 ▲1.1365.55 ▲16.91
Add New Post /wp-admin/post-new.php6.54 ▲1.11114.50 ▼546.21
Media Library /wp-admin/upload.php4.13 ▲1.1351.13 ▲15.33
Communicate /wp-admin/admin.php?page=leftsell-com4.0644.30
Private Market /wp-admin/admin.php?page=leftsell4.1043.90
Options /wp-admin/admin.php?page=leftsell-tools4.1046.75

Server storage [IO: ▲0.75MB] [DB: ▲0.00MB] 67% from 3 tests

Input-output and database impact of this plugin
It is recommended to fix the following issues
  • There were 1 file (0.04KB) illegally modified outside of "wp-content/plugins/leftsell/" and "wp-content/uploads/"
    • (new file) leftsell-log.txt
Filesystem: 61 new files
Database: no new tables, 4 new options
New WordPress options
leftsell_shop_id
leftsell_messagedefintions
leftsell_messageupdate
leftsell_shop_enabled

Browser metrics Passed 4 tests

A check of browser resources used by LeftSell
Minimal impact on browser resources
PageNodesMemory (MB)Script (ms)Layout (ms)
Home /3,819 ▲22316.07 ▲0.578.77 ▼2.6550.66 ▼1.09
Dashboard /wp-admin3,090 ▲1596.21 ▲0.27143.57 ▼5.00122.00 ▲3.34
Posts /wp-admin/edit.php2,857 ▲1182.74 ▼0.0768.68 ▼3.6893.44 ▲0.05
Add New Post /wp-admin/post-new.php1,617 ▼6617.75 ▼0.50399.32 ▼7.89111.29 ▼4.62
Media Library /wp-admin/upload.php1,927 ▲1175.07 ▲0.01150.88 ▼4.30122.20 ▼2.05
Communicate /wp-admin/admin.php?page=leftsell-com1,1672.0865.2890.55
Private Market /wp-admin/admin.php?page=leftsell1,1362.0954.7080.99
Options /wp-admin/admin.php?page=leftsell-tools1,3052.0557.0587.06

Uninstaller [IO: ▲0.00MB] [DB: ▲0.00MB] Passed 4 tests

🔸 Tests weight: 35 | Checking the uninstaller removed all traces of the plugin
The plugin uninstalled successfully, without leaving any zombie files or tables

Smoke tests 50% from 4 tests

Server-side errors Passed 1 test

🔹 Test weight: 20 | This is a short smoke test looking for server-side errors
Everything seems fine, however this is by no means an exhaustive test

SRP 50% from 2 tests

🔹 Tests weight: 20 | It is important to ensure that your PHP files perform no action when accessed directly, respecting the single-responsibility principle
Almost there! Just fix the following items
  • 1× GET requests to PHP files have triggered server-side errors or warnings:
    • > PHP Fatal error
      Uncaught Error: Call to undefined function plugin_dir_url() in wp-content/plugins/leftsell/leftsell.php:37

User-side errors 0% from 1 test

🔹 Test weight: 20 | This is a smoke test targeting browser errors/issues
These are user-side errors you should fix
  • 3 occurences, only the last one shown
    • > GET request to /wp-admin/admin.php?page=leftsell-tools
    • > Network (severe)
    data:image/svg+xml;base64,data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8c3ZnIHdpZHRoPSI4MDAiIGhlaWdodD0iODAwIiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAyMTEuNjcgMjExLjY3IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KCTxkZWZzPg0KCQk8Zm9udCBpZD0iZm9udDc4IiBob3Jpei1hZHYteD0iMTAyNCI+DQoJCQk8Zm9udC1mYWNlIGZvbnQtZmFtaWx5PSJTVkdGb250IDEiIHVuaXRzLXBlci1lbT0iMTAyNCIvPg0KCQkJPG1pc3NpbmctZ2x5cGggZD0iTTAsMGgxMDAwdjEwMjRoLTEwMDB6Ii8+DQoJCQk8Z2x5cGggZD0ibSA0Ny4zODM3NSw4MzMuOTk4NzEgMTE2LjI0NTkxLDAuMzEyNzkiIGdseXBoLW5hbWU9IkdseXBoZSAxIi8+DQoJCTwvZm9udD4NCgk8L2RlZnM+DQoJPGcgc2hhcGUtcmVuZGVyaW5nPSJhdXRvIj4NCgkJPGc+DQoJCQk8cGF0aCBmaWxsPSJibGFjayIgc3Ryb2tlPSJub25lIiBkPSJtNDcuMzg0IDE5MCAxMTYuMjUtMC4zMTI3OSIgY29sb3I9IiMwMDAwMDAiIGNvbG9yLXJlbmRlcmluZz0iYXV0byIgZG9taW5hbnQtYmFzZWxpbmU9ImF1dG8iIGltYWdlLXJlbmRlcmluZz0iYXV0byIgc29saWQtY29sb3I9IiMwMDAwMDAiIHN0b3AtY29sb3I9IiMwMDAwMDAiIHN0eWxlPSJmb250LWZlYXR1cmUtc2V0dGluZ3M6bm9ybWFsO2ZvbnQtdmFyaWFudC1hbHRlcm5hdGVzOm5vcm1hbDtmb250LXZhcmlhbnQtY2Fwczpub3JtYWw7Zm9udC12YXJpYW50LWVhc3QtYXNpYW46bm9ybWFsO2ZvbnQtdmFyaWFudC1saWdhdHVyZXM6bm9ybWFsO2ZvbnQtdmFyaWFudC1udW1lcmljOm5vcm1hbDtmb250LXZhcmlhbnQtcG9zaXRpb246bm9ybWFsO2ZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOm5vcm1hbDtpbmxpbmUtc2l6ZTowO2lzb2xhdGlvbjphdXRvO21peC1ibGVuZC1tb2RlOm5vcm1hbDtzaGFwZS1tYXJnaW46MDtzaGFwZS1wYWRkaW5nOjA7dGV4dC1kZWNvcmF0aW9uLWNvbG9yOiMwMDAwMDA7dGV4dC1kZWNvcmF0aW9uLWxpbmU6bm9uZTt0ZXh0LWRlY29yYXRpb24tc3R5bGU6c29saWQ7dGV4dC1pbmRlbnQ6MDt0ZXh0LW9yaWVudGF0aW9uOm1peGVkO3RleHQtdHJhbnNmb3JtOm5vbmU7d2hpdGUtc3BhY2U6bm9ybWFsIi8+DQoJCQk8cGF0aCBmaWxsPSJibGFjayIgc3Ryb2tlPSJub25lIiBkPSJtMTYzLjYxIDE4MS4zMy0xMTYuMjUgMC4zMTI1YTguMzU2NCA4LjM1NjQgMCAwIDAtOC4zMzQgOC4zNzg5IDguMzU2NCA4LjM1NjQgMCAwIDAgOC4zNzg5IDguMzM0bDExNi4yNS0wLjMxMjVhOC4zNTY0IDguMzU2NCAwIDAgMCA4LjMzNC04LjM3ODkgOC4zNTY0IDguMzU2NCAwIDAgMC04LjM3ODktOC4zMzR6IiBjb2xvcj0iIzAwMDAwMCIgY29sb3ItcmVuZGVyaW5nPSJhdXRvIiBkb21pbmFudC1iYXNlbGluZT0iYXV0byIgaW1hZ2UtcmVuZGVyaW5nPSJhdXRvIiBzb2xpZC1jb2xvcj0iIzAwMDAwMCIgc3RvcC1jb2xvcj0iIzAwMDAwMCIgc3R5bGU9ImZvbnQtZmVhdHVyZS1zZXR0aW5nczpub3JtYWw7Zm9udC12YXJpYW50LWFsdGVybmF0ZXM6bm9ybWFsO2ZvbnQtdmFyaWFudC1jYXBzOm5vcm1hbDtmb250LXZhcmlhbnQtZWFzdC1hc2lhbjpub3JtYWw7Zm9udC12YXJpYW50LWxpZ2F0dXJlczpub3JtYWw7Zm9udC12YXJpYW50LW51bWVyaWM6bm9ybWFsO2ZvbnQtdmFyaWFudC1wb3NpdGlvbjpub3JtYWw7Zm9udC12YXJpYXRpb24tc2V0dGluZ3M6bm9ybWFsO2lubGluZS1zaXplOjA7aXNvbGF0aW9uOmF1dG87bWl4LWJsZW5kLW1vZGU6bm9ybWFsO3NoYXBlLW1hcmdpbjowO3NoYXBlLXBhZGRpbmc6MDt0ZXh0LWRlY29yYXRpb24tY29sb3I6IzAwMDAwMDt0ZXh0LWRlY29yYXRpb24tbGluZTpub25lO3RleHQtZGVjb3JhdGlvbi1zdHlsZTpzb2xpZDt0ZXh0LWluZGVudDowO3RleHQtb3JpZW50YXRpb246bWl4ZWQ7dGV4dC10cmFuc2Zvcm06bm9uZTt3aGl0ZS1zcGFjZTpub3JtYWwiLz4NCgkJCTxwYXRoIGZpbGw9ImJsYWNrIiBzdHJva2U9Im5vbmUiIGQ9Im0xNjMuNiAxODkuNzIgMzguOTg1LTExMC4wNyIgY29sb3I9IiMwMDAwMDAiIGNvbG9yLXJlbmRlcmluZz0iYXV0byIgZG9taW5hbnQtYmFzZWxpbmU9ImF1dG8iIGltYWdlLXJlbmRlcmluZz0iYXV0byIgc29saWQtY29sb3I9IiMwMDAwMDAiIHN0b3AtY29sb3I9IiMwMDAwMDAiIHN0eWxlPSJmb250LWZlYXR1cmUtc2V0dGluZ3M6bm9ybWFsO2ZvbnQtdmFyaWFudC1hbHRlcm5hdGVzOm5vcm1hbDtmb250LXZhcmlhbnQtY2Fwczpub3JtYWw7Zm9udC12YXJpYW50LWVhc3QtYXNpYW46bm9ybWFsO2ZvbnQtdmFyaWFudC1saWdhdHVyZXM6bm9ybWFsO2ZvbnQtdmFyaWFudC1udW1lcmljOm5vcm1hbDtmb250LXZhcmlhbnQtcG9zaXRpb246bm9ybWFsO2ZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOm5vcm1hbDtpbmxpbmUtc2l6ZTowO2lzb2xhdGlvbjphdXRvO21peC1ibGVuZC1tb2RlOm5vcm1hbDtzaGFwZS1tYXJnaW46MDtzaGFwZS1wYWRkaW5nOjA7dGV4dC1kZWNvcmF0aW9uLWNvbG9yOiMwMDAwMDA7dGV4dC1kZWNvcmF0aW9uLWxpbmU6bm9uZTt0ZXh0LWRlY29yYXRpb24tc3R5bGU6c29saWQ7dGV4dC1pbmRlbnQ6MDt0ZXh0LW9yaWVudGF0aW9uOm1peGVkO3RleHQtdHJhbnNmb3JtOm5vbmU7d2hpdGUtc3BhY2U6bm9ybWFsIi8+DQoJCQk8cGF0aCBmaWxsPSJibGFjayIgc3Ryb2tlPSJub25lIiBkPSJtMjAyLjUgNzEuMzMzYTguMzI0MyA4LjMyNDMgMCAwIDAtNy43Njk1IDUuNTQ0OWwtMzguOTg0IDExMC4wNmE4LjMyNDMgOC4zMjQzIDAgMCAwIDUuMDY4NCAxMC42MjcgOC4zMjQzIDguMzI0MyAwIDAgMCAxMC42MjUtNS4wNjg0bDM4Ljk4NC0xMTAuMDZhOC4zMjQzIDguMzI0MyAwIDAgMC01LjA2NjQtMTAuNjI3IDguMzI0MyA4LjMyNDMgMCAwIDAtMi44NTc0LTAuNDc2NTZ6IiBjb2xvcj0iIzAwMDAwMCIgY29sb3ItcmVuZGVyaW5nPSJhdXRvIiBkb21pbmFudC1iYXNlbGluZT0iYXV0byIgaW1hZ2UtcmVuZGVyaW5nPSJhdXRvIiBzb2xpZC1jb2xvcj0iIzAwMDAwMCIgc3RvcC1jb2xvcj0iIzAwMDAwMCIgc3R5bGU9ImZvbnQtZmVhdHVyZS1zZXR0aW5nczpub3JtYWw7Zm9udC12YXJpYW50LWFsdGVybmF0ZXM6bm9ybWFsO2ZvbnQtdmFyaWFudC1jYXBzOm5vcm1hbDtmb250LXZhcmlhbnQtZWFzdC1hc2lhbjpub3JtYWw7Zm9udC12YXJpYW50LWxpZ2F0dXJlczpub3JtYWw7Zm9udC12YXJpYW50LW51bWVyaWM6bm9ybWFsO2ZvbnQtdmFyaWFudC1wb3NpdGlvbjpub3JtYWw7Zm9udC12YXJpYXRpb24tc2V0dGluZ3M6bm9ybWFsO2lubGluZS1zaXplOjA7aXNvbGF0aW9uOmF1dG87bWl4LWJsZW5kLW1vZGU6bm9ybWFsO3NoYXBlLW1hcmdpbjowO3NoYXBlLXBhZGRpbmc6MDt0ZXh0LWRlY29yYXRpb24tY29sb3I6IzAwMDAwMDt0ZXh0LWRlY29yYXRpb24tbGluZTpub25lO3RleHQtZGVjb3JhdGlvbi1zdHlsZTpzb2xpZDt0ZXh0LWluZGVudDowO3RleHQtb3JpZW50YXRpb246bWl4ZWQ7dGV4dC10cmFuc2Zvcm06bm9uZTt3aGl0ZS1zcGFjZTpub3JtYWwiLz4NCgkJCTxwYXRoIGZpbGw9ImJsYWNrIiBzdHJva2U9Im5vbmUiIGQ9Im00Ny4zODQgMTkwLTM4Ljk4NS0xMTAuMDciIGNvbG9yPSIjMDAwMDAwIiBjb2xvci1yZW5kZXJpbmc9ImF1dG8iIGRvbWluYW50LWJhc2VsaW5lPSJhdXRvIiBpbWFnZS1yZW5kZXJpbmc9ImF1dG8iIHNvbGlkLWNvbG9yPSIjMDAwMDAwIiBzdG9wLWNvbG9yPSIjMDAwMDAwIiBzdHlsZT0iZm9udC1mZWF0dXJlLXNldHRpbmdzOm5vcm1hbDtmb250LXZhcmlhbnQtYWx0ZXJuYXRlczpub3JtYWw7Zm9udC12YXJpYW50LWNhcHM6bm9ybWFsO2ZvbnQtdmFyaWFudC1lYXN0LWFzaWFuOm5vcm1hbDtmb250LXZhcmlhbnQtbGlnYXR1cmVzOm5vcm1hbDtmb250LXZhcmlhbnQtbnVtZXJpYzpub3JtYWw7Zm9udC12YXJpYW50LXBvc2l0aW9uOm5vcm1hbDtmb250LXZhcmlhdGlvbi1zZXR0aW5nczpub3JtYWw7aW5saW5lLXNpemU6MDtpc29sYXRpb246YXV0bzttaXgtYmxlbmQtbW9kZTpub3JtYWw7c2hhcGUtbWFyZ2luOjA7c2hhcGUtcGFkZGluZzowO3RleHQtZGVjb3JhdGlvbi1jb2xvcjojMDAwMDAwO3RleHQtZGVjb3JhdGlvbi1saW5lOm5vbmU7dGV4dC1kZWNvcmF0aW9uLXN0eWxlOnNvbGlkO3RleHQtaW5kZW50OjA7dGV4dC1vcmllbnRhdGlvbjptaXhlZDt0ZXh0LXRyYW5zZm9ybTpub25lO3doaXRlLXNwYWNlOm5vcm1hbCIvPg0KCQkJPHBhdGggZmlsbD0iYmxhY2siIHN0cm9rZT0ibm9uZSIgZD0ibTguNDUxMiA3MS42MTJhOC4zMjQzIDguMzI0MyAwIDAgMC0yLjgzMiAwLjQ3NjU3IDguMzI0MyA4LjMyNDMgMCAwIDAtNS4wNjY0IDEwLjYyN2wzOC45ODQgMTEwLjA2YTguMzI0MyA4LjMyNDMgMCAwIDAgMTAuNjI1IDUuMDY4NCA4LjMyNDMgOC4zMjQzIDAgMCAwIDUuMDY4NC0xMC42MjdsLTM4Ljk4NC0xMTAuMDZhOC4zMjQzIDguMzI0MyAwIDAgMC03Ljc5NDktNS41NDQ5eiIgY29sb3I9IiMwMDAwMDAiIGNvbG9yLXJlbmRlcmluZz0iYXV0byIgZG9taW5hbnQtYmFzZWxpbmU9ImF1dG8iIGltYWdlLXJlbmRlcmluZz0iYXV0byIgc29saWQtY29sb3I9IiMwMDAwMDAiIHN0b3AtY29sb3I9IiMwMDAwMDAiIHN0eWxlPSJmb250LWZlYXR1cmUtc2V0dGluZ3M6bm9ybWFsO2ZvbnQtdmFyaWFudC1hbHRlcm5hdGVzOm5vcm1hbDtmb250LXZhcmlhbnQtY2Fwczpub3JtYWw7Zm9udC12YXJpYW50LWVhc3QtYXNpYW46bm9ybWFsO2ZvbnQtdmFyaWFudC1saWdhdHVyZXM6bm9ybWFsO2ZvbnQtdmFyaWFudC1udW1lcmljOm5vcm1hbDtmb250LXZhcmlhbnQtcG9zaXRpb246bm9ybWFsO2ZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOm5vcm1hbDtpbmxpbmUtc2l6ZTowO2lzb2xhdGlvbjphdXRvO21peC1ibGVuZC1tb2RlOm5vcm1hbDtzaGFwZS1tYXJnaW46MDtzaGFwZS1wYWRkaW5nOjA7dGV4dC1kZWNvcmF0aW9uLWNvbG9yOiMwMDAwMDA7dGV4dC1kZWNvcmF0aW9uLWxpbmU6bm9uZTt0ZXh0LWRlY29yYXRpb24tc3R5bGU6c29saWQ7dGV4dC1pbmRlbnQ6MDt0ZXh0LW9yaWVudGF0aW9uOm1peGVkO3RleHQtdHJhbnNmb3JtOm5vbmU7d2hpdGUtc3BhY2U6bm9ybWFsIi8+DQoJCQk8cGF0aCBmaWxsPSJibGFjayIgc3Ryb2tlPSJub25lIiBkPSJtOC4zOTkxIDc5LjkzNiA2Ni4wMTItMC41NDA5NSIgY29sb3I9IiMwMDAwMDAiIGNvbG9yLXJlbmRlcmluZz0iYXV0byIgZG9taW5hbnQtYmFzZWxpbmU9ImF1dG8iIGltYWdlLXJlbmRlcmluZz0iYXV0byIgc29saWQtY29sb3I9IiMwMDAwMDAiIHN0b3AtY29sb3I9IiMwMDAwMDAiIHN0eWxlPSJmb250LWZlYXR1cmUtc2V0dGluZ3M6bm9ybWFsO2ZvbnQtdmFyaWFudC1hbHRlcm5hdGVzOm5vcm1hbDtmb250LXZhcmlhbnQtY2Fwczpub3JtYWw7Zm9udC12YXJpYW50LWVhc3QtYXNpYW46bm9ybWFsO2ZvbnQtdmFyaWFudC1saWdhdHVyZXM6bm9ybWFsO2ZvbnQtdmFyaWFudC1udW1lcmljOm5vcm1hbDtmb250LXZhcmlhbnQtcG9zaXRpb246bm9ybWFsO2ZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOm5vcm1hbDtpbmxpbmUtc2l6ZTowO2lzb2xhdGlvbjphdXRvO21peC1ibGVuZC1tb2RlOm5vcm1hbDtzaGFwZS1tYXJnaW46MDtzaGFwZS1wYWRkaW5nOjA7dGV4dC1kZWNvcmF0aW9uLWNvbG9yOiMwMDAwMDA7dGV4dC1kZWNvcmF0aW9uLWxpbmU6bm9uZTt0ZXh0LWRlY29yYXRpb24tc3R5bGU6c29saWQ7dGV4dC1pbmRlbnQ6MDt0ZXh0LW9yaWVudGF0aW9uOm1peGVkO3RleHQtdHJhbnNmb3JtOm5vbmU7d2hpdGUtc3BhY2U6bm9ybWFsIi8+DQoJCQk8cGF0aCBmaWxsPSJibGFjayIgc3Ryb2tlPSJub25lIiBkPSJtNzQuMzQ0IDcxLjExNC02Ni4wMTIgMC41NDEwMWE4LjI4MTIgOC4yODEyIDAgMCAwLTguMjEyOSA4LjM0OTYgOC4yODEyIDguMjgxMiAwIDAgMCA4LjM0NzcgOC4yMTI5bDY2LjAxMi0wLjU0MTAxYTguMjgxMiA4LjI4MTIgMCAwIDAgOC4yMTI5LTguMzQ5NiA4LjI4MTIgOC4yODEyIDAgMCAwLTguMzQ3Ny04LjIxMjl6IiBjb2xvcj0iIzAwMDAwMCIgY29sb3ItcmVuZGVyaW5nPSJhdXRvIiBkb21pbmFudC1iYXNlbGluZT0iYXV0byIgaW1hZ2UtcmVuZGVyaW5nPSJhdXRvIiBzb2xpZC1jb2xvcj0iIzAwMDAwMCIgc3RvcC1jb2xvcj0iIzAwMDAwMCIgc3R5bGU9ImZvbnQtZmVhdHVyZS1zZXR0aW5nczpub3JtYWw7Zm9udC12YXJpYW50LWFsdGVybmF0ZXM6bm9ybWFsO2ZvbnQtdmFyaWFudC1jYXBzOm5vcm1hbDtmb250LXZhcmlhbnQtZWFzdC1hc2lhbjpub3JtYWw7Zm9udC12YXJpYW50LWxpZ2F0dXJlczpub3JtYWw7Zm9udC12YXJpYW50LW51bWVyaWM6bm9ybWFsO2ZvbnQtdmFyaWFudC1wb3NpdGlvbjpub3JtYWw7Zm9udC12YXJpYXRpb24tc2V0dGluZ3M6bm9ybWFsO2lubGluZS1zaXplOjA7aXNvbGF0aW9uOmF1dG87bWl4LWJsZW5kLW1vZGU6bm9ybWFsO3NoYXBlLW1hcmdpbjowO3NoYXBlLXBhZGRpbmc6MDt0ZXh0LWRlY29yYXRpb24tY29sb3I6IzAwMDAwMDt0ZXh0LWRlY29yYXRpb24tbGluZTpub25lO3RleHQtZGVjb3JhdGlvbi1zdHlsZTpzb2xpZDt0ZXh0LWluZGVudDowO3RleHQtb3JpZW50YXRpb246bWl4ZWQ7dGV4dC10cmFuc2Zvcm06bm9uZTt3aGl0ZS1zcGFjZTpub3JtYWwiLz4NCgkJCTxwYXRoIGZpbGw9ImJsYWNrIiBzdHJva2U9Im5vbmUiIGQ9Im0xMzYuNTcgODAuMTk3IDY2LjAxMi0wLjU0MDk0IiBjb2xvcj0iIzAwMDAwMCIgY29sb3ItcmVuZGVyaW5nPSJhdXRvIiBkb21pbmFudC1iYXNlbGluZT0iYXV0byIgaW1hZ2UtcmVuZGVyaW5nPSJhdXRvIiBzb2xpZC1jb2xvcj0iIzAwMDAwMCIgc3RvcC1jb2xvcj0iIzAwMDAwMCIgc3R5bGU9ImZvbnQtZmVhdHVyZS1zZXR0aW5nczpub3JtYWw7Zm9udC12YXJpYW50LWFsdGVybmF0ZXM6bm9ybWFsO2ZvbnQtdmFyaWFudC1jYXBzOm5vcm1hbDtmb250LXZhcmlhbnQtZWFzdC1hc2lhbjpub3JtYWw7Zm9udC12YXJpYW50LWxpZ2F0dXJlczpub3JtYWw7Zm9udC12YXJpYW50LW51bWVyaWM6bm9ybWFsO2ZvbnQtdmFyaWFudC1wb3NpdGlvbjpub3JtYWw7Zm9udC12YXJpYXRpb24tc2V0dGluZ3M6bm9ybWFsO2lubGluZS1zaXplOjA7aXNvbGF0aW9uOmF1dG87bWl4LWJsZW5kLW1vZGU6bm9ybWFsO3NoYXBlLW1hcmdpbjowO3NoYXBlLXBhZGRpbmc6MDt0ZXh0LWRlY29yYXRpb24tY29sb3I6IzAwMDAwMDt0ZXh0LWRlY29yYXRpb24tbGluZTpub25lO3RleHQtZGVjb3JhdGlvbi1zdHlsZTpzb2xpZDt0ZXh0LWluZGVudDowO3RleHQtb3JpZW50YXRpb246bWl4ZWQ7dGV4dC10cmFuc2Zvcm06bm9uZTt3aGl0ZS1zcGFjZTpub3JtYWwiLz4NCgkJCTxwYXRoIGZpbGw9ImJsYWNrIiBzdHJva2U9Im5vbmUiIGQ9Im0yMDIuNTEgNzEuMzc2LTY2LjAxMiAwLjU0MTAyYTguMjgxMiA4LjI4MTIgMCAwIDAtOC4yMTI5IDguMzQ3NyA4LjI4MTIgOC4yODEyIDAgMCAwIDguMzQ5NiA4LjIxMjlsNjYuMDEyLTAuNTQxMDJhOC4yODEyIDguMjgxMiAwIDAgMCA4LjIxMjktOC4zNDc2IDguMjgxMiA4LjI4MTIgMCAwIDAtOC4zNDk2LTguMjEyOXoiIGNvbG9yPSIjMDAwMDAwIiBjb2xvci1yZW5kZXJpbmc9ImF1dG8iIGRvbWluYW50LWJhc2VsaW5lPSJhdXRvIiBpbWFnZS1yZW5kZXJpbmc9ImF1dG8iIHNvbGlkLWNvbG9yPSIjMDAwMDAwIiBzdG9wLWNvbG9yPSIjMDAwMDAwIiBzdHlsZT0iZm9udC1mZWF0dXJlLXNldHRpbmdzOm5vcm1hbDtmb250LXZhcmlhbnQtYWx0ZXJuYXRlczpub3JtYWw7Zm9udC12YXJpYW50LWNhcHM6bm9ybWFsO2ZvbnQtdmFyaWFudC1lYXN0LWFzaWFuOm5vcm1hbDtmb250LXZhcmlhbnQtbGlnYXR1cmVzOm5vcm1hbDtmb250LXZhcmlhbnQtbnVtZXJpYzpub3JtYWw7Zm9udC12YXJpYW50LXBvc2l0aW9uOm5vcm1hbDtmb250LXZhcmlhdGlvbi1zZXR0aW5nczpub3JtYWw7aW5saW5lLXNpemU6MDtpc29sYXRpb246YXV0bzttaXgtYmxlbmQtbW9kZTpub3JtYWw7c2hhcGUtbWFyZ2luOjA7c2hhcGUtcGFkZGluZzowO3RleHQtZGVjb3JhdGlvbi1jb2xvcjojMDAwMDAwO3RleHQtZGVjb3JhdGlvbi1saW5lOm5vbmU7dGV4dC1kZWNvcmF0aW9uLXN0eWxlOnNvbGlkO3RleHQtaW5kZW50OjA7dGV4dC1vcmllbnRhdGlvbjptaXhlZDt0ZXh0LXRyYW5zZm9ybTpub25lO3doaXRlLXNwYWNlOm5vcm1hbCIvPg0KCQkJPHBhdGggZmlsbD0iYmxhY2siIHN0cm9rZT0ibm9uZSIgZD0ibTExNy4wNyAxMDIuMTUgMjguNDAyLTUyLjU3OCIgY29sb3I9IiMwMDAwMDAiIGNvbG9yLXJlbmRlcmluZz0iYXV0byIgZG9taW5hbnQtYmFzZWxpbmU9ImF1dG8iIGltYWdlLXJlbmRlcmluZz0iYXV0byIgc29saWQtY29sb3I9IiMwMDAwMDAiIHN0b3AtY29sb3I9IiMwMDAwMDAiIHN0eWxlPSJmb250LWZlYXR1cmUtc2V0dGluZ3M6bm9ybWFsO2ZvbnQtdmFyaWFudC1hbHRlcm5hdGVzOm5vcm1hbDtmb250LXZhcmlhbnQtY2Fwczpub3JtYWw7Zm9udC12YXJpYW50LWVhc3QtYXNpYW46bm9ybWFsO2ZvbnQtdmFyaWFudC1saWdhdHVyZXM6bm9ybWFsO2ZvbnQtdmFyaWFudC1udW1lcmljOm5vcm1hbDtmb250LXZhcmlhbnQtcG9zaXRpb246bm9ybWFsO2ZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOm5vcm1hbDtpbmxpbmUtc2l6ZTowO2lzb2xhdGlvbjphdXRvO21peC1ibGVuZC1tb2RlOm5vcm1hbDtzaGFwZS1tYXJnaW46MDtzaGFwZS1wYWRkaW5nOjA7dGV4dC1kZWNvcmF0aW9uLWNvbG9yOiMwMDAwMDA7dGV4dC1kZWNvcmF0aW9uLWxpbmU6bm9uZTt0ZXh0LWRlY29yYXRpb24tc3R5bGU6c29saWQ7dGV4dC1pbmRlbnQ6MDt0ZXh0LW9yaWVudGF0aW9uOm1peGVkO3RleHQtdHJhbnNmb3JtOm5vbmU7d2hpdGUtc3BhY2U6bm9ybWFsIi8+DQoJCQk8cGF0aCBmaWxsPSJibGFjayIgc3Ryb2tlPSJub25lIiBkPSJtMTQ1LjQ4IDQxLjIxNmE4LjM1NTggOC4zNTU4IDAgMCAwLTcuMzU5NCA0LjM4NDhsLTI4LjQwMiA1Mi41NzhhOC4zNTU4IDguMzU1OCAwIDAgMCAzLjM4MDkgMTEuMzI0IDguMzU1OCA4LjM1NTggMCAwIDAgMTEuMzI0LTMuMzgwOWwyOC40MDItNTIuNTc4YTguMzU1OCA4LjM1NTggMCAwIDAtMy4zODA5LTExLjMyNCA4LjM1NTggOC4zNTU4IDAgMCAwLTMuOTY0OC0xLjAwMzl6IiBjb2xvcj0iIzAwMDAwMCIgY29sb3ItcmVuZGVyaW5nPSJhdXRvIiBkb21pbmFudC1iYXNlbGluZT0iYXV0byIgaW1hZ2UtcmVuZGVyaW5nPSJhdXRvIiBzb2xpZC1jb2xvcj0iIzAwMDAwMCIgc3RvcC1jb2xvcj0iIzAwMDAwMCIgc3R5bGU9ImZvbnQtZmVhdHVyZS1zZXR0aW5nczpub3JtYWw7Zm9udC12YXJpYW50LWFsdGVybmF0ZXM6bm9ybWFsO2ZvbnQtdmFyaWFudC1jYXBzOm5vcm1hbDtmb250LXZhcmlhbnQtZWFzdC1hc2lhbjpub3JtYWw7Zm9udC12YXJpYW50LWxpZ2F0dXJlczpub3JtYWw7Zm9udC12YXJpYW50LW51bWVyaWM6bm9ybWFsO2ZvbnQtdmFyaWFudC1wb3NpdGlvbjpub3JtYWw7Zm9udC12YXJpYXRpb24tc2V0dGluZ3M6bm9ybWFsO2lubGluZS1zaXplOjA7aXNvbGF0aW9uOmF1dG87bWl4LWJsZW5kLW1vZGU6bm9ybWFsO3NoYXBlLW1hcmdpbjowO3NoYXBlLXBhZGRpbmc6MDt0ZXh0LWRlY29yYXRpb24tY29sb3I6IzAwMDAwMDt0ZXh0LWRlY29yYXRpb24tbGluZTpub25lO3RleHQtZGVjb3JhdGlvbi1zdHlsZTpzb2xpZDt0ZXh0LWluZGVudDowO3RleHQtb3JpZW50YXRpb246bWl4ZWQ7dGV4dC10cmFuc2Zvcm06bm9uZTt3aGl0ZS1zcGFjZTpub3JtYWwiLz4NCgkJCTxwYXRoIGZpbGw9ImJsYWNrIiBzdHJva2U9Im5vbmUiIGQ9Im05MC4wNzYgMTA0LjI4LTI4LjQwMi01Mi41NzgiIGNvbG9yPSIjMDAwMDAwIiBjb2xvci1yZW5kZXJpbmc9ImF1dG8iIGRvbWluYW50LWJhc2VsaW5lPSJhdXRvIiBpbWFnZS1yZW5kZXJpbmc9ImF1dG8iIHNvbGlkLWNvbG9yPSIjMDAwMDAwIiBzdG9wLWNvbG9yPSIjMDAwMDAwIiBzdHlsZT0iZm9udC1mZWF0dXJlLXNldHRpbmdzOm5vcm1hbDtmb250LXZhcmlhbnQtYWx0ZXJuYXRlczpub3JtYWw7Zm9udC12YXJpYW50LWNhcHM6bm9ybWFsO2ZvbnQtdmFyaWFudC1lYXN0LWFzaWFuOm5vcm1hbDtmb250LXZhcmlhbnQtbGlnYXR1cmVzOm5vcm1hbDtmb250LXZhcmlhbnQtbnVtZXJpYzpub3JtYWw7Zm9udC12YXJpYW50LXBvc2l0aW9uOm5vcm1hbDtmb250LXZhcmlhdGlvbi1zZXR0aW5nczpub3JtYWw7aW5saW5lLXNpemU6MDtpc29sYXRpb246YXV0bzttaXgtYmxlbmQtbW9kZTpub3JtYWw7c2hhcGUtbWFyZ2luOjA7c2hhcGUtcGFkZGluZzowO3RleHQtZGVjb3JhdGlvbi1jb2xvcjojMDAwMDAwO3RleHQtZGVjb3JhdGlvbi1saW5lOm5vbmU7dGV4dC1kZWNvcmF0aW9uLXN0eWxlOnNvbGlkO3RleHQtaW5kZW50OjA7dGV4dC1vcmllbnRhdGlvbjptaXhlZDt0ZXh0LXRyYW5zZm9ybTpub25lO3doaXRlLXNwYWNlOm5vcm1hbCIvPg0KCQkJPHBhdGggZmlsbD0iYmxhY2siIHN0cm9rZT0ibm9uZSIgZD0ibTYxLjY2OCA0My4zNWE4LjM1NTggOC4zNTU4IDAgMCAwLTMuOTY0OCAxLjAwMzkgOC4zNTU4IDguMzU1OCAwIDAgMC0zLjM4MDkgMTEuMzIybDI4LjQwMiA1Mi41NzhhOC4zNTU4IDguMzU1OCAwIDAgMCAxMS4zMjIgMy4zODA5IDguMzU1OCA4LjM1NTggMCAwIDAgMy4zODA5LTExLjMyMmwtMjguNDAyLTUyLjU3OGE4LjM1NTggOC4zNTU4IDAgMCAwLTcuMzU3NC00LjM4NDh6IiBjb2xvcj0iIzAwMDAwMCIgY29sb3ItcmVuZGVyaW5nPSJhdXRvIiBkb21pbmFudC1iYXNlbGluZT0iYXV0byIgaW1hZ2UtcmVuZGVyaW5nPSJhdXRvIiBzb2xpZC1jb2xvcj0iIzAwMDAwMCIgc3RvcC1jb2xvcj0iIzAwMDAwMCIgc3R5bGU9ImZvbnQtZmVhdHVyZS1zZXR0aW5nczpub3JtYWw7Zm9udC12YXJpYW50LWFsdGVybmF0ZXM6bm9ybWFsO2ZvbnQtdmFyaWFudC1jYXBzOm5vcm1hbDtmb250LXZhcmlhbnQtZWFzdC1hc2lhbjpub3JtYWw7Zm9udC12YXJpYW50LWxpZ2F0dXJlczpub3JtYWw7Zm9udC12YXJpYW50LW51bWVyaWM6bm9ybWFsO2ZvbnQtdmFyaWFudC1wb3NpdGlvbjpub3JtYWw7Zm9udC12YXJpYXRpb24tc2V0dGluZ3M6bm9ybWFsO2lubGluZS1zaXplOjA7aXNvbGF0aW9uOmF1dG87bWl4LWJsZW5kLW1vZGU6bm9ybWFsO3NoYXBlLW1hcmdpbjowO3NoYXBlLXBhZGRpbmc6MDt0ZXh0LWRlY29yYXRpb24tY29sb3I6IzAwMDAwMDt0ZXh0LWRlY29yYXRpb24tbGluZTpub25lO3RleHQtZGVjb3JhdGlvbi1zdHlsZTpzb2xpZDt0ZXh0LWluZGVudDowO3RleHQtb3JpZW50YXRpb246bWl4ZWQ7dGV4dC10cmFuc2Zvcm06bm9uZTt3aGl0ZS1zcGFjZTpub3JtYWwiLz4NCgkJPC9nPg0KCQk8cGF0aCBmaWxsPSJibGFjayIgc3Ryb2tlPSJub25lIiBkPSJtMTY3LjIgMzIuMTk2YzAgOC4wODU1LTYuNDYyMyAxNC42NC0xNC40MzQgMTQuNjQtNy45NzE3IDAtMTQuNDM0LTYuNTU0Ni0xNC40MzQtMTQuNjRzNi40NjIzLTE0LjY0IDE0LjQzNC0xNC42NGM3Ljk3MTcgMCAxNC40MzQgNi41NTQ2IDE0LjQzNCAxNC42NHoiIGNvbG9yPSIjMDAwMDAwIiBjb2xvci1yZW5kZXJpbmc9ImF1dG8iIGRvbWluYW50LWJhc2VsaW5lPSJhdXRvIiBmaWxsLW9wYWNpdHk9Ii4wMTI2OTgiIGltYWdlLXJlbmRlcmluZz0iYXV0byIgc29saWQtY29sb3I9IiMwMDAwMDAiIHN0b3AtY29sb3I9IiMwMDAwMDAiIHN0eWxlPSJmb250LWZlYXR1cmUtc2V0dGluZ3M6bm9ybWFsO2ZvbnQtdmFyaWFudC1hbHRlcm5hdGVzOm5vcm1hbDtmb250LXZhcmlhbnQtY2Fwczpub3JtYWw7Zm9udC12YXJpYW50LWVhc3QtYXNpYW46bm9ybWFsO2ZvbnQtdmFyaWFudC1saWdhdHVyZXM6bm9ybWFsO2ZvbnQtdmFyaWFudC1udW1lcmljOm5vcm1hbDtmb250LXZhcmlhbnQtcG9zaXRpb246bm9ybWFsO2ZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOm5vcm1hbDtpbmxpbmUtc2l6ZTowO2lzb2xhdGlvbjphdXRvO21peC1ibGVuZC1tb2RlOm5vcm1hbDtzaGFwZS1tYXJnaW46MDtzaGFwZS1wYWRkaW5nOjA7dGV4dC1kZWNvcmF0aW9uLWNvbG9yOiMwMDAwMDA7dGV4dC1kZWNvcmF0aW9uLWxpbmU6bm9uZTt0ZXh0LWRlY29yYXRpb24tc3R5bGU6c29saWQ7dGV4dC1pbmRlbnQ6MDt0ZXh0LW9yaWVudGF0aW9uOm1peGVkO3RleHQtdHJhbnNmb3JtOm5vbmU7d2hpdGUtc3BhY2U6bm9ybWFsIi8+DQoJCTxwYXRoIGZpbGw9ImJsYWNrIiBzdHJva2U9Im5vbmUiIGQ9Im0xNTIuNzcgOS4xOTk5Yy0xMi41NTIgMmUtNiAtMjIuNzkxIDEwLjQ1OC0yMi43OTEgMjIuOTk2LTFlLTUgMTIuNTM4IDEwLjIzOSAyMi45OTYgMjIuNzkxIDIyLjk5NiAxMi41NTIgMWUtNSAyMi43ODktMTAuNDU4IDIyLjc4OS0yMi45OTYgMWUtNSAtMTIuNTM4LTEwLjIzNy0yMi45OTYtMjIuNzg5LTIyLjk5NnptMCAxNi43MTFjMy4zOTE0IDAgNi4wNzgxIDIuNjUxOSA2LjA3ODEgNi4yODUycy0yLjY4NjggNi4yODMyLTYuMDc4MSA2LjI4MzJjLTMuMzkxNCAwLTYuMDc4MS0yLjY1LTYuMDc4MS02LjI4MzJzMi42ODY4LTYuMjg1MiA2LjA3ODEtNi4yODUyeiIgY29sb3I9IiMwMDAwMDAiIGNvbG9yLXJlbmRlcmluZz0iYXV0byIgZG9taW5hbnQtYmFzZWxpbmU9ImF1dG8iIGltYWdlLXJlbmRlcmluZz0iYXV0byIgc29saWQtY29sb3I9IiMwMDAwMDAiIHN0b3AtY29sb3I9IiMwMDAwMDAiIHN0eWxlPSJmb250LWZlYXR1cmUtc2V0dGluZ3M6bm9ybWFsO2ZvbnQtdmFyaWFudC1hbHRlcm5hdGVzOm5vcm1hbDtmb250LXZhcmlhbnQtY2Fwczpub3JtYWw7Zm9udC12YXJpYW50LWVhc3QtYXNpYW46bm9ybWFsO2ZvbnQtdmFyaWFudC1saWdhdHVyZXM6bm9ybWFsO2ZvbnQtdmFyaWFudC1udW1lcmljOm5vcm1hbDtmb250LXZhcmlhbnQtcG9zaXRpb246bm9ybWFsO2ZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOm5vcm1hbDtpbmxpbmUtc2l6ZTowO2lzb2xhdGlvbjphdXRvO21peC1ibGVuZC1tb2RlOm5vcm1hbDtzaGFwZS1tYXJnaW46MDtzaGFwZS1wYWRkaW5nOjA7dGV4dC1kZWNvcmF0aW9uLWNvbG9yOiMwMDAwMDA7dGV4dC1kZWNvcmF0aW9uLWxpbmU6bm9uZTt0ZXh0LWRlY29yYXRpb24tc3R5bGU6c29saWQ7dGV4dC1pbmRlbnQ6MDt0ZXh0LW9yaWVudGF0aW9uOm1peGVkO3RleHQtdHJhbnNmb3JtOm5vbmU7d2hpdGUtc3BhY2U6bm9ybWFsIi8+DQoJCTxwYXRoIGZpbGw9ImJsYWNrIiBzdHJva2U9Im5vbmUiIGQ9Im02Ni41IDMyLjE5NmMxZS02IDguMDg1NS02LjQ2MjMgMTQuNjQtMTQuNDM0IDE0LjY0LTcuOTcxNyAwLTE0LjQzNC02LjU1NDYtMTQuNDM0LTE0LjY0LTFlLTYgLTguMDg1NSA2LjQ2MjMtMTQuNjQgMTQuNDM0LTE0LjY0IDcuOTcxNyAwIDE0LjQzNCA2LjU1NDYgMTQuNDM0IDE0LjY0eiIgY29sb3I9IiMwMDAwMDAiIGNvbG9yLXJlbmRlcmluZz0iYXV0byIgZG9taW5hbnQtYmFzZWxpbmU9ImF1dG8iIGZpbGwtb3BhY2l0eT0iLjAwMzE3NDYiIGltYWdlLXJlbmRlcmluZz0iYXV0byIgc29saWQtY29sb3I9IiMwMDAwMDAiIHN0b3AtY29sb3I9IiMwMDAwMDAiIHN0eWxlPSJmb250LWZlYXR1cmUtc2V0dGluZ3M6bm9ybWFsO2ZvbnQtdmFyaWFudC1hbHRlcm5hdGVzOm5vcm1hbDtmb250LXZhcmlhbnQtY2Fwczpub3JtYWw7Zm9udC12YXJpYW50LWVhc3QtYXNpYW46bm9ybWFsO2ZvbnQtdmFyaWFudC1saWdhdHVyZXM6bm9ybWFsO2ZvbnQtdmFyaWFudC1udW1lcmljOm5vcm1hbDtmb250LXZhcmlhbnQtcG9zaXRpb246bm9ybWFsO2ZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOm5vcm1hbDtpbmxpbmUtc2l6ZTowO2lzb2xhdGlvbjphdXRvO21peC1ibGVuZC1tb2RlOm5vcm1hbDtzaGFwZS1tYXJnaW46MDtzaGFwZS1wYWRkaW5nOjA7dGV4dC1kZWNvcmF0aW9uLWNvbG9yOiMwMDAwMDA7dGV4dC1kZWNvcmF0aW9uLWxpbmU6bm9uZTt0ZXh0LWRlY29yYXRpb24tc3R5bGU6c29saWQ7dGV4dC1pbmRlbnQ6MDt0ZXh0LW9yaWVudGF0aW9uOm1peGVkO3RleHQtdHJhbnNmb3JtOm5vbmU7d2hpdGUtc3BhY2U6bm9ybWFsIi8+DQoJCTxwYXRoIGZpbGw9ImJsYWNrIiBzdHJva2U9Im5vbmUiIGQ9Im01Mi4wNjYgOS4xOTk5Yy0xMi41NTIgMC0yMi43OTEgMTAuNDU4LTIyLjc5MSAyMi45OTYtMmUtNiAxMi41MzggMTAuMjM5IDIyLjk5NiAyMi43OTEgMjIuOTk2IDEyLjU1MiAwIDIyLjc4OS0xMC40NTggMjIuNzg5LTIyLjk5NiAxZS02IC0xMi41MzgtMTAuMjM3LTIyLjk5Ni0yMi43ODktMjIuOTk2em0wIDE2LjcxMWMzLjM5MTQgMCA2LjA3ODEgMi42NTE5IDYuMDc4MSA2LjI4NTIgMWUtNiAzLjYzMzItMi42ODY3IDYuMjgzMi02LjA3ODEgNi4yODMyLTMuMzkxNCAwLTYuMDc4MS0yLjY1LTYuMDc4MS02LjI4MzJzMi42ODY4LTYuMjg1MiA2LjA3ODEtNi4yODUyeiIgY29sb3I9IiMwMDAwMDAiIGNvbG9yLXJlbmRlcmluZz0iYXV0byIgZG9taW5hbnQtYmFzZWxpbmU9ImF1dG8iIGltYWdlLXJlbmRlcmluZz0iYXV0byIgc29saWQtY29sb3I9IiMwMDAwMDAiIHN0b3AtY29sb3I9IiMwMDAwMDAiIHN0eWxlPSJmb250LWZlYXR1cmUtc2V0dGluZ3M6bm9ybWFsO2ZvbnQtdmFyaWFudC1hbHRlcm5hdGVzOm5vcm1hbDtmb250LXZhcmlhbnQtY2Fwczpub3JtYWw7Zm9udC12YXJpYW50LWVhc3QtYXNpYW46bm9ybWFsO2ZvbnQtdmFyaWFudC1saWdhdHVyZXM6bm9ybWFsO2ZvbnQtdmFyaWFudC1udW1lcmljOm5vcm1hbDtmb250LXZhcmlhbnQtcG9zaXRpb246bm9ybWFsO2ZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOm5vcm1hbDtpbmxpbmUtc2l6ZTowO2lzb2xhdGlvbjphdXRvO21peC1ibGVuZC1tb2RlOm5vcm1hbDtzaGFwZS1tYXJnaW46MDtzaGFwZS1wYWRkaW5nOjA7dGV4dC1kZWNvcmF0aW9uLWNvbG9yOiMwMDAwMDA7dGV4dC1kZWNvcmF0aW9uLWxpbmU6bm9uZTt0ZXh0LWRlY29yYXRpb24tc3R5bGU6c29saWQ7dGV4dC1pbmRlbnQ6MDt0ZXh0LW9yaWVudGF0aW9uOm1peGVkO3RleHQtdHJhbnNmb3JtOm5vbmU7d2hpdGUtc3BhY2U6bm9ybWFsIi8+DQoJCTxwYXRoIGZpbGw9ImJsYWNrIiBzdHJva2U9Im5vbmUiIGQ9Im0xMTkuMDQgMTE0LjIyYzAgOC4wODU1LTYuNDYyMyAxNC42NC0xNC40MzQgMTQuNjQtNy45NzE3IDAtMTQuNDM0LTYuNTU0Ni0xNC40MzQtMTQuNjQtMWUtNiAtOC4wODU1IDYuNDYyMy0xNC42NCAxNC40MzQtMTQuNjQgNy45NzE3IDAgMTQuNDM0IDYuNTU0NiAxNC40MzQgMTQuNjR6IiBjb2xvcj0iIzAwMDAwMCIgY29sb3ItcmVuZGVyaW5nPSJhdXRvIiBkb21pbmFudC1iYXNlbGluZT0iYXV0byIgZmlsbC1vcGFjaXR5PSIuMDAzMTc0NiIgaW1hZ2UtcmVuZGVyaW5nPSJhdXRvIiBzb2xpZC1jb2xvcj0iIzAwMDAwMCIgc3RvcC1jb2xvcj0iIzAwMDAwMCIgc3R5bGU9ImZvbnQtZmVhdHVyZS1zZXR0aW5nczpub3JtYWw7Zm9udC12YXJpYW50LWFsdGVybmF0ZXM6bm9ybWFsO2ZvbnQtdmFyaWFudC1jYXBzOm5vcm1hbDtmb250LXZhcmlhbnQtZWFzdC1hc2lhbjpub3JtYWw7Zm9udC12YXJpYW50LWxpZ2F0dXJlczpub3JtYWw7Zm9udC12YXJpYW50LW51bWVyaWM6bm9ybWFsO2ZvbnQtdmFyaWFudC1wb3NpdGlvbjpub3JtYWw7Zm9udC12YXJpYXRpb24tc2V0dGluZ3M6bm9ybWFsO2lubGluZS1zaXplOjA7aXNvbGF0aW9uOmF1dG87bWl4LWJsZW5kLW1vZGU6bm9ybWFsO3NoYXBlLW1hcmdpbjowO3NoYXBlLXBhZGRpbmc6MDt0ZXh0LWRlY29yYXRpb24tY29sb3I6IzAwMDAwMDt0ZXh0LWRlY29yYXRpb24tbGluZTpub25lO3RleHQtZGVjb3JhdGlvbi1zdHlsZTpzb2xpZDt0ZXh0LWluZGVudDowO3RleHQtb3JpZW50YXRpb246bWl4ZWQ7dGV4dC10cmFuc2Zvcm06bm9uZTt3aGl0ZS1zcGFjZTpub3JtYWwiLz4NCgkJPHBhdGggZmlsbD0iYmxhY2siIHN0cm9rZT0ibm9uZSIgZD0ibTEwNC42MSA5MS4yMjFjLTEyLjU1MiAwLTIyLjc5MSAxMC40NTYtMjIuNzkxIDIyLjk5NC0yZS02IDEyLjUzOCAxMC4yMzkgMjIuOTk2IDIyLjc5MSAyMi45OTYgMTIuNTUyIDAgMjIuNzg5LTEwLjQ1OCAyMi43ODktMjIuOTk2IDAtMTIuNTM4LTEwLjIzNy0yMi45OTQtMjIuNzg5LTIyLjk5NHptMCAxNi43MTFjMy4zOTE0IDFlLTUgNi4wNzgxIDIuNjUgNi4wNzgxIDYuMjgzMnMtMi42ODY4IDYuMjg1Mi02LjA3ODEgNi4yODUyYy0zLjM5MTQgMC02LjA4MDEtMi42NTE5LTYuMDgwMS02LjI4NTItMWUtNiAtMy42MzMyIDIuNjg4Ny02LjI4MzIgNi4wODAxLTYuMjgzMnoiIGNvbG9yPSIjMDAwMDAwIiBjb2xvci1yZW5kZXJpbmc9ImF1dG8iIGRvbWluYW50LWJhc2VsaW5lPSJhdXRvIiBpbWFnZS1yZW5kZXJpbmc9ImF1dG8iIHNvbGlkLWNvbG9yPSIjMDAwMDAwIiBzdG9wLWNvbG9yPSIjMDAwMDAwIiBzdHlsZT0iZm9udC1mZWF0dXJlLXNldHRpbmdzOm5vcm1hbDtmb250LXZhcmlhbnQtYWx0ZXJuYXRlczpub3JtYWw7Zm9udC12YXJpYW50LWNhcHM6bm9ybWFsO2ZvbnQtdmFyaWFudC1lYXN0LWFzaWFuOm5vcm1hbDtmb250LXZhcmlhbnQtbGlnYXR1cmVzOm5vcm1hbDtmb250LXZhcmlhbnQtbnVtZXJpYzpub3JtYWw7Zm9udC12YXJpYW50LXBvc2l0aW9uOm5vcm1hbDtmb250LXZhcmlhdGlvbi1zZXR0aW5nczpub3JtYWw7aW5saW5lLXNpemU6MDtpc29sYXRpb246YXV0bzttaXgtYmxlbmQtbW9kZTpub3JtYWw7c2hhcGUtbWFyZ2luOjA7c2hhcGUtcGFkZGluZzowO3RleHQtZGVjb3JhdGlvbi1jb2xvcjojMDAwMDAwO3RleHQtZGVjb3JhdGlvbi1saW5lOm5vbmU7dGV4dC1kZWNvcmF0aW9uLXN0eWxlOnNvbGlkO3RleHQtaW5kZW50OjA7dGV4dC1vcmllbnRhdGlvbjptaXhlZDt0ZXh0LXRyYW5zZm9ybTpub25lO3doaXRlLXNwYWNlOm5vcm1hbCIvPg0KCTwvZz4NCjwvc3ZnPg0K - Failed to load resource: net::ERR_INVALID_URL
  • 3 occurences, only the last one shown
    • > GET request to /wp-admin/admin.php?page=leftsell-tools
    • > Network (severe)
    1/?ver=2.0.4 - Failed to load resource: net::ERR_NAME_NOT_RESOLVED

Optimizations

Plugin configuration 90% from 29 tests

readme.txt 94% from 16 tests

Perhaps the most important file in your plugin readme.txt gets parsed in order to generate the public listing of your plugin
Attributes that require attention:
  • Screenshots: Please a description for screenshot #11 in leftsell/assets to your readme.txt
You can look at the official readme.txt

leftsell/leftsell.php 85% from 13 tests

The principal PHP file in "LeftSell" v. 2.0.4 is loaded by WordPress automatically on each request
The following require your attention:
  • Requires at least: Required version does not match the one declared in readme.txt ("5.0.1" instead of "5.2")
  • Requires PHP: Required version does not match the one declared in readme.txt ("7.0" instead of "5.4")

Code Analysis 97% from 3 tests

File types Passed 1 test

🔸 Test weight: 35 | This is an overview of file extensions present in this plugin and a short test that no dangerous files are bundled with this plugin
Success! There were no dangerous files found in this plugin9,330 lines of code in 23 files:
LanguageFilesBlank linesComment linesLines of code
PHP133898445,504
PO File51,2351,2952,990
SVG211712
JavaScript20274
CSS18150

PHP code 50% from 2 tests

An short overview of logical lines of code, cyclomatic complexity, and other code metrics
It is recommended to fix the following
  • Method cyclomatic complexity has to be reduced to less than 100 (currently 140)
Cyclomatic complexity
Average complexity per logical line of code0.33
Average class complexity51.71
▷ Minimum class complexity1.00
▷ Maximum class complexity339.00
Average method complexity5.38
▷ Minimum method complexity1.00
▷ Maximum method complexity140.00
Code structure
Namespaces0
Interfaces0
Traits0
Classes14
▷ Abstract classes214.29%
▷ Concrete classes1285.71%
▷ Final classes00.00%
Methods165
▷ Static methods00.00%
▷ Public methods12475.15%
▷ Protected methods1810.91%
▷ Private methods2313.94%
Functions59
▷ Named functions5796.61%
▷ Anonymous functions23.39%
Constants7
▷ Global constants7100.00%
▷ Class constants00.00%
▷ Public constants00.00%

Plugin size Passed 2 tests

Image compression Passed 2 tests

All PNG images should be compressed to minimize bandwidth usage for end users
21 compressed PNG files occupy 0.03MB
Potential savings
Compression of 5 random PNG files using pngquant
FileSize - originalSize - compressedSavings
includes/images/nok.png0.50KB0.40KB▼ 20.66%
includes/images/edit.png0.85KB0.61KB▼ 28.34%
includes/images/blocked.png1.60KB1.45KB▼ 9.58%
includes/images/settings.png0.95KB1.04KB0.00%
includes/images/erase.png0.81KB0.86KB0.00%