---
layout: none
---
[
    {% for oem in site.collections %}
        {% assign name = oem.label %}
        {% case name %}
                {% when "faq" %}
                        {% continue %}
                {% when "app" %}
                        {% continue %}
                {% when "terms" %}
                        {% continue %}
                {% when "oem" %}
                        {% continue %}
                {% when "posts" %}
                        {% continue %}
        {% endcase %}
        {% for device in site[name] %}
               {
		 "title"    : "{{ device.title | escape }} -- {{ device.codename }}",
		 "url"      : "{{ device.url }}",
		 "dlfolder" : "{{ device.downloadfolder }}",
		 "recovery" : "{{ device.ddof }}"
                }{% unless lastouterloop == "true" and lastinnerloop == "true" and forloop.rindex == 1 %}, {% endunless %}
                {% if forloop.rindex == 1 %}
                        {% assign lastinnerloop = "true" %}
                {% endif %}
        {% endfor %}
        {% if forloop.rindex == 2 %}
                {% assign lastouterloop = "true" %}
        {% endif %}
   {% endfor %}

]
