aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rw-r--r--HACKING67
-rw-r--r--Makefile25
-rw-r--r--README.md8
-rwxr-xr-xchip-data/ati/drm_pciids.awk94
-rw-r--r--chip-data/ati/drm_pciids.json490
-rw-r--r--chip-data/chipNames.json561
-rw-r--r--chip-data/intel/Intel_GMA.csv69
-rw-r--r--chip-data/intel/Intel_GMA.html1638
-rw-r--r--chip-data/intel/Intel_GMA.odsbin0 -> 16069 bytes
-rw-r--r--data/XMLRPCdata.json8
-rw-r--r--data/bugzillalabelAbbreviations.json7
-rw-r--r--data/bugzillalabelNames.json7
-rw-r--r--data/lib/bzpage.js864
-rw-r--r--data/lib/color.js242
-rw-r--r--data/lib/jumpNextBug.js15
-rw-r--r--data/lib/logging-front.js88
-rw-r--r--data/lib/rhbzpage.js980
-rw-r--r--data/lib/skip-bug.js19
-rw-r--r--data/lib/util.js336
-rw-r--r--data/newUpstreamBug.json18
-rw-r--r--data/professionalProducts.json4
-rw-r--r--data/queryUpstreamBug.json26
-rw-r--r--docs/bzpage.md0
-rw-r--r--docs/rhbzpage.md0
-rw-r--r--docs/xhr.md82
-rw-r--r--icon.pngbin0 -> 2352 bytes
-rw-r--r--jsons/BugZappers_data-prototype.json280
-rw-r--r--jsons/Config_data.json132
-rw-r--r--jsons/Config_gnome.json117
-rw-r--r--jsons/Config_mozilla.json95
-rw-r--r--jsons/bugzilla-comments.json97
-rw-r--r--lib/libbugzilla.js399
-rw-r--r--lib/logger.js135
-rw-r--r--lib/main.js224
-rw-r--r--lib/prompts.js118
-rw-r--r--lib/util.js77
-rw-r--r--lib/xmlrpc.js188
-rw-r--r--package.json18
-rw-r--r--tests/pagemod-test-helpers.js56
-rw-r--r--tests/test-color.js31
-rw-r--r--tests/test-match-pattern.js11
-rw-r--r--tests/test-pageMod.js141
-rw-r--r--tests/test-util.js214
-rw-r--r--tests/test-xmlrpc.js32
-rw-r--r--update.rdf295
46 files changed, 8246 insertions, 64 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..cae549e
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+*~
+*.xpi
diff --git a/HACKING b/HACKING
new file mode 100644
index 0000000..0d2cdfe
--- /dev/null
+++ b/HACKING
@@ -0,0 +1,67 @@
+First attempt to create coding guidelines
+-----------------------------------------
+
+1) Generally formatting style should be roughly similar to Java style
+ (similar to K&R), so that function looks like this:
+
+ function Foo (bar, baz) {
+ if (bar) {
+ console.log("bar!");
+ return baz / 2;
+ } else {
+ console.log("no bar!");
+ return baz * 2;
+ }
+ }
+
+2) Indentation is 4 spaces, no TABs
+
+3) Generally I would like to follow formatting and other advice by jslint
+ (http://www.jslint.com/). However, I don't want to be bound by sometimes
+ eccentric opinions of Douglas Crockford, more I care about checking
+ for missing semicolons, bad spacing, etc. However, in order to make
+ jslint at least partially work, I need to be quite conservative in
+ using any non-standard constructs (Douglas strictly refused to add
+ any non-standard pieces of syntax, particularly let, when I emailed
+ him about it).
+ It follows that let and other non-ECMAScript construcsts shouldn't be used
+ or at least sparingly and only in the time of dire need.
+
+4) Object literals should be used for pure data objects only. Instead of
+
+ var Foo.prototype = {
+ bar: function bar () {
+ console.log("We are in bar! Yuchuuu!!!");
+ },
+ baz: function baz () {
+ console.log("We are in baz :(");
+ }
+ };
+
+ write rather two functions separately as in
+
+ Foo.prototype.bar = function bar () {
+ console.log("We are in bar! Yay!!!");
+ };
+
+ Foo.prototype.baz = function baz () {
+ console.log("We are in baz :( Shooot.");
+ };
+
+ The latter is in my opinion more readable and works better in editors
+ I use (gedit, scribes, and eclipse).
+
+5) Use plain Javascript only. This is not multi-platform (meaning mult-browser)
+ script so no Javascript libraries (e.g., jQuery, Dojo, etc.) should be
+ used.
+ On the other hand, we don't have to bound ourselves to compatibility
+ with anything else than platforms Jetpack runs on ... which is currently
+ (for -prototype) FF 3.5 and for Jetpack-SDK it will be probably even
+ higher when it is going to be actually released. So, instead of
+ hopeless non-standard constructs of jQuery, element.querySelector (with
+ standard CSS3 selector, which is NOT the same as what's used in
+ jQuery; see http://www.w3.org/TR/2009/PR-css3-selectors-20091215/) and other
+ advanced Javascript functions can be used.
+
+Any other items could be added after discussion and when a need to decide
+some pressing issue happens.
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..6087a94
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,25 @@
+WEBDIR=/home/matej/Dokumenty/website/fedorahosted/
+
+all: install
+
+install: local-install
+ websync
+
+local-install: bugzilla-triage.xpi
+ rsync -av bugzilla-triage.xpi $(WEBDIR)
+ rsync -av jsons/Config_data.json $(WEBDIR)
+
+bugzilla-triage.xpi: package.json lib/*.js docs/*
+ cfx xpi ;\
+ unzip -qqo bugzilla-triage.xpi install.rdf ;\
+ sed -i -e \
+ '/em:creator/a\
+ <em:iconURL>https://fedorahosted.org/released/bugzilla-triage-scripts/icon.png</em:iconURL>\
+ <em:updateURL>https://fedorahosted.org/released/bugzilla-triage-scripts/update.rdf</em:updateURL>\
+ ' \
+ install.rdf ;\
+ zip -9rmqT bugzilla-triage.xpi install.rdf ;\
+ make -C $(WEBDIR)
+
+clean:
+ find . -name \*~ -print -delete
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..43fa7dd
--- /dev/null
+++ b/README.md
@@ -0,0 +1,8 @@
+Firefox addon supporting bug triage on bugzilla
+====================================
+
+Set of buttons and other functionality added to bugzilla
+show_bug.cgi pages to make bug triage easier.
+
+For more description see the [author’s
+blog](http://mcepl.blogspot.com/).
diff --git a/chip-data/ati/drm_pciids.awk b/chip-data/ati/drm_pciids.awk
new file mode 100755
index 0000000..898f496
--- /dev/null
+++ b/chip-data/ati/drm_pciids.awk
@@ -0,0 +1,94 @@
+#!/usr/bin/gawk -f
+
+BEGIN {
+ FS=", "
+
+ # NOTE: please edit flags template as well
+ flag_letter["RADEON_IS_MOBILITY"] = "m"
+ flag_letter["RADEON_NEW_MEMMAP"] = "M"
+ flag_letter["RADEON_IS_IGP"] = "i"
+ flag_letter["RADEON_IS_IGPGART"] = "I"
+ flag_letter["RADEON_SINGLE_CRTC"] = "c"
+ flags_template = "mMiIc"
+ first_line = ""
+ printf("{\n")
+}
+
+function error(f, s1, s2) {
+ printf("%s:%d: " f "\n", FILENAME, NR, s1, s2) >"/dev/stderr"
+ error_code = 1
+}
+
+function flag_to_letter(f_name)
+{
+ if (f_name in flag_letter) {
+ return flag_letter[f_name]
+ } else {
+ error("unknown flag %s%s", f_name)
+ return f_name
+ }
+}
+
+function format_flags(f_code, i, n, l, out) {
+ n = length(flags_template)
+ for (i=1; i<=n; i++) {
+ l = substr(flags_template, i, 1)
+ out = out f_code[l]
+ delete f_code[l]
+ }
+ for (l in f_code) {
+ out = out f_code[l]
+ if (length(l)==1)
+ error("flag \"%s\" missing from flags_template", l, "")
+ }
+ if (length(out)>0) {
+ out = ",\"" out "\""
+ }
+ return out
+}
+
+/^[[:blank:]]+{0x/ {
+ sub(/^[[:blank:]]+{/,"")
+ sub(/},[[:blank:]]*\\$/,"")
+
+ id_vendor = $1; sub(/^0x/, "", id_vendor)
+ id_type = $2; sub(/^0x/, "", id_type)
+
+ flags = $7
+
+ if (flags == "0")
+ next
+
+ n_flag_arr = split(flags, flag_arr, "|")
+ first_flag = flag_arr[1]
+ delete f_code
+ for (i=2; i<=n_flag_arr; i++) {
+ l = flag_to_letter(flag_arr[i])
+ f_code[l] = l
+ }
+
+ formatted_flags = format_flags(f_code)
+
+ # second param to gensub is the replacement text:
+ ## chip_type = tolower(gensub(/^CHIP_/, "", "", first_flag))
+ chip_type = gensub(/^CHIP_/, "", "", first_flag)
+
+ if (length(first_line) > 0) {
+ printf(",\n")
+ } else {
+ first_line = "TRUE"
+ }
+ if ((chip_type in types) && types[chip_type] != first_flag)
+ error("chip name collision: %s vs. %s", \
+ types[chip_type], first_flag)
+
+ types[chip_type] = first_flag
+
+ printf("\t\"%s,%s\":[\"%s\"%s]", toupper(id_vendor), toupper(id_type),\
+ chip_type, formatted_flags)
+}
+
+END {
+ printf("\n}\n")
+ exit error_code
+}
diff --git a/chip-data/ati/drm_pciids.json b/chip-data/ati/drm_pciids.json
new file mode 100644
index 0000000..2db2758
--- /dev/null
+++ b/chip-data/ati/drm_pciids.json
@@ -0,0 +1,490 @@
+{
+ "1002,3150":["RV380","m"],
+ "1002,3152":["RV380","mM"],
+ "1002,3154":["RV380","mM"],
+ "1002,3155":["RV380","mM"],
+ "1002,3E50":["RV380","M"],
+ "1002,3E54":["RV380","M"],
+ "1002,4136":["RS100","i"],
+ "1002,4137":["RS200","i"],
+ "1002,4144":["R300"],
+ "1002,4145":["R300"],
+ "1002,4146":["R300"],
+ "1002,4147":["R300"],
+ "1002,4148":["R350"],
+ "1002,4149":["R350"],
+ "1002,414A":["R350"],
+ "1002,414B":["R350"],
+ "1002,4150":["RV350"],
+ "1002,4151":["RV350"],
+ "1002,4152":["RV350"],
+ "1002,4153":["RV350"],
+ "1002,4154":["RV350"],
+ "1002,4155":["RV350"],
+ "1002,4156":["RV350"],
+ "1002,4237":["RS200","i"],
+ "1002,4242":["R200"],
+ "1002,4336":["RS100","mi"],
+ "1002,4337":["RS200","mi"],
+ "1002,4437":["RS200","mi"],
+ "1002,4966":["RV250"],
+ "1002,4967":["RV250"],
+ "1002,4A48":["R420","M"],
+ "1002,4A49":["R420","M"],
+ "1002,4A4A":["R420","M"],
+ "1002,4A4B":["R420","M"],
+ "1002,4A4C":["R420","M"],
+ "1002,4A4D":["R420","M"],
+ "1002,4A4E":["R420","mM"],
+ "1002,4A4F":["R420","M"],
+ "1002,4A50":["R420","M"],
+ "1002,4A54":["R420","M"],
+ "1002,4B48":["R420","M"],
+ "1002,4B49":["R420","M"],
+ "1002,4B4A":["R420","M"],
+ "1002,4B4B":["R420","M"],
+ "1002,4B4C":["R420","M"],
+ "1002,4C57":["RV200","m"],
+ "1002,4C58":["RV200","m"],
+ "1002,4C59":["RV100","m"],
+ "1002,4C5A":["RV100","m"],
+ "1002,4C64":["RV250","m"],
+ "1002,4C66":["RV250","m"],
+ "1002,4C67":["RV250","m"],
+ "1002,4E44":["R300"],
+ "1002,4E45":["R300"],
+ "1002,4E46":["R300"],
+ "1002,4E47":["R300"],
+ "1002,4E48":["R350"],
+ "1002,4E49":["R350"],
+ "1002,4E4A":["R350"],
+ "1002,4E4B":["R350"],
+ "1002,4E50":["RV350","m"],
+ "1002,4E51":["RV350","m"],
+ "1002,4E52":["RV350","m"],
+ "1002,4E53":["RV350","m"],
+ "1002,4E54":["RV350","m"],
+ "1002,4E56":["RV350","m"],
+ "1002,5144":["R100","c"],
+ "1002,5145":["R100","c"],
+ "1002,5146":["R100","c"],
+ "1002,5147":["R100","c"],
+ "1002,5148":["R200"],
+ "1002,514C":["R200"],
+ "1002,514D":["R200"],
+ "1002,5157":["RV200"],
+ "1002,5158":["RV200"],
+ "1002,5159":["RV100"],
+ "1002,515A":["RV100"],
+ "1002,515E":["RV100","c"],
+ "1002,5460":["RV380","m"],
+ "1002,5462":["RV380","m"],
+ "1002,5464":["RV380","m"],
+ "1002,5548":["R423","M"],
+ "1002,5549":["R423","M"],
+ "1002,554A":["R423","M"],
+ "1002,554B":["R423","M"],
+ "1002,554C":["R423","M"],
+ "1002,554D":["R423","M"],
+ "1002,554E":["R423","M"],
+ "1002,554F":["R423","M"],
+ "1002,5550":["R423","M"],
+ "1002,5551":["R423","M"],
+ "1002,5552":["R423","M"],
+ "1002,5554":["R423","M"],
+ "1002,564A":["RV410","mM"],
+ "1002,564B":["RV410","mM"],
+ "1002,564F":["RV410","mM"],
+ "1002,5652":["RV410","mM"],
+ "1002,5653":["RV410","mM"],
+ "1002,5657":["RV410","M"],
+ "1002,5834":["RS300","i"],
+ "1002,5835":["RS300","mi"],
+ "1002,5954":["RS480","miI"],
+ "1002,5955":["RS480","miI"],
+ "1002,5974":["RS480","miI"],
+ "1002,5975":["RS480","miI"],
+ "1002,5960":["RV280"],
+ "1002,5961":["RV280"],
+ "1002,5962":["RV280"],
+ "1002,5964":["RV280"],
+ "1002,5965":["RV280"],
+ "1002,5969":["RV100","c"],
+ "1002,5A41":["RS400","iI"],
+ "1002,5A42":["RS400","miI"],
+ "1002,5A61":["RS400","iI"],
+ "1002,5A62":["RS400","miI"],
+ "1002,5B60":["RV380","M"],
+ "1002,5B62":["RV380","M"],
+ "1002,5B63":["RV380","M"],
+ "1002,5B64":["RV380","M"],
+ "1002,5B65":["RV380","M"],
+ "1002,5C61":["RV280","m"],
+ "1002,5C63":["RV280","m"],
+ "1002,5D48":["R423","mM"],
+ "1002,5D49":["R423","mM"],
+ "1002,5D4A":["R423","mM"],
+ "1002,5D4C":["R423","M"],
+ "1002,5D4D":["R423","M"],
+ "1002,5D4E":["R423","M"],
+ "1002,5D4F":["R423","M"],
+ "1002,5D50":["R423","M"],
+ "1002,5D52":["R423","M"],
+ "1002,5D57":["R423","M"],
+ "1002,5E48":["RV410","M"],
+ "1002,5E4A":["RV410","M"],
+ "1002,5E4B":["RV410","M"],
+ "1002,5E4C":["RV410","M"],
+ "1002,5E4D":["RV410","M"],
+ "1002,5E4F":["RV410","M"],
+ "1002,6720":["BARTS","mM"],
+ "1002,6721":["BARTS","mM"],
+ "1002,6722":["BARTS","M"],
+ "1002,6723":["BARTS","M"],
+ "1002,6724":["BARTS","mM"],
+ "1002,6725":["BARTS","mM"],
+ "1002,6726":["BARTS","M"],
+ "1002,6727":["BARTS","M"],
+ "1002,6728":["BARTS","M"],
+ "1002,6729":["BARTS","M"],
+ "1002,6738":["BARTS","M"],
+ "1002,6739":["BARTS","M"],
+ "1002,6740":["TURKS","mM"],
+ "1002,6741":["TURKS","mM"],
+ "1002,6742":["TURKS","mM"],
+ "1002,6743":["TURKS","mM"],
+ "1002,6744":["TURKS","mM"],
+ "1002,6745":["TURKS","mM"],
+ "1002,6746":["TURKS","M"],
+ "1002,6747":["TURKS","M"],
+ "1002,6748":["TURKS","M"],
+ "1002,6749":["TURKS","M"],
+ "1002,6750":["TURKS","M"],
+ "1002,6758":["TURKS","M"],
+ "1002,6759":["TURKS","M"],
+ "1002,6760":["CAICOS","mM"],
+ "1002,6761":["CAICOS","mM"],
+ "1002,6762":["CAICOS","M"],
+ "1002,6763":["CAICOS","M"],
+ "1002,6764":["CAICOS","mM"],
+ "1002,6765":["CAICOS","mM"],
+ "1002,6766":["CAICOS","M"],
+ "1002,6767":["CAICOS","M"],
+ "1002,6768":["CAICOS","M"],
+ "1002,6770":["CAICOS","M"],
+ "1002,6779":["CAICOS","M"],
+ "1002,6880":["CYPRESS","mM"],
+ "1002,6888":["CYPRESS","M"],
+ "1002,6889":["CYPRESS","M"],
+ "1002,688A":["CYPRESS","M"],
+ "1002,688C":["CYPRESS","M"],
+ "1002,688D":["CYPRESS","M"],
+ "1002,6898":["CYPRESS","M"],
+ "1002,6899":["CYPRESS","M"],
+ "1002,689C":["HEMLOCK","M"],
+ "1002,689D":["HEMLOCK","M"],
+ "1002,689E":["CYPRESS","M"],
+ "1002,68A0":["JUNIPER","mM"],
+ "1002,68A1":["JUNIPER","mM"],
+ "1002,68A8":["JUNIPER","M"],
+ "1002,68A9":["JUNIPER","M"],
+ "1002,68B0":["JUNIPER","mM"],
+ "1002,68B8":["JUNIPER","M"],
+ "1002,68B9":["JUNIPER","M"],
+ "1002,68BE":["JUNIPER","M"],
+ "1002,68C0":["REDWOOD","mM"],
+ "1002,68C1":["REDWOOD","mM"],
+ "1002,68C7":["REDWOOD","mM"],
+ "1002,68C8":["REDWOOD","M"],
+ "1002,68C9":["REDWOOD","M"],
+ "1002,68D8":["REDWOOD","M"],
+ "1002,68D9":["REDWOOD","M"],
+ "1002,68DA":["REDWOOD","M"],
+ "1002,68DE":["REDWOOD","M"],
+ "1002,68E0":["CEDAR","mM"],
+ "1002,68E1":["CEDAR","mM"],
+ "1002,68E4":["CEDAR","mM"],
+ "1002,68E5":["CEDAR","mM"],
+ "1002,68E8":["CEDAR","M"],
+ "1002,68E9":["CEDAR","M"],
+ "1002,68F1":["CEDAR","M"],
+ "1002,68F2":["CEDAR","M"],
+ "1002,68F8":["CEDAR","M"],
+ "1002,68F9":["CEDAR","M"],
+ "1002,68FE":["CEDAR","M"],
+ "1002,7100":["R520","M"],
+ "1002,7101":["R520","mM"],
+ "1002,7102":["R520","mM"],
+ "1002,7103":["R520","mM"],
+ "1002,7104":["R520","M"],
+ "1002,7105":["R520","M"],
+ "1002,7106":["R520","mM"],
+ "1002,7108":["R520","M"],
+ "1002,7109":["R520","M"],
+ "1002,710A":["R520","M"],
+ "1002,710B":["R520","M"],
+ "1002,710C":["R520","M"],
+ "1002,710E":["R520","M"],
+ "1002,710F":["R520","M"],
+ "1002,7140":["RV515","M"],
+ "1002,7141":["RV515","M"],
+ "1002,7142":["RV515","M"],
+ "1002,7143":["RV515","M"],
+ "1002,7144":["RV515","mM"],
+ "1002,7145":["RV515","mM"],
+ "1002,7146":["RV515","M"],
+ "1002,7147":["RV515","M"],
+ "1002,7149":["RV515","mM"],
+ "1002,714A":["RV515","mM"],
+ "1002,714B":["RV515","mM"],
+ "1002,714C":["RV515","mM"],
+ "1002,714D":["RV515","M"],
+ "1002,714E":["RV515","M"],
+ "1002,714F":["RV515","M"],
+ "1002,7151":["RV515","M"],
+ "1002,7152":["RV515","M"],
+ "1002,7153":["RV515","M"],
+ "1002,715E":["RV515","M"],
+ "1002,715F":["RV515","M"],
+ "1002,7180":["RV515","M"],
+ "1002,7181":["RV515","M"],
+ "1002,7183":["RV515","M"],
+ "1002,7186":["RV515","mM"],
+ "1002,7187":["RV515","M"],
+ "1002,7188":["RV515","mM"],
+ "1002,718A":["RV515","mM"],
+ "1002,718B":["RV515","mM"],
+ "1002,718C":["RV515","mM"],
+ "1002,718D":["RV515","mM"],
+ "1002,718F":["RV515","M"],
+ "1002,7193":["RV515","M"],
+ "1002,7196":["RV515","mM"],
+ "1002,719B":["RV515","M"],
+ "1002,719F":["RV515","M"],
+ "1002,71C0":["RV530","M"],
+ "1002,71C1":["RV530","M"],
+ "1002,71C2":["RV530","M"],
+ "1002,71C3":["RV530","M"],
+ "1002,71C4":["RV530","mM"],
+ "1002,71C5":["RV530","mM"],
+ "1002,71C6":["RV530","M"],
+ "1002,71C7":["RV530","M"],
+ "1002,71CD":["RV530","M"],
+ "1002,71CE":["RV530","M"],
+ "1002,71D2":["RV530","M"],
+ "1002,71D4":["RV530","mM"],
+ "1002,71D5":["RV530","mM"],
+ "1002,71D6":["RV530","mM"],
+ "1002,71DA":["RV530","M"],
+ "1002,71DE":["RV530","mM"],
+ "1002,7200":["RV515","M"],
+ "1002,7210":["RV515","mM"],
+ "1002,7211":["RV515","mM"],
+ "1002,7240":["R580","M"],
+ "1002,7243":["R580","M"],
+ "1002,7244":["R580","M"],
+ "1002,7245":["R580","M"],
+ "1002,7246":["R580","M"],
+ "1002,7247":["R580","M"],
+ "1002,7248":["R580","M"],
+ "1002,7249":["R580","M"],
+ "1002,724A":["R580","M"],
+ "1002,724B":["R580","M"],
+ "1002,724C":["R580","M"],
+ "1002,724D":["R580","M"],
+ "1002,724E":["R580","M"],
+ "1002,724F":["R580","M"],
+ "1002,7280":["RV570","M"],
+ "1002,7281":["RV560","M"],
+ "1002,7283":["RV560","M"],
+ "1002,7284":["R580","mM"],
+ "1002,7287":["RV560","M"],
+ "1002,7288":["RV570","M"],
+ "1002,7289":["RV570","M"],
+ "1002,728B":["RV570","M"],
+ "1002,728C":["RV570","M"],
+ "1002,7290":["RV560","M"],
+ "1002,7291":["RV560","M"],
+ "1002,7293":["RV560","M"],
+ "1002,7297":["RV560","M"],
+ "1002,7834":["RS300","Mi"],
+ "1002,7835":["RS300","mMi"],
+ "1002,791E":["RS690","MiI"],
+ "1002,791F":["RS690","MiI"],
+ "1002,793F":["RS600","Mi"],
+ "1002,7941":["RS600","Mi"],
+ "1002,7942":["RS600","Mi"],
+ "1002,796C":["RS740","MiI"],
+ "1002,796D":["RS740","MiI"],
+ "1002,796E":["RS740","MiI"],
+ "1002,796F":["RS740","MiI"],
+ "1002,9400":["R600","M"],
+ "1002,9401":["R600","M"],
+ "1002,9402":["R600","M"],
+ "1002,9403":["R600","M"],
+ "1002,9405":["R600","M"],
+ "1002,940A":["R600","M"],
+ "1002,940B":["R600","M"],
+ "1002,940F":["R600","M"],
+ "1002,94A0":["RV740","mM"],
+ "1002,94A1":["RV740","mM"],
+ "1002,94A3":["RV740","mM"],
+ "1002,94B1":["RV740","M"],
+ "1002,94B3":["RV740","M"],
+ "1002,94B4":["RV740","M"],
+ "1002,94B5":["RV740","M"],
+ "1002,94B9":["RV740","mM"],
+ "1002,9440":["RV770","M"],
+ "1002,9441":["RV770","M"],
+ "1002,9442":["RV770","M"],
+ "1002,9443":["RV770","M"],
+ "1002,9444":["RV770","M"],
+ "1002,9446":["RV770","M"],
+ "1002,944A":["RV770","mM"],
+ "1002,944B":["RV770","mM"],
+ "1002,944C":["RV770","M"],
+ "1002,944E":["RV770","M"],
+ "1002,9450":["RV770","M"],
+ "1002,9452":["RV770","M"],
+ "1002,9456":["RV770","M"],
+ "1002,945A":["RV770","mM"],
+ "1002,945B":["RV770","mM"],
+ "1002,945E":["RV770","mM"],
+ "1002,9460":["RV770","M"],
+ "1002,9462":["RV770","M"],
+ "1002,946A":["RV770","mM"],
+ "1002,946B":["RV770","mM"],
+ "1002,947A":["RV770","mM"],
+ "1002,947B":["RV770","mM"],
+ "1002,9480":["RV730","mM"],
+ "1002,9487":["RV730","M"],
+ "1002,9488":["RV730","mM"],
+ "1002,9489":["RV730","mM"],
+ "1002,948A":["RV730","mM"],
+ "1002,948F":["RV730","M"],
+ "1002,9490":["RV730","M"],
+ "1002,9491":["RV730","mM"],
+ "1002,9495":["RV730","M"],
+ "1002,9498":["RV730","M"],
+ "1002,949C":["RV730","M"],
+ "1002,949E":["RV730","M"],
+ "1002,949F":["RV730","M"],
+ "1002,94C0":["RV610","M"],
+ "1002,94C1":["RV610","M"],
+ "1002,94C3":["RV610","M"],
+ "1002,94C4":["RV610","M"],
+ "1002,94C5":["RV610","M"],
+ "1002,94C6":["RV610","M"],
+ "1002,94C7":["RV610","M"],
+ "1002,94C8":["RV610","mM"],
+ "1002,94C9":["RV610","mM"],
+ "1002,94CB":["RV610","mM"],
+ "1002,94CC":["RV610","M"],
+ "1002,94CD":["RV610","M"],
+ "1002,9500":["RV670","M"],
+ "1002,9501":["RV670","M"],
+ "1002,9504":["RV670","mM"],
+ "1002,9505":["RV670","M"],
+ "1002,9506":["RV670","mM"],
+ "1002,9507":["RV670","M"],
+ "1002,9508":["RV670","mM"],
+ "1002,9509":["RV670","mM"],
+ "1002,950F":["RV670","M"],
+ "1002,9511":["RV670","M"],
+ "1002,9515":["RV670","M"],
+ "1002,9517":["RV670","M"],
+ "1002,9519":["RV670","M"],
+ "1002,9540":["RV710","M"],
+ "1002,9541":["RV710","M"],
+ "1002,9542":["RV710","M"],
+ "1002,954E":["RV710","M"],
+ "1002,954F":["RV710","M"],
+ "1002,9552":["RV710","mM"],
+ "1002,9553":["RV710","mM"],
+ "1002,9555":["RV710","mM"],
+ "1002,9557":["RV710","mM"],
+ "1002,955F":["RV710","mM"],
+ "1002,9580":["RV630","M"],
+ "1002,9581":["RV630","mM"],
+ "1002,9583":["RV630","mM"],
+ "1002,9586":["RV630","M"],
+ "1002,9587":["RV630","M"],
+ "1002,9588":["RV630","M"],
+ "1002,9589":["RV630","M"],
+ "1002,958A":["RV630","M"],
+ "1002,958B":["RV630","mM"],
+ "1002,958C":["RV630","M"],
+ "1002,958D":["RV630","M"],
+ "1002,958E":["RV630","M"],
+ "1002,958F":["RV630","mM"],
+ "1002,9590":["RV635","M"],
+ "1002,9591":["RV635","mM"],
+ "1002,9593":["RV635","mM"],
+ "1002,9595":["RV635","mM"],
+ "1002,9596":["RV635","M"],
+ "1002,9597":["RV635","M"],
+ "1002,9598":["RV635","M"],
+ "1002,9599":["RV635","M"],
+ "1002,959B":["RV635","mM"],
+ "1002,95C0":["RV620","M"],
+ "1002,95C2":["RV620","mM"],
+ "1002,95C4":["RV620","mM"],
+ "1002,95C5":["RV620","M"],
+ "1002,95C6":["RV620","M"],
+ "1002,95C7":["RV620","M"],
+ "1002,95C9":["RV620","M"],
+ "1002,95CC":["RV620","M"],
+ "1002,95CD":["RV620","M"],
+ "1002,95CE":["RV620","M"],
+ "1002,95CF":["RV620","M"],
+ "1002,9610":["RS780","Mi"],
+ "1002,9611":["RS780","Mi"],
+ "1002,9612":["RS780","Mi"],
+ "1002,9613":["RS780","Mi"],
+ "1002,9614":["RS780","Mi"],
+ "1002,9615":["RS780","Mi"],
+ "1002,9616":["RS780","Mi"],
+ "1002,9710":["RS880","Mi"],
+ "1002,9711":["RS880","Mi"],
+ "1002,9712":["RS880","mMi"],
+ "1002,9713":["RS880","mMi"],
+ "1002,9714":["RS880","Mi"],
+ "1002,9715":["RS880","Mi"],
+ "1002,9802":["PALM","Mi"],
+ "1002,9803":["PALM","Mi"],
+ "1002,9804":["PALM","Mi"],
+ "1002,9805":["PALM","Mi"],
+ "102B,0520":["MGA_CARD_TYPE_G200"],
+ "102B,0521":["MGA_CARD_TYPE_G200"],
+ "102B,0525":["MGA_CARD_TYPE_G400"],
+ "102B,2527":["MGA_CARD_TYPE_G550"],
+ "1039,6330":["SIS_CHIP_315"],
+ "18CA,0040":["SIS_CHIP_315"],
+ "18CA,0042":["SIS_CHIP_315"],
+ "1106,3118":["VIA_PRO_GROUP_A"],
+ "1106,3230":["VIA_DX9_0"],
+ "1106,3157":["VIA_PRO_GROUP_A"],
+ "5333,8A20":["S3_SAVAGE3D"],
+ "5333,8A21":["S3_SAVAGE3D"],
+ "5333,8A22":["S3_SAVAGE4"],
+ "5333,8A23":["S3_SAVAGE4"],
+ "5333,8C10":["S3_SAVAGE_MX"],
+ "5333,8C11":["S3_SAVAGE_MX"],
+ "5333,8C12":["S3_SAVAGE_MX"],
+ "5333,8C13":["S3_SAVAGE_MX"],
+ "5333,8C22":["S3_SUPERSAVAGE"],
+ "5333,8C24":["S3_SUPERSAVAGE"],
+ "5333,8C26":["S3_SUPERSAVAGE"],
+ "5333,8C2A":["S3_SUPERSAVAGE"],
+ "5333,8C2B":["S3_SUPERSAVAGE"],
+ "5333,8C2C":["S3_SUPERSAVAGE"],
+ "5333,8C2D":["S3_SUPERSAVAGE"],
+ "5333,8C2E":["S3_SUPERSAVAGE"],
+ "5333,8C2F":["S3_SUPERSAVAGE"],
+ "5333,8A25":["S3_PROSAVAGE"],
+ "5333,8A26":["S3_PROSAVAGE"],
+ "5333,8D01":["S3_TWISTER"],
+ "5333,8D02":["S3_TWISTER"],
+ "5333,8D03":["S3_PROSAVAGEDDR"],
+ "5333,8D04":["S3_PROSAVAGEDDR"]
+}
diff --git a/chip-data/chipNames.json b/chip-data/chipNames.json
new file mode 100644
index 0000000..b9bbc7c
--- /dev/null
+++ b/chip-data/chipNames.json
@@ -0,0 +1,561 @@
+{
+ "1002,3150":["RV380","m"],
+ "1002,3152":["RV380","mM"],
+ "1002,3154":["RV380","mM"],
+ "1002,3155":["RV380","mM"],
+ "1002,3E50":["RV380","M"],
+ "1002,3E54":["RV380","M"],
+ "1002,4136":["RS100","i"],
+ "1002,4137":["RS200","i"],
+ "1002,4144":["R300"],
+ "1002,4145":["R300"],
+ "1002,4146":["R300"],
+ "1002,4147":["R300"],
+ "1002,4148":["R350"],
+ "1002,4149":["R350"],
+ "1002,414A":["R350"],
+ "1002,414B":["R350"],
+ "1002,4150":["RV350"],
+ "1002,4151":["RV350"],
+ "1002,4152":["RV350"],
+ "1002,4153":["RV350"],
+ "1002,4154":["RV350"],
+ "1002,4155":["RV350"],
+ "1002,4156":["RV350"],
+ "1002,4237":["RS200","i"],
+ "1002,4242":["R200"],
+ "1002,4336":["RS100","mi"],
+ "1002,4337":["RS200","mi"],
+ "1002,4437":["RS200","mi"],
+ "1002,4966":["RV250"],
+ "1002,4967":["RV250"],
+ "1002,4A48":["R420","M"],
+ "1002,4A49":["R420","M"],
+ "1002,4A4A":["R420","M"],
+ "1002,4A4B":["R420","M"],
+ "1002,4A4C":["R420","M"],
+ "1002,4A4D":["R420","M"],
+ "1002,4A4E":["R420","mM"],
+ "1002,4A4F":["R420","M"],
+ "1002,4A50":["R420","M"],
+ "1002,4A54":["R420","M"],
+ "1002,4B48":["R420","M"],
+ "1002,4B49":["R420","M"],
+ "1002,4B4A":["R420","M"],
+ "1002,4B4B":["R420","M"],
+ "1002,4B4C":["R420","M"],
+ "1002,4C57":["RV200","m"],
+ "1002,4C58":["RV200","m"],
+ "1002,4C59":["RV100","m"],
+ "1002,4C5A":["RV100","m"],
+ "1002,4C64":["RV250","m"],
+ "1002,4C66":["RV250","m"],
+ "1002,4C67":["RV250","m"],
+ "1002,4E44":["R300"],
+ "1002,4E45":["R300"],
+ "1002,4E46":["R300"],
+ "1002,4E47":["R300"],
+ "1002,4E48":["R350"],
+ "1002,4E49":["R350"],
+ "1002,4E4A":["R350"],
+ "1002,4E4B":["R350"],
+ "1002,4E50":["RV350","m"],
+ "1002,4E51":["RV350","m"],
+ "1002,4E52":["RV350","m"],
+ "1002,4E53":["RV350","m"],
+ "1002,4E54":["RV350","m"],
+ "1002,4E56":["RV350","m"],
+ "1002,5144":["R100","c"],
+ "1002,5145":["R100","c"],
+ "1002,5146":["R100","c"],
+ "1002,5147":["R100","c"],
+ "1002,5148":["R200"],
+ "1002,514C":["R200"],
+ "1002,514D":["R200"],
+ "1002,5157":["RV200"],
+ "1002,5158":["RV200"],
+ "1002,5159":["RV100"],
+ "1002,515A":["RV100"],
+ "1002,515E":["RV100","c"],
+ "1002,5460":["RV380","m"],
+ "1002,5462":["RV380","m"],
+ "1002,5464":["RV380","m"],
+ "1002,5548":["R423","M"],
+ "1002,5549":["R423","M"],
+ "1002,554A":["R423","M"],
+ "1002,554B":["R423","M"],
+ "1002,554C":["R423","M"],
+ "1002,554D":["R423","M"],
+ "1002,554E":["R423","M"],
+ "1002,554F":["R423","M"],
+ "1002,5550":["R423","M"],
+ "1002,5551":["R423","M"],
+ "1002,5552":["R423","M"],
+ "1002,5554":["R423","M"],
+ "1002,564A":["RV410","mM"],
+ "1002,564B":["RV410","mM"],
+ "1002,564F":["RV410","mM"],
+ "1002,5652":["RV410","mM"],
+ "1002,5653":["RV410","mM"],
+ "1002,5657":["RV410","M"],
+ "1002,5834":["RS300","i"],
+ "1002,5835":["RS300","mi"],
+ "1002,5954":["RS480","miI"],
+ "1002,5955":["RS480","miI"],
+ "1002,5974":["RS480","miI"],
+ "1002,5975":["RS480","miI"],
+ "1002,5960":["RV280"],
+ "1002,5961":["RV280"],
+ "1002,5962":["RV280"],
+ "1002,5964":["RV280"],
+ "1002,5965":["RV280"],
+ "1002,5969":["RV100","c"],
+ "1002,5A41":["RS400","iI"],
+ "1002,5A42":["RS400","miI"],
+ "1002,5A61":["RS400","iI"],
+ "1002,5A62":["RS400","miI"],
+ "1002,5B60":["RV380","M"],
+ "1002,5B62":["RV380","M"],
+ "1002,5B63":["RV380","M"],
+ "1002,5B64":["RV380","M"],
+ "1002,5B65":["RV380","M"],
+ "1002,5C61":["RV280","m"],
+ "1002,5C63":["RV280","m"],
+ "1002,5D48":["R423","mM"],
+ "1002,5D49":["R423","mM"],
+ "1002,5D4A":["R423","mM"],
+ "1002,5D4C":["R423","M"],
+ "1002,5D4D":["R423","M"],
+ "1002,5D4E":["R423","M"],
+ "1002,5D4F":["R423","M"],
+ "1002,5D50":["R423","M"],
+ "1002,5D52":["R423","M"],
+ "1002,5D57":["R423","M"],
+ "1002,5E48":["RV410","M"],
+ "1002,5E4A":["RV410","M"],
+ "1002,5E4B":["RV410","M"],
+ "1002,5E4C":["RV410","M"],
+ "1002,5E4D":["RV410","M"],
+ "1002,5E4F":["RV410","M"],
+ "1002,6720":["BARTS","mM"],
+ "1002,6721":["BARTS","mM"],
+ "1002,6722":["BARTS","M"],
+ "1002,6723":["BARTS","M"],
+ "1002,6724":["BARTS","mM"],
+ "1002,6725":["BARTS","mM"],
+ "1002,6726":["BARTS","M"],
+ "1002,6727":["BARTS","M"],
+ "1002,6728":["BARTS","M"],
+ "1002,6729":["BARTS","M"],
+ "1002,6738":["BARTS","M"],
+ "1002,6739":["BARTS","M"],
+ "1002,6740":["TURKS","mM"],
+ "1002,6741":["TURKS","mM"],
+ "1002,6742":["TURKS","mM"],
+ "1002,6743":["TURKS","mM"],
+ "1002,6744":["TURKS","mM"],
+ "1002,6745":["TURKS","mM"],
+ "1002,6746":["TURKS","M"],
+ "1002,6747":["TURKS","M"],
+ "1002,6748":["TURKS","M"],
+ "1002,6749":["TURKS","M"],
+ "1002,6750":["TURKS","M"],
+ "1002,6758":["TURKS","M"],
+ "1002,6759":["TURKS","M"],
+ "1002,6760":["CAICOS","mM"],
+ "1002,6761":["CAICOS","mM"],
+ "1002,6762":["CAICOS","M"],
+ "1002,6763":["CAICOS","M"],
+ "1002,6764":["CAICOS","mM"],
+ "1002,6765":["CAICOS","mM"],
+ "1002,6766":["CAICOS","M"],
+ "1002,6767":["CAICOS","M"],
+ "1002,6768":["CAICOS","M"],
+ "1002,6718":["Cayman_XT",""],
+ "1002,6770":["CAICOS","M"],
+ "1002,6779":["CAICOS","M"],
+ "1002,6880":["CYPRESS","mM"],
+ "1002,6888":["CYPRESS","M"],
+ "1002,6889":["CYPRESS","M"],
+ "1002,688A":["CYPRESS","M"],
+ "1002,688C":["CYPRESS","M"],
+ "1002,688D":["CYPRESS","M"],
+ "1002,6898":["CYPRESS","M"],
+ "1002,6899":["CYPRESS","M"],
+ "1002,689C":["HEMLOCK","M"],
+ "1002,689D":["HEMLOCK","M"],
+ "1002,689E":["CYPRESS","M"],
+ "1002,68A0":["JUNIPER","mM"],
+ "1002,68A1":["JUNIPER","mM"],
+ "1002,68A8":["JUNIPER","M"],
+ "1002,68A9":["JUNIPER","M"],
+ "1002,68B0":["JUNIPER","mM"],
+ "1002,68B8":["JUNIPER","M"],
+ "1002,68B9":["JUNIPER","M"],
+ "1002,68BE":["JUNIPER","M"],
+ "1002,68C0":["REDWOOD","mM"],
+ "1002,68C1":["REDWOOD","mM"],
+ "1002,68C7":["REDWOOD","mM"],
+ "1002,68C8":["REDWOOD","M"],
+ "1002,68C9":["REDWOOD","M"],
+ "1002,68D8":["REDWOOD","M"],
+ "1002,68D9":["REDWOOD","M"],
+ "1002,68DA":["REDWOOD","M"],
+ "1002,68DE":["REDWOOD","M"],
+ "1002,68E0":["CEDAR","mM"],
+ "1002,68E1":["CEDAR","mM"],
+ "1002,68E4":["CEDAR","mM"],
+ "1002,68E5":["CEDAR","mM"],
+ "1002,68E8":["CEDAR","M"],
+ "1002,68E9":["CEDAR","M"],
+ "1002,68F1":["CEDAR","M"],
+ "1002,68F2":["CEDAR","M"],
+ "1002,68F8":["CEDAR","M"],
+ "1002,68F9":["CEDAR","M"],
+ "1002,68FE":["CEDAR","M"],
+ "1002,7100":["R520","M"],
+ "1002,7101":["R520","mM"],
+ "1002,7102":["R520","mM"],
+ "1002,7103":["R520","mM"],
+ "1002,7104":["R520","M"],
+ "1002,7105":["R520","M"],
+ "1002,7106":["R520","mM"],
+ "1002,7108":["R520","M"],
+ "1002,7109":["R520","M"],
+ "1002,710A":["R520","M"],
+ "1002,710B":["R520","M"],
+ "1002,710C":["R520","M"],
+ "1002,710E":["R520","M"],
+ "1002,710F":["R520","M"],
+ "1002,7140":["RV515","M"],
+ "1002,7141":["RV515","M"],
+ "1002,7142":["RV515","M"],
+ "1002,7143":["RV515","M"],
+ "1002,7144":["RV515","mM"],
+ "1002,7145":["RV515","mM"],
+ "1002,7146":["RV515","M"],
+ "1002,7147":["RV515","M"],
+ "1002,7149":["RV515","mM"],
+ "1002,714A":["RV515","mM"],
+ "1002,714B":["RV515","mM"],
+ "1002,714C":["RV515","mM"],
+ "1002,714D":["RV515","M"],
+ "1002,714E":["RV515","M"],
+ "1002,714F":["RV515","M"],
+ "1002,7151":["RV515","M"],
+ "1002,7152":["RV515","M"],
+ "1002,7153":["RV515","M"],
+ "1002,715E":["RV515","M"],
+ "1002,715F":["RV515","M"],
+ "1002,7180":["RV515","M"],
+ "1002,7181":["RV515","M"],
+ "1002,7183":["RV515","M"],
+ "1002,7186":["RV515","mM"],
+ "1002,7187":["RV515","M"],
+ "1002,7188":["RV515","mM"],
+ "1002,718A":["RV515","mM"],
+ "1002,718B":["RV515","mM"],
+ "1002,718C":["RV515","mM"],
+ "1002,718D":["RV515","mM"],
+ "1002,718F":["RV515","M"],
+ "1002,7193":["RV515","M"],
+ "1002,7196":["RV515","mM"],
+ "1002,719B":["RV515","M"],
+ "1002,719F":["RV515","M"],
+ "1002,71C0":["RV530","M"],
+ "1002,71C1":["RV530","M"],
+ "1002,71C2":["RV530","M"],
+ "1002,71C3":["RV530","M"],
+ "1002,71C4":["RV530","mM"],
+ "1002,71C5":["RV530","mM"],
+ "1002,71C6":["RV530","M"],
+ "1002,71C7":["RV530","M"],
+ "1002,71CD":["RV530","M"],
+ "1002,71CE":["RV530","M"],
+ "1002,71D2":["RV530","M"],
+ "1002,71D4":["RV530","mM"],
+ "1002,71D5":["RV530","mM"],
+ "1002,71D6":["RV530","mM"],
+ "1002,71DA":["RV530","M"],
+ "1002,71DE":["RV530","mM"],
+ "1002,7200":["RV515","M"],
+ "1002,7210":["RV515","mM"],
+ "1002,7211":["RV515","mM"],
+ "1002,7240":["R580","M"],
+ "1002,7243":["R580","M"],
+ "1002,7244":["R580","M"],
+ "1002,7245":["R580","M"],
+ "1002,7246":["R580","M"],
+ "1002,7247":["R580","M"],
+ "1002,7248":["R580","M"],
+ "1002,7249":["R580","M"],
+ "1002,724A":["R580","M"],
+ "1002,724B":["R580","M"],
+ "1002,724C":["R580","M"],
+ "1002,724D":["R580","M"],
+ "1002,724E":["R580","M"],
+ "1002,724F":["R580","M"],
+ "1002,7280":["RV570","M"],
+ "1002,7281":["RV560","M"],
+ "1002,7283":["RV560","M"],
+ "1002,7284":["R580","mM"],
+ "1002,7287":["RV560","M"],
+ "1002,7288":["RV570","M"],
+ "1002,7289":["RV570","M"],
+ "1002,728B":["RV570","M"],
+ "1002,728C":["RV570","M"],
+ "1002,7290":["RV560","M"],
+ "1002,7291":["RV560","M"],
+ "1002,7293":["RV560","M"],
+ "1002,7297":["RV560","M"],
+ "1002,7834":["RS300","Mi"],
+ "1002,7835":["RS300","mMi"],
+ "1002,791E":["RS690","MiI"],
+ "1002,791F":["RS690","MiI"],
+ "1002,793F":["RS600","Mi"],
+ "1002,7941":["RS600","Mi"],
+ "1002,7942":["RS600","Mi"],
+ "1002,796C":["RS740","MiI"],
+ "1002,796D":["RS740","MiI"],
+ "1002,796E":["RS740","MiI"],
+ "1002,796F":["RS740","MiI"],
+ "1002,9400":["R600","M"],
+ "1002,9401":["R600","M"],
+ "1002,9402":["R600","M"],
+ "1002,9403":["R600","M"],
+ "1002,9405":["R600","M"],
+ "1002,940A":["R600","M"],
+ "1002,940B":["R600","M"],
+ "1002,940F":["R600","M"],
+ "1002,94A0":["RV740","mM"],
+ "1002,94A1":["RV740","mM"],
+ "1002,94A3":["RV740","mM"],
+ "1002,94B1":["RV740","M"],
+ "1002,94B3":["RV740","M"],
+ "1002,94B4":["RV740","M"],
+ "1002,94B5":["RV740","M"],
+ "1002,94B9":["RV740","mM"],
+ "1002,9440":["RV770","M"],
+ "1002,9441":["RV770","M"],
+ "1002,9442":["RV770","M"],
+ "1002,9443":["RV770","M"],
+ "1002,9444":["RV770","M"],
+ "1002,9446":["RV770","M"],
+ "1002,944A":["RV770","mM"],
+ "1002,944B":["RV770","mM"],
+ "1002,944C":["RV770","M"],
+ "1002,944E":["RV770","M"],
+ "1002,9450":["RV770","M"],
+ "1002,9452":["RV770","M"],
+ "1002,9456":["RV770","M"],
+ "1002,945A":["RV770","mM"],
+ "1002,945B":["RV770","mM"],
+ "1002,945E":["RV770","mM"],
+ "1002,9460":["RV770","M"],
+ "1002,9462":["RV770","M"],
+ "1002,946A":["RV770","mM"],
+ "1002,946B":["RV770","mM"],
+ "1002,947A":["RV770","mM"],
+ "1002,947B":["RV770","mM"],
+ "1002,9480":["RV730","mM"],
+ "1002,9487":["RV730","M"],
+ "1002,9488":["RV730","mM"],
+ "1002,9489":["RV730","mM"],
+ "1002,948A":["RV730","mM"],
+ "1002,948F":["RV730","M"],
+ "1002,9490":["RV730","M"],
+ "1002,9491":["RV730","mM"],
+ "1002,9495":["RV730","M"],
+ "1002,9498":["RV730","M"],
+ "1002,949C":["RV730","M"],
+ "1002,949E":["RV730","M"],
+ "1002,949F":["RV730","M"],
+ "1002,94C0":["RV610","M"],
+ "1002,94C1":["RV610","M"],
+ "1002,94C3":["RV610","M"],
+ "1002,94C4":["RV610","M"],
+ "1002,94C5":["RV610","M"],
+ "1002,94C6":["RV610","M"],
+ "1002,94C7":["RV610","M"],
+ "1002,94C8":["RV610","mM"],
+ "1002,94C9":["RV610","mM"],
+ "1002,94CB":["RV610","mM"],
+ "1002,94CC":["RV610","M"],
+ "1002,94CD":["RV610","M"],
+ "1002,9500":["RV670","M"],
+ "1002,9501":["RV670","M"],
+ "1002,9504":["RV670","mM"],
+ "1002,9505":["RV670","M"],
+ "1002,9506":["RV670","mM"],
+ "1002,9507":["RV670","M"],
+ "1002,9508":["RV670","mM"],
+ "1002,9509":["RV670","mM"],
+ "1002,950F":["RV670","M"],
+ "1002,9511":["RV670","M"],
+ "1002,9515":["RV670","M"],
+ "1002,9517":["RV670","M"],
+ "1002,9519":["RV670","M"],
+ "1002,9540":["RV710","M"],
+ "1002,9541":["RV710","M"],
+ "1002,9542":["RV710","M"],
+ "1002,954E":["RV710","M"],
+ "1002,954F":["RV710","M"],
+ "1002,9552":["RV710","mM"],
+ "1002,9553":["RV710","mM"],
+ "1002,9555":["RV710","mM"],
+ "1002,9557":["RV710","mM"],
+ "1002,955F":["RV710","mM"],
+ "1002,9580":["RV630","M"],
+ "1002,9581":["RV630","mM"],
+ "1002,9583":["RV630","mM"],
+ "1002,9586":["RV630","M"],
+ "1002,9587":["RV630","M"],
+ "1002,9588":["RV630","M"],
+ "1002,9589":["RV630","M"],
+ "1002,958A":["RV630","M"],
+ "1002,958B":["RV630","mM"],
+ "1002,958C":["RV630","M"],
+ "1002,958D":["RV630","M"],
+ "1002,958E":["RV630","M"],
+ "1002,958F":["RV630","mM"],
+ "1002,9590":["RV635","M"],
+ "1002,9591":["RV635","mM"],
+ "1002,9593":["RV635","mM"],
+ "1002,9595":["RV635","mM"],
+ "1002,9596":["RV635","M"],
+ "1002,9597":["RV635","M"],
+ "1002,9598":["RV635","M"],
+ "1002,9599":["RV635","M"],
+ "1002,959B":["RV635","mM"],
+ "1002,95C0":["RV620","M"],
+ "1002,95C2":["RV620","mM"],
+ "1002,95C4":["RV620","mM"],
+ "1002,95C5":["RV620","M"],
+ "1002,95C6":["RV620","M"],
+ "1002,95C7":["RV620","M"],
+ "1002,95C9":["RV620","M"],
+ "1002,95CC":["RV620","M"],
+ "1002,95CD":["RV620","M"],
+ "1002,95CE":["RV620","M"],
+ "1002,95CF":["RV620","M"],
+ "1002,9610":["RS780","Mi"],
+ "1002,9611":["RS780","Mi"],
+ "1002,9612":["RS780","Mi"],
+ "1002,9613":["RS780","Mi"],
+ "1002,9614":["RS780","Mi"],
+ "1002,9615":["RS780","Mi"],
+ "1002,9616":["RS780","Mi"],
+ "1002,9710":["RS880","Mi"],
+ "1002,9711":["RS880","Mi"],
+ "1002,9712":["RS880","mMi"],
+ "1002,9713":["RS880","mMi"],
+ "1002,9714":["RS880","Mi"],
+ "1002,9715":["RS880","Mi"],
+ "1002,9802":["PALM","Mi"],
+ "1002,9803":["PALM","Mi"],
+ "1002,9804":["PALM","Mi"],
+ "1002,9805":["PALM","Mi"],
+ "102B,0520":["MGA_CARD_TYPE_G200"],
+ "102B,0521":["MGA_CARD_TYPE_G200"],
+ "102B,0525":["MGA_CARD_TYPE_G400"],
+ "102B,2527":["MGA_CARD_TYPE_G550"],
+ "1039,6330":["SIS_CHIP_315"],
+ "18CA,0040":["SIS_CHIP_315"],
+ "18CA,0042":["SIS_CHIP_315"],
+ "1106,3118":["VIA_PRO_GROUP_A"],
+ "1106,3230":["VIA_DX9_0"],
+ "1106,3157":["VIA_PRO_GROUP_A"],
+ "5333,8A20":["S3_SAVAGE3D"],
+ "5333,8A21":["S3_SAVAGE3D"],
+ "5333,8A22":["S3_SAVAGE4"],
+ "5333,8A23":["S3_SAVAGE4"],
+ "5333,8C10":["S3_SAVAGE_MX"],
+ "5333,8C11":["S3_SAVAGE_MX"],
+ "5333,8C12":["S3_SAVAGE_MX"],
+ "5333,8C13":["S3_SAVAGE_MX"],
+ "5333,8C22":["S3_SUPERSAVAGE"],
+ "5333,8C24":["S3_SUPERSAVAGE"],
+ "5333,8C26":["S3_SUPERSAVAGE"],
+ "5333,8C2A":["S3_SUPERSAVAGE"],
+ "5333,8C2B":["S3_SUPERSAVAGE"],
+ "5333,8C2C":["S3_SUPERSAVAGE"],
+ "5333,8C2D":["S3_SUPERSAVAGE"],
+ "5333,8C2E":["S3_SUPERSAVAGE"],
+ "5333,8C2F":["S3_SUPERSAVAGE"],
+ "5333,8A25":["S3_PROSAVAGE"],
+ "5333,8A26":["S3_PROSAVAGE"],
+ "5333,8D01":["S3_TWISTER"],
+ "5333,8D02":["S3_TWISTER"],
+ "5333,8D03":["S3_PROSAVAGEDDR"],
+ "5333,8D04":["S3_PROSAVAGEDDR"],
+ "8086,7800":["Auburn"],
+ "8086,7120":["Whitney"],
+ "8086,7121":["Whitney"],
+ "8086,7122":["Whitney"],
+ "8086,7123":["Whitney"],
+ "8086,7124":["Whitney"],
+ "8086,7125":["Whitney"],
+ "8086,7126":["Whitney"],
+ "8086,7128":["Whitney"],
+ "8086,712a":["Whitney"],
+ "8086,3576":["Brookdale"],
+ "8086,3582":["Springdale"],
+ "8086,2582":["Grantsdale"],
+ "8086,2782":["Grantsdale"],
+ "8086,2592":["Alviso"],
+ "8086,2792":["Alviso"],
+ "8086,2772":["Lakeport"],
+ "8086,2776":["Lakeport"],
+ "8086,27A2":["Calistoga"],
+ "8086,27A6":["Calistoga"],
+ "8086,27AE":["Calistoga"],
+ "8086,2972":["Broadwater"],
+ "8086,2973":["Broadwater"],
+ "8086,2992":["Broadwater"],
+ "8086,2993":["Broadwater"],
+ "8086,29D2":["Bearlake"],
+ "8086,29D3":["Bearlake"],
+ "8086,29B2":["Bearlake"],
+ "8086,29B3":["Bearlake"],
+ "8086,29C2":["Bearlake"],
+ "8086,29C3":["Bearlake"],
+ "8086,A001":["Pineview"],
+ "8086,A002":["Pineview"],
+ "8086,A011":["Pineview"],
+ "8086,A012":["Pineview"],
+ "8086,8108":["Poulsbo"],
+ "8086,8109":["Poulsbo"],
+ "8086,4102":["Lincroft"],
+ "8086,29A2":["Broadwater"],
+ "8086,29A3":["Broadwater"],
+ "8086,2982":["Broadwater"],
+ "8086,2983":["Broadwater"],
+ "8086,2A02":["Crestline"],
+ "8086,2A03":["Crestline"],
+ "8086,2A12":["Crestline"],
+ "8086,2A13":["Crestline"],
+ "8086,2E42":["Eaglelake"],
+ "8086,2E43":["Eaglelake"],
+ "8086,2E92":["Eaglelake"],
+ "8086,2E93":["Eaglelake"],
+ "8086,2E12":["Eaglelake"],
+ "8086,2E13":["Eaglelake"],
+ "8086,2E32":["Eaglelake"],
+ "8086,2E33":["Eaglelake"],
+ "8086,2E22":["Eaglelake"],
+ "8086,2E23":["Eaglelake"],
+ "8086,2A42":["Cantiga"],
+ "8086,2A43":["Cantiga"],
+ "8086,0042":["Clarkdale"],
+ "8086,0046":["Arrandale"],
+ "8086,0080":["Ivy_Bridge"],
+ "8086,0000":["Larrabee"],
+ "8086,0102":["Sandy_Bridge"],
+ "8086,0106":["Sandy_Bridge"],
+ "8086,0112":["Sandy_Bridge"],
+ "8086,0116":["Sandy_Bridge"],
+ "8086,0122":["Sandy_Bridge"],
+ "8086,0126":["Sandy_Bridge"],
+ "8086,010A":["Sandy_Bridge"],
+ "15AD:0405":["VMware_SVGA_II"]
+}
diff --git a/chip-data/intel/Intel_GMA.csv b/chip-data/intel/Intel_GMA.csv
new file mode 100644
index 0000000..7117521
--- /dev/null
+++ b/chip-data/intel/Intel_GMA.csv
@@ -0,0 +1,69 @@
+Auburn|7800
+Whitney|7120
+Whitney|7121
+Whitney|7122
+Whitney|7123
+Whitney|7124
+Whitney|7125
+Whitney|7126
+Whitney|7128
+Whitney|712a
+Brookdale|3576
+Springdale|3582
+Grantsdale|2582
+Grantsdale|2782
+Alviso|2592
+Alviso|2792
+Lakeport|2772
+Lakeport|2776
+Calistoga|27A2
+Calistoga|27A6
+Calistoga|27AE
+Broadwater|2972
+Broadwater|2973
+Broadwater|2992
+Broadwater|2993
+Bearlake|29D2
+Bearlake|29D3
+Bearlake|29B2
+Bearlake|29B3
+Bearlake|29C2
+Bearlake|29C3
+Pineview|A001
+Pineview|A002
+Pineview|A011
+Pineview|A012
+Poulsbo|8108
+Poulsbo|8109
+Lincroft|4102
+Broadwater|29A2
+Broadwater|29A3
+Broadwater|2982
+Broadwater|2983
+Crestline|2A02
+Crestline|2A03
+Crestline|2A12
+Crestline|2A13
+Eaglelake|2E42
+Eaglelake|2E43
+Eaglelake|2E92
+Eaglelake|2E93
+Eaglelake|2E12
+Eaglelake|2E13
+Eaglelake|2E32
+Eaglelake|2E33
+Eaglelake|2E22
+Eaglelake|2E23
+Cantiga|2A42
+Cantiga|2A43
+Clarkdale|0042
+Arrandale|0046
+Ivy Bridge|0080
+Larrabee|NA
+Sandy Bridge|0102
+Sandy Bridge|0106
+Sandy Bridge|0112
+Sandy Bridge|0116
+Sandy Bridge|0122
+Sandy Bridge|0126
+Sandy Bridge|010A
diff --git a/chip-data/intel/Intel_GMA.html b/chip-data/intel/Intel_GMA.html
new file mode 100644
index 0000000..9e3dd02
--- /dev/null
+++ b/chip-data/intel/Intel_GMA.html
@@ -0,0 +1,1638 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html lang="en" dir="ltr" xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>Intel GMA - Wikipedia, the free encyclopedia</title>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<meta name="generator" content="MediaWiki 1.17wmf1" />
+<link rel="alternate" type="application/x-wiki" title="Edit this page" href="/w/index.php?title=Intel_GMA&amp;action=edit" />
+<link rel="edit" title="Edit this page" href="/w/index.php?title=Intel_GMA&amp;action=edit" />
+<link rel="apple-touch-icon" href="http://en.wikipedia.org/apple-touch-icon.png" />
+<link rel="shortcut icon" href="/favicon.ico" />
+<link rel="search" type="application/opensearchdescription+xml" href="/w/opensearch_desc.php" title="Wikipedia (en)" />
+<link rel="EditURI" type="application/rsd+xml" href="http://en.wikipedia.org/w/api.php?action=rsd" />
+<link rel="copyright" href="http://creativecommons.org/licenses/by-sa/3.0/" />
+<link rel="alternate" type="application/atom+xml" title="Wikipedia Atom feed" href="/w/index.php?title=Special:RecentChanges&amp;feed=atom" />
+<link rel="stylesheet" href="http://bits.wikimedia.org/en.wikipedia.org/load.php?debug=false&amp;lang=en&amp;modules=mediawiki.legacy.commonPrint%7Cmediawiki.legacy.shared%7Cskins.vector&amp;only=styles&amp;skin=vector" type="text/css" media="all" />
+<style type="text/css" media="all">a.new,#quickbar a.new{color:#ba0000}</style><meta name="ResourceLoaderDynamicStyles" content="" /><link rel="stylesheet" href="http://bits.wikimedia.org/en.wikipedia.org/load.php?debug=false&amp;lang=en&amp;modules=site&amp;only=styles&amp;skin=vector&amp;version=20110217T190952Z" type="text/css" media="all" />
+<link rel="stylesheet" href="http://bits.wikimedia.org/en.wikipedia.org/load.php?debug=false&amp;lang=en&amp;modules=user&amp;only=styles&amp;skin=vector&amp;version=19700101T000001Z" type="text/css" media="all" />
+
+<!--[if lt IE 7]><style type="text/css">body{behavior:url("/w/skins-1.17/vector/csshover.min.htc")}</style><![endif]--></head>
+<body class="mediawiki ltr ns-0 ns-subject page-Intel_GMA skin-vector">
+ <div id="mw-page-base" class="noprint"></div>
+ <div id="mw-head-base" class="noprint"></div>
+ <!-- content -->
+ <div id="content">
+ <a id="top"></a>
+ <div id="mw-js-message" style="display:none;"></div>
+ <!-- sitenotice -->
+ <div id="siteNotice"><!-- centralNotice loads here --><script type="text/javascript">
+/* <![CDATA[ */
+document.writeln("\x3cdiv id=\"localNotice\"\x3e\x3cp\x3e\x3c/p\x3e\n\x3c/div\x3e");
+/* ]]> */
+</script></div>
+ <!-- /sitenotice -->
+ <!-- firstHeading -->
+ <h1 id="firstHeading" class="firstHeading">Intel GMA</h1>
+ <!-- /firstHeading -->
+ <!-- bodyContent -->
+ <div id="bodyContent">
+ <!-- tagline -->
+ <div id="siteSub">From Wikipedia, the free encyclopedia</div>
+ <!-- /tagline -->
+ <!-- subtitle -->
+ <div id="contentSub"></div>
+ <!-- /subtitle -->
+ <!-- jumpto -->
+ <div id="jump-to-nav">
+ Jump to: <a href="#mw-head">navigation</a>,
+ <a href="#p-search">search</a>
+ </div>
+ <!-- /jumpto -->
+ <!-- bodytext -->
+ <div class="thumb tright">
+<div class="thumbinner" style="width:302px;"><a href="/wiki/File:Harumphy.dg965.heatsink.jpg" class="image"><img alt="" src="http://upload.wikimedia.org/wikipedia/commons/thumb/0/03/Harumphy.dg965.heatsink.jpg/300px-Harumphy.dg965.heatsink.jpg" width="300" height="400" class="thumbimage" /></a>
+<div class="thumbcaption">
+<div class="magnify"><a href="/wiki/File:Harumphy.dg965.heatsink.jpg" class="internal" title="Enlarge"><img src="http://bits.wikimedia.org/skins-1.17/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>
+GMA X3000 on Intel DG965WHMKR motherboard</div>
+</div>
+</div>
+<p>The <b>Intel Graphics Media Accelerator</b>, or <b>GMA</b>, is <a href="/wiki/Intel" class="mw-redirect" title="Intel">Intel</a>'s current line of integrated <a href="/wiki/Graphics_processor" title="Graphics processor" class="mw-redirect">graphics processors</a> built into various <a href="/wiki/Motherboard">motherboard</a> chipsets.</p>
+<p>These <a href="/wiki/Graphics_processing_unit#Integrated_graphics_solutions" title="Graphics processing unit">integrated graphics</a> products allow a computer to be built without a separate <a href="/wiki/Graphics_card" class="mw-redirect" title="Graphics card">graphics card</a>, which can reduce cost, power consumption and noise. They are commonly found on low-priced notebook and desktop computers as well as business computers, which do not need high levels of graphics capability. 90% of all PCs sold have integrated graphics.<sup id="cite_ref-0" class="reference"><a href="#cite_note-0"><span>[</span>1<span>]</span></a></sup> They rely on the computer's <a href="/wiki/Main_memory" class="mw-redirect" title="Main memory">main memory</a> for storage, which imposes a performance penalty, as both the <a href="/wiki/CPU" class="mw-redirect" title="CPU">CPU</a> and GPU have to access memory over the same <a href="/wiki/Computer_bus" title="Computer bus" class="mw-redirect">bus</a>.</p>
+<table id="toc" class="toc">
+<tr>
+<td>
+<div id="toctitle">
+<h2>Contents</h2>
+</div>
+<ul>
+<li class="toclevel-1 tocsection-1"><a href="#History"><span class="tocnumber">1</span> <span class="toctext">History</span></a></li>
+<li class="toclevel-1 tocsection-2"><a href="#Graphics_cores"><span class="tocnumber">2</span> <span class="toctext">Graphics cores</span></a>
+<ul>
+<li class="toclevel-2 tocsection-3"><a href="#GMA_900"><span class="tocnumber">2.1</span> <span class="toctext">GMA 900</span></a></li>
+<li class="toclevel-2 tocsection-4"><a href="#GMA_950"><span class="tocnumber">2.2</span> <span class="toctext">GMA 950</span></a></li>
+<li class="toclevel-2 tocsection-5"><a href="#GMA_3000"><span class="tocnumber">2.3</span> <span class="toctext">GMA 3000</span></a></li>
+<li class="toclevel-2 tocsection-6"><a href="#GMA_3100"><span class="tocnumber">2.4</span> <span class="toctext">GMA 3100</span></a></li>
+<li class="toclevel-2 tocsection-7"><a href="#GMA_X3000"><span class="tocnumber">2.5</span> <span class="toctext">GMA X3000</span></a></li>
+<li class="toclevel-2 tocsection-8"><a href="#GMA_X3100"><span class="tocnumber">2.6</span> <span class="toctext">GMA X3100</span></a></li>
+<li class="toclevel-2 tocsection-9"><a href="#GMA_X3500"><span class="tocnumber">2.7</span> <span class="toctext">GMA X3500</span></a></li>
+<li class="toclevel-2 tocsection-10"><a href="#GMA_X4500"><span class="tocnumber">2.8</span> <span class="toctext">GMA X4500</span></a></li>
+<li class="toclevel-2 tocsection-11"><a href="#GMA_500"><span class="tocnumber">2.9</span> <span class="toctext">GMA 500</span></a></li>
+<li class="toclevel-2 tocsection-12"><a href="#HD_Graphics_.28GMA_HD.29"><span class="tocnumber">2.10</span> <span class="toctext">HD Graphics (GMA HD)</span></a></li>
+</ul>
+</li>
+<li class="toclevel-1 tocsection-13"><a href="#Specifications"><span class="tocnumber">3</span> <span class="toctext">Specifications</span></a></li>
+<li class="toclevel-1 tocsection-14"><a href="#Software_support"><span class="tocnumber">4</span> <span class="toctext">Software support</span></a>
+<ul>
+<li class="toclevel-2 tocsection-15"><a href="#Mac_OS_X"><span class="tocnumber">4.1</span> <span class="toctext">Mac OS X</span></a></li>
+<li class="toclevel-2 tocsection-16"><a href="#FreeBSD"><span class="tocnumber">4.2</span> <span class="toctext">FreeBSD</span></a></li>
+<li class="toclevel-2 tocsection-17"><a href="#Linux"><span class="tocnumber">4.3</span> <span class="toctext">Linux</span></a>
+<ul>
+<li class="toclevel-3 tocsection-18"><a href="#intel_hal.so"><span class="tocnumber">4.3.1</span> <span class="toctext">intel_hal.so</span></a></li>
+<li class="toclevel-3 tocsection-19"><a href="#GMA_500_on_Linux"><span class="tocnumber">4.3.2</span> <span class="toctext">GMA 500 on Linux</span></a></li>
+</ul>
+</li>
+<li class="toclevel-2 tocsection-20"><a href="#Solaris"><span class="tocnumber">4.4</span> <span class="toctext">Solaris</span></a></li>
+<li class="toclevel-2 tocsection-21"><a href="#Microsoft_Windows"><span class="tocnumber">4.5</span> <span class="toctext">Microsoft Windows</span></a>
+<ul>
+<li class="toclevel-3 tocsection-22"><a href="#GMA_900_on_Windows"><span class="tocnumber">4.5.1</span> <span class="toctext">GMA 900 on Windows</span></a></li>
+<li class="toclevel-3 tocsection-23"><a href="#GMA_950_on_Windows"><span class="tocnumber">4.5.2</span> <span class="toctext">GMA 950 on Windows</span></a></li>
+<li class="toclevel-3 tocsection-24"><a href="#GMA_X3000.2FX3100_on_Windows"><span class="tocnumber">4.5.3</span> <span class="toctext">GMA X3000/X3100 on Windows</span></a></li>
+<li class="toclevel-3 tocsection-25"><a href="#GMA_500_on_Windows"><span class="tocnumber">4.5.4</span> <span class="toctext">GMA 500 on Windows</span></a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="toclevel-1 tocsection-26"><a href="#Modern_gaming"><span class="tocnumber">5</span> <span class="toctext">Modern gaming</span></a></li>
+<li class="toclevel-1 tocsection-27"><a href="#Microsoft_Windows_performance_reviews"><span class="tocnumber">6</span> <span class="toctext">Microsoft Windows performance reviews</span></a>
+<ul>
+<li class="toclevel-2 tocsection-28"><a href="#GMA_X3000_review"><span class="tocnumber">6.1</span> <span class="toctext">GMA X3000 review</span></a></li>
+<li class="toclevel-2 tocsection-29"><a href="#GMA_X3500_review"><span class="tocnumber">6.2</span> <span class="toctext">GMA X3500 review</span></a></li>
+<li class="toclevel-2 tocsection-30"><a href="#GMA_X4500_review"><span class="tocnumber">6.3</span> <span class="toctext">GMA X4500 review</span></a></li>
+<li class="toclevel-2 tocsection-31"><a href="#Sandy_Bridge_IGP"><span class="tocnumber">6.4</span> <span class="toctext">Sandy Bridge IGP</span></a></li>
+</ul>
+</li>
+<li class="toclevel-1 tocsection-32"><a href="#See_also"><span class="tocnumber">7</span> <span class="toctext">See also</span></a></li>
+<li class="toclevel-1 tocsection-33"><a href="#References"><span class="tocnumber">8</span> <span class="toctext">References</span></a></li>
+<li class="toclevel-1 tocsection-34"><a href="#External_links"><span class="tocnumber">9</span> <span class="toctext">External links</span></a></li>
+</ul>
+</td>
+</tr>
+</table>
+<h2><span class="editsection">[<a href="/w/index.php?title=Intel_GMA&amp;action=edit&amp;section=1" title="Edit section: History">edit</a>]</span> <span class="mw-headline" id="History">History</span></h2>
+<p>The GMA line of GPUs replaces the earlier "<a href="/w/index.php?title=Intel_Extreme_Graphics&amp;action=edit&amp;redlink=1" class="new" title="Intel Extreme Graphics (page does not exist)">Intel Extreme Graphics</a>", and the <a href="/wiki/Intel740">Intel740</a> line, which were discrete units in the form of <a href="/wiki/Accelerated_Graphics_Port" title="Accelerated Graphics Port">AGP</a> and <a href="/wiki/Conventional_PCI" title="Conventional PCI">PCI</a> cards. Later, Intel integrated the i740 core into the <a href="/wiki/Intel_810">Intel 810</a> chipset.</p>
+<p>The original architecture of GMA systems supported only a few functions in hardware, and relied on the host CPU to handle at least some of the graphics pipeline, further decreasing performance. However, with the introduction of Intel’s 4th generation of GMA architecture (<a href="#GMA_X3000">GMA X3000</a>) in 2006, many of the functions are now built into the hardware, providing an increase in performance. The 4th generation of GMA combines fixed function capabilities with a threaded array of programmable executions units, providing advantages to both graphics and video performance. Many of the advantages of the new GMA architecture come from the ability to flexibly switch as needed between executing graphics-related tasks or video-related tasks. While GMA performance has been widely criticized in the past as being too slow for <a href="/wiki/Computer_games" class="mw-redirect" title="Computer games">computer games</a>, the latest GMA generation should ease many of those concerns for the casual gamer.</p>
+<p>Despite similarities, Intel's main series of GMA IGPs is not based on the <a href="/wiki/PowerVR">PowerVR</a> technology Intel licensed from Imagination Technologies. Intel used the low-power <a href="/wiki/PowerVR#MBX" title="PowerVR">PowerVR MBX</a> designs in chipsets supporting their <a href="/wiki/XScale">XScale</a> platform, and since the sale of XScale in 2006 has licensed the <a href="/wiki/PowerVR#Series_5_.28SGX.29" title="PowerVR">PowerVR SGX</a> and used it in the <a href="#GMA_500">GMA 500</a> IGP for use with their <a href="/wiki/Intel_Atom" title="Intel Atom">Atom</a> platform.</p>
+<h2><span class="editsection">[<a href="/w/index.php?title=Intel_GMA&amp;action=edit&amp;section=2" title="Edit section: Graphics cores">edit</a>]</span> <span class="mw-headline" id="Graphics_cores">Graphics cores</span></h2>
+<h3><span class="editsection">[<a href="/w/index.php?title=Intel_GMA&amp;action=edit&amp;section=3" title="Edit section: GMA 900">edit</a>]</span> <span class="mw-headline" id="GMA_900">GMA 900</span></h3>
+<p>The GMA 900 was the first graphics core produced under Intel's <i>Graphics Media Accelerator</i> product name, and was incorporated in the <a href="/wiki/List_of_Intel_chipsets#Pentium_M.2FCeleron_M_Mobile_chipsets" title="List of Intel chipsets">Intel 910G, 915G, and 915Gx chipsets</a>.</p>
+<p>The 3D architecture of the GMA&#160;900 was a significant upgrade from the previous <i>Extreme 3D</i> graphics processors. It is a 4 pixel per clock cycle design supporting DirectX 9 pixel <a href="/wiki/Shader" title="Shader">shader model</a> 2.0. It operates at a clock rate ranging from 160 to 333&#160;MHz, depending on the particular chipset. At 333&#160;MHz, it has a peak pixel fill-rate of 1332 megapixels per second. However, the architecture still lacks support for <a href="/wiki/Transform_and_lighting" title="Transform and lighting" class="mw-redirect">hardware transform and lighting</a> and the similar <a href="/wiki/Vertex_shader">vertex shader</a> technologies.</p>
+<p>Like previous Intel integrated graphics parts, the GMA 900 has hardware support for <a href="/wiki/MPEG-2">MPEG-2</a> <a href="/wiki/Motion_compensation">motion compensation</a>, <a href="/wiki/Color_space" title="Color space">color-space</a> conversion and <a href="/wiki/DirectDraw">DirectDraw</a> overlay.</p>
+<p>The processor uses different separate clock generators for display and render cores. The display unit includes a 400&#160;MHz <a href="/wiki/RAMDAC">RAMDAC</a>, 2 25–200&#160;Mpixel/s serial DVO ports, and 2 display controllers. In mobile chipsets, up to 2 18-bit 25–112&#160;MHz <a href="/wiki/LVDS" title="LVDS" class="mw-redirect">LVDS transmitters</a> are included.</p>
+<h3><span class="editsection">[<a href="/w/index.php?title=Intel_GMA&amp;action=edit&amp;section=4" title="Edit section: GMA 950">edit</a>]</span> <span class="mw-headline" id="GMA_950">GMA 950</span></h3>
+<p>The GMA 950 is Intel's second-generation graphics core, which was also referred by Intel as 'Gen 3.5 Integrated Graphics Engine' in datasheets. It is used in the <a href="/wiki/List_of_Intel_chipsets#Core.2FCore_2_Mobile_chipsets" title="List of Intel chipsets">Intel 940GML, 945G, 945GU and 945GT system chipsets</a>. The amount of video-decoding hardware has increased; VLD, <a href="/wiki/Discrete_cosine_transform" title="Discrete cosine transform">iDCT</a>, and dual <a href="/wiki/Video_overlay">video overlay</a> windows are supposed to be handled in hardware.<sup id="cite_ref-Intel_945G_1-0" class="reference"><a href="#cite_note-Intel_945G-1"><span>[</span>2<span>]</span></a></sup> However in a feature comparison document<sup id="cite_ref-Intel_guide_2-0" class="reference"><a href="#cite_note-Intel_guide-2"><span>[</span>3<span>]</span></a></sup> it is noted, that VLD and iDCT are not supported until GMA 3100 (on G33 chipsets only). The maximum core clock is up to 400&#160;MHz (on Intel 945G, 945GC, 945GZ, 945GSE), boosting pixel fill-rate to a theoretical 1600 megapixels/s.</p>
+<p>The GMA 950 shares the same architectural weakness as the GMA 900: no hardware geometry processing. Neither basic hardware transform and lighting,<sup id="cite_ref-Xtechgmas_3-0" class="reference"><a href="#cite_note-Xtechgmas-3"><span>[</span>4<span>]</span></a></sup> nor more advanced vertex shaders are handled in the GMA hardware.</p>
+<h3><span class="editsection">[<a href="/w/index.php?title=Intel_GMA&amp;action=edit&amp;section=5" title="Edit section: GMA 3000">edit</a>]</span> <span class="mw-headline" id="GMA_3000">GMA 3000</span></h3>
+<p>The 946GZ, Q965, and Q963 chipsets use the GMA 3000 chip.<sup id="cite_ref-Intel_946GZ_4-0" class="reference"><a href="#cite_note-Intel_946GZ-4"><span>[</span>5<span>]</span></a></sup><sup id="cite_ref-Intel_2_5-0" class="reference"><a href="#cite_note-Intel_2-5"><span>[</span>6<span>]</span></a></sup> The GMA 3000 3D core is very different from the X3000, despite their similar names. It is based more directly on the previous generation GMA 900 and GMA 950 graphics, and belonging to the same "i915" family with them. It has pixel and vertex shaders which only support Shader Model 2.0b features, and the vertex shaders are still only software-emulated. In addition, hardware video acceleration such as hardware-based iDCT computation, ProcAmp (video stream independent <a href="/wiki/Color_correction">color correction</a>), and VC-1 decoding are not implemented in hardware. Of the GMA 3000-equipped chipsets, only the Q965 retains dual independent display support. The core speed is rated at 400&#160;MHz with 1.6&#160;Gpixel/s fill rate in datasheets, but was listed as 667&#160;MHz core in the white paper.<sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span>[</span>7<span>]</span></a></sup></p>
+<p>The memory controller can now address a maximum of 256&#160;MB of system memory, and the integrated serial DVO ports have increased top speed to 270Mpixel/s.</p>
+<h3><span class="editsection">[<a href="/w/index.php?title=Intel_GMA&amp;action=edit&amp;section=6" title="Edit section: GMA 3100">edit</a>]</span> <span class="mw-headline" id="GMA_3100">GMA 3100</span></h3>
+<p>The G31, G33, Q33 and Q35 chipsets use the GMA 3100, which is <a href="/wiki/DirectX">DirectX</a> 9 capable. The 3D core is very similar to the older GMA 3000, including the lack of hardware accelerated vertex shaders.</p>
+<h3><span class="editsection">[<a href="/w/index.php?title=Intel_GMA&amp;action=edit&amp;section=7" title="Edit section: GMA X3000">edit</a>]</span> <span class="mw-headline" id="GMA_X3000">GMA X3000</span></h3>
+<p>The GMA X3000 for desktop was "substantially redesigned" when compared to previous GMA iterations<sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span>[</span>8<span>]</span></a></sup> and it is used in the <a href="/wiki/List_of_Intel_chipsets#Core_2_chipsets" title="List of Intel chipsets">Intel G965</a> north bridge controller.<sup id="cite_ref-8" class="reference"><a href="#cite_note-8"><span>[</span>9<span>]</span></a></sup> The GMA X3000 was launched in July 2006.<sup id="cite_ref-9" class="reference"><a href="#cite_note-9"><span>[</span>10<span>]</span></a></sup> X3000's underlying 3D rendering hardware is organized as a unified shader processor consisting of 8 <a href="/wiki/Scalar_processor" title="Scalar processor">scalar</a> execution units. Each pipeline can process video, vertex, or texture operations. A central scheduler dynamically dispatches threads to pipeline resources, to maximize rendering throughput (and decrease the impact of individual pipeline stalls.) However, due to the scalar nature of the execution units, they can only process data on a single pixel component at a time.<sup id="cite_ref-TRG965_10-0" class="reference"><a href="#cite_note-TRG965-10"><span>[</span>11<span>]</span></a></sup> The GMA X3000 supports DirectX 9.0 with vertex and pixel Shader Model 3.0 features.</p>
+<p>The processor consists of different clock domains, meaning that the entire chip does not operate the same clock speed. This causes some difficulty when measuring peak throughput of its various functions. Further adding to the confusion, it is listed as 667&#160;MHz in Intel G965 white paper, but listed as 400&#160;MHz in Intel G965 datasheet. There are various rules that define the IGP's processing capabilities.<sup id="cite_ref-TRG965_10-1" class="reference"><a href="#cite_note-TRG965-10"><span>[</span>11<span>]</span></a></sup></p>
+<p>Memory controller can now address maximum 384&#160;MB memory according to white paper, but only 256&#160;MB in datasheet.</p>
+<h3><span class="editsection">[<a href="/w/index.php?title=Intel_GMA&amp;action=edit&amp;section=8" title="Edit section: GMA X3100">edit</a>]</span> <span class="mw-headline" id="GMA_X3100">GMA X3100</span></h3>
+<p>Information: The GMA X3100 is the mobile version of the GMA X3000 used in the Intel GL960/GM965 chipsets and also in the GS965 chipset. The X3100 supports hardware transform and lighting, up to 128 programmable shader units, and up to 384&#160;MB memory. Its display cores can run up to 333&#160;MHz on GM965 and 320&#160;MHz on GL960. Its render cores can run up to 500&#160;MHz on GM965 and 400&#160;MHz on GL960. The X3100 display unit includes a 300&#160;MHz RAMDAC, two 25–112&#160;MHz LVDS transmitters, 2 DVO encoders, and a TV encoder. In addition, the hardware supports DirectX 10.0,<sup id="cite_ref-Intel_guide_2-1" class="reference"><a href="#cite_note-Intel_guide-2"><span>[</span>3<span>]</span></a></sup> Shader Model 4.0 and OpenGL 1.5.<sup id="cite_ref-Intel_82GM965_GL_Compatibility_11-0" class="reference"><a href="#cite_note-Intel_82GM965_GL_Compatibility-11"><span>[</span>12<span>]</span></a></sup></p>
+<h3><span class="editsection">[<a href="/w/index.php?title=Intel_GMA&amp;action=edit&amp;section=9" title="Edit section: GMA X3500">edit</a>]</span> <span class="mw-headline" id="GMA_X3500">GMA X3500</span></h3>
+<p>GMA X3500 is an upgrade of the GMA X3000 and used in the desktop <a href="/wiki/G35_(chipset)" title="G35 (chipset)" class="mw-redirect">G35</a>. The shaders support shader model 4.0 features. Architecturally, the GMA X3500 is very similar to the GMA X3000,<sup id="cite_ref-autogenerated1_12-0" class="reference"><a href="#cite_note-autogenerated1-12"><span>[</span>13<span>]</span></a></sup> with both GMAs running at 667&#160;<a href="/wiki/MHz" class="mw-redirect" title="MHz">MHz</a>. The major difference between them is that the GMA X3500 supports <a href="/wiki/Shader_Model" class="mw-redirect" title="Shader Model">Shader Model</a> 4.0 and <a href="/wiki/DirectX_10" class="mw-redirect" title="DirectX 10">DirectX 10</a>, whereas the earlier X3000 supports <a href="/wiki/Shader_Model" class="mw-redirect" title="Shader Model">Shader Model</a> 3.0 and <a href="/wiki/DirectX_9" class="mw-redirect" title="DirectX 9">DirectX 9</a>.<sup id="cite_ref-autogenerated1_12-1" class="reference"><a href="#cite_note-autogenerated1-12"><span>[</span>13<span>]</span></a></sup> The X3500 also adds hardware-assistance for playback of VC-1 video.</p>
+<h3><span class="editsection">[<a href="/w/index.php?title=Intel_GMA&amp;action=edit&amp;section=10" title="Edit section: GMA X4500">edit</a>]</span> <span class="mw-headline" id="GMA_X4500">GMA X4500</span></h3>
+<p>The GMA X4500 and the GMA X4500HD for desktop<sup id="cite_ref-autogenerated6_13-0" class="reference"><a href="#cite_note-autogenerated6-13"><span>[</span>14<span>]</span></a></sup> were launched in June 2008.<sup id="cite_ref-autogenerated2_14-0" class="reference"><a href="#cite_note-autogenerated2-14"><span>[</span>15<span>]</span></a></sup> The GMA X4500 is used in the <a href="/wiki/List_of_Intel_chipsets#Core_2_chipsets" title="List of Intel chipsets">G43 chipset</a><sup id="cite_ref-15" class="reference"><a href="#cite_note-15"><span>[</span>16<span>]</span></a></sup> and the GMA X4500HD is used in the <a href="/wiki/List_of_Intel_chipsets#Core_2_chipsets" title="List of Intel chipsets">G45 chipset</a>.<sup id="cite_ref-autogenerated6_13-1" class="reference"><a href="#cite_note-autogenerated6-13"><span>[</span>14<span>]</span></a></sup> The GMA X4500 is also used in the <a href="/wiki/List_of_Intel_chipsets#Core_2_chipsets" title="List of Intel chipsets">G41 chipset</a>,<sup id="cite_ref-autogenerated3_16-0" class="reference"><a href="#cite_note-autogenerated3-16"><span>[</span>17<span>]</span></a></sup> which was released in September 2008.<sup id="cite_ref-17" class="reference"><a href="#cite_note-17"><span>[</span>18<span>]</span></a></sup></p>
+<p>The GMA 4500MHD for laptops was launched on July 16, 2008. Featurewise, the 4500MHD is identical to its desktop cousin, the X4500HD.<sup class="Template-Fact" title="This claim needs references to reliable sources from July 2008" style="white-space:nowrap;">[<i><a href="/wiki/Wikipedia:Citation_needed" title="Wikipedia:Citation needed">citation needed</a></i>]</sup> It had been previously rumored that a cost-reduced version, the <i>GMA 4500</i>, was to be launched in late 2008 or early 2009<sup id="cite_ref-18" class="reference"><a href="#cite_note-18"><span>[</span>19<span>]</span></a></sup> and was to be used in the upcoming <a href="/wiki/List_of_Intel_chipsets#Core_2_chipsets" title="List of Intel chipsets">Q43 and Q45 chipsets</a>.<sup id="cite_ref-autogenerated3_16-1" class="reference"><a href="#cite_note-autogenerated3-16"><span>[</span>17<span>]</span></a></sup> But in practice the Q43 and Q45 Chipsets also use the GMA X4500.<sup id="cite_ref-19" class="reference"><a href="#cite_note-19"><span>[</span>20<span>]</span></a></sup></p>
+<p>The difference between the GMA X4500 and the GMA X4500HD is that the GMA X4500HD is capable of <i>"full <a href="/wiki/1080p">1080p</a> high-definition video playback, including <a href="/wiki/Blu-ray" class="mw-redirect" title="Blu-ray">Blu-ray</a> disc movies"</i>,<sup id="cite_ref-autogenerated6_13-2" class="reference"><a href="#cite_note-autogenerated6-13"><span>[</span>14<span>]</span></a></sup><sup id="cite_ref-20" class="reference"><a href="#cite_note-20"><span>[</span>21<span>]</span></a></sup></p>
+<p>Like the X3500, X4500 supports DirectX 10 and Shader Model 4.0 features. Intel designed the GMA X4500 to be 200% faster than the GMA 3100 (<a href="/wiki/List_of_Intel_chipsets#Core_2_chipsets" title="List of Intel chipsets">G33 chipset</a>) in 3DMark06 performance<sup id="cite_ref-21" class="reference"><a href="#cite_note-21"><span>[</span>22<span>]</span></a></sup> and 70% faster than the GMA X3500 (<a href="/wiki/List_of_Intel_chipsets#Core_2_chipsets" title="List of Intel chipsets">G35 chipset</a>).<sup id="cite_ref-22" class="reference"><a href="#cite_note-22"><span>[</span>23<span>]</span></a></sup></p>
+<h3><span class="editsection">[<a href="/w/index.php?title=Intel_GMA&amp;action=edit&amp;section=11" title="Edit section: GMA 500">edit</a>]</span> <span class="mw-headline" id="GMA_500">GMA 500</span></h3>
+<p>The Intel SCH (System Controller Hub; codenamed <b><a href="/wiki/Poulsbo_(chipset)" title="Poulsbo (chipset)" class="mw-redirect">Poulsbo</a></b>) for the Atom processor Z5xx series features a GMA 500 graphic system. Rather than being developed in-house, this core is a <a href="/wiki/PowerVR">PowerVR</a> SGX 535 core licensed from Imagination Technologies.<sup id="cite_ref-23" class="reference"><a href="#cite_note-23"><span>[</span>24<span>]</span></a></sup> Intel describes this as "a flexible, programmable architecture that supports shader-based technology, 2D, 3D and advanced 3D graphics, high-definition video decode, and image processing. Features include screen tiling, internal true color processing, zero overhead anti-aliasing, programmable shader 3D accelerator, and 32-bit floating-point operations."<sup id="cite_ref-24" class="reference"><a href="#cite_note-24"><span>[</span>25<span>]</span></a></sup></p>
+<h3><span class="editsection">[<a href="/w/index.php?title=Intel_GMA&amp;action=edit&amp;section=12" title="Edit section: HD Graphics (GMA HD)">edit</a>]</span> <span class="mw-headline" id="HD_Graphics_.28GMA_HD.29">HD Graphics (GMA HD)</span></h3>
+<p>With the introduction of Arrandale-based <a href="/wiki/Intel_Core#Core_i3" title="Intel Core">Core i3</a>, <a href="/wiki/Intel_Core_i5" title="Intel Core i5">Core i5</a>, and <a href="/wiki/Intel_Core_i7" title="Intel Core i7">Core i7</a> processors, graphics cores were now built into the processor package itself. The integrated graphics chips are built on a 45&#160;nm process and are much more power efficient than previous generation GMA cores. The graphics chips on the mobile Arrandale processors include a feature similar to <a href="/wiki/Intel_Turbo_Boost" title="Intel Turbo Boost">Turbo Boost</a> called dynamic frequency scaling, which allows it to gain a little extra headway.</p>
+<h2><span class="editsection">[<a href="/w/index.php?title=Intel_GMA&amp;action=edit&amp;section=13" title="Edit section: Specifications">edit</a>]</span> <span class="mw-headline" id="Specifications">Specifications</span></h2>
+<table class="wikitable" style="font-size: 85%; text-align:center">
+<tr>
+<th rowspan="2">Graphics</th>
+<th rowspan="2">Market</th>
+<th rowspan="2"><a href="/wiki/List_of_Intel_chipsets" title="List of Intel chipsets">Chipset</a>/<a href="/wiki/List_of_Intel_microprocessors" title="List of Intel microprocessors">CPU</a></th>
+<th rowspan="2">Code Name</th>
+<th rowspan="2">Device ID</th>
+<th rowspan="2">Core Render<br />
+<a href="/wiki/Clock_rate" title="Clock rate">Clock</a> (<a href="/wiki/Hertz" title="Hertz">MHz</a>)</th>
+<th rowspan="2"><a href="/wiki/Pixel_Pipelines" class="mw-redirect" title="Pixel Pipelines">Pixel Pipelines</a></th>
+<th rowspan="2"><a href="/wiki/Shader">Shader</a> Model<br />
+(<a href="/wiki/Vertex_Shader" title="Vertex Shader" class="mw-redirect">Vertex</a>/<a href="/wiki/Pixel_Shader" title="Pixel Shader" class="mw-redirect">Pixel</a>)</th>
+<th colspan="3"><a href="/wiki/Application_Programming_Interface" title="Application Programming Interface" class="mw-redirect">API</a> Support</th>
+<th rowspan="2"><a href="/wiki/Memory_Bandwidth" class="mw-redirect" title="Memory Bandwidth">Memory Bandwidth</a> (<a href="/wiki/Data_rate_units#Gigabyte_per_second" title="Data rate units">GB/s</a>)</th>
+<th rowspan="2"><a href="/wiki/DVMT">DVMT</a> (<a href="/wiki/Megabyte" title="Megabyte">MB</a>)</th>
+<th colspan="3">Hardware Acceleration</th>
+</tr>
+<tr>
+<th><a href="/wiki/DirectX">DirectX</a></th>
+<th><a href="/wiki/OpenGL">OpenGL</a></th>
+<th><a href="/wiki/OpenCL">OpenCL</a></th>
+<th><a href="/wiki/MPEG-2">MPEG-2</a></th>
+<th><a href="/wiki/VC-1">VC-1</a></th>
+<th><a href="/wiki/H.264/MPEG-4_AVC" title="H.264/MPEG-4 AVC">AVC</a></th>
+</tr>
+<tr>
+<td><a href="/wiki/Intel740">Intel740</a></td>
+<td>Desktop</td>
+<td>stand-alone <a href="/wiki/Graphics_Processing_Unit" title="Graphics Processing Unit" class="mw-redirect">GPU</a></td>
+<td>Auburn</td>
+<td>7800</td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+</tr>
+<tr>
+<td>i752</td>
+<td>Desktop</td>
+<td>i810/i815</td>
+<td>Whitney/Solano</td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+</tr>
+<tr>
+<td><a href="/w/index.php?title=Intel_Extreme_Graphics&amp;action=edit&amp;redlink=1" class="new" title="Intel Extreme Graphics (page does not exist)">IEG</a></td>
+<td>Desktop/Mobile</td>
+<td>i830G/i845G</td>
+<td>Brookdale</td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+</tr>
+<tr>
+<td>IEG2</td>
+<td>Desktop/Mobile</td>
+<td>i852G/i855G/i865G</td>
+<td>Springdale/Morgan Hill/Tulloch/Montara</td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+</tr>
+<tr>
+<td rowspan="5">GMA 900</td>
+<td rowspan="4">Desktop</td>
+<td>910GL</td>
+<td rowspan="4">Grantsdale</td>
+<td rowspan="4">2582<br />
+2782</td>
+<td></td>
+<td rowspan="5">4</td>
+<td rowspan="5">2.0 (SW) / 2.0</td>
+<td rowspan="5">7.0</td>
+<td rowspan="9">1.4</td>
+<td rowspan="16">—</td>
+<td rowspan="2">3.2</td>
+<td rowspan="5">128</td>
+<td rowspan="5"><a href="/wiki/Motion_compensation" title="Motion compensation">MC</a><sup id="cite_ref-GMA900Brief_25-0" class="reference"><a href="#cite_note-GMA900Brief-25"><span>[</span>26<span>]</span></a></sup></td>
+<td rowspan="5">No</td>
+<td rowspan="5">No</td>
+</tr>
+<tr>
+<td>915GL</td>
+<td></td>
+</tr>
+<tr>
+<td>915GV</td>
+<td></td>
+<td rowspan="3">8.5</td>
+</tr>
+<tr>
+<td>915G</td>
+<td></td>
+</tr>
+<tr>
+<td>Mobile</td>
+<td>Mobile 915<br />
+Family</td>
+<td>Alviso</td>
+<td>2592<br />
+2792</td>
+<td></td>
+</tr>
+<tr>
+<td rowspan="4">GMA 950</td>
+<td rowspan="3">Desktop</td>
+<td>945GZ</td>
+<td rowspan="3">Lakeport</td>
+<td rowspan="3">2772<br />
+2776</td>
+<td></td>
+<td rowspan="4">4</td>
+<td rowspan="13">3.0 (SW) / 2.0</td>
+<td rowspan="13">9.0c</td>
+<td>8.5</td>
+<td rowspan="4">224<sup id="cite_ref-Intel_guide_2-2" class="reference"><a href="#cite_note-Intel_guide-2"><span>[</span>3<span>]</span></a></sup></td>
+<td rowspan="4">MC<sup id="cite_ref-Intel_guide_2-3" class="reference"><a href="#cite_note-Intel_guide-2"><span>[</span>3<span>]</span></a></sup></td>
+<td rowspan="4">No</td>
+<td rowspan="4">No</td>
+</tr>
+<tr>
+<td>945GC</td>
+<td>400</td>
+<td rowspan="3">10.7</td>
+</tr>
+<tr>
+<td>945G</td>
+<td></td>
+</tr>
+<tr>
+<td>Mobile</td>
+<td>Mobile 945<br />
+Family</td>
+<td>Calistoga</td>
+<td>27A2<br />
+27A6<br />
+27AE</td>
+<td>224<sup id="cite_ref-int307508-001_26-0" class="reference"><a href="#cite_note-int307508-001-26"><span>[</span>27<span>]</span></a></sup></td>
+</tr>
+<tr>
+<td rowspan="3">GMA 3000</td>
+<td rowspan="3">Desktop</td>
+<td>946GZ</td>
+<td rowspan="3">Broadwater</td>
+<td>2972<br />
+2973</td>
+<td></td>
+<td rowspan="7">4</td>
+<td rowspan="3">1.4</td>
+<td>10.7</td>
+<td rowspan="3">256</td>
+<td rowspan="3">MC<sup id="cite_ref-Intel_guide_2-4" class="reference"><a href="#cite_note-Intel_guide-2"><span>[</span>3<span>]</span></a></sup></td>
+<td rowspan="3">No</td>
+<td rowspan="3">No</td>
+</tr>
+<tr>
+<td>Q963</td>
+<td rowspan="2">2992<br />
+2993</td>
+<td rowspan="2"></td>
+<td rowspan="2">12.8</td>
+</tr>
+<tr>
+<td>Q965</td>
+</tr>
+<tr>
+<td rowspan="4">GMA 3100</td>
+<td rowspan="4">Desktop</td>
+<td>Q33</td>
+<td rowspan="4">Bearlake</td>
+<td>29D2<br />
+29D3</td>
+<td></td>
+<td rowspan="4">1.5</td>
+<td rowspan="3">12.8</td>
+<td rowspan="4">256<sup id="cite_ref-G33datasheet_27-0" class="reference"><a href="#cite_note-G33datasheet-27"><span>[</span>28<span>]</span></a></sup></td>
+<td rowspan="3">MC<sup id="cite_ref-Intel_guide_2-5" class="reference"><a href="#cite_note-Intel_guide-2"><span>[</span>3<span>]</span></a></sup></td>
+<td rowspan="4">No</td>
+<td rowspan="4">No</td>
+</tr>
+<tr>
+<td>Q35</td>
+<td>29B2<br />
+29B3</td>
+<td></td>
+</tr>
+<tr>
+<td>G31</td>
+<td rowspan="2">29C2<br />
+29C3</td>
+<td></td>
+</tr>
+<tr>
+<td>G33</td>
+<td></td>
+<td>12.8 (DDR2)<br />
+17 (DDR3)</td>
+<td>Full<sup id="cite_ref-Intel_guide_2-6" class="reference"><a href="#cite_note-Intel_guide-2"><span>[</span>3<span>]</span></a></sup></td>
+</tr>
+<tr>
+<td rowspan="2">GMA 3150</td>
+<td>Nettop</td>
+<td>Atom D410<br />
+Atom D510</td>
+<td rowspan="2"><a href="/wiki/Pineview_(microprocessor)" title="Pineview (microprocessor)" class="mw-redirect">Pineview</a></td>
+<td>A001<br />
+A002</td>
+<td>400<sup id="cite_ref-28" class="reference"><a href="#cite_note-28"><span>[</span>29<span>]</span></a></sup></td>
+<td rowspan="2">2</td>
+<td rowspan="2">1.5 on<br />
+Windows<br />
+2.0 on<br />
+Linux<sup id="cite_ref-29" class="reference"><a href="#cite_note-29"><span>[</span>30<span>]</span></a></sup></td>
+<td rowspan="2"></td>
+<td>6.4</td>
+<td rowspan="2">384</td>
+<td rowspan="2">Full</td>
+<td rowspan="2">No</td>
+<td rowspan="2">No</td>
+</tr>
+<tr>
+<td>Netbook</td>
+<td>Atom N4x0<br />
+Atom N550</td>
+<td>A011<br />
+A012</td>
+<td>200</td>
+<td>5.3</td>
+</tr>
+<tr>
+<th rowspan="2">Graphics</th>
+<th rowspan="2">Market</th>
+<th rowspan="2"><a href="/wiki/List_of_Intel_chipsets" title="List of Intel chipsets">Chipset</a>/<a href="/wiki/List_of_Intel_microprocessors" title="List of Intel microprocessors">CPU</a></th>
+<th rowspan="2">Code Name</th>
+<th rowspan="2">Device ID</th>
+<th rowspan="2">Core Render<br />
+<a href="/wiki/Clock_rate" title="Clock rate">Clock</a> (<a href="/wiki/Hertz" title="Hertz">MHz</a>)</th>
+<th rowspan="2">Execution Units</th>
+<th rowspan="2"><a href="/wiki/Shader">Shader</a> Model<br />
+(<a href="/wiki/Unified_shader_model" title="Unified shader model">Unified Shader</a>)</th>
+<th colspan="3"><a href="/wiki/Application_Programming_Interface" title="Application Programming Interface" class="mw-redirect">API</a> Support</th>
+<th rowspan="2"><a href="/wiki/Memory_Bandwidth" class="mw-redirect" title="Memory Bandwidth">Memory Bandwidth</a> (<a href="/wiki/Data_rate_units#Gigabyte_per_second" title="Data rate units">GB/s</a>)</th>
+<th rowspan="2"><a href="/wiki/DVMT">DVMT</a>(<a href="/wiki/Megabyte" title="Megabyte">MB</a>)</th>
+<th colspan="3">Hardware Acceleration</th>
+</tr>
+<tr>
+<th><a href="/wiki/DirectX">DirectX</a></th>
+<th><a href="/wiki/OpenGL">OpenGL</a></th>
+<th><a href="/wiki/OpenCL">OpenCL</a></th>
+<th><a href="/wiki/MPEG-2">MPEG-2</a></th>
+<th><a href="/wiki/VC-1">VC-1</a></th>
+<th><a href="/wiki/H.264/MPEG-4_AVC" title="H.264/MPEG-4 AVC">AVC</a></th>
+</tr>
+<tr>
+<td rowspan="3">GMA 500</td>
+<td rowspan="3"><a href="/wiki/Mobile_Internet_Devices" title="Mobile Internet Devices" class="mw-redirect">MID</a></td>
+<td>UL11L</td>
+<td rowspan="3"><a href="/wiki/Poulsbo_(chipset)" title="Poulsbo (chipset)" class="mw-redirect">Poulsbo</a></td>
+<td rowspan="3">8108<br />
+8109</td>
+<td>100</td>
+<td rowspan="3">4</td>
+<td rowspan="3">3.0</td>
+<td rowspan="3">9.0c</td>
+<td rowspan="3">2.0</td>
+<td rowspan="3"></td>
+<td rowspan="3">4.2</td>
+<td rowspan="3">256</td>
+<td rowspan="3">Full</td>
+<td rowspan="3">Full</td>
+<td rowspan="3">Full</td>
+</tr>
+<tr>
+<td>US15L</td>
+<td rowspan="2">200</td>
+</tr>
+<tr>
+<td>US15W</td>
+</tr>
+<tr>
+<td>GMA 600</td>
+<td>MID</td>
+<td>Atom Z6xx</td>
+<td><a href="/wiki/Lincroft_(microprocessor)" title="Lincroft (microprocessor)" class="mw-redirect">Lincroft</a></td>
+<td>4102</td>
+<td>400<sup class="Template-Fact" title="This claim needs references to reliable sources from February 2011" style="white-space:nowrap;">[<i><a href="/wiki/Wikipedia:Citation_needed" title="Wikipedia:Citation needed">citation needed</a></i>]</sup></td>
+<td>4</td>
+<td>3.0</td>
+<td>9.0c</td>
+<td>2.1</td>
+<td></td>
+<td></td>
+<td></td>
+<td>Full</td>
+<td>Full</td>
+<td>Full</td>
+</tr>
+<tr>
+<th rowspan="2">Graphics</th>
+<th rowspan="2">Market</th>
+<th rowspan="2"><a href="/wiki/List_of_Intel_chipsets" title="List of Intel chipsets">Chipset</a>/<a href="/wiki/List_of_Intel_microprocessors" title="List of Intel microprocessors">CPU</a></th>
+<th rowspan="2">Code Name</th>
+<th rowspan="2">Device ID</th>
+<th rowspan="2">Core Render<br />
+<a href="/wiki/Clock_rate" title="Clock rate">Clock</a> (<a href="/wiki/Hertz" title="Hertz">MHz</a>)</th>
+<th rowspan="2">Execution Units</th>
+<th rowspan="2"><a href="/wiki/Shader">Shader</a> Model<br />
+(<a href="/wiki/Unified_shader_model" title="Unified shader model">Unified Shader</a>)</th>
+<th colspan="3"><a href="/wiki/Application_Programming_Interface" title="Application Programming Interface" class="mw-redirect">API</a> Support</th>
+<th rowspan="2"><a href="/wiki/Memory_Bandwidth" class="mw-redirect" title="Memory Bandwidth">Memory Bandwidth</a> (<a href="/wiki/Data_rate_units#Gigabyte_per_second" title="Data rate units">GB/s</a>)</th>
+<th rowspan="2"><a href="/wiki/DVMT">DVMT</a> (<a href="/wiki/Megabyte" title="Megabyte">MB</a>)</th>
+<th colspan="3">Hardware Acceleration</th>
+</tr>
+<tr>
+<th><a href="/wiki/DirectX">DirectX</a></th>
+<th><a href="/wiki/OpenGL">OpenGL</a></th>
+<th><a href="/wiki/OpenCL">OpenCL</a></th>
+<th><a href="/wiki/MPEG-2">MPEG-2</a></th>
+<th><a href="/wiki/VC-1">VC-1</a></th>
+<th><a href="/wiki/H.264/MPEG-4_AVC" title="H.264/MPEG-4 AVC">AVC</a></th>
+</tr>
+<tr>
+<td>GMA X3000</td>
+<td rowspan="2">Desktop</td>
+<td>G965</td>
+<td>Broadwater</td>
+<td>29A2<br />
+29A3</td>
+<td>667<sup id="cite_ref-Intel_2_5-1" class="reference"><a href="#cite_note-Intel_2-5"><span>[</span>6<span>]</span></a></sup></td>
+<td rowspan="6">8<sup id="cite_ref-Intel_2_5-2" class="reference"><a href="#cite_note-Intel_2-5"><span>[</span>6<span>]</span></a></sup></td>
+<td>3.0</td>
+<td rowspan="1">9.0c</td>
+<td rowspan="2">2.0</td>
+<td rowspan="16">—</td>
+<td rowspan="2">12.8</td>
+<td rowspan="6">384</td>
+<td rowspan="6">Full<sup id="cite_ref-Intel_guide_2-7" class="reference"><a href="#cite_note-Intel_guide-2"><span>[</span>3<span>]</span></a></sup></td>
+<td>MC + (LF -<br />
+<a href="/wiki/Windows_Media_Video" title="Windows Media Video">WMV9</a> only)</td>
+<td rowspan="6">No</td>
+</tr>
+<tr>
+<td>GMA X3500</td>
+<td>G35</td>
+<td>Broadwater</td>
+<td>2982<br />
+2983</td>
+<td>667<sup id="cite_ref-intel317363_30-0" class="reference"><a href="#cite_note-intel317363-30"><span>[</span>31<span>]</span></a></sup></td>
+<td rowspan="22">4.0</td>
+<td rowspan="22">10</td>
+<td>MC + LF</td>
+</tr>
+<tr>
+<td rowspan="4">GMA X3100</td>
+<td rowspan="4">Mobile</td>
+<td>GL960</td>
+<td rowspan="4">Crestline</td>
+<td rowspan="2">2A02<br />
+2A03</td>
+<td rowspan="2">400<sup id="cite_ref-intel31627303_31-0" class="reference"><a href="#cite_note-intel31627303-31"><span>[</span>32<span>]</span></a></sup></td>
+<td rowspan="21">2.1</td>
+<td rowspan="2">8.5</td>
+<td rowspan="4">MC + (LF -<br />
+<a href="/wiki/Windows_Media_Video" title="Windows Media Video">WMV9</a> only)</td>
+</tr>
+<tr>
+<td>GLE960</td>
+</tr>
+<tr>
+<td>GM965</td>
+<td rowspan="2">2A12<br />
+2A13</td>
+<td rowspan="2">500<sup id="cite_ref-intel31627303_31-1" class="reference"><a href="#cite_note-intel31627303-31"><span>[</span>32<span>]</span></a></sup></td>
+<td rowspan="2">10.7</td>
+</tr>
+<tr>
+<td>GME965</td>
+</tr>
+<tr>
+<td rowspan="3">GMA 4500</td>
+<td rowspan="6">Desktop</td>
+<td>B43</td>
+<td rowspan="6">Eaglelake</td>
+<td>2E42<br />
+2E43<br />
+2E92<br />
+2E93</td>
+<td></td>
+<td rowspan="10">10</td>
+<td rowspan="6">12.8 (DDR2)<br />
+17 (DDR3)<sup id="cite_ref-intel319970_32-0" class="reference"><a href="#cite_note-intel319970-32"><span>[</span>33<span>]</span></a></sup></td>
+<td rowspan="10">1700</td>
+<td rowspan="3"></td>
+<td rowspan="3"></td>
+<td rowspan="3"></td>
+</tr>
+<tr>
+<td>Q43</td>
+<td rowspan="2">2E12<br />
+2E13</td>
+<td rowspan="2"></td>
+</tr>
+<tr>
+<td>Q45</td>
+</tr>
+<tr>
+<td rowspan="2">GMA X4500</td>
+<td>G41</td>
+<td>2E32<br />
+2E33</td>
+<td rowspan="3">800</td>
+<td rowspan="7">Full</td>
+<td rowspan="2">MC + LF</td>
+<td rowspan="2">MC + LF</td>
+</tr>
+<tr>
+<td>G43</td>
+<td rowspan="2">2E22<br />
+2E23</td>
+</tr>
+<tr>
+<td>GMA X4500HD</td>
+<td>G45</td>
+<td rowspan="5">Full</td>
+<td rowspan="5">Full</td>
+</tr>
+<tr>
+<td rowspan="4">GMA 4500MHD</td>
+<td rowspan="4">Mobile</td>
+<td>GL40</td>
+<td rowspan="4">Cantiga</td>
+<td rowspan="4">2A42<br />
+2A43</td>
+<td rowspan="2">400<sup id="cite_ref-intel320122_33-0" class="reference"><a href="#cite_note-intel320122-33"><span>[</span>34<span>]</span></a></sup></td>
+<td rowspan="2">12.8</td>
+</tr>
+<tr>
+<td>GS40</td>
+</tr>
+<tr>
+<td>GM45</td>
+<td rowspan="2">533<sup id="cite_ref-intel320122_33-1" class="reference"><a href="#cite_note-intel320122-33"><span>[</span>34<span>]</span></a></sup></td>
+<td rowspan="2">12.8 (DDR2)<br />
+17 (DDR3)</td>
+</tr>
+<tr>
+<td>GS45</td>
+</tr>
+<tr>
+<td rowspan="7">HD Graphics<br />
+(GMA HD)</td>
+<td rowspan="3">Desktop</td>
+<td>Pentium G6950</td>
+<td rowspan="3">Clarkdale<br />
+GMCH Die:Ironlake</td>
+<td rowspan="3">0042</td>
+<td>533</td>
+<td rowspan="7">12</td>
+<td rowspan="7"></td>
+<td>17</td>
+<td rowspan="7">1720</td>
+<td rowspan="7">Full</td>
+<td rowspan="7">Full</td>
+<td rowspan="7">Full</td>
+</tr>
+<tr>
+<td>Core i3-5x0<br />
+Core i5-6x0</td>
+<td>733</td>
+<td rowspan="2">21.3</td>
+</tr>
+<tr>
+<td>Core i5-661</td>
+<td>900</td>
+</tr>
+<tr>
+<td rowspan="4">Mobile</td>
+<td>Core i5-520UM<br />
+Core i7-620UE<br />
+Core i7-6x0UM</td>
+<td rowspan="4">Arrandale<br />
+GMCH Die:Ironlake</td>
+<td rowspan="4">0046</td>
+<td>500</td>
+<td>12.8</td>
+</tr>
+<tr>
+<td>Core i7-620LE<br />
+Core i7-6x0LM</td>
+<td>566</td>
+<td rowspan="3">17.2</td>
+</tr>
+<tr>
+<td>Core i3-3x0M</td>
+<td>667</td>
+</tr>
+<tr>
+<td>Core i5-430M<br />
+Core i5-520E<br />
+Core i5-5x0M<br />
+Core i7-610E<br />
+Core i7-620M</td>
+<td>766</td>
+</tr>
+<tr>
+<td>HD Graphics 2000</td>
+<td>Desktop</td>
+<td>Non-K edition<br />
+Core i3, Core i5, Core i7</td>
+<td rowspan="3"><a href="/wiki/Sandy_Bridge_(microarchitecture)" title="Sandy Bridge (microarchitecture)" class="mw-redirect">Sandy Bridge</a></td>
+<td rowspan="3">0102 0106 0112 0116 0122 0126 010A</td>
+<td>650–1250 (Turbo)</td>
+<td>6</td>
+<td rowspan="3">4.1</td>
+<td rowspan="3">10.1</td>
+<td rowspan="3">3.0</td>
+<td rowspan="3"></td>
+<td>21.3</td>
+<td rowspan="3">1720</td>
+<td rowspan="3">Full</td>
+<td rowspan="3">Full</td>
+<td rowspan="3">Full</td>
+</tr>
+<tr>
+<td rowspan="2">HD Graphics 3000</td>
+<td>Desktop</td>
+<td>Core i5-2x00K<br />
+Core i7-2x00K</td>
+<td>650–1350 (Turbo)</td>
+<td rowspan="2">12</td>
+<td>21.3</td>
+</tr>
+<tr>
+<td>Mobile</td>
+<td>Core i3, Core i5, Core i7</td>
+<td>350–1300 (Turbo)</td>
+<td>21.3</td>
+</tr>
+<tr>
+<td></td>
+<td></td>
+<td></td>
+<td><a href="/wiki/Ivy_Bridge_(microarchitecture)" title="Ivy Bridge (microarchitecture)" class="mw-redirect">Ivy Bridge</a></td>
+<td>0080</td>
+<td></td>
+<td></td>
+<td>5.0</td>
+<td>11</td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+</tr>
+<tr>
+<th rowspan="2">Graphics</th>
+<th rowspan="2">Market</th>
+<th rowspan="2"><a href="/wiki/List_of_Intel_chipsets" title="List of Intel chipsets">Chipset</a>/<a href="/wiki/List_of_Intel_microprocessors" title="List of Intel microprocessors">CPU</a></th>
+<th rowspan="2">Code Name</th>
+<th rowspan="2">Device ID</th>
+<th rowspan="2">Core Render<br />
+<a href="/wiki/Clock_rate" title="Clock rate">Clock</a> (<a href="/wiki/Hertz" title="Hertz">MHz</a>)</th>
+<th rowspan="2">Execution Units</th>
+<th rowspan="2"><a href="/wiki/Shader">Shader</a> Model<br />
+(<a href="/wiki/Unified_shader_model" title="Unified shader model">Unified Shader</a>)</th>
+<th colspan="3"><a href="/wiki/Application_Programming_Interface" title="Application Programming Interface" class="mw-redirect">API</a> Support</th>
+<th rowspan="2"><a href="/wiki/Memory_Bandwidth" class="mw-redirect" title="Memory Bandwidth">Memory Bandwidth</a> (<a href="/wiki/Data_rate_units#Gigabyte_per_second" title="Data rate units">GB/s</a>)</th>
+<th rowspan="2"><a href="/wiki/DVMT">DVMT</a> (<a href="/wiki/Megabyte" title="Megabyte">MB</a>)</th>
+<th colspan="3">Hardware Acceleration</th>
+</tr>
+<tr>
+<th><a href="/wiki/DirectX">DirectX</a></th>
+<th><a href="/wiki/OpenGL">OpenGL</a></th>
+<th><a href="/wiki/OpenCL">OpenCL</a></th>
+<th><a href="/wiki/MPEG-2">MPEG-2</a></th>
+<th><a href="/wiki/VC-1">VC-1</a></th>
+<th><a href="/wiki/H.264/MPEG-4_AVC" title="H.264/MPEG-4 AVC">AVC</a></th>
+</tr>
+<tr>
+<td>Knights Ferry</td>
+<td>Desktop</td>
+<td>stand-alone <a href="/wiki/Graphics_Processing_Unit" title="Graphics Processing Unit" class="mw-redirect">GPU</a></td>
+<td><a href="/wiki/Larrabee_(microarchitecture)" title="Larrabee (microarchitecture)">Larrabee</a></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+<td></td>
+</tr>
+</table>
+<p>This table is derived from these sources:<sup id="cite_ref-Intel_guide_2-8" class="reference"><a href="#cite_note-Intel_guide-2"><span>[</span>3<span>]</span></a></sup><sup id="cite_ref-Xtechgmas_3-1" class="reference"><a href="#cite_note-Xtechgmas-3"><span>[</span>4<span>]</span></a></sup><sup id="cite_ref-Intel_946GZ_4-1" class="reference"><a href="#cite_note-Intel_946GZ-4"><span>[</span>5<span>]</span></a></sup><sup id="cite_ref-Intel_2_5-3" class="reference"><a href="#cite_note-Intel_2-5"><span>[</span>6<span>]</span></a></sup><sup id="cite_ref-TRG965_10-2" class="reference"><a href="#cite_note-TRG965-10"><span>[</span>11<span>]</span></a></sup><sup id="cite_ref-GMA900Brief_25-1" class="reference"><a href="#cite_note-GMA900Brief-25"><span>[</span>26<span>]</span></a></sup><sup id="cite_ref-G33datasheet_27-1" class="reference"><a href="#cite_note-G33datasheet-27"><span>[</span>28<span>]</span></a></sup><sup id="cite_ref-intel317363_30-1" class="reference"><a href="#cite_note-intel317363-30"><span>[</span>31<span>]</span></a></sup><sup id="cite_ref-intel31627303_31-2" class="reference"><a href="#cite_note-intel31627303-31"><span>[</span>32<span>]</span></a></sup><sup id="cite_ref-intel319970_32-1" class="reference"><a href="#cite_note-intel319970-32"><span>[</span>33<span>]</span></a></sup><sup id="cite_ref-intel320122_33-2" class="reference"><a href="#cite_note-intel320122-33"><span>[</span>34<span>]</span></a></sup><sup id="cite_ref-int30921904_34-0" class="reference"><a href="#cite_note-int30921904-34"><span>[</span>35<span>]</span></a></sup><sup id="cite_ref-946exds_35-0" class="reference"><a href="#cite_note-946exds-35"><span>[</span>36<span>]</span></a></sup><sup id="cite_ref-vrzonegm47_36-0" class="reference"><a href="#cite_note-vrzonegm47-36"><span>[</span>37<span>]</span></a></sup><sup id="cite_ref-Intel910GMLdoc_37-0" class="reference"><a href="#cite_note-Intel910GMLdoc-37"><span>[</span>38<span>]</span></a></sup><sup id="cite_ref-dd915945gm_38-0" class="reference"><a href="#cite_note-dd915945gm-38"><span>[</span>39<span>]</span></a></sup><sup id="cite_ref-intel31760701_39-0" class="reference"><a href="#cite_note-intel31760701-39"><span>[</span>40<span>]</span></a></sup><sup id="cite_ref-GMA900WhitePaper_40-0" class="reference"><a href="#cite_note-GMA900WhitePaper-40"><span>[</span>41<span>]</span></a></sup><sup id="cite_ref-GMA950Brief_41-0" class="reference"><a href="#cite_note-GMA950Brief-41"><span>[</span>42<span>]</span></a></sup><sup id="cite_ref-IntelX4500Dev_42-0" class="reference"><a href="#cite_note-IntelX4500Dev-42"><span>[</span>43<span>]</span></a></sup><sup id="cite_ref-AsusBoard1_43-0" class="reference"><a href="#cite_note-AsusBoard1-43"><span>[</span>44<span>]</span></a></sup><sup id="cite_ref-AsusBoard3_44-0" class="reference"><a href="#cite_note-AsusBoard3-44"><span>[</span>45<span>]</span></a></sup><sup id="cite_ref-AsusBoard2_45-0" class="reference"><a href="#cite_note-AsusBoard2-45"><span>[</span>46<span>]</span></a></sup><sup id="cite_ref-WDDM_46-0" class="reference"><a href="#cite_note-WDDM-46"><span>[</span>47<span>]</span></a></sup><sup id="cite_ref-intelgfxref_47-0" class="reference"><a href="#cite_note-intelgfxref-47"><span>[</span>48<span>]</span></a></sup><sup id="cite_ref-915GMdatasheet_48-0" class="reference"><a href="#cite_note-915GMdatasheet-48"><span>[</span>49<span>]</span></a></sup><sup id="cite_ref-Intel82G965_49-0" class="reference"><a href="#cite_note-Intel82G965-49"><span>[</span>50<span>]</span></a></sup><sup id="cite_ref-IntelSCHdatasheet_50-0" class="reference"><a href="#cite_note-IntelSCHdatasheet-50"><span>[</span>51<span>]</span></a></sup><sup id="cite_ref-IntelSCHspecupd_51-0" class="reference"><a href="#cite_note-IntelSCHspecupd-51"><span>[</span>52<span>]</span></a></sup><sup id="cite_ref-IntelGDC20080221_Graphics_52-0" class="reference"><a href="#cite_note-IntelGDC20080221_Graphics-52"><span>[</span>53<span>]</span></a></sup><sup id="cite_ref-IntelNotesXP14.36.3.4990_53-0" class="reference"><a href="#cite_note-IntelNotesXP14.36.3.4990-53"><span>[</span>54<span>]</span></a></sup><sup id="cite_ref-IntelNotesVista15.11.2_54-0" class="reference"><a href="#cite_note-IntelNotesVista15.11.2-54"><span>[</span>55<span>]</span></a></sup><sup id="cite_ref-IntelXorgOpenGL2.1_55-0" class="reference"><a href="#cite_note-IntelXorgOpenGL2.1-55"><span>[</span>56<span>]</span></a></sup></p>
+<p>Notes:</p>
+<ul>
+<li>VLD: <a href="/wiki/Variable-length_code">Variable-length code</a> (sometimes referred to as slice-level acceleration)</li>
+<li>iDCT: Inverse <a href="/wiki/Discrete_cosine_transform">discrete cosine transform</a></li>
+<li>iMDCT: Inverse <a href="/wiki/Modified_discrete_cosine_transform">modified discrete cosine transform</a></li>
+<li>MC: <a href="/wiki/Motion_compensation">Motion compensation</a></li>
+</ul>
+<ul>
+<li>LF: In-loop <a href="/wiki/Deblocking_filter_(video)" title="Deblocking filter (video)">deblocking filter</a></li>
+<li>WMV9: <a href="/wiki/Windows_Media_Video" title="Windows Media Video">Windows Media Video 9</a> codec</li>
+<li>Full hardware acceleration:
+<ul>
+<li>MPEG-2: VLD, iDCT, and MC</li>
+<li>VC-1: VLD, iMDCT, MC, and LF</li>
+<li>AVC: VLD, iMDCT, MC, and LF</li>
+</ul>
+</li>
+</ul>
+<h2><span class="editsection">[<a href="/w/index.php?title=Intel_GMA&amp;action=edit&amp;section=14" title="Edit section: Software support">edit</a>]</span> <span class="mw-headline" id="Software_support">Software support</span></h2>
+<h3><span class="editsection">[<a href="/w/index.php?title=Intel_GMA&amp;action=edit&amp;section=15" title="Edit section: Mac OS X">edit</a>]</span> <span class="mw-headline" id="Mac_OS_X">Mac OS X</span></h3>
+<p>Mac OS X 10.4 supports the GMA 950, since it was used in previous revisions of the <a href="/wiki/MacBook">MacBook</a> and 17-inch <a href="/wiki/IMac" title="IMac">iMacs</a>.<sup id="cite_ref-56" class="reference"><a href="#cite_note-56"><span>[</span>57<span>]</span></a></sup> It has been used in all Intel-based Mac minis (until the Mac Mini released on March 3, 2009).<sup id="cite_ref-macmini_57-0" class="reference"><a href="#cite_note-macmini-57"><span>[</span>58<span>]</span></a></sup> Mac OS X 10.5 Leopard contains drivers for the GMA X3100, which were used in a recent revision of the MacBook range.<sup id="cite_ref-58" class="reference"><a href="#cite_note-58"><span>[</span>59<span>]</span></a></sup></p>
+<p>Late-release versions of Mac OS X 10.4 also support the GMA 900 due to its use in the Apple Developer Transition Kit, which was used in the PowerPC-to-Intel transition. However, special modifications to the <a href="/wiki/Kext" class="mw-redirect" title="Kext">kext</a> file must be made to enable Core Image and Quartz Extreme.</p>
+<p>Although the new MacBook line no longer uses the X3100, Mac OS X 10.5 (Leopard) ships with drivers supporting it that require no modifications to the <a href="/wiki/Kext" class="mw-redirect" title="Kext">kext</a> file. Mac OS X 10.6 (Snow Leopard), which includes a new 64-bit kernel in addition to the 32-bit one, does not include 64-bit X3100 drivers.<sup class="Template-Fact" title="This claim needs references to reliable sources from November 2009" style="white-space:nowrap;">[<i><a href="/wiki/Wikipedia:Citation_needed" title="Wikipedia:Citation needed">citation needed</a></i>]</sup> This means that although the MacBooks with the X3100 have 64-bit capable processors and EFI, Mac OS X must load the 32-bit kernel to support the 32-bit X3100 drivers.<sup class="Template-Fact" title="This claim needs references to reliable sources from November 2009" style="white-space:nowrap;">[<i><a href="/wiki/Wikipedia:Citation_needed" title="Wikipedia:Citation needed">citation needed</a></i>]</sup> November 9's 10.6.2 update ships with 64-bit X3100 drivers.<sup class="Template-Fact" title="This claim needs references to reliable sources from November 2009" style="white-space:nowrap;">[<i><a href="/wiki/Wikipedia:Citation_needed" title="Wikipedia:Citation needed">citation needed</a></i>]</sup></p>
+<p>For a while MacBook and MacBook Pro notebooks instead shipped with a far more powerful<sup id="cite_ref-59" class="reference"><a href="#cite_note-59"><span>[</span>60<span>]</span></a></sup> NVIDIA GeForce 9400M,<sup id="cite_ref-60" class="reference"><a href="#cite_note-60"><span>[</span>61<span>]</span></a></sup> and the 15" and 17" MacBook Pro notebooks shipped with an additional GeForce 9600GT supporting hybrid power to switch between GPUs. The NVIDIA GeForce 9400M chipset implemented in Apple Macbooks did not support composite or S-video output.<sup id="cite_ref-61" class="reference"><a href="#cite_note-61"><span>[</span>62<span>]</span></a></sup></p>
+<p>Current (Mid 2010) Macbook Pro Models have an on-board Intel HD (GMA HD) graphics chip as well as a discrete Nvidia 300M series card that supports hybrid power to switch the output.<sup id="cite_ref-62" class="reference"><a href="#cite_note-62"><span>[</span>63<span>]</span></a></sup></p>
+<h3><span class="editsection">[<a href="/w/index.php?title=Intel_GMA&amp;action=edit&amp;section=16" title="Edit section: FreeBSD">edit</a>]</span> <span class="mw-headline" id="FreeBSD">FreeBSD</span></h3>
+<p>FreeBSD 8.0 supports the following Intel graphic chipsets: G945/GME945/G965/Q965/GM965/GL960/GME965/G31/G33/Q33/Q35/G35/G41/G43/G45/Q43/Q45.<sup class="Template-Fact" title="This claim needs references to reliable sources from February 2010" style="white-space:nowrap;">[<i><a href="/wiki/Wikipedia:Citation_needed" title="Wikipedia:Citation needed">citation needed</a></i>]</sup> GMA3150, to date, is unsupported by version 2.7 of the driver which ships with FreeBSD 8.0, 8.1RCs, and 9.0.</p>
+<h3><span class="editsection">[<a href="/w/index.php?title=Intel_GMA&amp;action=edit&amp;section=17" title="Edit section: Linux">edit</a>]</span> <span class="mw-headline" id="Linux">Linux</span></h3>
+<p>Intel has had a long history of producing or commissioning open source drivers for its graphics chips, with all chipsets (except the GMA&#160;500) dating back to the i810 having open 2D and 3D drivers for Linux. Intel is the only major graphics hardware vendor to do so. (For an analysis by company see <a href="/wiki/Graphics_hardware_and_FOSS">Graphics hardware and FOSS</a>.)</p>
+<p>In August 2006, Intel added support to the open-source <a href="/wiki/X.Org">X.Org</a>/<a href="/wiki/XFree86">XFree86</a> drivers for the latest 965 series that include the GMA (X)3000 core.<sup id="cite_ref-63" class="reference"><a href="#cite_note-63"><span>[</span>64<span>]</span></a></sup> These drivers were developed for Intel by <a href="/w/index.php?title=Tungsten_Graphics&amp;action=edit&amp;redlink=1" class="new" title="Tungsten Graphics (page does not exist)">Tungsten Graphics</a>.<sup id="cite_ref-64" class="reference"><a href="#cite_note-64"><span>[</span>65<span>]</span></a></sup></p>
+<p>In May 2007, version 2.0 of the driver (xorg-video-intel) was released, which added support for the 965GM chipset. In addition, the 2.0 driver added native video mode programming support for all chipsets from i830 forward. This version added support for automatic video mode detection and selection, monitor hot plug, dynamic extended and merged desktops and per-monitor screen rotation. These features are built in to the X.Org 7.3 X server release and will eventually be supported across most of the open source X.Org video drivers.<sup id="cite_ref-65" class="reference"><a href="#cite_note-65"><span>[</span>66<span>]</span></a></sup> Version 2.1, released in July 2007, added support for the G33, Q33 and Q35 chipsets.<sup id="cite_ref-66" class="reference"><a href="#cite_note-66"><span>[</span>67<span>]</span></a></sup> G35 is also supported by the Linux driver.<sup id="cite_ref-67" class="reference"><a href="#cite_note-67"><span>[</span>68<span>]</span></a></sup></p>
+<p>As is common for X.Org drivers on Linux, the license is a combination of <a href="/wiki/GNU_General_Public_License" title="GNU General Public License">GPL</a> (for the Linux kernel parts) and <a href="/wiki/MIT_License" title="MIT License">MIT</a> (for all other parts).<sup id="cite_ref-68" class="reference"><a href="#cite_note-68"><span>[</span>69<span>]</span></a></sup></p>
+<p>The drivers were mainly developed by Intel and Tungsten Graphics (under contract) since the chipsets' documentation were not publicly available for a long time. In January 2008, Intel released the complete developer documentation for their, at the time, latest chipsets (965 and G35 chipset), allowing for further external developers’ involvement.<sup id="cite_ref-69" class="reference"><a href="#cite_note-69"><span>[</span>70<span>]</span></a></sup><sup id="cite_ref-70" class="reference"><a href="#cite_note-70"><span>[</span>71<span>]</span></a></sup> In April 2009, Intel released documentation for their newer G45 graphics (including X4500) chipsets.<sup id="cite_ref-71" class="reference"><a href="#cite_note-71"><span>[</span>72<span>]</span></a></sup> In May 2009, Intel employee Eric Anholt stated Intel was "still working on getting docs for [8xx] chipsets out."<sup id="cite_ref-72" class="reference"><a href="#cite_note-72"><span>[</span>73<span>]</span></a></sup></p>
+<h4><span class="editsection">[<a href="/w/index.php?title=Intel_GMA&amp;action=edit&amp;section=18" title="Edit section: intel hal.so">edit</a>]</span> <span class="mw-headline" id="intel_hal.so">intel_hal.so</span></h4>
+<p>The driver source contains references to a currently-unavailable binary named "intel_hal.so". It is entirely optional, and the advantages are not clear; ostensibly they are increased performance and/or additional features. References in the open source code indicate that it contains or contained (at least) <a href="/wiki/Macrovision#Macrovision_for_video" class="mw-redirect" title="Macrovision">Macrovision</a> support and some minor, optional 3D optimization routines. Calls to the Macrovision code inside the binary were later removed from the 2D driver.<sup id="cite_ref-73" class="reference"><a href="#cite_note-73"><span>[</span>74<span>]</span></a></sup><sup id="cite_ref-74" class="reference"><a href="#cite_note-74"><span>[</span>75<span>]</span></a></sup></p>
+<h4><span class="editsection">[<a href="/w/index.php?title=Intel_GMA&amp;action=edit&amp;section=19" title="Edit section: GMA 500 on Linux">edit</a>]</span> <span class="mw-headline" id="GMA_500_on_Linux">GMA 500 on Linux</span></h4>
+<p>GMA 500 support on Linux is not optimal. The driver is developed by Tungsten Graphics, not by Intel, and the graphic core is not an Intel one, but is licensed from PowerVR. This has led to an uncertain mix of open and closed source 3d accelerated drivers, instability and lack of support.</p>
+<p>Ubuntu is the Linux distribution that best supports GMA500 (Poulsbo), through the use of the ubuntu-mobile and gma500 repositories on <a href="/wiki/Launchpad_(website)" title="Launchpad (website)">Launchpad</a>. Support is present for 8.04, 8.10, 9.04, 9.10 and in an experimental way for 10.04 and 10.10, but the installation procedure is not as simple as other drivers and can lead to many bugs.<sup id="cite_ref-75" class="reference"><a href="#cite_note-75"><span>[</span>76<span>]</span></a></sup></p>
+<p><a href="/wiki/Jolicloud">Jolicloud</a>, a Linux based OS optimized for netbooks, has a driver for the GMA500 built in.</p>
+<p><a href="http://www.pixielive.org" class="external text" rel="nofollow">PixieLive</a>, a GNU/Linux live distribution optimized for GMA500 netbooks, it can boot from USB Pendrive, SD Card or HardDisk.</p>
+<p>Intel releases official Linux drivers through the IEGD (Intel Embedded Graphic Driver) supporting some Linux distributions dedicated to the embedded market.</p>
+<p>GMA500 is capable of running well in Ubuntu 9.10 with Compiz visual effects activated.<sup id="cite_ref-76" class="reference"><a href="#cite_note-76"><span>[</span>77<span>]</span></a></sup></p>
+<p>In November 2009, the <a href="/wiki/Linux_Foundation">Linux Foundation</a> released the details of a new, rewritten Linux driver that would support this chipset and Intel's other upcoming chipsets. The <a href="/wiki/Direct_Rendering_Manager">Direct Rendering Manager</a> and <a href="/wiki/X.Org_Server" title="X.Org Server">X.org</a> parts would be free software, but the 3D component (using <a href="/wiki/Gallium3D">Gallium3D</a>) will still be proprietary.<sup id="cite_ref-77" class="reference"><a href="#cite_note-77"><span>[</span>78<span>]</span></a></sup></p>
+<h3><span class="editsection">[<a href="/w/index.php?title=Intel_GMA&amp;action=edit&amp;section=20" title="Edit section: Solaris">edit</a>]</span> <span class="mw-headline" id="Solaris">Solaris</span></h3>
+<p>Solaris may possibly have support for these chipsets.<sup class="noprint Inline-Template" title="The material in the vicinity of this tag may be based upon unreliable original research from September 2009" style="white-space:nowrap;">[<i><a href="/wiki/Wikipedia:No_original_research" title="Wikipedia:No original research">original research?</a></i>]</sup> Scant information can be found on the Opensolaris DRI page.<sup id="cite_ref-78" class="reference"><a href="#cite_note-78"><span>[</span>79<span>]</span></a></sup></p>
+<h3><span class="editsection">[<a href="/w/index.php?title=Intel_GMA&amp;action=edit&amp;section=21" title="Edit section: Microsoft Windows">edit</a>]</span> <span class="mw-headline" id="Microsoft_Windows">Microsoft Windows</span></h3>
+<h4><span class="editsection">[<a href="/w/index.php?title=Intel_GMA&amp;action=edit&amp;section=22" title="Edit section: GMA 900 on Windows">edit</a>]</span> <span class="mw-headline" id="GMA_900_on_Windows">GMA 900 on Windows</span></h4>
+<p>The GMA 900 is theoretically capable of running Windows Vista’s <a href="/wiki/Windows_Aero" title="Windows Aero">Aero</a> interface and is certified as DirectX 9 compliant. However, no WHQL certified WDDM driver has been made available. Presumably this is due to the lack of a "hardware scheduler" in the GPU.<sup id="cite_ref-79" class="reference"><a href="#cite_note-79"><span>[</span>80<span>]</span></a></sup></p>
+<p>Many owners of GMA900 hardware believed they would be able to run Aero on their systems as early release candidates of Vista permitted XDDM drivers to run Aero. Intel, however, contends that Microsoft's final specs for Aero/WDDM certification did not permit releasing a WDDM driver for GMA900 (due to issues with the hardware scheduler, as mentioned above), so when the final version of Vista was released, no WDDM driver was released.<sup id="cite_ref-80" class="reference"><a href="#cite_note-80"><span>[</span>81<span>]</span></a></sup> The last minute pulling of OpenGL capabilities from the GMA drivers for Windows Vista left a large number of GMA based workstations unable to perform basic 3D hardware acceleration with OpenGL and unable to run many Vista Premium applications such as <a href="/wiki/Windows_DVD_Maker">Windows DVD Maker</a>. To get OpenGL acceleration, users must use third party drivers, like the freeware <a href="http://TitaniumGL.tk" class="external text" rel="nofollow">TitaniumGL</a>.</p>
+<h4><span class="editsection">[<a href="/w/index.php?title=Intel_GMA&amp;action=edit&amp;section=23" title="Edit section: GMA 950 on Windows">edit</a>]</span> <span class="mw-headline" id="GMA_950_on_Windows">GMA 950 on Windows</span></h4>
+<p>This IGP is capable of displaying the <a href="/wiki/Windows_Aero" title="Windows Aero">Aero</a> interface for <a href="/wiki/Windows_Vista">Windows Vista</a>. Drivers have shipped with Windows Vista since beta versions were made available in mid-2006. It can also run <a href="/wiki/Windows_7">Windows 7</a>'s Aero interface since Intel released drivers for Windows 7 in mid-June 2009.</p>
+<p>The GMA 950 is integrated into many <a href="/wiki/Netbook" title="Netbook">netbooks</a>, such as the <a href="/wiki/Acer_Aspire_One">Acer Aspire One</a>, and is able to display a resolution up to 2048×1536 at 75&#160;Hz and up to 224 MB of video memory.<sup id="cite_ref-81" class="reference"><a href="#cite_note-81"><span>[</span>82<span>]</span></a></sup></p>
+<p>Most of the reviews about this IGP were negative, since many games (such as <i><a href="/wiki/Splinter_Cell:_Chaos_Theory" class="mw-redirect" title="Splinter Cell: Chaos Theory">Splinter Cell: Chaos Theory</a></i> or <i><a href="/wiki/The_Elder_Scrolls_IV:_Oblivion" title="The Elder Scrolls IV: Oblivion">Oblivion</a></i>) need both Pixel Shader 2.0 or higher, which the GMA supports, and Vertex Shader 2.0, which is not supported in hardware on the GMA and is software-driven. Other games such as <i><a href="/wiki/Crysis">Crysis</a></i> will run but may not work at frame rates fast enough to make the game playable.</p>
+<h4><span class="editsection">[<a href="/w/index.php?title=Intel_GMA&amp;action=edit&amp;section=24" title="Edit section: GMA X3000/X3100 on Windows">edit</a>]</span> <span class="mw-headline" id="GMA_X3000.2FX3100_on_Windows">GMA X3000/X3100 on Windows</span></h4>
+<p>T&amp;L and Vertex Shaders 3.0 are supported by Intel's newest 15.6 drivers for Windows Vista as of September 2, 2007. XP support for VS3 and T&amp;L was introduced on August 10, 2007. Intel announced in March 2007 that beta drivers would be available in June 2007.<sup id="cite_ref-82" class="reference"><a href="#cite_note-82"><span>[</span>83<span>]</span></a></sup><sup id="cite_ref-83" class="reference"><a href="#cite_note-83"><span>[</span>84<span>]</span></a></sup> On June 1, 2007 "pre-beta" (or Early Beta) drivers were released for Windows XP (but not for Vista).<sup id="cite_ref-84" class="reference"><a href="#cite_note-84"><span>[</span>85<span>]</span></a></sup> Beta drivers for Vista and XP were released on June 19.<sup id="cite_ref-85" class="reference"><a href="#cite_note-85"><span>[</span>86<span>]</span></a></sup> Since hardware T&amp;L and vertex shading has been enabled in drivers individual applications can be forced to fall back to software rendering,<sup id="cite_ref-86" class="reference"><a href="#cite_note-86"><span>[</span>87<span>]</span></a></sup> which raises performance and compatibility in certain cases. Selection is based on testing by Intel and preselected in the driver .inf file.</p>
+<p>Intel has released production version drivers for <a href="http://downloadfinder.intel.com/scripts-df-external/Detail_Desc.aspx?agr=N&amp;ProductID=2576&amp;DwnldID=12415&amp;strOSs=163&amp;OSFullName=Windows%20Vista*&amp;lang=eng" class="external text" rel="nofollow">32-bit</a> and <a href="http://downloadfinder.intel.com/scripts-df-external/Detail_Desc.aspx?agr=N&amp;ProductID=2576&amp;DwnldID=12417&amp;strOSs=150&amp;OSFullName=Windows%20Vista*%2064&amp;lang=eng" class="external text" rel="nofollow">64-bit</a> <a href="/wiki/Windows_Vista">Windows Vista</a> that enable the <a href="/wiki/Windows_Aero" title="Windows Aero">Aero</a> graphics. Intel introduced <a href="/wiki/Direct_X" class="mw-redirect" title="Direct X">Direct X</a> 10 for the X3100 and X3500 GPUs in the Vista 15.9 drivers, though any release of DX10 drivers for the X3000 is uncertain. <a href="/wiki/Windows_Display_Driver_Model" title="Windows Display Driver Model">WDDM</a> 1.1 is supported by X3100 but <a href="/wiki/DirectX_Video_Acceleration" title="DirectX Video Acceleration">DXVA-HD</a> is not.</p>
+<p>OpenGL 2.0 support is available since Vista 15.11 drivers<sup id="cite_ref-87" class="reference"><a href="#cite_note-87"><span>[</span>88<span>]</span></a></sup> and XP 14.36 drivers.<sup id="cite_ref-88" class="reference"><a href="#cite_note-88"><span>[</span>89<span>]</span></a></sup></p>
+<h4><span class="editsection">[<a href="/w/index.php?title=Intel_GMA&amp;action=edit&amp;section=25" title="Edit section: GMA 500 on Windows">edit</a>]</span> <span class="mw-headline" id="GMA_500_on_Windows">GMA 500 on Windows</span></h4>
+<p>As of September 2010, the latest available driver revisions from the Intel website for Windows XP, Vista and 7 are:<sup id="cite_ref-89" class="reference"><a href="#cite_note-89"><span>[</span>90<span>]</span></a></sup></p>
+<ul>
+<li>Version 3.3.0 for Windows XP.</li>
+<li>Version 4.0.2 for Windows Vista.</li>
+<li>Version 5.0.0.2030 for Windows 7.</li>
+</ul>
+<h2><span class="editsection">[<a href="/w/index.php?title=Intel_GMA&amp;action=edit&amp;section=26" title="Edit section: Modern gaming">edit</a>]</span> <span class="mw-headline" id="Modern_gaming">Modern gaming</span></h2>
+<p>The performance and functionality of GMA processors are limited relative to discrete GPUs. Some features of games and other 3D applications may be unsupported by GMAs, particularly older ones. The GMA X3x00's unified shader design allows for more complete hardware functionality, but the line still has issues with some games and has significantly limited performance.<sup id="cite_ref-90" class="reference"><a href="#cite_note-90"><span>[</span>91<span>]</span></a></sup></p>
+<p>Intel has put up a page with 'Known Issues &amp; Solutions' for each version.<sup id="cite_ref-91" class="reference"><a href="#cite_note-91"><span>[</span>92<span>]</span></a></sup> For Intel Graphics Media Accelerator Software Development concerns, there is the Integrated Graphics Software Development Forum.<sup id="cite_ref-92" class="reference"><a href="#cite_note-92"><span>[</span>93<span>]</span></a></sup></p>
+<h2><span class="editsection">[<a href="/w/index.php?title=Intel_GMA&amp;action=edit&amp;section=27" title="Edit section: Microsoft Windows performance reviews">edit</a>]</span> <span class="mw-headline" id="Microsoft_Windows_performance_reviews">Microsoft Windows performance reviews</span></h2>
+<h3><span class="editsection">[<a href="/w/index.php?title=Intel_GMA&amp;action=edit&amp;section=28" title="Edit section: GMA X3000 review">edit</a>]</span> <span class="mw-headline" id="GMA_X3000_review">GMA X3000 review</span></h3>
+<p>A review conducted in April 2007 by <a href="/wiki/The_Tech_Report">The Tech Report</a> determined that the GMA X3000 had performance comparable to the <a href="/wiki/Comparison_of_Nvidia_graphics_processing_units#GeForce_6_series" title="Comparison of Nvidia graphics processing units">Nvidia GeForce 6150</a>.<sup id="cite_ref-autogenerated5_93-0" class="reference"><a href="#cite_note-autogenerated5-93"><span>[</span>94<span>]</span></a></sup> During that review the GMA X3000 was unable to run the <a href="/wiki/PC_games" class="mw-redirect" title="PC games">PC games</a> <a href="/wiki/Battlefield_2">Battlefield 2</a> and <a href="/wiki/The_Elder_Scrolls_IV:_Oblivion" title="The Elder Scrolls IV: Oblivion">Oblivion</a>.<sup id="cite_ref-94" class="reference"><a href="#cite_note-94"><span>[</span>95<span>]</span></a></sup> However, the <a href="/wiki/ExtremeTech">ExtremeTech</a> review found that games which aren't as graphically demanding, such as <a href="/wiki/Sims_2" class="mw-redirect" title="Sims 2">Sims 2</a> and <a href="/wiki/Civilization_4" class="mw-redirect" title="Civilization 4">Civilization 4</a>, "look good" when the GMA X3000 is used to run them.<sup id="cite_ref-95" class="reference"><a href="#cite_note-95"><span>[</span>96<span>]</span></a></sup></p>
+<p>Reviews performed by The Tech Report, by <a href="/wiki/ExtremeTech">ExtremeTech</a> and by <a href="/wiki/Anandtech" class="mw-redirect" title="Anandtech">Anandtech</a> all concluded that the <a href="/wiki/AMD" class="mw-redirect" title="AMD">AMD</a>'s <a href="/wiki/AMD_690G#690G" title="AMD 690G" class="mw-redirect">Radeon X1250</a> <a href="/wiki/Integrated_graphics#Integrated_graphics_solutions" title="Integrated graphics" class="mw-redirect">integrated graphics solutions</a> based on the <a href="/wiki/AMD_690G" class="mw-redirect" title="AMD 690G">AMD 690G</a> chipset was a better choice than the GMA X3000 based on the G965 chipset, especially when considering 3D gaming performance and price.<sup id="cite_ref-autogenerated5_93-1" class="reference"><a href="#cite_note-autogenerated5-93"><span>[</span>94<span>]</span></a></sup><sup id="cite_ref-96" class="reference"><a href="#cite_note-96"><span>[</span>97<span>]</span></a></sup><sup id="cite_ref-97" class="reference"><a href="#cite_note-97"><span>[</span>98<span>]</span></a></sup></p>
+<h3><span class="editsection">[<a href="/w/index.php?title=Intel_GMA&amp;action=edit&amp;section=29" title="Edit section: GMA X3500 review">edit</a>]</span> <span class="mw-headline" id="GMA_X3500_review">GMA X3500 review</span></h3>
+<p>In a review performed by Register Hardware in December 2007,<sup id="cite_ref-autogenerated1_12-2" class="reference"><a href="#cite_note-autogenerated1-12"><span>[</span>13<span>]</span></a></sup> author Leo Waldock argued that because the GMA X3500 is not capable of running any <a href="/wiki/PC_game" class="mw-redirect" title="PC game">PC game</a> that requires <a href="/wiki/DirectX_10" class="mw-redirect" title="DirectX 10">DirectX 10</a>, the addition of <a href="/wiki/DirectX_10" class="mw-redirect" title="DirectX 10">DirectX 10</a> support to the GMA X3500 was "irrelevant".<sup id="cite_ref-autogenerated4_98-0" class="reference"><a href="#cite_note-autogenerated4-98"><span>[</span>99<span>]</span></a></sup> During that same review, the GMA X3500 was used to run the <a href="/wiki/PC_game" title="PC game" class="mw-redirect">PC games</a> <a href="/wiki/Crysis">Crysis</a> and <a href="/wiki/FEAR_Extraction_Point" class="mw-redirect" title="FEAR Extraction Point">FEAR Extraction Point</a>, where it was able to render only 4 and 14 <a href="/wiki/Frames_per_second" class="mw-redirect" title="Frames per second">frames per second</a> respectively for each game.<sup id="cite_ref-99" class="reference"><a href="#cite_note-99"><span>[</span>100<span>]</span></a></sup> In the end the review concluded that overall the X3500 made "minimal advances" over the GMA X3000.<sup id="cite_ref-autogenerated4_98-1" class="reference"><a href="#cite_note-autogenerated4-98"><span>[</span>99<span>]</span></a></sup></p>
+<h3><span class="editsection">[<a href="/w/index.php?title=Intel_GMA&amp;action=edit&amp;section=30" title="Edit section: GMA X4500 review">edit</a>]</span> <span class="mw-headline" id="GMA_X4500_review">GMA X4500 review</span></h3>
+<p>In a review published in May 2008, the GMA X4500 showed a superior game performance to the lowest-end 1-year-older <a href="/wiki/Comparison_of_Nvidia_graphics_processing_units#GeForce_8_series" title="Comparison of Nvidia graphics processing units">GeForce 8400M</a> <a href="/wiki/Graphics_card" class="mw-redirect" title="Graphics card">graphics card</a> in some CPU-bound tests, while losing to the still low-end <a href="/wiki/Comparison_of_Nvidia_graphics_processing_units#GeForce_8M_series" title="Comparison of Nvidia graphics processing units">GeForce 8400M GS</a> with a slower CPU.<sup id="cite_ref-100" class="reference"><a href="#cite_note-100"><span>[</span>101<span>]</span></a></sup></p>
+<h3><span class="editsection">[<a href="/w/index.php?title=Intel_GMA&amp;action=edit&amp;section=31" title="Edit section: Sandy Bridge IGP">edit</a>]</span> <span class="mw-headline" id="Sandy_Bridge_IGP">Sandy Bridge IGP</span></h3>
+<p>In a review released by Anandtech in August 2010, the as-yet unnamed IGP in the upcoming Sandy Bridge CPUs was over two times faster than the previous GMA HD part, beating the ATI Radeon 5450 in some tests.<sup id="cite_ref-101" class="reference"><a href="#cite_note-101"><span>[</span>102<span>]</span></a></sup></p>
+<h2><span class="editsection">[<a href="/w/index.php?title=Intel_GMA&amp;action=edit&amp;section=32" title="Edit section: See also">edit</a>]</span> <span class="mw-headline" id="See_also">See also</span></h2>
+<ul>
+<li><a href="/wiki/Graphics_hardware_and_FOSS">Graphics hardware and FOSS</a></li>
+<li><a href="/wiki/Larrabee_(microarchitecture)" title="Larrabee (microarchitecture)">Larrabee</a></li>
+<li><a href="/wiki/Comparison_of_AMD_graphics_processing_units">Comparison of AMD graphics processing units</a></li>
+<li><a href="/wiki/Comparison_of_Nvidia_graphics_processing_units">Comparison of Nvidia graphics processing units</a></li>
+</ul>
+<h2><span class="editsection">[<a href="/w/index.php?title=Intel_GMA&amp;action=edit&amp;section=33" title="Edit section: References">edit</a>]</span> <span class="mw-headline" id="References">References</span></h2>
+<div class="reflist references-column-count references-column-count-2" style="column-count: 2; -moz-column-count: 2; -webkit-column-count: 2;">
+<div class="references">
+<ol>
+<li id="cite_note-0"><b><a href="#cite_ref-0">^</a></b> <span class="citation web">Key, Gary (2007-03-16). <a href="http://www.anandtech.com/cpuchipsets/showdoc.aspx?i=2948&amp;p=1" class="external text" rel="nofollow">"Intel G965: microATX Performance Update"</a>. <i>AnandTech</i><span class="printonly">. <a href="http://www.anandtech.com/cpuchipsets/showdoc.aspx?i=2948&amp;p=1" class="external free" rel="nofollow">http://www.anandtech.com/cpuchipsets/showdoc.aspx?i=2948&amp;p=1</a></span><span class="reference-accessdate">. Retrieved 2008-07-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Intel+G965%3A+microATX+Performance+Update&amp;rft.atitle=AnandTech&amp;rft.aulast=Key&amp;rft.aufirst=Gary&amp;rft.au=Key%2C%26%2332%3BGary&amp;rft.date=2007-03-16&amp;rft_id=http%3A%2F%2Fwww.anandtech.com%2Fcpuchipsets%2Fshowdoc.aspx%3Fi%3D2948%26p%3D1&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-Intel_945G-1"><b><a href="#cite_ref-Intel_945G_1-0">^</a></b> <span class="citation web"><a href="http://www.intel.com/Assets/PDF/datasheet/307502.pdf" class="external text" rel="nofollow">"Intel 945G/945GZ/945GC/ 945P/945PL Express Chipset Family - Datasheet"</a> (PDF)<span class="printonly">. <a href="http://www.intel.com/Assets/PDF/datasheet/307502.pdf" class="external free" rel="nofollow">http://www.intel.com/Assets/PDF/datasheet/307502.pdf</a></span><span class="reference-accessdate">. Retrieved 2010-05-27</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Intel+945G%2F945GZ%2F945GC%2F+945P%2F945PL+Express+Chipset+Family+-+Datasheet&amp;rft.atitle=&amp;rft_id=http%3A%2F%2Fwww.intel.com%2FAssets%2FPDF%2Fdatasheet%2F307502.pdf&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-Intel_guide-2">^ <a href="#cite_ref-Intel_guide_2-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-Intel_guide_2-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-Intel_guide_2-2"><sup><i><b>c</b></i></sup></a> <a href="#cite_ref-Intel_guide_2-3"><sup><i><b>d</b></i></sup></a> <a href="#cite_ref-Intel_guide_2-4"><sup><i><b>e</b></i></sup></a> <a href="#cite_ref-Intel_guide_2-5"><sup><i><b>f</b></i></sup></a> <a href="#cite_ref-Intel_guide_2-6"><sup><i><b>g</b></i></sup></a> <a href="#cite_ref-Intel_guide_2-7"><sup><i><b>h</b></i></sup></a> <a href="#cite_ref-Intel_guide_2-8"><sup><i><b>i</b></i></sup></a> <span class="citation web"><a href="http://download.intel.com/products/graphics/intel_graphics_guide.pdf" class="external text" rel="nofollow">"Intel Graphics&#160;— Built for mainstream Desktop and Mobile PC Users"</a> (PDF)<span class="printonly">. <a href="http://download.intel.com/products/graphics/intel_graphics_guide.pdf" class="external free" rel="nofollow">http://download.intel.com/products/graphics/intel_graphics_guide.pdf</a></span><span class="reference-accessdate">. Retrieved 2007-06-08</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Intel+Graphics%26nbsp%3B%E2%80%94+Built+for+mainstream+Desktop+and+Mobile+PC+Users&amp;rft.atitle=&amp;rft_id=http%3A%2F%2Fdownload.intel.com%2Fproducts%2Fgraphics%2Fintel_graphics_guide.pdf&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-Xtechgmas-3">^ <a href="#cite_ref-Xtechgmas_3-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-Xtechgmas_3-1"><sup><i><b>b</b></i></sup></a> Case, Loyd. <a href="http://www.extremetech.com/article2/0,1697,1821808,00.asp" class="external text" rel="nofollow">Intel GMA950 Integrated Graphics Core</a>, Extremetech, May 31, 2005.</li>
+<li id="cite_note-Intel_946GZ-4">^ <a href="#cite_ref-Intel_946GZ_4-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-Intel_946GZ_4-1"><sup><i><b>b</b></i></sup></a> <span class="citation web"><a href="http://www.intel.com/products/chipsets/946PL_946GZ/prodbrief.pdf" class="external text" rel="nofollow">"Product brief: The Intel 946GZ Express Chipset"</a> (PDF)<span class="printonly">. <a href="http://www.intel.com/products/chipsets/946PL_946GZ/prodbrief.pdf" class="external free" rel="nofollow">http://www.intel.com/products/chipsets/946PL_946GZ/prodbrief.pdf</a></span><span class="reference-accessdate">. Retrieved 2007-06-28</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Product+brief%3A+The+Intel+946GZ+Express+Chipset&amp;rft.atitle=&amp;rft_id=http%3A%2F%2Fwww.intel.com%2Fproducts%2Fchipsets%2F946PL_946GZ%2Fprodbrief.pdf&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-Intel_2-5">^ <a href="#cite_ref-Intel_2_5-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-Intel_2_5-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-Intel_2_5-2"><sup><i><b>c</b></i></sup></a> <a href="#cite_ref-Intel_2_5-3"><sup><i><b>d</b></i></sup></a> <span class="citation web"><a href="http://www.intel.com/products/chipsets/gma3000/gma3000.pdf" class="external text" rel="nofollow">"Intel’s Next Generation Integrated Graphics Architecture&#160;– Intel Graphics Media Accelerator X3000 and 3000"</a> (PDF)<span class="printonly">. <a href="http://www.intel.com/products/chipsets/gma3000/gma3000.pdf" class="external free" rel="nofollow">http://www.intel.com/products/chipsets/gma3000/gma3000.pdf</a></span><span class="reference-accessdate">. Retrieved 2007-06-08</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Intel%E2%80%99s+Next+Generation+Integrated+Graphics+Architecture%26nbsp%3B%E2%80%93+Intel+Graphics+Media+Accelerator+X3000+and+3000&amp;rft.atitle=&amp;rft_id=http%3A%2F%2Fwww.intel.com%2Fproducts%2Fchipsets%2Fgma3000%2Fgma3000.pdf&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-6"><b><a href="#cite_ref-6">^</a></b> <span class="citation web"><a href="http://developer.intel.com/design/chipsets/applnots/313343.htm" class="external text" rel="nofollow">"Intel's Next Generation Integrated Graphics Architecture&#160;— Intel Graphics Media Accelerator X3000 and 3000 White Paper"</a><span class="printonly">. <a href="http://developer.intel.com/design/chipsets/applnots/313343.htm" class="external free" rel="nofollow">http://developer.intel.com/design/chipsets/applnots/313343.htm</a></span><span class="reference-accessdate">. Retrieved 2007-10-19</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Intel%27s+Next+Generation+Integrated+Graphics+Architecture%26nbsp%3B%E2%80%94+Intel+Graphics+Media+Accelerator+X3000+and+3000+White+Paper&amp;rft.atitle=&amp;rft_id=http%3A%2F%2Fdeveloper.intel.com%2Fdesign%2Fchipsets%2Fapplnots%2F313343.htm&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-7"><b><a href="#cite_ref-7">^</a></b> <span class="citation web"><a href="http://www.extremetech.com/article2/0,2845,2121189,00.asp" class="external text" rel="nofollow">"Intel G965 with GMA X3000 Integrated Graphics&#160;— Intel GMA X3000 Graphics Subsystem&#160;— CPUs, Boards &amp; Components by ExtremeTech"</a>. Extremetech.com<span class="printonly">. <a href="http://www.extremetech.com/article2/0,2845,2121189,00.asp" class="external free" rel="nofollow">http://www.extremetech.com/article2/0,2845,2121189,00.asp</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Intel+G965+with+GMA+X3000+Integrated+Graphics%26nbsp%3B%E2%80%94+Intel+GMA+X3000+Graphics+Subsystem%26nbsp%3B%E2%80%94+CPUs%2C+Boards+%26+Components+by+ExtremeTech&amp;rft.atitle=&amp;rft.pub=Extremetech.com&amp;rft_id=http%3A%2F%2Fwww.extremetech.com%2Farticle2%2F0%2C2845%2C2121189%2C00.asp&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-8"><b><a href="#cite_ref-8">^</a></b> <span class="citation web">Waldock, Leo (2007-12-05). <a href="http://www.reghardware.co.uk/2007/12/05/review_asus_p5e_vm_hdmi/" class="external text" rel="nofollow">"Asus P5E-VM HDMI motherboard|Register Hardware"</a>. Reghardware.co.uk<span class="printonly">. <a href="http://www.reghardware.co.uk/2007/12/05/review_asus_p5e_vm_hdmi/" class="external free" rel="nofollow">http://www.reghardware.co.uk/2007/12/05/review_asus_p5e_vm_hdmi/</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Asus+P5E-VM+HDMI+motherboard%26%23124%3BRegister+Hardware&amp;rft.atitle=&amp;rft.aulast=Waldock&amp;rft.aufirst=Leo&amp;rft.au=Waldock%2C%26%2332%3BLeo&amp;rft.date=2007-12-05&amp;rft.pub=Reghardware.co.uk&amp;rft_id=http%3A%2F%2Fwww.reghardware.co.uk%2F2007%2F12%2F05%2Freview_asus_p5e_vm_hdmi%2F&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-9"><b><a href="#cite_ref-9">^</a></b> <span class="citation web"><a href="http://www.dailytech.com/2006+Intel+Desktop+Motherboard+Roadmap/article3063.htm" class="external text" rel="nofollow">"2006 Intel Desktop Motherboard Roadmap"</a>. DailyTech<span class="printonly">. <a href="http://www.dailytech.com/2006+Intel+Desktop+Motherboard+Roadmap/article3063.htm" class="external free" rel="nofollow">http://www.dailytech.com/2006+Intel+Desktop+Motherboard+Roadmap/article3063.htm</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=2006+Intel+Desktop+Motherboard+Roadmap&amp;rft.atitle=&amp;rft.pub=DailyTech&amp;rft_id=http%3A%2F%2Fwww.dailytech.com%2F2006%2BIntel%2BDesktop%2BMotherboard%2BRoadmap%2Farticle3063.htm&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-TRG965-10">^ <a href="#cite_ref-TRG965_10-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-TRG965_10-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-TRG965_10-2"><sup><i><b>c</b></i></sup></a> Gasior, Geoff. <a href="http://www.techreport.com/reviews/2007q2/intel-g965/index.x?pg=1" class="external text" rel="nofollow">Intel's G965 Express chipset</a>, Tech Report, April 5, 2007.</li>
+<li id="cite_note-Intel_82GM965_GL_Compatibility-11"><b><a href="#cite_ref-Intel_82GM965_GL_Compatibility_11-0">^</a></b> Intel, <a href="http://www.intel.com/support/graphics/sb/cs-010479.htm" class="external text" rel="nofollow">Intel 82GM965 OpenGL compatibility</a>, retrieved January 16, 2010</li>
+<li id="cite_note-autogenerated1-12">^ <a href="#cite_ref-autogenerated1_12-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-autogenerated1_12-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-autogenerated1_12-2"><sup><i><b>c</b></i></sup></a> <span class="citation web">Waldock, Leo (2007-12-05). <a href="http://www.reghardware.co.uk/2007/12/05/review_asus_p5e_vm_hdmi/page2.html" class="external text" rel="nofollow">"Asus P5E-VM HDMI motherboard|Register Hardware"</a>. Reghardware.co.uk<span class="printonly">. <a href="http://www.reghardware.co.uk/2007/12/05/review_asus_p5e_vm_hdmi/page2.html" class="external free" rel="nofollow">http://www.reghardware.co.uk/2007/12/05/review_asus_p5e_vm_hdmi/page2.html</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Asus+P5E-VM+HDMI+motherboard%26%23124%3BRegister+Hardware&amp;rft.atitle=&amp;rft.aulast=Waldock&amp;rft.aufirst=Leo&amp;rft.au=Waldock%2C%26%2332%3BLeo&amp;rft.date=2007-12-05&amp;rft.pub=Reghardware.co.uk&amp;rft_id=http%3A%2F%2Fwww.reghardware.co.uk%2F2007%2F12%2F05%2Freview_asus_p5e_vm_hdmi%2Fpage2.html&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-autogenerated6-13">^ <a href="#cite_ref-autogenerated6_13-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-autogenerated6_13-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-autogenerated6_13-2"><sup><i><b>c</b></i></sup></a> <span class="citation web"><a href="http://www.intel.com/products/desktop/chipsets/g45/g45-overview.htm" class="external text" rel="nofollow">"Intel G45 Express Chipset&#160;— Overview"</a>. Intel.com<span class="printonly">. <a href="http://www.intel.com/products/desktop/chipsets/g45/g45-overview.htm" class="external free" rel="nofollow">http://www.intel.com/products/desktop/chipsets/g45/g45-overview.htm</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Intel+G45+Express+Chipset%26nbsp%3B%E2%80%94+Overview&amp;rft.atitle=&amp;rft.pub=Intel.com&amp;rft_id=http%3A%2F%2Fwww.intel.com%2Fproducts%2Fdesktop%2Fchipsets%2Fg45%2Fg45-overview.htm&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-autogenerated2-14"><b><a href="#cite_ref-autogenerated2_14-0">^</a></b> <span class="citation web">Smith, Tony (2008-06-04). <a href="http://www.reghardware.co.uk/2008/06/04/intel_launches_g45_g43_chipsets/" class="external text" rel="nofollow">"Intel touts G45 chipset's full Blu-ray support|Register Hardware"</a>. Reghardware.co.uk<span class="printonly">. <a href="http://www.reghardware.co.uk/2008/06/04/intel_launches_g45_g43_chipsets/" class="external free" rel="nofollow">http://www.reghardware.co.uk/2008/06/04/intel_launches_g45_g43_chipsets/</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Intel+touts+G45+chipset%27s+full+Blu-ray+support%26%23124%3BRegister+Hardware&amp;rft.atitle=&amp;rft.aulast=Smith&amp;rft.aufirst=Tony&amp;rft.au=Smith%2C%26%2332%3BTony&amp;rft.date=2008-06-04&amp;rft.pub=Reghardware.co.uk&amp;rft_id=http%3A%2F%2Fwww.reghardware.co.uk%2F2008%2F06%2F04%2Fintel_launches_g45_g43_chipsets%2F&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-15"><b><a href="#cite_ref-15">^</a></b> <span class="citation web"><a href="http://www.intel.com/products/desktop/chipsets/g43/g43-overview.htm" class="external text" rel="nofollow">"Intel G43 Express Chipset&#160;— Overview"</a>. Intel.com. 2009-07-17<span class="printonly">. <a href="http://www.intel.com/products/desktop/chipsets/g43/g43-overview.htm" class="external free" rel="nofollow">http://www.intel.com/products/desktop/chipsets/g43/g43-overview.htm</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Intel+G43+Express+Chipset%26nbsp%3B%E2%80%94+Overview&amp;rft.atitle=&amp;rft.date=2009-07-17&amp;rft.pub=Intel.com&amp;rft_id=http%3A%2F%2Fwww.intel.com%2Fproducts%2Fdesktop%2Fchipsets%2Fg43%2Fg43-overview.htm&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-autogenerated3-16">^ <a href="#cite_ref-autogenerated3_16-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-autogenerated3_16-1"><sup><i><b>b</b></i></sup></a> <span class="citation web"><a href="http://softwarecommunity.intel.com/articles/eng/1488.htm" class="external text" rel="nofollow">"Quick Reference Guide to Intel Integrated Graphics"</a>. Softwarecommunity.intel.com<span class="printonly">. <a href="http://softwarecommunity.intel.com/articles/eng/1488.htm" class="external free" rel="nofollow">http://softwarecommunity.intel.com/articles/eng/1488.htm</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Quick+Reference+Guide+to+Intel+Integrated+Graphics&amp;rft.atitle=&amp;rft.pub=Softwarecommunity.intel.com&amp;rft_id=http%3A%2F%2Fsoftwarecommunity.intel.com%2Farticles%2Feng%2F1488.htm&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-17"><b><a href="#cite_ref-17">^</a></b> <span class="citation web"><a href="http://web.archive.org/web/20080731170252/http://www.fudzilla.com/index.php?option=com_content&amp;task=view&amp;id=8323&amp;Itemid=34" class="external text" rel="nofollow">"Intel G41 aims for Q4 2008"</a>. Fudzilla. 2008-07-08. Archived from <a href="http://www.fudzilla.com/index.php?option=com_content&amp;task=view&amp;id=8323&amp;Itemid=34" class="external text" rel="nofollow">the original</a> on July 31, 2008<span class="printonly">. <a href="http://web.archive.org/web/20080731170252/http://www.fudzilla.com/index.php?option=com_content&amp;task=view&amp;id=8323&amp;Itemid=34" class="external free" rel="nofollow">http://web.archive.org/web/20080731170252/http://www.fudzilla.com/index.php?option=com_content&amp;task=view&amp;id=8323&amp;Itemid=34</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Intel+G41+aims+for+Q4+2008&amp;rft.atitle=&amp;rft.date=2008-07-08&amp;rft.pub=Fudzilla&amp;rft_id=http%3A%2F%2Fweb.archive.org%2Fweb%2F20080731170252%2Fhttp%3A%2F%2Fwww.fudzilla.com%2Findex.php%3Foption%3Dcom_content%26task%3Dview%26id%3D8323%26Itemid%3D34&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-18"><b><a href="#cite_ref-18">^</a></b> <span class="citation web">Smith, Tony (2008-03-07). <a href="http://www.reghardware.co.uk/2008/03/07/intel_talks_up_gma_x4500_hd/" class="external text" rel="nofollow">"Intel talks up 'Eaglelake' DX10 chipset GPU tech | Register Hardware"</a>. Reghardware.co.uk<span class="printonly">. <a href="http://www.reghardware.co.uk/2008/03/07/intel_talks_up_gma_x4500_hd/" class="external free" rel="nofollow">http://www.reghardware.co.uk/2008/03/07/intel_talks_up_gma_x4500_hd/</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Intel+talks+up+%27Eaglelake%27+DX10+chipset+GPU+tech+%26%23124%3B+Register+Hardware&amp;rft.atitle=&amp;rft.aulast=Smith&amp;rft.aufirst=Tony&amp;rft.au=Smith%2C%26%2332%3BTony&amp;rft.date=2008-03-07&amp;rft.pub=Reghardware.co.uk&amp;rft_id=http%3A%2F%2Fwww.reghardware.co.uk%2F2008%2F03%2F07%2Fintel_talks_up_gma_x4500_hd%2F&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-19"><b><a href="#cite_ref-19">^</a></b> <span class="citation web"><a href="http://www.intel.com/products/desktop/chipsets/q43/q43-overview.htm" class="external text" rel="nofollow">"Intel Q43 Express Chipset&#160;— Overview"</a>. Intel.com<span class="printonly">. <a href="http://www.intel.com/products/desktop/chipsets/q43/q43-overview.htm" class="external free" rel="nofollow">http://www.intel.com/products/desktop/chipsets/q43/q43-overview.htm</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Intel+Q43+Express+Chipset%26nbsp%3B%E2%80%94+Overview&amp;rft.atitle=&amp;rft.pub=Intel.com&amp;rft_id=http%3A%2F%2Fwww.intel.com%2Fproducts%2Fdesktop%2Fchipsets%2Fq43%2Fq43-overview.htm&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-20"><b><a href="#cite_ref-20">^</a></b> <span class="citation web"><a href="http://www.anandtech.com/show/2541" class="external text" rel="nofollow">"Intel Launches Low-Power 65nm 4 Series Chipsets for the Desktop"</a>. AnandTech. 2008-06-05<span class="printonly">. <a href="http://www.anandtech.com/show/2541" class="external free" rel="nofollow">http://www.anandtech.com/show/2541</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Intel+Launches+Low-Power+65nm+4+Series+Chipsets+for+the+Desktop&amp;rft.atitle=&amp;rft.date=2008-06-05&amp;rft.pub=AnandTech&amp;rft_id=http%3A%2F%2Fwww.anandtech.com%2Fshow%2F2541&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-21"><b><a href="#cite_ref-21">^</a></b> <span class="citation web"><a href="http://web.archive.org/web/20071126144045/http://www.fudzilla.com/index.php?option=com_content&amp;task=view&amp;id=3828&amp;Itemid=1" class="external text" rel="nofollow">"G45 IGP runs 3Dmark06 3X faster"</a>. Archived from <a href="http://www.fudzilla.com/index.php?option=com_content&amp;task=view&amp;id=3828&amp;Itemid=1" class="external text" rel="nofollow">the original</a> on November 26, 2007<span class="printonly">. <a href="http://web.archive.org/web/20071126144045/http://www.fudzilla.com/index.php?option=com_content&amp;task=view&amp;id=3828&amp;Itemid=1" class="external free" rel="nofollow">http://web.archive.org/web/20071126144045/http://www.fudzilla.com/index.php?option=com_content&amp;task=view&amp;id=3828&amp;Itemid=1</a></span><span class="reference-accessdate">. Retrieved 2007-12-10</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=G45+IGP+runs+3Dmark06+3X+faster&amp;rft.atitle=&amp;rft_id=http%3A%2F%2Fweb.archive.org%2Fweb%2F20071126144045%2Fhttp%3A%2F%2Fwww.fudzilla.com%2Findex.php%3Foption%3Dcom_content%26task%3Dview%26id%3D3828%26Itemid%3D1&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-22"><b><a href="#cite_ref-22">^</a></b> <span class="citation web"><a href="http://www.vr-zone.com/articles/Intel_GMA_X4500HD,_X4500_&amp;_4500_Info/5505.html" class="external text" rel="nofollow">"Technology Beats&#160;— Intel GMA X4500HD, X4500 &amp; 4500 Info"</a>. VR-Zone. 2008-01-16<span class="printonly">. <a href="http://www.vr-zone.com/articles/Intel_GMA_X4500HD,_X4500_&amp;_4500_Info/5505.html" class="external free" rel="nofollow">http://www.vr-zone.com/articles/Intel_GMA_X4500HD,_X4500_&amp;_4500_Info/5505.html</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Technology+Beats%26nbsp%3B%E2%80%94+Intel+GMA+X4500HD%2C+X4500+%26+4500+Info&amp;rft.atitle=&amp;rft.date=2008-01-16&amp;rft.pub=VR-Zone&amp;rft_id=http%3A%2F%2Fwww.vr-zone.com%2Farticles%2FIntel_GMA_X4500HD%2C_X4500_%26_4500_Info%2F5505.html&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-23"><b><a href="#cite_ref-23">^</a></b> <span class="citation web"><a href="http://www.imgtec.com/News/Release/index.asp?NewsID=712" class="external text" rel="nofollow">"Imagination Technologies confirms new Intel Centrino Atom processor technology utilises POWERVR graphics and video technologies"</a><span class="printonly">. <a href="http://www.imgtec.com/News/Release/index.asp?NewsID=712" class="external free" rel="nofollow">http://www.imgtec.com/News/Release/index.asp?NewsID=712</a></span><span class="reference-accessdate">. Retrieved 2008-04-03</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Imagination+Technologies+confirms+new+Intel+Centrino+Atom+processor+technology+utilises+POWERVR+graphics+and+video+technologies&amp;rft.atitle=&amp;rft_id=http%3A%2F%2Fwww.imgtec.com%2FNews%2FRelease%2Findex.asp%3FNewsID%3D712&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-24"><b><a href="#cite_ref-24">^</a></b> <span class="citation web"><a href="http://download.intel.com/design/chipsets/embedded/prodbrf/319545.pdf" class="external text" rel="nofollow">"US15W Product Brief"</a> (PDF)<span class="printonly">. <a href="http://download.intel.com/design/chipsets/embedded/prodbrf/319545.pdf" class="external free" rel="nofollow">http://download.intel.com/design/chipsets/embedded/prodbrf/319545.pdf</a></span><span class="reference-accessdate">. Retrieved 2008-04-03</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=US15W+Product+Brief&amp;rft.atitle=&amp;rft_id=http%3A%2F%2Fdownload.intel.com%2Fdesign%2Fchipsets%2Fembedded%2Fprodbrf%2F319545.pdf&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-GMA900Brief-25">^ <a href="#cite_ref-GMA900Brief_25-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-GMA900Brief_25-1"><sup><i><b>b</b></i></sup></a> <span class="citation web"><a href="http://www.intel.com/products/chipsets/gma900/gma900.pdf" class="external text" rel="nofollow">"Intel GMA 900 Graphics Product Brief"</a> (PDF)<span class="printonly">. <a href="http://www.intel.com/products/chipsets/gma900/gma900.pdf" class="external free" rel="nofollow">http://www.intel.com/products/chipsets/gma900/gma900.pdf</a></span><span class="reference-accessdate">. Retrieved 2009-10-18</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Intel+GMA+900+Graphics+Product+Brief&amp;rft.atitle=&amp;rft_id=http%3A%2F%2Fwww.intel.com%2Fproducts%2Fchipsets%2Fgma900%2Fgma900.pdf&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-int307508-001-26"><b><a href="#cite_ref-int307508-001_26-0">^</a></b> <span class="citation web"><a href="http://www.intel.com/Assets/PDF/whitepaper/307508.pdf" class="external text" rel="nofollow">"Mobile Intel 945 Express Chipset,Intel DVMT 3.0"</a> (PDF)<span class="printonly">. <a href="http://www.intel.com/Assets/PDF/whitepaper/307508.pdf" class="external free" rel="nofollow">http://www.intel.com/Assets/PDF/whitepaper/307508.pdf</a></span><span class="reference-accessdate">. Retrieved 2010-10-01</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Mobile+Intel+945+Express+Chipset%2CIntel+DVMT+3.0&amp;rft.atitle=&amp;rft_id=http%3A%2F%2Fwww.intel.com%2FAssets%2FPDF%2Fwhitepaper%2F307508.pdf&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span><sup class="noprint Inline-Template"><span title="&#160;since November 2010" style="white-space: nowrap;">[<i><a href="/wiki/Wikipedia:Link_rot" title="Wikipedia:Link rot">dead link</a></i>]</span></sup></li>
+<li id="cite_note-G33datasheet-27">^ <a href="#cite_ref-G33datasheet_27-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-G33datasheet_27-1"><sup><i><b>b</b></i></sup></a> <span class="citation web"><a href="http://www.intel.com/Assets/PDF/datasheet/316966.pdf" class="external text" rel="nofollow">"Intel 3 Series Chipsets Datasheet"</a> (PDF)<span class="printonly">. <a href="http://www.intel.com/Assets/PDF/datasheet/316966.pdf" class="external free" rel="nofollow">http://www.intel.com/Assets/PDF/datasheet/316966.pdf</a></span><span class="reference-accessdate">. Retrieved 2009-10-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Intel+3+Series+Chipsets+Datasheet&amp;rft.atitle=&amp;rft_id=http%3A%2F%2Fwww.intel.com%2FAssets%2FPDF%2Fdatasheet%2F316966.pdf&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-28"><b><a href="#cite_ref-28">^</a></b> <a href="http://download.intel.com/design/processor/datashts/322844.pdf" class="external text" rel="nofollow">Intel Atom Processor D400 and D500 Series Vol 1 Datasheet</a></li>
+<li id="cite_note-29"><b><a href="#cite_ref-29">^</a></b> <a href="http://software.intel.com/en-us/articles/quick-reference-guide-to-intel-integrated-graphics/" class="external autonumber" rel="nofollow">[1]</a></li>
+<li id="cite_note-intel317363-30">^ <a href="#cite_ref-intel317363_30-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-intel317363_30-1"><sup><i><b>b</b></i></sup></a> <span class="citation web"><a href="http://download.intel.com:80/products/chipsets/G35/317363.pdf" class="external text" rel="nofollow">"Intel G35 Product Brief"</a> (PDF)<span class="printonly">. <a href="http://download.intel.com:80/products/chipsets/G35/317363.pdf" class="external free" rel="nofollow">http://download.intel.com:80/products/chipsets/G35/317363.pdf</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Intel+G35+Product+Brief&amp;rft.atitle=&amp;rft_id=http%3A%2F%2Fdownload.intel.com%3A80%2Fproducts%2Fchipsets%2FG35%2F317363.pdf&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-intel31627303-31">^ <a href="#cite_ref-intel31627303_31-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-intel31627303_31-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-intel31627303_31-2"><sup><i><b>c</b></i></sup></a> <a href="http://download.intel.com/design/mobile/datashts/31627303.pdf" class="external free" rel="nofollow">http://download.intel.com/design/mobile/datashts/31627303.pdf</a></li>
+<li id="cite_note-intel319970-32">^ <a href="#cite_ref-intel319970_32-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-intel319970_32-1"><sup><i><b>b</b></i></sup></a> <span class="citation web"><a href="http://www.intel.com/Assets/PDF/datasheet/319970.pdf" class="external text" rel="nofollow">"Intel 4 Series Chipset Family Datasheet"</a> (PDF)<span class="printonly">. <a href="http://www.intel.com/Assets/PDF/datasheet/319970.pdf" class="external free" rel="nofollow">http://www.intel.com/Assets/PDF/datasheet/319970.pdf</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Intel+4+Series+Chipset+Family+Datasheet&amp;rft.atitle=&amp;rft_id=http%3A%2F%2Fwww.intel.com%2FAssets%2FPDF%2Fdatasheet%2F319970.pdf&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-intel320122-33">^ <a href="#cite_ref-intel320122_33-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-intel320122_33-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-intel320122_33-2"><sup><i><b>c</b></i></sup></a> <span class="citation web"><a href="http://www.intel.com/Assets/PDF/datasheet/320122.pdf" class="external text" rel="nofollow">"Mobile Intel(R) 4 Series Express Chipset Family Datasheet"</a> (PDF)<span class="printonly">. <a href="http://www.intel.com/Assets/PDF/datasheet/320122.pdf" class="external free" rel="nofollow">http://www.intel.com/Assets/PDF/datasheet/320122.pdf</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Mobile+Intel%28R%29+4+Series+Express+Chipset+Family+Datasheet&amp;rft.atitle=&amp;rft_id=http%3A%2F%2Fwww.intel.com%2FAssets%2FPDF%2Fdatasheet%2F320122.pdf&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-int30921904-34"><b><a href="#cite_ref-int30921904_34-0">^</a></b> <span class="citation web"><a href="http://www.intel.com/Assets/PDF/datasheet/309219.pdf" class="external text" rel="nofollow">"Mobile Intel 945 Express Chipset Family Datasheet"</a> (PDF)<span class="printonly">. <a href="http://www.intel.com/Assets/PDF/datasheet/309219.pdf" class="external free" rel="nofollow">http://www.intel.com/Assets/PDF/datasheet/309219.pdf</a></span><span class="reference-accessdate">. Retrieved 2009-10-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Mobile+Intel+945+Express+Chipset+Family+Datasheet&amp;rft.atitle=&amp;rft_id=http%3A%2F%2Fwww.intel.com%2FAssets%2FPDF%2Fdatasheet%2F309219.pdf&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-946exds-35"><b><a href="#cite_ref-946exds_35-0">^</a></b> <span class="citation web"><a href="http://download.intel.com/design/chipsets/datashts/31308301.pdf" class="external text" rel="nofollow">"Intel 946 Express Chipset Family Datasheet"</a> (PDF)<span class="printonly">. <a href="http://download.intel.com/design/chipsets/datashts/31308301.pdf" class="external free" rel="nofollow">http://download.intel.com/design/chipsets/datashts/31308301.pdf</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Intel+946+Express+Chipset+Family+Datasheet&amp;rft.atitle=&amp;rft_id=http%3A%2F%2Fdownload.intel.com%2Fdesign%2Fchipsets%2Fdatashts%2F31308301.pdf&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-vrzonegm47-36"><b><a href="#cite_ref-vrzonegm47_36-0">^</a></b> <span class="citation web"><a href="http://sg.vr-zone.com/articles/Intel_GM47_Mobile_Chipset_Delivers_2X_Graphics_Performance/5592.html" class="external text" rel="nofollow">"VR-Zone&#160;: Technology Beats&#160;— Intel GM47 Mobile Chipset Delivers 2X Graphics Performance"</a>. Sg.vr-zone.com. 2008-02-25<span class="printonly">. <a href="http://sg.vr-zone.com/articles/Intel_GM47_Mobile_Chipset_Delivers_2X_Graphics_Performance/5592.html" class="external free" rel="nofollow">http://sg.vr-zone.com/articles/Intel_GM47_Mobile_Chipset_Delivers_2X_Graphics_Performance/5592.html</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=VR-Zone+%3A+Technology+Beats%26nbsp%3B%E2%80%94+Intel+GM47+Mobile+Chipset+Delivers+2X+Graphics+Performance&amp;rft.atitle=&amp;rft.date=2008-02-25&amp;rft.pub=Sg.vr-zone.com&amp;rft_id=http%3A%2F%2Fsg.vr-zone.com%2Farticles%2FIntel_GM47_Mobile_Chipset_Delivers_2X_Graphics_Performance%2F5592.html&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-Intel910GMLdoc-37"><b><a href="#cite_ref-Intel910GMLdoc_37-0">^</a></b> <span class="citation web"><a href="http://www.intel.com/design/mobile/datashts/305264.htm" class="external text" rel="nofollow">"Intel 910GML datasheet"</a><span class="printonly">. <a href="http://www.intel.com/design/mobile/datashts/305264.htm" class="external free" rel="nofollow">http://www.intel.com/design/mobile/datashts/305264.htm</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Intel+910GML+datasheet&amp;rft.atitle=&amp;rft_id=http%3A%2F%2Fwww.intel.com%2Fdesign%2Fmobile%2Fdatashts%2F305264.htm&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-dd915945gm-38"><b><a href="#cite_ref-dd915945gm_38-0">^</a></b> Romanchenko, Vladimir. <a href="http://www.digital-daily.com/mobile/centrino_duo/index02.htm" class="external text" rel="nofollow">Intel Centrino Duo: new-generation mobility</a></li>
+<li id="cite_note-intel31760701-39"><b><a href="#cite_ref-intel31760701_39-0">^</a></b> <span class="citation web"><a href="http://download.intel.com/design/chipsets/datashts/31760701.pdf" class="external text" rel="nofollow">"Intel G35 Express Chipset Datasheet"</a> (PDF)<span class="printonly">. <a href="http://download.intel.com/design/chipsets/datashts/31760701.pdf" class="external free" rel="nofollow">http://download.intel.com/design/chipsets/datashts/31760701.pdf</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Intel+G35+Express+Chipset+Datasheet&amp;rft.atitle=&amp;rft_id=http%3A%2F%2Fdownload.intel.com%2Fdesign%2Fchipsets%2Fdatashts%2F31760701.pdf&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-GMA900WhitePaper-40"><b><a href="#cite_ref-GMA900WhitePaper_40-0">^</a></b> <span class="citation web"><a href="http://www.intel.com/design/chipsets/applnots/30262403.pdf" class="external text" rel="nofollow">"Intel Graphics Media Accelerator 900"</a> (PDF)<span class="printonly">. <a href="http://www.intel.com/design/chipsets/applnots/30262403.pdf" class="external free" rel="nofollow">http://www.intel.com/design/chipsets/applnots/30262403.pdf</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Intel+Graphics+Media+Accelerator+900&amp;rft.atitle=&amp;rft_id=http%3A%2F%2Fwww.intel.com%2Fdesign%2Fchipsets%2Fapplnots%2F30262403.pdf&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-GMA950Brief-41"><b><a href="#cite_ref-GMA950Brief_41-0">^</a></b> <span class="citation web"><a href="http://www.intel.com/products/chipsets/gma950/gma950.pdf" class="external text" rel="nofollow">"Intel GMA 950 Graphics Product Brief"</a> (PDF)<span class="printonly">. <a href="http://www.intel.com/products/chipsets/gma950/gma950.pdf" class="external free" rel="nofollow">http://www.intel.com/products/chipsets/gma950/gma950.pdf</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Intel+GMA+950+Graphics+Product+Brief&amp;rft.atitle=&amp;rft_id=http%3A%2F%2Fwww.intel.com%2Fproducts%2Fchipsets%2Fgma950%2Fgma950.pdf&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-IntelX4500Dev-42"><b><a href="#cite_ref-IntelX4500Dev_42-0">^</a></b> <span class="citation web"><a href="http://software.intel.com/en-us/articles/intel-graphics-media-accelerator-developers-guide" class="external text" rel="nofollow">"Intel GMA Developers X4500 Guide"</a>. Software.intel.com<span class="printonly">. <a href="http://software.intel.com/en-us/articles/intel-graphics-media-accelerator-developers-guide" class="external free" rel="nofollow">http://software.intel.com/en-us/articles/intel-graphics-media-accelerator-developers-guide</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Intel+GMA+Developers+X4500+Guide&amp;rft.atitle=&amp;rft.pub=Software.intel.com&amp;rft_id=http%3A%2F%2Fsoftware.intel.com%2Fen-us%2Farticles%2Fintel-graphics-media-accelerator-developers-guide&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-AsusBoard1-43"><b><a href="#cite_ref-AsusBoard1_43-0">^</a></b> <span class="citation web"><a href="http://www.asus.com/product.aspx?P_ID=J97UJny8SDGV7Vm1&amp;templete=2" class="external text" rel="nofollow">"ASUSTeK Computer Inc"</a>. Asus.com<span class="printonly">. <a href="http://www.asus.com/product.aspx?P_ID=J97UJny8SDGV7Vm1&amp;templete=2" class="external free" rel="nofollow">http://www.asus.com/product.aspx?P_ID=J97UJny8SDGV7Vm1&amp;templete=2</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=ASUSTeK+Computer+Inc&amp;rft.atitle=&amp;rft.pub=Asus.com&amp;rft_id=http%3A%2F%2Fwww.asus.com%2Fproduct.aspx%3FP_ID%3DJ97UJny8SDGV7Vm1%26templete%3D2&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-AsusBoard3-44"><b><a href="#cite_ref-AsusBoard3_44-0">^</a></b> <span class="citation web"><a href="http://www.asus.com/product.aspx?P_ID=EJybwaQ3J8goocW2&amp;templete=2" class="external text" rel="nofollow">"ASUSTeK Computer Inc"</a>. Asus.com<span class="printonly">. <a href="http://www.asus.com/product.aspx?P_ID=EJybwaQ3J8goocW2&amp;templete=2" class="external free" rel="nofollow">http://www.asus.com/product.aspx?P_ID=EJybwaQ3J8goocW2&amp;templete=2</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=ASUSTeK+Computer+Inc&amp;rft.atitle=&amp;rft.pub=Asus.com&amp;rft_id=http%3A%2F%2Fwww.asus.com%2Fproduct.aspx%3FP_ID%3DEJybwaQ3J8goocW2%26templete%3D2&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-AsusBoard2-45"><b><a href="#cite_ref-AsusBoard2_45-0">^</a></b> <span class="citation web"><a href="http://www.asus.com/product.aspx?P_ID=cr9CeQwu3BN3zCro&amp;templete=2" class="external text" rel="nofollow">"ASUSTeK Computer Inc"</a>. Asus.com<span class="printonly">. <a href="http://www.asus.com/product.aspx?P_ID=cr9CeQwu3BN3zCro&amp;templete=2" class="external free" rel="nofollow">http://www.asus.com/product.aspx?P_ID=cr9CeQwu3BN3zCro&amp;templete=2</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=ASUSTeK+Computer+Inc&amp;rft.atitle=&amp;rft.pub=Asus.com&amp;rft_id=http%3A%2F%2Fwww.asus.com%2Fproduct.aspx%3FP_ID%3Dcr9CeQwu3BN3zCro%26templete%3D2&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-WDDM-46"><b><a href="#cite_ref-WDDM_46-0">^</a></b> <span class="citation web"><a href="http://catalog.update.microsoft.com/v7/site/Search.aspx?q=windows%207%20client%20intel%20video" class="external text" rel="nofollow">"Microsoft Update Catalog"</a>. Catalog.update.microsoft.com<span class="printonly">. <a href="http://catalog.update.microsoft.com/v7/site/Search.aspx?q=windows%207%20client%20intel%20video" class="external free" rel="nofollow">http://catalog.update.microsoft.com/v7/site/Search.aspx?q=windows%207%20client%20intel%20video</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Microsoft+Update+Catalog&amp;rft.atitle=&amp;rft.pub=Catalog.update.microsoft.com&amp;rft_id=http%3A%2F%2Fcatalog.update.microsoft.com%2Fv7%2Fsite%2FSearch.aspx%3Fq%3Dwindows%25207%2520client%2520intel%2520video&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-intelgfxref-47"><b><a href="#cite_ref-intelgfxref_47-0">^</a></b> <span class="citation web"><a href="http://software.intel.com/en-us/articles/quick-reference-guide-to-intel-integrated-graphics" class="external text" rel="nofollow">"Quick Reference Guide to Intel Integrated Graphics"</a>. Software.intel.com<span class="printonly">. <a href="http://software.intel.com/en-us/articles/quick-reference-guide-to-intel-integrated-graphics" class="external free" rel="nofollow">http://software.intel.com/en-us/articles/quick-reference-guide-to-intel-integrated-graphics</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Quick+Reference+Guide+to+Intel+Integrated+Graphics&amp;rft.atitle=&amp;rft.pub=Software.intel.com&amp;rft_id=http%3A%2F%2Fsoftware.intel.com%2Fen-us%2Farticles%2Fquick-reference-guide-to-intel-integrated-graphics&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-915GMdatasheet-48"><b><a href="#cite_ref-915GMdatasheet_48-0">^</a></b> <span class="citation web"><a href="http://download.intel.com/design/mobile/datashts/30526402.pdf" class="external text" rel="nofollow">"Microsoft Word - 305264-002_JW2.doc"</a> (PDF)<span class="printonly">. <a href="http://download.intel.com/design/mobile/datashts/30526402.pdf" class="external free" rel="nofollow">http://download.intel.com/design/mobile/datashts/30526402.pdf</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Microsoft+Word+-+305264-002_JW2.doc&amp;rft.atitle=&amp;rft_id=http%3A%2F%2Fdownload.intel.com%2Fdesign%2Fmobile%2Fdatashts%2F30526402.pdf&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-Intel82G965-49"><b><a href="#cite_ref-Intel82G965_49-0">^</a></b> <span class="citation web"><a href="http://www.intel.com/support/graphics/intelg965/sb/CS-023713.htm" class="external text" rel="nofollow">"Intel 82G965 Graphics and Memory Controller Hub (GMCH) OpenGL Support"</a>. Intel.com<span class="printonly">. <a href="http://www.intel.com/support/graphics/intelg965/sb/CS-023713.htm" class="external free" rel="nofollow">http://www.intel.com/support/graphics/intelg965/sb/CS-023713.htm</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Intel+82G965+Graphics+and+Memory+Controller+Hub+%28GMCH%29+OpenGL+Support&amp;rft.atitle=&amp;rft.pub=Intel.com&amp;rft_id=http%3A%2F%2Fwww.intel.com%2Fsupport%2Fgraphics%2Fintelg965%2Fsb%2FCS-023713.htm&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-IntelSCHdatasheet-50"><b><a href="#cite_ref-IntelSCHdatasheet_50-0">^</a></b> <span class="citation web"><a href="http://download.intel.com/design/chipsets/embedded/datashts/319537.pdf" class="external text" rel="nofollow">"SCH_DS_319537-002US.book"</a> (PDF)<span class="printonly">. <a href="http://download.intel.com/design/chipsets/embedded/datashts/319537.pdf" class="external free" rel="nofollow">http://download.intel.com/design/chipsets/embedded/datashts/319537.pdf</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=SCH_DS_319537-002US.book&amp;rft.atitle=&amp;rft_id=http%3A%2F%2Fdownload.intel.com%2Fdesign%2Fchipsets%2Fembedded%2Fdatashts%2F319537.pdf&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-IntelSCHspecupd-51"><b><a href="#cite_ref-IntelSCHspecupd_51-0">^</a></b> <span class="citation web"><a href="http://download.intel.com/design/chipsets/embedded/specupdt/319538.pdf" class="external text" rel="nofollow">"Intel System Controller Hub (Intel SCH) Specification Update"</a> (PDF)<span class="printonly">. <a href="http://download.intel.com/design/chipsets/embedded/specupdt/319538.pdf" class="external free" rel="nofollow">http://download.intel.com/design/chipsets/embedded/specupdt/319538.pdf</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Intel+System+Controller+Hub+%28Intel+SCH%29+Specification+Update&amp;rft.atitle=&amp;rft_id=http%3A%2F%2Fdownload.intel.com%2Fdesign%2Fchipsets%2Fembedded%2Fspecupdt%2F319538.pdf&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-IntelGDC20080221_Graphics-52"><b><a href="#cite_ref-IntelGDC20080221_Graphics_52-0">^</a></b> <span class="citation web"><a href="http://software.intel.com/file/1477" class="external text" rel="nofollow">"Getting the Most Out of Intel Graphics.ppt"</a><span class="printonly">. <a href="http://software.intel.com/file/1477" class="external free" rel="nofollow">http://software.intel.com/file/1477</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Getting+the+Most+Out+of+Intel+Graphics.ppt&amp;rft.atitle=&amp;rft_id=http%3A%2F%2Fsoftware.intel.com%2Ffile%2F1477&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-IntelNotesXP14.36.3.4990-53"><b><a href="#cite_ref-IntelNotesXP14.36.3.4990_53-0">^</a></b> <span class="citation web"><a href="http://downloadmirror.intel.com/16945/eng/relnotes_2k_xp_gfx.htm" class="external text" rel="nofollow">"Release notes of Windows XP driver v14.36.3"</a>. Downloadmirror.intel.com<span class="printonly">. <a href="http://downloadmirror.intel.com/16945/eng/relnotes_2k_xp_gfx.htm" class="external free" rel="nofollow">http://downloadmirror.intel.com/16945/eng/relnotes_2k_xp_gfx.htm</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Release+notes+of+Windows+XP+driver+v14.36.3&amp;rft.atitle=&amp;rft.pub=Downloadmirror.intel.com&amp;rft_id=http%3A%2F%2Fdownloadmirror.intel.com%2F16945%2Feng%2Frelnotes_2k_xp_gfx.htm&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span><sup class="noprint Inline-Template"><span title="&#160;since October 2010" style="white-space: nowrap;">[<i><a href="/wiki/Wikipedia:Link_rot" title="Wikipedia:Link rot">dead link</a></i>]</span></sup></li>
+<li id="cite_note-IntelNotesVista15.11.2-54"><b><a href="#cite_ref-IntelNotesVista15.11.2_54-0">^</a></b> <span class="citation web"><a href="http://downloadmirror.intel.com/16940/eng/relnotes_winvista_gfx.htm" class="external text" rel="nofollow">"Release notes of Windows Vista driver v15.11.2"</a>. Downloadmirror.intel.com. 2008-08-22<span class="printonly">. <a href="http://downloadmirror.intel.com/16940/eng/relnotes_winvista_gfx.htm" class="external free" rel="nofollow">http://downloadmirror.intel.com/16940/eng/relnotes_winvista_gfx.htm</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Release+notes+of+Windows+Vista+driver+v15.11.2&amp;rft.atitle=&amp;rft.date=2008-08-22&amp;rft.pub=Downloadmirror.intel.com&amp;rft_id=http%3A%2F%2Fdownloadmirror.intel.com%2F16940%2Feng%2Frelnotes_winvista_gfx.htm&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-IntelXorgOpenGL2.1-55"><b><a href="#cite_ref-IntelXorgOpenGL2.1_55-0">^</a></b> <span class="citation web"><a href="http://lists.freedesktop.org/archives/xorg/2008-October/039250.html" class="external text" rel="nofollow">"Xorg ML OpenGL 2.1 enters intel driver"</a>. Lists.freedesktop.org. 2008-10-07<span class="printonly">. <a href="http://lists.freedesktop.org/archives/xorg/2008-October/039250.html" class="external free" rel="nofollow">http://lists.freedesktop.org/archives/xorg/2008-October/039250.html</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Xorg+ML+OpenGL+2.1+enters+intel+driver&amp;rft.atitle=&amp;rft.date=2008-10-07&amp;rft.pub=Lists.freedesktop.org&amp;rft_id=http%3A%2F%2Flists.freedesktop.org%2Farchives%2Fxorg%2F2008-October%2F039250.html&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-56"><b><a href="#cite_ref-56">^</a></b> <span class="citation web"><a href="http://guides.macrumors.com/iMac_%28Intel%29" class="external text" rel="nofollow">"iMac (Intel) - Mac Guides"</a>. Guides.macrumors.com<span class="printonly">. <a href="http://guides.macrumors.com/iMac_%28Intel%29" class="external free" rel="nofollow">http://guides.macrumors.com/iMac_%28Intel%29</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=iMac+%28Intel%29+-+Mac+Guides&amp;rft.atitle=&amp;rft.pub=Guides.macrumors.com&amp;rft_id=http%3A%2F%2Fguides.macrumors.com%2FiMac_%2528Intel%2529&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-macmini-57"><b><a href="#cite_ref-macmini_57-0">^</a></b> <span class="citation web"><a href="http://guides.macrumors.com/Mac_mini_%28Intel%29" class="external text" rel="nofollow">"Mac mini (Intel) - Mac Guides"</a>. Guides.macrumors.com<span class="printonly">. <a href="http://guides.macrumors.com/Mac_mini_%28Intel%29" class="external free" rel="nofollow">http://guides.macrumors.com/Mac_mini_%28Intel%29</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Mac+mini+%28Intel%29+-+Mac+Guides&amp;rft.atitle=&amp;rft.pub=Guides.macrumors.com&amp;rft_id=http%3A%2F%2Fguides.macrumors.com%2FMac_mini_%2528Intel%2529&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-58"><b><a href="#cite_ref-58">^</a></b> <span class="citation web"><a href="http://www.macrumors.com/2007/11/01/apple-updates-macbooks-to-santa-rosa-gma-x3100/" class="external text" rel="nofollow">"Apple Updates MacBooks to Santa Rosa, GMA X3100; 2.6GHz MacBook Pro&#160;— Mac Rumors"</a>. Mac Rumors&lt;!. 2007-11-01<span class="printonly">. <a href="http://www.macrumors.com/2007/11/01/apple-updates-macbooks-to-santa-rosa-gma-x3100/" class="external free" rel="nofollow">http://www.macrumors.com/2007/11/01/apple-updates-macbooks-to-santa-rosa-gma-x3100/</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Apple+Updates+MacBooks+to+Santa+Rosa%2C+GMA+X3100%3B+2.6GHz+MacBook+Pro%26nbsp%3B%E2%80%94+Mac+Rumors&amp;rft.atitle=&amp;rft.date=2007-11-01&amp;rft.pub=Mac+Rumors%3C%21&amp;rft_id=http%3A%2F%2Fwww.macrumors.com%2F2007%2F11%2F01%2Fapple-updates-macbooks-to-santa-rosa-gma-x3100%2F&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-59"><b><a href="#cite_ref-59">^</a></b> <span class="citation web"><a href="http://www.tomshardware.com/reviews/nvidia-ion-atom,2153-6.html" class="external text" rel="nofollow">"Nvidia's Ion: Lending Atom Some Wings&#160;— Tom's Hardware"</a>. Tomshardware.com<span class="printonly">. <a href="http://www.tomshardware.com/reviews/nvidia-ion-atom,2153-6.html" class="external free" rel="nofollow">http://www.tomshardware.com/reviews/nvidia-ion-atom,2153-6.html</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Nvidia%27s+Ion%3A+Lending+Atom+Some+Wings%26nbsp%3B%E2%80%94+Tom%27s+Hardware&amp;rft.atitle=&amp;rft.pub=Tomshardware.com&amp;rft_id=http%3A%2F%2Fwww.tomshardware.com%2Freviews%2Fnvidia-ion-atom%2C2153-6.html&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-60"><b><a href="#cite_ref-60">^</a></b> <span class="citation web"><a href="http://www.nvidia.com/object/product_geforce_9400m_g_us.html" class="external text" rel="nofollow">"GeForce 9400M motherboard GPU"</a>. Nvidia.com<span class="printonly">. <a href="http://www.nvidia.com/object/product_geforce_9400m_g_us.html" class="external free" rel="nofollow">http://www.nvidia.com/object/product_geforce_9400m_g_us.html</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=GeForce+9400M+motherboard+GPU&amp;rft.atitle=&amp;rft.pub=Nvidia.com&amp;rft_id=http%3A%2F%2Fwww.nvidia.com%2Fobject%2Fproduct_geforce_9400m_g_us.html&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-61"><b><a href="#cite_ref-61">^</a></b> <a href="http://support.apple.com/kb/HT3413" class="external text" rel="nofollow">MacBook: Mini-DVI to video adapter compatibility</a></li>
+<li id="cite_note-62"><b><a href="#cite_ref-62">^</a></b> <a href="http://www.apple.com/macbookpro/specs.html" class="external text" rel="nofollow">MacBook Pro: Tech Specs</a></li>
+<li id="cite_note-63"><b><a href="#cite_ref-63">^</a></b> <a href="http://www.intellinuxgraphics.org" class="external text" rel="nofollow">Intel Linux graphics web site</a></li>
+<li id="cite_note-64"><b><a href="#cite_ref-64">^</a></b> <a href="http://www.tungstengraphics.com/" class="external text" rel="nofollow">Tungsten Graphics web site</a></li>
+<li id="cite_note-65"><b><a href="#cite_ref-65">^</a></b> <span class="citation web">cook (2007-05-10). <a href="http://lwn.net/Articles/233868/" class="external text" rel="nofollow">"Free software drivers for the Intel 965GM Express Chipset"</a>. Lwn.net<span class="printonly">. <a href="http://lwn.net/Articles/233868/" class="external free" rel="nofollow">http://lwn.net/Articles/233868/</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Free+software+drivers+for+the+Intel+965GM+Express+Chipset&amp;rft.atitle=&amp;rft.aulast=cook&amp;rft.au=cook&amp;rft.date=2007-05-10&amp;rft.pub=Lwn.net&amp;rft_id=http%3A%2F%2Flwn.net%2FArticles%2F233868%2F&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-66"><b><a href="#cite_ref-66">^</a></b> <span class="citation web">Eric Anholt. <a href="http://lists.freedesktop.org/archives/xorg-announce/2007-July/000318.html" class="external text" rel="nofollow">"X.Org mailing list: xf86-video-intel 2.1.0"</a><span class="printonly">. <a href="http://lists.freedesktop.org/archives/xorg-announce/2007-July/000318.html" class="external free" rel="nofollow">http://lists.freedesktop.org/archives/xorg-announce/2007-July/000318.html</a></span><span class="reference-accessdate">. Retrieved 2007-07-09</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=X.Org+mailing+list%3A+xf86-video-intel+2.1.0&amp;rft.atitle=&amp;rft.aulast=Eric+Anholt&amp;rft.au=Eric+Anholt&amp;rft_id=http%3A%2F%2Flists.freedesktop.org%2Farchives%2Fxorg-announce%2F2007-July%2F000318.html&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-67"><b><a href="#cite_ref-67">^</a></b> <span class="citation web"><a href="http://intellinuxgraphics.org/documentation.html" class="external text" rel="nofollow">"Driver Documentation"</a><span class="printonly">. <a href="http://intellinuxgraphics.org/documentation.html" class="external free" rel="nofollow">http://intellinuxgraphics.org/documentation.html</a></span><span class="reference-accessdate">. Retrieved 2008-02-01</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Driver+Documentation&amp;rft.atitle=&amp;rft_id=http%3A%2F%2Fintellinuxgraphics.org%2Fdocumentation.html&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-68"><b><a href="#cite_ref-68">^</a></b> <span class="citation web">Linux Graphics Drivers from Intel. <a href="http://intellinuxgraphics.org/license.html" class="external text" rel="nofollow">"Open Source Graphics Drivers from Intel&#160;— Licence"</a>. Intellinuxgraphics.org<span class="printonly">. <a href="http://intellinuxgraphics.org/license.html" class="external free" rel="nofollow">http://intellinuxgraphics.org/license.html</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Open+Source+Graphics+Drivers+from+Intel%26nbsp%3B%E2%80%94+Licence&amp;rft.atitle=&amp;rft.aulast=Linux+Graphics+Drivers+from+Intel&amp;rft.au=Linux+Graphics+Drivers+from+Intel&amp;rft.pub=Intellinuxgraphics.org&amp;rft_id=http%3A%2F%2Fintellinuxgraphics.org%2Flicense.html&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-69"><b><a href="#cite_ref-69">^</a></b> <span class="citation web"><a href="/wiki/Michael_Larabel">Michael Larabel</a> (January 31, 2008). <a href="http://www.phoronix.com/scan.php?page=article&amp;item=984&amp;num=1" class="external text" rel="nofollow">"Intel Releases Open 965/G35 IGP Programming Documentation"</a>. <a href="/wiki/Phoronix">Phoronix</a> Media<span class="printonly">. <a href="http://www.phoronix.com/scan.php?page=article&amp;item=984&amp;num=1" class="external free" rel="nofollow">http://www.phoronix.com/scan.php?page=article&amp;item=984&amp;num=1</a></span><span class="reference-accessdate">. Retrieved 2009-11-11</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Intel+Releases+Open+965%2FG35+IGP+Programming+Documentation&amp;rft.atitle=&amp;rft.aulast=%5B%5BMichael+Larabel%5D%5D&amp;rft.au=%5B%5BMichael+Larabel%5D%5D&amp;rft.date=January+31%2C+2008&amp;rft.pub=%5B%5BPhoronix%5D%5D+Media&amp;rft_id=http%3A%2F%2Fwww.phoronix.com%2Fscan.php%3Fpage%3Darticle%26item%3D984%26num%3D1&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-70"><b><a href="#cite_ref-70">^</a></b> <span class="citation web"><a href="http://www.x.org/docs/intel/" class="external text" rel="nofollow">"Index of /docs/intel"</a><span class="printonly">. <a href="http://www.x.org/docs/intel/" class="external free" rel="nofollow">http://www.x.org/docs/intel/</a></span><span class="reference-accessdate">. Retrieved 2008-02-01</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Index+of+%2Fdocs%2Fintel&amp;rft.atitle=&amp;rft_id=http%3A%2F%2Fwww.x.org%2Fdocs%2Fintel%2F&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-71"><b><a href="#cite_ref-71">^</a></b> <span class="citation web"><a href="/wiki/Michael_Larabel">Michael Larabel</a> (April 15, 2009). <a href="http://www.phoronix.com/scan.php?page=article&amp;item=intel_g45_dump&amp;num=1" class="external text" rel="nofollow">"Intel Drops A Load Of G45 Programming Documentation"</a>. <a href="/wiki/Phoronix">Phoronix</a> Media<span class="printonly">. <a href="http://www.phoronix.com/scan.php?page=article&amp;item=intel_g45_dump&amp;num=1" class="external free" rel="nofollow">http://www.phoronix.com/scan.php?page=article&amp;item=intel_g45_dump&amp;num=1</a></span><span class="reference-accessdate">. Retrieved 2009-11-11</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Intel+Drops+A+Load+Of+G45+Programming+Documentation&amp;rft.atitle=&amp;rft.aulast=%5B%5BMichael+Larabel%5D%5D&amp;rft.au=%5B%5BMichael+Larabel%5D%5D&amp;rft.date=April+15%2C+2009&amp;rft.pub=%5B%5BPhoronix%5D%5D+Media&amp;rft_id=http%3A%2F%2Fwww.phoronix.com%2Fscan.php%3Fpage%3Darticle%26item%3Dintel_g45_dump%26num%3D1&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-72"><b><a href="#cite_ref-72">^</a></b> <span class="citation web">Eric Anholt (May 29, 2009). <a href="http://anholt.livejournal.com/41132.html" class="external text" rel="nofollow">"I fixed 8xx 3D rendering"</a><span class="printonly">. <a href="http://anholt.livejournal.com/41132.html" class="external free" rel="nofollow">http://anholt.livejournal.com/41132.html</a></span><span class="reference-accessdate">. Retrieved 2009-11-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=I+fixed+8xx+3D+rendering&amp;rft.atitle=&amp;rft.aulast=Eric+Anholt&amp;rft.au=Eric+Anholt&amp;rft.date=May+29%2C+2009&amp;rft_id=http%3A%2F%2Fanholt.livejournal.com%2F41132.html&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-73"><b><a href="#cite_ref-73">^</a></b> <span class="citation web"><a href="http://lkml.org/lkml/2006/8/9/333" class="external text" rel="nofollow">"LKML thread about intel_hal.so"</a>. Lkml.org. 2006-08-09<span class="printonly">. <a href="http://lkml.org/lkml/2006/8/9/333" class="external free" rel="nofollow">http://lkml.org/lkml/2006/8/9/333</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=LKML+thread+about+intel_hal.so&amp;rft.atitle=&amp;rft.date=2006-08-09&amp;rft.pub=Lkml.org&amp;rft_id=http%3A%2F%2Flkml.org%2Flkml%2F2006%2F8%2F9%2F333&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-74"><b><a href="#cite_ref-74">^</a></b> <span class="citation web"><a href="http://thread.gmane.org/gmane.comp.freedesktop.xorg/11780" class="external text" rel="nofollow">"X.Org ML thread about intel_hal.so"</a>. Thread.gmane.org<span class="printonly">. <a href="http://thread.gmane.org/gmane.comp.freedesktop.xorg/11780" class="external free" rel="nofollow">http://thread.gmane.org/gmane.comp.freedesktop.xorg/11780</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=X.Org+ML+thread+about+intel_hal.so&amp;rft.atitle=&amp;rft.pub=Thread.gmane.org&amp;rft_id=http%3A%2F%2Fthread.gmane.org%2Fgmane.comp.freedesktop.xorg%2F11780&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-75"><b><a href="#cite_ref-75">^</a></b> <span class="citation web"><a href="https://wiki.ubuntu.com/HardwareSupportComponentsVideoCardsPoulsbo/" class="external text" rel="nofollow">"Hardware support components Video cards Poulsbo"</a>. ubuntu.com. 2009-09-25<span class="printonly">. <a href="https://wiki.ubuntu.com/HardwareSupportComponentsVideoCardsPoulsbo/" class="external free" rel="nofollow">https://wiki.ubuntu.com/HardwareSupportComponentsVideoCardsPoulsbo/</a></span><span class="reference-accessdate">. Retrieved 2009-10-10</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Hardware+support+components+Video+cards+Poulsbo&amp;rft.atitle=&amp;rft.date=2009-09-25&amp;rft.pub=ubuntu.com&amp;rft_id=https%3A%2F%2Fwiki.ubuntu.com%2FHardwareSupportComponentsVideoCardsPoulsbo%2F&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-76"><b><a href="#cite_ref-76">^</a></b> <span class="citation web"><a href="https://wiki.ubuntu.com/HardwareSupportComponentsVideoCardsPoulsbo/" class="external text" rel="nofollow">"Hardware support components Video cards Poulsbo"</a>. ubuntu.com. 2010-09-04<span class="printonly">. <a href="https://wiki.ubuntu.com/HardwareSupportComponentsVideoCardsPoulsbo/" class="external free" rel="nofollow">https://wiki.ubuntu.com/HardwareSupportComponentsVideoCardsPoulsbo/</a></span><span class="reference-accessdate">. Retrieved 2010-09-09</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Hardware+support+components+Video+cards+Poulsbo&amp;rft.atitle=&amp;rft.date=2010-09-04&amp;rft.pub=ubuntu.com&amp;rft_id=https%3A%2F%2Fwiki.ubuntu.com%2FHardwareSupportComponentsVideoCardsPoulsbo%2F&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-77"><b><a href="#cite_ref-77">^</a></b> <span class="citation web"><a href="/wiki/Michael_Larabel">Michael Larabel</a> (November 2, 2009). <a href="http://www.phoronix.com/scan.php?page=news_item&amp;px=NzY2Mg" class="external text" rel="nofollow">"Intel's Special Driver For Poulsbo Uses Gallium3D"</a>. <a href="/wiki/Phoronix">Phoronix</a> Media<span class="printonly">. <a href="http://www.phoronix.com/scan.php?page=news_item&amp;px=NzY2Mg" class="external free" rel="nofollow">http://www.phoronix.com/scan.php?page=news_item&amp;px=NzY2Mg</a></span><span class="reference-accessdate">. Retrieved 2009-11-20</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Intel%27s+Special+Driver+For+Poulsbo+Uses+Gallium3D&amp;rft.atitle=&amp;rft.aulast=%5B%5BMichael+Larabel%5D%5D&amp;rft.au=%5B%5BMichael+Larabel%5D%5D&amp;rft.date=November+2%2C+2009&amp;rft.pub=%5B%5BPhoronix%5D%5D+Media&amp;rft_id=http%3A%2F%2Fwww.phoronix.com%2Fscan.php%3Fpage%3Dnews_item%26px%3DNzY2Mg&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-78"><b><a href="#cite_ref-78">^</a></b> <span class="citation web"><a href="http://it.opensolaris.org/os/project/dri/" class="external text" rel="nofollow">"Direct Rendering Infrastructure &amp; 3D drivers at OpenSolaris.org"</a>. It.opensolaris.org. 2009-08-28<span class="printonly">. <a href="http://it.opensolaris.org/os/project/dri/" class="external free" rel="nofollow">http://it.opensolaris.org/os/project/dri/</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Direct+Rendering+Infrastructure+%26+3D+drivers+at+OpenSolaris.org&amp;rft.atitle=&amp;rft.date=2009-08-28&amp;rft.pub=It.opensolaris.org&amp;rft_id=http%3A%2F%2Fit.opensolaris.org%2Fos%2Fproject%2Fdri%2F&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-79"><b><a href="#cite_ref-79">^</a></b> <a href="http://forum.beyond3d.com/showthread.php?t=35048" class="external text" rel="nofollow">Intel excuse for no GMA900 WDDM driver: no "HW Scheduler" no driver</a>, Beyond3D, October 26, 2006.</li>
+<li id="cite_note-80"><b><a href="#cite_ref-80">^</a></b> <span class="citation web"><a href="http://softwarecommunity.intel.com/isn/Community/en-US/forums/30233994/ShowThread.aspx#30233994" class="external text" rel="nofollow">"Intel’s response to 915G WDDM requests"</a>. Softwarecommunity.intel.com<span class="printonly">. <a href="http://softwarecommunity.intel.com/isn/Community/en-US/forums/30233994/ShowThread.aspx#30233994" class="external free" rel="nofollow">http://softwarecommunity.intel.com/isn/Community/en-US/forums/30233994/ShowThread.aspx#30233994</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Intel%E2%80%99s+response+to+915G+WDDM+requests&amp;rft.atitle=&amp;rft.pub=Softwarecommunity.intel.com&amp;rft_id=http%3A%2F%2Fsoftwarecommunity.intel.com%2Fisn%2FCommunity%2Fen-US%2Fforums%2F30233994%2FShowThread.aspx%2330233994&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-81"><b><a href="#cite_ref-81">^</a></b> <a href="http://www.intel.com/products/chipsets/gma950/index.htm" class="external text" rel="nofollow">GMA950specs</a> on Intel</li>
+<li id="cite_note-82"><b><a href="#cite_ref-82">^</a></b> <a href="http://www.intel.com/support/graphics/intelg965/sb/CS-025665.htm" class="external text" rel="nofollow">Intel G965 drivers Announce</a><sup class="noprint Inline-Template"><span title="&#160;since September 2009" style="white-space: nowrap;">[<i><a href="/wiki/Wikipedia:Link_rot" title="Wikipedia:Link rot">dead link</a></i>]</span></sup></li>
+<li id="cite_note-83"><b><a href="#cite_ref-83">^</a></b> <a href="http://softwarecommunity.intel.com/isn/Community/en-US/forums/thread/30229561.aspx" class="external text" rel="nofollow">G965 drivers Forum Discussion</a><sup class="noprint Inline-Template"><span title="&#160;since September 2009" style="white-space: nowrap;">[<i><a href="/wiki/Wikipedia:Link_rot" title="Wikipedia:Link rot">dead link</a></i>]</span></sup></li>
+<li id="cite_note-84"><b><a href="#cite_ref-84">^</a></b> <a href="http://downloadcenter.intel.com/Detail_Desc.aspx?agr=Y&amp;Inst=Yes&amp;ProductID=2576&amp;DwnldID=13515&amp;strOSs=All&amp;OSFullName=All%20Operating%20Systems&amp;lang=eng" class="external text" rel="nofollow">Pre-Beta XP Drivers</a></li>
+<li id="cite_note-85"><b><a href="#cite_ref-85">^</a></b> <a href="http://downloadcenter.intel.com/Detail_Desc.aspx?agr=Y&amp;Inst=Yes&amp;ProductID=2800&amp;DwnldID=13638&amp;strOSs=44&amp;OSFullName=Windows*%20XP%20Professional&amp;lang=eng" class="external text" rel="nofollow">Mobile Intel 965 Express Chipset Family Intel Graphics Media Accelerator Beta Driver for Windows* XP (zip)</a></li>
+<li id="cite_note-86"><b><a href="#cite_ref-86">^</a></b> <span class="citation web"><a href="http://www.intel.com/assets/pdf/whitepaper/318888.pdf" class="external text" rel="nofollow">"Vertex Processing Selection Capability White Paper for Intel G965, G35, and GM965 Express Chipsets"</a> (PDF)<span class="printonly">. <a href="http://www.intel.com/assets/pdf/whitepaper/318888.pdf" class="external free" rel="nofollow">http://www.intel.com/assets/pdf/whitepaper/318888.pdf</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Vertex+Processing+Selection+Capability+White+Paper+for+Intel+G965%2C+G35%2C+and+GM965+Express+Chipsets&amp;rft.atitle=&amp;rft_id=http%3A%2F%2Fwww.intel.com%2Fassets%2Fpdf%2Fwhitepaper%2F318888.pdf&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-87"><b><a href="#cite_ref-87">^</a></b> <span class="citation web"><a href="http://downloadmirror.intel.com/17040/eng/relnotes_winvista_gfx.htm" class="external text" rel="nofollow">"Release Notes Vista driver 15.11.3.1576"</a>. Downloadmirror.intel.com. 2008-08-22<span class="printonly">. <a href="http://downloadmirror.intel.com/17040/eng/relnotes_winvista_gfx.htm" class="external free" rel="nofollow">http://downloadmirror.intel.com/17040/eng/relnotes_winvista_gfx.htm</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Release+Notes+Vista+driver+15.11.3.1576&amp;rft.atitle=&amp;rft.date=2008-08-22&amp;rft.pub=Downloadmirror.intel.com&amp;rft_id=http%3A%2F%2Fdownloadmirror.intel.com%2F17040%2Feng%2Frelnotes_winvista_gfx.htm&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-88"><b><a href="#cite_ref-88">^</a></b> <span class="citation web"><a href="http://downloadmirror.intel.com/16944/eng/relnotes_2k_xp_gfx.htm" class="external text" rel="nofollow">"Release Notes XP driver 14.36.3.4990"</a>. Downloadmirror.intel.com<span class="printonly">. <a href="http://downloadmirror.intel.com/16944/eng/relnotes_2k_xp_gfx.htm" class="external free" rel="nofollow">http://downloadmirror.intel.com/16944/eng/relnotes_2k_xp_gfx.htm</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Release+Notes+XP+driver+14.36.3.4990&amp;rft.atitle=&amp;rft.pub=Downloadmirror.intel.com&amp;rft_id=http%3A%2F%2Fdownloadmirror.intel.com%2F16944%2Feng%2Frelnotes_2k_xp_gfx.htm&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span><sup class="noprint Inline-Template"><span title="&#160;since October 2010" style="white-space: nowrap;">[<i><a href="/wiki/Wikipedia:Link_rot" title="Wikipedia:Link rot">dead link</a></i>]</span></sup></li>
+<li id="cite_note-89"><b><a href="#cite_ref-89">^</a></b> <a href="http://downloadcenter.intel.com/Product_Filter.aspx?ProductID=3001&amp;lang=eng" class="external text" rel="nofollow">Intel Atom drivers</a></li>
+<li id="cite_note-90"><b><a href="#cite_ref-90">^</a></b> Waldock, Leo. <a href="http://www.reghardware.co.uk/2007/12/05/review_asus_p5e_vm_hdmi/" class="external text" rel="nofollow">Asus P5E-VM HDMI motherboard</a>, Register Hardware, December 5, 2007.</li>
+<li id="cite_note-91"><b><a href="#cite_ref-91">^</a></b> <span class="citation web"><a href="http://www.intel.com/support/graphics/" class="external text" rel="nofollow">"Intel Graphics home page"</a>. Intel.com<span class="printonly">. <a href="http://www.intel.com/support/graphics/" class="external free" rel="nofollow">http://www.intel.com/support/graphics/</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Intel+Graphics+home+page&amp;rft.atitle=&amp;rft.pub=Intel.com&amp;rft_id=http%3A%2F%2Fwww.intel.com%2Fsupport%2Fgraphics%2F&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-92"><b><a href="#cite_ref-92">^</a></b> <a href="http://softwareforums.intel.com/ISN/Community/en-US/Forums/" class="external text" rel="nofollow">Intel Software Network Forums</a></li>
+<li id="cite_note-autogenerated5-93">^ <a href="#cite_ref-autogenerated5_93-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-autogenerated5_93-1"><sup><i><b>b</b></i></sup></a> <span class="citation web"><a href="http://techreport.com/articles.x/12195/17" class="external text" rel="nofollow">"Intel's G965 Express chipset&#160;— The Tech Report&#160;— Page 17"</a>. The Tech Report<span class="printonly">. <a href="http://techreport.com/articles.x/12195/17" class="external free" rel="nofollow">http://techreport.com/articles.x/12195/17</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Intel%27s+G965+Express+chipset%26nbsp%3B%E2%80%94+The+Tech+Report%26nbsp%3B%E2%80%94+Page+17&amp;rft.atitle=&amp;rft.pub=The+Tech+Report&amp;rft_id=http%3A%2F%2Ftechreport.com%2Farticles.x%2F12195%2F17&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-94"><b><a href="#cite_ref-94">^</a></b> <span class="citation web"><a href="http://techreport.com/articles.x/12195/9" class="external text" rel="nofollow">"Intel's G965 Express chipset&#160;— The Tech Report&#160;— Page 9"</a>. The Tech Report<span class="printonly">. <a href="http://techreport.com/articles.x/12195/9" class="external free" rel="nofollow">http://techreport.com/articles.x/12195/9</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Intel%27s+G965+Express+chipset%26nbsp%3B%E2%80%94+The+Tech+Report%26nbsp%3B%E2%80%94+Page+9&amp;rft.atitle=&amp;rft.pub=The+Tech+Report&amp;rft_id=http%3A%2F%2Ftechreport.com%2Farticles.x%2F12195%2F9&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-95"><b><a href="#cite_ref-95">^</a></b> <span class="citation web"><a href="http://www.extremetech.com/article2/0,2845,2121192,00.asp" class="external text" rel="nofollow">"Intel G965 with GMA X3000 Integrated Graphics&#160;— Media Encoding and Game Benchmarks&#160;— CPUs, Boards &amp; Components by ExtremeTech"</a>. Extremetech.com<span class="printonly">. <a href="http://www.extremetech.com/article2/0,2845,2121192,00.asp" class="external free" rel="nofollow">http://www.extremetech.com/article2/0,2845,2121192,00.asp</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Intel+G965+with+GMA+X3000+Integrated+Graphics%26nbsp%3B%E2%80%94+Media+Encoding+and+Game+Benchmarks%26nbsp%3B%E2%80%94+CPUs%2C+Boards+%26+Components+by+ExtremeTech&amp;rft.atitle=&amp;rft.pub=Extremetech.com&amp;rft_id=http%3A%2F%2Fwww.extremetech.com%2Farticle2%2F0%2C2845%2C2121192%2C00.asp&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-96"><b><a href="#cite_ref-96">^</a></b> <span class="citation web"><a href="http://www.extremetech.com/article2/0,2845,2121212,00.asp" class="external text" rel="nofollow">"Intel G965 with GMA X3000 Integrated Graphics&#160;— Final Thoughts: What to Buy&#160;— CPUs, Boards &amp; Components by ExtremeTech"</a>. Extremetech.com<span class="printonly">. <a href="http://www.extremetech.com/article2/0,2845,2121212,00.asp" class="external free" rel="nofollow">http://www.extremetech.com/article2/0,2845,2121212,00.asp</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Intel+G965+with+GMA+X3000+Integrated+Graphics%26nbsp%3B%E2%80%94+Final+Thoughts%3A+What+to+Buy%26nbsp%3B%E2%80%94+CPUs%2C+Boards+%26+Components+by+ExtremeTech&amp;rft.atitle=&amp;rft.pub=Extremetech.com&amp;rft_id=http%3A%2F%2Fwww.extremetech.com%2Farticle2%2F0%2C2845%2C2121212%2C00.asp&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-97"><b><a href="#cite_ref-97">^</a></b> <span class="citation web"><a href="http://www.anandtech.com/cpuchipsets/showdoc.aspx?i=2942&amp;p=11" class="external text" rel="nofollow">"AMD 690G: Performance Review"</a>. AnandTech. 2007-03-06<span class="printonly">. <a href="http://www.anandtech.com/cpuchipsets/showdoc.aspx?i=2942&amp;p=11" class="external free" rel="nofollow">http://www.anandtech.com/cpuchipsets/showdoc.aspx?i=2942&amp;p=11</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=AMD+690G%3A+Performance+Review&amp;rft.atitle=&amp;rft.date=2007-03-06&amp;rft.pub=AnandTech&amp;rft_id=http%3A%2F%2Fwww.anandtech.com%2Fcpuchipsets%2Fshowdoc.aspx%3Fi%3D2942%26p%3D11&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-autogenerated4-98">^ <a href="#cite_ref-autogenerated4_98-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-autogenerated4_98-1"><sup><i><b>b</b></i></sup></a> <span class="citation web">Waldock, Leo (2007-12-05). <a href="http://www.reghardware.co.uk/2007/12/05/review_asus_p5e_vm_hdmi/page4.html" class="external text" rel="nofollow">"Asus P5E-VM HDMI motherboard | Register Hardware"</a>. Reghardware.co.uk<span class="printonly">. <a href="http://www.reghardware.co.uk/2007/12/05/review_asus_p5e_vm_hdmi/page4.html" class="external free" rel="nofollow">http://www.reghardware.co.uk/2007/12/05/review_asus_p5e_vm_hdmi/page4.html</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Asus+P5E-VM+HDMI+motherboard+%26%23124%3B+Register+Hardware&amp;rft.atitle=&amp;rft.aulast=Waldock&amp;rft.aufirst=Leo&amp;rft.au=Waldock%2C%26%2332%3BLeo&amp;rft.date=2007-12-05&amp;rft.pub=Reghardware.co.uk&amp;rft_id=http%3A%2F%2Fwww.reghardware.co.uk%2F2007%2F12%2F05%2Freview_asus_p5e_vm_hdmi%2Fpage4.html&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-99"><b><a href="#cite_ref-99">^</a></b> <span class="citation web">Waldock, Leo (2007-12-05). <a href="http://www.reghardware.co.uk/2007/12/05/review_asus_p5e_vm_hdmi/page3.html" class="external text" rel="nofollow">"Asus P5E-VM HDMI motherboard | Register Hardware"</a>. Reghardware.co.uk<span class="printonly">. <a href="http://www.reghardware.co.uk/2007/12/05/review_asus_p5e_vm_hdmi/page3.html" class="external free" rel="nofollow">http://www.reghardware.co.uk/2007/12/05/review_asus_p5e_vm_hdmi/page3.html</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Asus+P5E-VM+HDMI+motherboard+%26%23124%3B+Register+Hardware&amp;rft.atitle=&amp;rft.aulast=Waldock&amp;rft.aufirst=Leo&amp;rft.au=Waldock%2C%26%2332%3BLeo&amp;rft.date=2007-12-05&amp;rft.pub=Reghardware.co.uk&amp;rft_id=http%3A%2F%2Fwww.reghardware.co.uk%2F2007%2F12%2F05%2Freview_asus_p5e_vm_hdmi%2Fpage3.html&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-100"><b><a href="#cite_ref-100">^</a></b> <span class="citation web"><a href="http://www.notebookjournal.de/praxis/79/2" class="external text" rel="nofollow">"Notebook Test News auf notebookjournal.de&#160;— Praxis&#160;— Exclusive: Intel Centrino 2 Performance Test"</a>. Notebookjournal.de<span class="printonly">. <a href="http://www.notebookjournal.de/praxis/79/2" class="external free" rel="nofollow">http://www.notebookjournal.de/praxis/79/2</a></span><span class="reference-accessdate">. Retrieved 2009-09-17</span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=Notebook+Test+News+auf+notebookjournal.de%26nbsp%3B%E2%80%94+Praxis%26nbsp%3B%E2%80%94+Exclusive%3A+Intel+Centrino+2+Performance+Test&amp;rft.atitle=&amp;rft.pub=Notebookjournal.de&amp;rft_id=http%3A%2F%2Fwww.notebookjournal.de%2Fpraxis%2F79%2F2&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span></li>
+<li id="cite_note-101"><b><a href="#cite_ref-101">^</a></b> <span class="citation web"><a href="http://www.anandtech.com/show/3871/the-sandy-bridge-preview-three-wins-in-a-row/7" class="external text" rel="nofollow">"The Sandy Bridge Preview"</a><span class="printonly">. <a href="http://www.anandtech.com/show/3871/the-sandy-bridge-preview-three-wins-in-a-row/7" class="external free" rel="nofollow">http://www.anandtech.com/show/3871/the-sandy-bridge-preview-three-wins-in-a-row/7</a></span>.</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.btitle=The+Sandy+Bridge+Preview&amp;rft.atitle=&amp;rft_id=http%3A%2F%2Fwww.anandtech.com%2Fshow%2F3871%2Fthe-sandy-bridge-preview-three-wins-in-a-row%2F7&amp;rfr_id=info:sid/en.wikipedia.org:Intel_GMA"><span style="display: none;">&#160;</span></span>A followup identified the controller as Intel HD Graphics 3000.</li>
+</ol>
+</div>
+</div>
+<h2><span class="editsection">[<a href="/w/index.php?title=Intel_GMA&amp;action=edit&amp;section=34" title="Edit section: External links">edit</a>]</span> <span class="mw-headline" id="External_links">External links</span></h2>
+<ul>
+<li><a href="http://www.intel.com/products/graphics/" class="external text" rel="nofollow">Intel Graphics: Homepage</a></li>
+<li><a href="http://www.intel.com/design/chipsets/applnots/313343.htm" class="external text" rel="nofollow">Intel Graphics Media Accelerator X3000 and 3000 White Paper</a></li>
+<li><a href="http://www.intel.com/support/graphics/sb/CS-023606.htm" class="external text" rel="nofollow">Windows Vista* support FAQ</a>, Intel.</li>
+<li><a href="http://www.intellinuxgraphics.org/" class="external text" rel="nofollow">Linux Graphics Drivers from Intel</a></li>
+<li><a href="http://www.xbitlabs.com/articles/chipsets/display/ig965-gf6150_12.html" class="external text" rel="nofollow">Contemporary Platforms with Integrated Graphics (page 12)</a>, X-bit labs.</li>
+<li><a href="http://www.reghardware.co.uk/2006/12/15/review_intel_vs_amd_integrated/" class="external text" rel="nofollow">The Register: <i>Intel vs AMD - integrated graphics shoot-out</i></a></li>
+<li><a href="http://www.legitreviews.com/article/812/1/" class="external text" rel="nofollow">Blu-Ray Performance - Intel X4500HD Versus Radeon HD 4830</a></li>
+</ul>
+<table class="navbox" cellspacing="0" style=";">
+<tr>
+<td style="padding:2px;">
+<table cellspacing="0" class="nowraplinks collapsible uncollapsed" style="width:100%;background:transparent;color:inherit;;">
+<tr>
+<th style=";" colspan="2" class="navbox-title"><span style="float:left;width:6em;text-align:left;"><span class="noprint plainlinks navbar" style=""><span style="white-space:nowrap;word-spacing:-.12em;"><a href="/wiki/Template:Intel_processors" title="Template:Intel processors"><span style=";;background:none transparent;border:none;font-size:100%;" title="View this template">v</span></a> <span style=";;background:none transparent;border:none;font-size:100%;"><b>·</b></span> <a href="/wiki/Template_talk:Intel_processors" title="Template talk:Intel processors"><span style=";;background:none transparent;border:none;font-size:100%;" title="Discuss this template">d</span></a> <span style=";;background:none transparent;border:none;font-size:100%;"><b>·</b></span> <a href="http://en.wikipedia.org/w/index.php?title=Template:Intel_processors&amp;action=edit" class="external text" rel="nofollow"><span style=";;background:none transparent;border:none;font-size:100%;" title="Edit this template">e</span></a></span></span></span><span class="" style="font-size:110%;"><a href="/wiki/List_of_Intel_microprocessors" title="List of Intel microprocessors">Intel processors</a></span></th>
+</tr>
+<tr style="height:2px;">
+<td></td>
+</tr>
+<tr>
+<td class="navbox-group" style=";;">Discontinued</td>
+<td style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;;;" class="navbox-list navbox-odd">
+<div style="padding:0em 0.25em"></div>
+<table cellspacing="0" class="nowraplinks navbox-subgroup" style="width:100%;;;;">
+<tr>
+<td class="navbox-group" style=";width:12em;"><a href="/wiki/Binary-coded_decimal" title="Binary-coded decimal">BCD</a> oriented (<a href="/wiki/4-bit">4-bit</a>)</td>
+<td style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;width:auto;;" class="navbox-list navbox-odd">
+<div style="padding:0em 0.25em"><span style="white-space:nowrap;"><a href="/wiki/Intel_4004" title="Intel 4004">4004</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Intel_4040" title="Intel 4040">4040</a></span></div>
+</td>
+</tr>
+<tr style="height:2px">
+<td></td>
+</tr>
+<tr>
+<td class="navbox-group" style=";width:12em;">pre-x86 (<a href="/wiki/8-bit">8-bit</a>)</td>
+<td style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;width:auto;;" class="navbox-list navbox-even">
+<div style="padding:0em 0.25em"><span style="white-space:nowrap;"><a href="/wiki/Intel_8008" title="Intel 8008">8008</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Intel_8080" title="Intel 8080">8080</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Intel_8085" title="Intel 8085">8085</a></span></div>
+</td>
+</tr>
+<tr style="height:2px">
+<td></td>
+</tr>
+<tr>
+<td class="navbox-group" style=";width:12em;"><a href="/wiki/X86">x86</a>-16 (<a href="/wiki/16-bit">16-bit</a>)</td>
+<td style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;width:auto;;" class="navbox-list navbox-odd">
+<div style="padding:0em 0.25em"><span style="white-space:nowrap;"><a href="/wiki/Intel_8086" title="Intel 8086">8086</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Intel_8088" title="Intel 8088">8088</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Intel_80186" title="Intel 80186">80186</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Intel_80188" title="Intel 80188">80188</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Intel_80286" title="Intel 80286">80286</a></span></div>
+</td>
+</tr>
+<tr style="height:2px">
+<td></td>
+</tr>
+<tr>
+<td class="navbox-group" style=";width:12em;"><a href="/wiki/X87">x87</a> (external <a href="/wiki/Floating-point_unit" title="Floating-point unit">FPUs</a>)</td>
+<td style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;width:auto;;" class="navbox-list navbox-even">
+<div style="padding:0em 0.25em"><span style="white-space:nowrap;"><i>8/16-bit databus:</i> <span style="white-space:nowrap;"><a href="/wiki/Intel_8087" title="Intel 8087">8087</a></span>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><i>16-bit databus:</i> <span style="white-space:nowrap;"><a href="/wiki/Intel_80287" title="Intel 80287" class="mw-redirect">80287</a></span>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><i>32-bit databus:</i> <span style="white-space:nowrap;"><a href="/wiki/Intel_80387" title="Intel 80387" class="mw-redirect">80387</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Intel_80487" title="Intel 80487" class="mw-redirect">80487</a></span></span></div>
+</td>
+</tr>
+<tr style="height:2px">
+<td></td>
+</tr>
+<tr>
+<td class="navbox-group" style=";width:12em;">x86-32/<a href="/wiki/IA-32">IA-32</a> (<a href="/wiki/32-bit">32-bit</a>)</td>
+<td style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;width:auto;;" class="navbox-list navbox-odd">
+<div style="padding:0em 0.25em"><span style="white-space:nowrap;"><a href="/wiki/Intel_80386" title="Intel 80386">80386</a>&#160;(<span style="white-space:nowrap;"><a href="/wiki/Intel_80386SX" title="Intel 80386SX" class="mw-redirect">SX</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Intel_80376" title="Intel 80376">376</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Intel_80386EX" title="Intel 80386EX">EX</a></span>)&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Intel_80486" title="Intel 80486">80486</a>&#160;(<span style="white-space:nowrap;"><a href="/wiki/Intel_80486SX" title="Intel 80486SX">SX</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Intel_80486DX2" title="Intel 80486DX2">DX2</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Intel_80486DX4" title="Intel 80486DX4">DX4</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Intel_80486SL" title="Intel 80486SL">SL</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/RapidCAD">RapidCAD</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Intel_80486_OverDrive" title="Intel 80486 OverDrive">OverDrive</a></span>)&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Pentium">Pentium</a>&#160;(<span style="white-space:nowrap;"><a href="/wiki/P5_(microarchitecture)" title="P5 (microarchitecture)">Original</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Pentium_OverDrive" title="Pentium OverDrive">OverDrive</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Pentium_Pro" title="Pentium Pro">Pro</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Pentium_II" title="Pentium II">II</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Pentium_II_OverDrive" title="Pentium II OverDrive" class="mw-redirect">II OverDrive</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Pentium_III" title="Pentium III">III</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Pentium_4" title="Pentium 4">4</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Pentium_M" title="Pentium M">M</a></span>)&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Intel_Core" title="Intel Core">Core</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Celeron_M" class="mw-redirect" title="Celeron M">Celeron M</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Celeron_D" class="mw-redirect" title="Celeron D">Celeron D</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Stealey_(microprocessor)" title="Stealey (microprocessor)">A100/A110</a></span></div>
+</td>
+</tr>
+<tr style="height:2px">
+<td></td>
+</tr>
+<tr>
+<td class="navbox-group" style=";width:12em;"><a href="/wiki/X86-64">x86-64</a>/EM64T (<a href="/wiki/64-bit">64-bit</a>)</td>
+<td style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;width:auto;;" class="navbox-list navbox-even">
+<div style="padding:0em 0.25em"><span style="white-space:nowrap;"><a href="/wiki/Pentium_4#Prescott_2M_.28Extreme_Edition.29">Pentium 4</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Pentium_D">Pentium D</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Pentium_D#Smithfield_XE" title="Pentium D">Pentium Extreme Edition</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Celeron_D" class="mw-redirect" title="Celeron D">Celeron D</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Intel_Core_2" title="Intel Core 2">Core 2</a></span></div>
+</td>
+</tr>
+<tr style="height:2px">
+<td></td>
+</tr>
+<tr>
+<td class="navbox-group" style=";width:12em;">Other</td>
+<td style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;width:auto;;" class="navbox-list navbox-odd">
+<div style="padding:0em 0.25em"><span style="white-space:nowrap;"><a href="/wiki/Intel_iAPX_432" title="Intel iAPX 432">iAPX 432</a>&#160;<span style="font-weight:bold;">—</span></span> <span style="white-space:nowrap"><i><a href="/wiki/Reduced_instruction_set_computing" title="Reduced instruction set computing">RISC</a>:</i> <span style="white-space:nowrap;"><a href="/wiki/Intel_i860" title="Intel i860">i860</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Intel_i960" title="Intel i960">i960</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/StrongARM">StrongARM</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/XScale">XScale</a></span></span></div>
+</td>
+</tr>
+</table>
+</td>
+</tr>
+<tr style="height:2px">
+<td></td>
+</tr>
+<tr>
+<td class="navbox-group" style=";;">Current</td>
+<td style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;;;" class="navbox-list navbox-even">
+<div style="padding:0em 0.25em"><span style="white-space:nowrap;"><i>x86-32:</i> <span style="white-space:nowrap;"><a href="/wiki/Tolapai" title="Tolapai">EP80579</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Intel_Consumer_Electronics" title="Intel Consumer Electronics" class="mw-redirect">Intel CE</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Intel_Atom" title="Intel Atom">Atom</a></span>&#160;<span style="font-weight:bold;">—</span></span> <span style="white-space:nowrap"><i>x86-64:</i> <span style="white-space:nowrap;"><a href="/wiki/Intel_Atom" title="Intel Atom">Atom (some)</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Celeron">Celeron</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Pentium_(brand)" title="Pentium (brand)" class="mw-redirect">Pentium</a>&#160;(<span style="white-space:nowrap;"><a href="/wiki/Pentium_Dual-Core" title="Pentium Dual-Core">Dual-Core</a></span>)&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Intel_Core" title="Intel Core">Core</a>&#160;(<span style="white-space:nowrap;"><a href="/wiki/Intel_Core_i3" title="Intel Core i3" class="mw-redirect">i3</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Intel_Core_i5" title="Intel Core i5">i5</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Intel_Core_i7" title="Intel Core i7">i7</a></span>)&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Xeon">Xeon</a></span>&#160;<span style="font-weight:bold;">—</span></span> <span style="white-space:nowrap"><i>Other:</i> <span style="white-space:nowrap;"><a href="/wiki/XScale#IOP" title="XScale">IOP</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Itanium#Itanium_2:_2002.E2.80.932010">Itanium</a></span></span></div>
+</td>
+</tr>
+<tr style="height:2px">
+<td></td>
+</tr>
+<tr>
+<td class="navbox-group" style=";;">Lists</td>
+<td style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;;;" class="navbox-list navbox-even">
+<div style="padding:0em 0.25em"><span style="white-space:nowrap;"><a href="/wiki/CPU_socket" title="CPU socket">CPU sockets</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/List_of_CPU_power_dissipation" title="List of CPU power dissipation">CPU power dissipation</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/List_of_Intel_chipsets" title="List of Intel chipsets">Chipsets</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Platform_Controller_Hub" title="Platform Controller Hub">PCHs</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/System_Controller_Hub" title="System Controller Hub">SCHs</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/I/O_Controller_Hub" title="I/O Controller Hub">ICHs</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/PCI_IDE_ISA_Xcelerator" title="PCI IDE ISA Xcelerator">PIIXs</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/List_of_Intel_CPU_microarchitectures" title="List of Intel CPU microarchitectures">Microarchitectures</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/List_of_Intel_microprocessors" title="List of Intel microprocessors">Processors</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/List_of_future_Intel_microprocessors" title="List of future Intel microprocessors">Future Processors</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/List_of_Intel_codenames" title="List of Intel codenames">Codenames</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><strong class="selflink">GMA</strong>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><br />
+<a href="/wiki/List_of_Intel_Atom_microprocessors" title="List of Intel Atom microprocessors">Atom</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/List_of_Intel_Celeron_microprocessors" title="List of Intel Celeron microprocessors">Celeron</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/List_of_Intel_Core_microprocessors" title="List of Intel Core microprocessors">Core</a>&#160;(<span style="white-space:nowrap;"><a href="/wiki/List_of_Intel_Core_2_microprocessors" title="List of Intel Core 2 microprocessors">2</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/List_of_Intel_Core_i3_microprocessors" title="List of Intel Core i3 microprocessors">i3</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/List_of_Intel_Core_i5_microprocessors" title="List of Intel Core i5 microprocessors">i5</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/List_of_Intel_Core_i7_microprocessors" title="List of Intel Core i7 microprocessors">i7</a></span>)&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/List_of_Intel_Itanium_microprocessors" title="List of Intel Itanium microprocessors">Itanium</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/List_of_Intel_Pentium_microprocessors" title="List of Intel Pentium microprocessors">Pentium</a>&#160;(<span style="white-space:nowrap;"><a href="/wiki/List_of_Intel_Pentium_Pro_microprocessors" title="List of Intel Pentium Pro microprocessors">Pro</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/List_of_Intel_Pentium_II_microprocessors" title="List of Intel Pentium II microprocessors">II</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/List_of_Intel_Pentium_III_microprocessors" title="List of Intel Pentium III microprocessors">III</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/List_of_Intel_Pentium_4_microprocessors" title="List of Intel Pentium 4 microprocessors">4</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/List_of_Intel_Pentium_D_microprocessors" title="List of Intel Pentium D microprocessors">D</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/List_of_Intel_Pentium_M_microprocessors" title="List of Intel Pentium M microprocessors">M</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/List_of_Intel_Pentium_Dual-Core_microprocessors" title="List of Intel Pentium Dual-Core microprocessors">Dual-Core</a></span>)&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/List_of_Intel_Xeon_microprocessors" title="List of Intel Xeon microprocessors">Xeon</a></span></div>
+</td>
+</tr>
+<tr style="height:2px">
+<td></td>
+</tr>
+<tr>
+<td class="navbox-group" style=";;"><a href="/wiki/Microarchitecture" title="Microarchitecture">Microarchitectures</a></td>
+<td style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;;;" class="navbox-list navbox-odd">
+<div style="padding:0em 0.25em"></div>
+<table cellspacing="0" class="nowraplinks navbox-subgroup" style="width:100%;;;;">
+<tr>
+<td class="navbox-group" style=";;">P5</td>
+<td style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;;;" class="navbox-list navbox-odd">
+<div style="padding:0em 0.25em"></div>
+<table cellspacing="0" class="nowraplinks collapsible autocollapse navbox-subgroup" style="width:100%;;;;">
+<tr>
+<th style=";" colspan="2" class="navbox-title"><span style="float:left;width:6em;">&#160;</span><span class="" style="font-size:100%;"><a href="/wiki/P5_(microarchitecture)" title="P5 (microarchitecture)">P5</a> based cores</span></th>
+</tr>
+<tr style="height:2px;">
+<td></td>
+</tr>
+<tr>
+<td class="navbox-group" style=";;"><a href="/wiki/800_nanometer" title="800 nanometer">800&#160;nm</a></td>
+<td style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;;;" class="navbox-list navbox-odd">
+<div style="padding:0em 0.25em"><span style="white-space:nowrap;"><a href="/wiki/P5_(microprocessor)" title="P5 (microprocessor)" class="mw-redirect">P5</a></span></div>
+</td>
+</tr>
+<tr style="height:2px">
+<td></td>
+</tr>
+<tr>
+<td class="navbox-group" style=";;"><a href="/wiki/600_nanometer" title="600 nanometer">600&#160;nm</a></td>
+<td style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;;;" class="navbox-list navbox-even">
+<div style="padding:0em 0.25em"><span style="white-space:nowrap;"><a href="/wiki/P54C_(microprocessor)" title="P54C (microprocessor)" class="mw-redirect">P54C</a></span></div>
+</td>
+</tr>
+<tr style="height:2px">
+<td></td>
+</tr>
+<tr>
+<td class="navbox-group" style=";;"><a href="/wiki/350_nanometer" title="350 nanometer">350&#160;nm</a></td>
+<td style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;;;" class="navbox-list navbox-odd">
+<div style="padding:0em 0.25em"><span style="white-space:nowrap;"><a href="/wiki/P54CS_(microprocessor)" title="P54CS (microprocessor)" class="mw-redirect">P54CS</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/P55C_(microprocessor)" title="P55C (microprocessor)" class="mw-redirect">P55C</a></span></div>
+</td>
+</tr>
+<tr style="height:2px">
+<td></td>
+</tr>
+<tr>
+<td class="navbox-group" style=";;"><a href="/wiki/250_nanometer" title="250 nanometer">250&#160;nm</a></td>
+<td style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;;;" class="navbox-list navbox-even">
+<div style="padding:0em 0.25em"><span style="white-space:nowrap;"><a href="/wiki/Tillamook_(microprocessor)" title="Tillamook (microprocessor)" class="mw-redirect">Tillamook</a></span></div>
+</td>
+</tr>
+</table>
+</td>
+</tr>
+<tr style="height:2px">
+<td></td>
+</tr>
+<tr>
+<td class="navbox-group" style=";;">P6</td>
+<td style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;;;" class="navbox-list navbox-even">
+<div style="padding:0em 0.25em"></div>
+<table cellspacing="0" class="nowraplinks collapsible autocollapse navbox-subgroup" style="width:100%;;;;">
+<tr>
+<th style=";" colspan="2" class="navbox-title"><span style="float:left;width:6em;">&#160;</span><span class="" style="font-size:100%;"><span style="white-space:nowrap;"><a href="/wiki/P6_(microarchitecture)" title="P6 (microarchitecture)">P6</a>&#160;/</span> <span style="white-space:nowrap"><a href="/wiki/Pentium_M_(microarchitecture)" title="Pentium M (microarchitecture)" class="mw-redirect">Pentium M</a>&#160;/</span> <span style="white-space:nowrap"><a href="/wiki/Enhanced_Pentium_M_(microarchitecture)" title="Enhanced Pentium M (microarchitecture)" class="mw-redirect">Enhanced Pentium M</a></span> based cores</span></th>
+</tr>
+<tr style="height:2px;">
+<td></td>
+</tr>
+<tr>
+<td class="navbox-group" style=";;">500&#160;<a href="/wiki/Nanometre" title="Nanometre">nm</a></td>
+<td style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;;;" class="navbox-list navbox-odd">
+<div style="padding:0em 0.25em"><span style="white-space:nowrap;"><a href="/wiki/Pentium_Pro" title="Pentium Pro">P6</a></span></div>
+</td>
+</tr>
+<tr style="height:2px">
+<td></td>
+</tr>
+<tr>
+<td class="navbox-group" style=";;">350&#160;nm</td>
+<td style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;;;" class="navbox-list navbox-even">
+<div style="padding:0em 0.25em"><span style="white-space:nowrap;"><a href="/wiki/Pentium_Pro" title="Pentium Pro">P6</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Klamath_(microprocessor)" title="Klamath (microprocessor)" class="mw-redirect">Klamath</a></span></div>
+</td>
+</tr>
+<tr style="height:2px">
+<td></td>
+</tr>
+<tr>
+<td class="navbox-group" style=";;">250&#160;nm</td>
+<td style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;;;" class="navbox-list navbox-odd">
+<div style="padding:0em 0.25em"><span style="white-space:nowrap;"><a href="/wiki/Mendocino_(microprocessor)" title="Mendocino (microprocessor)" class="mw-redirect">Mendocino</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Dixon_(microprocessor)" title="Dixon (microprocessor)" class="mw-redirect">Dixon</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Tonga_(microprocessor)" title="Tonga (microprocessor)" class="mw-redirect">Tonga</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Covington_(microprocessor)" title="Covington (microprocessor)" class="mw-redirect">Covington</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Deschutes_(microprocessor)" title="Deschutes (microprocessor)" class="mw-redirect">Deschutes</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Katmai_(microprocessor)" title="Katmai (microprocessor)" class="mw-redirect">Katmai</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Drake_(microprocessor)" title="Drake (microprocessor)" class="mw-redirect">Drake</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Tanner_(microprocessor)" title="Tanner (microprocessor)" class="mw-redirect">Tanner</a></span></div>
+</td>
+</tr>
+<tr style="height:2px">
+<td></td>
+</tr>
+<tr>
+<td class="navbox-group" style=";;"><a href="/wiki/180_nanometer" title="180 nanometer">180&#160;nm</a></td>
+<td style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;;;" class="navbox-list navbox-even">
+<div style="padding:0em 0.25em"><span style="white-space:nowrap;"><a href="/wiki/Coppermine_(microprocessor)" title="Coppermine (microprocessor)" class="mw-redirect">Coppermine</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Coppermine_T_(microprocessor)" title="Coppermine T (microprocessor)" class="mw-redirect">Coppermine T</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Intel_Timna" title="Intel Timna">Timna</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Cascades_(microprocessor)" title="Cascades (microprocessor)" class="mw-redirect">Cascades</a></span></div>
+</td>
+</tr>
+<tr style="height:2px">
+<td></td>
+</tr>
+<tr>
+<td class="navbox-group" style=";;"><a href="/wiki/130_nanometer" title="130 nanometer">130&#160;nm</a></td>
+<td style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;;;" class="navbox-list navbox-odd">
+<div style="padding:0em 0.25em"><span style="white-space:nowrap;"><a href="/wiki/Tualatin_(microprocessor)" title="Tualatin (microprocessor)" class="mw-redirect">Tualatin</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Banias_(microprocessor)" title="Banias (microprocessor)" class="mw-redirect">Banias</a></span></div>
+</td>
+</tr>
+<tr style="height:2px">
+<td></td>
+</tr>
+<tr>
+<td class="navbox-group" style=";;"><a href="/wiki/90_nanometer" title="90 nanometer">90&#160;nm</a></td>
+<td style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;;;" class="navbox-list navbox-even">
+<div style="padding:0em 0.25em"><span style="white-space:nowrap;"><a href="/wiki/Dothan_(microprocessor)" title="Dothan (microprocessor)" class="mw-redirect">Dothan</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Stealey_(microprocessor)" title="Stealey (microprocessor)">Stealey</a></span></div>
+</td>
+</tr>
+<tr style="height:2px">
+<td></td>
+</tr>
+<tr>
+<td class="navbox-group" style=";;"><a href="/wiki/65_nanometer" title="65 nanometer">65&#160;nm</a></td>
+<td style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;;;" class="navbox-list navbox-odd">
+<div style="padding:0em 0.25em"><span style="white-space:nowrap;"><a href="/wiki/Tolapai">Tolapai</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Yonah_(microprocessor)" title="Yonah (microprocessor)">Yonah</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Sossaman_(microprocessor)" title="Sossaman (microprocessor)" class="mw-redirect">Sossaman</a></span></div>
+</td>
+</tr>
+</table>
+</td>
+</tr>
+<tr style="height:2px">
+<td></td>
+</tr>
+<tr>
+<td class="navbox-group" style=";;">NetBurst</td>
+<td style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;;;" class="navbox-list navbox-odd">
+<div style="padding:0em 0.25em"></div>
+<table cellspacing="0" class="nowraplinks collapsible autocollapse navbox-subgroup" style="width:100%;;;;">
+<tr>
+<th style=";" colspan="2" class="navbox-title"><span style="float:left;width:6em;">&#160;</span><span class="" style="font-size:100%;"><a href="/wiki/NetBurst_(microarchitecture)" title="NetBurst (microarchitecture)">NetBurst</a> based cores</span></th>
+</tr>
+<tr style="height:2px;">
+<td></td>
+</tr>
+<tr>
+<td class="navbox-group" style=";;">180&#160;nm</td>
+<td style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;;;" class="navbox-list navbox-odd">
+<div style="padding:0em 0.25em"><span style="white-space:nowrap;"><a href="/wiki/Pentium_4#Willamette" title="Pentium 4">Willamette</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Xeon#Foster" title="Xeon">Foster</a></span></div>
+</td>
+</tr>
+<tr style="height:2px">
+<td></td>
+</tr>
+<tr>
+<td class="navbox-group" style=";;">130&#160;nm</td>
+<td style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;;;" class="navbox-list navbox-even">
+<div style="padding:0em 0.25em"><span style="white-space:nowrap;"><a href="/wiki/Pentium_4#Northwood" title="Pentium 4">Northwood</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Pentium_4#Gallatin_.28Extreme_Edition.29" title="Pentium 4">Gallatin</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Xeon#Prestonia" title="Xeon">Prestonia</a></span></div>
+</td>
+</tr>
+<tr style="height:2px">
+<td></td>
+</tr>
+<tr>
+<td class="navbox-group" style=";;">90&#160;nm</td>
+<td style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;;;" class="navbox-list navbox-odd">
+<div style="padding:0em 0.25em"><span style="white-space:nowrap;"><a href="/wiki/Tejas_and_Jayhawk">Tejas and Jayhawk</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Pentium_4#Prescott" title="Pentium 4">Prescott</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Pentium_D#Smithfield" title="Pentium D">Smithfield</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Xeon#Xeon_.28DP.29_.26_Xeon_MP_.2864-bit.29" title="Xeon">Nocona</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Xeon#Xeon_.28DP.29_.26_Xeon_MP_.2864-bit.29" title="Xeon">Irwindale</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Xeon#Xeon_.28DP.29_.26_Xeon_MP_.2864-bit.29" title="Xeon">Cranford</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Xeon#Xeon_.28DP.29_.26_Xeon_MP_.2864-bit.29" title="Xeon">Potomac</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Xeon#.22Paxville_DP.22" title="Xeon">Paxville</a></span></div>
+</td>
+</tr>
+<tr style="height:2px">
+<td></td>
+</tr>
+<tr>
+<td class="navbox-group" style=";;">65&#160;nm</td>
+<td style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;;;" class="navbox-list navbox-even">
+<div style="padding:0em 0.25em"><span style="white-space:nowrap;"><a href="/wiki/Pentium_4#Cedar_Mill" title="Pentium 4">Cedar Mill</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Pentium_D#Presler" title="Pentium D">Presler</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Xeon#5000-series_.22Dempsey.22" title="Xeon">Dempsey</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Xeon#7100-series_.22Tulsa.22" title="Xeon">Tulsa</a></span></div>
+</td>
+</tr>
+</table>
+</td>
+</tr>
+<tr style="height:2px">
+<td></td>
+</tr>
+<tr>
+<td class="navbox-group" style=";;">Core</td>
+<td style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;;;" class="navbox-list navbox-even">
+<div style="padding:0em 0.25em"></div>
+<table cellspacing="0" class="nowraplinks collapsible autocollapse navbox-subgroup" style="width:100%;;;;">
+<tr>
+<th style=";" colspan="2" class="navbox-title"><span style="float:left;width:6em;">&#160;</span><span class="" style="font-size:100%;"><span style="white-space:nowrap;"><a href="/wiki/Core_(microarchitecture)" title="Core (microarchitecture)">Core</a>&#160;/</span> <span style="white-space:nowrap"><a href="/wiki/Penryn_(microarchitecture)" title="Penryn (microarchitecture)" class="mw-redirect">Penryn</a></span> based cores</span></th>
+</tr>
+<tr style="height:2px;">
+<td></td>
+</tr>
+<tr>
+<td class="navbox-group" style=";;">65&#160;nm</td>
+<td style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;;;" class="navbox-list navbox-odd">
+<div style="padding:0em 0.25em"><span style="white-space:nowrap;"><a href="/wiki/Merom_(microprocessor)#Merom-L" title="Merom (microprocessor)">Merom-L</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Merom_(microprocessor)" title="Merom (microprocessor)">Merom</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Conroe_(microprocessor)#Conroe-L" title="Conroe (microprocessor)">Conroe-L</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Conroe_(microprocessor)#Allendale" title="Conroe (microprocessor)">Allendale</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Conroe_(microprocessor)" title="Conroe (microprocessor)">Conroe</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Kentsfield_(microprocessor)" title="Kentsfield (microprocessor)">Kentsfield</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Woodcrest_(microprocessor)" title="Woodcrest (microprocessor)" class="mw-redirect">Woodcrest</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Clovertown_(microprocessor)" title="Clovertown (microprocessor)" class="mw-redirect">Clovertown</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Tigerton_(microprocessor)" title="Tigerton (microprocessor)" class="mw-redirect">Tigerton</a></span></div>
+</td>
+</tr>
+<tr style="height:2px">
+<td></td>
+</tr>
+<tr>
+<td class="navbox-group" style=";;"><a href="/wiki/45_nanometer" title="45 nanometer">45&#160;nm</a></td>
+<td style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;;;" class="navbox-list navbox-even">
+<div style="padding:0em 0.25em"><span style="white-space:nowrap;"><a href="/wiki/Penryn_(microprocessor)" title="Penryn (microprocessor)">Penryn</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Penryn_(microprocessor)#Penryn-QC" title="Penryn (microprocessor)">Penryn-QC</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Wolfdale_(microprocessor)" title="Wolfdale (microprocessor)">Wolfdale</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Yorkfield">Yorkfield</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Wolfdale-DP_(microprocessor)" title="Wolfdale-DP (microprocessor)" class="mw-redirect">Wolfdale-DP</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Harpertown_(microprocessor)" title="Harpertown (microprocessor)" class="mw-redirect">Harpertown</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Dunnington_(microprocessor)" title="Dunnington (microprocessor)" class="mw-redirect">Dunnington</a></span></div>
+</td>
+</tr>
+</table>
+</td>
+</tr>
+<tr style="height:2px">
+<td></td>
+</tr>
+<tr>
+<td class="navbox-group" style=";;">Bonnell</td>
+<td style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;;;" class="navbox-list navbox-odd">
+<div style="padding:0em 0.25em"></div>
+<table cellspacing="0" class="nowraplinks collapsible autocollapse navbox-subgroup" style="width:100%;;;;">
+<tr>
+<th style=";" colspan="2" class="navbox-title"><span style="float:left;width:6em;">&#160;</span><span class="" style="font-size:100%;"><a href="/wiki/Bonnell_(microarchitecture)" title="Bonnell (microarchitecture)" class="mw-redirect">Bonnell</a> based cores</span></th>
+</tr>
+<tr style="height:2px;">
+<td></td>
+</tr>
+<tr>
+<td class="navbox-group" style=";;">45&#160;nm</td>
+<td style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;;;" class="navbox-list navbox-odd">
+<div style="padding:0em 0.25em"><span style="white-space:nowrap;"><a href="/wiki/Silverthorne_(microprocessor)" title="Silverthorne (microprocessor)" class="mw-redirect">Silverthorne</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Diamondville_(microprocessor)" title="Diamondville (microprocessor)" class="mw-redirect">Diamondville</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Pineview_(microprocessor)" title="Pineview (microprocessor)" class="mw-redirect">Pineview</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Lincroft_(microprocessor)" title="Lincroft (microprocessor)" class="mw-redirect">Lincroft</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Tunnel_Creek_(microprocessor)" title="Tunnel Creek (microprocessor)" class="mw-redirect">Tunnel Creek</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Sodaville_(microprocessor)" title="Sodaville (microprocessor)" class="mw-redirect">Sodaville</a></span></div>
+</td>
+</tr>
+</table>
+</td>
+</tr>
+<tr style="height:2px">
+<td></td>
+</tr>
+<tr>
+<td class="navbox-group" style=";;">Nehalem</td>
+<td style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;;;" class="navbox-list navbox-even">
+<div style="padding:0em 0.25em"></div>
+<table cellspacing="0" class="nowraplinks collapsible autocollapse navbox-subgroup" style="width:100%;;;;">
+<tr>
+<th style=";" colspan="2" class="navbox-title"><span style="float:left;width:6em;">&#160;</span><span class="" style="font-size:100%;"><span style="white-space:nowrap;"><a href="/wiki/Nehalem_(microarchitecture)" title="Nehalem (microarchitecture)">Nehalem</a>&#160;/</span> <span style="white-space:nowrap"><a href="/wiki/Westmere_(microarchitecture)" title="Westmere (microarchitecture)" class="mw-redirect">Westmere</a></span> based cores</span></th>
+</tr>
+<tr style="height:2px;">
+<td></td>
+</tr>
+<tr>
+<td class="navbox-group" style=";;">45&#160;nm</td>
+<td style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;;;" class="navbox-list navbox-odd">
+<div style="padding:0em 0.25em"><span style="white-space:nowrap;"><a href="/wiki/Clarksfield_(microprocessor)" title="Clarksfield (microprocessor)">Clarksfield</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Lynnfield_(microprocessor)" title="Lynnfield (microprocessor)">Lynnfield</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Jasper_Forest_(microprocessor)" title="Jasper Forest (microprocessor)" class="mw-redirect">Jasper Forest</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Bloomfield_(microprocessor)" title="Bloomfield (microprocessor)">Bloomfield</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Gainestown_(microprocessor)" title="Gainestown (microprocessor)" class="mw-redirect">Gainestown (Nehalem-EP)</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Beckton_(microprocessor)" title="Beckton (microprocessor)" class="mw-redirect">Beckton (Nehalem-EX)</a></span></div>
+</td>
+</tr>
+<tr style="height:2px">
+<td></td>
+</tr>
+<tr>
+<td class="navbox-group" style=";;"><a href="/wiki/32_nanometer" title="32 nanometer">32&#160;nm</a></td>
+<td style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;;;" class="navbox-list navbox-even">
+<div style="padding:0em 0.25em"><span style="white-space:nowrap;"><a href="/wiki/Arrandale">Arrandale</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Clarkdale_(microprocessor)" title="Clarkdale (microprocessor)">Clarkdale</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><a href="/wiki/Gulftown" title="Gulftown">Gulftown (Westmere-EP)</a></span></div>
+</td>
+</tr>
+</table>
+</td>
+</tr>
+<tr style="height:2px">
+<td></td>
+</tr>
+<tr>
+<td class="navbox-group" style=";;">Sandy Bridge</td>
+<td style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;;;" class="navbox-list navbox-odd">
+<div style="padding:0em 0.25em"></div>
+<table cellspacing="0" class="nowraplinks collapsible autocollapse navbox-subgroup" style="width:100%;;;;">
+<tr>
+<th style=";" colspan="2" class="navbox-title"><span style="float:left;width:6em;">&#160;</span><span class="" style="font-size:100%;"><span style="white-space:nowrap;"><a href="/wiki/Sandy_Bridge">Sandy Bridge</a>&#160;/</span> <span style="white-space:nowrap"><a href="/wiki/Ivy_Bridge_(microarchitecture)" title="Ivy Bridge (microarchitecture)" class="mw-redirect">Ivy Bridge</a></span> based cores</span></th>
+</tr>
+<tr style="height:2px;">
+<td></td>
+</tr>
+<tr>
+<td class="navbox-group" style=";;">32&#160;nm</td>
+<td style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;;;" class="navbox-list navbox-odd">
+<div style="padding:0em 0.25em"><span style="white-space:nowrap;">Sandy Bridge</span></div>
+</td>
+</tr>
+</table>
+</td>
+</tr>
+<tr style="height:2px">
+<td></td>
+</tr>
+<tr>
+<td class="navbox-group" style=";;">Future</td>
+<td style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;;;" class="navbox-list navbox-even">
+<div style="padding:0em 0.25em"><span style="white-space:nowrap;"><a href="/wiki/Larrabee_(microarchitecture)" title="Larrabee (microarchitecture)">Larrabee</a>&#160;<span style="font-weight:bold;">·</span></span> <span style="white-space:nowrap"><span style="white-space:nowrap;"><a href="/wiki/Haswell_(microarchitecture)" title="Haswell (microarchitecture)">Haswell</a>&#160;/</span> <span style="white-space:nowrap"><a href="/wiki/Rockwell_(microarchitecture)" title="Rockwell (microarchitecture)" class="mw-redirect">Rockwell</a></span></span></div>
+</td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+
+
+<!--
+NewPP limit report
+Preprocessor node count: 50856/1000000
+Post-expand include size: 580417/2048000 bytes
+Template argument size: 339476/2048000 bytes
+Expensive parser function count: 12/500
+-->
+
+<!-- Saved in parser cache with key enwiki:pcache:idhash:2865877-0!*!0!!en!4 and timestamp 20110217194733 -->
+<div class="printfooter">
+Retrieved from "<a href="http://en.wikipedia.org/wiki/Intel_GMA">http://en.wikipedia.org/wiki/Intel_GMA</a>"</div>
+ <!-- /bodytext -->
+ <!-- catlinks -->
+ <div id='catlinks' class='catlinks'><div id="mw-normal-catlinks"><a href="/wiki/Special:Categories" title="Special:Categories">Categories</a>: <span dir='ltr'><a href="/wiki/Category:Intel_microprocessors" title="Category:Intel microprocessors">Intel microprocessors</a></span> | <span dir='ltr'><a href="/wiki/Category:Video_cards" title="Category:Video cards">Video cards</a></span></div><div id="mw-hidden-catlinks" class="mw-hidden-cats-hidden">Hidden categories: <span dir='ltr'><a href="/wiki/Category:All_articles_with_dead_external_links" title="Category:All articles with dead external links">All articles with dead external links</a></span> | <span dir='ltr'><a href="/wiki/Category:Articles_with_dead_external_links_from_November_2010" title="Category:Articles with dead external links from November 2010">Articles with dead external links from November 2010</a></span> | <span dir='ltr'><a href="/wiki/Category:Articles_with_dead_external_links_from_October_2010" title="Category:Articles with dead external links from October 2010">Articles with dead external links from October 2010</a></span> | <span dir='ltr'><a href="/wiki/Category:Articles_with_dead_external_links_from_September_2009" title="Category:Articles with dead external links from September 2009">Articles with dead external links from September 2009</a></span> | <span dir='ltr'><a href="/wiki/Category:All_articles_with_unsourced_statements" title="Category:All articles with unsourced statements">All articles with unsourced statements</a></span> | <span dir='ltr'><a href="/wiki/Category:Articles_with_unsourced_statements_from_July_2008" title="Category:Articles with unsourced statements from July 2008">Articles with unsourced statements from July 2008</a></span> | <span dir='ltr'><a href="/wiki/Category:Articles_with_unsourced_statements_from_February_2011" title="Category:Articles with unsourced statements from February 2011">Articles with unsourced statements from February 2011</a></span> | <span dir='ltr'><a href="/wiki/Category:Articles_with_unsourced_statements_from_November_2009" title="Category:Articles with unsourced statements from November 2009">Articles with unsourced statements from November 2009</a></span> | <span dir='ltr'><a href="/wiki/Category:Articles_with_unsourced_statements_from_February_2010" title="Category:Articles with unsourced statements from February 2010">Articles with unsourced statements from February 2010</a></span> | <span dir='ltr'><a href="/wiki/Category:All_articles_that_may_contain_original_research" title="Category:All articles that may contain original research">All articles that may contain original research</a></span> | <span dir='ltr'><a href="/wiki/Category:Articles_that_may_contain_original_research_from_September_2009" title="Category:Articles that may contain original research from September 2009">Articles that may contain original research from September 2009</a></span></div></div> <!-- /catlinks -->
+ <div class="visualClear"></div>
+ </div>
+ <!-- /bodyContent -->
+ </div>
+ <!-- /content -->
+ <!-- header -->
+ <div id="mw-head" class="noprint">
+
+<!-- 0 -->
+<div id="p-personal" class="">
+ <h5>Personal tools</h5>
+ <ul>
+ <li id="pt-login"><a href="/w/index.php?title=Special:UserLogin&amp;returnto=Intel_GMA" title="You are encouraged to log in; however, it is not mandatory. [o]" accesskey="o">Log in / create account</a></li>
+ </ul>
+</div>
+
+<!-- /0 -->
+ <div id="left-navigation">
+
+<!-- 0 -->
+<div id="p-namespaces" class="vectorTabs">
+ <h5>Namespaces</h5>
+ <ul>
+ <li id="ca-nstab-main" class="selected"><span><a href="/wiki/Intel_GMA" title="View the content page [c]" accesskey="c">Article</a></span></li>
+ <li id="ca-talk"><span><a href="/wiki/Talk:Intel_GMA" title="Discussion about the content page [t]" accesskey="t">Discussion</a></span></li>
+ </ul>
+</div>
+
+<!-- /0 -->
+
+<!-- 1 -->
+<div id="p-variants" class="vectorMenu emptyPortlet">
+ <h5><span>Variants</span><a href="#"></a></h5>
+ <div class="menu">
+ <ul>
+ </ul>
+ </div>
+</div>
+
+<!-- /1 -->
+ </div>
+ <div id="right-navigation">
+
+<!-- 0 -->
+<div id="p-views" class="vectorTabs">
+ <h5>Views</h5>
+ <ul>
+ <li id="ca-view" class="selected"><span><a href="/wiki/Intel_GMA" >Read</a></span></li>
+ <li id="ca-edit"><span><a href="/w/index.php?title=Intel_GMA&amp;action=edit" title="You can edit this page. &#10;Please use the preview button before saving. [e]" accesskey="e">Edit</a></span></li>
+ <li id="ca-history" class="collapsible "><span><a href="/w/index.php?title=Intel_GMA&amp;action=history" title="Past versions of this page [h]" accesskey="h">View history</a></span></li>
+ </ul>
+</div>
+
+<!-- /0 -->
+
+<!-- 1 -->
+<div id="p-cactions" class="vectorMenu emptyPortlet">
+ <h5><span>Actions</span><a href="#"></a></h5>
+ <div class="menu">
+ <ul>
+ </ul>
+ </div>
+</div>
+
+<!-- /1 -->
+
+<!-- 2 -->
+<div id="p-search">
+ <h5><label for="searchInput">Search</label></h5>
+ <form action="/w/index.php" id="searchform">
+ <input type='hidden' name="title" value="Special:Search"/>
+ <div id="simpleSearch">
+ <input id="searchInput" name="search" type="text" title="Search Wikipedia [f]" accesskey="f" value="" />
+ <button id="searchButton" type='submit' name='button' title="Search Wikipedia for this text"><img src="http://bits.wikimedia.org/skins-1.17/vector/images/search-ltr.png?301-1" alt="Search" /></button>
+ </div>
+ </form>
+</div>
+
+<!-- /2 -->
+ </div>
+ </div>
+ <!-- /header -->
+ <!-- panel -->
+ <div id="mw-panel" class="noprint">
+ <!-- logo -->
+ <div id="p-logo"><a style="background-image: url(http://upload.wikimedia.org/wikipedia/en/b/bc/Wiki.png);" href="/wiki/Main_Page" title="Visit the main page"></a></div>
+ <!-- /logo -->
+
+<!-- navigation -->
+<div class="portal" id='p-navigation'>
+ <h5>Navigation</h5>
+ <div class="body">
+ <ul>
+ <li id="n-mainpage-description"><a href="/wiki/Main_Page" title="Visit the main page [z]" accesskey="z">Main page</a></li>
+ <li id="n-contents"><a href="/wiki/Portal:Contents" title="Guides to browsing Wikipedia">Contents</a></li>
+ <li id="n-featuredcontent"><a href="/wiki/Portal:Featured_content" title="Featured content – the best of Wikipedia">Featured content</a></li>
+ <li id="n-currentevents"><a href="/wiki/Portal:Current_events" title="Find background information on current events">Current events</a></li>
+ <li id="n-randompage"><a href="/wiki/Special:Random" title="Load a random article [x]" accesskey="x">Random article</a></li>
+ <li id="n-sitesupport"><a href="http://wikimediafoundation.org/wiki/Special:Landingcheck?landing_page=WMFJA085&amp;language=en&amp;utm_source=donate&amp;utm_medium=sidebar&amp;utm_campaign=20101204SB002" title="Support us">Donate to Wikipedia</a></li>
+ </ul>
+ </div>
+</div>
+
+<!-- /navigation -->
+
+<!-- SEARCH -->
+
+<!-- /SEARCH -->
+
+<!-- interaction -->
+<div class="portal" id='p-interaction'>
+ <h5>Interaction</h5>
+ <div class="body">
+ <ul>
+ <li id="n-help"><a href="/wiki/Help:Contents" title="Guidance on how to use and edit Wikipedia">Help</a></li>
+ <li id="n-aboutsite"><a href="/wiki/Wikipedia:About" title="Find out about Wikipedia">About Wikipedia</a></li>
+ <li id="n-portal"><a href="/wiki/Wikipedia:Community_portal" title="About the project, what you can do, where to find things">Community portal</a></li>
+ <li id="n-recentchanges"><a href="/wiki/Special:RecentChanges" title="The list of recent changes in the wiki [r]" accesskey="r">Recent changes</a></li>
+ <li id="n-contact"><a href="/wiki/Wikipedia:Contact_us" title="How to contact Wikipedia">Contact Wikipedia</a></li>
+ </ul>
+ </div>
+</div>
+
+<!-- /interaction -->
+
+<!-- TOOLBOX -->
+<div class="portal" id="p-tb">
+ <h5>Toolbox</h5>
+ <div class="body">
+ <ul>
+ <li id="t-whatlinkshere"><a href="/wiki/Special:WhatLinksHere/Intel_GMA" title="List of all English Wikipedia pages containing links to this page [j]" accesskey="j">What links here</a></li>
+ <li id="t-recentchangeslinked"><a href="/wiki/Special:RecentChangesLinked/Intel_GMA" title="Recent changes in pages linked from this page [k]" accesskey="k">Related changes</a></li>
+ <li id="t-upload"><a href="/wiki/Wikipedia:Upload" title="Upload files [u]" accesskey="u">Upload file</a></li>
+ <li id="t-specialpages"><a href="/wiki/Special:SpecialPages" title="List of all special pages [q]" accesskey="q">Special pages</a></li>
+ <li id="t-permalink"><a href="/w/index.php?title=Intel_GMA&amp;oldid=414486740" title="Permanent link to this revision of the page">Permanent link</a></li>
+ <li id="t-cite"><a href="/w/index.php?title=Special:Cite&amp;page=Intel_GMA&amp;id=414486740" title="Information on how to cite this page">Cite this page</a></li> </ul>
+ </div>
+</div>
+
+<!-- /TOOLBOX -->
+
+<!-- coll-print_export -->
+<div class="portal" id='p-coll-print_export'>
+ <h5>Print/export</h5>
+ <div class="body">
+ <ul id="collectionPortletList"><li id="coll-create_a_book"><a href="/w/index.php?title=Special:Book&amp;bookcmd=book_creator&amp;referer=Intel+GMA" title="Create a book or page collection" rel="nofollow">Create a book</a></li><li id="coll-download-as-rl"><a href="/w/index.php?title=Special:Book&amp;bookcmd=render_article&amp;arttitle=Intel+GMA&amp;oldid=414486740&amp;writer=rl" title="Download a PDF version of this wiki page" rel="nofollow">Download as PDF</a></li><li id="t-print"><a href="/w/index.php?title=Intel_GMA&amp;printable=yes" title="Printable version of this page [p]" accesskey="p">Printable version</a></li></ul> </div>
+</div>
+
+<!-- /coll-print_export -->
+
+<!-- LANGUAGES -->
+<div class="portal" id="p-lang">
+ <h5>Languages</h5>
+ <div class="body">
+ <ul>
+ <li class="interwiki-cs"><a href="http://cs.wikipedia.org/wiki/Intel_GMA" title="Intel GMA">Česky</a></li>
+ <li class="interwiki-de"><a href="http://de.wikipedia.org/wiki/Intel_GMA" title="Intel GMA">Deutsch</a></li>
+ <li class="interwiki-fr"><a href="http://fr.wikipedia.org/wiki/Intel_GMA" title="Intel GMA">Français</a></li>
+ <li class="interwiki-ko"><a href="http://ko.wikipedia.org/wiki/%EC%9D%B8%ED%85%94_GMA" title="인텔 GMA">한국어</a></li>
+ <li class="interwiki-hu"><a href="http://hu.wikipedia.org/wiki/Intel_GMA" title="Intel GMA">Magyar</a></li>
+ <li class="interwiki-ja"><a href="http://ja.wikipedia.org/wiki/Intel_GMA" title="Intel GMA">日本語</a></li>
+ <li class="interwiki-pl"><a href="http://pl.wikipedia.org/wiki/Intel_GMA" title="Intel GMA">Polski</a></li>
+ <li class="interwiki-pt"><a href="http://pt.wikipedia.org/wiki/Intel_Graphics_Media_Accelerator_3000" title="Intel Graphics Media Accelerator 3000">Português</a></li>
+ <li class="interwiki-ru"><a href="http://ru.wikipedia.org/wiki/Intel_GMA" title="Intel GMA">Русский</a></li>
+ <li class="interwiki-sv"><a href="http://sv.wikipedia.org/wiki/Intel_GMA" title="Intel GMA">Svenska</a></li>
+ <li class="interwiki-zh"><a href="http://zh.wikipedia.org/wiki/Intel_GMA" title="Intel GMA">中文</a></li>
+ </ul>
+ </div>
+</div>
+
+<!-- /LANGUAGES -->
+ </div>
+ <!-- /panel -->
+ <!-- footer -->
+ <div id="footer">
+ <ul id="footer-info">
+ <li id="footer-info-lastmod"> This page was last modified on 17 February 2011 at 19:47.<br /></li>
+ <li id="footer-info-copyright">Text is available under the <a rel="license" href="http://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License">Creative Commons Attribution-ShareAlike License</a><a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/" style="display:none;"></a>;
+additional terms may apply.
+See <a href="http://wikimediafoundation.org/wiki/Terms_of_Use">Terms of Use</a> for details.<br/>
+Wikipedia&reg; is a registered trademark of the <a href="http://www.wikimediafoundation.org/">Wikimedia Foundation, Inc.</a>, a non-profit organization.<br /></li><li class="noprint"><a class='internal' href="http://en.wikipedia.org/wiki/Wikipedia:Contact_us">Contact us</a></li>
+ </ul>
+ <ul id="footer-places">
+ <li id="footer-places-privacy"><a href="http://wikimediafoundation.org/wiki/Privacy_policy" title="wikimedia:Privacy policy">Privacy policy</a></li>
+ <li id="footer-places-about"><a href="/wiki/Wikipedia:About" title="Wikipedia:About">About Wikipedia</a></li>
+ <li id="footer-places-disclaimer"><a href="/wiki/Wikipedia:General_disclaimer" title="Wikipedia:General disclaimer">Disclaimers</a></li>
+ </ul>
+ <ul id="footer-icons" class="noprint">
+ <li id="footer-copyrightico">
+ <a href="http://wikimediafoundation.org/"><img src="/images/wikimedia-button.png" width="88" height="31" alt="Wikimedia Foundation"/></a>
+ </li>
+ <li id="footer-poweredbyico">
+ <a href="http://www.mediawiki.org/"><img src="http://bits.wikimedia.org/skins-1.17/common/images/poweredby_mediawiki_88x31.png" alt="Powered by MediaWiki" width="88" height="31" /></a>
+ </li>
+ </ul>
+ <div style="clear:both"></div>
+ </div>
+ <!-- /footer -->
+
+<script src="http://bits.wikimedia.org/en.wikipedia.org/load.php?debug=false&amp;lang=en&amp;modules=startup&amp;only=scripts&amp;skin=vector" type="text/javascript"></script>
+<script type="text/javascript">if ( window.mediaWiki ) {
+ mediaWiki.config.set({"wgCanonicalNamespace": "", "wgCanonicalSpecialPageName": false, "wgNamespaceNumber": 0, "wgPageName": "Intel_GMA", "wgTitle": "Intel GMA", "wgAction": "view", "wgArticleId": 2865877, "wgIsArticle": true, "wgUserName": null, "wgUserGroups": ["*"], "wgCurRevisionId": 414486740, "wgCategories": ["All articles with dead external links", "Articles with dead external links from November 2010", "Articles with dead external links from October 2010", "Articles with dead external links from September 2009", "All articles with unsourced statements", "Articles with unsourced statements from July 2008", "Articles with unsourced statements from February 2011", "Articles with unsourced statements from November 2009", "Articles with unsourced statements from February 2010", "All articles that may contain original research", "Articles that may contain original research from September 2009", "Intel microprocessors", "Video cards"], "wgBreakFrames": false, "wgRestrictionEdit": [], "wgRestrictionMove": [], "wgSearchNamespaces": [0], "wgFlaggedRevsParams": {"tags": {"status": {"levels": 1, "quality": 2, "pristine": 3}}}, "wgStableRevisionId": null, "wgRevContents": {"error": "Unable to get content.", "waiting": "Waiting for content"}, "wgWikimediaMobileUrl": "http://en.m.wikipedia.org/wiki", "wgCollapsibleNavBucketTest": false, "wgCollapsibleNavForceNewVersion": false, "wgArticleAssessmentJUIPath": "http://bits.wikimedia.org/w/extensions-1.17/UsabilityInitiative/js/js2stopgap/jui.combined.min.js", "Geo": {"city": "", "country": ""}, "wgNoticeProject": "wikipedia"});
+}
+</script>
+<script type="text/javascript">if ( window.mediaWiki ) {
+ mediaWiki.loader.load(["mediawiki.legacy.wikibits", "mediawiki.util", "mediawiki.legacy.ajax", "mediawiki.legacy.mwsuggest", "ext.vector.collapsibleNav", "ext.vector.collapsibleTabs", "ext.vector.editWarning", "ext.vector.simpleSearch"]);
+ mediaWiki.loader.go();
+}
+</script>
+
+<script src="http://bits.wikimedia.org/w/extensions-1.17/WikimediaMobile/MobileRedirect.js?2.2" type="text/javascript"></script>
+<script src="/w/index.php?title=Special:BannerController&amp;cache=/cn.js&amp;301-1" type="text/javascript"></script>
+<script src="http://bits.wikimedia.org/en.wikipedia.org/load.php?debug=false&amp;lang=en&amp;modules=site&amp;only=scripts&amp;skin=vector&amp;version=20110217T190952Z" type="text/javascript"></script>
+<script type="text/javascript">if ( window.mediaWiki ) {
+ mediaWiki.user.options.set({"ccmeonemails":0,"cols":80,"contextchars":50,"contextlines":5,"date":"default","diffonly":0,"disablemail":0,"disablesuggest":0,"editfont":"default","editondblclick":0,"editsection":1,"editsectiononrightclick":0,"enotifminoredits":0,"enotifrevealaddr":0,"enotifusertalkpages":1,"enotifwatchlistpages":0,"extendwatchlist":0,"externaldiff":0,"externaleditor":0,"fancysig":0,"forceeditsummary":0,"gender":"unknown","hideminor":0,"hidepatrolled":0,"highlightbroken":1,"imagesize":2,"justify":0,"math":1,"minordefault":0,"newpageshidepatrolled":0,"nocache":0,"noconvertlink":0,"norollbackdiff":0,"numberheadings":0,"previewonfirst":0,"previewontop":1,"quickbar":1,"rcdays":7,"rclimit":50,"rememberpassword":0,"rows":25,"searchlimit":20,"showhiddencats":0,"showjumplinks":1,"shownumberswatching":1,"showtoc":1,"showtoolbar":1,"skin":"vector","stubthreshold":0,"thumbsize":4,"underline":2,"uselivepreview":0,"usenewrc":0,"watchcreations":1,"watchdefault":0,"watchdeletion":0,"watchlistdays":"3","watchlisthideanons":0,"watchlisthidebots":0,"watchlisthideliu":0,"watchlisthideminor":0,"watchlisthideown":0,"watchlisthidepatrolled":0,"watchmoves":0,"wllimit":250,"flaggedrevssimpleui":1,"flaggedrevsstable":false,"flaggedrevseditdiffs":true,"flaggedrevsviewdiffs":false,"vector-simplesearch":1,"useeditwarning":1,"vector-collapsiblenav":1,"usebetatoolbar":1,"usebetatoolbar-cgd":1,"variant":"en","language":"en","searchNs0":true,"searchNs1":false,"searchNs2":false,"searchNs3":false,"searchNs4":false,"searchNs5":false,"searchNs6":false,"searchNs7":false,"searchNs8":false,"searchNs9":false,"searchNs10":false,"searchNs11":false,"searchNs12":false,"searchNs13":false,"searchNs14":false,"searchNs15":false,"searchNs100":false,"searchNs101":false,"searchNs108":false,"searchNs109":false});
+ mediaWiki.loader.state({"user.options":"ready"});
+}
+</script><script type="text/javascript" src="http://geoiplookup.wikimedia.org/"></script> <!-- fixalpha -->
+ <script type="text/javascript"> if ( window.isMSIE55 ) fixalpha(); </script>
+ <!-- /fixalpha -->
+ <!-- Served by srv184 in 0.118 secs. --> </body>
+</html>
diff --git a/chip-data/intel/Intel_GMA.ods b/chip-data/intel/Intel_GMA.ods
new file mode 100644
index 0000000..fa94b03
--- /dev/null
+++ b/chip-data/intel/Intel_GMA.ods
Binary files differ
diff --git a/data/XMLRPCdata.json b/data/XMLRPCdata.json
new file mode 100644
index 0000000..4dab662
--- /dev/null
+++ b/data/XMLRPCdata.json
@@ -0,0 +1,8 @@
+{
+ "bugzilla.redhat.com": {
+ "url": "https://bugzilla.redhat.com/xmlrpc.cgi"
+ },
+ "bz-web2-test.devel.redhat.com": {
+ "url": "https://bz-web2-test.devel.redhat.com/xmlrpc.cgi"
+ }
+} \ No newline at end of file
diff --git a/data/bugzillalabelAbbreviations.json b/data/bugzillalabelAbbreviations.json
new file mode 100644
index 0000000..4a53cd1
--- /dev/null
+++ b/data/bugzillalabelAbbreviations.json
@@ -0,0 +1,7 @@
+{
+ "bugzilla.mozilla.org": "MoFo",
+ "bugs.freedesktop.org": "FDo",
+ "bugs.eclipse.org": "Eclipse",
+ "bugzilla.gnome.org": "bgo",
+ "bugzilla.redhat.com": "RH"
+} \ No newline at end of file
diff --git a/data/bugzillalabelNames.json b/data/bugzillalabelNames.json
new file mode 100644
index 0000000..8512e58
--- /dev/null
+++ b/data/bugzillalabelNames.json
@@ -0,0 +1,7 @@
+{
+ "bugzilla.mozilla.org": "Mozilla Foundation",
+ "bugs.freedesktop.org": "FreeDesktop.org",
+ "bugs.eclipse.org": "Eclipse Project",
+ "bugzilla.gnome.org": "GNOME Desktop",
+ "bugzilla.redhat.com": "Red Hat"
+}
diff --git a/data/lib/bzpage.js b/data/lib/bzpage.js
new file mode 100644
index 0000000..9afb112
--- /dev/null
+++ b/data/lib/bzpage.js
@@ -0,0 +1,864 @@
+// Released under the MIT/X11 license
+// http://www.opensource.org/licenses/mit-license.php
+"use strict";
+var bugURL = "https://bugzilla.redhat.com/show_bug.cgi?id=";
+var BTSPrefNS = "bugzilla-triage.setting.";
+
+// Shared contstants
+var NumberOfFrames = 7;
+
+// constants
+var SalmonPink = new Color(255, 224, 176); // RGB 255, 224, 176; HSL 36, 2,
+ // 85
+var ReporterColor = new Color(255, 255, 166); // RGB 255, 255, 166; HSL 60, 2,
+ // 83
+
+// global variables
+var config = {};
+var constantData = {}; // This should be probably eliminated ASAP or
+ // or done by other means. TODO
+/**
+* central handler processing messages from the main script.
+*/
+onMessage = function onMessage(msg) {
+ console.log("onMessage - incoming : msg.cmd = " + msg.cmd);
+ switch (msg.cmd) {
+ case "ReloadThePage":
+ document.location.reload(true);
+ break;
+ case "queryLocal":
+ queryInNewTab(msg.data, getComponent(), getProduct());
+ break;
+ case "CreateButtons":
+ constantData = msg.data.constData;
+ config = msg.data.config;
+ generateButtons(msg.data.instPkgs, msg.data.kNodes);
+ break;
+ case "Error":
+ alert("Error " + msg.data);
+ break;
+ case "Unhandled":
+ break;
+ default:
+ if (RHOnMessageHandler) {
+ RHOnMessageHandler(msg);
+ }
+ else {
+ console.error("Error: unknown RPC call " + msg.toSource());
+ }
+ }
+};
+
+/**
+ * @param cmd Object with all commands to be executed
+ *
+ * PROBLEM: according to https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference\
+ * /Statements/for...in there is no guaranteed order of execution of
+ * commands (i.e., key, commentObj[key] pairs) in for..in cycle.
+ * According to https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference\
+ * /Operators/Special_Operators/delete_Operator#Cross-browser_issues it seems that
+ * everywhere except of Internet Explorer this should work well, but waiting
+ * impatiently when this bite us.
+ */
+function executeCommand(cmdObj) {
+ for (var key in cmdObj) {
+ centralCommandDispatch(key, cmdObj[key]);
+ }
+}
+
+/**
+ * Actual execution function
+ *
+ * @param cmdLabel String with the name of the command to be executed
+ * @param cmdParams Object with the appropriate parameters for the command
+ */
+function centralCommandDispatch (cmdLabel, cmdParams) {
+ console.log("centralCommandDispatch : cmdLabel = " + cmdLabel);
+ switch (cmdLabel) {
+ case "name":
+ case "position":
+ break;
+ case "resolution":
+ case "product":
+ case "component":
+ case "version":
+ case "priority":
+ selectOption(cmdLabel, cmdParams);
+ break;
+ case "status":
+ selectOption("bug_status", cmdParams);
+ break;
+ case "platform":
+ selectOption("rep_platform", cmdParams);
+ break;
+ case "os":
+ selectOption("op_sys", cmdParams);
+ break;
+ case "severity":
+ selectOption("bug_severity", cmdParams);
+ break;
+ case "target":
+ selectOption("target_milestone", cmdParams);
+ break;
+ case "addKeyword":
+ addStuffToTextBox("keywords",cmdParams);
+ break;
+ case "removeKeyword":
+ removeStuffFromTextBox("keywords", cmdParams);
+ break;
+ case "addWhiteboard":
+ addStuffToTextBox("status_whiteboard",cmdParams);
+ break;
+ case "removeWhiteboard":
+ removeStuffFromTextBox("status_whiteboard",cmdParams);
+ break;
+ case "assignee":
+ changeAssignee(cmdParams);
+ break;
+ case "qacontact":
+ clickMouse("bz_qa_contact_edit_action");
+ document.getElementById("qa_contact").value = cmdParams;
+ break;
+ case "url":
+ clickMouse("bz_url_edit_action");
+ document.getElementById("bug_file_loc").value = cmdParams;
+ break;
+ // TODO dependson/blocked doesn't work. Find out why.
+ case "addDependsOn":
+ clickMouse("dependson_edit_action");
+ addStuffToTextBox("dependson", cmdParams);
+ break;
+ case "removeDependsOn":
+ clickMouse("dependson_edit_action");
+ removeStuffFromTextBox("dependson", cmdParams);
+ break;
+ case "addBlocks":
+ clickMouse("blocked_edit_action");
+ addStuffToTextBox("blocked", cmdParams);
+ break;
+ case "removeBlocks":
+ clickMouse("blocked_edit_action");
+ removeStuffFromTextBox("blocked", cmdParams);
+ break;
+ case "comment":
+ addStuffToTextBox("comment", cmdParams);
+ break;
+ case "commentIdx":
+ throw "There should be no commentIdx here at all.";
+ break;
+ case "setNeedinfo":
+ // cmdParams are actually ignored for now; we may in future
+ // distinguish different actors to be target of needinfo
+ setNeedinfoReporter();
+ break;
+ case "addCC":
+ addToCCList(cmdParams);
+ break;
+ case "queryStringOurBugzilla":
+ queryForSelection();
+ break;
+ // TODO flags, see also
+ case "commit":
+ if (cmdParams) {
+ // Directly commit the form
+ document.forms.namedItem("changeform").submit();
+ }
+ break;
+ default:
+ if (RHcentralCommandDispatch) {
+ RHcentralCommandDispatch(cmdLabel, cmdParams);
+ }
+ else {
+ console.error("Unknown command:\n" + cmdLabel + "\nparameters:\n" + cmdParams);
+ }
+ break;
+ }
+}
+
+/**
+ * remove elements from the page based on their IDs
+ *
+ * @param doc Document object
+ * @param target String/Array with ID(s)
+ * @param remove Boolean indicating whether the node should be
+ * actually removed or just hidden.
+ * @return none
+ * TODO remove parameter could be replaced by function which would
+ * do actual activity.
+ */
+function killNodes(doc, target, remove) {
+ var targetArr = target instanceof Array ? target : target.trim().split(/[,\s]+/);
+ targetArr.forEach(function(x) {
+ if (remove) {
+ var targetNode = doc.getElementById(x);
+ targetNode.parentNode.removeChild(targetNode);
+ }
+ else {
+ x.style.display = "none";
+ }
+ });
+}
+
+/**
+ * Change assignee of the bug
+ *
+ * @param newAssignee String with the email address of new assigneeAElement
+ * or 'default' if the component's default assignee should be used.
+ * Value null clears "Reset Assignee to default for component" checkbox
+ * @return none
+ */
+function changeAssignee (newAssignee) {
+ var defAssigneeButton = null;
+ // Previous assignee should know what's going on in his bug
+ addToCCList(getOwner());
+
+ // Optional value null
+ if (newAssignee === null) {
+ document.getElementById("set_default_assignee").removeAttribute(
+ "checked");
+ return ;
+ }
+
+ if (getDefaultAssignee) {
+ if (newAssignee === "default") {
+ var defAss = getDefaultAssignee();
+ if (defAss) {
+ newAssignee = defAss;
+ }
+ else {
+ return ;
+ }
+ }
+ }
+
+ if (newAssignee) {
+ clickMouse("bz_assignee_edit_action");
+ document.getElementById("assigned_to").value = newAssignee;
+ document.getElementById("set_default_assignee").checked = false;
+ defAssigneeButton = document.getElementById("defassignee_btn");
+ if (defAssigneeButton) {
+ defAssigneeButton.style.display = "none";
+ }
+ }
+}
+
+/**
+ * Adds new option to the 'comment_action' scroll down box
+ *
+ * @param pkg String package name
+ * @param cmd String with the name of the command
+ * If the 'comment_action' scroll down box doesn't exist, this
+ * function will set up new one.
+ */
+function addToCommentsDropdown (cmdObj) {
+ var select = document.getElementById("comment_action");
+ if (!select) {
+ config.commandsList = [];
+ document.getElementById("comments").innerHTML +=
+ "<div id='make_bugzilla_comment_action'>" +
+ " <label for='comment_action'>Add Comment: </label>" +
+ " <select id='comment_action'>" +
+ " <option value=''>-- Select Comment from List --</option>" +
+ " </select>" +
+ "</div>";
+ select = document.getElementById("comment_action");
+ select.addEventListener("change", function (evt) {
+ var value = select.options[select.selectedIndex].value;
+ executeCommand(config.commandsList[value]);
+ }, false);
+ }
+
+ var opt = document.createElement("option");
+ var objIdx = config.commandsList.length + 1;
+ opt.value = objIdx;
+ config.commandsList[objIdx] = cmdObj;
+ opt.textContent = cmdObj.name;
+ select.appendChild(opt);
+}
+
+/**
+ * Generic function to add new button to the page. Actually copies new button
+ * from the old one (in order to have the same look-and-feel, etc.
+ *
+ * @param location Object around which the new button will be added
+ * @param after Boolean before or after location ?
+ * @param pkg String which package to take the command from
+ * @param id String which command to take
+ * @return none
+ */
+function createNewButton (location, after, cmdObj) {
+ try {
+ var newId = cmdObj.name.toLowerCase().replace(/[^a-z0-9]+/,"","g") + "_btn";
+ } catch (e) {
+ console.error("createNewButton : e = " + e +
+ "\ncreateNewButton : cmdObj.toSource() = " +
+ cmdObj.toSource());
+ }
+
+ // protection against double-firings
+ if (document.getElementById(newId)) {
+ console.log("Element with id " + newId + " already exists!");
+ return ;
+ }
+
+ var newButton = document.createElement("input");
+ newButton.setAttribute("id", newId);
+ newButton.setAttribute("type", "button");
+ newButton.value = cmdObj.name;
+ newButton.addEventListener("click", function(evt) {
+ executeCommand(cmdObj);
+ }, false);
+
+ var originalLocation = document.getElementById(location);
+
+ try {
+ if (after) {
+ originalLocation.parentNode.insertBefore(newButton,
+ originalLocation.nextSibling);
+ originalLocation.parentNode.insertBefore(document
+ .createTextNode("\u00A0"), newButton);
+ }
+ else {
+ originalLocation.parentNode.insertBefore(newButton, originalLocation);
+ originalLocation.parentNode.insertBefore(document
+ .createTextNode("\u00A0"), originalLocation);
+ }
+ } catch (e) {
+ if (e instanceof TypeError) {
+ console.error("cannot find originalLocation element with id " + location);
+ }
+ else {
+ throw e;
+ }
+ }
+}
+
+/**
+ * Generate button based on
+ */
+function generateButtons (pkgs, kNodes) {
+ var topRowPosition = "topRowPositionID";
+ var bottomRowPosition = "commit";
+
+ // =========================================================
+ if (kNodes && window.location.hostname in kNodes) {
+ var killConf = kNodes[window.location.hostname];
+ killNodes(document, killConf[0], killConf[1]);
+ }
+
+ // create anchor for the top toolbar
+ var commentBox = document.getElementById("comment");
+ var brElement = document.createElement("br");
+ brElement.setAttribute("id",topRowPosition);
+ commentBox.parentNode.normalize();
+ commentBox.parentNode.insertBefore(brElement, commentBox);
+
+ for (var pkg in pkgs) {
+ for (var cmdIdx in pkgs[pkg]) {
+ var cmdObj = pkgs[pkg][cmdIdx];
+ if (cmdObj.position !== undefined) {
+ switch (cmdObj.position) {
+ case "topRow":
+ createNewButton(topRowPosition, false, cmdObj);
+ break;
+ case "bottomRow":
+ createNewButton(bottomRowPosition, false, cmdObj);
+ break;
+ case "dropDown":
+ addToCommentsDropdown(cmdObj);
+ break;
+ default: // [+-]ID
+ var firstChr = cmdObj.position.charAt(0);
+ var newId = cmdObj.position.substr(1);
+ createNewButton(newId, firstChr === "+", cmdObj);
+ break;
+ }
+ }
+ else {
+ console.error("generateButtons : rejected cmdObj = " +
+ cmdObj.toSource());
+ }
+ }
+ }
+ // TODO This is weird in this place, but that's the place where all constantData etc.
+ // are finally defined and available.
+ if (RHBZinit) {
+ RHBZinit();
+ }
+}
+
+function setConfigurationButton () {
+ var additionalButtons = document.querySelector("#bugzilla-body *.related_actions");
+ var configurationButtonUI = document.createElement("li");
+ configurationButtonUI.innerHTML = "\u00A0-\u00A0<a href='' id='configurationButton'>"
+ + "Triage configuration</a>";
+ additionalButtons.appendChild(configurationButtonUI);
+ document.getElementById("configurationButton").addEventListener(
+ "click",
+ function(evt) {
+ postMessage(new Message("ChangeJSONURL", null));
+ evt.stopPropagation();
+ evt.preventDefault();
+ }, false);
+}
+
+/**
+ * Get the current title of the bug
+ *
+ * @return string
+ */
+function getSummary() {
+ return document.getElementById("short_desc_nonedit_display").textContent;
+}
+
+/**
+ * Get the current email of the reporter of the bug.
+ *
+ * @return string
+ */
+function getReporter () {
+ var reporterElement = getOptionTableCell("bz_show_bug_column_2", "Reported");
+ // RH Bugzilla after upgrade to 3.6.2 moved the information to other column
+ if (!reporterElement) {
+ reporterElement = getOptionTableCell("bz_show_bug_column_1", "Reported", true);
+ }
+ // Maemo calls the label "Reporter" and it doesn't have ids on table columns ... TODO(maemo)
+ return parseMailto(reporterElement);
+}
+
+function getComponent() {
+ var elem = document.getElementById("component");
+ if (elem) {
+ return elem.value;
+ }
+ return null;
+}
+
+function getProduct() {
+ var elem = document.getElementById("product");
+ if (elem) {
+ return elem.value;
+ }
+ return null;
+}
+
+function commentsWalker (fce) {
+ var comments = document.getElementById("comments").
+ getElementsByClassName("bz_comment");
+ Array.forEach(comments, function(item) {
+ fce(item);
+ });
+}
+
+/**
+ * Set background color of all comments made by reporter in ReporterColor color
+ *
+ */
+function checkComments () {
+ var reporter = getReporter();
+ commentsWalker(function(x) {
+ var email = parseMailto(x.getElementsByClassName("vcard")[0]
+ .getElementsByTagName("a")[0]);
+ if (email.indexOf(reporter) != -1) {
+ x.style.backgroundColor = ReporterColor.toString();
+ }
+ });
+}
+
+function collectComments () {
+ var outStr = "";
+ commentsWalker(function(x) {
+ outStr += x.getElementsByTagName("pre")[0].textContent + "\n";
+ });
+ return outStr.trim();
+}
+
+
+/**
+ * Select option with given value on the <SELECT> element with given id.
+ *
+ * Also execute change HTMLEvent, so that the form behaves accordingly.
+ *
+ * @param id
+ * @param label
+ * @return none
+ *
+ */
+function selectOption (id, label, fireEvent) {
+ if (!fireEvent) {
+ fireEvent = true;
+ }
+ var sel = document.getElementById(id);
+ sel.value = label;
+ if (fireEvent) {
+ var intEvent = document.createEvent("HTMLEvents");
+ intEvent.initEvent("change", true, true);
+ sel.dispatchEvent(intEvent);
+ }
+}
+
+function selectOptionByLabel(id, label, fireEvent) {
+ if (!fireEvent) {
+ fireEvent = true;
+ }
+ var sel = document.getElementById(id);
+ var labelRE = new RegExp(label.trim());
+ var ourOption = Array.filter(sel.options, function (op) {
+ return op.textContent.trim() === label;
+ });
+
+ if (ourOption[0]) {
+ sel.value = ourOption[0].value;
+ }
+
+ if (fireEvent) {
+ var intEvent = document.createEvent("HTMLEvents");
+ intEvent.initEvent("change", true, true);
+ sel.dispatchEvent(intEvent);
+ }
+}
+
+/**
+ * Send mouse click to the specified element
+ *
+ * @param String ID of the element to send mouseclick to
+ * @return None
+ */
+function clickMouse (targetID) {
+ var localEvent = document.createEvent("MouseEvents");
+ localEvent.initMouseEvent("click", true, true, document.defaultView, 0, 0,
+ 0, 0, 0, false, false, false, false, 0, null);
+ document.getElementById(targetID).dispatchEvent(localEvent);
+}
+
+/**
+ * Add object to the text box (comment box or status whiteboard)
+ *
+ * @param id String with the id of the element
+ * @param stuff String/Array to be added to the comment box
+ *
+ * @return none
+ */
+function addStuffToTextBox (id, stuff) {
+ var textBox = document.getElementById(id);
+ if (textBox.tagName.toLowerCase() === "textarea") {
+ stuff = textBox.value ? "\n\n" + stuff : stuff;
+ textBox.value += stuff;
+ }
+ else {
+ textBox.value = addCSVValue(textBox.value,stuff);
+ }
+}
+
+/**
+ * Remove a keyword from the element if it is there
+ *
+ * @param id String with the id of the element
+ * @param stuff String/Array with keyword(s) to be removed
+ */
+function removeStuffFromTextBox (id, stuff) {
+ var changedElement = document.getElementById(id);
+ changedElement.value = removeCSVValue(changedElement.value,stuff);
+}
+
+/**
+ * generalized hasKeyword ... search in the value of the box with given id
+ *
+ * @param id String with ID of the element we want to check
+ * @param str String to be searched for
+ * @return Boolean found?
+ */
+function idContainsWord (id, str) {
+ var kwd = "";
+ try {
+ kwd = document.getElementById(id).value;
+ } catch (e) {
+ // For those who don't have particular element at all or if it is empty
+ return false;
+ }
+ return (isInList(str, kwd.trim().split(/[,\s]+/)));
+}
+
+/**
+ * Check for the presence of a keyword
+ *
+ * @param str String with the keyword
+ * @return Boolean
+ */
+function hasKeyword (str) {
+ return (idContainsWord('keywords', str));
+}
+
+/**
+ * dd
+ *
+ * @return Element with the href attribute containng the information
+ */
+function getOptionTableCell(tableId, label) {
+ var cleanLabelRE = new RegExp("^\\s*([^.:]*):?\\s*$");
+ label = label.trim().replace(cleanLabelRE,"$1").toLowerCase();
+
+ var rows = document.getElementById(tableId).getElementsByTagName("tr");
+ var ourLine = Array.filter(rows, function(row) {
+ var curLabel = row.getElementsByTagName("td")[0].textContent.toLowerCase();
+ curLabel = curLabel.replace(cleanLabelRE,"$1");
+ return (curLabel === label); // maybe this could be a RE match instead
+ });
+
+ if (ourLine.length > 0) {
+ return ourLine[0].getElementsByTagName("td")[1].
+ getElementsByTagName("a")[0];
+ }
+ return null;
+}
+
+/**
+ * Set the bug to NEEDINFO state
+ *
+ * Working function.
+ * @return none
+ * @todo TODO we may extend this to general setNeedinfo function
+ * with parameter [reporter|assignee|general-email-address]
+ */
+function setNeedinfoReporter () {
+ clickMouse("needinfo");
+ selectOption("needinfo_role", "reporter");
+}
+
+/**
+ *
+ */
+function getOwner () {
+ // TODO(maemo) doesn't work on maemo
+ var assigneeAElement = getOptionTableCell("bz_show_bug_column_1","Assigned To");
+ return parseMailto(assigneeAElement);
+}
+
+/**
+ * Return maintainer which is per default by bugzilla
+ * (which is not necessarily the one who is default maintainer per component)
+ *
+ * @return String with the maintainer's email address
+ */
+function getDefaultBugzillaMaintainer (component) {
+ var address = filterByRegexp(constantData.defBugzillaMaintainerArr, component);
+ return address;
+}
+
+/**
+ * Parse the row with the attachment
+ *
+ * @param DOM element to be parsed
+ * @return array with string name of the attachment, integer its id number,
+ * string of MIME type, integer of size in kilobytes, and the whole
+ * element itself
+ *
+ * TODO error handling is missing ... it's bleee
+ */
+function parseAttachmentLine(inElem) {
+ var MIMEtype = "";
+ var size = 0;
+
+ // Skip over obsolete attachments
+ if (inElem.getElementsByClassName("bz_obsolete").length > 0) {
+ return ([]);
+ }
+
+ // getting name of the attachment
+ var attName = inElem.getElementsByTagName("b")[0].textContent.trim();
+
+ // TODO probably could use url.URL object
+ var aHrefsArr = inElem.getElementsByTagName("a");
+ var aHref = Array.filter(aHrefsArr, function(x) {
+ return x.textContent.trim() === "Details";
+ })[0];
+ var id = parseURL(aHref.getAttribute("href")).params.id;
+
+ // getting MIME type and size
+ var stringArray = inElem.getElementsByClassName("bz_attach_extra_info")[0].textContent.
+ replace(/[\n ()]+/g, " ").trim().split(", ");
+ size = parseInt(stringArray[0], 10);
+ MIMEtype = stringArray[1].split(" ")[0];
+
+ return [ attName, id, MIMEtype, size, inElem ];
+}
+
+/**
+ * collect the list of attachments in a structured format
+ *
+ * @return Array of arrays, one for each attachments;
+ * each record has string name of the attachment, integer its id number,
+ * string of MIME type, integer of size in kilobytes, and the whole
+ * element itself
+ */
+function getAttachments () {
+ var outAtts = [];
+ var atts = document.getElementById("attachment_table").
+ getElementsByTagName("tr");
+ for ( var i = 1, ii = atts.length - 1; i < ii; i++) {
+ outAtts.push(parseAttachmentLine(atts[i]));
+ }
+ return outAtts;
+}
+
+/**
+ * Get login of the currently logged-in user.
+ *
+ * @return String with the login name of the currently logged-in user
+ */
+function getLogin () {
+ var lastLIElement = document.querySelector("#header ul.links li:last-of-type");
+ var loginArr = lastLIElement.textContent.split("\n");
+ var loginStr = loginArr[loginArr.length - 1].trim();
+ return loginStr;
+}
+
+function getSelection () {
+ var text = "";
+ var selectionObject = window.getSelection();
+ if (selectionObject.rangeCount > 0) {
+ text = selectionObject.getRangeAt(0).toString().trim();
+ }
+ return text;
+}
+
+/**
+ * Opens a new tab with a query for the given text in the selected component
+ *
+ * @param text to be searched for
+ * @param component String with the component name (maybe latter regexp?)
+ * @param product (optional) string with the product name, if undefined,
+ * search in all products
+ * @return None
+ *
+ */
+function queryInNewTab(text, component, product) {
+ var urlStr = "https://" + window.location.hostname + "/buglist.cgi?query_format=advanced";
+ if (product) {
+ urlStr += "&product=" + product.trim();
+ }
+ if (component) {
+ if ("equivalentComponents" in constantData) {
+ var equivCompsArr = constantData.equivalentComponents.
+ filter(function (REstr) {
+ return new RegExp(REstr).test(getComponent());
+ }, this);
+ if (equivCompsArr.length > 0) {
+ component = equivCompsArr[0];
+ }
+ }
+ urlStr += "&component=" + component.trim();
+ }
+
+ // using more complicated query tables here, because they can be more easily
+ // edited
+ // for further investigative searches
+ if (text) {
+ text = encodeURIComponent(text.trim());
+ var searchText = "&field0-0-0=longdesc&type0-0-0=substring&value0-0-0="
+ + text
+ + "&field0-0-1=attach_data.thedata&type0-0-1=substring&value0-0-1="
+ + text
+ + "&field0-0-2=status_whiteboard&type0-0-2=substring&value0-0-2="
+ + text;
+ urlStr += searchText;
+ postMessage(new Message("OpenURLinTab", urlStr));
+ }
+}
+
+/**
+ * Get the text to search for and prepare other things for the real executive
+ * function this.queryInNewTab, and run it.
+ */
+function queryForSelection() {
+ var text = getSelection();
+ if (!text) {
+ postMessage(new Message("GetClipboard", "queryLocal"));
+ }
+ else {
+ queryInNewTab(text, getComponent(), getProduct());
+ }
+}
+
+/**
+ * adds a person to the CC list, if it isn't already there
+ *
+ * @param who String with email address or "self" if the current user
+ * of the bugzilla should be added
+ */
+function addToCCList (who) {
+ if (!who) {
+ return ;
+ }
+ if (who === "self") {
+ document.getElementById("addselfcc").checked = true;
+ }
+ else {
+ clickMouse("cc_edit_area_showhide");
+ if (!isInList(who, getCCList())) {
+ addStuffToTextBox("newcc",who);
+ }
+ }
+}
+
+/**
+ * a collect a list of emails on CC list
+ *
+ * @return Array with email addresses as Strings.
+ */
+function getCCList () {
+ var CCListSelect = document.getElementById("cc");
+ var outCCList = [];
+ if (CCListSelect) {
+ outCCList = Array.map(CCListSelect.options, function(item) {
+ return item.value;
+ });
+ }
+ return outCCList;
+}
+
+function startup() {
+ // First, preflight check ... if we are not logged in, there
+ // is nothing we can do.
+ var logoutLink = Array.some(document.links, function (x) {
+ return x.search === "?logout=1" ;
+ });
+ if (!logoutLink) {
+ return null; // This should just finish whole content script without
+ // doing any harm to anybody.
+ }
+
+ // Prepare for query buttons
+ // element ID brElementPlace_location is later used in JSON files
+ // Stay with this add_comment element even if RH BZ upgrades, this seems
+ // to be generally much more stable (even with other bugzillas, e.g. b.gnome.org)
+ // then some getElementById.
+ var commentArea = document.getElementsByName("add_comment")[0].parentNode;
+ if (commentArea) {
+ var brElementPlacer = commentArea.getElementsByTagName("br");
+ brElementPlacer = brElementPlacer[0];
+ if (brElementPlacer) {
+ brElementPlacer.setAttribute("id","brElementPlacer_location");
+ brElementPlacer.parentNode.insertBefore(document.createElement("br"),
+ brElementPlacer);
+ }
+ }
+
+ // TODO Probably could be ignored ... used only once on line 973 of rhbzpage.js
+ // if (parseAbrtBacktraces && this.RE.Abrt.test(getSummary())) {
+ // title = document.getElementById("short_desc_nonedit_display").textContent;
+
+ // So, now we know we are logged in, so we can get to
+ // the real work.
+ setConfigurationButton();
+ submitHandlerInstalled = false;
+
+ checkComments();
+
+ postMessage(new Message("GetInstalledPackages", {
+ location: window.location.href,
+ login: getLogin()
+ }));
+}
+
+startup();
diff --git a/data/lib/color.js b/data/lib/color.js
new file mode 100644
index 0000000..163071e
--- /dev/null
+++ b/data/lib/color.js
@@ -0,0 +1,242 @@
+// Released under the MIT/X11 license
+// http://www.opensource.org/licenses/mit-license.php
+"use strict";
+// ============================================================================
+// Color management methods
+// originally from
+// http://www.mjijackson.com/2008/02\
+// /rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript
+function Color(r, g, b) {
+ this.Luminosity = 0.85;
+ this.Desaturated = 0.4;
+
+ if (r instanceof Array) {
+ this.r = r[0];
+ this.g = r[1];
+ this.b = r[2];
+ }
+ else {
+ this.r = r;
+ this.g = g;
+ this.b = b;
+ }
+}
+
+Color.prototype.update = function(r, g, b) {
+ this.r = r;
+ this.g = g;
+ this.b = b;
+};
+
+Color.prototype.hs = function(nStr) {
+ if (Number(nStr) === 0) {
+ return "00";
+ }
+ else if (nStr.length < 2) {
+ return "0" + nStr;
+ }
+ else {
+ return nStr;
+ }
+};
+
+Color.prototype.toString = function() {
+ var rH = Number(this.r.toFixed()).toString(16);
+ var gH = Number(this.g.toFixed()).toString(16);
+ var bH = Number(this.b.toFixed()).toString(16);
+ return "#" + this.hs(rH) + this.hs(gH) + this.hs(bH);
+};
+
+/**
+ * Converts an RGB color value to HSL. Conversion formula adapted from
+ * http://en.wikipedia.org/wiki/HSL_color_space. Assumes r, g, and b are
+ * contained in the set [0, 255] and returns h, s, and l in the set [0, 1].4343
+ *
+ * @param Number r The red color value
+ * @param Number g The green color value
+ * @param Number b The blue color value
+ * @return Array The HSL representation
+ */
+Color.prototype.hsl = function() {
+ var r = this.r / 255;
+ var g = this.g / 255;
+ var b = this.b / 255;
+ var max = Math.max(r, g, b), min = Math.min(r, g, b);
+ var h, s, l = (max + min) / 2;
+
+ if (max === min) {
+ h = s = 0; // achromatic
+ }
+ else {
+ var d = max - min;
+ s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
+ switch (max) {
+ case r:
+ h = (g - b) / d + (g < b ? 6 : 0);
+ break;
+ case g:
+ h = (b - r) / d + 2;
+ break;
+ case b:
+ h = (r - g) / d + 4;
+ break;
+ }
+ h /= 6;
+ }
+
+ return [ h, s, l ];
+};
+
+/**
+ * Converts an HSL color value to RGB. Conversion formula adapted from
+ * http://en.wikipedia.org/wiki/HSL_color_space. Assumes h, s, and l are
+ * contained in the set [0, 1] and returns r, g, and b in the set [0, 255].
+ *
+ * @param Number h The hue
+ * @param Number s The saturation
+ * @param Number l The lightness
+ * @return Array The RGB representation
+ */
+Color.prototype.hslToRgb = function(h, s, l) {
+ function hue2rgb(p, q, t) {
+ if (t < 0) {
+ t += 1;
+ }
+ if (t > 1) {
+ t -= 1;
+ }
+ if (t < 1 / 6) {
+ return p + (q - p) * 6 * t;
+ }
+ if (t < 1 / 2) {
+ return q;
+ }
+ if (t < 2 / 3) {
+ return p + (q - p) * (2 / 3 - t) * 6;
+ }
+ return p;
+ }
+
+ var r, g, b;
+
+ if (s === 0) {
+ r = g = b = l; // achromatic
+ }
+ else {
+ var q = l < 0.5 ? l * (1 + s) : l + s - l * s;
+ var p = 2 * l - q;
+ r = hue2rgb(p, q, h + 1 / 3);
+ g = hue2rgb(p, q, h);
+ b = hue2rgb(p, q, h - 1 / 3);
+ }
+
+ return [ r * 255, g * 255, b * 255 ];
+};
+
+/**
+ * Converts an RGB color value to HSV. Conversion formula adapted from
+ * http://en.wikipedia.org/wiki/HSV_color_space. Assumes r, g, and b are
+ * contained in the set [0, 255] and returns h, s, and v in the set [0, 1].
+ *
+ * @param Number r The red color value
+ * @param Number g The green color value
+ * @param Number b The blue color value
+ * @return Array The HSV representation
+ */
+Color.prototype.hsv = function() {
+ var r = this.r / 255;
+ var g = this.g / 255;
+ var b = this.b / 255;
+ var max = Math.max(r, g, b), min = Math.min(r, g, b);
+ var h, s, v = max;
+
+ var d = max - min;
+ s = max === 0 ? 0 : d / max;
+
+ if (max === min) {
+ h = 0; // achromatic
+ }
+ else {
+ switch (max) {
+ case r:
+ h = (g - b) / d + (g < b ? 6 : 0);
+ break;
+ case g:
+ h = (b - r) / d + 2;
+ break;
+ case b:
+ h = (r - g) / d + 4;
+ break;
+ }
+ h /= 6;
+ }
+
+ return [ h, s, v ];
+};
+
+/**
+ * Converts an HSV color value to RGB. Conversion formula adapted from
+ * http://en.wikipedia.org/wiki/HSV_color_space. Assumes h, s, and v are
+ * contained in the set [0, 1] and returns r, g, and b in the set [0, 255].
+ *
+ * @param Number h The hue
+ * @param Number s The saturation
+ * @param Number v The value
+ * @return Array The RGB representation
+ */
+Color.prototype.hsvToRgb = function(h, s, v) {
+ var r, g, b;
+
+ var i = Math.floor(h * 6);
+ var f = h * 6 - i;
+ var p = v * (1 - s);
+ var q = v * (1 - f * s);
+ var t = v * (1 - (1 - f) * s);
+
+ switch (i % 6) {
+ case 0:
+ r = v;
+ g = t;
+ b = p;
+ break;
+ case 1:
+ r = q;
+ g = v;
+ b = p;
+ break;
+ case 2:
+ r = p;
+ g = v;
+ b = t;
+ break;
+ case 3:
+ r = p;
+ g = q;
+ b = v;
+ break;
+ case 4:
+ r = t;
+ g = p;
+ b = v;
+ break;
+ case 5:
+ r = v;
+ g = p;
+ b = q;
+ break;
+ }
+
+ return [ r * 255, g * 255, b * 255 ];
+};
+
+/**
+ * Provide
+ */
+Color.prototype.lightColor = function() {
+ var hslArray = this.hsl();
+ var h = Number(hslArray[0]);
+ var s = Number(hslArray[1]) * this.Desaturated;
+ var l = this.Luminosity;
+ var desA = this.hslToRgb(h, s, l);
+ return new Color(desA[0], desA[1], desA[2]);
+};
diff --git a/data/lib/jumpNextBug.js b/data/lib/jumpNextBug.js
new file mode 100644
index 0000000..af0ff39
--- /dev/null
+++ b/data/lib/jumpNextBug.js
@@ -0,0 +1,15 @@
+// Released under the MIT/X11 license
+// http://www.opensource.org/licenses/mit-license.php
+"use strict";
+var nextElement = {};
+var nextRE = new RegExp("Next");
+
+var aNavigElements = document.querySelectorAll("#bugzilla-body .navigation a");
+var filteredElements = Array.filter(aNavigElements, function(elem) {
+ return nextRE.test(elem.textContent);
+});
+if (filteredElements.length > 0) {
+ nextElement = filteredElements[0];
+ nextElement.setAttribute("accesskey", "n");
+ nextElement.innerHTML = "<u>N</u>ext";
+}
diff --git a/data/lib/logging-front.js b/data/lib/logging-front.js
new file mode 100644
index 0000000..d186d7f
--- /dev/null
+++ b/data/lib/logging-front.js
@@ -0,0 +1,88 @@
+// Released under the MIT/X11 license
+// http://www.opensource.org/licenses/mit-license.php
+"use strict";
+
+var EmptyLogsColor = new Color(0, 255, 0);
+var FullLogsColor = new Color(0, 40, 103);
+
+var submitHandlerInstalled = false; // for setUpLogging
+
+function addLogRecord() {
+ var rec = {};
+ rec.date = new Date();
+ rec.url = document.location.toString();
+ rec.title = document.title;
+ var comment = window.prompt(
+ "Enter comments for this comment");
+ if (comment !== null) {
+ comment = comment.trim();
+ if (comment.length > 0) {
+ comment = comment.trim();
+ rec.comment = comment;
+ var dateStr = getISODate(rec.date);
+ var urlStr = window.location.hostname;
+ var bugNo = getBugNoFromURL(window.location.href);
+ rec.key = dateStr + "+" +
+ urlStr + "+" + bugNo;
+ postMessage(new Message("AddLogRecord", rec));
+ }
+ return rec;
+ }
+ return null;
+}
+
+/**
+ */
+function setUpLogging () {
+ // Protection against double-call
+ if (document.getElementById("generateTSButton")) {
+ return ;
+ }
+
+ // For adding additional buttons to the top toolbar
+ var additionalButtons = document.querySelector("#bugzilla-body *.related_actions");
+ var that = this;
+
+ // logging all submits for timesheet
+ if (!submitHandlerInstalled) {
+ document.forms.namedItem("changeform").addEventListener("submit",function (evt) {
+ if (addLogRecord() === null) {
+ evt.stopPropagation();
+ evt.preventDefault();
+ }
+ }, false);
+ submitHandlerInstalled = true;
+ }
+
+ // (id, text, parent, callback, params, before, covered, accesskey)
+ createDeadLink("generateTSButton", "Generate TS", additionalButtons,
+ function(evt) {
+ postMessage(new Message("GenerateTS"));
+ }, [], "dash", "li");
+
+ createDeadLink("clearLogs", "Clear TS", additionalButtons,
+ function(evt) {
+ postMessage(new Message("ClearTS"));
+ }, [], "dash", "li");
+
+ createDeadLink("importTSButton", "Import TS", additionalButtons,
+ function(evt) {
+ postMessage(new Message("ImportTS"));
+ }, [], "dash", "li");
+
+ /* TODO
+ var clearLogAElem = document.getElementById("clearLogs");
+ if (this.log.isEmpty()) {
+ clearLogAElem.style.color = this.log.EmptyLogsColor;
+ clearLogAElem.style.fontWeight = "normal";
+ }
+ else {
+ clearLogAElem.style.color = this.log.FullLogsColor;
+ clearLogAElem.style.fontWeight = "bolder";
+ }
+ */
+}
+
+if (window.location.hostname == "bugzilla.redhat.com") {
+ setUpLogging();
+}
diff --git a/data/lib/rhbzpage.js b/data/lib/rhbzpage.js
new file mode 100644
index 0000000..9af0127
--- /dev/null
+++ b/data/lib/rhbzpage.js
@@ -0,0 +1,980 @@
+// Released under the MIT/X11 license
+// http://www.opensource.org/licenses/mit-license.php
+"use strict";
+var titleParsedAttachment = "Part of the thread where crash happened";
+
+
+// For identification of graphics card
+var manuChipStrs = [ [ "ATI Radeon", "ATI", "1002" ],
+ [ "ATI Mobility Radeon", "ATI", "1002" ],
+ [ "Intel Corporation", "INTEL", "8086" ], [ "NVIDIA", "NV", "10de" ] ];
+
+// http://en.wikipedia.org/wiki/HSL_color_space
+// when only the value of S is changed
+// stupido!!! the string is value in hex for each color
+var RHColor = new Color(158, 41, 43); // RGB 158, 41, 43; HSL 359, 1, 39
+var FedoraColor = new Color(0, 40, 103); // RGB 0, 40, 103; HSL 359, 1, 39
+var RawhideColor = new Color(0, 119, 0); // or "green", or RGB 0, 119, 0, or
+ // HSL
+// 120, 0, 23
+var RHITColor = new Color(102, 0, 102); // RGB 102, 0, 102; HSL 300, 0, 20
+
+// [ 126.386] (--) NOUVEAU(0): Chipset: "NVIDIA NVaf"
+var logAnalyzeLogic = {
+ "AnalyzeInterestingLine": {
+ /*
+ [ 126.378] (--) PCI:*(0:4:0:0) 10de:08a0:106b:00c2 rev 162, Mem @ 0xd2000000/16777216, \
+ 0xc0000000/268435456, 0xd0000000/33554432, I/O @ 0x00001000/128, BIOS @ 0x????????/131072
+ */
+ re: [
+ "^(\\[[ .0-9]+\\])?\\s*\\(--\\) PCI:\\*\\([0-9:]+\\)\\s*" +
+ "([0-9a-f:]+).*$",
+ "^\\s*\\[?[ 0-9.]*\\]?\\s*\\(--\\) "+
+ "([A-Za-z]+)\\([0-9]?\\): Chipset: (.*)$",
+ ],
+ func: chipsetMagic
+ },
+ /*
+ [ 126.385] (WW) Falling back to old probe method for vesa
+ [ 126.385] (WW) Falling back to old probe method for fbdev
+ [ 126.386] (--) NOUVEAU(0): Chipset: "NVIDIA NVaf"
+ Backtrace:
+
+ [ 33.158] Kernel command line: ro root=LABEL=root rd_NO_LUKS rd_NO_LVM rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYTABLE=us drm.debug=0x04
+
+ */
+ "AnalyzeXorgLogBacktrace": {
+ re: "^\\s*(\\[[0-9 .]*\\])?\\s*(\\((EE|WW)\\)|.* [cC]hipset:.*)|\\s*(Backtrace|Kernel command line)",
+ func: analyzeXorg
+ }
+};
+
+var ProfessionalProducts = [
+ "Red Hat Enterprise Linux",
+ "Red Hat Enterprise MRG"
+];
+
+// END OF CONSTANTS
+
+var btSnippet = null;
+var reqCounter = 0; // TODO should be probably a dict indexed by called method
+
+function RHOnMessageHandler(msg) {
+ switch (msg.cmd) {
+ case "Error":
+ alert("Error " + msg.data);
+ break;
+ case "Unhandled":
+ break;
+ case "AddAttachmentCallback":
+ addAttachmentCallback(msg.data);
+ break;
+ case "FixAttachmentMIMECallback":
+ XMLRPCcallback();
+ break;
+ case "AnalyzeInterestingLine":
+ case "AnalyzeXorgLogBacktrace":
+ findInterestingLine(msg.data, msg.cmd);
+ break;
+ case "queryUpstream":
+ queryUpstreamCallback(msg.data);
+ break;
+ default:
+ console.error("Error: unknown RPC call " + msg.toSource());
+ break;
+ }
+}
+
+// RHBugzillaPage object
+
+/**
+ * Find default assignee based on the current component
+ *
+ * @return String what would be a default assignee if
+ * we haven't set it up.
+ */
+function getDefaultAssignee() {
+ return filterByRegexp(constantData.defaultAssignee,
+ getComponent()).toLowerCase();
+}
+
+/**
+ * Set default assignee
+ *
+ * @return none
+ * sets this.defaultAssignee property according to defaultAssignee list
+ */
+function setDefaultAssignee() {
+ var defAss = getDefaultAssignee();
+
+ // Add setting default assignee
+ if ((defAss.length > 0) && (defAss !== getOwner())) {
+ createNewButton("bz_assignee_edit_container",true, {
+ "name": "Def. Assignee",
+ "assignee": "default"
+ });
+ }
+}
+
+/**
+ * Auxiliary function to compute more complicated resolution
+ */
+function closeSomeRelease() {
+ // for RAWHIDE close as RAWHIDE,
+ // if active selection -> CURRENTRELEASE
+ // and put the release version to
+ // "Fixed in Version" textbox
+ // otherwise -> NEXTRELEASE
+ selectOption("bug_status", "CLOSED");
+ var text = getSelection();
+ var resolution = "";
+
+ if (text.length > 0) {
+ resolution = "CURRENTRELEASE";
+ document.getElementById("cf_fixed_in").value = text;
+ }
+ else if (document.getElementById("version").value === "rawhide") {
+ resolution = "RAWHIDE";
+ }
+ else {
+ resolution = "NEXTRELEASE";
+ }
+ centralCommandDispatch("resolution", resolution);
+}
+
+/**
+ * Additional commands specific for this subclass, overriding superclass one.
+ */
+function RHcentralCommandDispatch(cmdLabel, cmdParams) {
+ switch (cmdLabel) {
+ // Set up our own commands
+ case "closeUpstream":
+ addClosingUpstream();
+ break;
+ case "computeResolution":
+ closeSomeRelease();
+ break;
+ case "queryStringUpstreamBugzilla":
+ queryUpstream();
+ break;
+ case "sendBugUpstream":
+ sendBugUpstream();
+ break;
+ case "markTriaged":
+ markBugTriaged();
+ break;
+ case "chipMagic":
+ fillInWhiteBoard(cmdParams);
+ break;
+ // If we don't have it here, call superclass method
+ default:
+ console.error("Unknown command:\n" + cmdLabel + "\nparameters:\n" + cmdParams);
+ break;
+ }
+}
+
+function addAttachmentCallback(resp) {
+ var newAttachID = parseInt(resp.params.param.value.array.data.value.int, 10);
+ console.log("attachID = " + newAttachID);
+ // FIXME callback.call(param, newAttachID, data.length);
+}
+
+/**
+ *
+ * This has to stay in RHBugzillaPage because upstream doesn't have addAttachment
+ * XML-RPC call yet.
+ */
+function addAttachment(data, callback, param) {
+ var params = [];
+
+ if (!constantData.passwordState.passAvailable) {
+ console.error("addAttachment : No password, no XML-RPC calls; sorry");
+ return null;
+ }
+
+ params.push(getBugNo());
+ params.push({
+ description: titleParsedAttachment,
+ filename: "parsed-backtrace.txt",
+ contenttype: "text/plain",
+ data: window.btoa(data),
+ nomail: true
+ });
+
+ postMessage(new Message("MakeXMLRPCall", {
+ url: constantData.XMLRPCData[window.location.hostname].url,
+ login: getLogin(),
+ method: "bugzilla.addAttachment",
+ params: params,
+ callRPC: "AddAttachmentCallback"
+ }));
+ reqCounter++;
+}
+
+/* === Bugzilla functions === */
+/**
+ *
+ */
+function pasteBacktraceInComments(atts) {
+ /*
+ Let's comment it out, and we'll see if anything breaks.
+ TODO This paragraph looks suspicous ... what is it?
+ Does it belong to this function?
+ var notedLabel = document.querySelector("label[for='newcc']");
+ while (notedLabel.firstChild) {
+ var node = notedLabel.removeChild(notedLabel.firstChild);
+ notedLabel.parentNode.insertBefore(node, notedLabel);
+ }
+ notedLabel.parentNode.removeChild(notedLabel);
+ */
+
+ // FIXME BROKEN and its depending functions are even more broken
+ return null;
+
+ var abrtQueryURL = "https://bugzilla.redhat.com/buglist.cgi?" +
+ "cmdtype=dorem&remaction=run&namedcmd=all%20NEW%20abrt%20crashes&"+
+ "sharer_id=74116";
+
+ var mainTitle = document
+ .getElementsByClassName("bz_alias_short_desc_container")[0];
+
+ createDeadLink ("callAbrtQuery_link",
+ "Abrt bugs", mainTitle, abrtQueryURL, [], false, null, "a");
+
+ if (idContainsWord("cf_devel_whiteboard", 'btparsed')) {
+ addStuffToTextBox('status_whiteboard', 'btparsed');
+ }
+
+ if (!(isTriaged() || idContainsWord("status_whiteboard",
+ 'btparsed') || (atts.length > 0))) {
+ var btAttachments = atts
+ .filter(function(att) {
+ return (/File: backtrace/.test(att[0]));
+ });
+ // TODO we need to go through all backtrace attachments, but
+ // just the first one will do for now, we would need to do async
+ // parsing
+ btAttachments.forEach(function(x) {
+ var attURL = "https://bugzilla.redhat.com/attachment.cgi?id="
+ + x[1];
+ if ((!btSnippet) && // ???? FIXME
+ (!idContainsWord("status_whiteboard", 'btparsed'))) {
+ Request({
+ url: attURL,
+ onComplete: function(response) {
+ if (response.status == 200) {
+ btSnippet = parseBacktrace(response.text);
+ if (btSnippet) {
+ addCheckShowLink(x,btSnippet);
+ }
+ }
+ }
+ }).get();
+ }
+ }, this);
+ }
+ // Add "show BT" links
+ if (parsedAttachments.length > 0) {
+ this.parsedAttachments.forEach(function (att) {
+ addShowParsedBTLink(att);
+ });
+ }
+}
+
+/**
+ * Open new window with the content of the attachment.
+ *
+ * @param id Number of the attachment id
+ * @return none
+ */
+function showAttachment(id) {
+ postMessage(new Message("OpenURLinPanel",
+ "https://" + window.location.hostname + "/attachment.cgi?id=" + id));
+}
+
+/**
+ * add a link opening a window with the parsed backtrace
+ *
+ * @param att Attachment object
+ */
+function addShowParsedBTLink(att) {
+ var elem = att[4].querySelector("td:last-of-type");
+ createDeadLink("showParsedBacktraceWindow-" + att[1], "showBT",
+ elem, showAttachment, att[1], true);
+}
+
+/**
+ * Unfinished ... see above FIXME BROKEN AND DOESN'T WORK
+ */
+function addNewAttachmentRow(origAtt,
+ newAttId, newAttSize) {
+ var that = this;
+ var oldAddBTLink = document.getElementById("attachBacktraceActivator");
+ oldAddBTLink.parentNode.removeChild(oldAddBTLink);
+ var newTRElem = origAtt[4].cloneNode(true);
+
+ // fix number of the attachment
+ Array.forEach(newTRElem.getElementsByTagName("a"), function (aEl) {
+ aEl.setAttribute("href",
+ aEl.getAttribute("href").replace(origAtt[1], newAttId));
+ });
+
+ var aElements = newTRElem.getElementsByTagName("a");
+ aElements[0].setAttribute("name","parsed-backtrace.txt");
+ aElements[0].getElementsByTagName("b")[0].textContent = titleParsedAttachment;
+
+ var sizeSpan = newTRElem.getElementsByClassName("bz_attach_extra_info")[0];
+ sizeSpan.textContent = "(" + (newAttSize / 1024).toFixed(2) + " KB, text/plain)";
+
+ // aElements[1].textContent = new Date().toString(); TODO we should add eventually, but not pressing
+
+ var vcardSpan = newTRElem.getElementsByClassName("vcard")[0];
+ if (vcardSpan !== undefined) {
+ var vcardSpanClassList = vcardSpan.classList;
+ if (/@redhat\.com/.test(this.login) && !vcardSpanClassList.contains("redhat_user")) {
+ vcardSpanClassList.add("redhat_user");
+ }
+ var vcardAElem = vcardSpan.getElementsByTagName("a")[0];
+ vcardAElem.setAttribute("title", this.login);
+ vcardAElem.setAttribute("href", "mailto:" + this.login);
+ vcardAElem.className = "email";
+ vcardAElem.innerHTML="<span class='fn'>" + this.login + "</span>";
+ }
+
+ var elem = newTRElem.querySelector("td:last-of-type");
+ this.createDeadLink("showBacktrace", "show BT", elem,
+ this.showAttachment, newAttId, false);
+
+ origAtt[4].parentNode.insertBefore(newTRElem, origAtt[4].nextSibling);
+}
+
+/**
+ * Add a link to create a new attachment with a parsed backtrace
+ *
+ * @param oldAtt Object with an attachment row
+ * @param snippet String with parsed backtrace
+ * @return none
+ */
+function addCheckShowLink(oldAtt, snippet) {
+ var elem = oldAtt[4].querySelector("td:last-of-type");
+/*
+ createDeadLink("attachBacktraceActivator", "add parsed BT", elem, function(x) {
+ // pass function and parameters as two separate parameters, the function to be called from
+ // addAttachment
+ addAttachment(snippet, addNewAttachmentRow, oldAtt);
+ }, [], true);
+*/
+}
+
+/**
+ * Make it sailent that the some attachments with bad MIME type are present
+ *
+ * @param atts Array of attachments subarrays
+ * @return none
+ */
+function markBadAttachments(atts) {
+ var badMIMEArray = [ "application/octet-stream", "text/x-log", "undefined" ];
+ if (!constantData.passwordState.passAvailable) {
+ console.log("markBadAttachments : No password, no XML-RPC calls; sorry");
+ return null;
+ }
+
+ var badAttachments = atts.filter(function(att) {
+ return (isInList(att[2], badMIMEArray));
+ });
+
+ if (badAttachments.length > 0) {
+ var titleElement = document.
+ getElementsByClassName("bz_alias_short_desc_container")[0];
+ titleElement.style.backgroundColor = "olive";
+
+ createDeadLink("fixAllButton", "Fix all", titleElement, function() {
+ Array.forEach(badAttachments, function(x) {
+ fixAttachById(x[1]);
+ });
+ }, [], false, null, "f");
+ badAttachments.forEach(function(x, i, a) {
+ addTextLink(x);
+ });
+ }
+}
+
+/**
+ * Is this bug a RHEL bug?
+ *
+ * @return Boolean true if it is a RHEL bug
+ */
+function isEnterprise() {
+ var result = ProfessionalProducts.some(function(elem,idx,arr) {
+ return new RegExp(elem).test(getProduct());
+ });
+ return result;
+}
+
+/**
+ * Find out whether the bug is needed an attention of bugZappers
+ *
+ * @return Boolean whether the bug has been triaged or not
+ */
+function isTriaged() {
+ return hasKeyword("Triaged");
+}
+
+/**
+ * Set branding colours to easily distinguish between Fedora and RHEL bugs
+ *
+ * @param brand String with product of the current bug
+ * @param version String with the version of the bug
+ * @param its String with the IsueTracker numbers
+ * @return none
+ */
+function setBranding() {
+ var brandColor = {};
+ var TriagedColor = {};
+
+ var ITbutton = document.getElementById("cf_issuetracker");
+ var its = ITbutton ? ITbutton.value.trim() : "";
+
+ if (isEnterprise()) {
+ if (its && (its.length > 0)) {
+ brandColor = RHITColor;
+ }
+ else {
+ brandColor = RHColor;
+ }
+ }
+ else if (new RegExp("Fedora").test(document.getElementById("product").value)) {
+ if (document.getElementById("version").value === "rawhide") {
+ brandColor = RawhideColor;
+ }
+ else {
+ brandColor = FedoraColor;
+ }
+ }
+
+ // Comment each of the following lines to get only partial branding
+ document.getElementsByTagName("body")[0].style.background = brandColor
+ .toString()
+ + " none";
+ document.getElementById("titles").style.background = brandColor.toString()
+ + " none";
+
+ // Remove "Bug" from the title of the bug page, so we have more space with
+ // plenty of tabs
+ var titleElem = document.getElementsByTagName("title")[0];
+
+ titleElem.textContent = titleElem.textContent.slice(4);
+ var bodyTitleParent = document.getElementById("summary_alias_container").parentNode;
+ var bodyTitleElem = bodyTitleParent.getElementsByTagName("b")[0];
+ bodyTitleElem.textContent = bodyTitleElem.textContent.slice(4);
+
+ // Make background-color of the body of bug salmon pink
+ // for security bugs.
+ if (hasKeyword("Security")) {
+ document.getElementById("bugzilla-body").style.background = SalmonPink
+ .toString() + ' none';
+ }
+
+ // Make it visible whether the bug has been triaged
+ if (isTriaged()) {
+ document.getElementById("bz_field_status").style.background = brandColor
+ .lightColor().toString()
+ + " none";
+ }
+
+ var compElems;
+ if (config.suspiciousComponents
+ && isInList(getComponent(), config.suspiciousComponents)
+ && (compElems = document
+ .getElementById("bz_component_edit_container"))) {
+ compElems.style.background = "red none";
+ }
+}
+
+/**
+ *
+ */
+function queryUpstreamCallback(text) {
+ var searchData = filterByRegexp(constantData.queryUpstreamBug, getComponent());
+ var urlBase = searchData.url;
+ text = searchData.searchBy+":"+searchData.fillIn+" "+text.trim();
+ if (searchData.fillIn == "$$$") {
+ text = text.replace("$$$", getComponent());
+ }
+ text = encodeURIComponent(text).replace("%20","+");
+ postMessage(new Message("OpenURLinTab", urlBase + text));
+}
+
+/**
+ * Search simple query in the upstream bugzilla appropriate for the component
+ *
+ * @return none
+ */
+function queryUpstream() {
+ if (!constantData.queryUpstreamBug) {
+ alert("We don't have constantData.queryUpstreamBug set up!");
+ return null;
+ }
+ var text = getSelection();
+ if (!text) {
+ postMessage(new Message("GetClipboard", "queryUpstream"));
+ }
+ else {
+ queryUpstreamCallback(text);
+ }
+}
+
+/**
+ * Open a tab in the upstream bugzilla to create a new bug
+ *
+ * @return none
+ */
+function sendBugUpstream() {
+ var urlStr = filterByRegexp(constantData.newUpstreamBug, getComponent());
+ if (!urlStr) {
+ return null;
+ }
+
+ postMessage(new Message("OpenBugUpstream", {
+ url: urlStr,
+ subject: document.getElementById("short_desc_nonedit_display").
+ textContent.trim(),
+ comment: collectComments()
+ }));
+}
+
+/**
+ * Add a link opening selected lines of Xorg.0.log
+ *
+ * @return none
+ */
+function addCheckXorgLogLink(attList) {
+ if (config.xorglogAnalysis) {
+ attList.forEach(function (row) {
+ var elemS = row[4].getElementsByTagName("td");
+ var elem = elemS[elemS.length - 1];
+ createDeadLink("xorgLogAnalyzeLink", "check", elem,
+ analyzeXorgLog, [row[1], "AnalyzeXorgLogBacktrace"], "br");
+ });
+ }
+}
+
+/**
+ * Given line to be parsed, find out which chipset it is and fill in the
+ * whiteboard
+ *
+ * @param PCIidArrObj object with two fields
+ * id Array manufacturer-ID and product-ID (PCI IDs)
+ * chipsetLine RE
+ * @param driverStr String with the driver name
+ * @return None
+ */
+function fillInWhiteBoard(PCIidArrObj) {
+ var outStr = "";
+ var cardIDStr = "";
+ var cardIDArr = [];
+ var cardName = "";
+ var PCIid = (PCIidArrObj.id[0] + "," + PCIidArrObj.id[1]).toUpperCase();
+
+ if (PCIidArrObj.id[0].toLowerCase() == "10de") {
+ cardName = PCIidArrObj.chipsetLine[2].replace(/\s*nvidia\s*/ig,"").
+ replace('"','','g');
+ }
+ else {
+ try {
+ cardName = constantData.chipNames[PCIid][0];
+ } catch (e if e instanceof TypeError) {
+ PCIid = PCIid.toLowerCase().replace(",",":");
+ postMessage(new Message("SetClipboard", PCIid.toString()));
+ alert("PCI ID " + PCIid + " is not known!");
+ return ; // early termination
+ } catch (e) {
+ throw e;
+ }
+ }
+
+ clickMouse("editme_action");
+ var titleElem = document.getElementById('short_desc');
+ titleElem.value = '[' + cardName + ']\u00A0' + titleElem.value;
+ document.getElementById("fillin_btn").style.display = "none";
+}
+
+/**
+ * Get attached Xorg.0.log, parse it and find the value of chip. Does not fill
+ * the whiteboard itself, just adds button to do so,paramList so that slow
+ * XMLHttpRequest is done in advance.
+ *
+ * @param log array of XorgLogAttList
+ * @return None
+ */
+function fillInChipMagic(XlogID) {
+ analyzeXorgLog(XlogID, "AnalyzeInterestingLine");
+}
+
+function chipsetMagic (interestingLineArr) {
+ // parse Xorg.0.log
+ if (interestingLineArr.length >0) {
+ var interestingArray = interestingLineArr[0];
+ if (interestingArray.length > 1) {
+ var interestingPCIID = interestingArray[2].trim().split(":");
+ createNewButton("short_desc_nonedit_display", false, {
+ "name": "Fill In",
+ "chipMagic": {
+ "id": interestingPCIID,
+ "chipsetLine": interestingLineArr[1]
+ },
+ });
+ }
+ }
+}
+
+function analyzeXorg(results) {
+ var innerString = "";
+
+ if (results.length > 0) {
+ results.splice(0, 1); // remove headers
+ results.sort();
+
+ results.forEach(function(lRE) {
+ innerString += lRE.input + "<br>\n";
+ });
+ innerString += "----------<br>\n" +
+ results.length + " interesting lines found.";
+ }
+ else {
+ innerString += "No matching lines found!";
+ }
+
+ document.body.style.cursor = "auto";
+ postMessage(new Message("OpenStringInPanel",
+ '<!DOCTYPE html PUBLIC "-//IETF//DTD HTML 2.0//EN">' +
+ "<html><head><title>Xorg.0.log analysis</title></head><body><pre>\n" +
+ innerString.trim() +
+ "\n</pre></body></html>"));
+}
+
+function analyzeXorgLog(attachID, backMsg) {
+ document.body.style.cursor = "wait";
+ postMessage(new Message("GetURL", {
+ url: "https://" + window.location.hostname + "/attachment.cgi?id=" + attachID,
+ backMessage: backMsg
+ }));
+}
+
+function findInterestingLine(wholeLog, backMsg) {
+ var REstr = logAnalyzeLogic[backMsg].re;
+ var REarr = [];
+ if (typeof REstr == "string") {
+ REarr = [new RegExp(REstr)];
+ }
+ else if (Array.isArray(REstr)) {
+ REarr = REstr.map(function (reone) {
+ return new RegExp(reone);
+ });
+ }
+ var results = [];
+ wholeLog.split("\n").
+ forEach(function(line) {
+ REarr.forEach(function (re, reIdx) {
+ if (re.test(line)) {
+ results.push(re.exec(line));
+ }
+ });
+ });
+ logAnalyzeLogic[backMsg].func(results);
+}
+
+/**
+ * Return string with the ID for the external_id SELECT for external bugzilla
+ *
+ * @param URLhostname String hostname of the external bugzilla
+ * @return String with the string for the external_id SELECT
+ */
+function getBugzillaName(URLhostname) {
+ var bugzillaID = "";
+ var bzLabelNames = constantData.bugzillaLabelNames;
+ if (bzLabelNames[URLhostname]) {
+ bugzillaID = bzLabelNames[URLhostname];
+ }
+ else {
+ bugzillaID = "";
+ }
+ return bugzillaID;
+}
+
+/**
+ * Callback function for the XMLRPC request
+ *
+ * @param ret Object with xmlhttprequest response with attributes:
+ * + status -- int return code
+ * + statusText
+ * + responseHeaders
+ * + responseText
+ */
+function XMLRPCcallback() {
+ reqCounter--;
+ if (reqCounter <= 0) {
+ setTimeout(function () {
+ window.location.reload(true);
+ }, 1000);
+ }
+}
+
+/**
+ * The worker function -- call XMLRPC to fix MIME type of the particular
+ * attachment
+ *
+ * @param id Integer with the attachment id to be fixed
+ * @param type String with the new MIME type, optional defaults to "text/plain"
+ * @param email Boolean whether email should be sent to appropriate person;
+ * option, defaults to false
+ *
+ * updateAttachMimeType($data_ref, $username, $password)
+ *
+ * Update the attachment mime type of an attachment. The first argument is a
+ * data hash containing information on the new MIME type and the attachment id
+ * that you want to act on.
+ *
+ * $data_ref = { "attach_id" => "<Attachment ID>", # Attachment ID to perform
+ * MIME type change on. "mime_type" => "<New MIME Type Value>", # Legal MIME
+ * type value that you want to change the attachment to. "nomail" => 0, #
+ * OPTIONAL Flag that is either 1 or 0 if you want email to be sent or not for
+ * this change };
+ *
+ */
+function fixAttachById(id, type, email) {
+ var params = [];
+
+ if (type === undefined) {
+ type = "text/plain";
+ }
+ if (email === undefined) {
+ email = false;
+ }
+
+ // https://bugzilla.redhat.com/\
+ // docs/en/html/api/extensions/compat_xmlrpc/code/webservice.html
+ // test on https://bugzilla.redhat.com/show_bug.cgi?id=485145
+ params.push({
+ 'attach_id' : id,
+ 'mime_type' : type,
+ 'nomail' : !email
+ });
+
+ postMessage(new Message("MakeXMLRPCall", {
+ url: constantData.XMLRPCData[window.location.hostname].url,
+ login: getLogin(),
+ method: "bugzilla.updateAttachMimeType",
+ params: params,
+ callRPC: "FixAttachmentMIMECallback"
+ }));
+ reqCounter++;
+}
+
+/**
+ * Add a link to the bad attachment for fixing it.
+ *
+ * @param
+ * <TR> DOM jQuery element with a bad attachment
+ * @return none
+ */
+function addTextLink(row) {
+ var elemS = row[4].getElementsByTagName("td");
+ var elem = elemS[elemS.length - 1];
+ createDeadLink("addFix2TextLink", "text", elem,
+ fixAttachById, row[1], "br");
+}
+
+/**
+ * Add information about the upstream bug upstream, and closing it.
+ *
+ * @param evt Event which called this handler
+ * @return none
+ */
+function addClosingUpstream() {
+ var refs = document.getElementById("external_bugs_table")
+ .getElementsByTagName("tr");
+
+ // that's a bad id, if there is a one. :)
+ var inputBox = document.getElementById("inputbox");
+ var externalBugID = 0;
+ var wholeURL = "";
+
+ // Fix missing ID on the external_id SELECT
+ document.getElementsByName("external_id")[0].setAttribute("id",
+ "external_id");
+
+ if (inputBox.value.match(/^http.*/)) {
+ externalBugID = getBugNoFromURL(inputBox.value);
+ if (externalBugID) {
+ inputBox.value = externalBugID;
+ }
+ // get bugzillaName and set the label
+ var bugzillaName = getBugzillaName(wholeURL.host);
+ selectOptionByLabel("external_id", bugzillaName);
+ }
+ else if (!isNaN(inputBox.value)) {
+ externalBugID = parseInt(inputBox.value, 10);
+ var bugzillaHostname = document.getElementById("external_id").value;
+ wholeURL = bugzillaHostname+"show_bug.cgi?id="+externalBugID;
+ }
+ else {
+ // no inputBox.value -- maybe there is an external bug from
+ // the previous commit?
+ }
+
+ // It is not good to close bug as UPSTREAM, if there is no reference
+ // to the upstream bug.
+ if ((externalBugID > 0) || (refs.length > 2)) {
+ var msgStr = constantData.commentStrings.sentUpstreamString;
+ msgStr = msgStr.replace("§§§", wholeURL);
+ centralCommandDispatch("comment",msgStr);
+ centralCommandDispatch("status", "CLOSED");
+ centralCommandDispatch("resolution", "UPSTREAM");
+ }
+ else {
+ console.log("No external bug specified among the External References!");
+ }
+}
+
+function markBugTriaged() {
+ // https://fedoraproject.org/wiki/BugZappers/Meetings/Minutes-2009-Oct-27
+ // http://meetbot.fedoraproject.org/fedora-meeting/2009-11-24\
+ // /fedora-meeting.2009-11-24-15.11.log.html
+ // http://meetbot.fedoraproject.org/fedora-meeting/2009-11-24\
+ // /fedora-meeting.2009-11-24-15.11.log.html
+ addStuffToTextBox("keywords","Triaged");
+}
+
+/**
+ *
+ */
+function parseBacktrace (ret) {
+ var signalHandler = new RegExp("^\\s*#[0-9]*\\s*<signal handler called>");
+ var frameNo = new RegExp("^\\s*#([0-9]*)\\s");
+
+ var splitArray = ret.split("\n");
+ var i = 0, ii = splitArray.length;
+ var outStr = "", curLine = "", numStr = "";
+ var lineCounter = 0, endLineNo = 0;
+
+ // TODO shouldn't we just cut off and analyze whole thread?
+ while (i < ii) {
+ if (signalHandler.test(splitArray[i])) {
+ break;
+ }
+ i++;
+ }
+
+ if (i < ii) {
+ lineCounter = parseInt(frameNo.exec(splitArray[i])[1], 10);
+ endLineNo = lineCounter + NumberOfFrames;
+ curLine = splitArray[i];
+ while ((lineCounter < endLineNo) && (curLine.trim().length > 0)
+ && (i < ii)) {
+ outStr += curLine + '\n';
+ numStr = frameNo.exec(curLine);
+ if (numStr) {
+ lineCounter = parseInt(numStr[1], 10);
+ }
+ i++;
+ curLine = splitArray[i];
+ }
+ return outStr;
+ }
+ return "";
+}
+
+function RHBZinit() {
+ // inheritance ... call superobject's constructor
+ var AbrtRE = new RegExp("^\\s*\\[abrt\\]");
+ var FillMagicDoneRE = new RegExp("^\\s*\\[[0-9a-zA-Z_]*\\]");
+ var btSnippet = "";
+
+ var signaturesCounter = 0;
+ var chipMagicInterestingLine = "";
+
+ // getBadAttachments
+ var XorgLogAttList = [];
+ var XorgLogAttListIndex = 0;
+ var attachments = getAttachments();
+ markBadAttachments(attachments);
+
+ var parsedAttachments = attachments.filter(function (att) {
+ return (new RegExp(titleParsedAttachment).test(att[0]));
+ });
+
+ if (constantData.defaultAssignee) {
+ setDefaultAssignee();
+ }
+
+ // Dig out backtrace protection against double-firing?
+ btSnippet = "";
+
+ var parseAbrtBacktraces = config.parseAbrtBacktraces;
+ if (parseAbrtBacktraces && AbrtRE.test(getSummary())) {
+ pasteBacktraceInComments(parsedAttachments);
+ }
+
+ // Find out Xorg.0.log attachment URL
+ XorgLogAttList = attachments.filter(function (value) {
+ // Xorg.0.log must be text, otherwise we cannot parse it
+ return (/[xX].*log/.test(value[0]) && /text/.test(value[2]));
+ });
+ // Just add a link to every Xorg.0.log link analyzing it.
+ addCheckXorgLogLink(XorgLogAttList);
+
+ var maintCCAddr = "";
+ if (constantData.CCmaintainer) {
+ maintCCAddr = filterByRegexp(constantData.CCmaintainer,
+ getComponent())[0]; // filterByRegexp returns array, not string
+ }
+
+ // TODO Get compiz bugs as well
+ if ((constantData.chipNames) &&
+ (XorgLogAttList[0]) &&
+ (!FillMagicDoneRE.test(getSummary())) &&
+ (maintCCAddr === "xgl-maint@redhat.com")) {
+ // Add find chip magic button
+ var whiteboard_string = document.getElementById("status_whiteboard").value;
+ if (!/card_/.test(whiteboard_string)) {
+ fillInChipMagic(XorgLogAttList[0][1]);
+ }
+ }
+
+ // we should make visible whether maintCCAddr is in CCList
+ if (maintCCAddr && isInList(maintCCAddr, getCCList())) {
+ var ccEditBoxElem = document.getElementById("cc_edit_area_showhide");
+ ccEditBoxElem.style.color = "navy";
+ ccEditBoxElem.style.fontWeight = "bolder";
+ ccEditBoxElem.style.textDecoration = "underline";
+ }
+
+ // Take care of signature for Fedora bugzappers
+ if (config.signature && config.signature.length > 0) {
+ var signatureFedoraString = config.signature;
+ document.forms.namedItem("changeform").addEventListener("submit",
+ function(aEvt) {
+ if (signaturesCounter < 1) {
+ addStuffToTextBox("comment", signatureFedoraString);
+ signaturesCounter += 1;
+ }
+ }, false);
+ }
+ setBranding();
+
+ // set default assignee on change of the component
+ var compElement = document.getElementById("component");
+ if (compElement && (compElement.options)) {
+ document.getElementById("component").addEventListener("change",
+ function() {
+ changeAssignee("default");
+ }, false);
+ }
+
+ // Uncheck "set default assignee" when the assignee is changed by other means
+ document.getElementById("assigned_to").addEventListener("change",
+ function() {
+ changeAssignee(null);
+ }, false);
+}
diff --git a/data/lib/skip-bug.js b/data/lib/skip-bug.js
new file mode 100644
index 0000000..3639448
--- /dev/null
+++ b/data/lib/skip-bug.js
@@ -0,0 +1,19 @@
+// Released under the MIT/X11 license
+// http://www.opensource.org/licenses/mit-license.php
+// "use strict";
+
+function reloadPage() {
+ var stemURL = 'https://HOSTNAME/show_bug.cgi?id=';
+ var titleElems = document.getElementsByTagName('title');
+ if (titleElems) {
+ var REArr = new RegExp('[bB]ug\\s+([0-9]+)').
+ exec(titleElems[0].textContent);
+ var hostname = document.location.hostname;
+ if (REArr) {
+ document.location = stemURL.
+ replace('HOSTNAME',hostname) + REArr[1];
+ }
+ }
+}
+
+reloadPage();
diff --git a/data/lib/util.js b/data/lib/util.js
new file mode 100644
index 0000000..f336a7f
--- /dev/null
+++ b/data/lib/util.js
@@ -0,0 +1,336 @@
+/*global console: false */
+/*jslint onevar: false */
+// Released under the MIT/X11 license
+// http://www.opensource.org/licenses/mit-license.php
+"use strict";
+// ==============================================================
+
+/**
+ * parse URL to get its parts.
+ *
+ * @param url
+ * @return object with all parsed parts of URL as properties
+ *
+ * Originally from http://james.padolsey.com/javascript/parsing-urls-with-the-dom/
+ * Copyright February 19th, 2009, James Padolsey, <license undeclared>
+ *
+ * This function creates a new anchor element and uses location
+ * properties (inherent) to get the desired URL data. Some String
+ * operations are used (to normalize results across browsers).
+ */
+function parseURL(url) {
+ var a = document.createElement('a');
+ a.href = url;
+ return {
+ source: url,
+ protocol: a.protocol.replace(':',''),
+ host: a.hostname,
+ port: a.port,
+ query: a.search,
+ params: (function(){
+ var ret = {},
+ seg = a.search.replace(/^\?/,'').split('&'),
+ len = seg.length, i = 0, s;
+ for (;i<len;i++) {
+ if (!seg[i]) { continue; }
+ s = seg[i].split('=');
+ ret[s[0]] = s[1];
+ }
+ return ret;
+ })(),
+ file: (a.pathname.match(/\/([^\/?#]+)$/i) || [,''])[1],
+ hash: a.hash.replace('#',''),
+ path: a.pathname.replace(/^([^\/])/,'/$1'),
+ relative: (a.href.match(/tps?:\/\/[^\/]+(.+)/) || [,''])[1],
+ segments: a.pathname.replace(/^\//,'').split('/')
+ };
+}
+
+/**
+ * parse XML object out of string working around various bugs in Gecko implementation
+ * see https://developer.mozilla.org/en/E4X for more information
+ *
+ * @param inStr String with unparsed XML string
+ * @return XML object
+ */
+function parseXMLfromString (inStuff) {
+ // if (typeof inStuff !== 'string') In future we should recognize this.response
+ // and get just .text property out of it. TODO
+ var respStr = inStuff.replace(/^<\?xml\s+version\s*=\s*(["'])[^\1]+\1[^?]*\?>/, ""); // bug 336551
+ return new XML(respStr);
+}
+
+/**
+ * Get a bug no
+ */
+function getBugNo() {
+ console.log("bugNo = " + document.forms.namedItem('changeform').getElementsByName("id")[0].value);
+ return document.forms.namedItem('changeform').getElementsByName("id")[0].value;
+}
+
+/**
+ * Get a bug no from URL ... fails with aliases
+ * @param url String with URL to be analyzed
+ * @return String with the bug ID
+ */
+function getBugNoFromURL(url) {
+ var params = parseURL(url).params;
+ if (params && params.id) {
+ return params.id;
+ }
+}
+
+/**
+ * Create a A element leadink nowhere, but with listener running a callback on the click
+ *
+ * @param id String with a id to be added to the element
+ * @param text String with a string to be added as a textContent of the element
+ * @param parent Node which is a parent of the object
+ * @param callback Function to be called after clicking on the link
+ * @param params Array with parameters of the callback
+ * @param Boolean before if there should be a <br> element before.
+ * @return none
+ */
+function createDeadLink (id, text, parent, callback, params, before, covered, accesskey) {
+ params = valToArray(params);
+ var locParent = {};
+
+ // Yes, I want != here, not !==
+ if (covered != null) {
+ locParent = document.createElement(covered);
+ parent.appendChild(locParent);
+ }
+ else {
+ locParent = parent;
+ }
+
+ var newAElem = document.createElement("a");
+ newAElem.setAttribute("id", id);
+ if (accesskey) {
+ newAElem.setAttribute("accesskey", accesskey);
+ }
+ newAElem.textContent = text;
+
+ if (typeof callback === "string") {
+ newAElem.setAttribute("href", callback);
+ }
+ else {
+ newAElem.setAttribute("href", "");
+ newAElem.addEventListener("click", function(evt) {
+ evt.stopPropagation();
+ evt.preventDefault();
+ // We need apply, because params could be array of parameters
+ callback.apply(null, params);
+ }, false);
+ }
+
+ if ((before === "br") || (before === true)) {
+ locParent.appendChild(document.createElement("br"));
+ }
+ else if (before === "dash") {
+ locParent.appendChild(document.createTextNode("\u00A0-\u00A0"));
+ }
+
+ locParent.appendChild(newAElem);
+}
+
+/*
+ * From <a> element diggs out just plain email address
+ * Note that bugzilla.gnome.org doesn't have mailto: url but
+ * https://bugzilla.gnome.org/page.cgi?id=describeuser.html&login=mcepl%40redhat.com
+ *
+ * @param aElement Element with href attribute or something else
+ * @return String with the address or null
+ *
+ */
+function parseMailto(aElement) {
+ var emailStr = "", hrefStr = "";
+ // use url utils
+ if (aElement) {
+ hrefStr = decodeURIComponent(aElement.getAttribute("href"));
+ emailStr = hrefStr.split(":");
+ // workaround for Gnome bugzilla ... no mailto: here.
+ if (emailStr.length < 2) {
+ var params = parseURL("https://" + window.location.hostname + "/" + hrefStr).params;
+ return decodeURI(params.login);
+ }
+ return emailStr[1];
+ }
+ return null;
+}
+
+/**
+ * format date to be in ISO format (just day part)
+ *
+ * @param date
+ * @return string with the formatted date
+ */
+function getISODate(dateStr) {
+ function pad(n) {
+ return n < 10 ? '0' + n : n;
+ }
+ var date = new Date(dateStr);
+ return date.getFullYear() + '-' + pad(date.getMonth() + 1) + '-' +
+ pad(date.getDate());
+}
+
+/**
+ * Check whether an item is member of the list. Idea is just to make long if
+ * commands slightly more readable.
+ *
+ * @param mbr string to be searched in the list
+ * @param list list
+ * @return position of the string in the list, or -1 if none found.
+ */
+function isInList(mbr, list) {
+ if (!list) {
+ return false;
+ }
+ return (list.indexOf(mbr) !== -1);
+};
+
+/**
+ * Make sure value returned is Array
+ *
+ * @param Array/String
+ * @return Array
+ *
+ * If something else than Array or String is passed to the function
+ * the result will be untouched actual argument of the call.
+ */
+function valToArray(val) {
+ var isArr = val &&
+ val.constructor &&
+ val.constructor.name === "Array";
+ return isArr ? val : [val];
+}
+
+/**
+ * Merges two comma separated string as a list and returns new string
+ *
+ * @param str String with old values
+ * @param value String/Array with other values
+ * @return String with merged lists
+ */
+function addCSVValue(str, value) {
+ var parts = (str.trim().length > 0 ? str.split(/[,\s]+/) : []);
+ if (!value) {
+ return str;
+ }
+ if (!isInList(value, parts)) {
+ var newValue = valToArray(value);
+ parts = parts.concat(newValue);
+ }
+ // this is necessary to get comma-space separated string even when
+ // value is an array already
+ parts = parts.join(",").split(",");
+ return parts.join(", ");
+}
+
+/**
+ * Treats comma separated string as a list and removes one item from it
+ *
+ * @param str String treated as a list
+ * @param value String with the value to be removed from str
+ * @return String with the resulting list comma separated
+ */
+function removeCSVValue(str, value) {
+ str = str.trim();
+ var parts = str ? str.split(/[,\s]+/) : [];
+ var valueArr = value instanceof Array ? value : value.split(/[,\s]+/);
+ parts = parts.filter(function (e, i, a) {
+ return (!isInList(e, valueArr));
+ });
+ return parts.join(", ");
+}
+
+/**
+ * select element of the array where regexp in the first element matches second
+ * parameter of this function
+ *
+ * @param list Array with regexps and return values
+ * @param chosingMark String by which the element of array is to be matched
+ * @return Object chosen element
+ */
+function filterByRegexp(list, chosingMark) {
+ var chosenPair = [];
+ if (list.length > 0) {
+ chosenPair = list.filter(function (pair) {
+ return new RegExp(pair.regexp, "i").test(chosingMark);
+ });
+ }
+ if (chosenPair.length > 0) {
+ return chosenPair[0].addr;
+ }
+ else {
+ return "";
+ }
+}
+
+/**
+ * remove elements from the page based on their IDs
+ *
+ * @param doc Document object
+ * @param target String/Array with ID(s)
+ * @param remove Boolean indicating whether the node should be
+ * actually removed or just hidden.
+ * @return none
+ * TODO remove parameter could be replaced by function which would
+ * do actual activity.
+ */
+function killNodes(doc, target, remove) {
+ target = target.trim();
+ var targetArr = target instanceof Array ? target : target.split(/[,\s]+/);
+ targetArr.forEach(function(x) {
+ if (remove) {
+ var targetNode = doc.getElementById(x);
+ targetNode.parentNode.removeChild(targetNode);
+ }
+ else {
+ x.style.display = "none";
+ }
+ });
+}
+
+/**
+ * Remove duplicate elements from array
+ *
+ * @param arr Array which needs to be cleaned up
+ * @return cleaned up array
+ */
+function removeDuplicates (arr) {
+ for (var i = 0; i < arr.length; i++) {
+ for (var j = i + 1; j < arr.length; j++) {
+ if (arr[i] == arr[j]) {
+ arr.splice (j, 1);
+ }
+ }
+ }
+ return arr;
+}
+
+// ============================================
+/**
+ * object to pack messaging. Use as in
+ postMessage(new Message("GetPassword", {
+ login: login,
+ hostname: location.hostname
+ }));
+ */
+function Message(cmd, data) {
+ this.cmd = cmd;
+ this.data = data;
+}
+
+function log(msg) {
+ postMessage(new Message("LogMessage", msg));
+}
+
+var NotLoggedinException = function NotLoggedinException (message) {
+ this.message = message;
+ this.name = "NotLoggedinException";
+};
+
+NotLoggedinException.prototype.toString = function () {
+ return this.name + ': "' + this.message + '"';
+};
diff --git a/data/newUpstreamBug.json b/data/newUpstreamBug.json
new file mode 100644
index 0000000..c4ace83
--- /dev/null
+++ b/data/newUpstreamBug.json
@@ -0,0 +1,18 @@
+[
+ {
+ "regexp": "thunderbird",
+ "addr": "https://bugzilla.mozilla.org/enter_bug.cgi?product=Thunderbird"
+ },
+ {
+ "regexp": "firefox",
+ "addr": "https://bugzilla.mozilla.org/enter_bug.cgi?product=Firefox"
+ },
+ {
+ "regexp": "xulrunner",
+ "addr": "https://bugzilla.mozilla.org/enter_bug.cgi?product=Core"
+ },
+ {
+ "regexp": "xorg-x11.*",
+ "addr": "https://bugs.freedesktop.org/enter_bug.cgi?product=xorg"
+ }
+] \ No newline at end of file
diff --git a/data/professionalProducts.json b/data/professionalProducts.json
new file mode 100644
index 0000000..dc0def0
--- /dev/null
+++ b/data/professionalProducts.json
@@ -0,0 +1,4 @@
+[
+ "Red Hat Enterprise Linux",
+ "Red Hat Enterprise MRG"
+] \ No newline at end of file
diff --git a/data/queryUpstreamBug.json b/data/queryUpstreamBug.json
new file mode 100644
index 0000000..544d526
--- /dev/null
+++ b/data/queryUpstreamBug.json
@@ -0,0 +1,26 @@
+[
+ {
+ "regexp": "thunderbird|firefox|xulrunner",
+ "addr": {
+ "url": "https://bugzilla.mozilla.org/buglist.cgi?quicksearch=",
+ "fillIn": "$$$",
+ "searchBy": "product"
+ }
+ },
+ {
+ "regexp": "nautilus|gnome.*",
+ "addr": {
+ "url": "https://bugzilla.mozilla.org/buglist.cgi?quicksearch=",
+ "fillIn": "$$$",
+ "searchBy": "product"
+ }
+ },
+ {
+ "regexp": "xorg-x11.*",
+ "addr": {
+ "url": "https://bugs.freedesktop.org/buglist.cgi?quicksearch=",
+ "fillIn": "xorg",
+ "searchBy": "product"
+ }
+ }
+]
diff --git a/docs/bzpage.md b/docs/bzpage.md
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/docs/bzpage.md
diff --git a/docs/rhbzpage.md b/docs/rhbzpage.md
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/docs/rhbzpage.md
diff --git a/docs/xhr.md b/docs/xhr.md
new file mode 100644
index 0000000..ea21c80
--- /dev/null
+++ b/docs/xhr.md
@@ -0,0 +1,82 @@
+The `xhr` module provides access to `XMLHttpRequest`
+functionality, also known as AJAX.
+
+## Exports ##
+
+<code>xhr.**XMLHttpRequest**()</code>
+
+Creates an `XMLHttpRequest`. This is a constructor, so its use
+should always be preceded by the `new` operator. For more information,
+see the MDC page on [Using XMLHttpRequest].
+
+<code>xhr.**getRequestCount**()</code>
+
+Returns the number of `XMLHttpRequest` objects that are alive
+(i.e., currently active or about to be).
+
+## Limitations ##
+
+The `XMLHttpRequest` object is currently fairly limited, and does not
+yet implement the `addEventListener()` or `removeEventListener()`
+methods. It also doesn't yet implement the `upload` property.
+
+Furthermore, the `XMLHttpRequest` object does not currently support
+the `mozBackgroundRequest` property. All security UI, such as
+username/password prompts, are automatically suppressed, so if
+required authentication information isn't passed to the `open()`
+method, the request will fail.
+
+## Resource Use ##
+
+Whenever this module is unloaded, all in-progress requests are immediately
+aborted.
+
+## Security Concerns ##
+
+By default, the `XMLHttpRequest` object grants full access to any
+protocol scheme, which means that it can be used to read from (but not
+write to) the host system's entire filesystem. It also has unfettered
+access to any local area networks, VPNs, and the internet.
+
+### Threat Model ###
+
+The `XMLHttpRequest` object can be used by an extension to "phone
+home" and transmit potentially sensitive user data to third
+parties.
+
+If access to the filesystem isn't prevented, it could easily be used
+to access sensitive user data, though this may be inconsequential if
+the client can't access the network.
+
+If access to local area networks isn't prevented, malicious Jetpack
+code could access sensitive data.
+
+If transmission of cookies isn't prevented, malicious Jetpack code
+could access sensitive data.
+
+Attenuating access based on a regular expression may be ineffective if
+it's easy to write a regular expression that *looks* safe but contains
+a special character or two that makes it far less secure than it seems
+at first glance.
+
+### Possible Attenuations ###
+
+<span class="aside">
+We may also want to consider attenuating further based on domain name
+and possibly even restricting the protocol to `https:` only, to reduce
+risk.
+</span>
+
+Before being exposed to unprivileged Jetpack code, this object needs
+to be attenuated in such a way that, at the very least, it can't
+access the user's filesystem. This can probably be done most securely
+by white-listing the protocols that can be used in the URL passed to
+the `open()` method, and limiting them to `http:`, `https:`, and
+possibly a special scheme that can be used to access the Jetpack
+extension's packaged, read-only resources.
+
+Finally, we need to also consider attenuating http/https requests such
+that they're "sandboxed" and don't communicate potentially sensitive
+cookie information.
+
+ [Using XMLHttpRequest]: https://developer.mozilla.org/En/Using_XMLHttpRequest
diff --git a/icon.png b/icon.png
new file mode 100644
index 0000000..5824de4
--- /dev/null
+++ b/icon.png
Binary files differ
diff --git a/jsons/BugZappers_data-prototype.json b/jsons/BugZappers_data-prototype.json
new file mode 100644
index 0000000..5fbf337
--- /dev/null
+++ b/jsons/BugZappers_data-prototype.json
@@ -0,0 +1,280 @@
+{
+ "strings":{
+ "noRHEL4String":"I don't think this will be fixed for RHEL4, which support covers now only security and major bugs.\n\nClosing as WONTFIX.",
+ "noTriageString":"There is nothing to triage here.\n\nSwitching to ASSIGNED so that developers have responsibility to do whatever they want to do with it.",
+ "getLogsString":"Thanks for the bug report. We have reviewed the information you have provided above, and there is some additional information we require that will be helpful in our diagnosis of this issue.\n\nPlease attach your X server config file (/etc/X11/xorg.conf, if available), output of the dmesg command, and X server log file (/var/log/Xorg.*.log) to the bug report as individual uncompressed file attachments using the bugzilla file attachment link above.\n\nWe will review this issue again once you've had a chance to attach this information.\n\nThanks in advance.",
+ "getLogsLiveCDString":"Thanks for the bug report. We have reviewed the information you have provided above, and there is some additional information especially concerning your hardware we require that will be helpful in our diagnosis of this issue.\n\nIf the anaconda crashes during the switching to the graphic mode, most likely the problem lies in Xorg support for your graphics chip. There are couple of options how we can obtain information necessary for resolving the issue.\n\nIf the computer is not completely frozen when installation fails, switch to the console (Ctrl+Alt+F2) and copy /tmp/X* and /var/log/anaconda.xlog to some other place -- USB stick, some other computer via network, somewhere on the Internet, and please attach it to the bug report as individual uncompressed file attachments using the bugzilla file attachment link above.\n\nIf the computer is completely useless after installation fails, you can also install Fedora with a VESA mode driver (see https://fedoraproject.org/wiki/Documentation_Beats_Installer\nfor more information on that). Then after successful installation you can collect /var/log/anaconda.xlog, /var/log/Xorg.0.log, and the output of the program dmesg instead.\n\nOr you can install Fedora in a text mode completely, and then start X after that. If it fails, still /var/log/Xorg.0.log and the output of dmesg program from the failed attempt to start X would be useful.\n\nWe will review this issue again once you've had a chance to attach this information.\n\nThank you very much in advance.",
+ "getFirefoxBacktraceString":"Thanks for the bug report. We have reviewed the information you have provided above, and there is some additional information we require that will be helpful in our diagnosis of this issue.\n\nFirst of all, could we get output of the command\n\n\u0009rpm -qa *xulrun* *firefox* *mozilla* *flash* *plugin*\n\nPlease also install firefox-debuginfo (debuginfo-install is from\nyum-utils package).\n\n\u0009debuginfo-install firefox\n\nThen run firefox with a parameter -g. That will start firefox running inside of gdb debugger. Then use command run and do whatever you did to make firefox crash. When it happens, you should go back to the gdb and run\n\n\u0009(gdb) thread apply all backtrace\n\nThis produces usually many screens of the text. Copy all of them into a text editor and attach the file to the bug as an uncompressed attachment.\n\nWe will review this issue again once you've had a chance to attach this information.\n\nThanks in advance.",
+ "getSuicideString":"If this issue turns out to still be reproduceable in the latest updates for this Fedora Core release, please file a bug report in the the upstream bugzilla located at http://bugzilla.mozilla.org in the particular component.\n\nOnce you've filed your bug report to the upstream bugzilla, if you paste the new bug URL here, we will continue to track the issue in the centralized upstream bug tracker, and will review any bug fixes that become available for consideration in future updates.\n\nSetting status to NEEDINFO, and awaiting upstream bug report URL for tracking.\n\nThanks in advance.",
+ "noResponseString":"Since there are insufficient details provided in this report for us to investigate the issue further, and we have not received feedback to the information we have requested above, we will assume the problem was not reproducible, or has been fixed in one of the updates we have released for the reporter's distribution.\n\nUsers who have experienced this problem are encouraged to upgrade to the latest update of their distribution, and if this issue turns out to still be reproducible in the latest update, please reopen this bug with additional information.\n\nClosing as INSUFFICIENT_DATA.",
+ "sentUpstreamString": "We filed this bug in the upstream database (§§§) and believe that it is more appropriate to let it be resolved upstream.\n\nWe will continue to track the issue in the centralized upstream bug tracker, and will review any bug fixes that become available for consideration in future updates.\n\nWe would strongly encourage you to subscribe to the upstream bug as well (by logging in and adding yourself to the Cc list), so that you can provide whatever information required for the successful resolving of this issue.\n\nThank you for helping to make free software better.",
+ "moveYourButString":"Reporter, could you please reply to the previous question? If you won't reply in one month, I will have to close this bug as INSUFFICIENT_DATA. Thank you.",
+ "RHELString":"For official Red Hat Enterprise Linux support, please log into the Red Hat support website at http://www.redhat.com/support and file a support ticket. To understand how your bug is tracked through our system, please see https://www.redhat.com/support/process/production/#howrh",
+ "cantfixNvidiaString":"Thanks for the report. We are sorry that we cannot help you with your problem, but we are not able to support binary-only drivers. If you would be able to reproduce this issue using only open source software, please, reopen this bug with the additional information, but in meantime I have no choice than to close this bug as CANTFIX (because we really cannot fix it).\n\nThe open source 'nouveau' driver (in package xorg-x11-drv-nouveau) is the recommended alternative for users of Nvidia graphic chips. It is used by default in Fedora 11 and later if you remove any customizations that explicitly set the video driver. The older \"nv\" driver may be needed in some cases. It is also available in older Fedora releases. Install the packages xorg-x11-drv-nouveau or xorg-x11-drv-nv and override the X server's default choice if necessary. See https://fedoraproject.org/wiki/Features/NouveauAsDefault for more information.\n\nIf you used a non-packaged version of the driver from the Nvidia website please clean your system from additional libraries and software it installed. For users who are experiencing problems installing, configuring, or using the unsupported 3rd party proprietary \"nvidia\" video driver, Nvidia provides indirect customer support via an online web based support forum. Nvidia monitors these web forums for commonly reported problems and passes them on to Nvidia engineers for investigation. Once they've isolated a particular problem, it is often fixed in a future video driver update.\n\nThe NVNews Nvidia Linux driver forum is located at:\n\n\u0009http://www.nvnews.net/vbulletin/forumdisplay.php?s=&forumid=14\n\nOnce you have reported this issue in the Nvidia web forums, others who may have experienced the particular problem may be able to assist. If there is a real bug occuring, Nvidia will be able to determine this, and will likely resolve the issue in a future driver update for the operating system releases that they officially support.\n\nWhile we does not support the proprietary nvidia driver, users requiring technical support may also find the various X.Org, XFree86, and Red Hat/Fedora mailing lists helpful in finding assistance:\n\nX.Org mailing lists:\n\u0009http://www.freedesktop.org/XOrg/XorgMailingLists\n\nXFree86 mailing lists:\n\u0009http://www.xfree86.org/sos/lists.html\n\nRed Hat/Fedora mailing lists:\n\u0009https://listman.redhat.com/mailman/listinfo",
+ "obsoleteRHELString":"This bug is filed against release of RHEL, which is in maintenance phase. During the maintenance phase, only security errata and select mission critical bug fixes will be released for enterprise products. Since this bug does not meet that criteria, it is now being closed.\n\nFor more information of the RHEL errata support policy, please visit:\n\nhttp://www.redhat.com/security/updates/errata/\n\nIf you feel this bug is indeed mission critical, please contact your support representative. You may be asked to provide detailed information on how this bug is affecting you.",
+ "getEOL":"Thank you for your bug report.\nWe are sorry, but the Fedora Project no longer maintains this versionof Fedora. Please upgrade to the latest version and reopen this bugagainst that version if this bug exists there.\nAs a result we are setting this bug to CLOSED:WONTFIX",
+ "triagedString":"This bug has been triaged"
+ },
+ "bugzillalabelNames":{
+ "bugzilla.mozilla.org":"Mozilla Foundation",
+ "bugs.freedesktop.org":"FreeDesktop.org",
+ "bugs.eclipse.org":"Eclipse Project",
+ "bugzilla.gnome.org":"GNOME Desktop"
+ },
+ "bugzillaIDURLs":[
+ null,
+ null,
+ null,
+ "https://bugzilla.gnome.org/show_bug.cgi?id=",
+ null,
+ null,
+ "https://bugzilla.mozilla.org/show_bug.cgi?id=",
+ null,
+ null,
+ null,
+ null,
+ "https://bugs.eclipse.org/bugs/show_bug.cgi?id=",
+ null,
+ null,
+ null,
+ null,
+ null,
+ "https://bugs.freedesktop.org/show_bug.cgi?id="
+ ],
+ "signature":"\n\n-- \nFedora Bugzappers volunteer triage team\nhttps://fedoraproject.org/wiki/BugZappers",
+ "defaultAssignee":[
+ {
+ "regexp":"xorg-x11-drv-ati",
+ "addr":"jglisse@redhat.com"
+ },
+ {
+ "regexp":"xorg-x11-drv-intel",
+ "addr":"ajax@redhat.com"
+ },
+ {
+ "regexp":"xorg-x11-(server.*|drv-vesa|drv-mga)",
+ "addr":"ajax@redhat.com"
+ },
+ {
+ "regexp":"xorg-x11-drv-(keyboard|mouse|evdev)|xkeyboard-config|linuxwacom",
+ "addr":"peter.hutterer@redhat.com"
+ },
+ {
+ "regexp":"(seamonkey|nss.*)",
+ "addr":"kengert@redhat.com"
+ },
+ {
+ "regexp":"thunderbird",
+ "addr":"jhorak@redhat.com"
+ },
+ {
+ "regexp":"(firefox|xulrunner)",
+ "addr":"stransky@redhat.com"
+ },
+ {
+ "regexp":"xorg-x11-drv-(nv|nouveau)",
+ "addr":"bskeggs@redhat.com"
+ }
+ ],
+ "CCmaintainer":[
+ {
+ "regexp":"xorg|X11|compiz|chkfontpath|imake|libdmx|libdrm|libfontenc|libFS|libICE|libSM|libwnck|libxkbfile|mesa|pyxf86config|system-config-display|xkeyboard-config|xrestop|xsri",
+ "addr":"xgl-maint@redhat.com"
+ },
+ {
+ "regexp":"epiphany.*|firefox|galeon|gecko-sharp2|htmlview|^mozilla|seamonkey|thunderbird|xulrunner|nspluginwrapper",
+ "addr":"gecko-bugs-nobody@fedoraproject.org"
+ }
+ ],
+ "queryButton":true,
+ "upstreamButton":false,
+ "submitsLogging":false,
+ "parseAbrtBacktraces":false,
+ "newUpstreamBug":[
+
+ ],
+ "queryUpstreamBug":[
+
+ ],
+ "suspiciousComponents":[
+
+ ],
+ "chipIDsGroupings":[
+ {
+ "regexp":"RADEON,R(100|[VS][12]00|S200M|S250|N50)",
+ "addr":"R100"
+ },
+ {
+ "regexp":"RADEON,R(200|V2[58]0|C350|S3[05]0)",
+ "addr":"R200"
+ },
+ {
+ "regexp":"RADEON,R(3[056]0|V3[56][10])",
+ "addr":"R300"
+ },
+ {
+ "regexp":"RADEON,RV3[78]0",
+ "addr":"R300e"
+ },
+ {
+ "regexp":"RADEON,RS4[08][025]",
+ "addr":"IGP300"
+ },
+ {
+ "regexp":"RADEON,R(4[123]0|481)",
+ "addr":"R400"
+ },
+ {
+ "regexp":"RADEON,R(V410|423|4[38]0)",
+ "addr":"R420"
+ },
+ {
+ "regexp":"RADEON,R(V51[56]|V53[05]|V5[67]0|5[28]0|580\\+)",
+ "addr":"R500"
+ },
+ {
+ "regexp":"RADEON,RS(6[09]|74)0C?",
+ "addr":"IGP600"
+ },
+ {
+ "regexp":"RADEON,R(V6[1273][50]|R6[80]0).*",
+ "addr":"R600"
+ },
+ {
+ "regexp":"RADEON,RS([78]80)[CD]?",
+ "addr":"IGP700"
+ },
+ {
+ "regexp":"RADEON,R(V7[13479]0.*|700)",
+ "addr":"R700"
+ },
+ {
+ "regexp":"RADEON,(Juniper|Cypress|Hemlock).*",
+ "addr":"R800"
+ },
+ {
+ "regexp":"RADEON,M(9|10).*",
+ "addr":"FireGL"
+ },
+ {
+ "regexp":"NOUVEAU,NV[13456]",
+ "addr":"preGeForce"
+ },
+ {
+ "regexp":"NOUVEAU,NV10",
+ "addr":"GeForce"
+ },
+ {
+ "regexp":"NOUVEAU,NV1[156]",
+ "addr":"GeForce2"
+ },
+ {
+ "regexp":"NOUVEAU,NV20",
+ "addr":"GeForce3"
+ },
+ {
+ "regexp":"INTEL,865PE",
+ "addr":"AGP8x"
+ }
+ ],
+ "topRow":[
+ {
+ "idx":"addgetsuicide",
+ "msg":"Suicide",
+ "string":"getSuicideString",
+ "state":"NEEDINFO",
+ "parameter":"",
+ "submit":false
+ },
+ {
+ "idx":"addnoresponse",
+ "msg":"No Resp.",
+ "string":"noResponseString",
+ "state":"CLOSED",
+ "parameter":"INSUFFICIENT_DATA",
+ "submit":false
+ },
+ {
+ "idx":"addcloseupstream",
+ "msg":"UPSTREAM",
+ "string":"",
+ "state":"CLOSED",
+ "parameter":"UPSTREAM",
+ "submit":false
+ },
+ {
+ "idx":"moveyourbutt",
+ "msg":"Reminder",
+ "string":"moveYourButString",
+ "state":"NEEDINFO",
+ "parameter":"",
+ "submit":false
+ },
+ {
+ "idx":"addcloseeol",
+ "msg":"EOL",
+ "string":"getEOL",
+ "state":"CLOSED",
+ "parameter":"WONTFIX",
+ "submit":false
+ },
+ {
+ "idx":"triaged",
+ "msg":"Triaged",
+ "string":"triagedString",
+ "state":"ASSIGNED",
+ "parameter":"",
+ "submit":false
+ }
+ ],
+ "bottomRow":[
+ {
+ "idx":"needinforbtn",
+ "msg":"NEEDINFO",
+ "string":"",
+ "state":"NEEDINFO",
+ "parameter":"",
+ "submit":false
+ },
+ {
+ "idx":"addgetlogstext",
+ "msg":"X logs",
+ "string":"getLogsString",
+ "state":"NEEDINFO",
+ "parameter":"",
+ "submit":false
+ },
+ {
+ "idx":"closenvidia",
+ "msg":"Close nVidia",
+ "string":"cantfixNvidiaString",
+ "state":"CLOSED",
+ "parameter":"CANTFIX",
+ "submit":false
+ },
+ {
+ "idx":"xloglivecdbtn",
+ "msg":"Live CD X logs",
+ "string":"getLogsLiveCDString",
+ "state":"NEEDINFO",
+ "parameter":"",
+ "submit":false
+ },
+ {
+ "idx":"futurefeaturekw",
+ "msg":"FutureFeature",
+ "string":"",
+ "state":"ADDKEYWORD",
+ "parameter":"FutureFeature",
+ "submit":false
+ },
+ {
+ "idx":"patchkw",
+ "msg":"Patch",
+ "string":"",
+ "state":"ADDKEYWORD",
+ "parameter":"Patch",
+ "submit":false
+ }
+ ]
+}
diff --git a/jsons/Config_data.json b/jsons/Config_data.json
new file mode 100644
index 0000000..8db7b27
--- /dev/null
+++ b/jsons/Config_data.json
@@ -0,0 +1,132 @@
+{
+ "commentPackages":{
+ "rh-common":{
+ "markTriaged":{
+ "position":"-commit_top",
+ "name":"Mark Triaged",
+ "markTriaged":true,
+ "assignee":null
+ },
+ "addnoresponse":{
+ "name":"NoRespns",
+ "position":"topRow",
+ "commentIdx":"noResponseString",
+ "markTriaged":true,
+ "status":"CLOSED",
+ "resolution":"INSUFFICIENT_DATA"
+ },
+ "moveyourbutt":{
+ "name":"InfRemind",
+ "position":"topRow",
+ "commentIdx":"moveYourButString",
+ "setNeedinfo":true
+ },
+ "needinforbtn":{
+ "name":"NEEDINFO",
+ "position":"bottomRow",
+ "setNeedinfo":true
+ },
+ "notriagebtn":{
+ "name":"noTriage",
+ "position":"bottomRow",
+ "comment":"This bug has been triaged",
+ "status":"ASSIGNED",
+ "addCC":"self"
+ },
+ "nodebugsymbols":{
+ "name":"noDbg",
+ "position":"bottomRow",
+ "commentIdx":"noDebugSymbols",
+ "markTriaged":true,
+ "status":"CLOSED",
+ "resolution":"INSUFFICIENT_DATA"
+ },
+ "closeOnRetest":{
+ "position":"bottomRow",
+ "name":"Retest",
+ "markTriaged":true,
+ "commentIdx":"thankLettingUsKnow",
+ "status":"CLOSED",
+ "computeResolution":true
+ }
+ },
+ "rh-gecko":{
+ "addgetffrepro":{
+ "name":"Repro",
+ "position":"topRow",
+ "commentIdx":"getAbrtReproInfo",
+ "setNeedinfo":true
+ },
+ "webfailure":{
+ "name":"Bad site",
+ "position":"topRow",
+ "commentIdx":"websiteFailure",
+ "markTriaged":true,
+ "status":"CLOSED",
+ "resolution":"NOTABUG"
+ },
+ "crashInFlash":{
+ "name":"flashCrash",
+ "position":"topRow",
+ "commentIdx":"flashCrashString",
+ "markTriaged":true,
+ "status":"CLOSED",
+ "resolution":"CANTFIX"
+ }
+ },
+ "rh-xorg":{
+ "addgetlogstext":{
+ "name":"X logs",
+ "position":"topRow",
+ "commentIdx":"getLogsString",
+ "setNeedinfo":true
+ }
+ }
+ },
+ "commentStrings":{
+ "thankLettingUsKnow":"Thank you for letting us know.",
+ "noDebugSymbols":"Thank you for taking the time to report this bug report. Unfortunately, that stack trace is not very useful in determining the cause of the crash, because there are no debugging symbols loaded (probably abrt failed to load them).\n\nUnfortunately, we cannot use this backtrace.\n\nClosing as INSUFFICIENT_DATA.",
+ "noTriageString":"There is nothing to triage here.\n\nSwitching to ASSIGNED so that developers have responsibility to do whatever they want to do with it.",
+ "getAbrtReproInfo":"Reporter, could you please describe us what you have done to get to this point, and how we can reproduce this issue here? Is there anything special about your system, network, configuration which we need to replicate here in order to reproduce your problem please?",
+ "getLogsString":"Thanks for the bug report. We have reviewed the information you have provided above, and there is some additional information we require that will be helpful in our diagnosis of this issue.\n\nPlease add drm.debug=0x04 to the kernel command line, restart computer, and attach\n\n* your X server config file (/etc/X11/xorg.conf, if available),\n* X server log file (/var/log/Xorg.*.log)\n* output of the dmesg command, and\n* system log (/var/log/messages)\n\nto the bug report as individual uncompressed file attachments using the bugzilla file attachment link above.\n\nWe will review this issue again once you've had a chance to attach this information.\n\nThanks in advance.",
+ "getLogsLiveCDString":"Thanks for the bug report. We have reviewed the information you have provided above, and there is some additional information especially concerning your hardware we require that will be helpful in our diagnosis of this issue.\n\nIf the anaconda crashes during the switching to the graphic mode, most likely the problem lies in Xorg support for your graphics chip. There are couple of options how we can obtain information necessary for resolving the issue.\n\nIf the computer is not completely frozen when installation fails, switch to the console (Ctrl+Alt+F2) and copy /tmp/X* and /var/log/anaconda.xlog to some other place -- USB stick, some other computer via network, somewhere on the Internet, and please attach it to the bug report as individual uncompressed file attachments using the bugzilla file attachment link above.\n\nIf the computer is completely useless after installation fails, you can also install Fedora with a VESA mode driver (see http://docs.fedoraproject.org/en-US/Fedora/13/html/Installation_Guide/\nfor more information on that). Then after successful installation you can collect /var/log/anaconda.xlog, /var/log/Xorg.0.log, and the output of the program dmesg instead.\n\nOr you can install Fedora in a text mode completely, and then start X after that. If it fails, still /var/log/Xorg.0.log and the output of dmesg program from the failed attempt to start X would be useful.\n\nWe will review this issue again once you've had a chance to attach this information.\n\nThank you very much in advance.",
+ "noResponseString":"Since there are insufficient details provided in this report for us to investigate the issue further, and we have not received feedback to the information we have requested above, we will assume the problem was not reproducible, or has been fixed in one of the updates we have released for the reporter's distribution.\n\nUsers who have experienced this problem are encouraged to upgrade to the latest update of their distribution, and if this issue turns out to still be reproducible in the latest update, please reopen this bug with additional information.\n\nClosing as INSUFFICIENT_DATA.",
+ "websiteFailure":"To report a broken website, first please make sure that you are running the latest release of Firefox (i.e., updated from updates-testing repository for your distribution or Rawhide).\n\nThen, if you can still reproduce the issue, pull down the 'Help' menu and select 'Report Broken Web Site'. This will start a wizard which will prompt you for the information required (privacy policy). This information is sent to a database and aggregated, so we have a good idea of which sites the most people are having problems with.\n\nIf you are interested, you can search the database of reports (http://reporter.mozilla.org/).\n\nClosing this bug as NOTABUG, if you don't agree with this resolution, please, reopen this bug and attach any relevant information to this bug.",
+ "sentUpstreamString": "We filed this bug in the upstream database (§§§) and believe that it is more appropriate to let it be resolved upstream.\n\nWe will continue to track the issue in the centralized upstream bug tracker, and will review any bug fixes that become available for consideration in future updates.\n\nWe would strongly encourage you to subscribe to the upstream bug as well (by logging in and adding yourself to the Cc list), so that you can provide whatever information required for the successful resolving of this issue.\n\nThank you for helping to make free software better.",
+ "moveYourButString":"Reporter, could you please reply to the previous question? If you won't reply in one month, I will have to close this bug as INSUFFICIENT_DATA. Thank you.",
+ "cantfixNvidiaString":"Thanks for the report. We are sorry that we cannot help you with your problem, but we are not able to support binary-only drivers. If you would be able to reproduce this issue using only open source software, please, reopen this bug with the additional information, but in meantime I have no choice than to close this bug as CANTFIX (because we really cannot fix it).\n\nThe open source 'nouveau' driver (in package xorg-x11-drv-nouveau) is the recommended alternative for users of Nvidia graphic chips. It is used by default in Fedora 11 and later if you remove any customizations that explicitly set the video driver. The older \"nv\" driver may be needed in some cases. It is also available in older Fedora releases. Install the packages xorg-x11-drv-nouveau or xorg-x11-drv-nv and override the X server's default choice if necessary. See https://fedoraproject.org/wiki/Features/NouveauAsDefault for more information.\n\nIf you used a non-packaged version of the driver from the Nvidia website please clean your system from additional libraries and software it installed. For users who are experiencing problems installing, configuring, or using the unsupported 3rd party proprietary \"nvidia\" video driver, Nvidia provides indirect customer support via an online web based support forum. Nvidia monitors these web forums for commonly reported problems and passes them on to Nvidia engineers for investigation. Once they've isolated a particular problem, it is often fixed in a future video driver update.\n\nThe NVNews Nvidia Linux driver forum is located at:\n\n\u0009http://www.nvnews.net/vbulletin/forumdisplay.php?s=&forumid=14\n\nOnce you have reported this issue in the Nvidia web forums, others who may have experienced the particular problem may be able to assist. If there is a real bug occuring, Nvidia will be able to determine this, and will likely resolve the issue in a future driver update for the operating system releases that they officially support.\n\nWhile we does not support the proprietary nvidia driver, users requiring technical support may also find the various X.Org, XFree86, and Red Hat/Fedora mailing lists helpful in finding assistance:\n\nX.Org mailing lists:\n\u0009http://www.freedesktop.org/XOrg/XorgMailingLists\n\nXFree86 mailing lists:\n\u0009http://www.xfree86.org/sos/lists.html\n\nRed Hat/Fedora mailing lists:\n\u0009https://listman.redhat.com/mailman/listinfo",
+ "flashCrashString":"Unfortunately, crash here happened in the binary-only flash player for which we don't have any source code, so unfortunately we cannot help you with it.\n\nClosing as CANTFIX (because that's our situation)",
+ "getEOL":"Thank you for your bug report.\nWe are sorry, but the Fedora Project no longer maintains this version of Fedora. Please upgrade to the latest version and reopen this bug against that version if this bug exists there.\nAs a result we are setting this bug to CLOSED:WONTFIX"
+ },
+ "configData":{
+ "queryButton":true,
+ "upstreamButton":false,
+ "parseAbrtBacktraces":true,
+ "submitsLogging":false,
+ "suspiciousComponents":[
+
+ ],
+ "downloadJSON":[
+
+ ],
+ "objectStyle":"RH",
+ "matches":[
+ "https://bugzilla.redhat.com/show_bug.cgi.*",
+ "https://bugzilla.mozilla.org/show_bug.cgi.*",
+ "https://bugzilla.gnome.org/show_bug.cgi.*"
+ ],
+ "enabledPackages":{
+ "bugzilla.redhat.com":"all"
+ },
+ "killNodes":{
+ "bugzilla.gnome.org":[
+ "stocklinks",
+ true
+ ]
+ },
+ "signature":"\n\n-- \nFedora Bugzappers volunteer triage team\nhttps://fedoraproject.org/wiki/BugZappers"
+ },
+ "constantData":{
+
+ }
+}
diff --git a/jsons/Config_gnome.json b/jsons/Config_gnome.json
new file mode 100644
index 0000000..98acbf1
--- /dev/null
+++ b/jsons/Config_gnome.json
@@ -0,0 +1,117 @@
+{
+ "commentPackages":{
+ "gnome":{
+ "notrace":{
+ "name":"need_stacktrace",
+ "position":"bottomRow",
+ "comment":"Thanks for taking the time to report this bug.\nWithout a stack trace from the crash it's very hard to determine what caused it. Can you get us a stack trace? Please see http://live.gnome.org/GettingTraces for more information on how to do so. Thanks in advance!",
+ "setNeedinfo":true
+ },
+ "nodescription":{
+ "name":"bad_description",
+ "position":"topRow",
+ "comment":"Thanks for taking the time to report this bug.\nThis bug report isn't very useful because it doesn't describe the bug well. If you have time and can still reproduce the bug, please read https://bugzilla.gnome.org/bug-HOWTO.html and add a more useful description to this bug.",
+ "setNeedinfo":true
+ },
+ "nodescriptioncrasher":{
+ "name":"bad_description+crasher",
+ "position":"bottomRow",
+ "comment":"Thanks for taking the time to report this bug.\nThis bug report isn't very useful because it doesn't describe the bug well. If you have time and can still reproduce the bug, please read https://bugzilla.gnome.org/bug-HOWTO.html and add a description of how to reproduce this bug.\nYou'll also need to add a stack trace; please see http://live.gnome.org/GettingTraces for more information about how to do so.\nThanks in advance!",
+ "setNeedinfo":true
+ },
+ "obsolete":{
+ "name":"obsolete",
+ "position":"topRow",
+ "comment":"Thanks for taking the time to report this bug.\nHowever, you are using a version that is too old and not supported anymore. GNOME developers are no longer working on that version, so unfortunately there will not be any bug fixes for the version that you use.\nBy upgrading to a newer version of GNOME you could receive bug fixes and new functionality. You may need to upgrade your Linux distribution to obtain a newer version of GNOME.\nPlease feel free to reopen this bug if the problem still occurs with a newer version of GNOME.",
+ "status":"RESOLVED",
+ "resolution":"OBSOLETE"
+ },
+ "incomplete":{
+ "name":"bad_stacktrace",
+ "position":"bottomRow",
+ "comment":"Thanks for taking the time to report this bug.\nUnfortunately, that stack trace is missing some elements that will help a lot to solve the problem, so it will be hard for the developers to fix that crash. Can you get us a stack trace with debugging symbols? Please see http://live.gnome.org/GettingTraces for more information on how to do so. Thanks in advance!",
+ "setNeedinfo":true
+ },
+ "old-untouched":{
+ "name":"old-untouched",
+ "position":"topRow",
+ "comment":"This bug was reported against a version which is not supported any more. Developers are no longer working on this version so there will not be any bug fixes for it.\nCan you please check again if the issue you reported here still happens in a recent version of GNOME and update this report by adding a comment and adjusting the 'Version' field?\nAgain thank you for reporting this and sorry that it could not be fixed for the version you originally used here.\nWithout feedback this report will be closed as INCOMPLETE after 6 weeks.",
+ "setNeedinfo":true
+ },
+ "mozilla":{
+ "name":"mozilla",
+ "position":"bottomRow",
+ "comment":"Thanks for taking the time to report this bug.\nThis trace indicates that Mozilla (which was being used by the program) was responsible for the crash, or alternatively that the program was compiled against a different version of Mozilla. Make sure the program was built against the most recent mozilla, and if you can duplicate the crash in mozilla itself, report the bug to http://bugzilla.mozilla.org/",
+ "status":"RESOLVED",
+ "resolution":"NOTGNOME"
+ },
+ "notgnome":{
+ "name":"notgnome",
+ "position":"topRow",
+ "comment":"Thanks for taking the time to report this bug.\nHowever, this application does not track its bugs in the GNOME bugzilla. We kindly ask you to report the bug to the application authors. For a selective list of other bug tracking systems please consult http://live.gnome.org/Bugsquad/TriageGuide/NonGnome. \nIf the affected third party application has a bug tracking system you should investigate whether a bug for the reported issue is already filed in this system. If it has not been filed yet please do so. Also ensure that both bug reports contain a link to each other.\nThanks in advance!",
+ "status":"RESOLVED",
+ "resolution":"NOTGNOME"
+ },
+ "duplicate":{
+ "name":"dupe",
+ "position":"topRow",
+ "comment":"Thanks for the bug report. This particular bug has already been reported into our bug tracking system, but please feel free to report any further bugs you find.",
+ "status":"RESOLVED",
+ "resolution":"DUPLICATE"
+ },
+ "duplicate-needinfo":{
+ "name":"dupe+needinfo",
+ "position":"topRow",
+ "comment":"Thanks for taking the time to report this bug.\nThis particular bug has already been reported into our bug tracking system, but the maintainers need more information to fix the bug. Could you please answer the questions in the other report in order to help the developers?"
+ },
+ "duplicate-fixed":{
+ "name":"dupe+fixed",
+ "position":"topRow",
+ "comment":"Thanks for taking the time to report this bug.\nThis particular bug has already been reported into our bug tracking system, but we are happy to tell you that the problem has already been fixed. It should be solved in the next software version. You may want to check for a software upgrade."
+ },
+ "noresponse":{
+ "name":"no_response",
+ "position":"topRow",
+ "comment":"Closing this bug report as no further information has been provided after more than 6 weeks. Please feel free to reopen this bug if you can provide the information asked for. Thanks!",
+ "status":"RESOLVED",
+ "resolution":"INCOMPLETE"
+ },
+ "evince":{
+ "name":"evince",
+ "position":"bottomRow",
+ "comment":"Thanks for the bug report. Unfortunately it lacks some information that may help us in finding the cause of the bug. Can you, if possible, attach the file causing the crash? Also this may be a Poppler Bug (the backend used by Evince to render PDF), could you please supply the poppler version and type? You can find it in the Help->About menu in Evince.",
+ "setNeedinfo":true
+ }
+ }
+ },
+ "commentStrings":null,
+ "configData":{
+ "queryButton":true,
+ "upstreamButton":false,
+ "parseAbrtBacktraces":true,
+ "submitsLogging":false,
+ "suspiciousComponents":[
+
+ ],
+ "downloadJSON":[
+
+ ],
+ "objectStyle":"MoFo",
+ "matches":[
+ "https://bugzilla.gnome.org/show_bug.cgi.*"
+ ],
+ "enabledPackages":{
+ "bugzilla.gnome.org":"all"
+ },
+ "killNodes":{
+ "bugzilla.gnome.org":[
+ "stocklinks",
+ true
+ ]
+ },
+ "signature":""
+ },
+ "constantData":{
+
+ }
+}
diff --git a/jsons/Config_mozilla.json b/jsons/Config_mozilla.json
new file mode 100644
index 0000000..302bda9
--- /dev/null
+++ b/jsons/Config_mozilla.json
@@ -0,0 +1,95 @@
+{
+ "commentPackages": {
+ "mozilla": {
+ "safe-mode": {
+ "name": "Safe Mode Question",
+ "position": "dropDown",
+ "comment": "Have you tried safe mode? (see https://support.mozillamessaging.com/en-US/kb/Safe+Mode for more information)"
+ },
+ "extension-issue": {
+ "name": "Response: Invalid due to extension issue",
+ "position": "dropDown",
+ "comment": "Sorry, your issue is to do with an extension and we are unable to support it here. Please raise the issue direct with the extension author or on their site.\n\nYou may find details of how to do this here:\n\n******* INSERT LINK TO EXTENSION SITE *******",
+ "status": "RESOLVED",
+ "resolution": "INVALID"
+ },
+ "profile-location": {
+ "name": "Profile Location text and link",
+ "position": "dropDown",
+ "comment": "To locate your profile, see this page for more information: https://support.mozillamessaging.com/en-US/kb/Profiles"
+ },
+ "no-response": {
+ "name": "INCOMPLETE (No Response from Reporter)",
+ "position": "dropDown",
+ "comment": "No response for a while now, closing INCOMPLETE. Please reopen if you can reproduce or answer any unanswered questions.",
+ "status": "RESOLVED",
+ "resolution": "INCOMPLETE"
+ }
+ },
+ "thunderbird": {
+
+ },
+ "calendar": {
+ "console-log": {
+ "name": "Calendar Console Log",
+ "position": "dropDown",
+ "commentIdx": "consoleLogStr"
+ },
+ "prepare-checkin": {
+ "name": "prepare for checkin",
+ "position": "dropDown",
+ "target": "1.0b2",
+ "removeKeyword": "checkin-needed",
+ "status": "RESOLVED",
+ "resolution": "FIXED",
+ "comment": "Pushed to comm-central <http://hg.mozilla.org/comm-central/rev/INSERT_REV_HERE>\n\n-> FIXED"
+ },
+ "what-version": {
+ "name": "Using what version?",
+ "position": "dropDown",
+ "comment": "Please tell us what version you are using:\n\n* Thunderbird\n* Lightning\n* Provider for Google Calendar"
+ },
+ "retest-nightly": {
+ "name": "Retest with nightly",
+ "position": "dropDown",
+ "comment": "Does this still happen with the latest 1.0b2pre nightlies?"
+ },
+ "extension-fodder": {
+ "name": "Extension Fodder",
+ "position": "dropDown",
+ "addWhiteboard": "extension fodder",
+ "prefixSummary": "[extension fodder]",
+ "status": "RESOLVED",
+ "resolution": "WONTFIX",
+ "comment": "This sounds like a good idea, but I think it makes more sense as an extension. Marking WONTFIX for core calendar."
+ }
+ }
+ },
+ "commentStrings": {
+ "consoleLogStr": "Please enable calendar.debug.log and calendar.debug.log.verbose in the advanced config editor (Options > Advanced > General > Config Editor) and check your error console for messages."
+ },
+ "configData": {
+ "queryButton": true,
+ "upstreamButton": false,
+ "parseAbrtBacktraces": true,
+ "submitsLogging": false,
+ "suspiciousComponents": [
+
+ ],
+ "enabledPackages": {
+ "bugzilla.mozilla.org": "all"
+ },
+ "downloadJSON": [
+
+ ],
+ "objectStyle": "MoFo",
+ "matches": [
+ "https://bugzilla.redhat.com/show_bug.cgi.*",
+ "https://bugzilla.mozilla.org/show_bug.cgi.*"
+ ],
+ "signature": ""
+ },
+ "constantData": {
+
+ }
+}
diff --git a/jsons/bugzilla-comments.json b/jsons/bugzilla-comments.json
new file mode 100644
index 0000000..464c3cf
--- /dev/null
+++ b/jsons/bugzilla-comments.json
@@ -0,0 +1,97 @@
+{
+ "commentPackages":{
+ "test":{
+ "test-all":{
+ "name":"Test lots of things",
+ "product":"Thunderbird",
+ "component":"Internal Components",
+ "priority":"P1",
+ "severity":"major",
+ "assignee":"mschroeder",
+ "qacontact":"foobar",
+ "url":"http://example.com",
+ "addDependsOn":"123",
+ "removeDependsOn":"456",
+ "addBlocks":"789",
+ "removeBlocks":"101112",
+ "addWhiteboard":[
+ "a",
+ "b",
+ "c"
+ ],
+ "removeWhiteboard":[
+ "a",
+ "b"
+ ],
+ "addKeyword":[
+ "d",
+ "e"
+ ],
+ "removeKeyword":"e",
+ "url":"http://example.com",
+ "status":"RESOLVED",
+ "resolution":"INCOMPLETE",
+ "version":"Lightning 0.3",
+ "os":"All",
+ "platform":"All",
+ "prefixTitle":"pre-title:",
+ "suffixTitle":":post-title"
+ }
+ },
+ "mozilla":{
+ "safe-mode":{
+ "name":"Safe Mode Question",
+ "comment":"Have you tried safe mode? (see https://support.mozillamessaging.com/en-US/kb/Safe+Mode for more information)"
+ },
+ "extension-issue":{
+ "name":"Response: Invalid due to extension issue",
+ "comment":"Sorry, your issue is to do with an extension and we are unable to support it here. Please raise the issue direct with the extension author or on their site.\n\nYou may find details of how to do this here:\n\n******* INSERT LINK TO EXTENSION SITE *******",
+ "status":"RESOLVED",
+ "resolution":"INVALID"
+ },
+ "profile-location":{
+ "name":"Profile Location text and link",
+ "comment":"To locate your profile, see this page for more information: https://support.mozillamessaging.com/en-US/kb/Profiles"
+ },
+ "no-response":{
+ "name":"INCOMPLETE (No Response from Reporter)",
+ "comment":"No response for a while now, closing INCOMPLETE. Please reopen if you can reproduce or answer any unanswered questions.",
+ "status":"RESOLVED",
+ "resolution":"INCOMPLETE"
+ }
+ },
+ "thunderbird":{
+
+ },
+ "calendar":{
+ "console-log":{
+ "name":"Calendar Console Log",
+ "comment":"Please enable calendar.debug.log and calendar.debug.log.verbose in the advanced config editor (Options > Advanced > General > Config Editor) and check your error console for messages."
+ },
+ "prepare-checkin":{
+ "name":"prepare for checkin",
+ "target":"1.0b2",
+ "removeKeyword":"checkin-needed",
+ "status":"RESOLVED",
+ "resolution":"FIXED",
+ "comment":"Pushed to comm-central <http://hg.mozilla.org/comm-central/rev/INSERT_REV_HERE>\n\n-> FIXED"
+ },
+ "what-version":{
+ "name":"Using what version?",
+ "comment":"Please tell us what version you are using:\n\n* Thunderbird\n* Lightning\n* Provider for Google Calendar"
+ },
+ "retest-nightly":{
+ "name":"Retest with nightly",
+ "comment":"Does this still happen with the latest 1.0b2pre nightlies?"
+ },
+ "extension-fodder":{
+ "name":"Extension Fodder",
+ "addWhiteboard":"extension fodder",
+ "prefixSummary":"[extension fodder]",
+ "status":"RESOLVED",
+ "resolution":"WONTFIX",
+ "comment":"This sounds like a good idea, but I think it makes more sense as an extension. Marking WONTFIX for core calendar."
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/lib/libbugzilla.js b/lib/libbugzilla.js
new file mode 100644
index 0000000..45a1fc4
--- /dev/null
+++ b/lib/libbugzilla.js
@@ -0,0 +1,399 @@
+// Released under the MIT/X11 license
+// http://www.opensource.org/licenses/mit-license.php
+//
+"use strict";
+var preferences = require("preferences-service");
+var prompts = require("prompts");
+var clipboard = require("clipboard");
+var tabs = require("tabs");
+var logger = require("logger");
+var passUtils = require("passwords");
+var Request = require("request").Request;
+var selfMod = require("self");
+var urlMod = require("url");
+var dataUtils = require("utils/data");
+var xrpc = require("xmlrpc");
+var panelMod = require("panel");
+
+var JSONURLDefault = "https://fedorahosted.org/released"+
+ "/bugzilla-triage-scripts/Config_data.json";
+var BTSPrefNS = "bugzilla-triage.setting.";
+var BTSPassRealm = "BTSXMLRPCPass";
+
+var passwords = {}; // hash of passwords indexed by a hostname
+var config = exports.config = {};
+
+function Message(cmd, data) {
+ console.log("Message: cmd = " + cmd + ", data = " + data);
+ this.cmd = cmd;
+ this.data = data;
+}
+
+function log(msg) {
+ postMessage(new Message("LogMessage", msg));
+}
+
+/**
+ * parse XML object out of string working around various bugs in Gecko implementation
+ * see https://developer.mozilla.org/en/E4X for more information
+ *
+ * @param inStr String with unparsed XML string
+ * @return XML object
+ */
+function parseXMLfromString (inStuff) {
+ // if (typeof inStuff !== 'string') In future we should recognize this.response
+ // and get just .text property out of it. TODO
+ var respStr = inStuff.replace(/^<\?xml\s+version\s*=\s*(["'])[^\1]+\1[^?]*\?>/, ""); // bug 336551
+ return new XML(respStr);
+}
+
+/**
+ * In case URL contains alias, not the real bug number, get the real bug no
+ * from the XML representation. Sets correct value to this.bugNo.
+ *
+ * This is a slow variant for bugs other than actual window
+ */
+function getRealBugNoSlow(bugNo, location, callback) {
+ console.log("We have to deal with bug aliased as " + this.bugNo);
+ // https://bugzilla.redhat.com/show_bug.cgi?ctype=xml&id=serialWacom
+ Request({
+ url: location.href+"&ctype=xml",
+ onComplete: function(response) {
+ if (response.status === 200) {
+ var xmlRepr = parseXMLfromString(response.text);
+ // TODO this probably wrong, both XPath and .text attribute
+ var bugID = parseInt(xmlRepr.bug.bug_id.text, 10);
+ if (isNaN(bugID)) {
+ throw new Error("Cannot get bug no. even from XML representation!");
+ }
+ console.log("The real bug no. is " + bugID);
+ callback(bugID)
+ }
+ }
+ }).get();
+}
+
+function getPassword(login, domain, callback) {
+ var passPrompt = "Enter your Bugzilla password for fixing MIME attachment types";
+ var switchPrompt = "Do you want to switch off features requiring password completely";
+ var prefName = BTSPrefNS+"withoutPassowrd";
+ var retObject = {
+ password: null, // password string or null if no password provided
+ withoutPass: false // whether user doesn't want to use password at all
+ };
+
+ passUtils.search({
+ username: login,
+ url: domain,
+ realm: BTSPassRealm,
+ onComplete: function onComplete([credential]) {
+ if (credential) {
+ // We found the password, just go ahead and use it
+ retObject.password = credential.password;
+ callback(retObject);
+ }
+ else {
+ // We don't have a stored password, ask for one
+ var passwordText = prompts.promptPassword(passPrompt);
+ if (passwordText && passwordText.length > 0) {
+ // Right, we've got it … store it and then use it.
+ retObject.password = passwordText;
+ passUtils.store({
+ username: login,
+ password: passwordText,
+ url: domain,
+ realm: BTSPassRealm,
+ onComplete: function onComplete() {
+ callback(retObject);
+ }
+ });
+ }
+ else {
+ // We don't have password, and user haven't entered one?
+ // Does he want to live passwordless?
+ // FIXME should we call the callback at all?
+ var switchOff = prompts.promptYesNoCancel(switchPrompt);
+ if (switchOff) {
+ preferences.set(prefName,true);
+ }
+ retObject.withoutPass = switchOff;
+ callback(retObject);
+ }
+ }
+ }
+ });
+}
+
+exports.changeJSONURL = function changeJSONURL() {
+ var prfNm = BTSPrefNS+"JSONURL";
+ var url = preferences.get(prfNm,"");
+
+ var reply = prompts.prompt("New location of JSON configuration file", url);
+ if (reply && (reply != url)) {
+ preferences.set(prfNm, reply.trim());
+ // TODO Restartless add-on needs to resolve this.
+ prompts.alert("For now, you should really restart Firefox!");
+ }
+};
+
+/**
+ *
+ libbz.getInstalledPackages(msg.data, function (pkgsMsg) {
+ worker.postMessage(pkgsMsg);
+
+ locationLoginObj: {
+ location: window.location.href,
+ login: getLogin()
+ }
+ */
+exports.getInstalledPackages = function getInstalledPackages(locationLoginObj, callback) {
+ var installedPackages = {};
+ var enabledPackages = [];
+ var location = locationLoginObj.location;
+
+ if (typeof location == "string") {
+ location = new urlMod.URL(location);
+ }
+
+ // Collect enabled packages per hostname (plus default ones)
+ if (config.gJSONData && ("commentPackages" in config.gJSONData)) {
+ if ("enabledPackages" in config.gJSONData.configData) {
+ var epObject = config.gJSONData.configData.enabledPackages;
+ if (location.host in epObject) {
+ enabledPackages = enabledPackages.concat(epObject[location.host].split(/[,\s]+/));
+ }
+ if ("any" in epObject) {
+ enabledPackages = enabledPackages.concat(epObject.any.split(/[,\s]+/));
+ }
+ }
+
+ var allIdx = null;
+ if ((allIdx = enabledPackages.indexOf("all")) != -1) {
+ enabledPackages = enabledPackages.splice(allIdx,
+ config.gJSONData.commentPackages.keys());
+ }
+
+ // TODO To be decided, whether we cannot just eliminate packages in
+ // installedPackages and having it just as a plain list of all cmdObjects.
+ enabledPackages.forEach(function (pkg, idx, arr) {
+ if (pkg in config.gJSONData.commentPackages) {
+ installedPackages[pkg] = config.gJSONData.commentPackages[pkg];
+ }
+ });
+ }
+
+ // Expand commentIdx properties into full comments
+ var cmdObj = {};
+ for (var pkgKey in installedPackages) {
+ for (var cmdObjKey in installedPackages[pkgKey]) {
+ cmdObj = installedPackages[pkgKey][cmdObjKey];
+ if ("commentIdx" in cmdObj) {
+ cmdObj.comment = config.gJSONData.commentStrings[cmdObj.commentIdx];
+ delete cmdObj.commentIdx;
+ }
+ }
+ }
+
+ if (config.gJSONData.commentStrings &&
+ "sentUpstreamString" in config.gJSONData.commentStrings) {
+ config.constantData.commentStrings = {};
+ config.constantData.commentStrings.sentUpstreamString =
+ config.gJSONData.commentStrings["sentUpstreamString"];
+ }
+
+ var locURL = new urlMod.URL(locationLoginObj.location);
+ var passDomain = locURL.scheme + "://" + locURL.host;
+ getPassword(locationLoginObj.login, passDomain, function (passwObj) {
+ // In order to avoid sending whole password to the content script,
+ // we are sending just these two Booleans.
+ config.constantData.passwordState = {
+ passAvailable: (passwObj.password !== null),
+ withoutPass: passwObj.withoutPass
+ };
+
+ callback(new Message("CreateButtons", {
+ instPkgs: installedPackages,
+ constData: config.constantData,
+ config: config.configData,
+ kNodes: config.gJSONData.configData.killNodes
+ }));
+ });
+};
+
+exports.getClipboard = function getClipboard(cb) {
+ cb(clipboard.get());
+};
+
+exports.setClipboard = function setClipboard(stuff) {
+ clipboard.set(stuff, "text");
+};
+
+exports.getURL = function getURL(url, callback) {
+ Request({
+ url: url,
+ onComplete: function(response) {
+ if (response.status == 200) {
+ callback(response.text);
+ }
+ }
+ }).get();
+};
+
+exports.openStringInNewPanel = function openStringInNewPanel(inHTMLStr) {
+ openURLInNewPanel("data:text/html;charset=utf-8," +
+ inHTMLStr);
+};
+
+var openURLInNewPanel = exports.openURLInNewPanel = function openURLInNewPanel(url) {
+ var panel = panelMod.Panel({
+ contentURL: url,
+ width: 640,
+ height: 640
+ });
+ panel.show();
+};
+
+var openURLInNewTab = exports.openURLInNewTab = function openURLInNewTab(url) {
+ tabs.open({
+ url: url,
+ inBackground: true,
+ onReady: function(t) {
+ t.activate();
+ }
+ });
+};
+
+exports.createUpstreamBug = function createUpstreamBug(urlStr, subject, comment) {
+ tabs.open({
+ url: urlStr,
+ inBackground: true,
+ onReady: function (t) {
+ var otherElems = t.contentDocument.forms.namedItem("Create").elements;
+ // Summary
+ otherElems.namedItem("short_desc").value = subject;
+ // Comment
+ otherElems.namedItem("comment").value = collectComments();
+ t.activate();
+ }
+ });
+};
+
+// Make a XML-RPC call ... most of the business logic should stay in the content script
+exports.makeXMLRPCCall = function makeXMLRPCCall(url, login, method, params, callback) {
+ var urlObj = urlMod.URL(url);
+ getPassword(login,
+ urlObj.schema + "://" + urlObj.host,
+ function (passwObj) {
+ if (!passwObj.password) {
+ // TODO this should happen, only when user presses Escape in password prompt
+ return null;
+ }
+
+ var msg = new xrpc.XMLRPCMessage(method);
+ params.forEach(function (par) {
+ msg.addParameter(par);
+ });
+ msg.addParameter(login);
+ msg.addParameter(passwObj.password);
+
+ Request({
+ url: url,
+ onComplete: function(response) {
+ if (response.status == 200) {
+ var resp = parseXMLfromString(response.text);
+ callback(resp.toXMLString());
+ }
+ },
+ content: msg.xml(),
+ contentType: "text/xml"
+ }).post();
+ }
+ );
+};
+
+exports.initialize = function initialize(config, callback) {
+ var prefName = BTSPrefNS+"JSONURL";
+ var urlStr = "";
+
+ if (preferences.isSet(prefName)) {
+ urlStr = preferences.get(prefName);
+ }
+ else {
+ urlStr = JSONURLDefault;
+ preferences.set(prefName, JSONURLDefault);
+ }
+
+ // Randomize URL to avoid caching
+ // TODO see https://fedorahosted.org/bugzilla-triage-scripts/ticket/21
+ // for more thorough discussion and possible further improvement
+ urlStr += (urlStr.match(/\?/) == null ? "?" : "&") + (new Date()).getTime();
+
+ Request({
+ url: urlStr,
+ onComplete: function (response) {
+ if (response.status == 200) {
+ config.gJSONData = response.json;
+
+ // Get additional tables
+ if ("downloadJSON" in config.gJSONData.configData) {
+ var URLsList = config.gJSONData.configData.downloadJSON;
+ var dwnldObj = "";
+ URLsList.forEach(function (arr) {
+ var title = arr[0];
+ var url = arr[1];
+ Request({
+ url: url,
+ onComplete: function(response) {
+ if (response.status == 200) {
+ config.constantData[title] = response.json;
+ }
+ }
+ }).get();
+ });
+ }
+
+ config.configData = {};
+ config.configData.matches = config.gJSONData.configData.matches;
+ config.configData.skipMatches = config.configData.matches.map(function(x) {
+ return x.replace("show_bug.cgi.*","((process|post)_bug|attachment)\.cgi$");
+ });
+
+ config.constantData = {};
+ if ("constantData" in config.gJSONData) {
+ config.constantData = config.gJSONData.constantData;
+ config.constantData.queryUpstreamBug = JSON.parse(
+ selfMod.data.load("queryUpstreamBug.json"));
+ config.constantData.XMLRPCData = JSON.parse(
+ selfMod.data.load("XMLRPCdata.json"));
+ config.constantData.bugzillaLabelNames =
+ JSON.parse(selfMod.data.load("bugzillalabelNames.json"));
+ config.constantData.newUpstreamBug =
+ JSON.parse(selfMod.data.load("newUpstreamBug.json"));
+ config.constantData.ProfessionalProducts =
+ JSON.parse(selfMod.data.load("professionalProducts.json"));
+ }
+
+ if ("CCmaintainer" in config.constantData) {
+ config.configData.defBugzillaMaintainerArr = config.constantData.CCmaintainer;
+ }
+
+ if ("suspiciousComponents" in config.gJSONData.configData) {
+ config.configData.suspiciousComponents =
+ config.gJSONData.configData.suspiciousComponents;
+ }
+
+ if ("XorgLogAnalysis" in config.gJSONData.configData) {
+ config.configData.xorglogAnalysis =
+ config.gJSONData.configData.XorgLogAnalysis;
+ }
+
+ if ("submitsLogging" in config.gJSONData.configData &&
+ config.gJSONData.configData.submitsLogging) {
+ logger.initialize(JSON.parse(selfMod.data.load(
+ "bugzillalabelAbbreviations.json")));
+ }
+ }
+ callback();
+ }
+ }).get();
+}
diff --git a/lib/logger.js b/lib/logger.js
new file mode 100644
index 0000000..4411a72
--- /dev/null
+++ b/lib/logger.js
@@ -0,0 +1,135 @@
+/
+Released under the MIT/X11 license
+// http://www.opensource.org/licenses/mit-license.php
+"use strict";
+var urlMod = require("url");
+var utilMod = require("util");
+var fileMod = require("file");
+var tabs = require("tabs");
+var prompts = require("prompts");
+var apiUtils = require("api-utils");
+var xrpc = require("xmlrpc");
+var myStorage = require("simple-storage");
+var libbz = require("libbugzilla");
+
+var EmptyLogsColor = "rgb(0, 255, 0)";
+var FullLogsColor = "rgb(0, 40, 103)";
+
+var abbsMap = {};
+
+exports.initialize = function initialize(aMap) {
+ if (!myStorage.storage.logs) {
+ myStorage.storage.logs = {};
+ }
+ abbsMap = aMap;
+};
+
+exports.addLogRecord = function addLogRecord(rec) {
+ if (myStorage.storage.logs[rec.key]) {
+ myStorage.storage.logs[rec.key].comment += "<br/>\n" + comment;
+ }
+ else {
+ myStorage.storage.logs[rec.key] = rec;
+ }
+};
+
+function storeSize() {
+ var size = 0, key;
+ for (key in myStorage.storage.logs) {
+ size++;
+ }
+ return size;
+}
+
+function isEmpty() {
+ return (storeSize() === 0);
+}
+
+exports.clearTimeSheet = function clearTimeSheet() {
+ myStorage.storage.logs = {};
+ var size = storeSize();
+};
+
+exports.importTimeSheet = function importTimeSheet() {
+ var filename = prompts.promptFileOpenPicker();
+ if (fileMod.exists(filename)) {
+ var otherTS = JSON.parse(fileMod.read(filename));
+ if (otherTS.logs) {
+ for (var rec in otherTS.logs) {
+ myStorage.storage.logs[rec] = otherTS.logs[rec];
+ }
+ }
+ else {
+ console.error("This is not a log file!");
+ }
+ }
+ else {
+ console.error("File " + filename + " doesn't exist!");
+ }
+};
+
+function getBugzillaAbbr(url) {
+ // for https://bugzilla.redhat.com/show_bug.cgi?id=579123 get RH
+ // for https://bugzilla.mozilla.org/show_bug.cgi?id=579123 get MoFo
+ return abbsMap[urlMod.URL(url).host];
+}
+
+exports.generateTimeSheet = function generateTimeSheet() {
+ var docHTML = timeSheetRecordsPrinter(myStorage.storage.logs);
+ libbz.openURLInNewTab("data:text/html;charset=utf-8," + docHTML);
+};
+
+function timeSheetRecordsPrinter(records) {
+ var commentBugRE = new RegExp("[bB]ug\\s+([0-9]+)","g");
+ // sort the records into temporary array
+ var tmpArr = [];
+ var outStr = '<!DOCTYPE html>' +
+ "<html><head>\n"+
+ "<meta charset='utf-8'/>\n"+
+ "<title>Status report</title>\n</head>\n<body>\n" +
+ "<h1>TimeSheet</h1>\n";
+
+ for (var i in records) {
+ if (records.hasOwnProperty(i)) {
+ tmpArr.push( [ i, records[i] ]);
+ }
+ }
+ tmpArr.sort(function(a, b) {
+ if (a[0] > b[0]) {
+ return 1;
+ }
+ else if (a[0] < b[0]) {
+ return -1;
+ }
+ else {
+ return 0;
+ }
+ });
+
+ var currentDay = "";
+ // now print the array
+ tmpArr.forEach(function(rec) {
+ var x = rec[1];
+ var dayStr = utilMod.getISODate(x.date);
+ var host = urlMod.URL(x.url).host;
+ var BZName = getBugzillaAbbr(x.url);
+ var bugNo = utilMod.getBugNo(x.url);
+ if (dayStr != currentDay) {
+ currentDay = dayStr;
+ outStr += "<hr/><p><strong>" + currentDay
+ + "</strong></p>\n";
+ }
+ // replace "bug ####" with a hyperlink to the current bugzilla
+ var comment = x.comment.replace(commentBugRE,
+ "<a href='http://"+host+"/show_bug.cgi?id=$1'>$&</a>");
+ outStr += "<p><em><a href='"
+ + x.url
+ + "'>Bug "
+ + BZName + "/" + bugNo + ": "
+ + x.title
+ + "</a>"
+ + " </em>\n<br/>" + comment + "</p>\n";
+ });
+ outStr += "</body></html>";
+ return outStr;
+}
diff --git a/lib/main.js b/lib/main.js
index 44265ff..3e128ac 100644
--- a/lib/main.js
+++ b/lib/main.js
@@ -1,65 +1,175 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is Bugzilla Tweaks.
- *
- * The Initial Developer of the Original Code is Mozilla Foundation.
- * Portions created by the Initial Developer are Copyright (C) 2010
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- * Johnathan Nightingale <johnath@mozilla.com>
- * Ehsan Akhgari <ehsan@mozilla.com>
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either the GNU General Public License Version 2 or later (the "GPL"), or
- * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
+<<<<<<< HEAD
+// Released under the MIT/X11 license
+// http://www.opensource.org/licenses/mit-license.php
+//
+// Links to read through
+// http://ehsanakhgari.org/blog/2010-01-07/bugzilla-tweaks-enhanced
+// http://hg.mozilla.org/users/ehsan.akhgari_gmail.com/extensions/file/tip/bugzillatweaks
+// http://hg.mozilla.org/users/ehsan.akhgari_gmail.com/extensions/file/ecfa0f028b81/bugzillatweaks/lib/main.js
+// http://hg.mozilla.org/users/avarma_mozilla.com/atul-packages/file/42ac1e99a107/packages\
+// /facebook-acquaintances/lib/main.js#l11
+// http://ehsanakhgari.org/blog/2010-05-31/my-experience-jetpack-sdk#comment-1253
+//
+"use strict";
+var browser = require("tab-browser");
+var self = require("self");
+var pageMod = require("page-mod");
+var libbz = require("libbugzilla");
+var tabs = require("tabs");
+var logger = require("logger");
+var Message = require("util").Message;
+var contextMenu = require("context-menu");
+
+function isOurPage(window, matchingURLs) {
+ var url = window.location.href;
+
+ // like ["regexp-url1", "regexp-url2"]
+ return matchingURLs.some(function (element,i,a) {
+ return new RegExp(element).test(url);
+ });
+}
+
+/**
*
- * ***** END LICENSE BLOCK ***** */
+ */
+function skipThisPage(doc) {
+ var stemURL = "https://HOSTNAME/show_bug.cgi?id=";
+ var titleElems = doc.getElementsByTagName("title");
+ var titleStr = titleElems[0].textContent;
+ var REArr = new RegExp("[bB]ug\\s+([0-9]+)").exec(titleStr);
+ var hostname = doc.location.hostname;
+ if (REArr) {
+ var bugNo = REArr[1];
+ doc.location = stemURL.replace("HOSTNAME",hostname) + bugNo;
+ }
+}
-var self = require("self"),
- contextMenu = require("context-menu"),
- pageMod = require("page-mod");
+var messageHandler = exports.messageHandler = function messageHandler(worker, msg) {
+ switch (msg.cmd) {
+ case "LogMessage":
+ console.log(msg.data);
+ break;
+ case "ExecCmd":
+ libbz.executeCommand(msg.data);
+ break;
+ case "AddLogRecord":
+ logger.addLogRecord(msg.data);
+ break;
+ case "GenerateTS":
+ logger.generateTimeSheet();
+ break;
+ case "ClearTS":
+ logger.clearTimeSheet();
+ break;
+ case "ImportTS":
+ logger.importTimeSheet();
+ break;
+ case "GetInstalledPackages":
+ // send message with packages back
+ libbz.getInstalledPackages(msg.data, function (pkgsMsg) {
+ worker.postMessage(pkgsMsg);
+ });
+ break;
+ case "GetClipboard":
+ libbz.getClipboard(function (clipboard) {
+ worker.postMessage(new Message(msg.data, clipboard));
+ });
+ break;
+ case "SetClipboard":
+ libbz.setClipboard(msg.data);
+ break;
+ case "ChangeJSONURL":
+ libbz.changeJSONURL();
+ break;
+ case "OpenURLinPanel":
+ libbz.openURLInNewPanel(msg.data);
+ break;
+ case "OpenURLinTab":
+ libbz.openURLInNewTab(msg.data);
+ break;
+ case "OpenStringInPanel":
+ libbz.openStringInNewPanel(msg.data);
+ break;
+ case "MakeXMLRPCall":
+ // url, login, method, params, callback
+ libbz.makeXMLRPCCall(msg.data.url, msg.data.login, msg.data.method,
+ msg.data.params, function(ret) {
+ worker.postMessage(new Message(msg.data.callRPC, ret));
+ });
+ break;
+ case "GetURL":
+ libbz.getURL(msg.data.url, function(stuff) {
+ worker.postMessage(new Message(msg.data.backMessage, stuff));
+ });
+ break;
+ case "OpenBugUpstream":
+ libbz.createUpstreamBug(msg.data.url, msg.data.subject, msg.data.comment);
+ break;
+ case "testReady":
+ // we ignore it here, interesting only in unit test
+ break;
+ default:
+ console.error(msg.toSource());
+ }
+};
+
+var contentScriptLibraries = [
+ self.data.url('js/urltest.js'),
+ self.data.url('js/bug-page-mod.js'),
+ self.data.url("lib/jumpNextBug.js"),
+ self.data.url("lib/util.js"),
+ self.data.url("lib/color.js"),
+ self.data.url("lib/logging-front.js"),
+ self.data.url("lib/rhbzpage.js"),
+ self.data.url("lib/bzpage.js")
+];
-exports.main = function(options, callback) {
+libbz.initialize(libbz.config, function () {
pageMod.PageMod({
- include: ["*.mozilla.org", "*.bugzilla.org"], // filtered further in the page mod script
+ include: [
+ "https://bugzilla.redhat.com/show_bug.cgi?id=*",
+ "https://bugzilla.mozilla.org/show_bug.cgi?id=*",
+ "https://bugzilla.gnome.org/show_bug.cgi?id=*"
+ ],
contentScriptWhen: 'ready',
- contentScriptFile: [self.data.url('js/urltest.js'),
- self.data.url('js/bug-page-mod.js')]
+ contentScriptFile: contentScriptLibraries,
+ onAttach: function onAttach(worker, msg) {
+ worker.on('message', function (msg) {
+ messageHandler(worker, msg);
+ });
+ }
});
+});
- // Allow toggling of CC event displays using a context menu entry
- contextMenu.Item({
- label: "Toggle CC History",
- contentScriptFile: [self.data.url('js/urltest.js'),
- self.data.url('js/cc-context.js')]
- });
+pageMod.PageMod({
+ include: [
+ "https://bugzilla.redhat.com/process_bug.cgi",
+ "https://bugzilla.redhat.com/post_bug.cgi",
+ "https://bugzilla.redhat.com/attachment.cgi",
+ "https://bugzilla.mozilla.org/process_bug.cgi",
+ "https://bugzilla.mozilla.org/post_bug.cgi",
+ "https://bugzilla.mozilla.org/attachment.cgi",
+ "https://bugzilla.gnome.org/process_bug.cgi",
+ "https://bugzilla.gnome.org/post_bug.cgi",
+ "https://bugzilla.gnome.org/attachment.cgi"
+ ],
+ contentScriptWhen: 'ready',
+ contentScriptFile: self.data.url("lib/skip-bug.js")
+});
- contextMenu.Item({
- label: "Copy Check-in Comment",
- contentScriptFile: [self.data.url('js/urltest.js'),
- self.data.url('js/checkin-context.js')],
- onMessage: function (comment) {
- require("clipboard").set(comment);
- }
- });
-};
+
+// Allow toggling of CC event displays using a context menu entry
+contextMenu.Item({
+ label: "Toggle CC History",
+ contentScriptFile: [self.data.url('js/urltest.js'),
+ self.data.url('js/cc-context.js')]
+});
+
+contextMenu.Item({
+ label: "Copy Check-in Comment",
+ contentScriptFile: [self.data.url('js/urltest.js'),
+ self.data.url('js/checkin-context.js')],
+ onMessage: function (comment) {
+ require("clipboard").set(comment);
+ }
+});
diff --git a/lib/prompts.js b/lib/prompts.js
new file mode 100644
index 0000000..7cfd3d1
--- /dev/null
+++ b/lib/prompts.js
@@ -0,0 +1,118 @@
+/*global exports: false, require: false, console: false */
+/*jslint onevar: false */
+// Released under the MIT/X11 license
+// http://www.opensource.org/licenses/mit-license.php
+"use strict";
+// ==============================================================
+var Cc = require("chrome").Cc;
+var Ci = require("chrome").Ci;
+// just for JSLINT var Cc, Ci = {};
+var promptTitle = "Bugzilla Triage Script";
+
+/**
+ * shows the text in a simple window
+ *
+ * @return none
+ */
+exports.alert = function alert(msg) {
+ var prompts = Cc["@mozilla.org/embedcomp/prompt-service;1"]
+ .getService(Ci.nsIPromptService);
+ prompts.alert(null, promptTitle, msg);
+};
+
+/**
+ * general prompts for a string method
+ *
+ * @return String with the password
+ */
+exports.prompt = function prompt(prompt, defaultValue) {
+ var stringValue = {
+ value: defaultValue ? defaultValue : ""
+ };
+
+ var prompts = Cc["@mozilla.org/embedcomp/prompt-service;1"]
+ .getService(Ci.nsIPromptService);
+ var result = prompts.prompt(null, promptTitle, prompt,
+ stringValue, null, {});
+ if (result) {
+ return stringValue.value;
+ }
+ else {
+ return null;
+ }
+};
+
+/**
+ * returns password with a special password
+ *
+ * @return String with the password
+ */
+exports.promptPassword = function promptPassword(prompt) {
+ if (!prompt) { // either undefined or null
+ prompt = "Enter password:";
+ }
+ var prompts = Cc["@mozilla.org/embedcomp/prompt-service;1"]
+ .getService(Ci.nsIPromptService);
+ var password = {
+ value : ""
+ }; // default the password to pass
+ var check = {
+ value : true
+ }; // default the checkbox to true
+ var result = prompts.promptPassword(null, "Bugzilla Triage Script", prompt,
+ password, null, check);
+ // result is true if OK was pressed, false if cancel was pressed.
+ // password.value is set if OK was pressed.
+ // The checkbox is not displayed.
+ if (result) {
+ return password.value ? password.value : null;
+ }
+ else {
+ return null;
+ }
+};
+
+/**
+ * YES/NO prompt; returns boolean or null (for Cancel)
+ * https://developer.mozilla.org/en/XPCOM_Interface_Reference/nsIPromptService
+ */
+exports.promptYesNoCancel = function promptOKNoCancel(prompt) {
+ if (!prompt) { // either undefined or null
+ throw new Error("Prompt is required!");
+ }
+ var prompts = Cc["@mozilla.org/embedcomp/prompt-service;1"]
+ .getService(Ci.nsIPromptService);
+
+ var result = prompts.confirmEx(null, "Bugzilla Triage Script", prompt,
+ prompts.STD_YES_NO_BUTTONS, null, null, null, null, {});
+ if (result === 0) {
+ return true;
+ }
+ else if (result === 1) {
+ return false;
+ }
+ else {
+ return null;
+ }
+};
+
+/**
+ *
+ * documentation is https://developer.mozilla.org/en/NsIFilePicker
+ */
+exports.promptFileOpenPicker = function promptFilePicker (win) {
+ var window = require("window-utils").activeWindow;
+ var fp = Cc["@mozilla.org/filepicker;1"]
+ .createInstance(Ci.nsIFilePicker);
+ fp.init(window, "JSON File Open", Ci.nsIFilePicker.modeOpen);
+ fp.appendFilter("JSON files", "*.json");
+ fp.appendFilters(Ci.nsIFilePicker.filterAll);
+ fp.filterIndex = 0;
+ var res = fp.show();
+
+ if (res === Ci.nsIFilePicker.returnOK ||
+ res === Ci.nsIFilePicker.returnReplace ) {
+ return fp.file.path;
+ }
+ return null;
+};
diff --git a/lib/util.js b/lib/util.js
new file mode 100644
index 0000000..d28f001
--- /dev/null
+++ b/lib/util.js
@@ -0,0 +1,77 @@
+/*global exports: false, require: false, console: false, Cc: false, Ci: false */
+/*jslint onevar: false */
+// Released under the MIT/X11 license
+// http://www.opensource.org/licenses/mit-license.php
+"use strict";
+// ==============================================================
+var Cc = require("chrome").Cc;
+var Ci = require("chrome").Ci;
+var urlMod = require("url");
+
+/**
+ * get parameters of URL as an object (name, value)
+ */
+function getParamsFromURL (url, base) {
+ if (!url || (url.toString().length === 0)) {
+ throw new Error("Missing URL value!");
+ }
+
+ if (!(url instanceof urlMod.URL)) {
+ url = new urlMod.URL(url.toString(), base);
+ }
+
+ var paramsArr = url.path.split("?");
+ if (paramsArr.length === 1) {
+ return {};
+ }
+
+ // get convert URL parameters to an Object
+ var params = {}, s = [];
+ paramsArr[1].split('&').forEach(function(par) {
+ s = par.split('=');
+ params[s[0]] = s[1];
+ });
+ return params;
+}
+
+/**
+ * Get a bug no from URL ... fails with aliases
+ * It should theoretically belong to bzpage.js, but we don't have
+ * unit tests there yet, so keeping here.
+ *
+ * @param url String with URL to be analyzed
+ * @return String with the bug ID (hopefully number, but not for aliases)
+ */
+exports.getBugNo = function getBugNo(url) {
+ var params = getParamsFromURL(url);
+ if (params && params.id) {
+ return params.id;
+ }
+};
+
+/**
+ * format date to be in ISO format (just day part)
+ *
+ * @param date
+ * @return string with the formatted date
+ */
+exports.getISODate = function getISODate(dateStr) {
+ function pad(n) {
+ return n < 10 ? '0' + n : n;
+ }
+ var date = new Date(dateStr);
+ return date.getFullYear() + '-' + pad(date.getMonth() + 1) + '-' +
+ pad(date.getDate());
+};
+
+/**
+ * object to pack messaging. Use as in
+ postMessage(new Message("GetPassword", {
+ login: login,
+ hostname: location.hostname
+ }));
+ */
+exports.Message = function Message(cmd, data) {
+ this.cmd = cmd;
+ this.data = data;
+};
diff --git a/lib/xmlrpc.js b/lib/xmlrpc.js
new file mode 100644
index 0000000..8b71f32
--- /dev/null
+++ b/lib/xmlrpc.js
@@ -0,0 +1,188 @@
+/*global exports: false */
+"use strict";
+// Modification of Matěj Cepl released under the MIT/X11 license
+// http://www.opensource.org/licenses/mit-license.php
+/*
+ *
+ * xmlrpc.js beta version 1 Tool for creating XML-RPC formatted requests in
+ * JavaScript
+ *
+ * Copyright 2001 Scott Andrew LePera scott@scottandrew.com
+ *
+ *
+ * License: You are granted the right to use and/or redistribute this code only
+ * if this license and the copyright notice are included and you accept that no
+ * warranty of any kind is made or implied by the author.
+ *
+ */
+
+/**
+ * checks whether parameter is an array
+ *
+ * @param obj Object
+ * @return Boolean true if obj is array
+ *
+ * The problem is that in different contexts, Array is not same, and so obj is
+ * not an instance of SAME Array.
+ */
+
+var XMLRPCMessage = exports.XMLRPCMessage = function XMLRPCMessage(methodname) {
+ this.method = methodname || "system.listMethods";
+ this.params = [];
+ return this;
+};
+
+XMLRPCMessage.prototype.myIsArray = function myIsArray(obj) {
+ return (typeof obj.sort === 'function');
+};
+
+
+XMLRPCMessage.prototype.setMethod = function (methodName) {
+ if (methodName !== undefined) {
+ this.method = methodName;
+ }
+};
+
+XMLRPCMessage.prototype.addParameter = function (data) {
+ if (data !== undefined) {
+ this.params.push(data);
+ }
+};
+
+XMLRPCMessage.prototype.xml = function () {
+
+ var method = this.method;
+
+ // assemble the XML message header
+ var xml = "";
+
+ xml += "<?xml version=\"1.0\"?>\n";
+ xml += "<methodCall>\n";
+ xml += "<methodName>" + method + "</methodName>\n";
+ xml += "<params>\n";
+
+ // do individual parameters
+ this.params.forEach(function (data) {
+ xml += "<param>\n";
+ xml += "<value>" +
+ this.getParamXML(this.dataTypeOf(data),
+ data) + "</value>\n";
+ xml += "</param>\n";
+ }, this);
+ xml += "</params>\n";
+ xml += "</methodCall>";
+
+ return xml; // for now
+};
+
+XMLRPCMessage.prototype.dataTypeOf = function (o) {
+ // identifies the data type
+ var type = typeof (o);
+ type = type.toLowerCase();
+ switch (type) {
+ case "number":
+ if (Math.round(o) === o) {
+ type = "i4";
+ }
+ else {
+ type = "double";
+ }
+ break;
+ case "object":
+ if ((o instanceof Date)) {
+ type = "date";
+ }
+ else if (this.myIsArray(o)) {
+ type = "array";
+ }
+ else {
+ type = "struct";
+ }
+ break;
+ }
+ return type;
+};
+
+XMLRPCMessage.prototype.doValueXML = function (type, data) {
+ var xml = "<" + type + ">" + data + "</" + type + ">";
+ return xml;
+};
+
+XMLRPCMessage.prototype.doBooleanXML = function (data) {
+ var value = (data === true) ? 1 : 0;
+ var xml = "<boolean>" + value + "</boolean>";
+ return xml;
+};
+
+XMLRPCMessage.prototype.doDateXML = function (data) {
+ function leadingZero(n) {
+ // pads a single number with a leading zero. Heh.
+ if (n.length === 1) {
+ n = "0" + n;
+ }
+ return n;
+ }
+ function dateToISO8601(date) {
+ // wow I hate working with the Date object
+ var year = date.getYear();
+ var month = this.leadingZero(date.getMonth());
+ var day = this.leadingZero(date.getDate());
+ var time = this.leadingZero(date.getHours()) +
+ ":" + this.leadingZero(date.getMinutes()) +
+ ":" + this.leadingZero(date.getSeconds());
+
+ var converted = year + month + day + "T" + time;
+ return converted;
+ }
+
+ var xml = "<dateTime.iso8601>";
+ xml += dateToISO8601(data);
+ xml += "</dateTime.iso8601>";
+ return xml;
+};
+
+XMLRPCMessage.prototype.doArrayXML = function (data) {
+ var xml = "<array><data>\n";
+ for (var i = 0; i < data.length; i++) {
+ xml += "<value>" +
+ this.getParamXML(this.dataTypeOf(data[i]),
+ data[i]) + "</value>\n";
+ }
+ xml += "</data></array>\n";
+ return xml;
+};
+
+XMLRPCMessage.prototype.doStructXML = function (data) {
+ var xml = "<struct>\n";
+ for (var i in data) {
+ xml += "<member>\n";
+ xml += "<name>" + i + "</name>\n";
+ xml += "<value>" + this.getParamXML(this.dataTypeOf(data[i]),
+ data[i]) + "</value>\n";
+ xml += "</member>\n";
+ }
+ xml += "</struct>\n";
+ return xml;
+};
+
+XMLRPCMessage.prototype.getParamXML = function (type, data) {
+ var xml;
+ switch (type) {
+ case "date":
+ xml = this.doDateXML(data);
+ break;
+ case "array":
+ xml = this.doArrayXML(data);
+ break;
+ case "struct":
+ xml = this.doStructXML(data);
+ break;
+ case "boolean":
+ xml = this.doBooleanXML(data);
+ break;
+ default:
+ xml = this.doValueXML(type, data);
+ break;
+ }
+ return xml;
+};
diff --git a/package.json b/package.json
index 514f760..679e656 100644
--- a/package.json
+++ b/package.json
@@ -1,14 +1,18 @@
{
- "description": "Tweaks bugzilla.mozilla.org with all the goodness that _should_ come out of the box",
- "license": "MPL",
- "author": "Ehsan Akhgari (http://ehsanakhgari.org/) <ehsan@mozilla.com>",
+ "id": "jid0-uXmbeWgOltUUuqrHKhrR7hW3IQY",
+ "dependencies": [
+ "api-utils", "addon-kit"
+ ],
+ "fullName": "bugzilla-triage-scripts",
+ "description": "Additional buttons and other function helping in the triage on bugzilla",
+ "author": "Matej Cepl (http://matej.ceplovi.cz)",
+ "license": "MIT/X11 (http://opensource.org/licenses/mit-license.php) and MPL",
+ "version": "0.92"
"contributors": [
+ "Ehsan Akhgari (http://ehsanakhgari.org/) <ehsan@mozilla.com>",
"Johnathan Nightingale (http://johnath.com) <johnath@mozilla.com>",
"Heather Arthur (http://harthur.wordpress.com/) <harthur@mozilla.com>",
"Steve Fink (http://blog.mozilla.com/sfink/) <sfink@mozilla.com>"
],
- "url": "http://ehsanakhgari.org/mozilla/extensions/firefox/bugzilla-tweaks",
- "version": "1.8",
- "fullName": "Bugzilla Tweaks",
- "id": "jid0-qBnIpLfDFa4LpdrjhAC6vBqN20Q"
+ "url": "https://fedorahosted.org/bugzilla-triage-scripts/",
}
diff --git a/tests/pagemod-test-helpers.js b/tests/pagemod-test-helpers.js
new file mode 100644
index 0000000..8621421
--- /dev/null
+++ b/tests/pagemod-test-helpers.js
@@ -0,0 +1,56 @@
+"use strict";
+
+const {Cc,Ci} = require("chrome");
+
+/**
+ * A helper function that creates a PageMod, then opens the specified URL
+ * and checks the effect of the page mod on 'onload' event via testCallback.
+ */
+exports.testPageMod = function testPageMod(test, testURL, pageModOptions,
+ testCallback, timeout) {
+ var xulApp = require("xul-app");
+ if (!xulApp.versionInRange(xulApp.platformVersion, "1.9.3a3", "*") &&
+ !xulApp.versionInRange(xulApp.platformVersion, "1.9.2.7", "1.9.2.*")) {
+ test.pass("Note: not testing PageMod, as it doesn't work on this platform version");
+ return null;
+ }
+
+ var wm = Cc['@mozilla.org/appshell/window-mediator;1']
+ .getService(Ci.nsIWindowMediator);
+ var browserWindow = wm.getMostRecentWindow("navigator:browser");
+ if (!browserWindow) {
+ test.pass("page-mod tests: could not find the browser window, so " +
+ "will not run. Use -a firefox to run the pagemod tests.")
+ return null;
+ }
+
+ if (timeout !== undefined) {
+ test.waitUntilDone(timeout);
+ }
+ else {
+ test.waitUntilDone();
+ }
+
+ let loader = test.makeSandboxedLoader();
+ let pageMod = loader.require("page-mod");
+
+ var pageMods = [new pageMod.PageMod(opts) for each(opts in pageModOptions)];
+
+ var tabBrowser = browserWindow.gBrowser;
+ var newTab = tabBrowser.addTab(testURL);
+ tabBrowser.selectedTab = newTab;
+ var b = tabBrowser.getBrowserForTab(newTab);
+
+ function onPageLoad() {
+ b.removeEventListener("load", onPageLoad, true);
+ testCallback(b.contentWindow.wrappedJSObject, function done() {
+ pageMods.forEach(function(mod) mod.destroy());
+ // XXX leaks reported if we don't close the tab?
+ tabBrowser.removeTab(newTab);
+ test.done();
+ });
+ }
+ b.addEventListener("load", onPageLoad, true);
+
+ return pageMods;
+}
diff --git a/tests/test-color.js b/tests/test-color.js
new file mode 100644
index 0000000..eefb97d
--- /dev/null
+++ b/tests/test-color.js
@@ -0,0 +1,31 @@
+/*global exports: false, require: false */
+// TODO: add some failing tests as well
+"use strict";
+//var util = require("color");
+
+// testing Color object
+var ensureColorNew = function (test) {
+ var col = new util.Color(255, 255, 166);
+ test.assertEqual(col.toString(), "#ffffa6",
+ "creation of new RGB Color object");
+};
+
+var ensureColorUpdate = function (test) {
+ var col = new util.Color(255, 255, 166);
+ col.update(255, 224, 176);
+ test.assertEqual(col.toString(), "#ffe0b0",
+ "updating Color object");
+};
+
+var ensureColorHSL = function (test) {
+ var col = new util.Color(255, 224, 176);
+ test.assertEqual(col.hsl().toSource(),
+ "[0.10126582278481013, 1, 0.8450980392156863]",
+ "converting to HSL model");
+};
+
+var ensureColorLight = function (test) {
+ var col = new util.Color(255, 224, 176);
+ test.assertEqual(col.lightColor().toString(), "#e8dcc9",
+ "getting a light color");
+};
diff --git a/tests/test-match-pattern.js b/tests/test-match-pattern.js
new file mode 100644
index 0000000..9e3d2bd
--- /dev/null
+++ b/tests/test-match-pattern.js
@@ -0,0 +1,11 @@
+var { MatchPattern } = require("match-pattern");
+
+exports.ensureMatchPattern = function (test) {
+ var pattern = new MatchPattern("https://bugzilla.redhat.com/attachment.cgi");
+ console.log("pattern = " + pattern);
+ test.assert(pattern.
+ test("https://bugzilla.redhat.com/attachment.cgi"), "testing match pattern");
+ test.assert(!pattern.
+ test("https://bugzilla.redhat.com/attachment.cgi?bugid=676538&action=enter"),
+ "testing failing match pattern");
+};
diff --git a/tests/test-pageMod.js b/tests/test-pageMod.js
new file mode 100644
index 0000000..5434bbd
--- /dev/null
+++ b/tests/test-pageMod.js
@@ -0,0 +1,141 @@
+/*jslint white: false, eqeqeq: false, plusplus: false, onevar: false, newcap: false */
+/*global exports: false, require: false, console: false, log: false */
+"use strict";
+var Cc = require("chrome").Cc;
+var Ci = require("chrome").Ci;
+var main = require("main");
+var utilMod = require("util");
+var testPageMod = require("pagemod-test-helpers").testPageMod;
+var self = require("self");
+
+var theURL = main.theURL;
+var testURL = self.data.url('tests/change-more-bugs01.html');
+var JSONifiedMessage = '{"cmd":"testMessage","data":{"a":"first","b":"second"}}';
+
+exports.ensureMessagesWork = function(test) {
+ var msg = new utilMod.Message("testMessage", { a: "first", b: "second" } );
+ test.assertEqual(msg.cmd, "testMessage",
+ "msg.cmd comes over well");
+ test.assertEqual(msg.data.a, "first",
+ "msg.data.a comes over well");
+ test.assertEqual(msg.data.b, "second",
+ "msg.data.b comes over well");
+ test.assertEqual(JSON.stringify(msg), JSONifiedMessage,
+ "JSONification of Message works as well");
+};
+
+/*
+
+var theURL = main.theURL;
+var testURL = self.data.url('tests/change-more-bugs01.html');
+
+var contentScriptLibraries = {
+ "bugzilla.redhat.com": [
+ self.data.url("util.js"),
+ self.data.url("color.js"),
+ self.data.url("rhbzpage.js"),
+ self.data.url("bzpage.js")
+ ]
+};
+
+libbz.initialize(libbz.config, function () {
+ pageMod.PageMod({
+ include: [
+ "https://bugzilla.redhat.com/show_bug.cgi?id=*"
+ ],
+ contentScriptWhen: 'ready',
+ contentScriptFile: contentScriptLibraries["bugzilla.redhat.com"],
+ onAttach: function onAttach(worker, msg) {
+ console.log("worker: " + worker);
+ worker.on('message', function (msg) {
+ messageHandler(worker, msg);
+ });
+ }
+ });
+});
+
+pageMod.PageMod({
+ include: [
+ "https://bugzilla.redhat.com/process_bug.cgi"
+ ],
+ contentScriptWhen: 'ready',
+ contentScriptFile: self.data.url("skip-bug.js")
+});
+ */
+
+var ensureSimplePageLoad = function (test) {
+ console.log("testURL = " + testURL);
+ testPageMod(test, testURL, [{
+ include: ["*"],
+ contentScriptWhen: 'ready',
+ contentScriptFile: [
+ self.data.url("libPW.js"),
+ self.data.url("simplePageWorker.js")
+ ],
+ onAttach: function onAttach(worker) {
+ worker.on('message', function (msg) {
+ switch (msg.cmd) {
+ case "LogMessage":
+ log(msg.data);
+ break;
+ case "CallBack":
+ worker.postMessage(new utilMod.Message("Main", null));
+ break;
+ default:
+ console.error(msg);
+ }
+ });
+ }
+ }],
+ function (win, done) {
+ test.assertNotEqual(win.document.getElementsByTagName("form")[0],
+ null, "test of loading the page");
+ done();
+ });
+};
+
+var ensurePageLoadsWell = function (test) {
+ var wm = Cc['@mozilla.org/appshell/window-mediator;1']
+ .getService(Ci.nsIWindowMediator);
+ var browserWindow = wm.getMostRecentWindow("navigator:browser");
+ if (!browserWindow) {
+ test.fail("page-mod tests: could not find the browser window, so " +
+ "will not run. Use -a firefox to run the pagemod tests.");
+ return null;
+ }
+
+ var loader = test.makeSandboxedLoader();
+ var pageMod = loader.require("page-mod");
+ var testDoc = {}, b = {}, tabBrowser = {}, newTab = {};
+
+ pageMod.PageMod({
+ include: ["*"],
+ contentScriptWhen: 'ready',
+ contentScriptFile: [
+ self.data.url("libPW.js"),
+ self.data.url("pageWorker.js")
+ ],
+ onAttach: function onAttach(worker) {
+ worker.on('message', function (msg) {
+ switch (msg.cmd) {
+ case "testReady":
+ testDoc = b.contentWindow.wrappedJSObject.document;
+ test.assertNotEqual(testDoc.getElementById("dupeid_action"),
+ null, "test of DOM modifications of the page");
+ pageMod.destroy();
+ tabBrowser.removeTab(newTab);
+ test.done();
+ // the test itself
+ break;
+ default:
+ main.messageHandler(worker, msg);
+ }
+ });
+ }
+ });
+
+ tabBrowser = browserWindow.gBrowser;
+ newTab = tabBrowser.addTab(testURL);
+ tabBrowser.selectedTab = newTab;
+ b = tabBrowser.getBrowserForTab(newTab);
+};
diff --git a/tests/test-util.js b/tests/test-util.js
new file mode 100644
index 0000000..26c5f6d
--- /dev/null
+++ b/tests/test-util.js
@@ -0,0 +1,214 @@
+/*global exports: false, require: false */
+/*jslint plusplus: false */
+// TODO: add some failing tests as well
+"use strict";
+var util = require("util");
+var urlMod = require("url");
+
+// testing util.heir
+var ensureHeir = function (test) {
+ var fedlimid = {}, naoise = {};
+
+ function Father(x) {
+ this.family = x;
+ }
+
+ Father.prototype.getFamily = function getFamily() {
+ return this.family;
+ };
+
+ function Son(x, w) {
+ Father.call(this, x);
+ this.wife = w;
+ }
+
+ Son.prototype = util.heir(Father);
+ Son.prototype.constructor = Son;
+
+ Son.prototype.getWife = function getWife() {
+ return this.wife;
+ };
+
+ Son.prototype.getFamily = function getFamily() {
+ var upFamily =
+ Father.prototype.getFamily.call(this);
+ return upFamily + ", " + this.wife;
+ };
+
+ // for curious and non-Celtic
+ // http://en.wikipedia.org/wiki/Deirdre :)
+ fedlimid = new Father("mac Daill");
+ naoise = new Son("Usnech", "Deirdre");
+
+ test.assertEqual(fedlimid.getFamily(), "mac Daill",
+ "checking creation of new simple object");
+
+ test.assertEqual(naoise.getWife(), "Deirdre",
+ "checking creation of new daughter object");
+
+ test.assertEqual(naoise.getFamily(), "Usnech, Deirdre",
+ "checking creation of new overloaded method");
+};
+
+// testing util.isInList
+var ensureIsInListTrue = function (test) {
+ test.assert(util.isInList("a", ["a"]),
+ "conversion of a string to an array");
+};
+
+var ensureIsInListFalse = function (test) {
+ test.assert(!util.isInList("b", ["a"]),
+ "conversion of a string to an array");
+};
+
+var ensureIsInListEmpty = function (test) {
+ test.assert(!util.isInList("b", []),
+ "conversion of a string to an array");
+};
+
+var ensureIsInListNoMember = function (test) {
+ test.assert(!util.isInList("", ["x"]),
+ "conversion of a string to an array");
+};
+
+// testing util.filterByRegexp
+var ensureFilterByRegexp = function (test) {
+ var list = [
+ {
+ "regexp": "test(ing|ed)",
+ "addr": "correct"
+ },
+ {
+ "regexp": "ba.*d",
+ "addr": true
+ }
+ ];
+
+ test.assertEqual(util.filterByRegexp(list, "testing"), "correct",
+ "simple testing of filterByRegexp");
+ test.assertEqual(util.filterByRegexp(list, "unknown value"), "",
+ "simple testing of filterByRegexp with non-found address");
+ test.assert(util.filterByRegexp(list, "baaad"),
+ "simple testing of filterByRegexp with non-string return value");
+};
+
+var ensureFilterByRegexpEmpty = function (test) {
+ test.assertRaises(function () {
+ util.filterByRegexp(undefined, "tralala");
+ },
+ "list is undefined",
+ "filterByRegexp throws an exception with empty list");
+};
+
+// testing util.getISODate
+var ensureGetISODate = function (test) {
+ test.assertEqual(util.getISODate("Mon May 31 2010 23:29:09 GMT+0200 (CET)"),
+ "2010-05-31", "conversion of a Date to ISO-formatted String");
+};
+
+// testing util.valToArray
+var ensureValToArrayString = function (test) {
+ test.assertEqual(JSON.stringify(util.valToArray("a")),
+ JSON.stringify(["a"]),
+ "conversion of a string to an array");
+};
+
+var ensureValToArrayEmpty = function (test) {
+ test.assertEqual(JSON.stringify(util.valToArray("")),
+ JSON.stringify([""]),
+ "conversion of an empty string to an array");
+};
+
+var ensureValToArrayArray = function (test) {
+ test.assertEqual(JSON.stringify(util.valToArray(["a"])),
+ JSON.stringify(["a"]),
+ "non-conversion of an array");
+};
+
+// testing util.addCSVValue
+var ensureCSVAddedToNull = function (test) {
+ test.assertEqual(util.addCSVValue("", "b"), "b",
+ "adding a string to empty string");
+};
+
+var ensureCSVAddedNull = function (test) {
+ test.assertEqual(util.addCSVValue("a", ""), "a",
+ "adding nothing to a string");
+};
+
+var ensureCSVAddedString = function (test) {
+ test.assertEqual(util.addCSVValue("a", "b"), "a, b",
+ "adding one string to another one");
+};
+
+var ensureCSVAddedArray = function (test) {
+ test.assertEqual(util.addCSVValue("a", ["b", "c"]), "a, b, c",
+ "adding array to a string");
+};
+
+var ensureCSVAddedArray2Array = function (test) {
+ test.assertEqual(util.addCSVValue("a, b", ["c", "d"]), "a, b, c, d",
+ "adding one array to another");
+};
+
+// testing util.removeCSVValue
+var ensureCSVRemoveSimple = function (test) {
+ test.assertEqual(util.removeCSVValue("a, b", "b"), "a",
+ "removing one string from an array");
+
+};
+
+// also checking a tolerancy against different ways of writing arrays
+var ensureCSVRemoveNonMember = function (test) {
+ test.assertEqual(util.removeCSVValue("a,b", "c"), "a, b",
+ "removing a string from an array of which it isn't a member");
+
+};
+
+var ensureCSVRemoveEmpty = function (test) {
+ test.assertEqual(util.removeCSVValue("", "c"), "",
+ "removing a string from an empty array");
+
+};
+
+// testing util.getObjectKeys
+var ensureGetObjectKeys = function (test) {
+ var testObj = {
+ a: 1,
+ b: 2
+ };
+ test.assertEqual(JSON.stringify(util.getObjectKeys(testObj)),
+ JSON.stringify(["a", "b"]),
+ "getting keys from a object");
+};
+
+// testing util.getParamsFromURL
+var ensureGetParamsFromURL = function (test) {
+ test.assertEqual(JSON.stringify(util.getParamsFromURL("https://bugzilla.redhat.com/show_bug.cgi?id=549066")),
+ JSON.stringify({id:"549066"}),
+ "simply compare result of bugzilla show_page URL");
+ var complexURL = new urlMod.URL("http://www.google.com/search?ie=UTF-8&oe=UTF-8&sourceid=navclient"+
+ "&gfns=1&q=gg+javascript+url+parse");
+ test.assertEqual(JSON.stringify(util.getParamsFromURL(complexURL)),
+ JSON.stringify({
+ "ie":"UTF-8",
+ "oe":"UTF-8",
+ "sourceid":"navclient",
+ "gfns":"1",
+ "q":"gg+javascript+url+parse"
+ }),
+ "simply compare result of bugzilla show_page URL");
+ test.assertEqual(JSON.stringify(util.getParamsFromURL("https://bugzilla.redhat.com/")),
+ JSON.stringify({}),
+ "URL without any parameters");
+ test.assertRaises(function () {util.getParamsFromURL("");},
+ "Missing URL value!", "No URL");
+};
+
+// testing util.getBugNo
+var ensureGetBugNo = function (test) {
+ var bugNo = util.getBugNo("https://bugzilla.redhat.com/show_bug.cgi?id=597141");
+ test.assertEqual(bugNo, 597141, "getting bug number");
+ bugNo = util.getBugNo("https://bugzilla.redhat.com/show_bug.cgi?id=serialWacom");
+ test.assertEqual(bugNo, "serialWacom", "getting a bug alias; there is no guarantee of getting number!");
+};
diff --git a/tests/test-xmlrpc.js b/tests/test-xmlrpc.js
new file mode 100644
index 0000000..677a581
--- /dev/null
+++ b/tests/test-xmlrpc.js
@@ -0,0 +1,32 @@
+/*global exports: false, require: false */
+/*jslint plusplus: false */
+"use strict";
+var xrpc = require("xmlrpc");
+var xmlOut = "<?xml version=\"1.0\"?>\n" +
+ "<methodCall>\n<methodName>bugzilla.updateAttachMimeType</methodName>\n" +
+ "<params>\n<param>\n<value><struct>\n<member>\n<name>attach_id</name>\n" +
+ "<value><string>myId</string></value>\n</member>\n<member>\n" +
+ "<name>mime_type</name>\n<value><string>text/plain</string></value>\n</member>\n" +
+ "<member>\n<name>nomail</name>\n<value><string>billg@microsoft.com</string>" +
+ "</value>\n</member>\n</struct>\n</value>\n</param>\n<param>\n" +
+ "<value><string>me@example.com</string></value>\n</param>\n" +
+ "<param>\n<value><string>secret</string></value>\n</param>\n" +
+ "<param>\n<value><double>3.14</double></value>\n</param>\n" +
+ "<param>\n<value><boolean>1</boolean></value>\n</param>\n" +
+ "</params>\n</methodCall>";
+
+// testing xrpc.XMLRPCMessage
+exports.ensureGenerateXMLRPC = function (test) {
+ var msg = new xrpc.XMLRPCMessage("bugzilla.updateAttachMimeType");
+ msg.addParameter({
+ 'attach_id' : "myId",
+ 'mime_type' : "text/plain",
+ 'nomail' : "billg@microsoft.com"
+ });
+ msg.addParameter("me@example.com");
+ msg.addParameter("secret");
+ msg.addParameter(3.14);
+ msg.addParameter(true);
+ test.assertEqual(msg.xml(), xmlOut,
+ "generate XML-RPC message");
+};
diff --git a/update.rdf b/update.rdf
new file mode 100644
index 0000000..7d672a9
--- /dev/null
+++ b/update.rdf
@@ -0,0 +1,295 @@
+<?xml version="1.0"?>
+<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:em="http://www.mozilla.org/2004/em-rdf#">
+ <!-- Foo Widget Extension -->
+ <RDF:Description about="urn:mozilla:extension:jid0-uXmbeWgOltUUuqrHKhrR7hW3IQY@jetpack">
+ <em:updates>
+ <RDF:Seq>
+ <RDF:li>
+ <RDF:Description>
+ <em:version>0.15</em:version> <!-- This is the version number of the add-on -->
+ <!-- One targetApplication for each application the add-on is compatible with -->
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
+ <em:minVersion>3.6</em:minVersion>
+ <em:maxVersion>4.*</em:maxVersion>
+ <!-- This is where this version of the add-on will be downloaded from -->
+ <em:updateLink>https://fedorahosted.org/released/bugzilla-triage-scripts/bugzilla-triage-0.15.xpi</em:updateLink>
+
+ <!-- A page describing what is new in this updated version -->
+ <em:updateInfoURL>https://fedorahosted.org/bugzilla-triage-scripts/wiki/ChangeLog</em:updateInfoURL>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ <RDF:li>
+ <RDF:Description>
+ <em:version>0.16</em:version> <!-- This is the version number of the add-on -->
+ <!-- One targetApplication for each application the add-on is compatible with -->
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
+ <em:minVersion>3.6</em:minVersion>
+ <em:maxVersion>4.*</em:maxVersion>
+ <!-- This is where this version of the add-on will be downloaded from -->
+ <em:updateLink>https://fedorahosted.org/released/bugzilla-triage-scripts/bugzilla-triage-0.16.xpi</em:updateLink>
+
+ <!-- A page describing what is new in this updated version -->
+ <em:updateInfoURL>https://fedorahosted.org/bugzilla-triage-scripts/wiki/ChangeLog</em:updateInfoURL>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ <RDF:li>
+ <RDF:Description>
+ <em:version>0.17</em:version> <!-- This is the version number of the add-on -->
+ <!-- One targetApplication for each application the add-on is compatible with -->
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
+ <em:minVersion>3.6</em:minVersion>
+ <em:maxVersion>4.*</em:maxVersion>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ <RDF:li>
+ <RDF:Description>
+ <em:version>0.18</em:version> <!-- This is the version number of the add-on -->
+ <!-- One targetApplication for each application the add-on is compatible with -->
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
+ <em:minVersion>3.6</em:minVersion>
+ <em:maxVersion>4.*</em:maxVersion>
+ <!-- This is where this version of the add-on will be downloaded from -->
+ <em:updateLink>https://fedorahosted.org/released/bugzilla-triage-scripts/bugzilla-triage-0.18.xpi</em:updateLink>
+
+ <!-- A page describing what is new in this updated version -->
+ <em:updateInfoURL>https://fedorahosted.org/bugzilla-triage-scripts/wiki/ChangeLog</em:updateInfoURL>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ <RDF:li>
+ <RDF:Description>
+ <em:version>0.19</em:version> <!-- This is the version number of the add-on -->
+ <!-- One targetApplication for each application the add-on is compatible with -->
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
+ <em:minVersion>3.6</em:minVersion>
+ <em:maxVersion>4.*</em:maxVersion>
+ <!-- This is where this version of the add-on will be downloaded from -->
+ <em:updateLink>https://fedorahosted.org/released/bugzilla-triage-scripts/bugzilla-triage-0.19.xpi</em:updateLink>
+
+ <!-- A page describing what is new in this updated version -->
+ <em:updateInfoURL>https://fedorahosted.org/bugzilla-triage-scripts/wiki/ChangeLog</em:updateInfoURL>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ <RDF:li>
+ <RDF:Description>
+ <em:version>0.20</em:version> <!-- This is the version number of the add-on -->
+ <!-- One targetApplication for each application the add-on is compatible with -->
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
+ <em:minVersion>3.6</em:minVersion>
+ <em:maxVersion>4.*</em:maxVersion>
+ <!-- This is where this version of the add-on will be downloaded from -->
+ <em:updateLink>https://fedorahosted.org/released/bugzilla-triage-scripts/bugzilla-triage-0.20.xpi</em:updateLink>
+
+ <!-- A page describing what is new in this updated version -->
+ <em:updateInfoURL>https://fedorahosted.org/bugzilla-triage-scripts/wiki/ChangeLog</em:updateInfoURL>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ <RDF:li>
+ <RDF:Description>
+ <em:version>0.21</em:version> <!-- This is the version number of the add-on -->
+ <!-- One targetApplication for each application the add-on is compatible with -->
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
+ <em:minVersion>3.6</em:minVersion>
+ <em:maxVersion>4.*</em:maxVersion>
+ <!-- This is where this version of the add-on will be downloaded from -->
+ <em:updateLink>https://fedorahosted.org/released/bugzilla-triage-scripts/bugzilla-triage-0.21.xpi</em:updateLink>
+
+ <!-- A page describing what is new in this updated version -->
+ <em:updateInfoURL>https://fedorahosted.org/bugzilla-triage-scripts/wiki/ChangeLog</em:updateInfoURL>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ <RDF:li>
+ <RDF:Description>
+ <em:version>0.22</em:version> <!-- This is the version number of the add-on -->
+ <!-- One targetApplication for each application the add-on is compatible with -->
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
+ <em:minVersion>3.6</em:minVersion>
+ <em:maxVersion>4.*</em:maxVersion>
+ <!-- This is where this version of the add-on will be downloaded from -->
+ <em:updateLink>https://fedorahosted.org/released/bugzilla-triage-scripts/bugzilla-triage-0.22.xpi</em:updateLink>
+
+ <!-- A page describing what is new in this updated version -->
+ <em:updateInfoURL>https://fedorahosted.org/bugzilla-triage-scripts/wiki/ChangeLog</em:updateInfoURL>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ <RDF:li>
+ <RDF:Description>
+ <em:version>0.23</em:version> <!-- This is the version number of the add-on -->
+ <!-- One targetApplication for each application the add-on is compatible with -->
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
+ <em:minVersion>3.6</em:minVersion>
+ <em:maxVersion>4.*</em:maxVersion>
+ <!-- This is where this version of the add-on will be downloaded from -->
+ <em:updateLink>https://fedorahosted.org/released/bugzilla-triage-scripts/bugzilla-triage-0.23.xpi</em:updateLink>
+
+ <!-- A page describing what is new in this updated version -->
+ <em:updateInfoURL>https://fedorahosted.org/bugzilla-triage-scripts/wiki/ChangeLog</em:updateInfoURL>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ <RDF:li>
+ <RDF:Description>
+ <em:version>0.24</em:version> <!-- This is the version number of the add-on -->
+ <!-- One targetApplication for each application the add-on is compatible with -->
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
+ <em:minVersion>3.6</em:minVersion>
+ <em:maxVersion>4.*</em:maxVersion>
+ <!-- This is where this version of the add-on will be downloaded from -->
+ <em:updateLink>https://fedorahosted.org/released/bugzilla-triage-scripts/bugzilla-triage-0.24.xpi</em:updateLink>
+
+ <!-- A page describing what is new in this updated version -->
+ <em:updateInfoURL>https://fedorahosted.org/bugzilla-triage-scripts/wiki/ChangeLog</em:updateInfoURL>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ <RDF:li>
+ <RDF:Description>
+ <em:version>0.25</em:version> <!-- This is the version number of the add-on -->
+ <!-- One targetApplication for each application the add-on is compatible with -->
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
+ <em:minVersion>3.6</em:minVersion>
+ <em:maxVersion>4.*</em:maxVersion>
+ <!-- This is where this version of the add-on will be downloaded from -->
+ <em:updateLink>https://fedorahosted.org/released/bugzilla-triage-scripts/bugzilla-triage-0.25.xpi</em:updateLink>
+
+ <!-- A page describing what is new in this updated version -->
+ <em:updateInfoURL>https://fedorahosted.org/bugzilla-triage-scripts/wiki/ChangeLog</em:updateInfoURL>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ <RDF:li>
+ <RDF:Description>
+ <em:version>0.26</em:version> <!-- This is the version number of the add-on -->
+ <!-- One targetApplication for each application the add-on is compatible with -->
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
+ <em:minVersion>3.6</em:minVersion>
+ <em:maxVersion>4.*</em:maxVersion>
+ <!-- This is where this version of the add-on will be downloaded from -->
+ <em:updateLink>https://fedorahosted.org/released/bugzilla-triage-scripts/bugzilla-triage-0.26.xpi</em:updateLink>
+
+ <!-- A page describing what is new in this updated version -->
+ <em:updateInfoURL>https://fedorahosted.org/bugzilla-triage-scripts/wiki/ChangeLog</em:updateInfoURL>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ <RDF:li>
+ <RDF:Description>
+ <em:version>0.27</em:version> <!-- This is the version number of the add-on -->
+ <!-- One targetApplication for each application the add-on is compatible with -->
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
+ <em:minVersion>3.6</em:minVersion>
+ <em:maxVersion>4.*</em:maxVersion>
+ <!-- This is where this version of the add-on will be downloaded from -->
+ <em:updateLink>https://fedorahosted.org/released/bugzilla-triage-scripts/bugzilla-triage-0.27.xpi</em:updateLink>
+
+ <!-- A page describing what is new in this updated version -->
+ <em:updateInfoURL>https://fedorahosted.org/bugzilla-triage-scripts/wiki/ChangeLog</em:updateInfoURL>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ <RDF:li>
+ <RDF:Description>
+ <em:version>0.90</em:version> <!-- This is the version number of the add-on -->
+ <!-- One targetApplication for each application the add-on is compatible with -->
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
+ <em:minVersion>4.*</em:minVersion>
+ <em:maxVersion>4.1</em:maxVersion>
+ <!-- This is where this version of the add-on will be downloaded from -->
+ <em:updateLink>https://fedorahosted.org/released/bugzilla-triage-scripts/bugzilla-triage-0.90.xpi</em:updateLink>
+
+ <!-- A page describing what is new in this updated version -->
+ <em:updateInfoURL>https://fedorahosted.org/bugzilla-triage-scripts/wiki/ChangeLog</em:updateInfoURL>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ <RDF:li>
+ <RDF:Description>
+ <em:version>0.91</em:version> <!-- This is the version number of the add-on -->
+ <!-- One targetApplication for each application the add-on is compatible with -->
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
+ <em:minVersion>4.*</em:minVersion>
+ <em:maxVersion>4.1</em:maxVersion>
+ <!-- This is where this version of the add-on will be downloaded from -->
+ <em:updateLink>https://fedorahosted.org/released/bugzilla-triage-scripts/bugzilla-triage-0.91.xpi</em:updateLink>
+
+ <!-- A page describing what is new in this updated version -->
+ <em:updateInfoURL>https://fedorahosted.org/bugzilla-triage-scripts/wiki/ChangeLog</em:updateInfoURL>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ <RDF:li>
+ <RDF:Description>
+ <em:version>0.92</em:version> <!-- This is the version number of the add-on -->
+ <!-- One targetApplication for each application the add-on is compatible with -->
+ <em:targetApplication>
+ <RDF:Description>
+ <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
+ <em:minVersion>4.*</em:minVersion>
+ <em:maxVersion>4.1</em:maxVersion>
+ <!-- This is where this version of the add-on will be downloaded from -->
+ <em:updateLink>https://fedorahosted.org/released/bugzilla-triage-scripts/bugzilla-triage-0.92.xpi</em:updateLink>
+
+ <!-- A page describing what is new in this updated version -->
+ <em:updateInfoURL>https://fedorahosted.org/bugzilla-triage-scripts/wiki/ChangeLog</em:updateInfoURL>
+ </RDF:Description>
+ </em:targetApplication>
+ </RDF:Description>
+ </RDF:li>
+ </RDF:Seq>
+ </em:updates>
+ </RDF:Description>
+
+</RDF:RDF>