diff options
Diffstat (limited to 'examples/tg16')
843 files changed, 60191 insertions, 0 deletions
diff --git a/examples/tg16/dhcp/conf-v4/ap-creativia.conf b/examples/tg16/dhcp/conf-v4/ap-creativia.conf new file mode 100644 index 0000000..a2c1d89 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/ap-creativia.conf @@ -0,0 +1,12 @@ +zone ap-creativia.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.53.64 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.53.65; +	option domain-name "ap-creativia.tg16.gathering.org"; +	ddns-domainname "ap-creativia.tg16.gathering.org"; +	range 88.92.53.68 88.92.53.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/ap-distro0.conf b/examples/tg16/dhcp/conf-v4/ap-distro0.conf new file mode 100644 index 0000000..43d05f2 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/ap-distro0.conf @@ -0,0 +1,12 @@ +zone ap-distro0.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.51.0 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.51.1; +	option domain-name "ap-distro0.tg16.gathering.org"; +	ddns-domainname "ap-distro0.tg16.gathering.org"; +	range 88.92.51.4 88.92.51.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/ap-distro1.conf b/examples/tg16/dhcp/conf-v4/ap-distro1.conf new file mode 100644 index 0000000..a37655f --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/ap-distro1.conf @@ -0,0 +1,12 @@ +zone ap-distro1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.51.64 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.51.65; +	option domain-name "ap-distro1.tg16.gathering.org"; +	ddns-domainname "ap-distro1.tg16.gathering.org"; +	range 88.92.51.68 88.92.51.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/ap-distro2.conf b/examples/tg16/dhcp/conf-v4/ap-distro2.conf new file mode 100644 index 0000000..1486220 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/ap-distro2.conf @@ -0,0 +1,12 @@ +zone ap-distro2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.51.128 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.51.129; +	option domain-name "ap-distro2.tg16.gathering.org"; +	ddns-domainname "ap-distro2.tg16.gathering.org"; +	range 88.92.51.132 88.92.51.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/ap-distro3.conf b/examples/tg16/dhcp/conf-v4/ap-distro3.conf new file mode 100644 index 0000000..e5adf0f --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/ap-distro3.conf @@ -0,0 +1,12 @@ +zone ap-distro3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.51.192 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.51.193; +	option domain-name "ap-distro3.tg16.gathering.org"; +	ddns-domainname "ap-distro3.tg16.gathering.org"; +	range 88.92.51.196 88.92.51.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/ap-distro4.conf b/examples/tg16/dhcp/conf-v4/ap-distro4.conf new file mode 100644 index 0000000..6b4ace7 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/ap-distro4.conf @@ -0,0 +1,12 @@ +zone ap-distro4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.52.0 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.52.1; +	option domain-name "ap-distro4.tg16.gathering.org"; +	ddns-domainname "ap-distro4.tg16.gathering.org"; +	range 88.92.52.4 88.92.52.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/ap-distro5.conf b/examples/tg16/dhcp/conf-v4/ap-distro5.conf new file mode 100644 index 0000000..e90f2b7 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/ap-distro5.conf @@ -0,0 +1,12 @@ +zone ap-distro5.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.52.64 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.52.65; +	option domain-name "ap-distro5.tg16.gathering.org"; +	ddns-domainname "ap-distro5.tg16.gathering.org"; +	range 88.92.52.68 88.92.52.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/ap-distro6.conf b/examples/tg16/dhcp/conf-v4/ap-distro6.conf new file mode 100644 index 0000000..91272a7 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/ap-distro6.conf @@ -0,0 +1,12 @@ +zone ap-distro6.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.52.128 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.52.129; +	option domain-name "ap-distro6.tg16.gathering.org"; +	ddns-domainname "ap-distro6.tg16.gathering.org"; +	range 88.92.52.132 88.92.52.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/ap-distro7.conf b/examples/tg16/dhcp/conf-v4/ap-distro7.conf new file mode 100644 index 0000000..0fe1f4b --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/ap-distro7.conf @@ -0,0 +1,12 @@ +zone ap-distro7.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.52.192 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.52.193; +	option domain-name "ap-distro7.tg16.gathering.org"; +	ddns-domainname "ap-distro7.tg16.gathering.org"; +	range 88.92.52.196 88.92.52.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/ap-stand.conf b/examples/tg16/dhcp/conf-v4/ap-stand.conf new file mode 100644 index 0000000..3b50ffa --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/ap-stand.conf @@ -0,0 +1,12 @@ +zone ap-stand.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.53.0 netmask 255.255.255.248 { +	option subnet-mask 255.255.255.248; +	option routers 88.92.53.1; +	option domain-name "ap-stand.tg16.gathering.org"; +	ddns-domainname "ap-stand.tg16.gathering.org"; +	range 88.92.53.4 88.92.53.6; +} + diff --git a/examples/tg16/dhcp/conf-v4/auditorium.conf b/examples/tg16/dhcp/conf-v4/auditorium.conf new file mode 100644 index 0000000..6f19f51 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/auditorium.conf @@ -0,0 +1,12 @@ +zone auditorium.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.77.0 netmask 255.255.255.0 { +	option subnet-mask 255.255.255.0; +	option routers 88.92.77.1; +	option domain-name "auditorium.tg16.gathering.org"; +	ddns-domainname "auditorium.tg16.gathering.org"; +	range 88.92.77.4 88.92.77.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/creativia-village.conf b/examples/tg16/dhcp/conf-v4/creativia-village.conf new file mode 100644 index 0000000..677bdf0 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/creativia-village.conf @@ -0,0 +1,12 @@ +zone creativia-village.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.42.192 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.42.193; +	option domain-name "creativia-village.tg16.gathering.org"; +	ddns-domainname "creativia-village.tg16.gathering.org"; +	range 88.92.42.196 88.92.42.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/creativia.conf b/examples/tg16/dhcp/conf-v4/creativia.conf new file mode 100644 index 0000000..989c001 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/creativia.conf @@ -0,0 +1,12 @@ +zone creativia.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.61.0 netmask 255.255.255.0 { +	option subnet-mask 255.255.255.0; +	option routers 88.92.61.1; +	option domain-name "creativia.tg16.gathering.org"; +	ddns-domainname "creativia.tg16.gathering.org"; +	range 88.92.61.4 88.92.61.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/creativia1.conf b/examples/tg16/dhcp/conf-v4/creativia1.conf new file mode 100644 index 0000000..7e60f55 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/creativia1.conf @@ -0,0 +1,12 @@ +zone creativia1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.40.0 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.40.1; +	option domain-name "creativia1.tg16.gathering.org"; +	ddns-domainname "creativia1.tg16.gathering.org"; +	range 88.92.40.4 88.92.40.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/creativia2.conf b/examples/tg16/dhcp/conf-v4/creativia2.conf new file mode 100644 index 0000000..67db666 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/creativia2.conf @@ -0,0 +1,12 @@ +zone creativia2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.40.64 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.40.65; +	option domain-name "creativia2.tg16.gathering.org"; +	ddns-domainname "creativia2.tg16.gathering.org"; +	range 88.92.40.68 88.92.40.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/creativia3.conf b/examples/tg16/dhcp/conf-v4/creativia3.conf new file mode 100644 index 0000000..adf56ae --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/creativia3.conf @@ -0,0 +1,12 @@ +zone creativia3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.40.128 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.40.129; +	option domain-name "creativia3.tg16.gathering.org"; +	ddns-domainname "creativia3.tg16.gathering.org"; +	range 88.92.40.132 88.92.40.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/creativia4.conf b/examples/tg16/dhcp/conf-v4/creativia4.conf new file mode 100644 index 0000000..533fbe6 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/creativia4.conf @@ -0,0 +1,12 @@ +zone creativia4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.40.192 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.40.193; +	option domain-name "creativia4.tg16.gathering.org"; +	ddns-domainname "creativia4.tg16.gathering.org"; +	range 88.92.40.196 88.92.40.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/creativia5.conf b/examples/tg16/dhcp/conf-v4/creativia5.conf new file mode 100644 index 0000000..9478c38 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/creativia5.conf @@ -0,0 +1,12 @@ +zone creativia5.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.41.0 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.41.1; +	option domain-name "creativia5.tg16.gathering.org"; +	ddns-domainname "creativia5.tg16.gathering.org"; +	range 88.92.41.4 88.92.41.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/creativia6.conf b/examples/tg16/dhcp/conf-v4/creativia6.conf new file mode 100644 index 0000000..9c6058a --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/creativia6.conf @@ -0,0 +1,12 @@ +zone creativia6.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.42.64 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.42.65; +	option domain-name "creativia6.tg16.gathering.org"; +	ddns-domainname "creativia6.tg16.gathering.org"; +	range 88.92.42.68 88.92.42.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/creativia7.conf b/examples/tg16/dhcp/conf-v4/creativia7.conf new file mode 100644 index 0000000..6579a5e --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/creativia7.conf @@ -0,0 +1,12 @@ +zone creativia7.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.42.128 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.42.129; +	option domain-name "creativia7.tg16.gathering.org"; +	ddns-domainname "creativia7.tg16.gathering.org"; +	range 88.92.42.132 88.92.42.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/creativiasw1.conf b/examples/tg16/dhcp/conf-v4/creativiasw1.conf new file mode 100644 index 0000000..477a05b --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/creativiasw1.conf @@ -0,0 +1,12 @@ +zone creativiasw1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.43.0 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.43.1; +	option domain-name "creativiasw1.tg16.gathering.org"; +	ddns-domainname "creativiasw1.tg16.gathering.org"; +	range 88.92.43.4 88.92.43.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/crew.conf b/examples/tg16/dhcp/conf-v4/crew.conf new file mode 100644 index 0000000..bffe219 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/crew.conf @@ -0,0 +1,12 @@ +zone crew.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.66.0 netmask 255.255.255.0 { +	option subnet-mask 255.255.255.0; +	option routers 88.92.66.1; +	option domain-name "crew.tg16.gathering.org"; +	ddns-domainname "crew.tg16.gathering.org"; +	range 88.92.66.4 88.92.66.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/deltaker-srv.conf b/examples/tg16/dhcp/conf-v4/deltaker-srv.conf new file mode 100644 index 0000000..d85de3d --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/deltaker-srv.conf @@ -0,0 +1,12 @@ +zone deltaker-srv.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.95.0 netmask 255.255.255.128 { +	option subnet-mask 255.255.255.128; +	option routers 88.92.95.1; +	option domain-name "deltaker-srv.tg16.gathering.org"; +	ddns-domainname "deltaker-srv.tg16.gathering.org"; +	range 88.92.95.4 88.92.95.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e1-3.conf b/examples/tg16/dhcp/conf-v4/e1-3.conf new file mode 100644 index 0000000..777a6bc --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e1-3.conf @@ -0,0 +1,12 @@ +zone e1-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.0.0 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.0.1; +	option domain-name "e1-3.tg16.gathering.org"; +	ddns-domainname "e1-3.tg16.gathering.org"; +	range 88.92.0.4 88.92.0.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e1-4.conf b/examples/tg16/dhcp/conf-v4/e1-4.conf new file mode 100644 index 0000000..76843d5 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e1-4.conf @@ -0,0 +1,12 @@ +zone e1-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.0.64 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.0.65; +	option domain-name "e1-4.tg16.gathering.org"; +	ddns-domainname "e1-4.tg16.gathering.org"; +	range 88.92.0.68 88.92.0.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e11-1.conf b/examples/tg16/dhcp/conf-v4/e11-1.conf new file mode 100644 index 0000000..9a0af27 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e11-1.conf @@ -0,0 +1,12 @@ +zone e11-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.3.192 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.3.193; +	option domain-name "e11-1.tg16.gathering.org"; +	ddns-domainname "e11-1.tg16.gathering.org"; +	range 88.92.3.196 88.92.3.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e11-2.conf b/examples/tg16/dhcp/conf-v4/e11-2.conf new file mode 100644 index 0000000..de986ca --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e11-2.conf @@ -0,0 +1,12 @@ +zone e11-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.4.0 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.4.1; +	option domain-name "e11-2.tg16.gathering.org"; +	ddns-domainname "e11-2.tg16.gathering.org"; +	range 88.92.4.4 88.92.4.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e11-3.conf b/examples/tg16/dhcp/conf-v4/e11-3.conf new file mode 100644 index 0000000..2603826 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e11-3.conf @@ -0,0 +1,12 @@ +zone e11-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.4.64 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.4.65; +	option domain-name "e11-3.tg16.gathering.org"; +	ddns-domainname "e11-3.tg16.gathering.org"; +	range 88.92.4.68 88.92.4.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e11-4.conf b/examples/tg16/dhcp/conf-v4/e11-4.conf new file mode 100644 index 0000000..c59de9a --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e11-4.conf @@ -0,0 +1,12 @@ +zone e11-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.4.128 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.4.129; +	option domain-name "e11-4.tg16.gathering.org"; +	ddns-domainname "e11-4.tg16.gathering.org"; +	range 88.92.4.132 88.92.4.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e13-1.conf b/examples/tg16/dhcp/conf-v4/e13-1.conf new file mode 100644 index 0000000..25daf48 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e13-1.conf @@ -0,0 +1,12 @@ +zone e13-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.4.192 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.4.193; +	option domain-name "e13-1.tg16.gathering.org"; +	ddns-domainname "e13-1.tg16.gathering.org"; +	range 88.92.4.196 88.92.4.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e13-2.conf b/examples/tg16/dhcp/conf-v4/e13-2.conf new file mode 100644 index 0000000..3b45fa5 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e13-2.conf @@ -0,0 +1,12 @@ +zone e13-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.5.0 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.5.1; +	option domain-name "e13-2.tg16.gathering.org"; +	ddns-domainname "e13-2.tg16.gathering.org"; +	range 88.92.5.4 88.92.5.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e13-3.conf b/examples/tg16/dhcp/conf-v4/e13-3.conf new file mode 100644 index 0000000..f6ac057 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e13-3.conf @@ -0,0 +1,12 @@ +zone e13-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.5.64 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.5.65; +	option domain-name "e13-3.tg16.gathering.org"; +	ddns-domainname "e13-3.tg16.gathering.org"; +	range 88.92.5.68 88.92.5.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e13-4.conf b/examples/tg16/dhcp/conf-v4/e13-4.conf new file mode 100644 index 0000000..0dc7b9e --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e13-4.conf @@ -0,0 +1,12 @@ +zone e13-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.5.128 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.5.129; +	option domain-name "e13-4.tg16.gathering.org"; +	ddns-domainname "e13-4.tg16.gathering.org"; +	range 88.92.5.132 88.92.5.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e15-1.conf b/examples/tg16/dhcp/conf-v4/e15-1.conf new file mode 100644 index 0000000..7abd822 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e15-1.conf @@ -0,0 +1,12 @@ +zone e15-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.5.192 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.5.193; +	option domain-name "e15-1.tg16.gathering.org"; +	ddns-domainname "e15-1.tg16.gathering.org"; +	range 88.92.5.196 88.92.5.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e15-2.conf b/examples/tg16/dhcp/conf-v4/e15-2.conf new file mode 100644 index 0000000..f5eb86a --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e15-2.conf @@ -0,0 +1,12 @@ +zone e15-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.6.0 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.6.1; +	option domain-name "e15-2.tg16.gathering.org"; +	ddns-domainname "e15-2.tg16.gathering.org"; +	range 88.92.6.4 88.92.6.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e15-3.conf b/examples/tg16/dhcp/conf-v4/e15-3.conf new file mode 100644 index 0000000..9d87c04 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e15-3.conf @@ -0,0 +1,12 @@ +zone e15-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.6.64 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.6.65; +	option domain-name "e15-3.tg16.gathering.org"; +	ddns-domainname "e15-3.tg16.gathering.org"; +	range 88.92.6.68 88.92.6.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e15-4.conf b/examples/tg16/dhcp/conf-v4/e15-4.conf new file mode 100644 index 0000000..5bb32f4 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e15-4.conf @@ -0,0 +1,12 @@ +zone e15-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.6.128 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.6.129; +	option domain-name "e15-4.tg16.gathering.org"; +	ddns-domainname "e15-4.tg16.gathering.org"; +	range 88.92.6.132 88.92.6.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e17-1.conf b/examples/tg16/dhcp/conf-v4/e17-1.conf new file mode 100644 index 0000000..7f953c2 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e17-1.conf @@ -0,0 +1,12 @@ +zone e17-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.6.192 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.6.193; +	option domain-name "e17-1.tg16.gathering.org"; +	ddns-domainname "e17-1.tg16.gathering.org"; +	range 88.92.6.196 88.92.6.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e17-2.conf b/examples/tg16/dhcp/conf-v4/e17-2.conf new file mode 100644 index 0000000..ddbf7fc --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e17-2.conf @@ -0,0 +1,12 @@ +zone e17-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.7.0 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.7.1; +	option domain-name "e17-2.tg16.gathering.org"; +	ddns-domainname "e17-2.tg16.gathering.org"; +	range 88.92.7.4 88.92.7.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e17-3.conf b/examples/tg16/dhcp/conf-v4/e17-3.conf new file mode 100644 index 0000000..c585769 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e17-3.conf @@ -0,0 +1,12 @@ +zone e17-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.7.64 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.7.65; +	option domain-name "e17-3.tg16.gathering.org"; +	ddns-domainname "e17-3.tg16.gathering.org"; +	range 88.92.7.68 88.92.7.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e17-4.conf b/examples/tg16/dhcp/conf-v4/e17-4.conf new file mode 100644 index 0000000..ff5f5e5 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e17-4.conf @@ -0,0 +1,12 @@ +zone e17-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.7.128 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.7.129; +	option domain-name "e17-4.tg16.gathering.org"; +	ddns-domainname "e17-4.tg16.gathering.org"; +	range 88.92.7.132 88.92.7.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e19-1.conf b/examples/tg16/dhcp/conf-v4/e19-1.conf new file mode 100644 index 0000000..b942f2a --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e19-1.conf @@ -0,0 +1,12 @@ +zone e19-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.7.192 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.7.193; +	option domain-name "e19-1.tg16.gathering.org"; +	ddns-domainname "e19-1.tg16.gathering.org"; +	range 88.92.7.196 88.92.7.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e19-2.conf b/examples/tg16/dhcp/conf-v4/e19-2.conf new file mode 100644 index 0000000..8c0114a --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e19-2.conf @@ -0,0 +1,12 @@ +zone e19-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.8.0 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.8.1; +	option domain-name "e19-2.tg16.gathering.org"; +	ddns-domainname "e19-2.tg16.gathering.org"; +	range 88.92.8.4 88.92.8.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e19-3.conf b/examples/tg16/dhcp/conf-v4/e19-3.conf new file mode 100644 index 0000000..f3bbb29 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e19-3.conf @@ -0,0 +1,12 @@ +zone e19-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.8.64 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.8.65; +	option domain-name "e19-3.tg16.gathering.org"; +	ddns-domainname "e19-3.tg16.gathering.org"; +	range 88.92.8.68 88.92.8.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e19-4.conf b/examples/tg16/dhcp/conf-v4/e19-4.conf new file mode 100644 index 0000000..b823468 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e19-4.conf @@ -0,0 +1,12 @@ +zone e19-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.8.128 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.8.129; +	option domain-name "e19-4.tg16.gathering.org"; +	ddns-domainname "e19-4.tg16.gathering.org"; +	range 88.92.8.132 88.92.8.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e21-1.conf b/examples/tg16/dhcp/conf-v4/e21-1.conf new file mode 100644 index 0000000..5cf065c --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e21-1.conf @@ -0,0 +1,12 @@ +zone e21-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.8.192 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.8.193; +	option domain-name "e21-1.tg16.gathering.org"; +	ddns-domainname "e21-1.tg16.gathering.org"; +	range 88.92.8.196 88.92.8.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e21-2.conf b/examples/tg16/dhcp/conf-v4/e21-2.conf new file mode 100644 index 0000000..d77259a --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e21-2.conf @@ -0,0 +1,12 @@ +zone e21-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.9.0 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.9.1; +	option domain-name "e21-2.tg16.gathering.org"; +	ddns-domainname "e21-2.tg16.gathering.org"; +	range 88.92.9.4 88.92.9.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e21-3.conf b/examples/tg16/dhcp/conf-v4/e21-3.conf new file mode 100644 index 0000000..4d3eea2 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e21-3.conf @@ -0,0 +1,12 @@ +zone e21-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.9.64 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.9.65; +	option domain-name "e21-3.tg16.gathering.org"; +	ddns-domainname "e21-3.tg16.gathering.org"; +	range 88.92.9.68 88.92.9.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e21-4.conf b/examples/tg16/dhcp/conf-v4/e21-4.conf new file mode 100644 index 0000000..fe688a1 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e21-4.conf @@ -0,0 +1,12 @@ +zone e21-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.9.128 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.9.129; +	option domain-name "e21-4.tg16.gathering.org"; +	ddns-domainname "e21-4.tg16.gathering.org"; +	range 88.92.9.132 88.92.9.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e23-1.conf b/examples/tg16/dhcp/conf-v4/e23-1.conf new file mode 100644 index 0000000..d605b05 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e23-1.conf @@ -0,0 +1,12 @@ +zone e23-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.9.192 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.9.193; +	option domain-name "e23-1.tg16.gathering.org"; +	ddns-domainname "e23-1.tg16.gathering.org"; +	range 88.92.9.196 88.92.9.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e23-2.conf b/examples/tg16/dhcp/conf-v4/e23-2.conf new file mode 100644 index 0000000..01e31b9 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e23-2.conf @@ -0,0 +1,12 @@ +zone e23-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.10.0 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.10.1; +	option domain-name "e23-2.tg16.gathering.org"; +	ddns-domainname "e23-2.tg16.gathering.org"; +	range 88.92.10.4 88.92.10.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e23-3.conf b/examples/tg16/dhcp/conf-v4/e23-3.conf new file mode 100644 index 0000000..3e72841 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e23-3.conf @@ -0,0 +1,12 @@ +zone e23-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.10.64 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.10.65; +	option domain-name "e23-3.tg16.gathering.org"; +	ddns-domainname "e23-3.tg16.gathering.org"; +	range 88.92.10.68 88.92.10.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e23-4.conf b/examples/tg16/dhcp/conf-v4/e23-4.conf new file mode 100644 index 0000000..77b1068 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e23-4.conf @@ -0,0 +1,12 @@ +zone e23-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.10.128 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.10.129; +	option domain-name "e23-4.tg16.gathering.org"; +	ddns-domainname "e23-4.tg16.gathering.org"; +	range 88.92.10.132 88.92.10.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e25-1.conf b/examples/tg16/dhcp/conf-v4/e25-1.conf new file mode 100644 index 0000000..d524122 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e25-1.conf @@ -0,0 +1,12 @@ +zone e25-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.10.192 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.10.193; +	option domain-name "e25-1.tg16.gathering.org"; +	ddns-domainname "e25-1.tg16.gathering.org"; +	range 88.92.10.196 88.92.10.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e25-2.conf b/examples/tg16/dhcp/conf-v4/e25-2.conf new file mode 100644 index 0000000..966bb3e --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e25-2.conf @@ -0,0 +1,12 @@ +zone e25-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.11.0 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.11.1; +	option domain-name "e25-2.tg16.gathering.org"; +	ddns-domainname "e25-2.tg16.gathering.org"; +	range 88.92.11.4 88.92.11.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e27-1.conf b/examples/tg16/dhcp/conf-v4/e27-1.conf new file mode 100644 index 0000000..bce3c10 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e27-1.conf @@ -0,0 +1,12 @@ +zone e27-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.11.64 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.11.65; +	option domain-name "e27-1.tg16.gathering.org"; +	ddns-domainname "e27-1.tg16.gathering.org"; +	range 88.92.11.68 88.92.11.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e27-2.conf b/examples/tg16/dhcp/conf-v4/e27-2.conf new file mode 100644 index 0000000..32ee336 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e27-2.conf @@ -0,0 +1,12 @@ +zone e27-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.11.128 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.11.129; +	option domain-name "e27-2.tg16.gathering.org"; +	ddns-domainname "e27-2.tg16.gathering.org"; +	range 88.92.11.132 88.92.11.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e29-1.conf b/examples/tg16/dhcp/conf-v4/e29-1.conf new file mode 100644 index 0000000..ed6c2fd --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e29-1.conf @@ -0,0 +1,12 @@ +zone e29-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.11.192 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.11.193; +	option domain-name "e29-1.tg16.gathering.org"; +	ddns-domainname "e29-1.tg16.gathering.org"; +	range 88.92.11.196 88.92.11.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e29-2.conf b/examples/tg16/dhcp/conf-v4/e29-2.conf new file mode 100644 index 0000000..864fb5b --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e29-2.conf @@ -0,0 +1,12 @@ +zone e29-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.12.0 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.12.1; +	option domain-name "e29-2.tg16.gathering.org"; +	ddns-domainname "e29-2.tg16.gathering.org"; +	range 88.92.12.4 88.92.12.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e3-3.conf b/examples/tg16/dhcp/conf-v4/e3-3.conf new file mode 100644 index 0000000..1e6bd57 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e3-3.conf @@ -0,0 +1,12 @@ +zone e3-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.0.128 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.0.129; +	option domain-name "e3-3.tg16.gathering.org"; +	ddns-domainname "e3-3.tg16.gathering.org"; +	range 88.92.0.132 88.92.0.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e3-4.conf b/examples/tg16/dhcp/conf-v4/e3-4.conf new file mode 100644 index 0000000..74f3a37 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e3-4.conf @@ -0,0 +1,12 @@ +zone e3-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.0.192 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.0.193; +	option domain-name "e3-4.tg16.gathering.org"; +	ddns-domainname "e3-4.tg16.gathering.org"; +	range 88.92.0.196 88.92.0.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e31-1.conf b/examples/tg16/dhcp/conf-v4/e31-1.conf new file mode 100644 index 0000000..a20a647 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e31-1.conf @@ -0,0 +1,12 @@ +zone e31-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.12.64 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.12.65; +	option domain-name "e31-1.tg16.gathering.org"; +	ddns-domainname "e31-1.tg16.gathering.org"; +	range 88.92.12.68 88.92.12.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e31-2.conf b/examples/tg16/dhcp/conf-v4/e31-2.conf new file mode 100644 index 0000000..b28dd44 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e31-2.conf @@ -0,0 +1,12 @@ +zone e31-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.12.128 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.12.129; +	option domain-name "e31-2.tg16.gathering.org"; +	ddns-domainname "e31-2.tg16.gathering.org"; +	range 88.92.12.132 88.92.12.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e33-1.conf b/examples/tg16/dhcp/conf-v4/e33-1.conf new file mode 100644 index 0000000..3acaceb --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e33-1.conf @@ -0,0 +1,12 @@ +zone e33-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.12.192 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.12.193; +	option domain-name "e33-1.tg16.gathering.org"; +	ddns-domainname "e33-1.tg16.gathering.org"; +	range 88.92.12.196 88.92.12.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e33-2.conf b/examples/tg16/dhcp/conf-v4/e33-2.conf new file mode 100644 index 0000000..f68776b --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e33-2.conf @@ -0,0 +1,12 @@ +zone e33-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.13.0 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.13.1; +	option domain-name "e33-2.tg16.gathering.org"; +	ddns-domainname "e33-2.tg16.gathering.org"; +	range 88.92.13.4 88.92.13.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e35-1.conf b/examples/tg16/dhcp/conf-v4/e35-1.conf new file mode 100644 index 0000000..0de5841 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e35-1.conf @@ -0,0 +1,12 @@ +zone e35-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.13.64 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.13.65; +	option domain-name "e35-1.tg16.gathering.org"; +	ddns-domainname "e35-1.tg16.gathering.org"; +	range 88.92.13.68 88.92.13.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e35-2.conf b/examples/tg16/dhcp/conf-v4/e35-2.conf new file mode 100644 index 0000000..b7d4e4c --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e35-2.conf @@ -0,0 +1,12 @@ +zone e35-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.13.128 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.13.129; +	option domain-name "e35-2.tg16.gathering.org"; +	ddns-domainname "e35-2.tg16.gathering.org"; +	range 88.92.13.132 88.92.13.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e37-1.conf b/examples/tg16/dhcp/conf-v4/e37-1.conf new file mode 100644 index 0000000..fa6de10 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e37-1.conf @@ -0,0 +1,12 @@ +zone e37-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.13.192 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.13.193; +	option domain-name "e37-1.tg16.gathering.org"; +	ddns-domainname "e37-1.tg16.gathering.org"; +	range 88.92.13.196 88.92.13.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e37-2.conf b/examples/tg16/dhcp/conf-v4/e37-2.conf new file mode 100644 index 0000000..6cab6b6 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e37-2.conf @@ -0,0 +1,12 @@ +zone e37-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.14.0 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.14.1; +	option domain-name "e37-2.tg16.gathering.org"; +	ddns-domainname "e37-2.tg16.gathering.org"; +	range 88.92.14.4 88.92.14.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e39-1.conf b/examples/tg16/dhcp/conf-v4/e39-1.conf new file mode 100644 index 0000000..fee290c --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e39-1.conf @@ -0,0 +1,12 @@ +zone e39-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.14.64 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.14.65; +	option domain-name "e39-1.tg16.gathering.org"; +	ddns-domainname "e39-1.tg16.gathering.org"; +	range 88.92.14.68 88.92.14.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e39-2.conf b/examples/tg16/dhcp/conf-v4/e39-2.conf new file mode 100644 index 0000000..a3060cb --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e39-2.conf @@ -0,0 +1,12 @@ +zone e39-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.14.128 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.14.129; +	option domain-name "e39-2.tg16.gathering.org"; +	ddns-domainname "e39-2.tg16.gathering.org"; +	range 88.92.14.132 88.92.14.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e41-1.conf b/examples/tg16/dhcp/conf-v4/e41-1.conf new file mode 100644 index 0000000..4c083bc --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e41-1.conf @@ -0,0 +1,12 @@ +zone e41-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.14.192 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.14.193; +	option domain-name "e41-1.tg16.gathering.org"; +	ddns-domainname "e41-1.tg16.gathering.org"; +	range 88.92.14.196 88.92.14.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e41-2.conf b/examples/tg16/dhcp/conf-v4/e41-2.conf new file mode 100644 index 0000000..a93f382 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e41-2.conf @@ -0,0 +1,12 @@ +zone e41-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.15.0 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.15.1; +	option domain-name "e41-2.tg16.gathering.org"; +	ddns-domainname "e41-2.tg16.gathering.org"; +	range 88.92.15.4 88.92.15.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e41-3.conf b/examples/tg16/dhcp/conf-v4/e41-3.conf new file mode 100644 index 0000000..f3d7052 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e41-3.conf @@ -0,0 +1,12 @@ +zone e41-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.15.64 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.15.65; +	option domain-name "e41-3.tg16.gathering.org"; +	ddns-domainname "e41-3.tg16.gathering.org"; +	range 88.92.15.68 88.92.15.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e41-4.conf b/examples/tg16/dhcp/conf-v4/e41-4.conf new file mode 100644 index 0000000..a2f28ed --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e41-4.conf @@ -0,0 +1,12 @@ +zone e41-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.15.128 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.15.129; +	option domain-name "e41-4.tg16.gathering.org"; +	ddns-domainname "e41-4.tg16.gathering.org"; +	range 88.92.15.132 88.92.15.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e43-1.conf b/examples/tg16/dhcp/conf-v4/e43-1.conf new file mode 100644 index 0000000..64472af --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e43-1.conf @@ -0,0 +1,12 @@ +zone e43-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.15.192 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.15.193; +	option domain-name "e43-1.tg16.gathering.org"; +	ddns-domainname "e43-1.tg16.gathering.org"; +	range 88.92.15.196 88.92.15.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e43-2.conf b/examples/tg16/dhcp/conf-v4/e43-2.conf new file mode 100644 index 0000000..e2138d2 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e43-2.conf @@ -0,0 +1,12 @@ +zone e43-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.16.0 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.16.1; +	option domain-name "e43-2.tg16.gathering.org"; +	ddns-domainname "e43-2.tg16.gathering.org"; +	range 88.92.16.4 88.92.16.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e43-3.conf b/examples/tg16/dhcp/conf-v4/e43-3.conf new file mode 100644 index 0000000..6c44386 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e43-3.conf @@ -0,0 +1,12 @@ +zone e43-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.16.64 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.16.65; +	option domain-name "e43-3.tg16.gathering.org"; +	ddns-domainname "e43-3.tg16.gathering.org"; +	range 88.92.16.68 88.92.16.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e43-4.conf b/examples/tg16/dhcp/conf-v4/e43-4.conf new file mode 100644 index 0000000..312b8ca --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e43-4.conf @@ -0,0 +1,12 @@ +zone e43-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.16.128 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.16.129; +	option domain-name "e43-4.tg16.gathering.org"; +	ddns-domainname "e43-4.tg16.gathering.org"; +	range 88.92.16.132 88.92.16.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e45-1.conf b/examples/tg16/dhcp/conf-v4/e45-1.conf new file mode 100644 index 0000000..da96e5a --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e45-1.conf @@ -0,0 +1,12 @@ +zone e45-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.16.192 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.16.193; +	option domain-name "e45-1.tg16.gathering.org"; +	ddns-domainname "e45-1.tg16.gathering.org"; +	range 88.92.16.196 88.92.16.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e45-2.conf b/examples/tg16/dhcp/conf-v4/e45-2.conf new file mode 100644 index 0000000..e5ecf46 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e45-2.conf @@ -0,0 +1,12 @@ +zone e45-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.17.0 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.17.1; +	option domain-name "e45-2.tg16.gathering.org"; +	ddns-domainname "e45-2.tg16.gathering.org"; +	range 88.92.17.4 88.92.17.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e45-3.conf b/examples/tg16/dhcp/conf-v4/e45-3.conf new file mode 100644 index 0000000..f14e02d --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e45-3.conf @@ -0,0 +1,12 @@ +zone e45-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.17.64 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.17.65; +	option domain-name "e45-3.tg16.gathering.org"; +	ddns-domainname "e45-3.tg16.gathering.org"; +	range 88.92.17.68 88.92.17.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e45-4.conf b/examples/tg16/dhcp/conf-v4/e45-4.conf new file mode 100644 index 0000000..fc52ce5 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e45-4.conf @@ -0,0 +1,12 @@ +zone e45-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.17.128 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.17.129; +	option domain-name "e45-4.tg16.gathering.org"; +	ddns-domainname "e45-4.tg16.gathering.org"; +	range 88.92.17.132 88.92.17.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e47-1.conf b/examples/tg16/dhcp/conf-v4/e47-1.conf new file mode 100644 index 0000000..0eb8b4b --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e47-1.conf @@ -0,0 +1,12 @@ +zone e47-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.17.192 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.17.193; +	option domain-name "e47-1.tg16.gathering.org"; +	ddns-domainname "e47-1.tg16.gathering.org"; +	range 88.92.17.196 88.92.17.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e47-2.conf b/examples/tg16/dhcp/conf-v4/e47-2.conf new file mode 100644 index 0000000..95df3c3 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e47-2.conf @@ -0,0 +1,12 @@ +zone e47-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.18.0 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.18.1; +	option domain-name "e47-2.tg16.gathering.org"; +	ddns-domainname "e47-2.tg16.gathering.org"; +	range 88.92.18.4 88.92.18.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e47-3.conf b/examples/tg16/dhcp/conf-v4/e47-3.conf new file mode 100644 index 0000000..4c10a38 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e47-3.conf @@ -0,0 +1,12 @@ +zone e47-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.18.64 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.18.65; +	option domain-name "e47-3.tg16.gathering.org"; +	ddns-domainname "e47-3.tg16.gathering.org"; +	range 88.92.18.68 88.92.18.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e47-4.conf b/examples/tg16/dhcp/conf-v4/e47-4.conf new file mode 100644 index 0000000..d03ef07 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e47-4.conf @@ -0,0 +1,12 @@ +zone e47-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.18.128 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.18.129; +	option domain-name "e47-4.tg16.gathering.org"; +	ddns-domainname "e47-4.tg16.gathering.org"; +	range 88.92.18.132 88.92.18.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e49-1.conf b/examples/tg16/dhcp/conf-v4/e49-1.conf new file mode 100644 index 0000000..41c5809 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e49-1.conf @@ -0,0 +1,12 @@ +zone e49-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.18.192 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.18.193; +	option domain-name "e49-1.tg16.gathering.org"; +	ddns-domainname "e49-1.tg16.gathering.org"; +	range 88.92.18.196 88.92.18.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e49-2.conf b/examples/tg16/dhcp/conf-v4/e49-2.conf new file mode 100644 index 0000000..07bdf30 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e49-2.conf @@ -0,0 +1,12 @@ +zone e49-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.19.0 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.19.1; +	option domain-name "e49-2.tg16.gathering.org"; +	ddns-domainname "e49-2.tg16.gathering.org"; +	range 88.92.19.4 88.92.19.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e49-3.conf b/examples/tg16/dhcp/conf-v4/e49-3.conf new file mode 100644 index 0000000..2be3337 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e49-3.conf @@ -0,0 +1,12 @@ +zone e49-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.19.64 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.19.65; +	option domain-name "e49-3.tg16.gathering.org"; +	ddns-domainname "e49-3.tg16.gathering.org"; +	range 88.92.19.68 88.92.19.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e49-4.conf b/examples/tg16/dhcp/conf-v4/e49-4.conf new file mode 100644 index 0000000..7afb2d5 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e49-4.conf @@ -0,0 +1,12 @@ +zone e49-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.19.128 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.19.129; +	option domain-name "e49-4.tg16.gathering.org"; +	ddns-domainname "e49-4.tg16.gathering.org"; +	range 88.92.19.132 88.92.19.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e5-2.conf b/examples/tg16/dhcp/conf-v4/e5-2.conf new file mode 100644 index 0000000..738ad9d --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e5-2.conf @@ -0,0 +1,12 @@ +zone e5-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.1.0 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.1.1; +	option domain-name "e5-2.tg16.gathering.org"; +	ddns-domainname "e5-2.tg16.gathering.org"; +	range 88.92.1.4 88.92.1.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e5-3.conf b/examples/tg16/dhcp/conf-v4/e5-3.conf new file mode 100644 index 0000000..de3917c --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e5-3.conf @@ -0,0 +1,12 @@ +zone e5-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.1.64 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.1.65; +	option domain-name "e5-3.tg16.gathering.org"; +	ddns-domainname "e5-3.tg16.gathering.org"; +	range 88.92.1.68 88.92.1.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e5-4.conf b/examples/tg16/dhcp/conf-v4/e5-4.conf new file mode 100644 index 0000000..c2d78f2 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e5-4.conf @@ -0,0 +1,12 @@ +zone e5-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.1.128 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.1.129; +	option domain-name "e5-4.tg16.gathering.org"; +	ddns-domainname "e5-4.tg16.gathering.org"; +	range 88.92.1.132 88.92.1.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e51-1.conf b/examples/tg16/dhcp/conf-v4/e51-1.conf new file mode 100644 index 0000000..d023a02 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e51-1.conf @@ -0,0 +1,12 @@ +zone e51-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.19.192 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.19.193; +	option domain-name "e51-1.tg16.gathering.org"; +	ddns-domainname "e51-1.tg16.gathering.org"; +	range 88.92.19.196 88.92.19.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e51-2.conf b/examples/tg16/dhcp/conf-v4/e51-2.conf new file mode 100644 index 0000000..161c8fa --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e51-2.conf @@ -0,0 +1,12 @@ +zone e51-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.20.0 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.20.1; +	option domain-name "e51-2.tg16.gathering.org"; +	ddns-domainname "e51-2.tg16.gathering.org"; +	range 88.92.20.4 88.92.20.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e51-3.conf b/examples/tg16/dhcp/conf-v4/e51-3.conf new file mode 100644 index 0000000..c66882e --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e51-3.conf @@ -0,0 +1,12 @@ +zone e51-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.20.64 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.20.65; +	option domain-name "e51-3.tg16.gathering.org"; +	ddns-domainname "e51-3.tg16.gathering.org"; +	range 88.92.20.68 88.92.20.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e51-4.conf b/examples/tg16/dhcp/conf-v4/e51-4.conf new file mode 100644 index 0000000..8657cb2 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e51-4.conf @@ -0,0 +1,12 @@ +zone e51-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.20.128 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.20.129; +	option domain-name "e51-4.tg16.gathering.org"; +	ddns-domainname "e51-4.tg16.gathering.org"; +	range 88.92.20.132 88.92.20.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e53-1.conf b/examples/tg16/dhcp/conf-v4/e53-1.conf new file mode 100644 index 0000000..6c952a6 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e53-1.conf @@ -0,0 +1,12 @@ +zone e53-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.20.192 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.20.193; +	option domain-name "e53-1.tg16.gathering.org"; +	ddns-domainname "e53-1.tg16.gathering.org"; +	range 88.92.20.196 88.92.20.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e53-2.conf b/examples/tg16/dhcp/conf-v4/e53-2.conf new file mode 100644 index 0000000..46c2d01 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e53-2.conf @@ -0,0 +1,12 @@ +zone e53-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.21.0 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.21.1; +	option domain-name "e53-2.tg16.gathering.org"; +	ddns-domainname "e53-2.tg16.gathering.org"; +	range 88.92.21.4 88.92.21.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e53-3.conf b/examples/tg16/dhcp/conf-v4/e53-3.conf new file mode 100644 index 0000000..32b8e59 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e53-3.conf @@ -0,0 +1,12 @@ +zone e53-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.21.64 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.21.65; +	option domain-name "e53-3.tg16.gathering.org"; +	ddns-domainname "e53-3.tg16.gathering.org"; +	range 88.92.21.68 88.92.21.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e53-4.conf b/examples/tg16/dhcp/conf-v4/e53-4.conf new file mode 100644 index 0000000..4c87e52 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e53-4.conf @@ -0,0 +1,12 @@ +zone e53-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.21.128 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.21.129; +	option domain-name "e53-4.tg16.gathering.org"; +	ddns-domainname "e53-4.tg16.gathering.org"; +	range 88.92.21.132 88.92.21.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e55-1.conf b/examples/tg16/dhcp/conf-v4/e55-1.conf new file mode 100644 index 0000000..7fbf4f4 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e55-1.conf @@ -0,0 +1,12 @@ +zone e55-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.21.192 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.21.193; +	option domain-name "e55-1.tg16.gathering.org"; +	ddns-domainname "e55-1.tg16.gathering.org"; +	range 88.92.21.196 88.92.21.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e55-2.conf b/examples/tg16/dhcp/conf-v4/e55-2.conf new file mode 100644 index 0000000..7e1a446 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e55-2.conf @@ -0,0 +1,12 @@ +zone e55-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.22.0 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.22.1; +	option domain-name "e55-2.tg16.gathering.org"; +	ddns-domainname "e55-2.tg16.gathering.org"; +	range 88.92.22.4 88.92.22.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e55-3.conf b/examples/tg16/dhcp/conf-v4/e55-3.conf new file mode 100644 index 0000000..d198413 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e55-3.conf @@ -0,0 +1,12 @@ +zone e55-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.22.64 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.22.65; +	option domain-name "e55-3.tg16.gathering.org"; +	ddns-domainname "e55-3.tg16.gathering.org"; +	range 88.92.22.68 88.92.22.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e55-4.conf b/examples/tg16/dhcp/conf-v4/e55-4.conf new file mode 100644 index 0000000..8d733fa --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e55-4.conf @@ -0,0 +1,12 @@ +zone e55-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.22.128 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.22.129; +	option domain-name "e55-4.tg16.gathering.org"; +	ddns-domainname "e55-4.tg16.gathering.org"; +	range 88.92.22.132 88.92.22.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e57-1.conf b/examples/tg16/dhcp/conf-v4/e57-1.conf new file mode 100644 index 0000000..1e02eb2 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e57-1.conf @@ -0,0 +1,12 @@ +zone e57-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.22.192 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.22.193; +	option domain-name "e57-1.tg16.gathering.org"; +	ddns-domainname "e57-1.tg16.gathering.org"; +	range 88.92.22.196 88.92.22.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e57-2.conf b/examples/tg16/dhcp/conf-v4/e57-2.conf new file mode 100644 index 0000000..2a5b7c3 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e57-2.conf @@ -0,0 +1,12 @@ +zone e57-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.23.0 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.23.1; +	option domain-name "e57-2.tg16.gathering.org"; +	ddns-domainname "e57-2.tg16.gathering.org"; +	range 88.92.23.4 88.92.23.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e57-3.conf b/examples/tg16/dhcp/conf-v4/e57-3.conf new file mode 100644 index 0000000..5d38bd2 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e57-3.conf @@ -0,0 +1,12 @@ +zone e57-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.23.64 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.23.65; +	option domain-name "e57-3.tg16.gathering.org"; +	ddns-domainname "e57-3.tg16.gathering.org"; +	range 88.92.23.68 88.92.23.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e57-4.conf b/examples/tg16/dhcp/conf-v4/e57-4.conf new file mode 100644 index 0000000..b0bf85f --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e57-4.conf @@ -0,0 +1,12 @@ +zone e57-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.23.128 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.23.129; +	option domain-name "e57-4.tg16.gathering.org"; +	ddns-domainname "e57-4.tg16.gathering.org"; +	range 88.92.23.132 88.92.23.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e59-1.conf b/examples/tg16/dhcp/conf-v4/e59-1.conf new file mode 100644 index 0000000..22267a5 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e59-1.conf @@ -0,0 +1,12 @@ +zone e59-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.23.192 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.23.193; +	option domain-name "e59-1.tg16.gathering.org"; +	ddns-domainname "e59-1.tg16.gathering.org"; +	range 88.92.23.196 88.92.23.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e59-2.conf b/examples/tg16/dhcp/conf-v4/e59-2.conf new file mode 100644 index 0000000..af8a916 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e59-2.conf @@ -0,0 +1,12 @@ +zone e59-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.24.0 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.24.1; +	option domain-name "e59-2.tg16.gathering.org"; +	ddns-domainname "e59-2.tg16.gathering.org"; +	range 88.92.24.4 88.92.24.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e59-3.conf b/examples/tg16/dhcp/conf-v4/e59-3.conf new file mode 100644 index 0000000..97a8f03 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e59-3.conf @@ -0,0 +1,12 @@ +zone e59-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.24.64 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.24.65; +	option domain-name "e59-3.tg16.gathering.org"; +	ddns-domainname "e59-3.tg16.gathering.org"; +	range 88.92.24.68 88.92.24.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e59-4.conf b/examples/tg16/dhcp/conf-v4/e59-4.conf new file mode 100644 index 0000000..2bf20a3 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e59-4.conf @@ -0,0 +1,12 @@ +zone e59-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.24.128 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.24.129; +	option domain-name "e59-4.tg16.gathering.org"; +	ddns-domainname "e59-4.tg16.gathering.org"; +	range 88.92.24.132 88.92.24.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e61-1.conf b/examples/tg16/dhcp/conf-v4/e61-1.conf new file mode 100644 index 0000000..7a7c9fe --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e61-1.conf @@ -0,0 +1,12 @@ +zone e61-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.24.192 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.24.193; +	option domain-name "e61-1.tg16.gathering.org"; +	ddns-domainname "e61-1.tg16.gathering.org"; +	range 88.92.24.196 88.92.24.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e61-2.conf b/examples/tg16/dhcp/conf-v4/e61-2.conf new file mode 100644 index 0000000..006a8e9 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e61-2.conf @@ -0,0 +1,12 @@ +zone e61-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.25.0 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.25.1; +	option domain-name "e61-2.tg16.gathering.org"; +	ddns-domainname "e61-2.tg16.gathering.org"; +	range 88.92.25.4 88.92.25.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e61-3.conf b/examples/tg16/dhcp/conf-v4/e61-3.conf new file mode 100644 index 0000000..1c85d0b --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e61-3.conf @@ -0,0 +1,12 @@ +zone e61-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.25.64 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.25.65; +	option domain-name "e61-3.tg16.gathering.org"; +	ddns-domainname "e61-3.tg16.gathering.org"; +	range 88.92.25.68 88.92.25.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e61-4.conf b/examples/tg16/dhcp/conf-v4/e61-4.conf new file mode 100644 index 0000000..03c4d1e --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e61-4.conf @@ -0,0 +1,12 @@ +zone e61-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.25.128 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.25.129; +	option domain-name "e61-4.tg16.gathering.org"; +	ddns-domainname "e61-4.tg16.gathering.org"; +	range 88.92.25.132 88.92.25.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e63-1.conf b/examples/tg16/dhcp/conf-v4/e63-1.conf new file mode 100644 index 0000000..dce320a --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e63-1.conf @@ -0,0 +1,12 @@ +zone e63-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.25.192 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.25.193; +	option domain-name "e63-1.tg16.gathering.org"; +	ddns-domainname "e63-1.tg16.gathering.org"; +	range 88.92.25.196 88.92.25.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e63-2.conf b/examples/tg16/dhcp/conf-v4/e63-2.conf new file mode 100644 index 0000000..bd7934b --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e63-2.conf @@ -0,0 +1,12 @@ +zone e63-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.26.0 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.26.1; +	option domain-name "e63-2.tg16.gathering.org"; +	ddns-domainname "e63-2.tg16.gathering.org"; +	range 88.92.26.4 88.92.26.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e63-3.conf b/examples/tg16/dhcp/conf-v4/e63-3.conf new file mode 100644 index 0000000..01b0e77 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e63-3.conf @@ -0,0 +1,12 @@ +zone e63-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.26.64 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.26.65; +	option domain-name "e63-3.tg16.gathering.org"; +	ddns-domainname "e63-3.tg16.gathering.org"; +	range 88.92.26.68 88.92.26.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e63-4.conf b/examples/tg16/dhcp/conf-v4/e63-4.conf new file mode 100644 index 0000000..05f39da --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e63-4.conf @@ -0,0 +1,12 @@ +zone e63-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.26.128 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.26.129; +	option domain-name "e63-4.tg16.gathering.org"; +	ddns-domainname "e63-4.tg16.gathering.org"; +	range 88.92.26.132 88.92.26.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e65-1.conf b/examples/tg16/dhcp/conf-v4/e65-1.conf new file mode 100644 index 0000000..cc37b62 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e65-1.conf @@ -0,0 +1,12 @@ +zone e65-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.26.192 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.26.193; +	option domain-name "e65-1.tg16.gathering.org"; +	ddns-domainname "e65-1.tg16.gathering.org"; +	range 88.92.26.196 88.92.26.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e65-2.conf b/examples/tg16/dhcp/conf-v4/e65-2.conf new file mode 100644 index 0000000..6d7ce7b --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e65-2.conf @@ -0,0 +1,12 @@ +zone e65-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.27.0 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.27.1; +	option domain-name "e65-2.tg16.gathering.org"; +	ddns-domainname "e65-2.tg16.gathering.org"; +	range 88.92.27.4 88.92.27.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e65-3.conf b/examples/tg16/dhcp/conf-v4/e65-3.conf new file mode 100644 index 0000000..e07f0ce --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e65-3.conf @@ -0,0 +1,12 @@ +zone e65-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.27.64 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.27.65; +	option domain-name "e65-3.tg16.gathering.org"; +	ddns-domainname "e65-3.tg16.gathering.org"; +	range 88.92.27.68 88.92.27.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e65-4.conf b/examples/tg16/dhcp/conf-v4/e65-4.conf new file mode 100644 index 0000000..ee12c62 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e65-4.conf @@ -0,0 +1,12 @@ +zone e65-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.27.128 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.27.129; +	option domain-name "e65-4.tg16.gathering.org"; +	ddns-domainname "e65-4.tg16.gathering.org"; +	range 88.92.27.132 88.92.27.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e67-1.conf b/examples/tg16/dhcp/conf-v4/e67-1.conf new file mode 100644 index 0000000..3fb1719 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e67-1.conf @@ -0,0 +1,12 @@ +zone e67-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.27.192 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.27.193; +	option domain-name "e67-1.tg16.gathering.org"; +	ddns-domainname "e67-1.tg16.gathering.org"; +	range 88.92.27.196 88.92.27.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e67-2.conf b/examples/tg16/dhcp/conf-v4/e67-2.conf new file mode 100644 index 0000000..cf56ac3 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e67-2.conf @@ -0,0 +1,12 @@ +zone e67-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.28.0 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.28.1; +	option domain-name "e67-2.tg16.gathering.org"; +	ddns-domainname "e67-2.tg16.gathering.org"; +	range 88.92.28.4 88.92.28.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e67-3.conf b/examples/tg16/dhcp/conf-v4/e67-3.conf new file mode 100644 index 0000000..e98ef40 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e67-3.conf @@ -0,0 +1,12 @@ +zone e67-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.28.64 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.28.65; +	option domain-name "e67-3.tg16.gathering.org"; +	ddns-domainname "e67-3.tg16.gathering.org"; +	range 88.92.28.68 88.92.28.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e67-4.conf b/examples/tg16/dhcp/conf-v4/e67-4.conf new file mode 100644 index 0000000..aa38a8c --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e67-4.conf @@ -0,0 +1,12 @@ +zone e67-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.28.128 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.28.129; +	option domain-name "e67-4.tg16.gathering.org"; +	ddns-domainname "e67-4.tg16.gathering.org"; +	range 88.92.28.132 88.92.28.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e69-1.conf b/examples/tg16/dhcp/conf-v4/e69-1.conf new file mode 100644 index 0000000..b0f3513 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e69-1.conf @@ -0,0 +1,12 @@ +zone e69-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.28.192 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.28.193; +	option domain-name "e69-1.tg16.gathering.org"; +	ddns-domainname "e69-1.tg16.gathering.org"; +	range 88.92.28.196 88.92.28.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e69-2.conf b/examples/tg16/dhcp/conf-v4/e69-2.conf new file mode 100644 index 0000000..e5bee11 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e69-2.conf @@ -0,0 +1,12 @@ +zone e69-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.29.0 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.29.1; +	option domain-name "e69-2.tg16.gathering.org"; +	ddns-domainname "e69-2.tg16.gathering.org"; +	range 88.92.29.4 88.92.29.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e7-1.conf b/examples/tg16/dhcp/conf-v4/e7-1.conf new file mode 100644 index 0000000..b1bc2fd --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e7-1.conf @@ -0,0 +1,12 @@ +zone e7-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.1.192 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.1.193; +	option domain-name "e7-1.tg16.gathering.org"; +	ddns-domainname "e7-1.tg16.gathering.org"; +	range 88.92.1.196 88.92.1.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e7-2.conf b/examples/tg16/dhcp/conf-v4/e7-2.conf new file mode 100644 index 0000000..eb76b34 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e7-2.conf @@ -0,0 +1,12 @@ +zone e7-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.2.0 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.2.1; +	option domain-name "e7-2.tg16.gathering.org"; +	ddns-domainname "e7-2.tg16.gathering.org"; +	range 88.92.2.4 88.92.2.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e7-3.conf b/examples/tg16/dhcp/conf-v4/e7-3.conf new file mode 100644 index 0000000..fd2fa6a --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e7-3.conf @@ -0,0 +1,12 @@ +zone e7-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.2.64 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.2.65; +	option domain-name "e7-3.tg16.gathering.org"; +	ddns-domainname "e7-3.tg16.gathering.org"; +	range 88.92.2.68 88.92.2.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e7-4.conf b/examples/tg16/dhcp/conf-v4/e7-4.conf new file mode 100644 index 0000000..6f4240f --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e7-4.conf @@ -0,0 +1,12 @@ +zone e7-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.2.128 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.2.129; +	option domain-name "e7-4.tg16.gathering.org"; +	ddns-domainname "e7-4.tg16.gathering.org"; +	range 88.92.2.132 88.92.2.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e71-1.conf b/examples/tg16/dhcp/conf-v4/e71-1.conf new file mode 100644 index 0000000..19bdaa4 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e71-1.conf @@ -0,0 +1,12 @@ +zone e71-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.29.64 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.29.65; +	option domain-name "e71-1.tg16.gathering.org"; +	ddns-domainname "e71-1.tg16.gathering.org"; +	range 88.92.29.68 88.92.29.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e71-2.conf b/examples/tg16/dhcp/conf-v4/e71-2.conf new file mode 100644 index 0000000..c499d7b --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e71-2.conf @@ -0,0 +1,12 @@ +zone e71-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.29.128 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.29.129; +	option domain-name "e71-2.tg16.gathering.org"; +	ddns-domainname "e71-2.tg16.gathering.org"; +	range 88.92.29.132 88.92.29.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e73-1.conf b/examples/tg16/dhcp/conf-v4/e73-1.conf new file mode 100644 index 0000000..d067c2a --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e73-1.conf @@ -0,0 +1,12 @@ +zone e73-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.29.192 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.29.193; +	option domain-name "e73-1.tg16.gathering.org"; +	ddns-domainname "e73-1.tg16.gathering.org"; +	range 88.92.29.196 88.92.29.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e73-2.conf b/examples/tg16/dhcp/conf-v4/e73-2.conf new file mode 100644 index 0000000..9d88dac --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e73-2.conf @@ -0,0 +1,12 @@ +zone e73-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.30.0 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.30.1; +	option domain-name "e73-2.tg16.gathering.org"; +	ddns-domainname "e73-2.tg16.gathering.org"; +	range 88.92.30.4 88.92.30.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e75-1.conf b/examples/tg16/dhcp/conf-v4/e75-1.conf new file mode 100644 index 0000000..bbb008e --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e75-1.conf @@ -0,0 +1,12 @@ +zone e75-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.30.64 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.30.65; +	option domain-name "e75-1.tg16.gathering.org"; +	ddns-domainname "e75-1.tg16.gathering.org"; +	range 88.92.30.68 88.92.30.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e75-2.conf b/examples/tg16/dhcp/conf-v4/e75-2.conf new file mode 100644 index 0000000..eeaea1d --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e75-2.conf @@ -0,0 +1,12 @@ +zone e75-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.30.128 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.30.129; +	option domain-name "e75-2.tg16.gathering.org"; +	ddns-domainname "e75-2.tg16.gathering.org"; +	range 88.92.30.132 88.92.30.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e77-1.conf b/examples/tg16/dhcp/conf-v4/e77-1.conf new file mode 100644 index 0000000..c7c7aa7 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e77-1.conf @@ -0,0 +1,12 @@ +zone e77-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.30.192 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.30.193; +	option domain-name "e77-1.tg16.gathering.org"; +	ddns-domainname "e77-1.tg16.gathering.org"; +	range 88.92.30.196 88.92.30.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e77-2.conf b/examples/tg16/dhcp/conf-v4/e77-2.conf new file mode 100644 index 0000000..79da1aa --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e77-2.conf @@ -0,0 +1,12 @@ +zone e77-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.31.0 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.31.1; +	option domain-name "e77-2.tg16.gathering.org"; +	ddns-domainname "e77-2.tg16.gathering.org"; +	range 88.92.31.4 88.92.31.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e79-1.conf b/examples/tg16/dhcp/conf-v4/e79-1.conf new file mode 100644 index 0000000..38ee358 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e79-1.conf @@ -0,0 +1,12 @@ +zone e79-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.31.64 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.31.65; +	option domain-name "e79-1.tg16.gathering.org"; +	ddns-domainname "e79-1.tg16.gathering.org"; +	range 88.92.31.68 88.92.31.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e79-2.conf b/examples/tg16/dhcp/conf-v4/e79-2.conf new file mode 100644 index 0000000..42d03fd --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e79-2.conf @@ -0,0 +1,12 @@ +zone e79-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.31.128 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.31.129; +	option domain-name "e79-2.tg16.gathering.org"; +	ddns-domainname "e79-2.tg16.gathering.org"; +	range 88.92.31.132 88.92.31.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e81-1.conf b/examples/tg16/dhcp/conf-v4/e81-1.conf new file mode 100644 index 0000000..4a646e9 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e81-1.conf @@ -0,0 +1,12 @@ +zone e81-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.31.192 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.31.193; +	option domain-name "e81-1.tg16.gathering.org"; +	ddns-domainname "e81-1.tg16.gathering.org"; +	range 88.92.31.196 88.92.31.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e81-2.conf b/examples/tg16/dhcp/conf-v4/e81-2.conf new file mode 100644 index 0000000..2e24c3e --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e81-2.conf @@ -0,0 +1,12 @@ +zone e81-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.32.0 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.32.1; +	option domain-name "e81-2.tg16.gathering.org"; +	ddns-domainname "e81-2.tg16.gathering.org"; +	range 88.92.32.4 88.92.32.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e83-2.conf b/examples/tg16/dhcp/conf-v4/e83-2.conf new file mode 100644 index 0000000..84ba705 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e83-2.conf @@ -0,0 +1,12 @@ +zone e83-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.32.64 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.32.65; +	option domain-name "e83-2.tg16.gathering.org"; +	ddns-domainname "e83-2.tg16.gathering.org"; +	range 88.92.32.68 88.92.32.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e85-2.conf b/examples/tg16/dhcp/conf-v4/e85-2.conf new file mode 100644 index 0000000..377c735 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e85-2.conf @@ -0,0 +1,12 @@ +zone e85-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.32.128 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.32.129; +	option domain-name "e85-2.tg16.gathering.org"; +	ddns-domainname "e85-2.tg16.gathering.org"; +	range 88.92.32.132 88.92.32.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/e9-1.conf b/examples/tg16/dhcp/conf-v4/e9-1.conf new file mode 100644 index 0000000..2061512 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e9-1.conf @@ -0,0 +1,12 @@ +zone e9-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.2.192 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.2.193; +	option domain-name "e9-1.tg16.gathering.org"; +	ddns-domainname "e9-1.tg16.gathering.org"; +	range 88.92.2.196 88.92.2.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/e9-2.conf b/examples/tg16/dhcp/conf-v4/e9-2.conf new file mode 100644 index 0000000..d8ba3cc --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e9-2.conf @@ -0,0 +1,12 @@ +zone e9-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.3.0 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.3.1; +	option domain-name "e9-2.tg16.gathering.org"; +	ddns-domainname "e9-2.tg16.gathering.org"; +	range 88.92.3.4 88.92.3.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/e9-3.conf b/examples/tg16/dhcp/conf-v4/e9-3.conf new file mode 100644 index 0000000..86976f7 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e9-3.conf @@ -0,0 +1,12 @@ +zone e9-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.3.64 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.3.65; +	option domain-name "e9-3.tg16.gathering.org"; +	ddns-domainname "e9-3.tg16.gathering.org"; +	range 88.92.3.68 88.92.3.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/e9-4.conf b/examples/tg16/dhcp/conf-v4/e9-4.conf new file mode 100644 index 0000000..ce89383 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/e9-4.conf @@ -0,0 +1,12 @@ +zone e9-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.3.128 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.3.129; +	option domain-name "e9-4.tg16.gathering.org"; +	ddns-domainname "e9-4.tg16.gathering.org"; +	range 88.92.3.132 88.92.3.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/event.conf b/examples/tg16/dhcp/conf-v4/event.conf new file mode 100644 index 0000000..8db2b71 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/event.conf @@ -0,0 +1,12 @@ +zone event.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.60.0 netmask 255.255.255.0 { +	option subnet-mask 255.255.255.0; +	option routers 88.92.60.1; +	option domain-name "event.tg16.gathering.org"; +	ddns-domainname "event.tg16.gathering.org"; +	range 88.92.60.4 88.92.60.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/flankenord.conf b/examples/tg16/dhcp/conf-v4/flankenord.conf new file mode 100644 index 0000000..b050b64 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/flankenord.conf @@ -0,0 +1,12 @@ +zone flankenord.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.41.64 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.41.65; +	option domain-name "flankenord.tg16.gathering.org"; +	ddns-domainname "flankenord.tg16.gathering.org"; +	range 88.92.41.68 88.92.41.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/flankesor.conf b/examples/tg16/dhcp/conf-v4/flankesor.conf new file mode 100644 index 0000000..e06fc8c --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/flankesor.conf @@ -0,0 +1,12 @@ +zone flankesor.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.41.128 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.41.129; +	option domain-name "flankesor.tg16.gathering.org"; +	ddns-domainname "flankesor.tg16.gathering.org"; +	range 88.92.41.132 88.92.41.190; +} + diff --git a/examples/tg16/dhcp/conf-v4/foh.conf b/examples/tg16/dhcp/conf-v4/foh.conf new file mode 100644 index 0000000..e14bac2 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/foh.conf @@ -0,0 +1,12 @@ +zone foh.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.68.0 netmask 255.255.255.0 { +	option subnet-mask 255.255.255.0; +	option routers 88.92.68.1; +	option domain-name "foh.tg16.gathering.org"; +	ddns-domainname "foh.tg16.gathering.org"; +	range 88.92.68.4 88.92.68.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/fugleberget.conf b/examples/tg16/dhcp/conf-v4/fugleberget.conf new file mode 100644 index 0000000..7691a8f --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/fugleberget.conf @@ -0,0 +1,12 @@ +zone fugleberget.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.65.0 netmask 255.255.255.0 { +	option subnet-mask 255.255.255.0; +	option routers 88.92.65.1; +	option domain-name "fugleberget.tg16.gathering.org"; +	ddns-domainname "fugleberget.tg16.gathering.org"; +	range 88.92.65.4 88.92.65.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/game.conf b/examples/tg16/dhcp/conf-v4/game.conf new file mode 100644 index 0000000..5c3e044 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/game.conf @@ -0,0 +1,12 @@ +zone game.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.76.0 netmask 255.255.255.0 { +	option subnet-mask 255.255.255.0; +	option routers 88.92.76.1; +	option domain-name "game.tg16.gathering.org"; +	ddns-domainname "game.tg16.gathering.org"; +	range 88.92.76.4 88.92.76.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/gamestage.conf b/examples/tg16/dhcp/conf-v4/gamestage.conf new file mode 100644 index 0000000..501303c --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/gamestage.conf @@ -0,0 +1,12 @@ +zone gamestage.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.78.0 netmask 255.255.255.0 { +	option subnet-mask 255.255.255.0; +	option routers 88.92.78.1; +	option domain-name "gamestage.tg16.gathering.org"; +	ddns-domainname "gamestage.tg16.gathering.org"; +	range 88.92.78.4 88.92.78.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/highlights.conf b/examples/tg16/dhcp/conf-v4/highlights.conf new file mode 100644 index 0000000..ef0b597 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/highlights.conf @@ -0,0 +1,12 @@ +zone highlights.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.81.0 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.81.1; +	option domain-name "highlights.tg16.gathering.org"; +	ddns-domainname "highlights.tg16.gathering.org"; +	range 88.92.81.4 88.92.81.62; +} + diff --git a/examples/tg16/dhcp/conf-v4/hon.conf b/examples/tg16/dhcp/conf-v4/hon.conf new file mode 100644 index 0000000..55bb9ce --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/hon.conf @@ -0,0 +1,12 @@ +zone hon.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.79.0 netmask 255.255.255.0 { +	option subnet-mask 255.255.255.0; +	option routers 88.92.79.1; +	option domain-name "hon.tg16.gathering.org"; +	ddns-domainname "hon.tg16.gathering.org"; +	range 88.92.79.4 88.92.79.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/info.conf b/examples/tg16/dhcp/conf-v4/info.conf new file mode 100644 index 0000000..bff7b24 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/info.conf @@ -0,0 +1,12 @@ +zone info.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.63.0 netmask 255.255.255.0 { +	option subnet-mask 255.255.255.0; +	option routers 88.92.63.1; +	option domain-name "info.tg16.gathering.org"; +	ddns-domainname "info.tg16.gathering.org"; +	range 88.92.63.4 88.92.63.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/innsjekk.conf b/examples/tg16/dhcp/conf-v4/innsjekk.conf new file mode 100644 index 0000000..7b7ef25 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/innsjekk.conf @@ -0,0 +1,12 @@ +zone innsjekk.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.69.0 netmask 255.255.255.0 { +	option subnet-mask 255.255.255.0; +	option routers 88.92.69.1; +	option domain-name "innsjekk.tg16.gathering.org"; +	ddns-domainname "innsjekk.tg16.gathering.org"; +	range 88.92.69.4 88.92.69.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/logistikk.conf b/examples/tg16/dhcp/conf-v4/logistikk.conf new file mode 100644 index 0000000..5828730 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/logistikk.conf @@ -0,0 +1,12 @@ +zone logistikk.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.59.0 netmask 255.255.255.0 { +	option subnet-mask 255.255.255.0; +	option routers 88.92.59.1; +	option domain-name "logistikk.tg16.gathering.org"; +	ddns-domainname "logistikk.tg16.gathering.org"; +	range 88.92.59.4 88.92.59.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/medic.conf b/examples/tg16/dhcp/conf-v4/medic.conf new file mode 100644 index 0000000..6dc7ec2 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/medic.conf @@ -0,0 +1,12 @@ +zone medic.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.71.0 netmask 255.255.255.0 { +	option subnet-mask 255.255.255.0; +	option routers 88.92.71.1; +	option domain-name "medic.tg16.gathering.org"; +	ddns-domainname "medic.tg16.gathering.org"; +	range 88.92.71.4 88.92.71.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/noc.conf b/examples/tg16/dhcp/conf-v4/noc.conf new file mode 100644 index 0000000..6ed407d --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/noc.conf @@ -0,0 +1,12 @@ +zone noc.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 185.110.150.0 netmask 255.255.255.128 { +	option subnet-mask 255.255.255.128; +	option routers 185.110.150.1; +	option domain-name "noc.tg16.gathering.org"; +	ddns-domainname "noc.tg16.gathering.org"; +	range 185.110.150.4 185.110.150.126; +} + diff --git a/examples/tg16/dhcp/conf-v4/north.conf b/examples/tg16/dhcp/conf-v4/north.conf new file mode 100644 index 0000000..f82121b --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/north.conf @@ -0,0 +1,12 @@ +zone north.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.64.0 netmask 255.255.255.0 { +	option subnet-mask 255.255.255.0; +	option routers 88.92.64.1; +	option domain-name "north.tg16.gathering.org"; +	ddns-domainname "north.tg16.gathering.org"; +	range 88.92.64.4 88.92.64.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/presse.conf b/examples/tg16/dhcp/conf-v4/presse.conf new file mode 100644 index 0000000..a3ea280 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/presse.conf @@ -0,0 +1,12 @@ +zone presse.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.73.0 netmask 255.255.255.0 { +	option subnet-mask 255.255.255.0; +	option routers 88.92.73.1; +	option domain-name "presse.tg16.gathering.org"; +	ddns-domainname "presse.tg16.gathering.org"; +	range 88.92.73.4 88.92.73.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/resepsjon.conf b/examples/tg16/dhcp/conf-v4/resepsjon.conf new file mode 100644 index 0000000..9f99a8c --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/resepsjon.conf @@ -0,0 +1,12 @@ +zone resepsjon.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.70.0 netmask 255.255.255.0 { +	option subnet-mask 255.255.255.0; +	option routers 88.92.70.1; +	option domain-name "resepsjon.tg16.gathering.org"; +	ddns-domainname "resepsjon.tg16.gathering.org"; +	range 88.92.70.4 88.92.70.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/santander-temp.conf b/examples/tg16/dhcp/conf-v4/santander-temp.conf new file mode 100644 index 0000000..bb437b0 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/santander-temp.conf @@ -0,0 +1,12 @@ +zone santander-temp.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.93.0 netmask 255.255.255.0 { +	option subnet-mask 255.255.255.0; +	option routers 88.92.93.1; +	option domain-name "santander-temp.tg16.gathering.org"; +	ddns-domainname "santander-temp.tg16.gathering.org"; +	range 88.92.93.4 88.92.93.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/security.conf b/examples/tg16/dhcp/conf-v4/security.conf new file mode 100644 index 0000000..b395515 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/security.conf @@ -0,0 +1,12 @@ +zone security.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.74.0 netmask 255.255.255.0 { +	option subnet-mask 255.255.255.0; +	option routers 88.92.74.1; +	option domain-name "security.tg16.gathering.org"; +	ddns-domainname "security.tg16.gathering.org"; +	range 88.92.74.4 88.92.74.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/security2.conf b/examples/tg16/dhcp/conf-v4/security2.conf new file mode 100644 index 0000000..c5984e6 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/security2.conf @@ -0,0 +1,12 @@ +zone security2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.75.0 netmask 255.255.255.0 { +	option subnet-mask 255.255.255.0; +	option routers 88.92.75.1; +	option domain-name "security2.tg16.gathering.org"; +	ddns-domainname "security2.tg16.gathering.org"; +	range 88.92.75.4 88.92.75.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/sponsor.conf b/examples/tg16/dhcp/conf-v4/sponsor.conf new file mode 100644 index 0000000..db2d30d --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/sponsor.conf @@ -0,0 +1,12 @@ +zone sponsor.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.72.0 netmask 255.255.255.0 { +	option subnet-mask 255.255.255.0; +	option routers 88.92.72.1; +	option domain-name "sponsor.tg16.gathering.org"; +	ddns-domainname "sponsor.tg16.gathering.org"; +	range 88.92.72.4 88.92.72.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/stage.conf b/examples/tg16/dhcp/conf-v4/stage.conf new file mode 100644 index 0000000..d17d0ad --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/stage.conf @@ -0,0 +1,12 @@ +zone stage.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.67.0 netmask 255.255.255.0 { +	option subnet-mask 255.255.255.0; +	option routers 88.92.67.1; +	option domain-name "stage.tg16.gathering.org"; +	ddns-domainname "stage.tg16.gathering.org"; +	range 88.92.67.4 88.92.67.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/streamer1.conf b/examples/tg16/dhcp/conf-v4/streamer1.conf new file mode 100644 index 0000000..091c311 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/streamer1.conf @@ -0,0 +1,12 @@ +zone streamer1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.41.192 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 88.92.41.193; +	option domain-name "streamer1.tg16.gathering.org"; +	ddns-domainname "streamer1.tg16.gathering.org"; +	range 88.92.41.196 88.92.41.254; +} + diff --git a/examples/tg16/dhcp/conf-v4/tech-wlan.conf b/examples/tg16/dhcp/conf-v4/tech-wlan.conf new file mode 100644 index 0000000..ce1e972 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/tech-wlan.conf @@ -0,0 +1,12 @@ +zone tech-wlan.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 185.110.151.0 netmask 255.255.255.224 { +	option subnet-mask 255.255.255.224; +	option routers 185.110.151.1; +	option domain-name "tech-wlan.tg16.gathering.org"; +	ddns-domainname "tech-wlan.tg16.gathering.org"; +	range 185.110.151.4 185.110.151.30; +} + diff --git a/examples/tg16/dhcp/conf-v4/wlan.conf b/examples/tg16/dhcp/conf-v4/wlan.conf new file mode 100644 index 0000000..1cefa07 --- /dev/null +++ b/examples/tg16/dhcp/conf-v4/wlan.conf @@ -0,0 +1,15 @@ +zone wlan.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet 88.92.96.0 netmask 255.255.224.0 { +	option subnet-mask 255.255.224.0; +	option routers 88.92.96.1; +	option domain-name "wlan.tg16.gathering.org"; +	ddns-domainname "wlan.tg16.gathering.org"; + +	range 88.92.96.4 88.92.127.254; +	default-lease-time 7200; +	max-lease-time 14400; +} + diff --git a/examples/tg16/dhcp/conf-v6/ap-creativia.conf b/examples/tg16/dhcp/conf-v6/ap-creativia.conf new file mode 100644 index 0000000..512d31b --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/ap-creativia.conf @@ -0,0 +1,10 @@ +zone ap-creativia.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:53b::/64 { +        option domain-name "ap-creativia.tg16.gathering.org"; + +	range6 2a06:5840:53b::1000 2a06:5840:53b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/ap-distro0.conf b/examples/tg16/dhcp/conf-v6/ap-distro0.conf new file mode 100644 index 0000000..2f1b050 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/ap-distro0.conf @@ -0,0 +1,10 @@ +zone ap-distro0.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:51a::/64 { +        option domain-name "ap-distro0.tg16.gathering.org"; + +	range6 2a06:5840:51a::1000 2a06:5840:51a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/ap-distro1.conf b/examples/tg16/dhcp/conf-v6/ap-distro1.conf new file mode 100644 index 0000000..5d59fdf --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/ap-distro1.conf @@ -0,0 +1,10 @@ +zone ap-distro1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:51b::/64 { +        option domain-name "ap-distro1.tg16.gathering.org"; + +	range6 2a06:5840:51b::1000 2a06:5840:51b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/ap-distro2.conf b/examples/tg16/dhcp/conf-v6/ap-distro2.conf new file mode 100644 index 0000000..b8c4e89 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/ap-distro2.conf @@ -0,0 +1,10 @@ +zone ap-distro2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:51c::/64 { +        option domain-name "ap-distro2.tg16.gathering.org"; + +	range6 2a06:5840:51c::1000 2a06:5840:51c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/ap-distro3.conf b/examples/tg16/dhcp/conf-v6/ap-distro3.conf new file mode 100644 index 0000000..19e2cb4 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/ap-distro3.conf @@ -0,0 +1,10 @@ +zone ap-distro3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:51d::/64 { +        option domain-name "ap-distro3.tg16.gathering.org"; + +	range6 2a06:5840:51d::1000 2a06:5840:51d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/ap-distro4.conf b/examples/tg16/dhcp/conf-v6/ap-distro4.conf new file mode 100644 index 0000000..61b042c --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/ap-distro4.conf @@ -0,0 +1,10 @@ +zone ap-distro4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:52a::/64 { +        option domain-name "ap-distro4.tg16.gathering.org"; + +	range6 2a06:5840:52a::1000 2a06:5840:52a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/ap-distro5.conf b/examples/tg16/dhcp/conf-v6/ap-distro5.conf new file mode 100644 index 0000000..2536a55 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/ap-distro5.conf @@ -0,0 +1,10 @@ +zone ap-distro5.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:52b::/64 { +        option domain-name "ap-distro5.tg16.gathering.org"; + +	range6 2a06:5840:52b::1000 2a06:5840:52b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/ap-distro6.conf b/examples/tg16/dhcp/conf-v6/ap-distro6.conf new file mode 100644 index 0000000..5d5a064 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/ap-distro6.conf @@ -0,0 +1,10 @@ +zone ap-distro6.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:52c::/64 { +        option domain-name "ap-distro6.tg16.gathering.org"; + +	range6 2a06:5840:52c::1000 2a06:5840:52c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/ap-distro7.conf b/examples/tg16/dhcp/conf-v6/ap-distro7.conf new file mode 100644 index 0000000..3efe69c --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/ap-distro7.conf @@ -0,0 +1,10 @@ +zone ap-distro7.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:52d::/64 { +        option domain-name "ap-distro7.tg16.gathering.org"; + +	range6 2a06:5840:52d::1000 2a06:5840:52d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/ap-stand.conf b/examples/tg16/dhcp/conf-v6/ap-stand.conf new file mode 100644 index 0000000..7982009 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/ap-stand.conf @@ -0,0 +1,10 @@ +zone ap-stand.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:530::/64 { +        option domain-name "ap-stand.tg16.gathering.org"; + +	range6 2a06:5840:530::1000 2a06:5840:530::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/auditorium.conf b/examples/tg16/dhcp/conf-v6/auditorium.conf new file mode 100644 index 0000000..f35fbe6 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/auditorium.conf @@ -0,0 +1,10 @@ +zone auditorium.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:77::/64 { +        option domain-name "auditorium.tg16.gathering.org"; + +	range6 2a06:5840:77::1000 2a06:5840:77::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/creativia-village.conf b/examples/tg16/dhcp/conf-v6/creativia-village.conf new file mode 100644 index 0000000..1624232 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/creativia-village.conf @@ -0,0 +1,10 @@ +zone creativia-village.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:42d::/64 { +        option domain-name "creativia-village.tg16.gathering.org"; + +	range6 2a06:5840:42d::1000 2a06:5840:42d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/creativia.conf b/examples/tg16/dhcp/conf-v6/creativia.conf new file mode 100644 index 0000000..38d65a3 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/creativia.conf @@ -0,0 +1,10 @@ +zone creativia.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:61::/64 { +        option domain-name "creativia.tg16.gathering.org"; + +	range6 2a06:5840:61::1000 2a06:5840:61::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/creativia1.conf b/examples/tg16/dhcp/conf-v6/creativia1.conf new file mode 100644 index 0000000..027f905 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/creativia1.conf @@ -0,0 +1,10 @@ +zone creativia1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:40a::/64 { +        option domain-name "creativia1.tg16.gathering.org"; + +	range6 2a06:5840:40a::1000 2a06:5840:40a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/creativia2.conf b/examples/tg16/dhcp/conf-v6/creativia2.conf new file mode 100644 index 0000000..5256267 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/creativia2.conf @@ -0,0 +1,10 @@ +zone creativia2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:40b::/64 { +        option domain-name "creativia2.tg16.gathering.org"; + +	range6 2a06:5840:40b::1000 2a06:5840:40b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/creativia3.conf b/examples/tg16/dhcp/conf-v6/creativia3.conf new file mode 100644 index 0000000..7bcaa5f --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/creativia3.conf @@ -0,0 +1,10 @@ +zone creativia3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:40c::/64 { +        option domain-name "creativia3.tg16.gathering.org"; + +	range6 2a06:5840:40c::1000 2a06:5840:40c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/creativia4.conf b/examples/tg16/dhcp/conf-v6/creativia4.conf new file mode 100644 index 0000000..82b3843 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/creativia4.conf @@ -0,0 +1,10 @@ +zone creativia4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:40d::/64 { +        option domain-name "creativia4.tg16.gathering.org"; + +	range6 2a06:5840:40d::1000 2a06:5840:40d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/creativia5.conf b/examples/tg16/dhcp/conf-v6/creativia5.conf new file mode 100644 index 0000000..c2343f2 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/creativia5.conf @@ -0,0 +1,10 @@ +zone creativia5.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:41a::/64 { +        option domain-name "creativia5.tg16.gathering.org"; + +	range6 2a06:5840:41a::1000 2a06:5840:41a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/creativia6.conf b/examples/tg16/dhcp/conf-v6/creativia6.conf new file mode 100644 index 0000000..69a0b2a --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/creativia6.conf @@ -0,0 +1,10 @@ +zone creativia6.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:42b::/64 { +        option domain-name "creativia6.tg16.gathering.org"; + +	range6 2a06:5840:42b::1000 2a06:5840:42b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/creativia7.conf b/examples/tg16/dhcp/conf-v6/creativia7.conf new file mode 100644 index 0000000..88e9753 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/creativia7.conf @@ -0,0 +1,10 @@ +zone creativia7.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:42c::/64 { +        option domain-name "creativia7.tg16.gathering.org"; + +	range6 2a06:5840:42c::1000 2a06:5840:42c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/creativiasw1.conf b/examples/tg16/dhcp/conf-v6/creativiasw1.conf new file mode 100644 index 0000000..2f2b7bb --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/creativiasw1.conf @@ -0,0 +1,10 @@ +zone creativiasw1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:43a::/64 { +        option domain-name "creativiasw1.tg16.gathering.org"; + +	range6 2a06:5840:43a::1000 2a06:5840:43a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/crew.conf b/examples/tg16/dhcp/conf-v6/crew.conf new file mode 100644 index 0000000..6d2cdde --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/crew.conf @@ -0,0 +1,10 @@ +zone crew.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:66::/64 { +        option domain-name "crew.tg16.gathering.org"; + +	range6 2a06:5840:66::1000 2a06:5840:66::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/deltaker-srv.conf b/examples/tg16/dhcp/conf-v6/deltaker-srv.conf new file mode 100644 index 0000000..1ef2211 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/deltaker-srv.conf @@ -0,0 +1,10 @@ +zone deltaker-srv.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:95a::/64 { +        option domain-name "deltaker-srv.tg16.gathering.org"; + +	range6 2a06:5840:95a::1000 2a06:5840:95a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e1-3.conf b/examples/tg16/dhcp/conf-v6/e1-3.conf new file mode 100644 index 0000000..641fc9e --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e1-3.conf @@ -0,0 +1,10 @@ +zone e1-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:0a::/64 { +        option domain-name "e1-3.tg16.gathering.org"; + +	range6 2a06:5840:a::1000 2a06:5840:a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e1-4.conf b/examples/tg16/dhcp/conf-v6/e1-4.conf new file mode 100644 index 0000000..ac39370 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e1-4.conf @@ -0,0 +1,10 @@ +zone e1-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:0b::/64 { +        option domain-name "e1-4.tg16.gathering.org"; + +	range6 2a06:5840:b::1000 2a06:5840:b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e11-1.conf b/examples/tg16/dhcp/conf-v6/e11-1.conf new file mode 100644 index 0000000..dff406e --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e11-1.conf @@ -0,0 +1,10 @@ +zone e11-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:3d::/64 { +        option domain-name "e11-1.tg16.gathering.org"; + +	range6 2a06:5840:3d::1000 2a06:5840:3d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e11-2.conf b/examples/tg16/dhcp/conf-v6/e11-2.conf new file mode 100644 index 0000000..901eec9 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e11-2.conf @@ -0,0 +1,10 @@ +zone e11-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:4a::/64 { +        option domain-name "e11-2.tg16.gathering.org"; + +	range6 2a06:5840:4a::1000 2a06:5840:4a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e11-3.conf b/examples/tg16/dhcp/conf-v6/e11-3.conf new file mode 100644 index 0000000..ddf8544 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e11-3.conf @@ -0,0 +1,10 @@ +zone e11-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:4b::/64 { +        option domain-name "e11-3.tg16.gathering.org"; + +	range6 2a06:5840:4b::1000 2a06:5840:4b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e11-4.conf b/examples/tg16/dhcp/conf-v6/e11-4.conf new file mode 100644 index 0000000..09e8832 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e11-4.conf @@ -0,0 +1,10 @@ +zone e11-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:4c::/64 { +        option domain-name "e11-4.tg16.gathering.org"; + +	range6 2a06:5840:4c::1000 2a06:5840:4c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e13-1.conf b/examples/tg16/dhcp/conf-v6/e13-1.conf new file mode 100644 index 0000000..d6738f7 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e13-1.conf @@ -0,0 +1,10 @@ +zone e13-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:4d::/64 { +        option domain-name "e13-1.tg16.gathering.org"; + +	range6 2a06:5840:4d::1000 2a06:5840:4d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e13-2.conf b/examples/tg16/dhcp/conf-v6/e13-2.conf new file mode 100644 index 0000000..b181391 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e13-2.conf @@ -0,0 +1,10 @@ +zone e13-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:5a::/64 { +        option domain-name "e13-2.tg16.gathering.org"; + +	range6 2a06:5840:5a::1000 2a06:5840:5a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e13-3.conf b/examples/tg16/dhcp/conf-v6/e13-3.conf new file mode 100644 index 0000000..81d5a52 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e13-3.conf @@ -0,0 +1,10 @@ +zone e13-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:5b::/64 { +        option domain-name "e13-3.tg16.gathering.org"; + +	range6 2a06:5840:5b::1000 2a06:5840:5b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e13-4.conf b/examples/tg16/dhcp/conf-v6/e13-4.conf new file mode 100644 index 0000000..9ac46e2 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e13-4.conf @@ -0,0 +1,10 @@ +zone e13-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:5c::/64 { +        option domain-name "e13-4.tg16.gathering.org"; + +	range6 2a06:5840:5c::1000 2a06:5840:5c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e15-1.conf b/examples/tg16/dhcp/conf-v6/e15-1.conf new file mode 100644 index 0000000..6636313 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e15-1.conf @@ -0,0 +1,10 @@ +zone e15-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:5d::/64 { +        option domain-name "e15-1.tg16.gathering.org"; + +	range6 2a06:5840:5d::1000 2a06:5840:5d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e15-2.conf b/examples/tg16/dhcp/conf-v6/e15-2.conf new file mode 100644 index 0000000..5b86101 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e15-2.conf @@ -0,0 +1,10 @@ +zone e15-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:6a::/64 { +        option domain-name "e15-2.tg16.gathering.org"; + +	range6 2a06:5840:6a::1000 2a06:5840:6a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e15-3.conf b/examples/tg16/dhcp/conf-v6/e15-3.conf new file mode 100644 index 0000000..53bd984 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e15-3.conf @@ -0,0 +1,10 @@ +zone e15-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:6b::/64 { +        option domain-name "e15-3.tg16.gathering.org"; + +	range6 2a06:5840:6b::1000 2a06:5840:6b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e15-4.conf b/examples/tg16/dhcp/conf-v6/e15-4.conf new file mode 100644 index 0000000..9c59ac7 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e15-4.conf @@ -0,0 +1,10 @@ +zone e15-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:6c::/64 { +        option domain-name "e15-4.tg16.gathering.org"; + +	range6 2a06:5840:6c::1000 2a06:5840:6c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e17-1.conf b/examples/tg16/dhcp/conf-v6/e17-1.conf new file mode 100644 index 0000000..9c02818 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e17-1.conf @@ -0,0 +1,10 @@ +zone e17-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:6d::/64 { +        option domain-name "e17-1.tg16.gathering.org"; + +	range6 2a06:5840:6d::1000 2a06:5840:6d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e17-2.conf b/examples/tg16/dhcp/conf-v6/e17-2.conf new file mode 100644 index 0000000..01d6fc9 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e17-2.conf @@ -0,0 +1,10 @@ +zone e17-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:7a::/64 { +        option domain-name "e17-2.tg16.gathering.org"; + +	range6 2a06:5840:7a::1000 2a06:5840:7a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e17-3.conf b/examples/tg16/dhcp/conf-v6/e17-3.conf new file mode 100644 index 0000000..237d344 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e17-3.conf @@ -0,0 +1,10 @@ +zone e17-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:7b::/64 { +        option domain-name "e17-3.tg16.gathering.org"; + +	range6 2a06:5840:7b::1000 2a06:5840:7b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e17-4.conf b/examples/tg16/dhcp/conf-v6/e17-4.conf new file mode 100644 index 0000000..401b8e7 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e17-4.conf @@ -0,0 +1,10 @@ +zone e17-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:7c::/64 { +        option domain-name "e17-4.tg16.gathering.org"; + +	range6 2a06:5840:7c::1000 2a06:5840:7c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e19-1.conf b/examples/tg16/dhcp/conf-v6/e19-1.conf new file mode 100644 index 0000000..d3a17d6 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e19-1.conf @@ -0,0 +1,10 @@ +zone e19-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:7d::/64 { +        option domain-name "e19-1.tg16.gathering.org"; + +	range6 2a06:5840:7d::1000 2a06:5840:7d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e19-2.conf b/examples/tg16/dhcp/conf-v6/e19-2.conf new file mode 100644 index 0000000..bc9fd22 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e19-2.conf @@ -0,0 +1,10 @@ +zone e19-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:8a::/64 { +        option domain-name "e19-2.tg16.gathering.org"; + +	range6 2a06:5840:8a::1000 2a06:5840:8a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e19-3.conf b/examples/tg16/dhcp/conf-v6/e19-3.conf new file mode 100644 index 0000000..58c89ea --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e19-3.conf @@ -0,0 +1,10 @@ +zone e19-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:8b::/64 { +        option domain-name "e19-3.tg16.gathering.org"; + +	range6 2a06:5840:8b::1000 2a06:5840:8b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e19-4.conf b/examples/tg16/dhcp/conf-v6/e19-4.conf new file mode 100644 index 0000000..3932f18 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e19-4.conf @@ -0,0 +1,10 @@ +zone e19-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:8c::/64 { +        option domain-name "e19-4.tg16.gathering.org"; + +	range6 2a06:5840:8c::1000 2a06:5840:8c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e21-1.conf b/examples/tg16/dhcp/conf-v6/e21-1.conf new file mode 100644 index 0000000..c9b846b --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e21-1.conf @@ -0,0 +1,10 @@ +zone e21-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:8d::/64 { +        option domain-name "e21-1.tg16.gathering.org"; + +	range6 2a06:5840:8d::1000 2a06:5840:8d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e21-2.conf b/examples/tg16/dhcp/conf-v6/e21-2.conf new file mode 100644 index 0000000..f8db1cc --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e21-2.conf @@ -0,0 +1,10 @@ +zone e21-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:9a::/64 { +        option domain-name "e21-2.tg16.gathering.org"; + +	range6 2a06:5840:9a::1000 2a06:5840:9a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e21-3.conf b/examples/tg16/dhcp/conf-v6/e21-3.conf new file mode 100644 index 0000000..5d98a95 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e21-3.conf @@ -0,0 +1,10 @@ +zone e21-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:9b::/64 { +        option domain-name "e21-3.tg16.gathering.org"; + +	range6 2a06:5840:9b::1000 2a06:5840:9b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e21-4.conf b/examples/tg16/dhcp/conf-v6/e21-4.conf new file mode 100644 index 0000000..7a7d425 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e21-4.conf @@ -0,0 +1,10 @@ +zone e21-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:9c::/64 { +        option domain-name "e21-4.tg16.gathering.org"; + +	range6 2a06:5840:9c::1000 2a06:5840:9c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e23-1.conf b/examples/tg16/dhcp/conf-v6/e23-1.conf new file mode 100644 index 0000000..e0bd0ac --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e23-1.conf @@ -0,0 +1,10 @@ +zone e23-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:9d::/64 { +        option domain-name "e23-1.tg16.gathering.org"; + +	range6 2a06:5840:9d::1000 2a06:5840:9d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e23-2.conf b/examples/tg16/dhcp/conf-v6/e23-2.conf new file mode 100644 index 0000000..9a116a9 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e23-2.conf @@ -0,0 +1,10 @@ +zone e23-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:10a::/64 { +        option domain-name "e23-2.tg16.gathering.org"; + +	range6 2a06:5840:10a::1000 2a06:5840:10a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e23-3.conf b/examples/tg16/dhcp/conf-v6/e23-3.conf new file mode 100644 index 0000000..c04ae39 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e23-3.conf @@ -0,0 +1,10 @@ +zone e23-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:10b::/64 { +        option domain-name "e23-3.tg16.gathering.org"; + +	range6 2a06:5840:10b::1000 2a06:5840:10b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e23-4.conf b/examples/tg16/dhcp/conf-v6/e23-4.conf new file mode 100644 index 0000000..ae7abcb --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e23-4.conf @@ -0,0 +1,10 @@ +zone e23-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:10c::/64 { +        option domain-name "e23-4.tg16.gathering.org"; + +	range6 2a06:5840:10c::1000 2a06:5840:10c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e25-1.conf b/examples/tg16/dhcp/conf-v6/e25-1.conf new file mode 100644 index 0000000..3287ad7 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e25-1.conf @@ -0,0 +1,10 @@ +zone e25-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:10d::/64 { +        option domain-name "e25-1.tg16.gathering.org"; + +	range6 2a06:5840:10d::1000 2a06:5840:10d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e25-2.conf b/examples/tg16/dhcp/conf-v6/e25-2.conf new file mode 100644 index 0000000..f0804cb --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e25-2.conf @@ -0,0 +1,10 @@ +zone e25-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:11a::/64 { +        option domain-name "e25-2.tg16.gathering.org"; + +	range6 2a06:5840:11a::1000 2a06:5840:11a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e27-1.conf b/examples/tg16/dhcp/conf-v6/e27-1.conf new file mode 100644 index 0000000..a632f3d --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e27-1.conf @@ -0,0 +1,10 @@ +zone e27-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:11b::/64 { +        option domain-name "e27-1.tg16.gathering.org"; + +	range6 2a06:5840:11b::1000 2a06:5840:11b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e27-2.conf b/examples/tg16/dhcp/conf-v6/e27-2.conf new file mode 100644 index 0000000..7665acc --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e27-2.conf @@ -0,0 +1,10 @@ +zone e27-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:11c::/64 { +        option domain-name "e27-2.tg16.gathering.org"; + +	range6 2a06:5840:11c::1000 2a06:5840:11c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e29-1.conf b/examples/tg16/dhcp/conf-v6/e29-1.conf new file mode 100644 index 0000000..ccb2c73 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e29-1.conf @@ -0,0 +1,10 @@ +zone e29-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:11d::/64 { +        option domain-name "e29-1.tg16.gathering.org"; + +	range6 2a06:5840:11d::1000 2a06:5840:11d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e29-2.conf b/examples/tg16/dhcp/conf-v6/e29-2.conf new file mode 100644 index 0000000..ab98128 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e29-2.conf @@ -0,0 +1,10 @@ +zone e29-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:12a::/64 { +        option domain-name "e29-2.tg16.gathering.org"; + +	range6 2a06:5840:12a::1000 2a06:5840:12a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e3-3.conf b/examples/tg16/dhcp/conf-v6/e3-3.conf new file mode 100644 index 0000000..b1dd0c8 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e3-3.conf @@ -0,0 +1,10 @@ +zone e3-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:0c::/64 { +        option domain-name "e3-3.tg16.gathering.org"; + +	range6 2a06:5840:c::1000 2a06:5840:c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e3-4.conf b/examples/tg16/dhcp/conf-v6/e3-4.conf new file mode 100644 index 0000000..d1ecd39 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e3-4.conf @@ -0,0 +1,10 @@ +zone e3-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:0d::/64 { +        option domain-name "e3-4.tg16.gathering.org"; + +	range6 2a06:5840:d::1000 2a06:5840:d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e31-1.conf b/examples/tg16/dhcp/conf-v6/e31-1.conf new file mode 100644 index 0000000..707301c --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e31-1.conf @@ -0,0 +1,10 @@ +zone e31-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:12b::/64 { +        option domain-name "e31-1.tg16.gathering.org"; + +	range6 2a06:5840:12b::1000 2a06:5840:12b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e31-2.conf b/examples/tg16/dhcp/conf-v6/e31-2.conf new file mode 100644 index 0000000..8c708ed --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e31-2.conf @@ -0,0 +1,10 @@ +zone e31-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:12c::/64 { +        option domain-name "e31-2.tg16.gathering.org"; + +	range6 2a06:5840:12c::1000 2a06:5840:12c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e33-1.conf b/examples/tg16/dhcp/conf-v6/e33-1.conf new file mode 100644 index 0000000..0777328 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e33-1.conf @@ -0,0 +1,10 @@ +zone e33-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:12d::/64 { +        option domain-name "e33-1.tg16.gathering.org"; + +	range6 2a06:5840:12d::1000 2a06:5840:12d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e33-2.conf b/examples/tg16/dhcp/conf-v6/e33-2.conf new file mode 100644 index 0000000..d895ce9 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e33-2.conf @@ -0,0 +1,10 @@ +zone e33-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:13a::/64 { +        option domain-name "e33-2.tg16.gathering.org"; + +	range6 2a06:5840:13a::1000 2a06:5840:13a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e35-1.conf b/examples/tg16/dhcp/conf-v6/e35-1.conf new file mode 100644 index 0000000..4b066dc --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e35-1.conf @@ -0,0 +1,10 @@ +zone e35-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:13b::/64 { +        option domain-name "e35-1.tg16.gathering.org"; + +	range6 2a06:5840:13b::1000 2a06:5840:13b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e35-2.conf b/examples/tg16/dhcp/conf-v6/e35-2.conf new file mode 100644 index 0000000..4244d44 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e35-2.conf @@ -0,0 +1,10 @@ +zone e35-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:13c::/64 { +        option domain-name "e35-2.tg16.gathering.org"; + +	range6 2a06:5840:13c::1000 2a06:5840:13c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e37-1.conf b/examples/tg16/dhcp/conf-v6/e37-1.conf new file mode 100644 index 0000000..de46acf --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e37-1.conf @@ -0,0 +1,10 @@ +zone e37-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:13d::/64 { +        option domain-name "e37-1.tg16.gathering.org"; + +	range6 2a06:5840:13d::1000 2a06:5840:13d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e37-2.conf b/examples/tg16/dhcp/conf-v6/e37-2.conf new file mode 100644 index 0000000..cfa044f --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e37-2.conf @@ -0,0 +1,10 @@ +zone e37-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:14a::/64 { +        option domain-name "e37-2.tg16.gathering.org"; + +	range6 2a06:5840:14a::1000 2a06:5840:14a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e39-1.conf b/examples/tg16/dhcp/conf-v6/e39-1.conf new file mode 100644 index 0000000..2824a9a --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e39-1.conf @@ -0,0 +1,10 @@ +zone e39-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:14b::/64 { +        option domain-name "e39-1.tg16.gathering.org"; + +	range6 2a06:5840:14b::1000 2a06:5840:14b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e39-2.conf b/examples/tg16/dhcp/conf-v6/e39-2.conf new file mode 100644 index 0000000..2e16863 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e39-2.conf @@ -0,0 +1,10 @@ +zone e39-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:14c::/64 { +        option domain-name "e39-2.tg16.gathering.org"; + +	range6 2a06:5840:14c::1000 2a06:5840:14c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e41-1.conf b/examples/tg16/dhcp/conf-v6/e41-1.conf new file mode 100644 index 0000000..270aadc --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e41-1.conf @@ -0,0 +1,10 @@ +zone e41-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:14d::/64 { +        option domain-name "e41-1.tg16.gathering.org"; + +	range6 2a06:5840:14d::1000 2a06:5840:14d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e41-2.conf b/examples/tg16/dhcp/conf-v6/e41-2.conf new file mode 100644 index 0000000..6b9c9f6 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e41-2.conf @@ -0,0 +1,10 @@ +zone e41-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:15a::/64 { +        option domain-name "e41-2.tg16.gathering.org"; + +	range6 2a06:5840:15a::1000 2a06:5840:15a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e41-3.conf b/examples/tg16/dhcp/conf-v6/e41-3.conf new file mode 100644 index 0000000..323423d --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e41-3.conf @@ -0,0 +1,10 @@ +zone e41-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:15b::/64 { +        option domain-name "e41-3.tg16.gathering.org"; + +	range6 2a06:5840:15b::1000 2a06:5840:15b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e41-4.conf b/examples/tg16/dhcp/conf-v6/e41-4.conf new file mode 100644 index 0000000..5ac3070 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e41-4.conf @@ -0,0 +1,10 @@ +zone e41-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:15c::/64 { +        option domain-name "e41-4.tg16.gathering.org"; + +	range6 2a06:5840:15c::1000 2a06:5840:15c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e43-1.conf b/examples/tg16/dhcp/conf-v6/e43-1.conf new file mode 100644 index 0000000..388e07a --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e43-1.conf @@ -0,0 +1,10 @@ +zone e43-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:15d::/64 { +        option domain-name "e43-1.tg16.gathering.org"; + +	range6 2a06:5840:15d::1000 2a06:5840:15d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e43-2.conf b/examples/tg16/dhcp/conf-v6/e43-2.conf new file mode 100644 index 0000000..a62b579 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e43-2.conf @@ -0,0 +1,10 @@ +zone e43-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:16a::/64 { +        option domain-name "e43-2.tg16.gathering.org"; + +	range6 2a06:5840:16a::1000 2a06:5840:16a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e43-3.conf b/examples/tg16/dhcp/conf-v6/e43-3.conf new file mode 100644 index 0000000..999ab7f --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e43-3.conf @@ -0,0 +1,10 @@ +zone e43-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:16b::/64 { +        option domain-name "e43-3.tg16.gathering.org"; + +	range6 2a06:5840:16b::1000 2a06:5840:16b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e43-4.conf b/examples/tg16/dhcp/conf-v6/e43-4.conf new file mode 100644 index 0000000..bcd0ac7 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e43-4.conf @@ -0,0 +1,10 @@ +zone e43-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:16c::/64 { +        option domain-name "e43-4.tg16.gathering.org"; + +	range6 2a06:5840:16c::1000 2a06:5840:16c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e45-1.conf b/examples/tg16/dhcp/conf-v6/e45-1.conf new file mode 100644 index 0000000..5f49ab3 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e45-1.conf @@ -0,0 +1,10 @@ +zone e45-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:16d::/64 { +        option domain-name "e45-1.tg16.gathering.org"; + +	range6 2a06:5840:16d::1000 2a06:5840:16d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e45-2.conf b/examples/tg16/dhcp/conf-v6/e45-2.conf new file mode 100644 index 0000000..c6a5a9f --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e45-2.conf @@ -0,0 +1,10 @@ +zone e45-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:17a::/64 { +        option domain-name "e45-2.tg16.gathering.org"; + +	range6 2a06:5840:17a::1000 2a06:5840:17a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e45-3.conf b/examples/tg16/dhcp/conf-v6/e45-3.conf new file mode 100644 index 0000000..9a86d60 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e45-3.conf @@ -0,0 +1,10 @@ +zone e45-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:17b::/64 { +        option domain-name "e45-3.tg16.gathering.org"; + +	range6 2a06:5840:17b::1000 2a06:5840:17b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e45-4.conf b/examples/tg16/dhcp/conf-v6/e45-4.conf new file mode 100644 index 0000000..68a82ec --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e45-4.conf @@ -0,0 +1,10 @@ +zone e45-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:17c::/64 { +        option domain-name "e45-4.tg16.gathering.org"; + +	range6 2a06:5840:17c::1000 2a06:5840:17c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e47-1.conf b/examples/tg16/dhcp/conf-v6/e47-1.conf new file mode 100644 index 0000000..a088229 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e47-1.conf @@ -0,0 +1,10 @@ +zone e47-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:17d::/64 { +        option domain-name "e47-1.tg16.gathering.org"; + +	range6 2a06:5840:17d::1000 2a06:5840:17d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e47-2.conf b/examples/tg16/dhcp/conf-v6/e47-2.conf new file mode 100644 index 0000000..82cf9e1 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e47-2.conf @@ -0,0 +1,10 @@ +zone e47-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:18a::/64 { +        option domain-name "e47-2.tg16.gathering.org"; + +	range6 2a06:5840:18a::1000 2a06:5840:18a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e47-3.conf b/examples/tg16/dhcp/conf-v6/e47-3.conf new file mode 100644 index 0000000..1e14154 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e47-3.conf @@ -0,0 +1,10 @@ +zone e47-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:18b::/64 { +        option domain-name "e47-3.tg16.gathering.org"; + +	range6 2a06:5840:18b::1000 2a06:5840:18b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e47-4.conf b/examples/tg16/dhcp/conf-v6/e47-4.conf new file mode 100644 index 0000000..a4997f8 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e47-4.conf @@ -0,0 +1,10 @@ +zone e47-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:18c::/64 { +        option domain-name "e47-4.tg16.gathering.org"; + +	range6 2a06:5840:18c::1000 2a06:5840:18c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e49-1.conf b/examples/tg16/dhcp/conf-v6/e49-1.conf new file mode 100644 index 0000000..2c041e7 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e49-1.conf @@ -0,0 +1,10 @@ +zone e49-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:18d::/64 { +        option domain-name "e49-1.tg16.gathering.org"; + +	range6 2a06:5840:18d::1000 2a06:5840:18d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e49-2.conf b/examples/tg16/dhcp/conf-v6/e49-2.conf new file mode 100644 index 0000000..b6e369d --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e49-2.conf @@ -0,0 +1,10 @@ +zone e49-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:19a::/64 { +        option domain-name "e49-2.tg16.gathering.org"; + +	range6 2a06:5840:19a::1000 2a06:5840:19a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e49-3.conf b/examples/tg16/dhcp/conf-v6/e49-3.conf new file mode 100644 index 0000000..abae7a9 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e49-3.conf @@ -0,0 +1,10 @@ +zone e49-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:19b::/64 { +        option domain-name "e49-3.tg16.gathering.org"; + +	range6 2a06:5840:19b::1000 2a06:5840:19b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e49-4.conf b/examples/tg16/dhcp/conf-v6/e49-4.conf new file mode 100644 index 0000000..32167ae --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e49-4.conf @@ -0,0 +1,10 @@ +zone e49-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:19c::/64 { +        option domain-name "e49-4.tg16.gathering.org"; + +	range6 2a06:5840:19c::1000 2a06:5840:19c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e5-2.conf b/examples/tg16/dhcp/conf-v6/e5-2.conf new file mode 100644 index 0000000..899ef9e --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e5-2.conf @@ -0,0 +1,10 @@ +zone e5-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:1a::/64 { +        option domain-name "e5-2.tg16.gathering.org"; + +	range6 2a06:5840:1a::1000 2a06:5840:1a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e5-3.conf b/examples/tg16/dhcp/conf-v6/e5-3.conf new file mode 100644 index 0000000..6db1a35 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e5-3.conf @@ -0,0 +1,10 @@ +zone e5-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:1b::/64 { +        option domain-name "e5-3.tg16.gathering.org"; + +	range6 2a06:5840:1b::1000 2a06:5840:1b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e5-4.conf b/examples/tg16/dhcp/conf-v6/e5-4.conf new file mode 100644 index 0000000..5581fbd --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e5-4.conf @@ -0,0 +1,10 @@ +zone e5-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:1c::/64 { +        option domain-name "e5-4.tg16.gathering.org"; + +	range6 2a06:5840:1c::1000 2a06:5840:1c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e51-1.conf b/examples/tg16/dhcp/conf-v6/e51-1.conf new file mode 100644 index 0000000..9a5300d --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e51-1.conf @@ -0,0 +1,10 @@ +zone e51-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:19d::/64 { +        option domain-name "e51-1.tg16.gathering.org"; + +	range6 2a06:5840:19d::1000 2a06:5840:19d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e51-2.conf b/examples/tg16/dhcp/conf-v6/e51-2.conf new file mode 100644 index 0000000..f60fc85 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e51-2.conf @@ -0,0 +1,10 @@ +zone e51-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:20a::/64 { +        option domain-name "e51-2.tg16.gathering.org"; + +	range6 2a06:5840:20a::1000 2a06:5840:20a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e51-3.conf b/examples/tg16/dhcp/conf-v6/e51-3.conf new file mode 100644 index 0000000..0783786 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e51-3.conf @@ -0,0 +1,10 @@ +zone e51-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:20b::/64 { +        option domain-name "e51-3.tg16.gathering.org"; + +	range6 2a06:5840:20b::1000 2a06:5840:20b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e51-4.conf b/examples/tg16/dhcp/conf-v6/e51-4.conf new file mode 100644 index 0000000..4a1bb78 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e51-4.conf @@ -0,0 +1,10 @@ +zone e51-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:20c::/64 { +        option domain-name "e51-4.tg16.gathering.org"; + +	range6 2a06:5840:20c::1000 2a06:5840:20c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e53-1.conf b/examples/tg16/dhcp/conf-v6/e53-1.conf new file mode 100644 index 0000000..bcd10b0 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e53-1.conf @@ -0,0 +1,10 @@ +zone e53-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:20d::/64 { +        option domain-name "e53-1.tg16.gathering.org"; + +	range6 2a06:5840:20d::1000 2a06:5840:20d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e53-2.conf b/examples/tg16/dhcp/conf-v6/e53-2.conf new file mode 100644 index 0000000..b54a912 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e53-2.conf @@ -0,0 +1,10 @@ +zone e53-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:21a::/64 { +        option domain-name "e53-2.tg16.gathering.org"; + +	range6 2a06:5840:21a::1000 2a06:5840:21a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e53-3.conf b/examples/tg16/dhcp/conf-v6/e53-3.conf new file mode 100644 index 0000000..1998517 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e53-3.conf @@ -0,0 +1,10 @@ +zone e53-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:21b::/64 { +        option domain-name "e53-3.tg16.gathering.org"; + +	range6 2a06:5840:21b::1000 2a06:5840:21b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e53-4.conf b/examples/tg16/dhcp/conf-v6/e53-4.conf new file mode 100644 index 0000000..c31c228 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e53-4.conf @@ -0,0 +1,10 @@ +zone e53-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:21c::/64 { +        option domain-name "e53-4.tg16.gathering.org"; + +	range6 2a06:5840:21c::1000 2a06:5840:21c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e55-1.conf b/examples/tg16/dhcp/conf-v6/e55-1.conf new file mode 100644 index 0000000..5cd1196 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e55-1.conf @@ -0,0 +1,10 @@ +zone e55-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:21d::/64 { +        option domain-name "e55-1.tg16.gathering.org"; + +	range6 2a06:5840:21d::1000 2a06:5840:21d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e55-2.conf b/examples/tg16/dhcp/conf-v6/e55-2.conf new file mode 100644 index 0000000..ab7071d --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e55-2.conf @@ -0,0 +1,10 @@ +zone e55-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:22a::/64 { +        option domain-name "e55-2.tg16.gathering.org"; + +	range6 2a06:5840:22a::1000 2a06:5840:22a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e55-3.conf b/examples/tg16/dhcp/conf-v6/e55-3.conf new file mode 100644 index 0000000..7e5d95e --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e55-3.conf @@ -0,0 +1,10 @@ +zone e55-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:22b::/64 { +        option domain-name "e55-3.tg16.gathering.org"; + +	range6 2a06:5840:22b::1000 2a06:5840:22b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e55-4.conf b/examples/tg16/dhcp/conf-v6/e55-4.conf new file mode 100644 index 0000000..86237d3 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e55-4.conf @@ -0,0 +1,10 @@ +zone e55-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:22c::/64 { +        option domain-name "e55-4.tg16.gathering.org"; + +	range6 2a06:5840:22c::1000 2a06:5840:22c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e57-1.conf b/examples/tg16/dhcp/conf-v6/e57-1.conf new file mode 100644 index 0000000..82b18f2 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e57-1.conf @@ -0,0 +1,10 @@ +zone e57-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:22d::/64 { +        option domain-name "e57-1.tg16.gathering.org"; + +	range6 2a06:5840:22d::1000 2a06:5840:22d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e57-2.conf b/examples/tg16/dhcp/conf-v6/e57-2.conf new file mode 100644 index 0000000..61cc53e --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e57-2.conf @@ -0,0 +1,10 @@ +zone e57-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:23a::/64 { +        option domain-name "e57-2.tg16.gathering.org"; + +	range6 2a06:5840:23a::1000 2a06:5840:23a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e57-3.conf b/examples/tg16/dhcp/conf-v6/e57-3.conf new file mode 100644 index 0000000..fd26b1a --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e57-3.conf @@ -0,0 +1,10 @@ +zone e57-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:23b::/64 { +        option domain-name "e57-3.tg16.gathering.org"; + +	range6 2a06:5840:23b::1000 2a06:5840:23b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e57-4.conf b/examples/tg16/dhcp/conf-v6/e57-4.conf new file mode 100644 index 0000000..7b4326e --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e57-4.conf @@ -0,0 +1,10 @@ +zone e57-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:23c::/64 { +        option domain-name "e57-4.tg16.gathering.org"; + +	range6 2a06:5840:23c::1000 2a06:5840:23c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e59-1.conf b/examples/tg16/dhcp/conf-v6/e59-1.conf new file mode 100644 index 0000000..3233fc0 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e59-1.conf @@ -0,0 +1,10 @@ +zone e59-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:23d::/64 { +        option domain-name "e59-1.tg16.gathering.org"; + +	range6 2a06:5840:23d::1000 2a06:5840:23d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e59-2.conf b/examples/tg16/dhcp/conf-v6/e59-2.conf new file mode 100644 index 0000000..5e3844c --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e59-2.conf @@ -0,0 +1,10 @@ +zone e59-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:24a::/64 { +        option domain-name "e59-2.tg16.gathering.org"; + +	range6 2a06:5840:24a::1000 2a06:5840:24a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e59-3.conf b/examples/tg16/dhcp/conf-v6/e59-3.conf new file mode 100644 index 0000000..90f1354 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e59-3.conf @@ -0,0 +1,10 @@ +zone e59-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:24b::/64 { +        option domain-name "e59-3.tg16.gathering.org"; + +	range6 2a06:5840:24b::1000 2a06:5840:24b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e59-4.conf b/examples/tg16/dhcp/conf-v6/e59-4.conf new file mode 100644 index 0000000..103f49d --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e59-4.conf @@ -0,0 +1,10 @@ +zone e59-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:24c::/64 { +        option domain-name "e59-4.tg16.gathering.org"; + +	range6 2a06:5840:24c::1000 2a06:5840:24c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e61-1.conf b/examples/tg16/dhcp/conf-v6/e61-1.conf new file mode 100644 index 0000000..e44de98 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e61-1.conf @@ -0,0 +1,10 @@ +zone e61-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:24d::/64 { +        option domain-name "e61-1.tg16.gathering.org"; + +	range6 2a06:5840:24d::1000 2a06:5840:24d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e61-2.conf b/examples/tg16/dhcp/conf-v6/e61-2.conf new file mode 100644 index 0000000..8a354b3 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e61-2.conf @@ -0,0 +1,10 @@ +zone e61-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:25a::/64 { +        option domain-name "e61-2.tg16.gathering.org"; + +	range6 2a06:5840:25a::1000 2a06:5840:25a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e61-3.conf b/examples/tg16/dhcp/conf-v6/e61-3.conf new file mode 100644 index 0000000..a4bdf37 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e61-3.conf @@ -0,0 +1,10 @@ +zone e61-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:25b::/64 { +        option domain-name "e61-3.tg16.gathering.org"; + +	range6 2a06:5840:25b::1000 2a06:5840:25b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e61-4.conf b/examples/tg16/dhcp/conf-v6/e61-4.conf new file mode 100644 index 0000000..a843110 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e61-4.conf @@ -0,0 +1,10 @@ +zone e61-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:25c::/64 { +        option domain-name "e61-4.tg16.gathering.org"; + +	range6 2a06:5840:25c::1000 2a06:5840:25c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e63-1.conf b/examples/tg16/dhcp/conf-v6/e63-1.conf new file mode 100644 index 0000000..8d91330 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e63-1.conf @@ -0,0 +1,10 @@ +zone e63-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:25d::/64 { +        option domain-name "e63-1.tg16.gathering.org"; + +	range6 2a06:5840:25d::1000 2a06:5840:25d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e63-2.conf b/examples/tg16/dhcp/conf-v6/e63-2.conf new file mode 100644 index 0000000..a87ef5b --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e63-2.conf @@ -0,0 +1,10 @@ +zone e63-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:26a::/64 { +        option domain-name "e63-2.tg16.gathering.org"; + +	range6 2a06:5840:26a::1000 2a06:5840:26a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e63-3.conf b/examples/tg16/dhcp/conf-v6/e63-3.conf new file mode 100644 index 0000000..d13080b --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e63-3.conf @@ -0,0 +1,10 @@ +zone e63-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:26b::/64 { +        option domain-name "e63-3.tg16.gathering.org"; + +	range6 2a06:5840:26b::1000 2a06:5840:26b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e63-4.conf b/examples/tg16/dhcp/conf-v6/e63-4.conf new file mode 100644 index 0000000..5edcc3d --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e63-4.conf @@ -0,0 +1,10 @@ +zone e63-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:26c::/64 { +        option domain-name "e63-4.tg16.gathering.org"; + +	range6 2a06:5840:26c::1000 2a06:5840:26c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e65-1.conf b/examples/tg16/dhcp/conf-v6/e65-1.conf new file mode 100644 index 0000000..f5b4e18 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e65-1.conf @@ -0,0 +1,10 @@ +zone e65-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:26d::/64 { +        option domain-name "e65-1.tg16.gathering.org"; + +	range6 2a06:5840:26d::1000 2a06:5840:26d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e65-2.conf b/examples/tg16/dhcp/conf-v6/e65-2.conf new file mode 100644 index 0000000..4b17ede --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e65-2.conf @@ -0,0 +1,10 @@ +zone e65-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:27a::/64 { +        option domain-name "e65-2.tg16.gathering.org"; + +	range6 2a06:5840:27a::1000 2a06:5840:27a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e65-3.conf b/examples/tg16/dhcp/conf-v6/e65-3.conf new file mode 100644 index 0000000..be7f057 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e65-3.conf @@ -0,0 +1,10 @@ +zone e65-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:27b::/64 { +        option domain-name "e65-3.tg16.gathering.org"; + +	range6 2a06:5840:27b::1000 2a06:5840:27b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e65-4.conf b/examples/tg16/dhcp/conf-v6/e65-4.conf new file mode 100644 index 0000000..f898840 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e65-4.conf @@ -0,0 +1,10 @@ +zone e65-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:27c::/64 { +        option domain-name "e65-4.tg16.gathering.org"; + +	range6 2a06:5840:27c::1000 2a06:5840:27c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e67-1.conf b/examples/tg16/dhcp/conf-v6/e67-1.conf new file mode 100644 index 0000000..266b526 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e67-1.conf @@ -0,0 +1,10 @@ +zone e67-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:27d::/64 { +        option domain-name "e67-1.tg16.gathering.org"; + +	range6 2a06:5840:27d::1000 2a06:5840:27d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e67-2.conf b/examples/tg16/dhcp/conf-v6/e67-2.conf new file mode 100644 index 0000000..defa688 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e67-2.conf @@ -0,0 +1,10 @@ +zone e67-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:28a::/64 { +        option domain-name "e67-2.tg16.gathering.org"; + +	range6 2a06:5840:28a::1000 2a06:5840:28a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e67-3.conf b/examples/tg16/dhcp/conf-v6/e67-3.conf new file mode 100644 index 0000000..2f48830 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e67-3.conf @@ -0,0 +1,10 @@ +zone e67-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:28b::/64 { +        option domain-name "e67-3.tg16.gathering.org"; + +	range6 2a06:5840:28b::1000 2a06:5840:28b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e67-4.conf b/examples/tg16/dhcp/conf-v6/e67-4.conf new file mode 100644 index 0000000..9e576b9 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e67-4.conf @@ -0,0 +1,10 @@ +zone e67-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:28c::/64 { +        option domain-name "e67-4.tg16.gathering.org"; + +	range6 2a06:5840:28c::1000 2a06:5840:28c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e69-1.conf b/examples/tg16/dhcp/conf-v6/e69-1.conf new file mode 100644 index 0000000..07595dc --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e69-1.conf @@ -0,0 +1,10 @@ +zone e69-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:28d::/64 { +        option domain-name "e69-1.tg16.gathering.org"; + +	range6 2a06:5840:28d::1000 2a06:5840:28d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e69-2.conf b/examples/tg16/dhcp/conf-v6/e69-2.conf new file mode 100644 index 0000000..26efc98 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e69-2.conf @@ -0,0 +1,10 @@ +zone e69-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:29a::/64 { +        option domain-name "e69-2.tg16.gathering.org"; + +	range6 2a06:5840:29a::1000 2a06:5840:29a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e7-1.conf b/examples/tg16/dhcp/conf-v6/e7-1.conf new file mode 100644 index 0000000..a2f85e0 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e7-1.conf @@ -0,0 +1,10 @@ +zone e7-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:1d::/64 { +        option domain-name "e7-1.tg16.gathering.org"; + +	range6 2a06:5840:1d::1000 2a06:5840:1d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e7-2.conf b/examples/tg16/dhcp/conf-v6/e7-2.conf new file mode 100644 index 0000000..90ac12a --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e7-2.conf @@ -0,0 +1,10 @@ +zone e7-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:2a::/64 { +        option domain-name "e7-2.tg16.gathering.org"; + +	range6 2a06:5840:2a::1000 2a06:5840:2a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e7-3.conf b/examples/tg16/dhcp/conf-v6/e7-3.conf new file mode 100644 index 0000000..fb20723 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e7-3.conf @@ -0,0 +1,10 @@ +zone e7-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:2b::/64 { +        option domain-name "e7-3.tg16.gathering.org"; + +	range6 2a06:5840:2b::1000 2a06:5840:2b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e7-4.conf b/examples/tg16/dhcp/conf-v6/e7-4.conf new file mode 100644 index 0000000..7de096d --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e7-4.conf @@ -0,0 +1,10 @@ +zone e7-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:2c::/64 { +        option domain-name "e7-4.tg16.gathering.org"; + +	range6 2a06:5840:2c::1000 2a06:5840:2c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e71-1.conf b/examples/tg16/dhcp/conf-v6/e71-1.conf new file mode 100644 index 0000000..c1c0b87 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e71-1.conf @@ -0,0 +1,10 @@ +zone e71-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:29b::/64 { +        option domain-name "e71-1.tg16.gathering.org"; + +	range6 2a06:5840:29b::1000 2a06:5840:29b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e71-2.conf b/examples/tg16/dhcp/conf-v6/e71-2.conf new file mode 100644 index 0000000..54f4950 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e71-2.conf @@ -0,0 +1,10 @@ +zone e71-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:29c::/64 { +        option domain-name "e71-2.tg16.gathering.org"; + +	range6 2a06:5840:29c::1000 2a06:5840:29c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e73-1.conf b/examples/tg16/dhcp/conf-v6/e73-1.conf new file mode 100644 index 0000000..0c37fbb --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e73-1.conf @@ -0,0 +1,10 @@ +zone e73-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:29d::/64 { +        option domain-name "e73-1.tg16.gathering.org"; + +	range6 2a06:5840:29d::1000 2a06:5840:29d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e73-2.conf b/examples/tg16/dhcp/conf-v6/e73-2.conf new file mode 100644 index 0000000..614ff52 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e73-2.conf @@ -0,0 +1,10 @@ +zone e73-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:30a::/64 { +        option domain-name "e73-2.tg16.gathering.org"; + +	range6 2a06:5840:30a::1000 2a06:5840:30a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e75-1.conf b/examples/tg16/dhcp/conf-v6/e75-1.conf new file mode 100644 index 0000000..64dfa33 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e75-1.conf @@ -0,0 +1,10 @@ +zone e75-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:30b::/64 { +        option domain-name "e75-1.tg16.gathering.org"; + +	range6 2a06:5840:30b::1000 2a06:5840:30b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e75-2.conf b/examples/tg16/dhcp/conf-v6/e75-2.conf new file mode 100644 index 0000000..0b76ed1 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e75-2.conf @@ -0,0 +1,10 @@ +zone e75-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:30c::/64 { +        option domain-name "e75-2.tg16.gathering.org"; + +	range6 2a06:5840:30c::1000 2a06:5840:30c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e77-1.conf b/examples/tg16/dhcp/conf-v6/e77-1.conf new file mode 100644 index 0000000..bb0b615 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e77-1.conf @@ -0,0 +1,10 @@ +zone e77-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:30d::/64 { +        option domain-name "e77-1.tg16.gathering.org"; + +	range6 2a06:5840:30d::1000 2a06:5840:30d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e77-2.conf b/examples/tg16/dhcp/conf-v6/e77-2.conf new file mode 100644 index 0000000..4e9f3ff --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e77-2.conf @@ -0,0 +1,10 @@ +zone e77-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:31a::/64 { +        option domain-name "e77-2.tg16.gathering.org"; + +	range6 2a06:5840:31a::1000 2a06:5840:31a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e79-1.conf b/examples/tg16/dhcp/conf-v6/e79-1.conf new file mode 100644 index 0000000..565c8e3 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e79-1.conf @@ -0,0 +1,10 @@ +zone e79-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:31b::/64 { +        option domain-name "e79-1.tg16.gathering.org"; + +	range6 2a06:5840:31b::1000 2a06:5840:31b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e79-2.conf b/examples/tg16/dhcp/conf-v6/e79-2.conf new file mode 100644 index 0000000..0f9af2a --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e79-2.conf @@ -0,0 +1,10 @@ +zone e79-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:31c::/64 { +        option domain-name "e79-2.tg16.gathering.org"; + +	range6 2a06:5840:31c::1000 2a06:5840:31c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e81-1.conf b/examples/tg16/dhcp/conf-v6/e81-1.conf new file mode 100644 index 0000000..a4e033f --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e81-1.conf @@ -0,0 +1,10 @@ +zone e81-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:31d::/64 { +        option domain-name "e81-1.tg16.gathering.org"; + +	range6 2a06:5840:31d::1000 2a06:5840:31d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e81-2.conf b/examples/tg16/dhcp/conf-v6/e81-2.conf new file mode 100644 index 0000000..792616e --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e81-2.conf @@ -0,0 +1,10 @@ +zone e81-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:32a::/64 { +        option domain-name "e81-2.tg16.gathering.org"; + +	range6 2a06:5840:32a::1000 2a06:5840:32a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e83-2.conf b/examples/tg16/dhcp/conf-v6/e83-2.conf new file mode 100644 index 0000000..57b2ba6 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e83-2.conf @@ -0,0 +1,10 @@ +zone e83-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:32b::/64 { +        option domain-name "e83-2.tg16.gathering.org"; + +	range6 2a06:5840:32b::1000 2a06:5840:32b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e85-2.conf b/examples/tg16/dhcp/conf-v6/e85-2.conf new file mode 100644 index 0000000..aa74e70 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e85-2.conf @@ -0,0 +1,10 @@ +zone e85-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:32c::/64 { +        option domain-name "e85-2.tg16.gathering.org"; + +	range6 2a06:5840:32c::1000 2a06:5840:32c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e9-1.conf b/examples/tg16/dhcp/conf-v6/e9-1.conf new file mode 100644 index 0000000..d311e73 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e9-1.conf @@ -0,0 +1,10 @@ +zone e9-1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:2d::/64 { +        option domain-name "e9-1.tg16.gathering.org"; + +	range6 2a06:5840:2d::1000 2a06:5840:2d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e9-2.conf b/examples/tg16/dhcp/conf-v6/e9-2.conf new file mode 100644 index 0000000..73cfc48 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e9-2.conf @@ -0,0 +1,10 @@ +zone e9-2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:3a::/64 { +        option domain-name "e9-2.tg16.gathering.org"; + +	range6 2a06:5840:3a::1000 2a06:5840:3a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e9-3.conf b/examples/tg16/dhcp/conf-v6/e9-3.conf new file mode 100644 index 0000000..c8221f1 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e9-3.conf @@ -0,0 +1,10 @@ +zone e9-3.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:3b::/64 { +        option domain-name "e9-3.tg16.gathering.org"; + +	range6 2a06:5840:3b::1000 2a06:5840:3b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/e9-4.conf b/examples/tg16/dhcp/conf-v6/e9-4.conf new file mode 100644 index 0000000..8f2b1b8 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/e9-4.conf @@ -0,0 +1,10 @@ +zone e9-4.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:3c::/64 { +        option domain-name "e9-4.tg16.gathering.org"; + +	range6 2a06:5840:3c::1000 2a06:5840:3c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/event.conf b/examples/tg16/dhcp/conf-v6/event.conf new file mode 100644 index 0000000..dfd19a8 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/event.conf @@ -0,0 +1,10 @@ +zone event.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:60::/64 { +        option domain-name "event.tg16.gathering.org"; + +	range6 2a06:5840:60::1000 2a06:5840:60::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/flankenord.conf b/examples/tg16/dhcp/conf-v6/flankenord.conf new file mode 100644 index 0000000..a32cec8 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/flankenord.conf @@ -0,0 +1,10 @@ +zone flankenord.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:41b::/64 { +        option domain-name "flankenord.tg16.gathering.org"; + +	range6 2a06:5840:41b::1000 2a06:5840:41b::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/flankesor.conf b/examples/tg16/dhcp/conf-v6/flankesor.conf new file mode 100644 index 0000000..2c17bb4 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/flankesor.conf @@ -0,0 +1,10 @@ +zone flankesor.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:41c::/64 { +        option domain-name "flankesor.tg16.gathering.org"; + +	range6 2a06:5840:41c::1000 2a06:5840:41c::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/foh.conf b/examples/tg16/dhcp/conf-v6/foh.conf new file mode 100644 index 0000000..64011a1 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/foh.conf @@ -0,0 +1,10 @@ +zone foh.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:68::/64 { +        option domain-name "foh.tg16.gathering.org"; + +	range6 2a06:5840:68::1000 2a06:5840:68::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/fugleberget.conf b/examples/tg16/dhcp/conf-v6/fugleberget.conf new file mode 100644 index 0000000..e4c3964 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/fugleberget.conf @@ -0,0 +1,10 @@ +zone fugleberget.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:65::/64 { +        option domain-name "fugleberget.tg16.gathering.org"; + +	range6 2a06:5840:65::1000 2a06:5840:65::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/game.conf b/examples/tg16/dhcp/conf-v6/game.conf new file mode 100644 index 0000000..d864882 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/game.conf @@ -0,0 +1,10 @@ +zone game.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:76::/64 { +        option domain-name "game.tg16.gathering.org"; + +	range6 2a06:5840:76::1000 2a06:5840:76::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/gamestage.conf b/examples/tg16/dhcp/conf-v6/gamestage.conf new file mode 100644 index 0000000..e6a1c89 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/gamestage.conf @@ -0,0 +1,10 @@ +zone gamestage.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:78::/64 { +        option domain-name "gamestage.tg16.gathering.org"; + +	range6 2a06:5840:78::1000 2a06:5840:78::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/highlights.conf b/examples/tg16/dhcp/conf-v6/highlights.conf new file mode 100644 index 0000000..33cb8da --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/highlights.conf @@ -0,0 +1,10 @@ +zone highlights.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:81a::/64 { +        option domain-name "highlights.tg16.gathering.org"; + +	range6 2a06:5840:81a::1000 2a06:5840:81a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/hon.conf b/examples/tg16/dhcp/conf-v6/hon.conf new file mode 100644 index 0000000..ae0b2a8 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/hon.conf @@ -0,0 +1,10 @@ +zone hon.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:79::/64 { +        option domain-name "hon.tg16.gathering.org"; + +	range6 2a06:5840:79::1000 2a06:5840:79::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/info.conf b/examples/tg16/dhcp/conf-v6/info.conf new file mode 100644 index 0000000..4ea37e0 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/info.conf @@ -0,0 +1,10 @@ +zone info.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:63::/64 { +        option domain-name "info.tg16.gathering.org"; + +	range6 2a06:5840:63::1000 2a06:5840:63::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/innsjekk.conf b/examples/tg16/dhcp/conf-v6/innsjekk.conf new file mode 100644 index 0000000..c53caf9 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/innsjekk.conf @@ -0,0 +1,10 @@ +zone innsjekk.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:69::/64 { +        option domain-name "innsjekk.tg16.gathering.org"; + +	range6 2a06:5840:69::1000 2a06:5840:69::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/logistikk.conf b/examples/tg16/dhcp/conf-v6/logistikk.conf new file mode 100644 index 0000000..a52da22 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/logistikk.conf @@ -0,0 +1,10 @@ +zone logistikk.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:59::/64 { +        option domain-name "logistikk.tg16.gathering.org"; + +	range6 2a06:5840:59::1000 2a06:5840:59::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/medic.conf b/examples/tg16/dhcp/conf-v6/medic.conf new file mode 100644 index 0000000..1de5c76 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/medic.conf @@ -0,0 +1,10 @@ +zone medic.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:71::/64 { +        option domain-name "medic.tg16.gathering.org"; + +	range6 2a06:5840:71::1000 2a06:5840:71::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/noc.conf b/examples/tg16/dhcp/conf-v6/noc.conf new file mode 100644 index 0000000..f53f1b0 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/noc.conf @@ -0,0 +1,10 @@ +zone noc.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5841:150a::/64 { +        option domain-name "noc.tg16.gathering.org"; + +	range6 2a06:5841:150a::1000 2a06:5841:150a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/north.conf b/examples/tg16/dhcp/conf-v6/north.conf new file mode 100644 index 0000000..2cb91e8 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/north.conf @@ -0,0 +1,10 @@ +zone north.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:64::/64 { +        option domain-name "north.tg16.gathering.org"; + +	range6 2a06:5840:64::1000 2a06:5840:64::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/presse.conf b/examples/tg16/dhcp/conf-v6/presse.conf new file mode 100644 index 0000000..35bddf3 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/presse.conf @@ -0,0 +1,10 @@ +zone presse.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:73::/64 { +        option domain-name "presse.tg16.gathering.org"; + +	range6 2a06:5840:73::1000 2a06:5840:73::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/resepsjon.conf b/examples/tg16/dhcp/conf-v6/resepsjon.conf new file mode 100644 index 0000000..3c742fe --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/resepsjon.conf @@ -0,0 +1,10 @@ +zone resepsjon.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:70::/64 { +        option domain-name "resepsjon.tg16.gathering.org"; + +	range6 2a06:5840:70::1000 2a06:5840:70::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/santander-temp.conf b/examples/tg16/dhcp/conf-v6/santander-temp.conf new file mode 100644 index 0000000..592bb45 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/santander-temp.conf @@ -0,0 +1,10 @@ +zone santander-temp.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:93::/64 { +        option domain-name "santander-temp.tg16.gathering.org"; + +	range6 2a06:5840:93::1000 2a06:5840:93::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/security.conf b/examples/tg16/dhcp/conf-v6/security.conf new file mode 100644 index 0000000..7187d73 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/security.conf @@ -0,0 +1,10 @@ +zone security.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:74::/64 { +        option domain-name "security.tg16.gathering.org"; + +	range6 2a06:5840:74::1000 2a06:5840:74::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/security2.conf b/examples/tg16/dhcp/conf-v6/security2.conf new file mode 100644 index 0000000..65f497c --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/security2.conf @@ -0,0 +1,10 @@ +zone security2.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:75::/64 { +        option domain-name "security2.tg16.gathering.org"; + +	range6 2a06:5840:75::1000 2a06:5840:75::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/sponsor.conf b/examples/tg16/dhcp/conf-v6/sponsor.conf new file mode 100644 index 0000000..ab77aa5 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/sponsor.conf @@ -0,0 +1,10 @@ +zone sponsor.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:72::/64 { +        option domain-name "sponsor.tg16.gathering.org"; + +	range6 2a06:5840:72::1000 2a06:5840:72::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/stage.conf b/examples/tg16/dhcp/conf-v6/stage.conf new file mode 100644 index 0000000..82b8088 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/stage.conf @@ -0,0 +1,10 @@ +zone stage.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:67::/64 { +        option domain-name "stage.tg16.gathering.org"; + +	range6 2a06:5840:67::1000 2a06:5840:67::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/streamer1.conf b/examples/tg16/dhcp/conf-v6/streamer1.conf new file mode 100644 index 0000000..26451da --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/streamer1.conf @@ -0,0 +1,10 @@ +zone streamer1.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:41d::/64 { +        option domain-name "streamer1.tg16.gathering.org"; + +	range6 2a06:5840:41d::1000 2a06:5840:41d::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/tech-wlan.conf b/examples/tg16/dhcp/conf-v6/tech-wlan.conf new file mode 100644 index 0000000..3b196c4 --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/tech-wlan.conf @@ -0,0 +1,10 @@ +zone tech-wlan.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5841:151a::/64 { +        option domain-name "tech-wlan.tg16.gathering.org"; + +	range6 2a06:5841:151a::1000 2a06:5841:151a::9999; +} + diff --git a/examples/tg16/dhcp/conf-v6/wlan.conf b/examples/tg16/dhcp/conf-v6/wlan.conf new file mode 100644 index 0000000..230e36a --- /dev/null +++ b/examples/tg16/dhcp/conf-v6/wlan.conf @@ -0,0 +1,10 @@ +zone wlan.tg16.gathering.org { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +subnet6 2a06:5840:96::/64 { +        option domain-name "wlan.tg16.gathering.org"; + +	range6 2a06:5840:96::1000 2a06:5840:96::9999; +} + diff --git a/examples/tg16/dhcp/dhcpd.conf b/examples/tg16/dhcp/dhcpd.conf new file mode 100644 index 0000000..dd57404 --- /dev/null +++ b/examples/tg16/dhcp/dhcpd.conf @@ -0,0 +1,60 @@ +# GENERATED BY make-dhcpd.pl + +# 60 min leasetime, 120 min max +default-lease-time 3600; +max-lease-time 7200; + +# make server authorative +authoritative; + +# Don't let clients set their own FQDN +ignore client-updates; + +# enable DDNS +ddns-update-style interim; + +# set ddns-hostname +if exists host-name { +        ddns-hostname = lcase(option host-name); +} elsif exists fqdn.hostname { +        ddns-hostname = lcase(option fqdn.hostname); +} else { +        ddns-hostname = binary-to-ascii(10, 8, "-", leased-address); +} + +# Domain name (unless overriden elsewhere) +option domain-name "tg16.gathering.org"; +option domain-name-servers 185.110.149.2, 185.110.148.2; + +key DHCP_UPDATER { +        algorithm HMAC-MD5.SIG-ALG.REG.INT; +        secret <removed>; +} + +# Servernetwork, Tele +subnet 185.110.149.0 netmask 255.255.255.192 {} +	 +# Servernetwork, NOC +# Add small range at the end for PXE +subnet 185.110.148.0 netmask 255.255.255.192 { +	option subnet-mask 255.255.255.192; +	option routers 185.110.148.1; + +	# No DDNS +	ddns-updates off; +	ddns-hostname = none; +	ddns-domainname = none; +	 +	# supershort leasetime +	default-lease-time 300; +	max-lease-time 600; +	 +	range 185.110.148.48 185.110.148.62; +} + +include "/etc/dhcp/v4-revzones.conf"; +include "/etc/dhcp/v4-generated-include.conf"; +include "/etc/dhcp/v4-pxe-boot.conf"; +include "/etc/dhcp/v4-wlc.conf"; +include "/etc/dhcp/v4-voip.conf"; + diff --git a/examples/tg16/dhcp/dhcpd6.conf b/examples/tg16/dhcp/dhcpd6.conf new file mode 100644 index 0000000..1ca21a2 --- /dev/null +++ b/examples/tg16/dhcp/dhcpd6.conf @@ -0,0 +1,64 @@ +# GENERATED BY make-dhcpd6.pl + +# IPv6 address valid lifetime +#  (at the end the address is no longer usable by the client) +#  (usual IPv6 default is 30 days) +default-lease-time 3600; + +# IPv6 address preferred lifetime +#  (at the end the address is deprecated, i.e., the client should use +#   other addresses for new connections) +#  (usual IPv6 default is 7 days) +preferred-lifetime 3600; + +# T1, the delay before Renew +#  (default is 1/2 preferred lifetime) +option dhcp-renewal-time 1800; + +# T2, the delay before Rebind (if Renews failed) +#  (default is 3/4 preferred lifetime) +option dhcp-rebinding-time 1800; + +# Enable RFC 5007 support +allow leasequery; + +# Set preference to 255 (maximum) in order to avoid waiting for +# additional servers when there is only one +option dhcp6.preference 255; + +# Server side command to enable rapid-commit (2 packet exchange) +option dhcp6.rapid-commit; + +# The delay before information-request refresh +#  (minimum is 10 minutes, maximum one day, default is to not refresh) +#  (set to 6 hours) +option dhcp6.info-refresh-time 21600; + +# Don't let clients set their own FQDN +ignore client-updates; + +# disable ddns +ddns-update-style none; + +# make server authorative +authoritative; + +# Global definitions for name server address(es) and domain search list +option domain-name "tg16.gathering.org"; +option dhcp6.name-servers 2a06:5841:149a::2, 2a06:5841:1337::2; + +key DHCP_UPDATER { +        algorithm HMAC-MD5.SIG-ALG.REG.INT; +        secret <removed>; +} + +subnet6 2a06:5841:149a::/64 {} +subnet6 2a06:5841:1337::/64 { +	range6 2a06:5841:1337::8000 2a06:5841:1337::9999; +} + +include "/etc/dhcp/v6-generated-include.conf"; +include "/etc/dhcp/v6-pxe-boot.conf"; +#include "/etc/dhcp/v6-wlc.conf"; +#include "/etc/dhcp/v6-voip.conf"; + diff --git a/examples/tg16/dhcp/v4-generated-include.conf b/examples/tg16/dhcp/v4-generated-include.conf new file mode 100644 index 0000000..90312c1 --- /dev/null +++ b/examples/tg16/dhcp/v4-generated-include.conf @@ -0,0 +1,179 @@ +include "/etc/dhcp/conf-v4/ap-creativia.conf"; +include "/etc/dhcp/conf-v4/ap-distro0.conf"; +include "/etc/dhcp/conf-v4/ap-distro1.conf"; +include "/etc/dhcp/conf-v4/ap-distro2.conf"; +include "/etc/dhcp/conf-v4/ap-distro3.conf"; +include "/etc/dhcp/conf-v4/ap-distro4.conf"; +include "/etc/dhcp/conf-v4/ap-distro5.conf"; +include "/etc/dhcp/conf-v4/ap-distro6.conf"; +include "/etc/dhcp/conf-v4/ap-distro7.conf"; +include "/etc/dhcp/conf-v4/ap-stand.conf"; +include "/etc/dhcp/conf-v4/auditorium.conf"; +include "/etc/dhcp/conf-v4/creativia-village.conf"; +include "/etc/dhcp/conf-v4/creativia.conf"; +include "/etc/dhcp/conf-v4/creativia1.conf"; +include "/etc/dhcp/conf-v4/creativia2.conf"; +include "/etc/dhcp/conf-v4/creativia3.conf"; +include "/etc/dhcp/conf-v4/creativia4.conf"; +include "/etc/dhcp/conf-v4/creativia5.conf"; +include "/etc/dhcp/conf-v4/creativia6.conf"; +include "/etc/dhcp/conf-v4/creativia7.conf"; +include "/etc/dhcp/conf-v4/creativiasw1.conf"; +include "/etc/dhcp/conf-v4/crew.conf"; +include "/etc/dhcp/conf-v4/deltaker-srv.conf"; +include "/etc/dhcp/conf-v4/e1-3.conf"; +include "/etc/dhcp/conf-v4/e1-4.conf"; +include "/etc/dhcp/conf-v4/e11-1.conf"; +include "/etc/dhcp/conf-v4/e11-2.conf"; +include "/etc/dhcp/conf-v4/e11-3.conf"; +include "/etc/dhcp/conf-v4/e11-4.conf"; +include "/etc/dhcp/conf-v4/e13-1.conf"; +include "/etc/dhcp/conf-v4/e13-2.conf"; +include "/etc/dhcp/conf-v4/e13-3.conf"; +include "/etc/dhcp/conf-v4/e13-4.conf"; +include "/etc/dhcp/conf-v4/e15-1.conf"; +include "/etc/dhcp/conf-v4/e15-2.conf"; +include "/etc/dhcp/conf-v4/e15-3.conf"; +include "/etc/dhcp/conf-v4/e15-4.conf"; +include "/etc/dhcp/conf-v4/e17-1.conf"; +include "/etc/dhcp/conf-v4/e17-2.conf"; +include "/etc/dhcp/conf-v4/e17-3.conf"; +include "/etc/dhcp/conf-v4/e17-4.conf"; +include "/etc/dhcp/conf-v4/e19-1.conf"; +include "/etc/dhcp/conf-v4/e19-2.conf"; +include "/etc/dhcp/conf-v4/e19-3.conf"; +include "/etc/dhcp/conf-v4/e19-4.conf"; +include "/etc/dhcp/conf-v4/e21-1.conf"; +include "/etc/dhcp/conf-v4/e21-2.conf"; +include "/etc/dhcp/conf-v4/e21-3.conf"; +include "/etc/dhcp/conf-v4/e21-4.conf"; +include "/etc/dhcp/conf-v4/e23-1.conf"; +include "/etc/dhcp/conf-v4/e23-2.conf"; +include "/etc/dhcp/conf-v4/e23-3.conf"; +include "/etc/dhcp/conf-v4/e23-4.conf"; +include "/etc/dhcp/conf-v4/e25-1.conf"; +include "/etc/dhcp/conf-v4/e25-2.conf"; +include "/etc/dhcp/conf-v4/e27-1.conf"; +include "/etc/dhcp/conf-v4/e27-2.conf"; +include "/etc/dhcp/conf-v4/e29-1.conf"; +include "/etc/dhcp/conf-v4/e29-2.conf"; +include "/etc/dhcp/conf-v4/e3-3.conf"; +include "/etc/dhcp/conf-v4/e3-4.conf"; +include "/etc/dhcp/conf-v4/e31-1.conf"; +include "/etc/dhcp/conf-v4/e31-2.conf"; +include "/etc/dhcp/conf-v4/e33-1.conf"; +include "/etc/dhcp/conf-v4/e33-2.conf"; +include "/etc/dhcp/conf-v4/e35-1.conf"; +include "/etc/dhcp/conf-v4/e35-2.conf"; +include "/etc/dhcp/conf-v4/e37-1.conf"; +include "/etc/dhcp/conf-v4/e37-2.conf"; +include "/etc/dhcp/conf-v4/e39-1.conf"; +include "/etc/dhcp/conf-v4/e39-2.conf"; +include "/etc/dhcp/conf-v4/e41-1.conf"; +include "/etc/dhcp/conf-v4/e41-2.conf"; +include "/etc/dhcp/conf-v4/e41-3.conf"; +include "/etc/dhcp/conf-v4/e41-4.conf"; +include "/etc/dhcp/conf-v4/e43-1.conf"; +include "/etc/dhcp/conf-v4/e43-2.conf"; +include "/etc/dhcp/conf-v4/e43-3.conf"; +include "/etc/dhcp/conf-v4/e43-4.conf"; +include "/etc/dhcp/conf-v4/e45-1.conf"; +include "/etc/dhcp/conf-v4/e45-2.conf"; +include "/etc/dhcp/conf-v4/e45-3.conf"; +include "/etc/dhcp/conf-v4/e45-4.conf"; +include "/etc/dhcp/conf-v4/e47-1.conf"; +include "/etc/dhcp/conf-v4/e47-2.conf"; +include "/etc/dhcp/conf-v4/e47-3.conf"; +include "/etc/dhcp/conf-v4/e47-4.conf"; +include "/etc/dhcp/conf-v4/e49-1.conf"; +include "/etc/dhcp/conf-v4/e49-2.conf"; +include "/etc/dhcp/conf-v4/e49-3.conf"; +include "/etc/dhcp/conf-v4/e49-4.conf"; +include "/etc/dhcp/conf-v4/e5-2.conf"; +include "/etc/dhcp/conf-v4/e5-3.conf"; +include "/etc/dhcp/conf-v4/e5-4.conf"; +include "/etc/dhcp/conf-v4/e51-1.conf"; +include "/etc/dhcp/conf-v4/e51-2.conf"; +include "/etc/dhcp/conf-v4/e51-3.conf"; +include "/etc/dhcp/conf-v4/e51-4.conf"; +include "/etc/dhcp/conf-v4/e53-1.conf"; +include "/etc/dhcp/conf-v4/e53-2.conf"; +include "/etc/dhcp/conf-v4/e53-3.conf"; +include "/etc/dhcp/conf-v4/e53-4.conf"; +include "/etc/dhcp/conf-v4/e55-1.conf"; +include "/etc/dhcp/conf-v4/e55-2.conf"; +include "/etc/dhcp/conf-v4/e55-3.conf"; +include "/etc/dhcp/conf-v4/e55-4.conf"; +include "/etc/dhcp/conf-v4/e57-1.conf"; +include "/etc/dhcp/conf-v4/e57-2.conf"; +include "/etc/dhcp/conf-v4/e57-3.conf"; +include "/etc/dhcp/conf-v4/e57-4.conf"; +include "/etc/dhcp/conf-v4/e59-1.conf"; +include "/etc/dhcp/conf-v4/e59-2.conf"; +include "/etc/dhcp/conf-v4/e59-3.conf"; +include "/etc/dhcp/conf-v4/e59-4.conf"; +include "/etc/dhcp/conf-v4/e61-1.conf"; +include "/etc/dhcp/conf-v4/e61-2.conf"; +include "/etc/dhcp/conf-v4/e61-3.conf"; +include "/etc/dhcp/conf-v4/e61-4.conf"; +include "/etc/dhcp/conf-v4/e63-1.conf"; +include "/etc/dhcp/conf-v4/e63-2.conf"; +include "/etc/dhcp/conf-v4/e63-3.conf"; +include "/etc/dhcp/conf-v4/e63-4.conf"; +include "/etc/dhcp/conf-v4/e65-1.conf"; +include "/etc/dhcp/conf-v4/e65-2.conf"; +include "/etc/dhcp/conf-v4/e65-3.conf"; +include "/etc/dhcp/conf-v4/e65-4.conf"; +include "/etc/dhcp/conf-v4/e67-1.conf"; +include "/etc/dhcp/conf-v4/e67-2.conf"; +include "/etc/dhcp/conf-v4/e67-3.conf"; +include "/etc/dhcp/conf-v4/e67-4.conf"; +include "/etc/dhcp/conf-v4/e69-1.conf"; +include "/etc/dhcp/conf-v4/e69-2.conf"; +include "/etc/dhcp/conf-v4/e7-1.conf"; +include "/etc/dhcp/conf-v4/e7-2.conf"; +include "/etc/dhcp/conf-v4/e7-3.conf"; +include "/etc/dhcp/conf-v4/e7-4.conf"; +include "/etc/dhcp/conf-v4/e71-1.conf"; +include "/etc/dhcp/conf-v4/e71-2.conf"; +include "/etc/dhcp/conf-v4/e73-1.conf"; +include "/etc/dhcp/conf-v4/e73-2.conf"; +include "/etc/dhcp/conf-v4/e75-1.conf"; +include "/etc/dhcp/conf-v4/e75-2.conf"; +include "/etc/dhcp/conf-v4/e77-1.conf"; +include "/etc/dhcp/conf-v4/e77-2.conf"; +include "/etc/dhcp/conf-v4/e79-1.conf"; +include "/etc/dhcp/conf-v4/e79-2.conf"; +include "/etc/dhcp/conf-v4/e81-1.conf"; +include "/etc/dhcp/conf-v4/e81-2.conf"; +include "/etc/dhcp/conf-v4/e83-2.conf"; +include "/etc/dhcp/conf-v4/e85-2.conf"; +include "/etc/dhcp/conf-v4/e9-1.conf"; +include "/etc/dhcp/conf-v4/e9-2.conf"; +include "/etc/dhcp/conf-v4/e9-3.conf"; +include "/etc/dhcp/conf-v4/e9-4.conf"; +include "/etc/dhcp/conf-v4/event.conf"; +include "/etc/dhcp/conf-v4/flankenord.conf"; +include "/etc/dhcp/conf-v4/flankesor.conf"; +include "/etc/dhcp/conf-v4/foh.conf"; +include "/etc/dhcp/conf-v4/fugleberget.conf"; +include "/etc/dhcp/conf-v4/game.conf"; +include "/etc/dhcp/conf-v4/gamestage.conf"; +include "/etc/dhcp/conf-v4/highlights.conf"; +include "/etc/dhcp/conf-v4/hon.conf"; +include "/etc/dhcp/conf-v4/info.conf"; +include "/etc/dhcp/conf-v4/innsjekk.conf"; +include "/etc/dhcp/conf-v4/logistikk.conf"; +include "/etc/dhcp/conf-v4/medic.conf"; +include "/etc/dhcp/conf-v4/noc.conf"; +include "/etc/dhcp/conf-v4/north.conf"; +include "/etc/dhcp/conf-v4/presse.conf"; +include "/etc/dhcp/conf-v4/resepsjon.conf"; +include "/etc/dhcp/conf-v4/santander-temp.conf"; +include "/etc/dhcp/conf-v4/security.conf"; +include "/etc/dhcp/conf-v4/security2.conf"; +include "/etc/dhcp/conf-v4/sponsor.conf"; +include "/etc/dhcp/conf-v4/stage.conf"; +include "/etc/dhcp/conf-v4/streamer1.conf"; +include "/etc/dhcp/conf-v4/tech-wlan.conf"; +include "/etc/dhcp/conf-v4/wlan.conf"; diff --git a/examples/tg16/dhcp/v4-pxe-boot.conf b/examples/tg16/dhcp/v4-pxe-boot.conf new file mode 100644 index 0000000..9de565f --- /dev/null +++ b/examples/tg16/dhcp/v4-pxe-boot.conf @@ -0,0 +1,10 @@ +option arch code 93 = unsigned integer 16; + +if option arch = 00:07 { +	filename "bootx64.efi"; +} else { + 	filename "pxelinux.0"; +} + +next-server 185.110.148.2; + diff --git a/examples/tg16/dhcp/v4-revzones.conf b/examples/tg16/dhcp/v4-revzones.conf new file mode 100644 index 0000000..17d872d --- /dev/null +++ b/examples/tg16/dhcp/v4-revzones.conf @@ -0,0 +1,528 @@ +zone 0.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 1.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 2.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 3.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 4.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 5.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 6.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 7.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 8.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 9.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 10.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 11.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 12.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 13.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 14.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 15.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 16.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 17.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 18.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 19.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 20.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 21.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 22.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 23.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 24.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 25.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 26.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 27.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 28.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 29.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 30.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 31.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 32.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 33.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 34.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 35.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 36.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 37.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 38.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 39.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 40.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 41.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 42.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 43.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 44.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 45.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 46.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 47.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 48.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 49.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 50.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 51.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 52.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 53.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 54.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 55.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 56.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 57.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 58.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 59.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 60.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 61.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 62.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 63.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 64.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 65.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 66.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 67.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 68.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 69.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 70.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 71.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 72.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 73.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 74.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 75.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 76.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 77.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 78.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 79.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 80.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 81.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 82.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 83.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 84.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 85.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 86.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 87.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 88.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 89.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 90.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 91.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 92.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 93.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 94.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 95.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 96.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 97.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 98.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 99.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 100.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 101.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 102.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 103.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 104.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 105.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 106.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 107.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 108.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 109.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 110.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 111.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 112.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 113.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 114.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 115.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 116.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 117.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 118.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 119.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 120.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 121.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 122.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 123.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 124.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 125.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 126.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 127.92.88.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 148.110.185.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 149.110.185.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 150.110.185.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} +zone 151.110.185.in-addr.arpa. { +	primary 127.0.0.1; +	key DHCP_UPDATER; +} diff --git a/examples/tg16/dhcp/v4-voip.conf b/examples/tg16/dhcp/v4-voip.conf new file mode 100644 index 0000000..8983d75 --- /dev/null +++ b/examples/tg16/dhcp/v4-voip.conf @@ -0,0 +1,18 @@ +option space CiscoVOIP; +option CiscoVOIP.cm-tftp-server code 150  = array of ip-address; + +class "cisco-voip-lan" { +	match if substring (option vendor-class-identifier, 0, 28) = "Cisco Systems, Inc. IP Phone"; +	vendor-option-space CiscoVOIP; +	log( info, concat( "LOLOPHONE: " , option vendor-class-identifier ));  +	option CiscoVOIP.cm-tftp-server <removed>; +	next-server <removed>; +} + +class "cisco-voip-wlan" { +        match if substring (option vendor-class-identifier, 0, 33) = "Cisco Systems Inc. Wireless Phone"; +        vendor-option-space CiscoVOIP; +        log( info, concat( "BANANAPHONE: " , option vendor-class-identifier )); +        option CiscoVOIP.cm-tftp-server <removed>; +        next-server <removed>; +} diff --git a/examples/tg16/dhcp/v4-wlc.conf b/examples/tg16/dhcp/v4-wlc.conf new file mode 100644 index 0000000..663d48e --- /dev/null +++ b/examples/tg16/dhcp/v4-wlc.conf @@ -0,0 +1,11 @@ +option space WLC; +option WLC.controller-address code 43 = text; +set vendor-string = option vendor-class-identifier; + +class "access-points" { +	# Number of characters has to match the substring +	# I.e  if "Access Point", you have to use (0, 12) +	match if substring (option vendor-class-identifier, 0, 12) = "Access Point"; +	vendor-option-space WLC; +	option WLC.controller-address "185.110.148.14"; +} diff --git a/examples/tg16/dhcp/v6-generated-include.conf b/examples/tg16/dhcp/v6-generated-include.conf new file mode 100644 index 0000000..f27b8dc --- /dev/null +++ b/examples/tg16/dhcp/v6-generated-include.conf @@ -0,0 +1,179 @@ +include "/etc/dhcp/conf-v6/ap-creativia.conf"; +include "/etc/dhcp/conf-v6/ap-distro0.conf"; +include "/etc/dhcp/conf-v6/ap-distro1.conf"; +include "/etc/dhcp/conf-v6/ap-distro2.conf"; +include "/etc/dhcp/conf-v6/ap-distro3.conf"; +include "/etc/dhcp/conf-v6/ap-distro4.conf"; +include "/etc/dhcp/conf-v6/ap-distro5.conf"; +include "/etc/dhcp/conf-v6/ap-distro6.conf"; +include "/etc/dhcp/conf-v6/ap-distro7.conf"; +include "/etc/dhcp/conf-v6/ap-stand.conf"; +include "/etc/dhcp/conf-v6/auditorium.conf"; +include "/etc/dhcp/conf-v6/creativia-village.conf"; +include "/etc/dhcp/conf-v6/creativia.conf"; +include "/etc/dhcp/conf-v6/creativia1.conf"; +include "/etc/dhcp/conf-v6/creativia2.conf"; +include "/etc/dhcp/conf-v6/creativia3.conf"; +include "/etc/dhcp/conf-v6/creativia4.conf"; +include "/etc/dhcp/conf-v6/creativia5.conf"; +include "/etc/dhcp/conf-v6/creativia6.conf"; +include "/etc/dhcp/conf-v6/creativia7.conf"; +include "/etc/dhcp/conf-v6/creativiasw1.conf"; +include "/etc/dhcp/conf-v6/crew.conf"; +include "/etc/dhcp/conf-v6/deltaker-srv.conf"; +include "/etc/dhcp/conf-v6/e1-3.conf"; +include "/etc/dhcp/conf-v6/e1-4.conf"; +include "/etc/dhcp/conf-v6/e11-1.conf"; +include "/etc/dhcp/conf-v6/e11-2.conf"; +include "/etc/dhcp/conf-v6/e11-3.conf"; +include "/etc/dhcp/conf-v6/e11-4.conf"; +include "/etc/dhcp/conf-v6/e13-1.conf"; +include "/etc/dhcp/conf-v6/e13-2.conf"; +include "/etc/dhcp/conf-v6/e13-3.conf"; +include "/etc/dhcp/conf-v6/e13-4.conf"; +include "/etc/dhcp/conf-v6/e15-1.conf"; +include "/etc/dhcp/conf-v6/e15-2.conf"; +include "/etc/dhcp/conf-v6/e15-3.conf"; +include "/etc/dhcp/conf-v6/e15-4.conf"; +include "/etc/dhcp/conf-v6/e17-1.conf"; +include "/etc/dhcp/conf-v6/e17-2.conf"; +include "/etc/dhcp/conf-v6/e17-3.conf"; +include "/etc/dhcp/conf-v6/e17-4.conf"; +include "/etc/dhcp/conf-v6/e19-1.conf"; +include "/etc/dhcp/conf-v6/e19-2.conf"; +include "/etc/dhcp/conf-v6/e19-3.conf"; +include "/etc/dhcp/conf-v6/e19-4.conf"; +include "/etc/dhcp/conf-v6/e21-1.conf"; +include "/etc/dhcp/conf-v6/e21-2.conf"; +include "/etc/dhcp/conf-v6/e21-3.conf"; +include "/etc/dhcp/conf-v6/e21-4.conf"; +include "/etc/dhcp/conf-v6/e23-1.conf"; +include "/etc/dhcp/conf-v6/e23-2.conf"; +include "/etc/dhcp/conf-v6/e23-3.conf"; +include "/etc/dhcp/conf-v6/e23-4.conf"; +include "/etc/dhcp/conf-v6/e25-1.conf"; +include "/etc/dhcp/conf-v6/e25-2.conf"; +include "/etc/dhcp/conf-v6/e27-1.conf"; +include "/etc/dhcp/conf-v6/e27-2.conf"; +include "/etc/dhcp/conf-v6/e29-1.conf"; +include "/etc/dhcp/conf-v6/e29-2.conf"; +include "/etc/dhcp/conf-v6/e3-3.conf"; +include "/etc/dhcp/conf-v6/e3-4.conf"; +include "/etc/dhcp/conf-v6/e31-1.conf"; +include "/etc/dhcp/conf-v6/e31-2.conf"; +include "/etc/dhcp/conf-v6/e33-1.conf"; +include "/etc/dhcp/conf-v6/e33-2.conf"; +include "/etc/dhcp/conf-v6/e35-1.conf"; +include "/etc/dhcp/conf-v6/e35-2.conf"; +include "/etc/dhcp/conf-v6/e37-1.conf"; +include "/etc/dhcp/conf-v6/e37-2.conf"; +include "/etc/dhcp/conf-v6/e39-1.conf"; +include "/etc/dhcp/conf-v6/e39-2.conf"; +include "/etc/dhcp/conf-v6/e41-1.conf"; +include "/etc/dhcp/conf-v6/e41-2.conf"; +include "/etc/dhcp/conf-v6/e41-3.conf"; +include "/etc/dhcp/conf-v6/e41-4.conf"; +include "/etc/dhcp/conf-v6/e43-1.conf"; +include "/etc/dhcp/conf-v6/e43-2.conf"; +include "/etc/dhcp/conf-v6/e43-3.conf"; +include "/etc/dhcp/conf-v6/e43-4.conf"; +include "/etc/dhcp/conf-v6/e45-1.conf"; +include "/etc/dhcp/conf-v6/e45-2.conf"; +include "/etc/dhcp/conf-v6/e45-3.conf"; +include "/etc/dhcp/conf-v6/e45-4.conf"; +include "/etc/dhcp/conf-v6/e47-1.conf"; +include "/etc/dhcp/conf-v6/e47-2.conf"; +include "/etc/dhcp/conf-v6/e47-3.conf"; +include "/etc/dhcp/conf-v6/e47-4.conf"; +include "/etc/dhcp/conf-v6/e49-1.conf"; +include "/etc/dhcp/conf-v6/e49-2.conf"; +include "/etc/dhcp/conf-v6/e49-3.conf"; +include "/etc/dhcp/conf-v6/e49-4.conf"; +include "/etc/dhcp/conf-v6/e5-2.conf"; +include "/etc/dhcp/conf-v6/e5-3.conf"; +include "/etc/dhcp/conf-v6/e5-4.conf"; +include "/etc/dhcp/conf-v6/e51-1.conf"; +include "/etc/dhcp/conf-v6/e51-2.conf"; +include "/etc/dhcp/conf-v6/e51-3.conf"; +include "/etc/dhcp/conf-v6/e51-4.conf"; +include "/etc/dhcp/conf-v6/e53-1.conf"; +include "/etc/dhcp/conf-v6/e53-2.conf"; +include "/etc/dhcp/conf-v6/e53-3.conf"; +include "/etc/dhcp/conf-v6/e53-4.conf"; +include "/etc/dhcp/conf-v6/e55-1.conf"; +include "/etc/dhcp/conf-v6/e55-2.conf"; +include "/etc/dhcp/conf-v6/e55-3.conf"; +include "/etc/dhcp/conf-v6/e55-4.conf"; +include "/etc/dhcp/conf-v6/e57-1.conf"; +include "/etc/dhcp/conf-v6/e57-2.conf"; +include "/etc/dhcp/conf-v6/e57-3.conf"; +include "/etc/dhcp/conf-v6/e57-4.conf"; +include "/etc/dhcp/conf-v6/e59-1.conf"; +include "/etc/dhcp/conf-v6/e59-2.conf"; +include "/etc/dhcp/conf-v6/e59-3.conf"; +include "/etc/dhcp/conf-v6/e59-4.conf"; +include "/etc/dhcp/conf-v6/e61-1.conf"; +include "/etc/dhcp/conf-v6/e61-2.conf"; +include "/etc/dhcp/conf-v6/e61-3.conf"; +include "/etc/dhcp/conf-v6/e61-4.conf"; +include "/etc/dhcp/conf-v6/e63-1.conf"; +include "/etc/dhcp/conf-v6/e63-2.conf"; +include "/etc/dhcp/conf-v6/e63-3.conf"; +include "/etc/dhcp/conf-v6/e63-4.conf"; +include "/etc/dhcp/conf-v6/e65-1.conf"; +include "/etc/dhcp/conf-v6/e65-2.conf"; +include "/etc/dhcp/conf-v6/e65-3.conf"; +include "/etc/dhcp/conf-v6/e65-4.conf"; +include "/etc/dhcp/conf-v6/e67-1.conf"; +include "/etc/dhcp/conf-v6/e67-2.conf"; +include "/etc/dhcp/conf-v6/e67-3.conf"; +include "/etc/dhcp/conf-v6/e67-4.conf"; +include "/etc/dhcp/conf-v6/e69-1.conf"; +include "/etc/dhcp/conf-v6/e69-2.conf"; +include "/etc/dhcp/conf-v6/e7-1.conf"; +include "/etc/dhcp/conf-v6/e7-2.conf"; +include "/etc/dhcp/conf-v6/e7-3.conf"; +include "/etc/dhcp/conf-v6/e7-4.conf"; +include "/etc/dhcp/conf-v6/e71-1.conf"; +include "/etc/dhcp/conf-v6/e71-2.conf"; +include "/etc/dhcp/conf-v6/e73-1.conf"; +include "/etc/dhcp/conf-v6/e73-2.conf"; +include "/etc/dhcp/conf-v6/e75-1.conf"; +include "/etc/dhcp/conf-v6/e75-2.conf"; +include "/etc/dhcp/conf-v6/e77-1.conf"; +include "/etc/dhcp/conf-v6/e77-2.conf"; +include "/etc/dhcp/conf-v6/e79-1.conf"; +include "/etc/dhcp/conf-v6/e79-2.conf"; +include "/etc/dhcp/conf-v6/e81-1.conf"; +include "/etc/dhcp/conf-v6/e81-2.conf"; +include "/etc/dhcp/conf-v6/e83-2.conf"; +include "/etc/dhcp/conf-v6/e85-2.conf"; +include "/etc/dhcp/conf-v6/e9-1.conf"; +include "/etc/dhcp/conf-v6/e9-2.conf"; +include "/etc/dhcp/conf-v6/e9-3.conf"; +include "/etc/dhcp/conf-v6/e9-4.conf"; +include "/etc/dhcp/conf-v6/event.conf"; +include "/etc/dhcp/conf-v6/flankenord.conf"; +include "/etc/dhcp/conf-v6/flankesor.conf"; +include "/etc/dhcp/conf-v6/foh.conf"; +include "/etc/dhcp/conf-v6/fugleberget.conf"; +include "/etc/dhcp/conf-v6/game.conf"; +include "/etc/dhcp/conf-v6/gamestage.conf"; +include "/etc/dhcp/conf-v6/highlights.conf"; +include "/etc/dhcp/conf-v6/hon.conf"; +include "/etc/dhcp/conf-v6/info.conf"; +include "/etc/dhcp/conf-v6/innsjekk.conf"; +include "/etc/dhcp/conf-v6/logistikk.conf"; +include "/etc/dhcp/conf-v6/medic.conf"; +include "/etc/dhcp/conf-v6/noc.conf"; +include "/etc/dhcp/conf-v6/north.conf"; +include "/etc/dhcp/conf-v6/presse.conf"; +include "/etc/dhcp/conf-v6/resepsjon.conf"; +include "/etc/dhcp/conf-v6/santander-temp.conf"; +include "/etc/dhcp/conf-v6/security.conf"; +include "/etc/dhcp/conf-v6/security2.conf"; +include "/etc/dhcp/conf-v6/sponsor.conf"; +include "/etc/dhcp/conf-v6/stage.conf"; +include "/etc/dhcp/conf-v6/streamer1.conf"; +include "/etc/dhcp/conf-v6/tech-wlan.conf"; +include "/etc/dhcp/conf-v6/wlan.conf"; diff --git a/examples/tg16/dhcp/v6-pxe-boot.conf b/examples/tg16/dhcp/v6-pxe-boot.conf new file mode 100644 index 0000000..a6f988a --- /dev/null +++ b/examples/tg16/dhcp/v6-pxe-boot.conf @@ -0,0 +1,10 @@ +option dhcp6.bootfile-url code 59 = string; +option dhcp6.client-arch-type code 61 = array of unsigned integer 16; + +if option dhcp6.client-arch-type = 00:07 { +        option dhcp6.bootfile-url "tftp://[2a06:5841:1337::2]/bootx64.efi"; +} else { +        # support a hypothetical BIOS system that can PXE boot over IPv6 +        option dhcp6.bootfile-url "tftp://[2a06:5841:1337::2]/pxelinux.0"; +} + diff --git a/examples/tg16/dns/linknets-dns.txt b/examples/tg16/dns/linknets-dns.txt new file mode 100644 index 0000000..38e6f99 --- /dev/null +++ b/examples/tg16/dns/linknets-dns.txt @@ -0,0 +1,58 @@ +telegw-coregw 185.110.148.128 nope +coregw-telegw 185.110.148.129 nope +telegw-nocgw 185.110.148.130 nope +nocgw-telegw 185.110.148.131 nope +nocgw-standgw 185.110.148.132 nope +standgw-nocgw 185.110.148.133 nope +standgw-coregw 185.110.148.134 nope +coregw-standgw 185.110.148.135 nope +nocgw-coregw 185.110.148.136 nope +coregw-nocgw 185.110.148.137 nope +nocgw-northgw 185.110.148.138 nope +northgw-nocgw 185.110.148.139 nope +northgw-loggw 185.110.148.140 nope +loggw-northgw 185.110.148.141 nope +swinggw-loggw 185.110.148.142 nope +loggw-swinggw 185.110.148.143 nope +swinggw-southgw 185.110.148.144 nope +southgw-swinggw 185.110.148.145 nope +southgw-telegw 185.110.148.146 nope +telegw-southgw 185.110.148.147 nope +telegw-creativiagw 185.110.148.148 nope +creativiagw-telegw 185.110.148.149 nope +creativiagw-coregw 185.110.148.150 nope +coregw-creativiagw 185.110.148.151 nope +coregw-distro0 185.110.148.152 nope +distro0-coregw 185.110.148.153 nope +coregw-distro1 185.110.148.154 nope +distro1-coregw 185.110.148.155 nope +coregw-distro2 185.110.148.156 nope +distro2-coregw 185.110.148.157 nope +coregw-distro3 185.110.148.158 nope +distro3-coregw 185.110.148.159 nope +coregw-distro4 185.110.148.160 nope +distro4-coregw 185.110.148.161 nope +coregw-distro5 185.110.148.162 nope +distro5-coregw 185.110.148.163 nope +coregw-distro6 185.110.148.164 nope +distro6-coregw 185.110.148.165 nope +coregw-distro7 185.110.148.166 nope +distro7-coregw 185.110.148.167 nope +crewgw-nocgw 185.110.148.168 nope +nocgw-crewgw 185.110.148.169 nope +crewgw-standgw 185.110.148.170 nope +standgw-crewgw 185.110.148.171 nope +stagegw-distro2 185.110.148.172 nope +distro2-stagegw 185.110.148.173 nope +stagegw-swinggw 185.110.148.174 nope +swinggw-stagegw 185.110.148.175 nope +telefw-telegw-outside 185.110.148.177 2A06:5841:148C:176:0:0:0:1 +telegw-telefw-outside 185.110.148.176 2A06:5841:148C:176:0:0:0:2 +telefw-telegw-inside 185.110.148.179 2A06:5841:148C:178:0:0:0:1 +telegw-telefw-inside 185.110.148.178 2A06:5841:148C:178:0:0:0:2 +northgw-audgw 185.110.148.180 nope +audgw-northgw 185.110.148.181 nope +audgw-gamegw 185.110.148.182 nope +gamegw-audgw 185.110.148.183 nope +gamegw-northgw 185.110.148.184 nope +northgw-gamegw 185.110.148.185 nope diff --git a/examples/tg16/dns/loopbacks.txt b/examples/tg16/dns/loopbacks.txt new file mode 100644 index 0000000..c6dda4e --- /dev/null +++ b/examples/tg16/dns/loopbacks.txt @@ -0,0 +1,21 @@ +185.110.148.64;2a06:5841:148b::64;telegw; +185.110.148.65;2a06:5841:148b::65;nocgw;/32 og /128 +185.110.148.66;2a06:5841:148b::66;coregw;... +185.110.148.67;2a06:5841:148b::67;standgw;... +185.110.148.70;2a06:5841:148b::70;southgw;  +185.110.148.71;2a06:5841:148b::71;swinggw;  +185.110.148.72;2a06:5841:148b::72;loggw;  +185.110.148.73;2a06:5841:148b::73;northgw;  +185.110.148.74;2a06:5841:148b::74;creativiagw;  +185.110.148.75;2a06:5841:148b::75;stagegw;  +185.110.148.76;2a06:5841:148b::76;crewgw;Utgår muligens - kan henge rett på nocgw/standgw +185.110.148.77;2a06:5841:148b::77;audgw;  +185.110.148.78;2a06:5841:148b::78;gamestagegw;  +185.110.148.100;2a06:5841:148b::100;distro0;syntax blir 185.110.148.10<distro-nummer> +185.110.148.101;2a06:5841:148b::101;distro1;... +185.110.148.102;2a06:5841:148b::102;distro2;... +185.110.148.103;2a06:5841:148b::103;distro3;  +185.110.148.104;2a06:5841:148b::104;distro4;  +185.110.148.105;2a06:5841:148b::105;distro5;  +185.110.148.106;2a06:5841:148b::106;distro6;  +185.110.148.107;2a06:5841:148b::107;distro7;  diff --git a/examples/tg16/dns/master/0.4.8.5.6.0.a.2.ip6.arpa.zone b/examples/tg16/dns/master/0.4.8.5.6.0.a.2.ip6.arpa.zone new file mode 100644 index 0000000..7e344e0 --- /dev/null +++ b/examples/tg16/dns/master/0.4.8.5.6.0.a.2.ip6.arpa.zone @@ -0,0 +1,324 @@ +$ORIGIN . +$TTL 3600	; 1 hour +0.4.8.5.6.0.a.2.ip6.arpa IN SOA	r2-d2.tg16.gathering.org. abuse.gathering.org. ( +				2016032463 ; serial +				3600       ; refresh (1 hour) +				1800       ; retry (30 minutes) +				608400     ; expire (1 week 1 hour) +				3600       ; minimum (1 hour) +				) +			NS	c-3po.tg16.gathering.org. +			NS	r2-d2.tg16.gathering.org. +$ORIGIN 0.0.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e1-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e1-4.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e3-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e3-4.tg16.gathering.org. +$ORIGIN 1.0.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e5-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e5-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e5-4.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e7-1.tg16.gathering.org. +$ORIGIN 2.0.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e7-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e7-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e7-4.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e9-1.tg16.gathering.org. +$ORIGIN 3.0.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e9-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e9-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e9-4.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e11-1.tg16.gathering.org. +$ORIGIN 4.0.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e11-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e11-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e11-4.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e13-1.tg16.gathering.org. +$ORIGIN 5.0.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e13-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e13-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e13-4.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e15-1.tg16.gathering.org. +$ORIGIN 6.0.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e15-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e15-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e15-4.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e17-1.tg16.gathering.org. +$ORIGIN 7.0.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e17-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e17-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e17-4.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e19-1.tg16.gathering.org. +$ORIGIN 8.0.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e19-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e19-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e19-4.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e21-1.tg16.gathering.org. +$ORIGIN 9.0.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e21-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e21-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e21-4.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e23-1.tg16.gathering.org. +$ORIGIN 0.1.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e23-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e23-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e23-4.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e25-1.tg16.gathering.org. +$ORIGIN 1.1.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e25-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e27-1.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e27-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e29-1.tg16.gathering.org. +$ORIGIN 2.1.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e29-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e31-1.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e31-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e33-1.tg16.gathering.org. +$ORIGIN 3.1.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e33-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e35-1.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e35-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e37-1.tg16.gathering.org. +$ORIGIN 4.1.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e37-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e39-1.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e39-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e41-1.tg16.gathering.org. +$ORIGIN 5.1.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e41-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e41-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e41-4.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e43-1.tg16.gathering.org. +$ORIGIN 6.1.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e43-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e43-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e43-4.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e45-1.tg16.gathering.org. +$ORIGIN 7.1.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e45-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e45-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e45-4.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e47-1.tg16.gathering.org. +$ORIGIN 8.1.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e47-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e47-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e47-4.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e49-1.tg16.gathering.org. +$ORIGIN 9.1.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e49-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e49-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e49-4.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e51-1.tg16.gathering.org. +$ORIGIN 0.2.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e51-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e51-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e51-4.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e53-1.tg16.gathering.org. +$ORIGIN 1.2.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e53-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e53-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e53-4.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e55-1.tg16.gathering.org. +$ORIGIN 2.2.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e55-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e55-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e55-4.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e57-1.tg16.gathering.org. +$ORIGIN 3.2.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e57-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e57-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e57-4.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e59-1.tg16.gathering.org. +$ORIGIN 4.2.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e59-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e59-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e59-4.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e61-1.tg16.gathering.org. +$ORIGIN 5.2.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e61-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e61-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e61-4.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e63-1.tg16.gathering.org. +$ORIGIN 6.2.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e63-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e63-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e63-4.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e65-1.tg16.gathering.org. +$ORIGIN 7.2.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e65-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e65-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e65-4.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e67-1.tg16.gathering.org. +$ORIGIN 8.2.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e67-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e67-3.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e67-4.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e69-1.tg16.gathering.org. +$ORIGIN 9.2.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e69-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e71-1.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e71-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e73-1.tg16.gathering.org. +$ORIGIN 0.3.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e73-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e75-1.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e75-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e77-1.tg16.gathering.org. +$ORIGIN 1.3.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e77-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e79-1.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e79-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d PTR gw.e81-1.tg16.gathering.org. +$ORIGIN 2.3.0.0.4.8.5.6.0.a.2.ip6.arpa. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR gw.e81-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b PTR gw.e83-2.tg16.gathering.org. +1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c PTR gw.e85-2.tg16.gathering.org. +$ORIGIN 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a.4.5.0.0.4.8.5.6.0.a.2.ip6.arpa. +2			PTR	sw.e1-3.tg16.gathering.org. +3			PTR	sw.e1-4.tg16.gathering.org. +4			PTR	sw.e3-3.tg16.gathering.org. +5			PTR	sw.e3-4.tg16.gathering.org. +6			PTR	sw.e5-3.tg16.gathering.org. +7			PTR	sw.e5-4.tg16.gathering.org. +8			PTR	sw.e7-3.tg16.gathering.org. +9			PTR	sw.e7-4.tg16.gathering.org. +$ORIGIN 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a.4.5.0.0.4.8.5.6.0.a.2.ip6.arpa. +0			PTR	sw.e9-3.tg16.gathering.org. +1			PTR	sw.e9-4.tg16.gathering.org. +2			PTR	sw.e11-3.tg16.gathering.org. +3			PTR	sw.e11-4.tg16.gathering.org. +$ORIGIN 6.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b.4.5.0.0.4.8.5.6.0.a.2.ip6.arpa. +6			PTR	sw.e5-2.tg16.gathering.org. +7			PTR	sw.e7-1.tg16.gathering.org. +8			PTR	sw.e7-2.tg16.gathering.org. +9			PTR	sw.e9-1.tg16.gathering.org. +$ORIGIN 7.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b.4.5.0.0.4.8.5.6.0.a.2.ip6.arpa. +0			PTR	sw.e9-2.tg16.gathering.org. +1			PTR	sw.e11-1.tg16.gathering.org. +2			PTR	sw.e11-2.tg16.gathering.org. +3			PTR	sw.e13-1.tg16.gathering.org. +4			PTR	sw.e13-2.tg16.gathering.org. +5			PTR	sw.e15-1.tg16.gathering.org. +6			PTR	sw.e15-2.tg16.gathering.org. +7			PTR	sw.e17-1.tg16.gathering.org. +8			PTR	sw.e17-2.tg16.gathering.org. +9			PTR	sw.e19-1.tg16.gathering.org. +$ORIGIN 8.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b.4.5.0.0.4.8.5.6.0.a.2.ip6.arpa. +0			PTR	sw.e19-2.tg16.gathering.org. +1			PTR	sw.e21-1.tg16.gathering.org. +2			PTR	sw.e21-2.tg16.gathering.org. +3			PTR	sw.e23-1.tg16.gathering.org. +4			PTR	sw.e23-2.tg16.gathering.org. +$ORIGIN 3.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c.4.5.0.0.4.8.5.6.0.a.2.ip6.arpa. +0			PTR	sw.e13-3.tg16.gathering.org. +1			PTR	sw.e13-4.tg16.gathering.org. +2			PTR	sw.e15-3.tg16.gathering.org. +3			PTR	sw.e15-4.tg16.gathering.org. +4			PTR	sw.e17-3.tg16.gathering.org. +5			PTR	sw.e17-4.tg16.gathering.org. +6			PTR	sw.e19-3.tg16.gathering.org. +7			PTR	sw.e19-4.tg16.gathering.org. +8			PTR	sw.e21-3.tg16.gathering.org. +9			PTR	sw.e21-4.tg16.gathering.org. +$ORIGIN 4.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c.4.5.0.0.4.8.5.6.0.a.2.ip6.arpa. +0			PTR	sw.e23-3.tg16.gathering.org. +1			PTR	sw.e23-4.tg16.gathering.org. +$ORIGIN 9.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d.4.5.0.0.4.8.5.6.0.a.2.ip6.arpa. +4			PTR	sw.e25-1.tg16.gathering.org. +5			PTR	sw.e25-2.tg16.gathering.org. +6			PTR	sw.e27-1.tg16.gathering.org. +7			PTR	sw.e27-2.tg16.gathering.org. +8			PTR	sw.e29-1.tg16.gathering.org. +9			PTR	sw.e29-2.tg16.gathering.org. +$ORIGIN 0.2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d.4.5.0.0.4.8.5.6.0.a.2.ip6.arpa. +0			PTR	sw.e31-1.tg16.gathering.org. +1			PTR	sw.e31-2.tg16.gathering.org. +2			PTR	sw.e33-1.tg16.gathering.org. +3			PTR	sw.e33-2.tg16.gathering.org. +4			PTR	sw.e35-1.tg16.gathering.org. +5			PTR	sw.e35-2.tg16.gathering.org. +6			PTR	sw.e37-1.tg16.gathering.org. +7			PTR	sw.e37-2.tg16.gathering.org. +8			PTR	sw.e39-1.tg16.gathering.org. +9			PTR	sw.e39-2.tg16.gathering.org. +$ORIGIN 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a.5.5.0.0.4.8.5.6.0.a.2.ip6.arpa. +2			PTR	sw.e41-1.tg16.gathering.org. +3			PTR	sw.e41-2.tg16.gathering.org. +4			PTR	sw.e43-1.tg16.gathering.org. +5			PTR	sw.e43-2.tg16.gathering.org. +6			PTR	sw.e45-1.tg16.gathering.org. +7			PTR	sw.e45-2.tg16.gathering.org. +8			PTR	sw.e47-1.tg16.gathering.org. +9			PTR	sw.e47-2.tg16.gathering.org. +$ORIGIN 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a.5.5.0.0.4.8.5.6.0.a.2.ip6.arpa. +0			PTR	sw.e49-1.tg16.gathering.org. +1			PTR	sw.e49-2.tg16.gathering.org. +2			PTR	sw.e51-1.tg16.gathering.org. +3			PTR	sw.e51-2.tg16.gathering.org. +4			PTR	sw.e53-1.tg16.gathering.org. +5			PTR	sw.e53-2.tg16.gathering.org. +6			PTR	sw.e55-1.tg16.gathering.org. +7			PTR	sw.e55-2.tg16.gathering.org. +8			PTR	sw.e57-1.tg16.gathering.org. +9			PTR	sw.e57-2.tg16.gathering.org. +$ORIGIN 6.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b.5.5.0.0.4.8.5.6.0.a.2.ip6.arpa. +6			PTR	sw.e41-3.tg16.gathering.org. +7			PTR	sw.e41-4.tg16.gathering.org. +8			PTR	sw.e43-3.tg16.gathering.org. +9			PTR	sw.e43-4.tg16.gathering.org. +$ORIGIN 7.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b.5.5.0.0.4.8.5.6.0.a.2.ip6.arpa. +0			PTR	sw.e45-3.tg16.gathering.org. +1			PTR	sw.e45-4.tg16.gathering.org. +2			PTR	sw.e47-3.tg16.gathering.org. +3			PTR	sw.e47-4.tg16.gathering.org. +4			PTR	sw.e49-3.tg16.gathering.org. +5			PTR	sw.e49-4.tg16.gathering.org. +6			PTR	sw.e51-3.tg16.gathering.org. +7			PTR	sw.e51-4.tg16.gathering.org. +8			PTR	sw.e53-3.tg16.gathering.org. +9			PTR	sw.e53-4.tg16.gathering.org. +$ORIGIN 8.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b.5.5.0.0.4.8.5.6.0.a.2.ip6.arpa. +0			PTR	sw.e55-3.tg16.gathering.org. +1			PTR	sw.e55-4.tg16.gathering.org. +2			PTR	sw.e57-3.tg16.gathering.org. +3			PTR	sw.e57-4.tg16.gathering.org. +$ORIGIN 3.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c.5.5.0.0.4.8.5.6.0.a.2.ip6.arpa. +0			PTR	sw.e59-3.tg16.gathering.org. +1			PTR	sw.e59-4.tg16.gathering.org. +2			PTR	sw.e61-3.tg16.gathering.org. +3			PTR	sw.e61-4.tg16.gathering.org. +4			PTR	sw.e63-3.tg16.gathering.org. +5			PTR	sw.e63-4.tg16.gathering.org. +6			PTR	sw.e65-3.tg16.gathering.org. +7			PTR	sw.e65-4.tg16.gathering.org. +8			PTR	sw.e67-3.tg16.gathering.org. +9			PTR	sw.e67-4.tg16.gathering.org. +$ORIGIN 9.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d.5.5.0.0.4.8.5.6.0.a.2.ip6.arpa. +4			PTR	sw.e59-1.tg16.gathering.org. +5			PTR	sw.e59-2.tg16.gathering.org. +6			PTR	sw.e61-1.tg16.gathering.org. +7			PTR	sw.e61-2.tg16.gathering.org. +8			PTR	sw.e63-1.tg16.gathering.org. +9			PTR	sw.e63-2.tg16.gathering.org. +$ORIGIN 0.2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d.5.5.0.0.4.8.5.6.0.a.2.ip6.arpa. +0			PTR	sw.e65-1.tg16.gathering.org. +1			PTR	sw.e65-2.tg16.gathering.org. +2			PTR	sw.e67-1.tg16.gathering.org. +3			PTR	sw.e67-2.tg16.gathering.org. +4			PTR	sw.e69-1.tg16.gathering.org. +5			PTR	sw.e69-2.tg16.gathering.org. +6			PTR	sw.e71-1.tg16.gathering.org. +7			PTR	sw.e71-2.tg16.gathering.org. +8			PTR	sw.e73-1.tg16.gathering.org. +9			PTR	sw.e73-2.tg16.gathering.org. +$ORIGIN 1.2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d.5.5.0.0.4.8.5.6.0.a.2.ip6.arpa. +0			PTR	sw.e75-1.tg16.gathering.org. +1			PTR	sw.e75-2.tg16.gathering.org. +2			PTR	sw.e77-1.tg16.gathering.org. +3			PTR	sw.e77-2.tg16.gathering.org. +4			PTR	sw.e79-1.tg16.gathering.org. +5			PTR	sw.e79-2.tg16.gathering.org. +6			PTR	sw.e81-1.tg16.gathering.org. +7			PTR	sw.e81-2.tg16.gathering.org. +8			PTR	sw.e83-2.tg16.gathering.org. +9			PTR	sw.e85-2.tg16.gathering.org. diff --git a/examples/tg16/dns/master/1.4.8.5.6.0.a.2.ip6.arpa.zone b/examples/tg16/dns/master/1.4.8.5.6.0.a.2.ip6.arpa.zone new file mode 100644 index 0000000..4c1a6bd --- /dev/null +++ b/examples/tg16/dns/master/1.4.8.5.6.0.a.2.ip6.arpa.zone @@ -0,0 +1,80 @@ +$ORIGIN . +$TTL 3600	; 1 hour +1.4.8.5.6.0.a.2.ip6.arpa IN SOA	r2-d2.tg16.gathering.org. abuse.gathering.org. ( +				2016032258 ; serial +				3600       ; refresh (1 hour) +				1800       ; retry (30 minutes) +				608400     ; expire (1 week 1 hour) +				3600       ; minimum (1 hour) +				) +			NS	c-3po.tg16.gathering.org. +			NS	r2-d2.tg16.gathering.org. +$ORIGIN 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.7.3.3.1.1.4.8.5.6.0.a.2.ip6.arpa. +2			PTR	c-3po.tg16.gathering.org. +3			PTR	anakin.tg16.gathering.org. +4			PTR	padme.tg16.gathering.org. +5			PTR	luke.tg16.gathering.org. +6			PTR	leia.tg16.gathering.org. +7			PTR	han.tg16.gathering.org. +8			PTR	rey.tg16.gathering.org. +			PTR	cubemap.tg16.gathering.org. +9			PTR	finn.tg16.gathering.org. +			PTR	cubemap.tg16.gathering.org. +$ORIGIN 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.7.3.3.1.1.4.8.5.6.0.a.2.ip6.arpa. +0			PTR	bb-8.tg16.gathering.org. +1			PTR	nms6.tg16.gathering.org. +			PTR	yoda.tg16.gathering.org. +2			PTR	obi-wan.tg16.gathering.org. +3			PTR	chewbacca.tg16.gathering.org. +4			PTR	fortiwlc-tg01.tg16.gathering.org. +5			PTR	fortiwlc-tg02.tg16.gathering.org. +6			PTR	fortimgmt-tg01.tg16.gathering.org. +7			PTR	spock.tg16.gathering.org. +8			PTR	funnyfart.tg16.gathering.org. +9			PTR	kvm-rack2.tg16.gathering.org. +$ORIGIN 2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.7.3.3.1.1.4.8.5.6.0.a.2.ip6.arpa. +0			PTR	kvm-rack3.tg16.gathering.org. +1			PTR	mitm.tg16.gathering.org. +2			PTR	kirk.tg16.gathering.org. +3			PTR	cage.tg16.gathering.org. +4			PTR	luring.tg16.gathering.org. +5			PTR	lyn.tg16.gathering.org. +6			PTR	rakker.tg16.gathering.org. +7			PTR	wc.tg16.gathering.org. +$ORIGIN 6.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b.8.4.1.1.4.8.5.6.0.a.2.ip6.arpa. +4			PTR	telegw.tg16.gathering.org. +5			PTR	nocgw.tg16.gathering.org. +6			PTR	coregw.tg16.gathering.org. +7			PTR	standgw.tg16.gathering.org. +$ORIGIN 7.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b.8.4.1.1.4.8.5.6.0.a.2.ip6.arpa. +0			PTR	southgw.tg16.gathering.org. +1			PTR	swinggw.tg16.gathering.org. +2			PTR	loggw.tg16.gathering.org. +3			PTR	northgw.tg16.gathering.org. +4			PTR	creativiagw.tg16.gathering.org. +5			PTR	stagegw.tg16.gathering.org. +6			PTR	crewgw.tg16.gathering.org. +7			PTR	audgw.tg16.gathering.org. +8			PTR	gamestagegw.tg16.gathering.org. +$ORIGIN 0.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b.8.4.1.1.4.8.5.6.0.a.2.ip6.arpa. +0			PTR	distro0.tg16.gathering.org. +1			PTR	distro1.tg16.gathering.org. +2			PTR	distro2.tg16.gathering.org. +3			PTR	distro3.tg16.gathering.org. +4			PTR	distro4.tg16.gathering.org. +5			PTR	distro5.tg16.gathering.org. +6			PTR	distro6.tg16.gathering.org. +7			PTR	distro7.tg16.gathering.org. +$ORIGIN 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.6.7.1.0.c.8.4.1.1.4.8.5.6.0.a.2.ip6.arpa. +1			PTR	telefw-telegw-outside.tg16.gathering.org. +2			PTR	telegw-telefw-outside.tg16.gathering.org. +$ORIGIN 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.7.1.0.c.8.4.1.1.4.8.5.6.0.a.2.ip6.arpa. +1			PTR	telefw-telegw-inside.tg16.gathering.org. +2			PTR	telegw-telefw-inside.tg16.gathering.org. +$ORIGIN 9.4.1.1.4.8.5.6.0.a.2.ip6.arpa. +2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a PTR r2-d2.tg16.gathering.org. +$ORIGIN 6.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b.9.4.1.1.4.8.5.6.0.a.2.ip6.arpa. +6			PTR	palpatine.tg16.gathering.org. +7			PTR	grievous.tg16.gathering.org. +8			PTR	kylo.tg16.gathering.org. +9			PTR	dooku.tg16.gathering.org. diff --git a/examples/tg16/dns/master/2.4.8.5.6.0.a.2.ip6.arpa.zone b/examples/tg16/dns/master/2.4.8.5.6.0.a.2.ip6.arpa.zone new file mode 100644 index 0000000..c5fb5e5 --- /dev/null +++ b/examples/tg16/dns/master/2.4.8.5.6.0.a.2.ip6.arpa.zone @@ -0,0 +1,14 @@ +; autogenerated, and updated from dhcpd -- DO NOT TOUCH! +$TTL 3600 +@       IN      SOA     r2-d2.tg16.gathering.org. abuse.gathering.org. ( +			2016032201; serial +                        3600 ; refresh +                        1800 ; retry +                        608400 ; expire +                        3600 ) ; minimum and default TTL + +                IN      NS      r2-d2.tg16.gathering.org. +                IN      NS      c-3po.tg16.gathering.org. + +; WARNING! Do not edit this file directly! +; on the bootstrapping/nms server! diff --git a/examples/tg16/dns/master/3.4.8.5.6.0.a.2.ip6.arpa.zone b/examples/tg16/dns/master/3.4.8.5.6.0.a.2.ip6.arpa.zone new file mode 100644 index 0000000..c5fb5e5 --- /dev/null +++ b/examples/tg16/dns/master/3.4.8.5.6.0.a.2.ip6.arpa.zone @@ -0,0 +1,14 @@ +; autogenerated, and updated from dhcpd -- DO NOT TOUCH! +$TTL 3600 +@       IN      SOA     r2-d2.tg16.gathering.org. abuse.gathering.org. ( +			2016032201; serial +                        3600 ; refresh +                        1800 ; retry +                        608400 ; expire +                        3600 ) ; minimum and default TTL + +                IN      NS      r2-d2.tg16.gathering.org. +                IN      NS      c-3po.tg16.gathering.org. + +; WARNING! Do not edit this file directly! +; on the bootstrapping/nms server! diff --git a/examples/tg16/dns/master/4.4.8.5.6.0.a.2.ip6.arpa.zone b/examples/tg16/dns/master/4.4.8.5.6.0.a.2.ip6.arpa.zone new file mode 100644 index 0000000..c5fb5e5 --- /dev/null +++ b/examples/tg16/dns/master/4.4.8.5.6.0.a.2.ip6.arpa.zone @@ -0,0 +1,14 @@ +; autogenerated, and updated from dhcpd -- DO NOT TOUCH! +$TTL 3600 +@       IN      SOA     r2-d2.tg16.gathering.org. abuse.gathering.org. ( +			2016032201; serial +                        3600 ; refresh +                        1800 ; retry +                        608400 ; expire +                        3600 ) ; minimum and default TTL + +                IN      NS      r2-d2.tg16.gathering.org. +                IN      NS      c-3po.tg16.gathering.org. + +; WARNING! Do not edit this file directly! +; on the bootstrapping/nms server! diff --git a/examples/tg16/dns/master/5.4.8.5.6.0.a.2.ip6.arpa.zone b/examples/tg16/dns/master/5.4.8.5.6.0.a.2.ip6.arpa.zone new file mode 100644 index 0000000..c5fb5e5 --- /dev/null +++ b/examples/tg16/dns/master/5.4.8.5.6.0.a.2.ip6.arpa.zone @@ -0,0 +1,14 @@ +; autogenerated, and updated from dhcpd -- DO NOT TOUCH! +$TTL 3600 +@       IN      SOA     r2-d2.tg16.gathering.org. abuse.gathering.org. ( +			2016032201; serial +                        3600 ; refresh +                        1800 ; retry +                        608400 ; expire +                        3600 ) ; minimum and default TTL + +                IN      NS      r2-d2.tg16.gathering.org. +                IN      NS      c-3po.tg16.gathering.org. + +; WARNING! Do not edit this file directly! +; on the bootstrapping/nms server! diff --git a/examples/tg16/dns/master/6.4.8.5.6.0.a.2.ip6.arpa.zone b/examples/tg16/dns/master/6.4.8.5.6.0.a.2.ip6.arpa.zone new file mode 100644 index 0000000..c5fb5e5 --- /dev/null +++ b/examples/tg16/dns/master/6.4.8.5.6.0.a.2.ip6.arpa.zone @@ -0,0 +1,14 @@ +; autogenerated, and updated from dhcpd -- DO NOT TOUCH! +$TTL 3600 +@       IN      SOA     r2-d2.tg16.gathering.org. abuse.gathering.org. ( +			2016032201; serial +                        3600 ; refresh +                        1800 ; retry +                        608400 ; expire +                        3600 ) ; minimum and default TTL + +                IN      NS      r2-d2.tg16.gathering.org. +                IN      NS      c-3po.tg16.gathering.org. + +; WARNING! Do not edit this file directly! +; on the bootstrapping/nms server! diff --git a/examples/tg16/dns/master/7.4.8.5.6.0.a.2.ip6.arpa.zone b/examples/tg16/dns/master/7.4.8.5.6.0.a.2.ip6.arpa.zone new file mode 100644 index 0000000..c5fb5e5 --- /dev/null +++ b/examples/tg16/dns/master/7.4.8.5.6.0.a.2.ip6.arpa.zone @@ -0,0 +1,14 @@ +; autogenerated, and updated from dhcpd -- DO NOT TOUCH! +$TTL 3600 +@       IN      SOA     r2-d2.tg16.gathering.org. abuse.gathering.org. ( +			2016032201; serial +                        3600 ; refresh +                        1800 ; retry +                        608400 ; expire +                        3600 ) ; minimum and default TTL + +                IN      NS      r2-d2.tg16.gathering.org. +                IN      NS      c-3po.tg16.gathering.org. + +; WARNING! Do not edit this file directly! +; on the bootstrapping/nms server! diff --git a/examples/tg16/dns/master/conf-master/ap-creativia.conf b/examples/tg16/dns/master/conf-master/ap-creativia.conf new file mode 100644 index 0000000..3888465 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/ap-creativia.conf @@ -0,0 +1,7 @@ +zone "ap-creativia.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/ap-creativia.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/ap-distro0.conf b/examples/tg16/dns/master/conf-master/ap-distro0.conf new file mode 100644 index 0000000..8868658 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/ap-distro0.conf @@ -0,0 +1,7 @@ +zone "ap-distro0.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/ap-distro0.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/ap-distro1.conf b/examples/tg16/dns/master/conf-master/ap-distro1.conf new file mode 100644 index 0000000..700193a --- /dev/null +++ b/examples/tg16/dns/master/conf-master/ap-distro1.conf @@ -0,0 +1,7 @@ +zone "ap-distro1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/ap-distro1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/ap-distro2.conf b/examples/tg16/dns/master/conf-master/ap-distro2.conf new file mode 100644 index 0000000..a9f7d25 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/ap-distro2.conf @@ -0,0 +1,7 @@ +zone "ap-distro2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/ap-distro2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/ap-distro3.conf b/examples/tg16/dns/master/conf-master/ap-distro3.conf new file mode 100644 index 0000000..b563fae --- /dev/null +++ b/examples/tg16/dns/master/conf-master/ap-distro3.conf @@ -0,0 +1,7 @@ +zone "ap-distro3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/ap-distro3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/ap-distro4.conf b/examples/tg16/dns/master/conf-master/ap-distro4.conf new file mode 100644 index 0000000..396170b --- /dev/null +++ b/examples/tg16/dns/master/conf-master/ap-distro4.conf @@ -0,0 +1,7 @@ +zone "ap-distro4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/ap-distro4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/ap-distro5.conf b/examples/tg16/dns/master/conf-master/ap-distro5.conf new file mode 100644 index 0000000..d37e9e2 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/ap-distro5.conf @@ -0,0 +1,7 @@ +zone "ap-distro5.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/ap-distro5.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/ap-distro6.conf b/examples/tg16/dns/master/conf-master/ap-distro6.conf new file mode 100644 index 0000000..30b85ad --- /dev/null +++ b/examples/tg16/dns/master/conf-master/ap-distro6.conf @@ -0,0 +1,7 @@ +zone "ap-distro6.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/ap-distro6.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/ap-distro7.conf b/examples/tg16/dns/master/conf-master/ap-distro7.conf new file mode 100644 index 0000000..f2671d4 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/ap-distro7.conf @@ -0,0 +1,7 @@ +zone "ap-distro7.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/ap-distro7.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/ap-stand.conf b/examples/tg16/dns/master/conf-master/ap-stand.conf new file mode 100644 index 0000000..7345862 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/ap-stand.conf @@ -0,0 +1,7 @@ +zone "ap-stand.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/ap-stand.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/auditorium.conf b/examples/tg16/dns/master/conf-master/auditorium.conf new file mode 100644 index 0000000..69bc47a --- /dev/null +++ b/examples/tg16/dns/master/conf-master/auditorium.conf @@ -0,0 +1,7 @@ +zone "auditorium.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/auditorium.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/creativia-village.conf b/examples/tg16/dns/master/conf-master/creativia-village.conf new file mode 100644 index 0000000..714b547 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/creativia-village.conf @@ -0,0 +1,7 @@ +zone "creativia-village.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/creativia-village.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/creativia.conf b/examples/tg16/dns/master/conf-master/creativia.conf new file mode 100644 index 0000000..e98faf0 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/creativia.conf @@ -0,0 +1,7 @@ +zone "creativia.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/creativia.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/creativia1.conf b/examples/tg16/dns/master/conf-master/creativia1.conf new file mode 100644 index 0000000..4592955 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/creativia1.conf @@ -0,0 +1,7 @@ +zone "creativia1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/creativia1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/creativia2.conf b/examples/tg16/dns/master/conf-master/creativia2.conf new file mode 100644 index 0000000..45c6711 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/creativia2.conf @@ -0,0 +1,7 @@ +zone "creativia2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/creativia2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/creativia3.conf b/examples/tg16/dns/master/conf-master/creativia3.conf new file mode 100644 index 0000000..9aef961 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/creativia3.conf @@ -0,0 +1,7 @@ +zone "creativia3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/creativia3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/creativia4.conf b/examples/tg16/dns/master/conf-master/creativia4.conf new file mode 100644 index 0000000..2fd55fa --- /dev/null +++ b/examples/tg16/dns/master/conf-master/creativia4.conf @@ -0,0 +1,7 @@ +zone "creativia4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/creativia4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/creativia5.conf b/examples/tg16/dns/master/conf-master/creativia5.conf new file mode 100644 index 0000000..aedb3a9 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/creativia5.conf @@ -0,0 +1,7 @@ +zone "creativia5.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/creativia5.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/creativia6.conf b/examples/tg16/dns/master/conf-master/creativia6.conf new file mode 100644 index 0000000..f980387 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/creativia6.conf @@ -0,0 +1,7 @@ +zone "creativia6.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/creativia6.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/creativia7.conf b/examples/tg16/dns/master/conf-master/creativia7.conf new file mode 100644 index 0000000..1920fb6 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/creativia7.conf @@ -0,0 +1,7 @@ +zone "creativia7.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/creativia7.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/creativiasw1.conf b/examples/tg16/dns/master/conf-master/creativiasw1.conf new file mode 100644 index 0000000..7ef703c --- /dev/null +++ b/examples/tg16/dns/master/conf-master/creativiasw1.conf @@ -0,0 +1,7 @@ +zone "creativiasw1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/creativiasw1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/crew.conf b/examples/tg16/dns/master/conf-master/crew.conf new file mode 100644 index 0000000..ff1005e --- /dev/null +++ b/examples/tg16/dns/master/conf-master/crew.conf @@ -0,0 +1,7 @@ +zone "crew.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/crew.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/deltaker-srv.conf b/examples/tg16/dns/master/conf-master/deltaker-srv.conf new file mode 100644 index 0000000..6a8d91d --- /dev/null +++ b/examples/tg16/dns/master/conf-master/deltaker-srv.conf @@ -0,0 +1,7 @@ +zone "deltaker-srv.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/deltaker-srv.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e1-3.conf b/examples/tg16/dns/master/conf-master/e1-3.conf new file mode 100644 index 0000000..7f5b4a8 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e1-3.conf @@ -0,0 +1,7 @@ +zone "e1-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e1-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e1-4.conf b/examples/tg16/dns/master/conf-master/e1-4.conf new file mode 100644 index 0000000..45b23ed --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e1-4.conf @@ -0,0 +1,7 @@ +zone "e1-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e1-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e11-1.conf b/examples/tg16/dns/master/conf-master/e11-1.conf new file mode 100644 index 0000000..f62de2a --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e11-1.conf @@ -0,0 +1,7 @@ +zone "e11-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e11-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e11-2.conf b/examples/tg16/dns/master/conf-master/e11-2.conf new file mode 100644 index 0000000..b048694 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e11-2.conf @@ -0,0 +1,7 @@ +zone "e11-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e11-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e11-3.conf b/examples/tg16/dns/master/conf-master/e11-3.conf new file mode 100644 index 0000000..43039d3 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e11-3.conf @@ -0,0 +1,7 @@ +zone "e11-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e11-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e11-4.conf b/examples/tg16/dns/master/conf-master/e11-4.conf new file mode 100644 index 0000000..aa697e1 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e11-4.conf @@ -0,0 +1,7 @@ +zone "e11-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e11-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e13-1.conf b/examples/tg16/dns/master/conf-master/e13-1.conf new file mode 100644 index 0000000..d90a7dd --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e13-1.conf @@ -0,0 +1,7 @@ +zone "e13-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e13-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e13-2.conf b/examples/tg16/dns/master/conf-master/e13-2.conf new file mode 100644 index 0000000..5871568 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e13-2.conf @@ -0,0 +1,7 @@ +zone "e13-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e13-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e13-3.conf b/examples/tg16/dns/master/conf-master/e13-3.conf new file mode 100644 index 0000000..b7506c9 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e13-3.conf @@ -0,0 +1,7 @@ +zone "e13-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e13-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e13-4.conf b/examples/tg16/dns/master/conf-master/e13-4.conf new file mode 100644 index 0000000..d3b8158 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e13-4.conf @@ -0,0 +1,7 @@ +zone "e13-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e13-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e15-1.conf b/examples/tg16/dns/master/conf-master/e15-1.conf new file mode 100644 index 0000000..2f391f4 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e15-1.conf @@ -0,0 +1,7 @@ +zone "e15-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e15-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e15-2.conf b/examples/tg16/dns/master/conf-master/e15-2.conf new file mode 100644 index 0000000..1f3322b --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e15-2.conf @@ -0,0 +1,7 @@ +zone "e15-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e15-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e15-3.conf b/examples/tg16/dns/master/conf-master/e15-3.conf new file mode 100644 index 0000000..42817c1 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e15-3.conf @@ -0,0 +1,7 @@ +zone "e15-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e15-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e15-4.conf b/examples/tg16/dns/master/conf-master/e15-4.conf new file mode 100644 index 0000000..e382d90 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e15-4.conf @@ -0,0 +1,7 @@ +zone "e15-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e15-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e17-1.conf b/examples/tg16/dns/master/conf-master/e17-1.conf new file mode 100644 index 0000000..8b5644f --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e17-1.conf @@ -0,0 +1,7 @@ +zone "e17-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e17-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e17-2.conf b/examples/tg16/dns/master/conf-master/e17-2.conf new file mode 100644 index 0000000..63a3c77 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e17-2.conf @@ -0,0 +1,7 @@ +zone "e17-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e17-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e17-3.conf b/examples/tg16/dns/master/conf-master/e17-3.conf new file mode 100644 index 0000000..530592c --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e17-3.conf @@ -0,0 +1,7 @@ +zone "e17-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e17-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e17-4.conf b/examples/tg16/dns/master/conf-master/e17-4.conf new file mode 100644 index 0000000..94444cc --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e17-4.conf @@ -0,0 +1,7 @@ +zone "e17-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e17-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e19-1.conf b/examples/tg16/dns/master/conf-master/e19-1.conf new file mode 100644 index 0000000..eb68efd --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e19-1.conf @@ -0,0 +1,7 @@ +zone "e19-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e19-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e19-2.conf b/examples/tg16/dns/master/conf-master/e19-2.conf new file mode 100644 index 0000000..374d743 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e19-2.conf @@ -0,0 +1,7 @@ +zone "e19-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e19-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e19-3.conf b/examples/tg16/dns/master/conf-master/e19-3.conf new file mode 100644 index 0000000..49a09fe --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e19-3.conf @@ -0,0 +1,7 @@ +zone "e19-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e19-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e19-4.conf b/examples/tg16/dns/master/conf-master/e19-4.conf new file mode 100644 index 0000000..61e3b91 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e19-4.conf @@ -0,0 +1,7 @@ +zone "e19-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e19-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e21-1.conf b/examples/tg16/dns/master/conf-master/e21-1.conf new file mode 100644 index 0000000..d991042 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e21-1.conf @@ -0,0 +1,7 @@ +zone "e21-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e21-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e21-2.conf b/examples/tg16/dns/master/conf-master/e21-2.conf new file mode 100644 index 0000000..c5b0f33 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e21-2.conf @@ -0,0 +1,7 @@ +zone "e21-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e21-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e21-3.conf b/examples/tg16/dns/master/conf-master/e21-3.conf new file mode 100644 index 0000000..f0f8d43 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e21-3.conf @@ -0,0 +1,7 @@ +zone "e21-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e21-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e21-4.conf b/examples/tg16/dns/master/conf-master/e21-4.conf new file mode 100644 index 0000000..6bb96ce --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e21-4.conf @@ -0,0 +1,7 @@ +zone "e21-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e21-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e23-1.conf b/examples/tg16/dns/master/conf-master/e23-1.conf new file mode 100644 index 0000000..d6fc514 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e23-1.conf @@ -0,0 +1,7 @@ +zone "e23-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e23-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e23-2.conf b/examples/tg16/dns/master/conf-master/e23-2.conf new file mode 100644 index 0000000..12a30ff --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e23-2.conf @@ -0,0 +1,7 @@ +zone "e23-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e23-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e23-3.conf b/examples/tg16/dns/master/conf-master/e23-3.conf new file mode 100644 index 0000000..4f01024 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e23-3.conf @@ -0,0 +1,7 @@ +zone "e23-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e23-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e23-4.conf b/examples/tg16/dns/master/conf-master/e23-4.conf new file mode 100644 index 0000000..8701c82 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e23-4.conf @@ -0,0 +1,7 @@ +zone "e23-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e23-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e25-1.conf b/examples/tg16/dns/master/conf-master/e25-1.conf new file mode 100644 index 0000000..f942c1f --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e25-1.conf @@ -0,0 +1,7 @@ +zone "e25-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e25-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e25-2.conf b/examples/tg16/dns/master/conf-master/e25-2.conf new file mode 100644 index 0000000..15f27d0 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e25-2.conf @@ -0,0 +1,7 @@ +zone "e25-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e25-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e27-1.conf b/examples/tg16/dns/master/conf-master/e27-1.conf new file mode 100644 index 0000000..bd283f9 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e27-1.conf @@ -0,0 +1,7 @@ +zone "e27-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e27-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e27-2.conf b/examples/tg16/dns/master/conf-master/e27-2.conf new file mode 100644 index 0000000..60211b4 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e27-2.conf @@ -0,0 +1,7 @@ +zone "e27-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e27-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e29-1.conf b/examples/tg16/dns/master/conf-master/e29-1.conf new file mode 100644 index 0000000..90e871e --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e29-1.conf @@ -0,0 +1,7 @@ +zone "e29-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e29-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e29-2.conf b/examples/tg16/dns/master/conf-master/e29-2.conf new file mode 100644 index 0000000..c279db7 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e29-2.conf @@ -0,0 +1,7 @@ +zone "e29-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e29-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e3-3.conf b/examples/tg16/dns/master/conf-master/e3-3.conf new file mode 100644 index 0000000..f76a498 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e3-3.conf @@ -0,0 +1,7 @@ +zone "e3-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e3-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e3-4.conf b/examples/tg16/dns/master/conf-master/e3-4.conf new file mode 100644 index 0000000..6c0a775 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e3-4.conf @@ -0,0 +1,7 @@ +zone "e3-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e3-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e31-1.conf b/examples/tg16/dns/master/conf-master/e31-1.conf new file mode 100644 index 0000000..05a0495 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e31-1.conf @@ -0,0 +1,7 @@ +zone "e31-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e31-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e31-2.conf b/examples/tg16/dns/master/conf-master/e31-2.conf new file mode 100644 index 0000000..6e57d29 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e31-2.conf @@ -0,0 +1,7 @@ +zone "e31-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e31-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e33-1.conf b/examples/tg16/dns/master/conf-master/e33-1.conf new file mode 100644 index 0000000..3211cc2 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e33-1.conf @@ -0,0 +1,7 @@ +zone "e33-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e33-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e33-2.conf b/examples/tg16/dns/master/conf-master/e33-2.conf new file mode 100644 index 0000000..07b694e --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e33-2.conf @@ -0,0 +1,7 @@ +zone "e33-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e33-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e35-1.conf b/examples/tg16/dns/master/conf-master/e35-1.conf new file mode 100644 index 0000000..a4d7e69 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e35-1.conf @@ -0,0 +1,7 @@ +zone "e35-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e35-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e35-2.conf b/examples/tg16/dns/master/conf-master/e35-2.conf new file mode 100644 index 0000000..3f14bce --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e35-2.conf @@ -0,0 +1,7 @@ +zone "e35-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e35-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e37-1.conf b/examples/tg16/dns/master/conf-master/e37-1.conf new file mode 100644 index 0000000..e32ec9c --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e37-1.conf @@ -0,0 +1,7 @@ +zone "e37-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e37-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e37-2.conf b/examples/tg16/dns/master/conf-master/e37-2.conf new file mode 100644 index 0000000..7369148 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e37-2.conf @@ -0,0 +1,7 @@ +zone "e37-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e37-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e39-1.conf b/examples/tg16/dns/master/conf-master/e39-1.conf new file mode 100644 index 0000000..44dc53b --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e39-1.conf @@ -0,0 +1,7 @@ +zone "e39-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e39-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e39-2.conf b/examples/tg16/dns/master/conf-master/e39-2.conf new file mode 100644 index 0000000..f20b90e --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e39-2.conf @@ -0,0 +1,7 @@ +zone "e39-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e39-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e41-1.conf b/examples/tg16/dns/master/conf-master/e41-1.conf new file mode 100644 index 0000000..23c6c3e --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e41-1.conf @@ -0,0 +1,7 @@ +zone "e41-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e41-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e41-2.conf b/examples/tg16/dns/master/conf-master/e41-2.conf new file mode 100644 index 0000000..eedf10e --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e41-2.conf @@ -0,0 +1,7 @@ +zone "e41-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e41-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e41-3.conf b/examples/tg16/dns/master/conf-master/e41-3.conf new file mode 100644 index 0000000..283e5b6 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e41-3.conf @@ -0,0 +1,7 @@ +zone "e41-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e41-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e41-4.conf b/examples/tg16/dns/master/conf-master/e41-4.conf new file mode 100644 index 0000000..bca976e --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e41-4.conf @@ -0,0 +1,7 @@ +zone "e41-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e41-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e43-1.conf b/examples/tg16/dns/master/conf-master/e43-1.conf new file mode 100644 index 0000000..9ff4312 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e43-1.conf @@ -0,0 +1,7 @@ +zone "e43-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e43-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e43-2.conf b/examples/tg16/dns/master/conf-master/e43-2.conf new file mode 100644 index 0000000..6266e3d --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e43-2.conf @@ -0,0 +1,7 @@ +zone "e43-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e43-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e43-3.conf b/examples/tg16/dns/master/conf-master/e43-3.conf new file mode 100644 index 0000000..d04e85f --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e43-3.conf @@ -0,0 +1,7 @@ +zone "e43-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e43-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e43-4.conf b/examples/tg16/dns/master/conf-master/e43-4.conf new file mode 100644 index 0000000..e865c23 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e43-4.conf @@ -0,0 +1,7 @@ +zone "e43-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e43-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e45-1.conf b/examples/tg16/dns/master/conf-master/e45-1.conf new file mode 100644 index 0000000..bd6b7d8 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e45-1.conf @@ -0,0 +1,7 @@ +zone "e45-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e45-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e45-2.conf b/examples/tg16/dns/master/conf-master/e45-2.conf new file mode 100644 index 0000000..0d7c702 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e45-2.conf @@ -0,0 +1,7 @@ +zone "e45-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e45-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e45-3.conf b/examples/tg16/dns/master/conf-master/e45-3.conf new file mode 100644 index 0000000..1fad52a --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e45-3.conf @@ -0,0 +1,7 @@ +zone "e45-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e45-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e45-4.conf b/examples/tg16/dns/master/conf-master/e45-4.conf new file mode 100644 index 0000000..1a0bfaf --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e45-4.conf @@ -0,0 +1,7 @@ +zone "e45-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e45-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e47-1.conf b/examples/tg16/dns/master/conf-master/e47-1.conf new file mode 100644 index 0000000..bf24755 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e47-1.conf @@ -0,0 +1,7 @@ +zone "e47-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e47-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e47-2.conf b/examples/tg16/dns/master/conf-master/e47-2.conf new file mode 100644 index 0000000..b4e0d7d --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e47-2.conf @@ -0,0 +1,7 @@ +zone "e47-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e47-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e47-3.conf b/examples/tg16/dns/master/conf-master/e47-3.conf new file mode 100644 index 0000000..e4f6666 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e47-3.conf @@ -0,0 +1,7 @@ +zone "e47-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e47-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e47-4.conf b/examples/tg16/dns/master/conf-master/e47-4.conf new file mode 100644 index 0000000..4276464 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e47-4.conf @@ -0,0 +1,7 @@ +zone "e47-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e47-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e49-1.conf b/examples/tg16/dns/master/conf-master/e49-1.conf new file mode 100644 index 0000000..4fd495e --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e49-1.conf @@ -0,0 +1,7 @@ +zone "e49-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e49-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e49-2.conf b/examples/tg16/dns/master/conf-master/e49-2.conf new file mode 100644 index 0000000..7051b7d --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e49-2.conf @@ -0,0 +1,7 @@ +zone "e49-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e49-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e49-3.conf b/examples/tg16/dns/master/conf-master/e49-3.conf new file mode 100644 index 0000000..48f5a19 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e49-3.conf @@ -0,0 +1,7 @@ +zone "e49-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e49-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e49-4.conf b/examples/tg16/dns/master/conf-master/e49-4.conf new file mode 100644 index 0000000..1d15982 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e49-4.conf @@ -0,0 +1,7 @@ +zone "e49-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e49-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e5-2.conf b/examples/tg16/dns/master/conf-master/e5-2.conf new file mode 100644 index 0000000..dbbcfed --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e5-2.conf @@ -0,0 +1,7 @@ +zone "e5-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e5-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e5-3.conf b/examples/tg16/dns/master/conf-master/e5-3.conf new file mode 100644 index 0000000..2ea2361 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e5-3.conf @@ -0,0 +1,7 @@ +zone "e5-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e5-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e5-4.conf b/examples/tg16/dns/master/conf-master/e5-4.conf new file mode 100644 index 0000000..4ad61e3 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e5-4.conf @@ -0,0 +1,7 @@ +zone "e5-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e5-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e51-1.conf b/examples/tg16/dns/master/conf-master/e51-1.conf new file mode 100644 index 0000000..b783385 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e51-1.conf @@ -0,0 +1,7 @@ +zone "e51-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e51-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e51-2.conf b/examples/tg16/dns/master/conf-master/e51-2.conf new file mode 100644 index 0000000..51bfec2 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e51-2.conf @@ -0,0 +1,7 @@ +zone "e51-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e51-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e51-3.conf b/examples/tg16/dns/master/conf-master/e51-3.conf new file mode 100644 index 0000000..7c8c6d9 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e51-3.conf @@ -0,0 +1,7 @@ +zone "e51-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e51-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e51-4.conf b/examples/tg16/dns/master/conf-master/e51-4.conf new file mode 100644 index 0000000..740e376 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e51-4.conf @@ -0,0 +1,7 @@ +zone "e51-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e51-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e53-1.conf b/examples/tg16/dns/master/conf-master/e53-1.conf new file mode 100644 index 0000000..5277c66 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e53-1.conf @@ -0,0 +1,7 @@ +zone "e53-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e53-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e53-2.conf b/examples/tg16/dns/master/conf-master/e53-2.conf new file mode 100644 index 0000000..c4962a1 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e53-2.conf @@ -0,0 +1,7 @@ +zone "e53-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e53-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e53-3.conf b/examples/tg16/dns/master/conf-master/e53-3.conf new file mode 100644 index 0000000..38e799c --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e53-3.conf @@ -0,0 +1,7 @@ +zone "e53-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e53-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e53-4.conf b/examples/tg16/dns/master/conf-master/e53-4.conf new file mode 100644 index 0000000..a52b9d0 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e53-4.conf @@ -0,0 +1,7 @@ +zone "e53-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e53-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e55-1.conf b/examples/tg16/dns/master/conf-master/e55-1.conf new file mode 100644 index 0000000..2cf0d76 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e55-1.conf @@ -0,0 +1,7 @@ +zone "e55-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e55-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e55-2.conf b/examples/tg16/dns/master/conf-master/e55-2.conf new file mode 100644 index 0000000..ca8b7e4 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e55-2.conf @@ -0,0 +1,7 @@ +zone "e55-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e55-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e55-3.conf b/examples/tg16/dns/master/conf-master/e55-3.conf new file mode 100644 index 0000000..2e14648 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e55-3.conf @@ -0,0 +1,7 @@ +zone "e55-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e55-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e55-4.conf b/examples/tg16/dns/master/conf-master/e55-4.conf new file mode 100644 index 0000000..fd40ea7 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e55-4.conf @@ -0,0 +1,7 @@ +zone "e55-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e55-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e57-1.conf b/examples/tg16/dns/master/conf-master/e57-1.conf new file mode 100644 index 0000000..4c1f3a7 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e57-1.conf @@ -0,0 +1,7 @@ +zone "e57-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e57-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e57-2.conf b/examples/tg16/dns/master/conf-master/e57-2.conf new file mode 100644 index 0000000..3269f3c --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e57-2.conf @@ -0,0 +1,7 @@ +zone "e57-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e57-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e57-3.conf b/examples/tg16/dns/master/conf-master/e57-3.conf new file mode 100644 index 0000000..3e53d8f --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e57-3.conf @@ -0,0 +1,7 @@ +zone "e57-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e57-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e57-4.conf b/examples/tg16/dns/master/conf-master/e57-4.conf new file mode 100644 index 0000000..5ec928a --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e57-4.conf @@ -0,0 +1,7 @@ +zone "e57-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e57-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e59-1.conf b/examples/tg16/dns/master/conf-master/e59-1.conf new file mode 100644 index 0000000..566e90d --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e59-1.conf @@ -0,0 +1,7 @@ +zone "e59-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e59-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e59-2.conf b/examples/tg16/dns/master/conf-master/e59-2.conf new file mode 100644 index 0000000..0d91a6f --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e59-2.conf @@ -0,0 +1,7 @@ +zone "e59-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e59-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e59-3.conf b/examples/tg16/dns/master/conf-master/e59-3.conf new file mode 100644 index 0000000..e4db671 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e59-3.conf @@ -0,0 +1,7 @@ +zone "e59-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e59-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e59-4.conf b/examples/tg16/dns/master/conf-master/e59-4.conf new file mode 100644 index 0000000..7c2ce15 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e59-4.conf @@ -0,0 +1,7 @@ +zone "e59-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e59-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e61-1.conf b/examples/tg16/dns/master/conf-master/e61-1.conf new file mode 100644 index 0000000..60757e5 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e61-1.conf @@ -0,0 +1,7 @@ +zone "e61-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e61-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e61-2.conf b/examples/tg16/dns/master/conf-master/e61-2.conf new file mode 100644 index 0000000..841d9db --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e61-2.conf @@ -0,0 +1,7 @@ +zone "e61-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e61-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e61-3.conf b/examples/tg16/dns/master/conf-master/e61-3.conf new file mode 100644 index 0000000..c58afc9 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e61-3.conf @@ -0,0 +1,7 @@ +zone "e61-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e61-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e61-4.conf b/examples/tg16/dns/master/conf-master/e61-4.conf new file mode 100644 index 0000000..c7f0e09 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e61-4.conf @@ -0,0 +1,7 @@ +zone "e61-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e61-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e63-1.conf b/examples/tg16/dns/master/conf-master/e63-1.conf new file mode 100644 index 0000000..40067bf --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e63-1.conf @@ -0,0 +1,7 @@ +zone "e63-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e63-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e63-2.conf b/examples/tg16/dns/master/conf-master/e63-2.conf new file mode 100644 index 0000000..896d0f5 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e63-2.conf @@ -0,0 +1,7 @@ +zone "e63-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e63-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e63-3.conf b/examples/tg16/dns/master/conf-master/e63-3.conf new file mode 100644 index 0000000..21b8a42 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e63-3.conf @@ -0,0 +1,7 @@ +zone "e63-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e63-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e63-4.conf b/examples/tg16/dns/master/conf-master/e63-4.conf new file mode 100644 index 0000000..d2f5188 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e63-4.conf @@ -0,0 +1,7 @@ +zone "e63-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e63-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e65-1.conf b/examples/tg16/dns/master/conf-master/e65-1.conf new file mode 100644 index 0000000..707b86f --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e65-1.conf @@ -0,0 +1,7 @@ +zone "e65-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e65-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e65-2.conf b/examples/tg16/dns/master/conf-master/e65-2.conf new file mode 100644 index 0000000..697819d --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e65-2.conf @@ -0,0 +1,7 @@ +zone "e65-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e65-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e65-3.conf b/examples/tg16/dns/master/conf-master/e65-3.conf new file mode 100644 index 0000000..3c58bc2 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e65-3.conf @@ -0,0 +1,7 @@ +zone "e65-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e65-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e65-4.conf b/examples/tg16/dns/master/conf-master/e65-4.conf new file mode 100644 index 0000000..af38c4d --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e65-4.conf @@ -0,0 +1,7 @@ +zone "e65-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e65-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e67-1.conf b/examples/tg16/dns/master/conf-master/e67-1.conf new file mode 100644 index 0000000..8ec9b33 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e67-1.conf @@ -0,0 +1,7 @@ +zone "e67-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e67-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e67-2.conf b/examples/tg16/dns/master/conf-master/e67-2.conf new file mode 100644 index 0000000..b3a58dc --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e67-2.conf @@ -0,0 +1,7 @@ +zone "e67-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e67-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e67-3.conf b/examples/tg16/dns/master/conf-master/e67-3.conf new file mode 100644 index 0000000..16cf52b --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e67-3.conf @@ -0,0 +1,7 @@ +zone "e67-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e67-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e67-4.conf b/examples/tg16/dns/master/conf-master/e67-4.conf new file mode 100644 index 0000000..bc3c422 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e67-4.conf @@ -0,0 +1,7 @@ +zone "e67-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e67-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e69-1.conf b/examples/tg16/dns/master/conf-master/e69-1.conf new file mode 100644 index 0000000..ea3866d --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e69-1.conf @@ -0,0 +1,7 @@ +zone "e69-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e69-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e69-2.conf b/examples/tg16/dns/master/conf-master/e69-2.conf new file mode 100644 index 0000000..e3eb8a2 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e69-2.conf @@ -0,0 +1,7 @@ +zone "e69-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e69-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e7-1.conf b/examples/tg16/dns/master/conf-master/e7-1.conf new file mode 100644 index 0000000..7ddaafd --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e7-1.conf @@ -0,0 +1,7 @@ +zone "e7-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e7-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e7-2.conf b/examples/tg16/dns/master/conf-master/e7-2.conf new file mode 100644 index 0000000..10b2e22 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e7-2.conf @@ -0,0 +1,7 @@ +zone "e7-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e7-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e7-3.conf b/examples/tg16/dns/master/conf-master/e7-3.conf new file mode 100644 index 0000000..3b907c2 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e7-3.conf @@ -0,0 +1,7 @@ +zone "e7-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e7-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e7-4.conf b/examples/tg16/dns/master/conf-master/e7-4.conf new file mode 100644 index 0000000..b89b12c --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e7-4.conf @@ -0,0 +1,7 @@ +zone "e7-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e7-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e71-1.conf b/examples/tg16/dns/master/conf-master/e71-1.conf new file mode 100644 index 0000000..f8eedd0 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e71-1.conf @@ -0,0 +1,7 @@ +zone "e71-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e71-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e71-2.conf b/examples/tg16/dns/master/conf-master/e71-2.conf new file mode 100644 index 0000000..e68b0e5 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e71-2.conf @@ -0,0 +1,7 @@ +zone "e71-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e71-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e73-1.conf b/examples/tg16/dns/master/conf-master/e73-1.conf new file mode 100644 index 0000000..dc65130 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e73-1.conf @@ -0,0 +1,7 @@ +zone "e73-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e73-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e73-2.conf b/examples/tg16/dns/master/conf-master/e73-2.conf new file mode 100644 index 0000000..0927c7c --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e73-2.conf @@ -0,0 +1,7 @@ +zone "e73-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e73-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e75-1.conf b/examples/tg16/dns/master/conf-master/e75-1.conf new file mode 100644 index 0000000..6420985 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e75-1.conf @@ -0,0 +1,7 @@ +zone "e75-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e75-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e75-2.conf b/examples/tg16/dns/master/conf-master/e75-2.conf new file mode 100644 index 0000000..797b85b --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e75-2.conf @@ -0,0 +1,7 @@ +zone "e75-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e75-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e77-1.conf b/examples/tg16/dns/master/conf-master/e77-1.conf new file mode 100644 index 0000000..dfd539f --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e77-1.conf @@ -0,0 +1,7 @@ +zone "e77-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e77-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e77-2.conf b/examples/tg16/dns/master/conf-master/e77-2.conf new file mode 100644 index 0000000..e9f97b1 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e77-2.conf @@ -0,0 +1,7 @@ +zone "e77-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e77-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e79-1.conf b/examples/tg16/dns/master/conf-master/e79-1.conf new file mode 100644 index 0000000..624b25d --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e79-1.conf @@ -0,0 +1,7 @@ +zone "e79-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e79-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e79-2.conf b/examples/tg16/dns/master/conf-master/e79-2.conf new file mode 100644 index 0000000..bf29434 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e79-2.conf @@ -0,0 +1,7 @@ +zone "e79-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e79-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e81-1.conf b/examples/tg16/dns/master/conf-master/e81-1.conf new file mode 100644 index 0000000..a814385 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e81-1.conf @@ -0,0 +1,7 @@ +zone "e81-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e81-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e81-2.conf b/examples/tg16/dns/master/conf-master/e81-2.conf new file mode 100644 index 0000000..46f7c23 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e81-2.conf @@ -0,0 +1,7 @@ +zone "e81-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e81-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e83-2.conf b/examples/tg16/dns/master/conf-master/e83-2.conf new file mode 100644 index 0000000..1bdd287 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e83-2.conf @@ -0,0 +1,7 @@ +zone "e83-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e83-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e85-2.conf b/examples/tg16/dns/master/conf-master/e85-2.conf new file mode 100644 index 0000000..9817768 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e85-2.conf @@ -0,0 +1,7 @@ +zone "e85-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e85-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e9-1.conf b/examples/tg16/dns/master/conf-master/e9-1.conf new file mode 100644 index 0000000..3760865 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e9-1.conf @@ -0,0 +1,7 @@ +zone "e9-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e9-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e9-2.conf b/examples/tg16/dns/master/conf-master/e9-2.conf new file mode 100644 index 0000000..9dfe47e --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e9-2.conf @@ -0,0 +1,7 @@ +zone "e9-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e9-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e9-3.conf b/examples/tg16/dns/master/conf-master/e9-3.conf new file mode 100644 index 0000000..ecddd82 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e9-3.conf @@ -0,0 +1,7 @@ +zone "e9-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e9-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/e9-4.conf b/examples/tg16/dns/master/conf-master/e9-4.conf new file mode 100644 index 0000000..038d89d --- /dev/null +++ b/examples/tg16/dns/master/conf-master/e9-4.conf @@ -0,0 +1,7 @@ +zone "e9-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/e9-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/event.conf b/examples/tg16/dns/master/conf-master/event.conf new file mode 100644 index 0000000..6d81506 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/event.conf @@ -0,0 +1,7 @@ +zone "event.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/event.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/flankenord.conf b/examples/tg16/dns/master/conf-master/flankenord.conf new file mode 100644 index 0000000..230e020 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/flankenord.conf @@ -0,0 +1,7 @@ +zone "flankenord.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/flankenord.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/flankesor.conf b/examples/tg16/dns/master/conf-master/flankesor.conf new file mode 100644 index 0000000..3f78de5 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/flankesor.conf @@ -0,0 +1,7 @@ +zone "flankesor.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/flankesor.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/foh.conf b/examples/tg16/dns/master/conf-master/foh.conf new file mode 100644 index 0000000..318fdd1 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/foh.conf @@ -0,0 +1,7 @@ +zone "foh.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/foh.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/fugleberget.conf b/examples/tg16/dns/master/conf-master/fugleberget.conf new file mode 100644 index 0000000..2ae7801 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/fugleberget.conf @@ -0,0 +1,7 @@ +zone "fugleberget.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/fugleberget.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/game.conf b/examples/tg16/dns/master/conf-master/game.conf new file mode 100644 index 0000000..b897be2 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/game.conf @@ -0,0 +1,7 @@ +zone "game.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/game.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/gamestage.conf b/examples/tg16/dns/master/conf-master/gamestage.conf new file mode 100644 index 0000000..e943c48 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/gamestage.conf @@ -0,0 +1,7 @@ +zone "gamestage.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/gamestage.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/highlights.conf b/examples/tg16/dns/master/conf-master/highlights.conf new file mode 100644 index 0000000..03216be --- /dev/null +++ b/examples/tg16/dns/master/conf-master/highlights.conf @@ -0,0 +1,7 @@ +zone "highlights.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/highlights.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/hon.conf b/examples/tg16/dns/master/conf-master/hon.conf new file mode 100644 index 0000000..7f1eb41 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/hon.conf @@ -0,0 +1,7 @@ +zone "hon.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/hon.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/info.conf b/examples/tg16/dns/master/conf-master/info.conf new file mode 100644 index 0000000..9006e60 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/info.conf @@ -0,0 +1,7 @@ +zone "info.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/info.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/innsjekk.conf b/examples/tg16/dns/master/conf-master/innsjekk.conf new file mode 100644 index 0000000..5f588c0 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/innsjekk.conf @@ -0,0 +1,7 @@ +zone "innsjekk.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/innsjekk.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/logistikk.conf b/examples/tg16/dns/master/conf-master/logistikk.conf new file mode 100644 index 0000000..da0be43 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/logistikk.conf @@ -0,0 +1,7 @@ +zone "logistikk.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/logistikk.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/medic.conf b/examples/tg16/dns/master/conf-master/medic.conf new file mode 100644 index 0000000..0ee3baf --- /dev/null +++ b/examples/tg16/dns/master/conf-master/medic.conf @@ -0,0 +1,7 @@ +zone "medic.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/medic.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/noc.conf b/examples/tg16/dns/master/conf-master/noc.conf new file mode 100644 index 0000000..2c03867 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/noc.conf @@ -0,0 +1,7 @@ +zone "noc.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/noc.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/north.conf b/examples/tg16/dns/master/conf-master/north.conf new file mode 100644 index 0000000..57fe7b5 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/north.conf @@ -0,0 +1,7 @@ +zone "north.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/north.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/presse.conf b/examples/tg16/dns/master/conf-master/presse.conf new file mode 100644 index 0000000..3e9c613 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/presse.conf @@ -0,0 +1,7 @@ +zone "presse.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/presse.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/resepsjon.conf b/examples/tg16/dns/master/conf-master/resepsjon.conf new file mode 100644 index 0000000..8889344 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/resepsjon.conf @@ -0,0 +1,7 @@ +zone "resepsjon.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/resepsjon.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/santander-temp.conf b/examples/tg16/dns/master/conf-master/santander-temp.conf new file mode 100644 index 0000000..d4ebea9 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/santander-temp.conf @@ -0,0 +1,7 @@ +zone "santander-temp.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/santander-temp.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/security.conf b/examples/tg16/dns/master/conf-master/security.conf new file mode 100644 index 0000000..ba55f9f --- /dev/null +++ b/examples/tg16/dns/master/conf-master/security.conf @@ -0,0 +1,7 @@ +zone "security.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/security.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/security2.conf b/examples/tg16/dns/master/conf-master/security2.conf new file mode 100644 index 0000000..9d744f9 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/security2.conf @@ -0,0 +1,7 @@ +zone "security2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/security2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/sponsor.conf b/examples/tg16/dns/master/conf-master/sponsor.conf new file mode 100644 index 0000000..3bac823 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/sponsor.conf @@ -0,0 +1,7 @@ +zone "sponsor.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/sponsor.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/stage.conf b/examples/tg16/dns/master/conf-master/stage.conf new file mode 100644 index 0000000..3960c20 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/stage.conf @@ -0,0 +1,7 @@ +zone "stage.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/stage.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/streamer1.conf b/examples/tg16/dns/master/conf-master/streamer1.conf new file mode 100644 index 0000000..c93a1f5 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/streamer1.conf @@ -0,0 +1,7 @@ +zone "streamer1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/streamer1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/tech-wlan.conf b/examples/tg16/dns/master/conf-master/tech-wlan.conf new file mode 100644 index 0000000..66708e5 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/tech-wlan.conf @@ -0,0 +1,7 @@ +zone "tech-wlan.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/tech-wlan.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/conf-master/wlan.conf b/examples/tg16/dns/master/conf-master/wlan.conf new file mode 100644 index 0000000..8cb4ba3 --- /dev/null +++ b/examples/tg16/dns/master/conf-master/wlan.conf @@ -0,0 +1,7 @@ +zone "wlan.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type master; +	notify yes; +	allow-update { key DHCP_UPDATER; }; +	file "dynamic/wlan.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/master/infra.tg16.gathering.org.zone b/examples/tg16/dns/master/infra.tg16.gathering.org.zone new file mode 100644 index 0000000..3d0126e --- /dev/null +++ b/examples/tg16/dns/master/infra.tg16.gathering.org.zone @@ -0,0 +1,13 @@ +$TTL 3600 +@	IN	SOA	r2-d2.tg16.gathering.org.	abuse.gathering.org. ( +			2016032001; serial +			3600 ; refresh  +			1800 ; retry +			608400 ; expire +			3600 ) ; minimum and default TTL + +		IN	NS	r2-d2.tg16.gathering.org. +		IN	NS	c-3po.tg16.gathering.org. + +; Generated by make-all-config.sh on the bootstrapping/nms server. +; Will not be overwritten unless it is missing ;) diff --git a/examples/tg16/dns/master/named.conf b/examples/tg16/dns/master/named.conf new file mode 100644 index 0000000..4bef39c --- /dev/null +++ b/examples/tg16/dns/master/named.conf @@ -0,0 +1,147 @@ +// This named.conf was generated by make-named.pl at 20160322-2330 +// The current version of make-named.pl should not overwrite this file. +acl tg-nett  { 88.92.0.0/17; 2a06:5840::/29; 185.110.148.0/22; 127.0.0.0/8; ::1; }; +acl ns-xfr   { 185.110.148.2; 2a06:5841:1337::2; 185.110.149.2; 2a06:5841:149a::2; 185.110.150.0/25; 2a06:5841:150a::1/64; }; +acl ext-xfr  { 193.0.0.0/22; 2001:610:240::/48; 2001:67c:2e8::/48; }; + +options { +        directory "/etc/bind"; +        allow-recursion { tg-nett; }; +        allow-query { any; }; +        allow-transfer { ns-xfr; }; +        recursion yes; +        auth-nxdomain no; +        listen-on-v6 { any; }; +	statistics-file "/etc/bind/named.rndc-stats"; +}; + +logging { +        category "default" { "debug"; }; +        category "general" { "debug"; }; +        category "database" { "debug"; }; +        category "security" { "debug"; "stats"; }; +        category "config" { "debug"; "stats"; }; +        category "resolver" { "debug"; "stats"; }; +        category "xfer-in" { "debug"; "stats"; }; +        category "xfer-out" { "debug"; "stats"; }; +        category "notify" { "debug"; "stats"; }; +        category "client" { "debug"; }; +        category "unmatched" { "debug"; }; +        category "network" { "debug"; }; +        category "update" { "debug"; }; +        category "queries" { "stats"; "query"; }; +        category "dispatch" { "debug"; }; +        category "dnssec" { "debug"; }; +        category "lame-servers" { "debug"; }; + +        channel "debug" { +                file "/etc/bind/nameddbg" versions 2 size 50m; +                print-time yes; +                print-category yes; +                print-severity yes; +                severity debug 9; +        }; + +        channel "stats" { +                file "/etc/bind/namedstats" versions 2 size 50m; +                print-time yes; +                print-category yes; +                print-severity yes; +                severity debug 3; +        }; + +	channel "query" { +		file "/etc/bind/namedquery" versions 2 size 500m; +		print-time yes; +		severity info; +	}; +		 +}; + +key DHCP_UPDATER { +        algorithm HMAC-MD5.SIG-ALG.REG.INT; +        secret <removed>; +}; + +zone "tg16.gathering.org" { +        type master; +        file "tg16.gathering.org.zone"; +        notify yes; +        allow-transfer { ns-xfr; }; +}; + +zone "infra.tg16.gathering.org" { +        type master; +        file "infra.tg16.gathering.org.zone"; +        notify yes; +        allow-transfer { ns-xfr; }; +}; + +zone "0.4.8.5.6.0.a.2.ip6.arpa" { +        type master; +        allow-update { key DHCP_UPDATER; }; +        notify yes; +        file "0.4.8.5.6.0.a.2.ip6.arpa.zone"; +        allow-transfer { ns-xfr; ext-xfr; }; +}; + +zone "1.4.8.5.6.0.a.2.ip6.arpa" { +        type master; +        allow-update { key DHCP_UPDATER; }; +        notify yes; +        file "1.4.8.5.6.0.a.2.ip6.arpa.zone"; +        allow-transfer { ns-xfr; ext-xfr; }; +}; + +zone "2.4.8.5.6.0.a.2.ip6.arpa" { +        type master; +        allow-update { key DHCP_UPDATER; }; +        notify yes; +        file "2.4.8.5.6.0.a.2.ip6.arpa.zone"; +        allow-transfer { ns-xfr; ext-xfr; }; +}; + +zone "3.4.8.5.6.0.a.2.ip6.arpa" { +        type master; +        allow-update { key DHCP_UPDATER; }; +        notify yes; +        file "3.4.8.5.6.0.a.2.ip6.arpa.zone"; +        allow-transfer { ns-xfr; ext-xfr; }; +}; + +zone "4.4.8.5.6.0.a.2.ip6.arpa" { +        type master; +        allow-update { key DHCP_UPDATER; }; +        notify yes; +        file "4.4.8.5.6.0.a.2.ip6.arpa.zone"; +        allow-transfer { ns-xfr; ext-xfr; }; +}; + +zone "5.4.8.5.6.0.a.2.ip6.arpa" { +        type master; +        allow-update { key DHCP_UPDATER; }; +        notify yes; +        file "5.4.8.5.6.0.a.2.ip6.arpa.zone"; +        allow-transfer { ns-xfr; ext-xfr; }; +}; + +zone "6.4.8.5.6.0.a.2.ip6.arpa" { +        type master; +        allow-update { key DHCP_UPDATER; }; +        notify yes; +        file "6.4.8.5.6.0.a.2.ip6.arpa.zone"; +        allow-transfer { ns-xfr; ext-xfr; }; +}; + +zone "7.4.8.5.6.0.a.2.ip6.arpa" { +        type master; +        allow-update { key DHCP_UPDATER; }; +        notify yes; +        file "7.4.8.5.6.0.a.2.ip6.arpa.zone"; +        allow-transfer { ns-xfr; ext-xfr; }; +}; + + +include "/etc/bind/named.conf.default-zones"; +include "named.reverse4.conf"; +include "named.master-include.conf"; diff --git a/examples/tg16/dns/master/named.conf.default-zones b/examples/tg16/dns/master/named.conf.default-zones new file mode 100644 index 0000000..355338b --- /dev/null +++ b/examples/tg16/dns/master/named.conf.default-zones @@ -0,0 +1,30 @@ +// prime the server with knowledge of the root servers +zone "." { +	type hint; +	file "/etc/bind/db.root"; +}; + +// be authoritative for the localhost forward and reverse zones, and for +// broadcast zones as per RFC 1912 + +zone "localhost" { +	type master; +	file "/etc/bind/db.local"; +}; + +zone "127.in-addr.arpa" { +	type master; +	file "/etc/bind/db.127"; +}; + +zone "0.in-addr.arpa" { +	type master; +	file "/etc/bind/db.0"; +}; + +zone "255.in-addr.arpa" { +	type master; +	file "/etc/bind/db.255"; +}; + + diff --git a/examples/tg16/dns/master/named.master-include.conf b/examples/tg16/dns/master/named.master-include.conf new file mode 100644 index 0000000..72f855b --- /dev/null +++ b/examples/tg16/dns/master/named.master-include.conf @@ -0,0 +1,179 @@ +include "/etc/bind/conf-master/ap-creativia.conf"; +include "/etc/bind/conf-master/ap-distro0.conf"; +include "/etc/bind/conf-master/ap-distro1.conf"; +include "/etc/bind/conf-master/ap-distro2.conf"; +include "/etc/bind/conf-master/ap-distro3.conf"; +include "/etc/bind/conf-master/ap-distro4.conf"; +include "/etc/bind/conf-master/ap-distro5.conf"; +include "/etc/bind/conf-master/ap-distro6.conf"; +include "/etc/bind/conf-master/ap-distro7.conf"; +include "/etc/bind/conf-master/ap-stand.conf"; +include "/etc/bind/conf-master/auditorium.conf"; +include "/etc/bind/conf-master/creativia-village.conf"; +include "/etc/bind/conf-master/creativia.conf"; +include "/etc/bind/conf-master/creativia1.conf"; +include "/etc/bind/conf-master/creativia2.conf"; +include "/etc/bind/conf-master/creativia3.conf"; +include "/etc/bind/conf-master/creativia4.conf"; +include "/etc/bind/conf-master/creativia5.conf"; +include "/etc/bind/conf-master/creativia6.conf"; +include "/etc/bind/conf-master/creativia7.conf"; +include "/etc/bind/conf-master/creativiasw1.conf"; +include "/etc/bind/conf-master/crew.conf"; +include "/etc/bind/conf-master/deltaker-srv.conf"; +include "/etc/bind/conf-master/e1-3.conf"; +include "/etc/bind/conf-master/e1-4.conf"; +include "/etc/bind/conf-master/e11-1.conf"; +include "/etc/bind/conf-master/e11-2.conf"; +include "/etc/bind/conf-master/e11-3.conf"; +include "/etc/bind/conf-master/e11-4.conf"; +include "/etc/bind/conf-master/e13-1.conf"; +include "/etc/bind/conf-master/e13-2.conf"; +include "/etc/bind/conf-master/e13-3.conf"; +include "/etc/bind/conf-master/e13-4.conf"; +include "/etc/bind/conf-master/e15-1.conf"; +include "/etc/bind/conf-master/e15-2.conf"; +include "/etc/bind/conf-master/e15-3.conf"; +include "/etc/bind/conf-master/e15-4.conf"; +include "/etc/bind/conf-master/e17-1.conf"; +include "/etc/bind/conf-master/e17-2.conf"; +include "/etc/bind/conf-master/e17-3.conf"; +include "/etc/bind/conf-master/e17-4.conf"; +include "/etc/bind/conf-master/e19-1.conf"; +include "/etc/bind/conf-master/e19-2.conf"; +include "/etc/bind/conf-master/e19-3.conf"; +include "/etc/bind/conf-master/e19-4.conf"; +include "/etc/bind/conf-master/e21-1.conf"; +include "/etc/bind/conf-master/e21-2.conf"; +include "/etc/bind/conf-master/e21-3.conf"; +include "/etc/bind/conf-master/e21-4.conf"; +include "/etc/bind/conf-master/e23-1.conf"; +include "/etc/bind/conf-master/e23-2.conf"; +include "/etc/bind/conf-master/e23-3.conf"; +include "/etc/bind/conf-master/e23-4.conf"; +include "/etc/bind/conf-master/e25-1.conf"; +include "/etc/bind/conf-master/e25-2.conf"; +include "/etc/bind/conf-master/e27-1.conf"; +include "/etc/bind/conf-master/e27-2.conf"; +include "/etc/bind/conf-master/e29-1.conf"; +include "/etc/bind/conf-master/e29-2.conf"; +include "/etc/bind/conf-master/e3-3.conf"; +include "/etc/bind/conf-master/e3-4.conf"; +include "/etc/bind/conf-master/e31-1.conf"; +include "/etc/bind/conf-master/e31-2.conf"; +include "/etc/bind/conf-master/e33-1.conf"; +include "/etc/bind/conf-master/e33-2.conf"; +include "/etc/bind/conf-master/e35-1.conf"; +include "/etc/bind/conf-master/e35-2.conf"; +include "/etc/bind/conf-master/e37-1.conf"; +include "/etc/bind/conf-master/e37-2.conf"; +include "/etc/bind/conf-master/e39-1.conf"; +include "/etc/bind/conf-master/e39-2.conf"; +include "/etc/bind/conf-master/e41-1.conf"; +include "/etc/bind/conf-master/e41-2.conf"; +include "/etc/bind/conf-master/e41-3.conf"; +include "/etc/bind/conf-master/e41-4.conf"; +include "/etc/bind/conf-master/e43-1.conf"; +include "/etc/bind/conf-master/e43-2.conf"; +include "/etc/bind/conf-master/e43-3.conf"; +include "/etc/bind/conf-master/e43-4.conf"; +include "/etc/bind/conf-master/e45-1.conf"; +include "/etc/bind/conf-master/e45-2.conf"; +include "/etc/bind/conf-master/e45-3.conf"; +include "/etc/bind/conf-master/e45-4.conf"; +include "/etc/bind/conf-master/e47-1.conf"; +include "/etc/bind/conf-master/e47-2.conf"; +include "/etc/bind/conf-master/e47-3.conf"; +include "/etc/bind/conf-master/e47-4.conf"; +include "/etc/bind/conf-master/e49-1.conf"; +include "/etc/bind/conf-master/e49-2.conf"; +include "/etc/bind/conf-master/e49-3.conf"; +include "/etc/bind/conf-master/e49-4.conf"; +include "/etc/bind/conf-master/e5-2.conf"; +include "/etc/bind/conf-master/e5-3.conf"; +include "/etc/bind/conf-master/e5-4.conf"; +include "/etc/bind/conf-master/e51-1.conf"; +include "/etc/bind/conf-master/e51-2.conf"; +include "/etc/bind/conf-master/e51-3.conf"; +include "/etc/bind/conf-master/e51-4.conf"; +include "/etc/bind/conf-master/e53-1.conf"; +include "/etc/bind/conf-master/e53-2.conf"; +include "/etc/bind/conf-master/e53-3.conf"; +include "/etc/bind/conf-master/e53-4.conf"; +include "/etc/bind/conf-master/e55-1.conf"; +include "/etc/bind/conf-master/e55-2.conf"; +include "/etc/bind/conf-master/e55-3.conf"; +include "/etc/bind/conf-master/e55-4.conf"; +include "/etc/bind/conf-master/e57-1.conf"; +include "/etc/bind/conf-master/e57-2.conf"; +include "/etc/bind/conf-master/e57-3.conf"; +include "/etc/bind/conf-master/e57-4.conf"; +include "/etc/bind/conf-master/e59-1.conf"; +include "/etc/bind/conf-master/e59-2.conf"; +include "/etc/bind/conf-master/e59-3.conf"; +include "/etc/bind/conf-master/e59-4.conf"; +include "/etc/bind/conf-master/e61-1.conf"; +include "/etc/bind/conf-master/e61-2.conf"; +include "/etc/bind/conf-master/e61-3.conf"; +include "/etc/bind/conf-master/e61-4.conf"; +include "/etc/bind/conf-master/e63-1.conf"; +include "/etc/bind/conf-master/e63-2.conf"; +include "/etc/bind/conf-master/e63-3.conf"; +include "/etc/bind/conf-master/e63-4.conf"; +include "/etc/bind/conf-master/e65-1.conf"; +include "/etc/bind/conf-master/e65-2.conf"; +include "/etc/bind/conf-master/e65-3.conf"; +include "/etc/bind/conf-master/e65-4.conf"; +include "/etc/bind/conf-master/e67-1.conf"; +include "/etc/bind/conf-master/e67-2.conf"; +include "/etc/bind/conf-master/e67-3.conf"; +include "/etc/bind/conf-master/e67-4.conf"; +include "/etc/bind/conf-master/e69-1.conf"; +include "/etc/bind/conf-master/e69-2.conf"; +include "/etc/bind/conf-master/e7-1.conf"; +include "/etc/bind/conf-master/e7-2.conf"; +include "/etc/bind/conf-master/e7-3.conf"; +include "/etc/bind/conf-master/e7-4.conf"; +include "/etc/bind/conf-master/e71-1.conf"; +include "/etc/bind/conf-master/e71-2.conf"; +include "/etc/bind/conf-master/e73-1.conf"; +include "/etc/bind/conf-master/e73-2.conf"; +include "/etc/bind/conf-master/e75-1.conf"; +include "/etc/bind/conf-master/e75-2.conf"; +include "/etc/bind/conf-master/e77-1.conf"; +include "/etc/bind/conf-master/e77-2.conf"; +include "/etc/bind/conf-master/e79-1.conf"; +include "/etc/bind/conf-master/e79-2.conf"; +include "/etc/bind/conf-master/e81-1.conf"; +include "/etc/bind/conf-master/e81-2.conf"; +include "/etc/bind/conf-master/e83-2.conf"; +include "/etc/bind/conf-master/e85-2.conf"; +include "/etc/bind/conf-master/e9-1.conf"; +include "/etc/bind/conf-master/e9-2.conf"; +include "/etc/bind/conf-master/e9-3.conf"; +include "/etc/bind/conf-master/e9-4.conf"; +include "/etc/bind/conf-master/event.conf"; +include "/etc/bind/conf-master/flankenord.conf"; +include "/etc/bind/conf-master/flankesor.conf"; +include "/etc/bind/conf-master/foh.conf"; +include "/etc/bind/conf-master/fugleberget.conf"; +include "/etc/bind/conf-master/game.conf"; +include "/etc/bind/conf-master/gamestage.conf"; +include "/etc/bind/conf-master/highlights.conf"; +include "/etc/bind/conf-master/hon.conf"; +include "/etc/bind/conf-master/info.conf"; +include "/etc/bind/conf-master/innsjekk.conf"; +include "/etc/bind/conf-master/logistikk.conf"; +include "/etc/bind/conf-master/medic.conf"; +include "/etc/bind/conf-master/noc.conf"; +include "/etc/bind/conf-master/north.conf"; +include "/etc/bind/conf-master/presse.conf"; +include "/etc/bind/conf-master/resepsjon.conf"; +include "/etc/bind/conf-master/santander-temp.conf"; +include "/etc/bind/conf-master/security.conf"; +include "/etc/bind/conf-master/security2.conf"; +include "/etc/bind/conf-master/sponsor.conf"; +include "/etc/bind/conf-master/stage.conf"; +include "/etc/bind/conf-master/streamer1.conf"; +include "/etc/bind/conf-master/tech-wlan.conf"; +include "/etc/bind/conf-master/wlan.conf"; diff --git a/examples/tg16/dns/master/named.reverse4.conf b/examples/tg16/dns/master/named.reverse4.conf new file mode 100644 index 0000000..66bae09 --- /dev/null +++ b/examples/tg16/dns/master/named.reverse4.conf @@ -0,0 +1,1188 @@ +// 88.92.0.0/24 +zone "0.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/0.92.88.in-addr.arpa.zone"; +}; + +// 88.92.1.0/24 +zone "1.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/1.92.88.in-addr.arpa.zone"; +}; + +// 88.92.2.0/24 +zone "2.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/2.92.88.in-addr.arpa.zone"; +}; + +// 88.92.3.0/24 +zone "3.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/3.92.88.in-addr.arpa.zone"; +}; + +// 88.92.4.0/24 +zone "4.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/4.92.88.in-addr.arpa.zone"; +}; + +// 88.92.5.0/24 +zone "5.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/5.92.88.in-addr.arpa.zone"; +}; + +// 88.92.6.0/24 +zone "6.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/6.92.88.in-addr.arpa.zone"; +}; + +// 88.92.7.0/24 +zone "7.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/7.92.88.in-addr.arpa.zone"; +}; + +// 88.92.8.0/24 +zone "8.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/8.92.88.in-addr.arpa.zone"; +}; + +// 88.92.9.0/24 +zone "9.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/9.92.88.in-addr.arpa.zone"; +}; + +// 88.92.10.0/24 +zone "10.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/10.92.88.in-addr.arpa.zone"; +}; + +// 88.92.11.0/24 +zone "11.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/11.92.88.in-addr.arpa.zone"; +}; + +// 88.92.12.0/24 +zone "12.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/12.92.88.in-addr.arpa.zone"; +}; + +// 88.92.13.0/24 +zone "13.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/13.92.88.in-addr.arpa.zone"; +}; + +// 88.92.14.0/24 +zone "14.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/14.92.88.in-addr.arpa.zone"; +}; + +// 88.92.15.0/24 +zone "15.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/15.92.88.in-addr.arpa.zone"; +}; + +// 88.92.16.0/24 +zone "16.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/16.92.88.in-addr.arpa.zone"; +}; + +// 88.92.17.0/24 +zone "17.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/17.92.88.in-addr.arpa.zone"; +}; + +// 88.92.18.0/24 +zone "18.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/18.92.88.in-addr.arpa.zone"; +}; + +// 88.92.19.0/24 +zone "19.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/19.92.88.in-addr.arpa.zone"; +}; + +// 88.92.20.0/24 +zone "20.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/20.92.88.in-addr.arpa.zone"; +}; + +// 88.92.21.0/24 +zone "21.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/21.92.88.in-addr.arpa.zone"; +}; + +// 88.92.22.0/24 +zone "22.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/22.92.88.in-addr.arpa.zone"; +}; + +// 88.92.23.0/24 +zone "23.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/23.92.88.in-addr.arpa.zone"; +}; + +// 88.92.24.0/24 +zone "24.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/24.92.88.in-addr.arpa.zone"; +}; + +// 88.92.25.0/24 +zone "25.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/25.92.88.in-addr.arpa.zone"; +}; + +// 88.92.26.0/24 +zone "26.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/26.92.88.in-addr.arpa.zone"; +}; + +// 88.92.27.0/24 +zone "27.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/27.92.88.in-addr.arpa.zone"; +}; + +// 88.92.28.0/24 +zone "28.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/28.92.88.in-addr.arpa.zone"; +}; + +// 88.92.29.0/24 +zone "29.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/29.92.88.in-addr.arpa.zone"; +}; + +// 88.92.30.0/24 +zone "30.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/30.92.88.in-addr.arpa.zone"; +}; + +// 88.92.31.0/24 +zone "31.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/31.92.88.in-addr.arpa.zone"; +}; + +// 88.92.32.0/24 +zone "32.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/32.92.88.in-addr.arpa.zone"; +}; + +// 88.92.33.0/24 +zone "33.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/33.92.88.in-addr.arpa.zone"; +}; + +// 88.92.34.0/24 +zone "34.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/34.92.88.in-addr.arpa.zone"; +}; + +// 88.92.35.0/24 +zone "35.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/35.92.88.in-addr.arpa.zone"; +}; + +// 88.92.36.0/24 +zone "36.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/36.92.88.in-addr.arpa.zone"; +}; + +// 88.92.37.0/24 +zone "37.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/37.92.88.in-addr.arpa.zone"; +}; + +// 88.92.38.0/24 +zone "38.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/38.92.88.in-addr.arpa.zone"; +}; + +// 88.92.39.0/24 +zone "39.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/39.92.88.in-addr.arpa.zone"; +}; + +// 88.92.40.0/24 +zone "40.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/40.92.88.in-addr.arpa.zone"; +}; + +// 88.92.41.0/24 +zone "41.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/41.92.88.in-addr.arpa.zone"; +}; + +// 88.92.42.0/24 +zone "42.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/42.92.88.in-addr.arpa.zone"; +}; + +// 88.92.43.0/24 +zone "43.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/43.92.88.in-addr.arpa.zone"; +}; + +// 88.92.44.0/24 +zone "44.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/44.92.88.in-addr.arpa.zone"; +}; + +// 88.92.45.0/24 +zone "45.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/45.92.88.in-addr.arpa.zone"; +}; + +// 88.92.46.0/24 +zone "46.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/46.92.88.in-addr.arpa.zone"; +}; + +// 88.92.47.0/24 +zone "47.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/47.92.88.in-addr.arpa.zone"; +}; + +// 88.92.48.0/24 +zone "48.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/48.92.88.in-addr.arpa.zone"; +}; + +// 88.92.49.0/24 +zone "49.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/49.92.88.in-addr.arpa.zone"; +}; + +// 88.92.50.0/24 +zone "50.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/50.92.88.in-addr.arpa.zone"; +}; + +// 88.92.51.0/24 +zone "51.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/51.92.88.in-addr.arpa.zone"; +}; + +// 88.92.52.0/24 +zone "52.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/52.92.88.in-addr.arpa.zone"; +}; + +// 88.92.53.0/24 +zone "53.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/53.92.88.in-addr.arpa.zone"; +}; + +// 88.92.54.0/24 +zone "54.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/54.92.88.in-addr.arpa.zone"; +}; + +// 88.92.55.0/24 +zone "55.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/55.92.88.in-addr.arpa.zone"; +}; + +// 88.92.56.0/24 +zone "56.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/56.92.88.in-addr.arpa.zone"; +}; + +// 88.92.57.0/24 +zone "57.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/57.92.88.in-addr.arpa.zone"; +}; + +// 88.92.58.0/24 +zone "58.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/58.92.88.in-addr.arpa.zone"; +}; + +// 88.92.59.0/24 +zone "59.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/59.92.88.in-addr.arpa.zone"; +}; + +// 88.92.60.0/24 +zone "60.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/60.92.88.in-addr.arpa.zone"; +}; + +// 88.92.61.0/24 +zone "61.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/61.92.88.in-addr.arpa.zone"; +}; + +// 88.92.62.0/24 +zone "62.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/62.92.88.in-addr.arpa.zone"; +}; + +// 88.92.63.0/24 +zone "63.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/63.92.88.in-addr.arpa.zone"; +}; + +// 88.92.64.0/24 +zone "64.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/64.92.88.in-addr.arpa.zone"; +}; + +// 88.92.65.0/24 +zone "65.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/65.92.88.in-addr.arpa.zone"; +}; + +// 88.92.66.0/24 +zone "66.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/66.92.88.in-addr.arpa.zone"; +}; + +// 88.92.67.0/24 +zone "67.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/67.92.88.in-addr.arpa.zone"; +}; + +// 88.92.68.0/24 +zone "68.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/68.92.88.in-addr.arpa.zone"; +}; + +// 88.92.69.0/24 +zone "69.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/69.92.88.in-addr.arpa.zone"; +}; + +// 88.92.70.0/24 +zone "70.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/70.92.88.in-addr.arpa.zone"; +}; + +// 88.92.71.0/24 +zone "71.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/71.92.88.in-addr.arpa.zone"; +}; + +// 88.92.72.0/24 +zone "72.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/72.92.88.in-addr.arpa.zone"; +}; + +// 88.92.73.0/24 +zone "73.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/73.92.88.in-addr.arpa.zone"; +}; + +// 88.92.74.0/24 +zone "74.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/74.92.88.in-addr.arpa.zone"; +}; + +// 88.92.75.0/24 +zone "75.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/75.92.88.in-addr.arpa.zone"; +}; + +// 88.92.76.0/24 +zone "76.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/76.92.88.in-addr.arpa.zone"; +}; + +// 88.92.77.0/24 +zone "77.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/77.92.88.in-addr.arpa.zone"; +}; + +// 88.92.78.0/24 +zone "78.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/78.92.88.in-addr.arpa.zone"; +}; + +// 88.92.79.0/24 +zone "79.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/79.92.88.in-addr.arpa.zone"; +}; + +// 88.92.80.0/24 +zone "80.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/80.92.88.in-addr.arpa.zone"; +}; + +// 88.92.81.0/24 +zone "81.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/81.92.88.in-addr.arpa.zone"; +}; + +// 88.92.82.0/24 +zone "82.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/82.92.88.in-addr.arpa.zone"; +}; + +// 88.92.83.0/24 +zone "83.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/83.92.88.in-addr.arpa.zone"; +}; + +// 88.92.84.0/24 +zone "84.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/84.92.88.in-addr.arpa.zone"; +}; + +// 88.92.85.0/24 +zone "85.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/85.92.88.in-addr.arpa.zone"; +}; + +// 88.92.86.0/24 +zone "86.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/86.92.88.in-addr.arpa.zone"; +}; + +// 88.92.87.0/24 +zone "87.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/87.92.88.in-addr.arpa.zone"; +}; + +// 88.92.88.0/24 +zone "88.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/88.92.88.in-addr.arpa.zone"; +}; + +// 88.92.89.0/24 +zone "89.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/89.92.88.in-addr.arpa.zone"; +}; + +// 88.92.90.0/24 +zone "90.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/90.92.88.in-addr.arpa.zone"; +}; + +// 88.92.91.0/24 +zone "91.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/91.92.88.in-addr.arpa.zone"; +}; + +// 88.92.92.0/24 +zone "92.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/92.92.88.in-addr.arpa.zone"; +}; + +// 88.92.93.0/24 +zone "93.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/93.92.88.in-addr.arpa.zone"; +}; + +// 88.92.94.0/24 +zone "94.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/94.92.88.in-addr.arpa.zone"; +}; + +// 88.92.95.0/24 +zone "95.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/95.92.88.in-addr.arpa.zone"; +}; + +// 88.92.96.0/24 +zone "96.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/96.92.88.in-addr.arpa.zone"; +}; + +// 88.92.97.0/24 +zone "97.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/97.92.88.in-addr.arpa.zone"; +}; + +// 88.92.98.0/24 +zone "98.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/98.92.88.in-addr.arpa.zone"; +}; + +// 88.92.99.0/24 +zone "99.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/99.92.88.in-addr.arpa.zone"; +}; + +// 88.92.100.0/24 +zone "100.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/100.92.88.in-addr.arpa.zone"; +}; + +// 88.92.101.0/24 +zone "101.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/101.92.88.in-addr.arpa.zone"; +}; + +// 88.92.102.0/24 +zone "102.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/102.92.88.in-addr.arpa.zone"; +}; + +// 88.92.103.0/24 +zone "103.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/103.92.88.in-addr.arpa.zone"; +}; + +// 88.92.104.0/24 +zone "104.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/104.92.88.in-addr.arpa.zone"; +}; + +// 88.92.105.0/24 +zone "105.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/105.92.88.in-addr.arpa.zone"; +}; + +// 88.92.106.0/24 +zone "106.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/106.92.88.in-addr.arpa.zone"; +}; + +// 88.92.107.0/24 +zone "107.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/107.92.88.in-addr.arpa.zone"; +}; + +// 88.92.108.0/24 +zone "108.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/108.92.88.in-addr.arpa.zone"; +}; + +// 88.92.109.0/24 +zone "109.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/109.92.88.in-addr.arpa.zone"; +}; + +// 88.92.110.0/24 +zone "110.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/110.92.88.in-addr.arpa.zone"; +}; + +// 88.92.111.0/24 +zone "111.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/111.92.88.in-addr.arpa.zone"; +}; + +// 88.92.112.0/24 +zone "112.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/112.92.88.in-addr.arpa.zone"; +}; + +// 88.92.113.0/24 +zone "113.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/113.92.88.in-addr.arpa.zone"; +}; + +// 88.92.114.0/24 +zone "114.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/114.92.88.in-addr.arpa.zone"; +}; + +// 88.92.115.0/24 +zone "115.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/115.92.88.in-addr.arpa.zone"; +}; + +// 88.92.116.0/24 +zone "116.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/116.92.88.in-addr.arpa.zone"; +}; + +// 88.92.117.0/24 +zone "117.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/117.92.88.in-addr.arpa.zone"; +}; + +// 88.92.118.0/24 +zone "118.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/118.92.88.in-addr.arpa.zone"; +}; + +// 88.92.119.0/24 +zone "119.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/119.92.88.in-addr.arpa.zone"; +}; + +// 88.92.120.0/24 +zone "120.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/120.92.88.in-addr.arpa.zone"; +}; + +// 88.92.121.0/24 +zone "121.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/121.92.88.in-addr.arpa.zone"; +}; + +// 88.92.122.0/24 +zone "122.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/122.92.88.in-addr.arpa.zone"; +}; + +// 88.92.123.0/24 +zone "123.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/123.92.88.in-addr.arpa.zone"; +}; + +// 88.92.124.0/24 +zone "124.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/124.92.88.in-addr.arpa.zone"; +}; + +// 88.92.125.0/24 +zone "125.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/125.92.88.in-addr.arpa.zone"; +}; + +// 88.92.126.0/24 +zone "126.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/126.92.88.in-addr.arpa.zone"; +}; + +// 88.92.127.0/24 +zone "127.92.88.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/127.92.88.in-addr.arpa.zone"; +}; + +// 185.110.148.0/24 +zone "148.110.185.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/148.110.185.in-addr.arpa.zone"; +}; + +// 185.110.149.0/24 +zone "149.110.185.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/149.110.185.in-addr.arpa.zone"; +}; + +// 185.110.150.0/24 +zone "150.110.185.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/150.110.185.in-addr.arpa.zone"; +}; + +// 185.110.151.0/24 +zone "151.110.185.in-addr.arpa" { +	type master; +	allow-update { key DHCP_UPDATER; }; +	notify yes; +	allow-transfer { ns-xfr; ext-xfr; }; +	file "reverse/151.110.185.in-addr.arpa.zone"; +}; + diff --git a/examples/tg16/dns/master/named.rndc-stats b/examples/tg16/dns/master/named.rndc-stats new file mode 100644 index 0000000..4267ab1 --- /dev/null +++ b/examples/tg16/dns/master/named.rndc-stats @@ -0,0 +1,144 @@ ++++ Statistics Dump +++ (1459075501) +++ Incoming Requests ++ +            77937908 QUERY +             1113362 UPDATE +++ Incoming Queries ++ +            54702588 A +               79660 NS +                 275 CNAME +              147201 SOA +             3342226 PTR +                 263 MX +              121555 TXT +            18258507 AAAA +             1111552 SRV +                 162 NAPTR +                 802 A6 +                 458 DS +                 448 DNSKEY +                   1 SPF +               57800 IXFR +               39269 ANY +               75141 Others +++ Outgoing Queries ++ +[View: default] +             8006697 A +               38680 NS +                 265 CNAME +                4138 SOA +              833291 PTR +                 169 MX +               47342 TXT +             2176948 AAAA +               40378 SRV +                  42 NAPTR +                   2 DS +                   1 DNSKEY +                   1 SPF +                1863 ANY +                2010 Others +[View: _bind] +++ Name Server Statistics ++ +            66754784 IPv4 requests received +            12296489 IPv6 requests received +             1837622 requests with EDNS(0) received +             1112010 requests with TSIG received +               76579 TCP requests received +                 426 auth queries rejected +             3209095 recursive queries rejected +               15797 update requests rejected +            78686956 responses sent +               24167 truncated responses sent +             1837579 responses with EDNS(0) sent +             1112010 responses with TSIG sent +            65327152 queries resulted in successful answer +            12741294 queries resulted in authoritative answer +            61472984 queries resulted in non authoritative answer +                 551 queries resulted in referral answer +             4200038 queries resulted in nxrrset +              149792 queries resulted in SERVFAIL +             4686537 queries resulted in NXDOMAIN +             8325033 queries caused recursion +              302525 duplicate queries received +                3992 queries dropped +             3209521 other query failures +               57800 requested transfers completed +              666138 updates completed +              431427 updates failed +              393042 updates rejected due to prerequisite failure +                   2 responses dropped for rate limits +++ Zone Maintenance Statistics ++ +               64165 IPv4 notifies sent +               64165 IPv6 notifies sent +++ Resolver Statistics ++ +[Common] +                  27 mismatch responses received +[View: default] +             9768682 IPv4 queries sent +             1383145 IPv6 queries sent +             9541352 IPv4 responses received +             1353472 IPv6 responses received +              316937 NXDOMAIN received +               42389 SERVFAIL received +                2404 FORMERR received +              262513 other errors received +                4612 EDNS(0) query failures +               11063 truncated responses received +               10648 lame delegations received +              685118 query retries +              261444 query timeouts +              312925 IPv4 NS address fetches +              301586 IPv6 NS address fetches +                6118 IPv4 NS address fetch failed +              233646 IPv6 NS address fetch failed +             2450534 queries with RTT < 10ms +             4729567 queries with RTT 10-100ms +             3696215 queries with RTT 100-500ms +                6941 queries with RTT 500-800ms +                  94 queries with RTT 800-1600ms +                  27 queries with RTT > 1600ms +[View: _bind] +++ Cache DB RRsets ++ +[View: default] +               50345 A +              146641 NS +               12048 CNAME +                   3 SOA +               81483 PTR +                   3 MX +                 328 TXT +                6287 AAAA +                  14 SRV +                   2 NAPTR +                1299 DS +               25955 RRSIG +               22671 NSEC +                   1 DNSKEY +                  14 !A +                   1 !MX +                 533 !AAAA +               37220 NXDOMAIN +[View: _bind (Cache: _bind)] +++ Socket I/O Statistics ++ +             9823665 UDP/IPv4 sockets opened +             1417260 UDP/IPv6 sockets opened +                5931 TCP/IPv4 sockets opened +                5137 TCP/IPv6 sockets opened +             9823649 UDP/IPv4 sockets closed +             1417252 UDP/IPv6 sockets closed +               23798 TCP/IPv4 sockets closed +               64961 TCP/IPv6 sockets closed +                2068 UDP/IPv4 socket bind failures +                  90 UDP/IPv6 socket bind failures +                  20 UDP/IPv6 socket connect failures +             9762754 UDP/IPv4 connections established +             1378010 UDP/IPv6 connections established +                5549 TCP/IPv4 connections established +                5084 TCP/IPv6 connections established +               17871 TCP/IPv4 connections accepted +               59826 TCP/IPv6 connections accepted +               10626 UDP/IPv4 recv errors +                1225 UDP/IPv6 recv errors +                  14 TCP/IPv4 recv errors +++ Per Zone Query Statistics ++ +--- Statistics Dump --- (1459075501)
\ No newline at end of file diff --git a/examples/tg16/dns/master/tg16.gathering.org.zone b/examples/tg16/dns/master/tg16.gathering.org.zone new file mode 100644 index 0000000..98553f0 --- /dev/null +++ b/examples/tg16/dns/master/tg16.gathering.org.zone @@ -0,0 +1,170 @@ +$TTL 3600 +@	IN	SOA	r2-d2.tg16.gathering.org.	abuse.gathering.org. ( +			2016032501; serial +			3600 ; refresh  +			1800 ; retry +			608400 ; expire +			3600 ) ; minimum and default TTL + +		IN	NS	r2-d2.tg16.gathering.org. +		IN	NS	c-3po.tg16.gathering.org. + +r2-d2		IN	A	185.110.149.2 +r2-d2		IN	AAAA	2a06:5841:149a::2 +c-3po		IN	A	185.110.148.2 +c-3po		IN	AAAA	2a06:5841:1337::2 +anakin		IN	A 	185.110.148.3 +anakin		IN	AAAA	2a06:5841:1337::3 +padme		IN	A	185.110.148.4 +padme           IN      AAAA	2a06:5841:1337::4 +luke		IN	A	185.110.148.5 +luke		IN	AAAA 	2a06:5841:1337::5 +leia		IN	A	185.110.148.6 +leia            IN	AAAA	2a06:5841:1337::6 +han		IN	A	185.110.148.7 +han             IN      AAAA	2a06:5841:1337::7 +rey		IN	A	185.110.148.8 +rey             IN      AAAA	2a06:5841:1337::8 +finn		IN	A	185.110.148.9 +finn		IN	AAAA	2a06:5841:1337::9 +bb-8		IN	A	185.110.148.10 +bb-8            IN      AAAA	2a06:5841:1337::10 +yoda		IN	A	185.110.148.11 +yoda            IN      AAAA	2a06:5841:1337::11 +obi-wan		IN	A	185.110.148.12 +obi-wan         IN      AAAA	2a06:5841:1337::12 +chewbacca	IN	A	185.110.148.13 +chewbacca       IN      AAAA	2a06:5841:1337::13 +palpatine	IN	A	185.110.149.66 +palpatine       IN      AAAA	2a06:5841:149b::66 +grievous	IN	A	185.110.149.67 +grievous        IN      AAAA	2a06:5841:149b::67 +kylo		IN	A	185.110.149.68 +kylo            IN      AAAA	2a06:5841:149b::68 +dooku		IN	A	185.110.149.69 +dooku           IN      AAAA	2a06:5841:149b::69 +cubemap 	IN	A	185.110.148.8	 +cubemap		IN	AAAA    2a06:5841:1337::8 +cubemap		IN	A	185.110.148.9 +cubemap		IN	AAAA	2a06:5841:1337::9 +fortiwlc-tg01	IN	A	185.110.148.14 +fortiwlc-tg01   IN      AAAA	2a06:5841:1337::14 +fortiwlc-tg02	IN	A	185.110.148.15 +fortiwlc-tg02   IN      AAAA	2a06:5841:1337::15 +fortimgmt-tg01	IN	A	185.110.148.16 +fortimgmt-tg01  IN      AAAA	2a06:5841:1337::16 +spock		IN	A	185.110.148.17 +spock           IN      AAAA	2a06:5841:1337::17 +funnyfart	IN	A	185.110.148.18 +funnyfart       IN      AAAA	2a06:5841:1337::18 +kvm-rack2	IN	A	185.110.148.19 +kvm-rack2       IN      AAAA	2a06:5841:1337::19 +kvm-rack3	IN	A	185.110.148.20 +kvm-rack3       IN      AAAA	2a06:5841:1337::20 +mitm		IN	A	185.110.148.21 +mitm            IN      AAAA	2a06:5841:1337::21 +kirk		IN	A	185.110.148.22 +kirk            IN      AAAA	2a06:5841:1337::22 +cage		IN	A	185.110.148.23 +cage            IN      AAAA	2a06:5841:1337::23 +luring		IN	A	185.110.148.24 +luring          IN      AAAA	2a06:5841:1337::24 +lyn		IN	A	185.110.148.25 +lyn		IN	AAAA	2a06:5841:1337::25 +rakker		IN	A	185.110.148.26 +rakker		IN	AAAA	2a06:5841:1337::26 +wc		IN	A	185.110.148.27 +wc              IN      AAAA	2a06:5841:1337::27 +survey		IN	A	185.110.149.120 +;survey		IN	AAAA	2a06:5841:149b::120 + +; Generated by make-all-config.sh on the bootstrapping/nms server. +; Will not be overwritten unless it is missing ;) + + +; CNAMEs +ns1		IN	CNAME	r2-d2.tg16.gathering.org. +ns2		IN	CNAME	c-3po.tg16.gathering.org. +smtp		IN	CNAME	c-3po.tg16.gathering.org. +pxe		IN	CNAME	c-3po.tg16.gathering.org. +stream		IN	CNAME	yoda.tg16.gathering.org. +streams		IN	CNAME	stream.tg16.gathering.org. +webcam		IN	CNAME	yoda.tg16.gathering.org. +webcams		IN	CNAME	webcam.tg16.gathering.org. +nms		IN	CNAME	yoda.tg16.gathering.org. +nms-public	IN	CNAME	yoda.tg16.gathering.org. +nms-api		IN	CNAME	yoda.tg16.gathering.org. +nms4		IN	A	185.110.148.11 +nms6		IN	AAAA	2a06:5841:1337::11 +stats		IN	CNAME	yoda.tg16.gathering.org. +munin		IN	CNAME	yoda.tg16.gathering.org. + +; Event:Game +; zize @ slack +minecraft	IN	CNAME	dooku.tg16.gathering.org. +mc		IN	CNAME	minecraft.tg16.gathering.org. + + + + + + + + + + + + + + + + + + + +; loopbacks +telegw                  IN	A	185.110.148.64 +telegw                  IN	AAAA	2a06:5841:148b::64 +nocgw                   IN	A	185.110.148.65 +nocgw                   IN	AAAA	2a06:5841:148b::65 +coregw                  IN	A	185.110.148.66 +coregw                  IN	AAAA	2a06:5841:148b::66 +standgw                 IN	A	185.110.148.67 +standgw                 IN	AAAA	2a06:5841:148b::67 +southgw                 IN	A	185.110.148.70 +southgw                 IN	AAAA	2a06:5841:148b::70 +swinggw                 IN	A	185.110.148.71 +swinggw                 IN	AAAA	2a06:5841:148b::71 +loggw                   IN	A	185.110.148.72 +loggw                   IN	AAAA	2a06:5841:148b::72 +northgw                 IN	A	185.110.148.73 +northgw                 IN	AAAA	2a06:5841:148b::73 +creativiagw             IN	A	185.110.148.74 +creativiagw             IN	AAAA	2a06:5841:148b::74 +stagegw                 IN	A	185.110.148.75 +stagegw                 IN	AAAA	2a06:5841:148b::75 +crewgw                  IN	A	185.110.148.76 +crewgw                  IN	AAAA	2a06:5841:148b::76 +audgw                   IN	A	185.110.148.77 +audgw                   IN	AAAA	2a06:5841:148b::77 +gamestagegw             IN	A	185.110.148.78 +gamestagegw             IN	AAAA	2a06:5841:148b::78 +distro0                 IN	A	185.110.148.100 +distro0                 IN	AAAA	2a06:5841:148b::100 +distro1                 IN	A	185.110.148.101 +distro1                 IN	AAAA	2a06:5841:148b::101 +distro2                 IN	A	185.110.148.102 +distro2                 IN	AAAA	2a06:5841:148b::102 +distro3                 IN	A	185.110.148.103 +distro3                 IN	AAAA	2a06:5841:148b::103 +distro4                 IN	A	185.110.148.104 +distro4                 IN	AAAA	2a06:5841:148b::104 +distro5                 IN	A	185.110.148.105 +distro5                 IN	AAAA	2a06:5841:148b::105 +distro6                 IN	A	185.110.148.106 +distro6                 IN	AAAA	2a06:5841:148b::106 +distro7                 IN	A	185.110.148.107 +distro7                 IN	AAAA	2a06:5841:148b::107 +hack			IN	A	88.92.95.14 +eple			IN	A	185.110.148.28 +eple			IN	AAAA	2a06:5841:1337::28 diff --git a/examples/tg16/dns/slave/conf-slave/ap-creativia.conf b/examples/tg16/dns/slave/conf-slave/ap-creativia.conf new file mode 100644 index 0000000..3251663 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/ap-creativia.conf @@ -0,0 +1,7 @@ +zone "ap-creativia.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/ap-creativia.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/ap-distro0.conf b/examples/tg16/dns/slave/conf-slave/ap-distro0.conf new file mode 100644 index 0000000..8b439ab --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/ap-distro0.conf @@ -0,0 +1,7 @@ +zone "ap-distro0.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/ap-distro0.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/ap-distro1.conf b/examples/tg16/dns/slave/conf-slave/ap-distro1.conf new file mode 100644 index 0000000..b55d8df --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/ap-distro1.conf @@ -0,0 +1,7 @@ +zone "ap-distro1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/ap-distro1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/ap-distro2.conf b/examples/tg16/dns/slave/conf-slave/ap-distro2.conf new file mode 100644 index 0000000..f664917 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/ap-distro2.conf @@ -0,0 +1,7 @@ +zone "ap-distro2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/ap-distro2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/ap-distro3.conf b/examples/tg16/dns/slave/conf-slave/ap-distro3.conf new file mode 100644 index 0000000..55c5caa --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/ap-distro3.conf @@ -0,0 +1,7 @@ +zone "ap-distro3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/ap-distro3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/ap-distro4.conf b/examples/tg16/dns/slave/conf-slave/ap-distro4.conf new file mode 100644 index 0000000..8b54d06 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/ap-distro4.conf @@ -0,0 +1,7 @@ +zone "ap-distro4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/ap-distro4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/ap-distro5.conf b/examples/tg16/dns/slave/conf-slave/ap-distro5.conf new file mode 100644 index 0000000..3a2adf9 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/ap-distro5.conf @@ -0,0 +1,7 @@ +zone "ap-distro5.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/ap-distro5.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/ap-distro6.conf b/examples/tg16/dns/slave/conf-slave/ap-distro6.conf new file mode 100644 index 0000000..7fb0a1f --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/ap-distro6.conf @@ -0,0 +1,7 @@ +zone "ap-distro6.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/ap-distro6.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/ap-distro7.conf b/examples/tg16/dns/slave/conf-slave/ap-distro7.conf new file mode 100644 index 0000000..3eaa1fb --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/ap-distro7.conf @@ -0,0 +1,7 @@ +zone "ap-distro7.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/ap-distro7.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/ap-stand.conf b/examples/tg16/dns/slave/conf-slave/ap-stand.conf new file mode 100644 index 0000000..1d29354 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/ap-stand.conf @@ -0,0 +1,7 @@ +zone "ap-stand.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/ap-stand.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/auditorium.conf b/examples/tg16/dns/slave/conf-slave/auditorium.conf new file mode 100644 index 0000000..b51347b --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/auditorium.conf @@ -0,0 +1,7 @@ +zone "auditorium.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/auditorium.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/creativia-village.conf b/examples/tg16/dns/slave/conf-slave/creativia-village.conf new file mode 100644 index 0000000..06c7a3c --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/creativia-village.conf @@ -0,0 +1,7 @@ +zone "creativia-village.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/creativia-village.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/creativia.conf b/examples/tg16/dns/slave/conf-slave/creativia.conf new file mode 100644 index 0000000..5253217 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/creativia.conf @@ -0,0 +1,7 @@ +zone "creativia.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/creativia.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/creativia1.conf b/examples/tg16/dns/slave/conf-slave/creativia1.conf new file mode 100644 index 0000000..defc41a --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/creativia1.conf @@ -0,0 +1,7 @@ +zone "creativia1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/creativia1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/creativia2.conf b/examples/tg16/dns/slave/conf-slave/creativia2.conf new file mode 100644 index 0000000..f532276 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/creativia2.conf @@ -0,0 +1,7 @@ +zone "creativia2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/creativia2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/creativia3.conf b/examples/tg16/dns/slave/conf-slave/creativia3.conf new file mode 100644 index 0000000..4a9ba42 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/creativia3.conf @@ -0,0 +1,7 @@ +zone "creativia3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/creativia3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/creativia4.conf b/examples/tg16/dns/slave/conf-slave/creativia4.conf new file mode 100644 index 0000000..562bd88 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/creativia4.conf @@ -0,0 +1,7 @@ +zone "creativia4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/creativia4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/creativia5.conf b/examples/tg16/dns/slave/conf-slave/creativia5.conf new file mode 100644 index 0000000..3babcb9 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/creativia5.conf @@ -0,0 +1,7 @@ +zone "creativia5.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/creativia5.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/creativia6.conf b/examples/tg16/dns/slave/conf-slave/creativia6.conf new file mode 100644 index 0000000..32452ec --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/creativia6.conf @@ -0,0 +1,7 @@ +zone "creativia6.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/creativia6.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/creativia7.conf b/examples/tg16/dns/slave/conf-slave/creativia7.conf new file mode 100644 index 0000000..4e3bec1 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/creativia7.conf @@ -0,0 +1,7 @@ +zone "creativia7.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/creativia7.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/creativiasw1.conf b/examples/tg16/dns/slave/conf-slave/creativiasw1.conf new file mode 100644 index 0000000..739d875 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/creativiasw1.conf @@ -0,0 +1,7 @@ +zone "creativiasw1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/creativiasw1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/crew.conf b/examples/tg16/dns/slave/conf-slave/crew.conf new file mode 100644 index 0000000..618af5b --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/crew.conf @@ -0,0 +1,7 @@ +zone "crew.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/crew.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/deltaker-srv.conf b/examples/tg16/dns/slave/conf-slave/deltaker-srv.conf new file mode 100644 index 0000000..82bc33e --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/deltaker-srv.conf @@ -0,0 +1,7 @@ +zone "deltaker-srv.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/deltaker-srv.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e1-3.conf b/examples/tg16/dns/slave/conf-slave/e1-3.conf new file mode 100644 index 0000000..702b70d --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e1-3.conf @@ -0,0 +1,7 @@ +zone "e1-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e1-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e1-4.conf b/examples/tg16/dns/slave/conf-slave/e1-4.conf new file mode 100644 index 0000000..f121067 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e1-4.conf @@ -0,0 +1,7 @@ +zone "e1-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e1-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e11-1.conf b/examples/tg16/dns/slave/conf-slave/e11-1.conf new file mode 100644 index 0000000..9b00896 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e11-1.conf @@ -0,0 +1,7 @@ +zone "e11-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e11-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e11-2.conf b/examples/tg16/dns/slave/conf-slave/e11-2.conf new file mode 100644 index 0000000..cb96dad --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e11-2.conf @@ -0,0 +1,7 @@ +zone "e11-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e11-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e11-3.conf b/examples/tg16/dns/slave/conf-slave/e11-3.conf new file mode 100644 index 0000000..ab6c6c2 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e11-3.conf @@ -0,0 +1,7 @@ +zone "e11-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e11-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e11-4.conf b/examples/tg16/dns/slave/conf-slave/e11-4.conf new file mode 100644 index 0000000..2af27b2 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e11-4.conf @@ -0,0 +1,7 @@ +zone "e11-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e11-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e13-1.conf b/examples/tg16/dns/slave/conf-slave/e13-1.conf new file mode 100644 index 0000000..da1323d --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e13-1.conf @@ -0,0 +1,7 @@ +zone "e13-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e13-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e13-2.conf b/examples/tg16/dns/slave/conf-slave/e13-2.conf new file mode 100644 index 0000000..048108c --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e13-2.conf @@ -0,0 +1,7 @@ +zone "e13-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e13-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e13-3.conf b/examples/tg16/dns/slave/conf-slave/e13-3.conf new file mode 100644 index 0000000..d64557d --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e13-3.conf @@ -0,0 +1,7 @@ +zone "e13-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e13-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e13-4.conf b/examples/tg16/dns/slave/conf-slave/e13-4.conf new file mode 100644 index 0000000..02e19e3 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e13-4.conf @@ -0,0 +1,7 @@ +zone "e13-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e13-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e15-1.conf b/examples/tg16/dns/slave/conf-slave/e15-1.conf new file mode 100644 index 0000000..b6f1217 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e15-1.conf @@ -0,0 +1,7 @@ +zone "e15-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e15-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e15-2.conf b/examples/tg16/dns/slave/conf-slave/e15-2.conf new file mode 100644 index 0000000..484fe97 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e15-2.conf @@ -0,0 +1,7 @@ +zone "e15-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e15-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e15-3.conf b/examples/tg16/dns/slave/conf-slave/e15-3.conf new file mode 100644 index 0000000..86a4410 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e15-3.conf @@ -0,0 +1,7 @@ +zone "e15-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e15-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e15-4.conf b/examples/tg16/dns/slave/conf-slave/e15-4.conf new file mode 100644 index 0000000..7040cf1 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e15-4.conf @@ -0,0 +1,7 @@ +zone "e15-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e15-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e17-1.conf b/examples/tg16/dns/slave/conf-slave/e17-1.conf new file mode 100644 index 0000000..f6751b3 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e17-1.conf @@ -0,0 +1,7 @@ +zone "e17-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e17-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e17-2.conf b/examples/tg16/dns/slave/conf-slave/e17-2.conf new file mode 100644 index 0000000..7e74ef9 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e17-2.conf @@ -0,0 +1,7 @@ +zone "e17-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e17-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e17-3.conf b/examples/tg16/dns/slave/conf-slave/e17-3.conf new file mode 100644 index 0000000..a9752f2 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e17-3.conf @@ -0,0 +1,7 @@ +zone "e17-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e17-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e17-4.conf b/examples/tg16/dns/slave/conf-slave/e17-4.conf new file mode 100644 index 0000000..feeb5d2 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e17-4.conf @@ -0,0 +1,7 @@ +zone "e17-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e17-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e19-1.conf b/examples/tg16/dns/slave/conf-slave/e19-1.conf new file mode 100644 index 0000000..080881e --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e19-1.conf @@ -0,0 +1,7 @@ +zone "e19-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e19-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e19-2.conf b/examples/tg16/dns/slave/conf-slave/e19-2.conf new file mode 100644 index 0000000..25c812b --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e19-2.conf @@ -0,0 +1,7 @@ +zone "e19-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e19-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e19-3.conf b/examples/tg16/dns/slave/conf-slave/e19-3.conf new file mode 100644 index 0000000..8219197 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e19-3.conf @@ -0,0 +1,7 @@ +zone "e19-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e19-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e19-4.conf b/examples/tg16/dns/slave/conf-slave/e19-4.conf new file mode 100644 index 0000000..b396a14 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e19-4.conf @@ -0,0 +1,7 @@ +zone "e19-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e19-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e21-1.conf b/examples/tg16/dns/slave/conf-slave/e21-1.conf new file mode 100644 index 0000000..196209f --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e21-1.conf @@ -0,0 +1,7 @@ +zone "e21-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e21-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e21-2.conf b/examples/tg16/dns/slave/conf-slave/e21-2.conf new file mode 100644 index 0000000..cf99859 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e21-2.conf @@ -0,0 +1,7 @@ +zone "e21-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e21-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e21-3.conf b/examples/tg16/dns/slave/conf-slave/e21-3.conf new file mode 100644 index 0000000..30bfb8f --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e21-3.conf @@ -0,0 +1,7 @@ +zone "e21-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e21-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e21-4.conf b/examples/tg16/dns/slave/conf-slave/e21-4.conf new file mode 100644 index 0000000..67f323e --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e21-4.conf @@ -0,0 +1,7 @@ +zone "e21-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e21-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e23-1.conf b/examples/tg16/dns/slave/conf-slave/e23-1.conf new file mode 100644 index 0000000..8349389 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e23-1.conf @@ -0,0 +1,7 @@ +zone "e23-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e23-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e23-2.conf b/examples/tg16/dns/slave/conf-slave/e23-2.conf new file mode 100644 index 0000000..89ce3f8 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e23-2.conf @@ -0,0 +1,7 @@ +zone "e23-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e23-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e23-3.conf b/examples/tg16/dns/slave/conf-slave/e23-3.conf new file mode 100644 index 0000000..e7bb3d9 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e23-3.conf @@ -0,0 +1,7 @@ +zone "e23-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e23-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e23-4.conf b/examples/tg16/dns/slave/conf-slave/e23-4.conf new file mode 100644 index 0000000..a8b6313 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e23-4.conf @@ -0,0 +1,7 @@ +zone "e23-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e23-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e25-1.conf b/examples/tg16/dns/slave/conf-slave/e25-1.conf new file mode 100644 index 0000000..6cd58a4 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e25-1.conf @@ -0,0 +1,7 @@ +zone "e25-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e25-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e25-2.conf b/examples/tg16/dns/slave/conf-slave/e25-2.conf new file mode 100644 index 0000000..1c53529 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e25-2.conf @@ -0,0 +1,7 @@ +zone "e25-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e25-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e27-1.conf b/examples/tg16/dns/slave/conf-slave/e27-1.conf new file mode 100644 index 0000000..06e7f6e --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e27-1.conf @@ -0,0 +1,7 @@ +zone "e27-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e27-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e27-2.conf b/examples/tg16/dns/slave/conf-slave/e27-2.conf new file mode 100644 index 0000000..de98ca6 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e27-2.conf @@ -0,0 +1,7 @@ +zone "e27-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e27-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e29-1.conf b/examples/tg16/dns/slave/conf-slave/e29-1.conf new file mode 100644 index 0000000..dca329c --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e29-1.conf @@ -0,0 +1,7 @@ +zone "e29-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e29-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e29-2.conf b/examples/tg16/dns/slave/conf-slave/e29-2.conf new file mode 100644 index 0000000..2f77a67 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e29-2.conf @@ -0,0 +1,7 @@ +zone "e29-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e29-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e3-3.conf b/examples/tg16/dns/slave/conf-slave/e3-3.conf new file mode 100644 index 0000000..edbc3a5 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e3-3.conf @@ -0,0 +1,7 @@ +zone "e3-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e3-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e3-4.conf b/examples/tg16/dns/slave/conf-slave/e3-4.conf new file mode 100644 index 0000000..ecba404 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e3-4.conf @@ -0,0 +1,7 @@ +zone "e3-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e3-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e31-1.conf b/examples/tg16/dns/slave/conf-slave/e31-1.conf new file mode 100644 index 0000000..fb97af7 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e31-1.conf @@ -0,0 +1,7 @@ +zone "e31-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e31-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e31-2.conf b/examples/tg16/dns/slave/conf-slave/e31-2.conf new file mode 100644 index 0000000..3e745b4 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e31-2.conf @@ -0,0 +1,7 @@ +zone "e31-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e31-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e33-1.conf b/examples/tg16/dns/slave/conf-slave/e33-1.conf new file mode 100644 index 0000000..9085d49 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e33-1.conf @@ -0,0 +1,7 @@ +zone "e33-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e33-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e33-2.conf b/examples/tg16/dns/slave/conf-slave/e33-2.conf new file mode 100644 index 0000000..9e74c5b --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e33-2.conf @@ -0,0 +1,7 @@ +zone "e33-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e33-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e35-1.conf b/examples/tg16/dns/slave/conf-slave/e35-1.conf new file mode 100644 index 0000000..542e199 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e35-1.conf @@ -0,0 +1,7 @@ +zone "e35-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e35-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e35-2.conf b/examples/tg16/dns/slave/conf-slave/e35-2.conf new file mode 100644 index 0000000..68d890c --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e35-2.conf @@ -0,0 +1,7 @@ +zone "e35-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e35-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e37-1.conf b/examples/tg16/dns/slave/conf-slave/e37-1.conf new file mode 100644 index 0000000..8371c17 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e37-1.conf @@ -0,0 +1,7 @@ +zone "e37-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e37-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e37-2.conf b/examples/tg16/dns/slave/conf-slave/e37-2.conf new file mode 100644 index 0000000..c9ea2eb --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e37-2.conf @@ -0,0 +1,7 @@ +zone "e37-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e37-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e39-1.conf b/examples/tg16/dns/slave/conf-slave/e39-1.conf new file mode 100644 index 0000000..ef978f7 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e39-1.conf @@ -0,0 +1,7 @@ +zone "e39-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e39-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e39-2.conf b/examples/tg16/dns/slave/conf-slave/e39-2.conf new file mode 100644 index 0000000..6598526 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e39-2.conf @@ -0,0 +1,7 @@ +zone "e39-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e39-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e41-1.conf b/examples/tg16/dns/slave/conf-slave/e41-1.conf new file mode 100644 index 0000000..08108e2 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e41-1.conf @@ -0,0 +1,7 @@ +zone "e41-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e41-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e41-2.conf b/examples/tg16/dns/slave/conf-slave/e41-2.conf new file mode 100644 index 0000000..13a2935 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e41-2.conf @@ -0,0 +1,7 @@ +zone "e41-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e41-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e41-3.conf b/examples/tg16/dns/slave/conf-slave/e41-3.conf new file mode 100644 index 0000000..c53aac3 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e41-3.conf @@ -0,0 +1,7 @@ +zone "e41-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e41-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e41-4.conf b/examples/tg16/dns/slave/conf-slave/e41-4.conf new file mode 100644 index 0000000..21fe492 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e41-4.conf @@ -0,0 +1,7 @@ +zone "e41-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e41-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e43-1.conf b/examples/tg16/dns/slave/conf-slave/e43-1.conf new file mode 100644 index 0000000..9144093 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e43-1.conf @@ -0,0 +1,7 @@ +zone "e43-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e43-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e43-2.conf b/examples/tg16/dns/slave/conf-slave/e43-2.conf new file mode 100644 index 0000000..a008d9e --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e43-2.conf @@ -0,0 +1,7 @@ +zone "e43-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e43-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e43-3.conf b/examples/tg16/dns/slave/conf-slave/e43-3.conf new file mode 100644 index 0000000..0d67ecc --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e43-3.conf @@ -0,0 +1,7 @@ +zone "e43-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e43-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e43-4.conf b/examples/tg16/dns/slave/conf-slave/e43-4.conf new file mode 100644 index 0000000..872d5de --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e43-4.conf @@ -0,0 +1,7 @@ +zone "e43-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e43-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e45-1.conf b/examples/tg16/dns/slave/conf-slave/e45-1.conf new file mode 100644 index 0000000..626b7af --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e45-1.conf @@ -0,0 +1,7 @@ +zone "e45-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e45-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e45-2.conf b/examples/tg16/dns/slave/conf-slave/e45-2.conf new file mode 100644 index 0000000..d909d88 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e45-2.conf @@ -0,0 +1,7 @@ +zone "e45-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e45-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e45-3.conf b/examples/tg16/dns/slave/conf-slave/e45-3.conf new file mode 100644 index 0000000..e803514 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e45-3.conf @@ -0,0 +1,7 @@ +zone "e45-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e45-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e45-4.conf b/examples/tg16/dns/slave/conf-slave/e45-4.conf new file mode 100644 index 0000000..c1e0d77 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e45-4.conf @@ -0,0 +1,7 @@ +zone "e45-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e45-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e47-1.conf b/examples/tg16/dns/slave/conf-slave/e47-1.conf new file mode 100644 index 0000000..73b175a --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e47-1.conf @@ -0,0 +1,7 @@ +zone "e47-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e47-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e47-2.conf b/examples/tg16/dns/slave/conf-slave/e47-2.conf new file mode 100644 index 0000000..fd72665 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e47-2.conf @@ -0,0 +1,7 @@ +zone "e47-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e47-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e47-3.conf b/examples/tg16/dns/slave/conf-slave/e47-3.conf new file mode 100644 index 0000000..040ead1 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e47-3.conf @@ -0,0 +1,7 @@ +zone "e47-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e47-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e47-4.conf b/examples/tg16/dns/slave/conf-slave/e47-4.conf new file mode 100644 index 0000000..cafa2c6 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e47-4.conf @@ -0,0 +1,7 @@ +zone "e47-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e47-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e49-1.conf b/examples/tg16/dns/slave/conf-slave/e49-1.conf new file mode 100644 index 0000000..20a6967 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e49-1.conf @@ -0,0 +1,7 @@ +zone "e49-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e49-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e49-2.conf b/examples/tg16/dns/slave/conf-slave/e49-2.conf new file mode 100644 index 0000000..70ea999 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e49-2.conf @@ -0,0 +1,7 @@ +zone "e49-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e49-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e49-3.conf b/examples/tg16/dns/slave/conf-slave/e49-3.conf new file mode 100644 index 0000000..360453c --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e49-3.conf @@ -0,0 +1,7 @@ +zone "e49-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e49-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e49-4.conf b/examples/tg16/dns/slave/conf-slave/e49-4.conf new file mode 100644 index 0000000..7b66752 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e49-4.conf @@ -0,0 +1,7 @@ +zone "e49-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e49-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e5-2.conf b/examples/tg16/dns/slave/conf-slave/e5-2.conf new file mode 100644 index 0000000..2866648 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e5-2.conf @@ -0,0 +1,7 @@ +zone "e5-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e5-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e5-3.conf b/examples/tg16/dns/slave/conf-slave/e5-3.conf new file mode 100644 index 0000000..cf9ac28 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e5-3.conf @@ -0,0 +1,7 @@ +zone "e5-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e5-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e5-4.conf b/examples/tg16/dns/slave/conf-slave/e5-4.conf new file mode 100644 index 0000000..239266f --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e5-4.conf @@ -0,0 +1,7 @@ +zone "e5-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e5-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e51-1.conf b/examples/tg16/dns/slave/conf-slave/e51-1.conf new file mode 100644 index 0000000..e223a89 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e51-1.conf @@ -0,0 +1,7 @@ +zone "e51-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e51-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e51-2.conf b/examples/tg16/dns/slave/conf-slave/e51-2.conf new file mode 100644 index 0000000..d885632 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e51-2.conf @@ -0,0 +1,7 @@ +zone "e51-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e51-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e51-3.conf b/examples/tg16/dns/slave/conf-slave/e51-3.conf new file mode 100644 index 0000000..4b1d8a4 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e51-3.conf @@ -0,0 +1,7 @@ +zone "e51-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e51-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e51-4.conf b/examples/tg16/dns/slave/conf-slave/e51-4.conf new file mode 100644 index 0000000..0270d80 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e51-4.conf @@ -0,0 +1,7 @@ +zone "e51-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e51-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e53-1.conf b/examples/tg16/dns/slave/conf-slave/e53-1.conf new file mode 100644 index 0000000..da0a4c4 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e53-1.conf @@ -0,0 +1,7 @@ +zone "e53-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e53-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e53-2.conf b/examples/tg16/dns/slave/conf-slave/e53-2.conf new file mode 100644 index 0000000..cb018f0 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e53-2.conf @@ -0,0 +1,7 @@ +zone "e53-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e53-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e53-3.conf b/examples/tg16/dns/slave/conf-slave/e53-3.conf new file mode 100644 index 0000000..b17ba8a --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e53-3.conf @@ -0,0 +1,7 @@ +zone "e53-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e53-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e53-4.conf b/examples/tg16/dns/slave/conf-slave/e53-4.conf new file mode 100644 index 0000000..66390a9 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e53-4.conf @@ -0,0 +1,7 @@ +zone "e53-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e53-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e55-1.conf b/examples/tg16/dns/slave/conf-slave/e55-1.conf new file mode 100644 index 0000000..e0effc0 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e55-1.conf @@ -0,0 +1,7 @@ +zone "e55-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e55-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e55-2.conf b/examples/tg16/dns/slave/conf-slave/e55-2.conf new file mode 100644 index 0000000..9c2f9e0 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e55-2.conf @@ -0,0 +1,7 @@ +zone "e55-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e55-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e55-3.conf b/examples/tg16/dns/slave/conf-slave/e55-3.conf new file mode 100644 index 0000000..3a642ca --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e55-3.conf @@ -0,0 +1,7 @@ +zone "e55-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e55-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e55-4.conf b/examples/tg16/dns/slave/conf-slave/e55-4.conf new file mode 100644 index 0000000..4997e9a --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e55-4.conf @@ -0,0 +1,7 @@ +zone "e55-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e55-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e57-1.conf b/examples/tg16/dns/slave/conf-slave/e57-1.conf new file mode 100644 index 0000000..f7a35b9 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e57-1.conf @@ -0,0 +1,7 @@ +zone "e57-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e57-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e57-2.conf b/examples/tg16/dns/slave/conf-slave/e57-2.conf new file mode 100644 index 0000000..56617c9 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e57-2.conf @@ -0,0 +1,7 @@ +zone "e57-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e57-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e57-3.conf b/examples/tg16/dns/slave/conf-slave/e57-3.conf new file mode 100644 index 0000000..61edd0e --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e57-3.conf @@ -0,0 +1,7 @@ +zone "e57-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e57-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e57-4.conf b/examples/tg16/dns/slave/conf-slave/e57-4.conf new file mode 100644 index 0000000..f2a239b --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e57-4.conf @@ -0,0 +1,7 @@ +zone "e57-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e57-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e59-1.conf b/examples/tg16/dns/slave/conf-slave/e59-1.conf new file mode 100644 index 0000000..c741ded --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e59-1.conf @@ -0,0 +1,7 @@ +zone "e59-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e59-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e59-2.conf b/examples/tg16/dns/slave/conf-slave/e59-2.conf new file mode 100644 index 0000000..f103092 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e59-2.conf @@ -0,0 +1,7 @@ +zone "e59-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e59-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e59-3.conf b/examples/tg16/dns/slave/conf-slave/e59-3.conf new file mode 100644 index 0000000..d307a6c --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e59-3.conf @@ -0,0 +1,7 @@ +zone "e59-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e59-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e59-4.conf b/examples/tg16/dns/slave/conf-slave/e59-4.conf new file mode 100644 index 0000000..39e6610 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e59-4.conf @@ -0,0 +1,7 @@ +zone "e59-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e59-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e61-1.conf b/examples/tg16/dns/slave/conf-slave/e61-1.conf new file mode 100644 index 0000000..970c7d4 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e61-1.conf @@ -0,0 +1,7 @@ +zone "e61-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e61-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e61-2.conf b/examples/tg16/dns/slave/conf-slave/e61-2.conf new file mode 100644 index 0000000..bf768ae --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e61-2.conf @@ -0,0 +1,7 @@ +zone "e61-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e61-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e61-3.conf b/examples/tg16/dns/slave/conf-slave/e61-3.conf new file mode 100644 index 0000000..d4111bd --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e61-3.conf @@ -0,0 +1,7 @@ +zone "e61-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e61-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e61-4.conf b/examples/tg16/dns/slave/conf-slave/e61-4.conf new file mode 100644 index 0000000..b9a6bb4 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e61-4.conf @@ -0,0 +1,7 @@ +zone "e61-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e61-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e63-1.conf b/examples/tg16/dns/slave/conf-slave/e63-1.conf new file mode 100644 index 0000000..cdce58e --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e63-1.conf @@ -0,0 +1,7 @@ +zone "e63-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e63-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e63-2.conf b/examples/tg16/dns/slave/conf-slave/e63-2.conf new file mode 100644 index 0000000..9615ea0 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e63-2.conf @@ -0,0 +1,7 @@ +zone "e63-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e63-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e63-3.conf b/examples/tg16/dns/slave/conf-slave/e63-3.conf new file mode 100644 index 0000000..81cc277 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e63-3.conf @@ -0,0 +1,7 @@ +zone "e63-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e63-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e63-4.conf b/examples/tg16/dns/slave/conf-slave/e63-4.conf new file mode 100644 index 0000000..98f2495 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e63-4.conf @@ -0,0 +1,7 @@ +zone "e63-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e63-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e65-1.conf b/examples/tg16/dns/slave/conf-slave/e65-1.conf new file mode 100644 index 0000000..8668998 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e65-1.conf @@ -0,0 +1,7 @@ +zone "e65-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e65-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e65-2.conf b/examples/tg16/dns/slave/conf-slave/e65-2.conf new file mode 100644 index 0000000..fe46fe1 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e65-2.conf @@ -0,0 +1,7 @@ +zone "e65-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e65-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e65-3.conf b/examples/tg16/dns/slave/conf-slave/e65-3.conf new file mode 100644 index 0000000..13c23be --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e65-3.conf @@ -0,0 +1,7 @@ +zone "e65-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e65-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e65-4.conf b/examples/tg16/dns/slave/conf-slave/e65-4.conf new file mode 100644 index 0000000..aa2f20b --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e65-4.conf @@ -0,0 +1,7 @@ +zone "e65-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e65-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e67-1.conf b/examples/tg16/dns/slave/conf-slave/e67-1.conf new file mode 100644 index 0000000..11d3244 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e67-1.conf @@ -0,0 +1,7 @@ +zone "e67-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e67-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e67-2.conf b/examples/tg16/dns/slave/conf-slave/e67-2.conf new file mode 100644 index 0000000..fa99da6 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e67-2.conf @@ -0,0 +1,7 @@ +zone "e67-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e67-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e67-3.conf b/examples/tg16/dns/slave/conf-slave/e67-3.conf new file mode 100644 index 0000000..07c2028 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e67-3.conf @@ -0,0 +1,7 @@ +zone "e67-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e67-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e67-4.conf b/examples/tg16/dns/slave/conf-slave/e67-4.conf new file mode 100644 index 0000000..3f6d462 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e67-4.conf @@ -0,0 +1,7 @@ +zone "e67-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e67-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e69-1.conf b/examples/tg16/dns/slave/conf-slave/e69-1.conf new file mode 100644 index 0000000..5b61d69 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e69-1.conf @@ -0,0 +1,7 @@ +zone "e69-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e69-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e69-2.conf b/examples/tg16/dns/slave/conf-slave/e69-2.conf new file mode 100644 index 0000000..3710313 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e69-2.conf @@ -0,0 +1,7 @@ +zone "e69-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e69-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e7-1.conf b/examples/tg16/dns/slave/conf-slave/e7-1.conf new file mode 100644 index 0000000..2bddf0f --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e7-1.conf @@ -0,0 +1,7 @@ +zone "e7-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e7-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e7-2.conf b/examples/tg16/dns/slave/conf-slave/e7-2.conf new file mode 100644 index 0000000..3ee8e04 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e7-2.conf @@ -0,0 +1,7 @@ +zone "e7-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e7-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e7-3.conf b/examples/tg16/dns/slave/conf-slave/e7-3.conf new file mode 100644 index 0000000..67f7b24 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e7-3.conf @@ -0,0 +1,7 @@ +zone "e7-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e7-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e7-4.conf b/examples/tg16/dns/slave/conf-slave/e7-4.conf new file mode 100644 index 0000000..7c3a454 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e7-4.conf @@ -0,0 +1,7 @@ +zone "e7-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e7-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e71-1.conf b/examples/tg16/dns/slave/conf-slave/e71-1.conf new file mode 100644 index 0000000..c63bbb4 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e71-1.conf @@ -0,0 +1,7 @@ +zone "e71-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e71-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e71-2.conf b/examples/tg16/dns/slave/conf-slave/e71-2.conf new file mode 100644 index 0000000..8f4f70f --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e71-2.conf @@ -0,0 +1,7 @@ +zone "e71-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e71-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e73-1.conf b/examples/tg16/dns/slave/conf-slave/e73-1.conf new file mode 100644 index 0000000..52676cf --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e73-1.conf @@ -0,0 +1,7 @@ +zone "e73-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e73-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e73-2.conf b/examples/tg16/dns/slave/conf-slave/e73-2.conf new file mode 100644 index 0000000..747aa0e --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e73-2.conf @@ -0,0 +1,7 @@ +zone "e73-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e73-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e75-1.conf b/examples/tg16/dns/slave/conf-slave/e75-1.conf new file mode 100644 index 0000000..77dd814 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e75-1.conf @@ -0,0 +1,7 @@ +zone "e75-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e75-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e75-2.conf b/examples/tg16/dns/slave/conf-slave/e75-2.conf new file mode 100644 index 0000000..ad3849d --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e75-2.conf @@ -0,0 +1,7 @@ +zone "e75-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e75-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e77-1.conf b/examples/tg16/dns/slave/conf-slave/e77-1.conf new file mode 100644 index 0000000..097a97b --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e77-1.conf @@ -0,0 +1,7 @@ +zone "e77-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e77-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e77-2.conf b/examples/tg16/dns/slave/conf-slave/e77-2.conf new file mode 100644 index 0000000..6f2c8e8 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e77-2.conf @@ -0,0 +1,7 @@ +zone "e77-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e77-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e79-1.conf b/examples/tg16/dns/slave/conf-slave/e79-1.conf new file mode 100644 index 0000000..8fb38a1 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e79-1.conf @@ -0,0 +1,7 @@ +zone "e79-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e79-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e79-2.conf b/examples/tg16/dns/slave/conf-slave/e79-2.conf new file mode 100644 index 0000000..2d8b086 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e79-2.conf @@ -0,0 +1,7 @@ +zone "e79-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e79-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e81-1.conf b/examples/tg16/dns/slave/conf-slave/e81-1.conf new file mode 100644 index 0000000..67f9652 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e81-1.conf @@ -0,0 +1,7 @@ +zone "e81-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e81-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e81-2.conf b/examples/tg16/dns/slave/conf-slave/e81-2.conf new file mode 100644 index 0000000..bdb1ff9 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e81-2.conf @@ -0,0 +1,7 @@ +zone "e81-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e81-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e83-2.conf b/examples/tg16/dns/slave/conf-slave/e83-2.conf new file mode 100644 index 0000000..8f75ff9 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e83-2.conf @@ -0,0 +1,7 @@ +zone "e83-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e83-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e85-2.conf b/examples/tg16/dns/slave/conf-slave/e85-2.conf new file mode 100644 index 0000000..99bdbaf --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e85-2.conf @@ -0,0 +1,7 @@ +zone "e85-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e85-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e9-1.conf b/examples/tg16/dns/slave/conf-slave/e9-1.conf new file mode 100644 index 0000000..05849c6 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e9-1.conf @@ -0,0 +1,7 @@ +zone "e9-1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e9-1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e9-2.conf b/examples/tg16/dns/slave/conf-slave/e9-2.conf new file mode 100644 index 0000000..b86b434 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e9-2.conf @@ -0,0 +1,7 @@ +zone "e9-2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e9-2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e9-3.conf b/examples/tg16/dns/slave/conf-slave/e9-3.conf new file mode 100644 index 0000000..949eaff --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e9-3.conf @@ -0,0 +1,7 @@ +zone "e9-3.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e9-3.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/e9-4.conf b/examples/tg16/dns/slave/conf-slave/e9-4.conf new file mode 100644 index 0000000..f7789fc --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/e9-4.conf @@ -0,0 +1,7 @@ +zone "e9-4.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/e9-4.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/event.conf b/examples/tg16/dns/slave/conf-slave/event.conf new file mode 100644 index 0000000..167da78 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/event.conf @@ -0,0 +1,7 @@ +zone "event.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/event.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/flankenord.conf b/examples/tg16/dns/slave/conf-slave/flankenord.conf new file mode 100644 index 0000000..d9465fa --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/flankenord.conf @@ -0,0 +1,7 @@ +zone "flankenord.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/flankenord.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/flankesor.conf b/examples/tg16/dns/slave/conf-slave/flankesor.conf new file mode 100644 index 0000000..b92a758 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/flankesor.conf @@ -0,0 +1,7 @@ +zone "flankesor.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/flankesor.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/foh.conf b/examples/tg16/dns/slave/conf-slave/foh.conf new file mode 100644 index 0000000..400a3b3 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/foh.conf @@ -0,0 +1,7 @@ +zone "foh.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/foh.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/fugleberget.conf b/examples/tg16/dns/slave/conf-slave/fugleberget.conf new file mode 100644 index 0000000..3439fa8 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/fugleberget.conf @@ -0,0 +1,7 @@ +zone "fugleberget.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/fugleberget.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/game.conf b/examples/tg16/dns/slave/conf-slave/game.conf new file mode 100644 index 0000000..b2f02ea --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/game.conf @@ -0,0 +1,7 @@ +zone "game.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/game.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/gamestage.conf b/examples/tg16/dns/slave/conf-slave/gamestage.conf new file mode 100644 index 0000000..678232d --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/gamestage.conf @@ -0,0 +1,7 @@ +zone "gamestage.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/gamestage.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/highlights.conf b/examples/tg16/dns/slave/conf-slave/highlights.conf new file mode 100644 index 0000000..eb52c6a --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/highlights.conf @@ -0,0 +1,7 @@ +zone "highlights.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/highlights.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/hon.conf b/examples/tg16/dns/slave/conf-slave/hon.conf new file mode 100644 index 0000000..4128b5b --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/hon.conf @@ -0,0 +1,7 @@ +zone "hon.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/hon.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/info.conf b/examples/tg16/dns/slave/conf-slave/info.conf new file mode 100644 index 0000000..b3e433a --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/info.conf @@ -0,0 +1,7 @@ +zone "info.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/info.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/innsjekk.conf b/examples/tg16/dns/slave/conf-slave/innsjekk.conf new file mode 100644 index 0000000..0ac8a15 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/innsjekk.conf @@ -0,0 +1,7 @@ +zone "innsjekk.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/innsjekk.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/logistikk.conf b/examples/tg16/dns/slave/conf-slave/logistikk.conf new file mode 100644 index 0000000..c4904fd --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/logistikk.conf @@ -0,0 +1,7 @@ +zone "logistikk.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/logistikk.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/medic.conf b/examples/tg16/dns/slave/conf-slave/medic.conf new file mode 100644 index 0000000..333fd18 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/medic.conf @@ -0,0 +1,7 @@ +zone "medic.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/medic.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/noc.conf b/examples/tg16/dns/slave/conf-slave/noc.conf new file mode 100644 index 0000000..9b8ce50 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/noc.conf @@ -0,0 +1,7 @@ +zone "noc.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/noc.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/north.conf b/examples/tg16/dns/slave/conf-slave/north.conf new file mode 100644 index 0000000..6488679 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/north.conf @@ -0,0 +1,7 @@ +zone "north.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/north.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/presse.conf b/examples/tg16/dns/slave/conf-slave/presse.conf new file mode 100644 index 0000000..76f3a89 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/presse.conf @@ -0,0 +1,7 @@ +zone "presse.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/presse.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/resepsjon.conf b/examples/tg16/dns/slave/conf-slave/resepsjon.conf new file mode 100644 index 0000000..6b80571 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/resepsjon.conf @@ -0,0 +1,7 @@ +zone "resepsjon.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/resepsjon.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/santander-temp.conf b/examples/tg16/dns/slave/conf-slave/santander-temp.conf new file mode 100644 index 0000000..3273c3d --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/santander-temp.conf @@ -0,0 +1,7 @@ +zone "santander-temp.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/santander-temp.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/security.conf b/examples/tg16/dns/slave/conf-slave/security.conf new file mode 100644 index 0000000..55109c5 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/security.conf @@ -0,0 +1,7 @@ +zone "security.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/security.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/security2.conf b/examples/tg16/dns/slave/conf-slave/security2.conf new file mode 100644 index 0000000..f7349c6 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/security2.conf @@ -0,0 +1,7 @@ +zone "security2.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/security2.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/sponsor.conf b/examples/tg16/dns/slave/conf-slave/sponsor.conf new file mode 100644 index 0000000..186f0ee --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/sponsor.conf @@ -0,0 +1,7 @@ +zone "sponsor.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/sponsor.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/stage.conf b/examples/tg16/dns/slave/conf-slave/stage.conf new file mode 100644 index 0000000..02b5a12 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/stage.conf @@ -0,0 +1,7 @@ +zone "stage.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/stage.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/streamer1.conf b/examples/tg16/dns/slave/conf-slave/streamer1.conf new file mode 100644 index 0000000..1002318 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/streamer1.conf @@ -0,0 +1,7 @@ +zone "streamer1.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/streamer1.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/tech-wlan.conf b/examples/tg16/dns/slave/conf-slave/tech-wlan.conf new file mode 100644 index 0000000..4699c9b --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/tech-wlan.conf @@ -0,0 +1,7 @@ +zone "tech-wlan.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/tech-wlan.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/conf-slave/wlan.conf b/examples/tg16/dns/slave/conf-slave/wlan.conf new file mode 100644 index 0000000..aa1ef15 --- /dev/null +++ b/examples/tg16/dns/slave/conf-slave/wlan.conf @@ -0,0 +1,7 @@ +zone "wlan.tg16.gathering.org" { +	allow-transfer { ns-xfr; }; +	type slave; +	notify no; +	masters { master_ns; }; +	file "slave/wlan.tg16.gathering.org.zone"; +}; diff --git a/examples/tg16/dns/slave/named.conf b/examples/tg16/dns/slave/named.conf new file mode 100644 index 0000000..feb504a --- /dev/null +++ b/examples/tg16/dns/slave/named.conf @@ -0,0 +1,148 @@ +// This named.conf was generated by make-named.pl at 20160322-2330 +// The current version of make-named.pl should not overwrite this file. +acl tg-nett  { 88.92.0.0/17; 2a06:5840::/29; 185.110.148.0/22; 127.0.0.0/8; ::1; }; +acl ns-xfr   { 185.110.148.2; 2a06:5841:1337::2; 185.110.149.2; 2a06:5841:149a::2; 185.110.150.0/25; 2a06:5841:150a::1/64; }; +acl ext-xfr  { 193.0.0.0/22; 2001:610:240::/48; 2001:67c:2e8::/48; }; + +options { +        directory "/etc/bind"; +        allow-recursion { tg-nett; }; +        allow-query { any; }; +        allow-transfer { ns-xfr; }; +        recursion yes; +        auth-nxdomain no; +        listen-on-v6 { any; }; +	statistics-file "/etc/bind/named.rndc-stats"; +}; + +logging { +        category "default" { "debug"; }; +        category "general" { "debug"; }; +        category "database" { "debug"; }; +        category "security" { "debug"; "stats"; }; +        category "config" { "debug"; "stats"; }; +        category "resolver" { "debug"; "stats"; }; +        category "xfer-in" { "debug"; "stats"; }; +        category "xfer-out" { "debug"; "stats"; }; +        category "notify" { "debug"; "stats"; }; +        category "client" { "debug"; }; +        category "unmatched" { "debug"; }; +        category "network" { "debug"; }; +        category "update" { "debug"; }; +        category "queries" { "stats"; "query"; }; +        category "dispatch" { "debug"; }; +        category "dnssec" { "debug"; }; +        category "lame-servers" { "debug"; }; + +        channel "debug" { +                file "/etc/bind/nameddbg" versions 2 size 50m; +                print-time yes; +                print-category yes; +                print-severity yes; +                severity debug 9; +        }; + +        channel "stats" { +                file "/etc/bind/namedstats" versions 2 size 50m; +                print-time yes; +                print-category yes; +                print-severity yes; +                severity debug 3; +        }; +	 +	channel "query" { +                file "/etc/bind/namedquery" versions 2 size 500m; +                print-time yes; +                severity info; +        }; +}; + +key DHCP_UPDATER { +        algorithm HMAC-MD5.SIG-ALG.REG.INT; +        secret <removed>; +}; + +masters master_ns { 2a06:5841:149a::2; 185.110.149.2; }; + +zone "tg16.gathering.org" { +        type slave; +        file "slave/tg16.gathering.org"; +        notify no; +	masters { master_ns; }; +}; + +zone "infra.tg16.gathering.org" { +        type slave; +        file "slave/infra.tg16.gathering.org"; +        notify no; +	masters { master_ns; }; +}; + +zone "0.4.8.5.6.0.a.2.ip6.arpa" { +        type slave; +        notify no; +	masters { master_ns; }; +        file "slave/0.4.8.5.6.0.a.2.ip6.arpa"; +        allow-transfer { ns-xfr; ext-xfr; }; +}; + +zone "1.4.8.5.6.0.a.2.ip6.arpa" { +        type slave; +        notify no; +	masters { master_ns; }; +        file "slave/1.4.8.5.6.0.a.2.ip6.arpa"; +        allow-transfer { ns-xfr; ext-xfr; }; +}; + +zone "2.4.8.5.6.0.a.2.ip6.arpa" { +        type slave; +        notify no; +	masters { master_ns; }; +        file "slave/2.4.8.5.6.0.a.2.ip6.arpa"; +        allow-transfer { ns-xfr; ext-xfr; }; +}; + +zone "3.4.8.5.6.0.a.2.ip6.arpa" { +        type slave; +        notify no; +	masters { master_ns; }; +        file "slave/3.4.8.5.6.0.a.2.ip6.arpa"; +        allow-transfer { ns-xfr; ext-xfr; }; +}; + +zone "4.4.8.5.6.0.a.2.ip6.arpa" { +        type slave; +        notify no; +	masters { master_ns; }; +        file "slave/4.4.8.5.6.0.a.2.ip6.arpa"; +        allow-transfer { ns-xfr; ext-xfr; }; +}; + +zone "5.4.8.5.6.0.a.2.ip6.arpa" { +        type slave; +        notify no; +	masters { master_ns; }; +        file "slave/5.4.8.5.6.0.a.2.ip6.arpa"; +        allow-transfer { ns-xfr; ext-xfr; }; +}; + +zone "6.4.8.5.6.0.a.2.ip6.arpa" { +        type slave; +        notify no; +	masters { master_ns; }; +        file "slave/6.4.8.5.6.0.a.2.ip6.arpa"; +        allow-transfer { ns-xfr; ext-xfr; }; +}; + +zone "7.4.8.5.6.0.a.2.ip6.arpa" { +        type slave; +        notify no; +	masters { master_ns; }; +        file "slave/7.4.8.5.6.0.a.2.ip6.arpa"; +        allow-transfer { ns-xfr; ext-xfr; }; +}; + +	 +include "named.conf.default-zones"; +include "named.slave-reverse4.conf"; +include "named.slave-include.conf"; diff --git a/examples/tg16/dns/slave/named.conf.default-zones b/examples/tg16/dns/slave/named.conf.default-zones new file mode 100644 index 0000000..355338b --- /dev/null +++ b/examples/tg16/dns/slave/named.conf.default-zones @@ -0,0 +1,30 @@ +// prime the server with knowledge of the root servers +zone "." { +	type hint; +	file "/etc/bind/db.root"; +}; + +// be authoritative for the localhost forward and reverse zones, and for +// broadcast zones as per RFC 1912 + +zone "localhost" { +	type master; +	file "/etc/bind/db.local"; +}; + +zone "127.in-addr.arpa" { +	type master; +	file "/etc/bind/db.127"; +}; + +zone "0.in-addr.arpa" { +	type master; +	file "/etc/bind/db.0"; +}; + +zone "255.in-addr.arpa" { +	type master; +	file "/etc/bind/db.255"; +}; + + diff --git a/examples/tg16/dns/slave/named.rndc-stats b/examples/tg16/dns/slave/named.rndc-stats new file mode 100644 index 0000000..aafb6f8 --- /dev/null +++ b/examples/tg16/dns/slave/named.rndc-stats @@ -0,0 +1,136 @@ ++++ Statistics Dump +++ (1459077002) +++ Incoming Requests ++ +            11710890 QUERY +              128708 NOTIFY +++ Incoming Queries ++ +             6682245 A +               56471 NS +                 132 CNAME +                5562 SOA +             1940294 PTR +                  82 MX +               16526 TXT +             2739744 AAAA +              239167 SRV +                   9 NAPTR +                 820 A6 +                 122 DS +                  81 DNSKEY +               26306 ANY +                3329 Others +++ Outgoing Queries ++ +[View: default] +             4178011 A +               24412 NS +                 127 CNAME +                1309 SOA +              511408 PTR +                  11 MX +               10365 TXT +             1125990 AAAA +               23413 SRV +                  15 NAPTR +                   2 DS +                   1 DNSKEY +                1076 ANY +                1837 Others +[View: _bind] +++ Name Server Statistics ++ +             8204466 IPv4 requests received +             3635136 IPv6 requests received +             1753950 requests with EDNS(0) received +                 625 TCP requests received +                 449 auth queries rejected +             3228241 recursive queries rejected +            11755227 responses sent +                2315 truncated responses sent +             1753900 responses with EDNS(0) sent +             7068307 queries resulted in successful answer +             2315088 queries resulted in authoritative answer +             5939914 queries resulted in non authoritative answer +                 540 queries resulted in referral answer +              432653 queries resulted in nxrrset +              142823 queries resulted in SERVFAIL +              753502 queries resulted in NXDOMAIN +             3494338 queries caused recursion +               82063 duplicate queries received +                2312 queries dropped +             3228690 other query failures +                   2 responses dropped for rate limits +++ Zone Maintenance Statistics ++ +               64353 IPv4 notifies received +               64355 IPv6 notifies received +               35217 IPv4 SOA queries sent +               93276 IPv6 SOA queries sent +                 155 IPv4 IXFR requested +               58059 IPv6 IXFR requested +               58214 transfer requests succeeded +++ Resolver Statistics ++ +[Common] +                  13 mismatch responses received +[View: default] +             5226295 IPv4 queries sent +              651682 IPv6 queries sent +             5026991 IPv4 responses received +              623811 IPv6 responses received +              145200 NXDOMAIN received +               23839 SERVFAIL received +                1588 FORMERR received +              259050 other errors received +                3506 EDNS(0) query failures +               10643 truncated responses received +                9974 lame delegations received +              592187 query retries +              231528 query timeouts +              234600 IPv4 NS address fetches +              235694 IPv6 NS address fetches +                5261 IPv4 NS address fetch failed +              183487 IPv6 NS address fetch failed +              708744 queries with RTT < 10ms +             2474745 queries with RTT 10-100ms +             2452911 queries with RTT 100-500ms +                5578 queries with RTT 500-800ms +                 102 queries with RTT 800-1600ms +                  25 queries with RTT > 1600ms +[View: _bind] +++ Cache DB RRsets ++ +[View: default] +               39773 A +               95605 NS +                7763 CNAME +                   1 SOA +               41407 PTR +                 402 TXT +                5339 AAAA +                   9 SRV +                 983 DS +               22326 RRSIG +               19873 NSEC +                   1 DNSKEY +                   8 !A +                 371 !AAAA +               35926 NXDOMAIN +[View: _bind (Cache: _bind)] +++ Socket I/O Statistics ++ +             5257275 UDP/IPv4 sockets opened +              728337 UDP/IPv6 sockets opened +                5365 TCP/IPv4 sockets opened +               63497 TCP/IPv6 sockets opened +             5257259 UDP/IPv4 sockets closed +              728329 UDP/IPv6 sockets closed +                6968 TCP/IPv4 sockets closed +               63623 TCP/IPv6 sockets closed +                1461 UDP/IPv4 socket bind failures +                 114 UDP/IPv6 socket bind failures +                  10 UDP/IPv6 socket connect failures +             5221088 UDP/IPv4 connections established +              646246 UDP/IPv6 connections established +                5023 TCP/IPv4 connections established +               63451 TCP/IPv6 connections established +                1607 TCP/IPv4 connections accepted +                 128 TCP/IPv6 connections accepted +                8107 UDP/IPv4 recv errors +                 882 UDP/IPv6 recv errors +                  13 TCP/IPv4 recv errors +++ Per Zone Query Statistics ++ +--- Statistics Dump --- (1459077002)
\ No newline at end of file diff --git a/examples/tg16/dns/slave/named.slave-include.conf b/examples/tg16/dns/slave/named.slave-include.conf new file mode 100644 index 0000000..1f74f88 --- /dev/null +++ b/examples/tg16/dns/slave/named.slave-include.conf @@ -0,0 +1,179 @@ +include "/etc/bind/conf-slave/ap-creativia.conf"; +include "/etc/bind/conf-slave/ap-distro0.conf"; +include "/etc/bind/conf-slave/ap-distro1.conf"; +include "/etc/bind/conf-slave/ap-distro2.conf"; +include "/etc/bind/conf-slave/ap-distro3.conf"; +include "/etc/bind/conf-slave/ap-distro4.conf"; +include "/etc/bind/conf-slave/ap-distro5.conf"; +include "/etc/bind/conf-slave/ap-distro6.conf"; +include "/etc/bind/conf-slave/ap-distro7.conf"; +include "/etc/bind/conf-slave/ap-stand.conf"; +include "/etc/bind/conf-slave/auditorium.conf"; +include "/etc/bind/conf-slave/creativia-village.conf"; +include "/etc/bind/conf-slave/creativia.conf"; +include "/etc/bind/conf-slave/creativia1.conf"; +include "/etc/bind/conf-slave/creativia2.conf"; +include "/etc/bind/conf-slave/creativia3.conf"; +include "/etc/bind/conf-slave/creativia4.conf"; +include "/etc/bind/conf-slave/creativia5.conf"; +include "/etc/bind/conf-slave/creativia6.conf"; +include "/etc/bind/conf-slave/creativia7.conf"; +include "/etc/bind/conf-slave/creativiasw1.conf"; +include "/etc/bind/conf-slave/crew.conf"; +include "/etc/bind/conf-slave/deltaker-srv.conf"; +include "/etc/bind/conf-slave/e1-3.conf"; +include "/etc/bind/conf-slave/e1-4.conf"; +include "/etc/bind/conf-slave/e11-1.conf"; +include "/etc/bind/conf-slave/e11-2.conf"; +include "/etc/bind/conf-slave/e11-3.conf"; +include "/etc/bind/conf-slave/e11-4.conf"; +include "/etc/bind/conf-slave/e13-1.conf"; +include "/etc/bind/conf-slave/e13-2.conf"; +include "/etc/bind/conf-slave/e13-3.conf"; +include "/etc/bind/conf-slave/e13-4.conf"; +include "/etc/bind/conf-slave/e15-1.conf"; +include "/etc/bind/conf-slave/e15-2.conf"; +include "/etc/bind/conf-slave/e15-3.conf"; +include "/etc/bind/conf-slave/e15-4.conf"; +include "/etc/bind/conf-slave/e17-1.conf"; +include "/etc/bind/conf-slave/e17-2.conf"; +include "/etc/bind/conf-slave/e17-3.conf"; +include "/etc/bind/conf-slave/e17-4.conf"; +include "/etc/bind/conf-slave/e19-1.conf"; +include "/etc/bind/conf-slave/e19-2.conf"; +include "/etc/bind/conf-slave/e19-3.conf"; +include "/etc/bind/conf-slave/e19-4.conf"; +include "/etc/bind/conf-slave/e21-1.conf"; +include "/etc/bind/conf-slave/e21-2.conf"; +include "/etc/bind/conf-slave/e21-3.conf"; +include "/etc/bind/conf-slave/e21-4.conf"; +include "/etc/bind/conf-slave/e23-1.conf"; +include "/etc/bind/conf-slave/e23-2.conf"; +include "/etc/bind/conf-slave/e23-3.conf"; +include "/etc/bind/conf-slave/e23-4.conf"; +include "/etc/bind/conf-slave/e25-1.conf"; +include "/etc/bind/conf-slave/e25-2.conf"; +include "/etc/bind/conf-slave/e27-1.conf"; +include "/etc/bind/conf-slave/e27-2.conf"; +include "/etc/bind/conf-slave/e29-1.conf"; +include "/etc/bind/conf-slave/e29-2.conf"; +include "/etc/bind/conf-slave/e3-3.conf"; +include "/etc/bind/conf-slave/e3-4.conf"; +include "/etc/bind/conf-slave/e31-1.conf"; +include "/etc/bind/conf-slave/e31-2.conf"; +include "/etc/bind/conf-slave/e33-1.conf"; +include "/etc/bind/conf-slave/e33-2.conf"; +include "/etc/bind/conf-slave/e35-1.conf"; +include "/etc/bind/conf-slave/e35-2.conf"; +include "/etc/bind/conf-slave/e37-1.conf"; +include "/etc/bind/conf-slave/e37-2.conf"; +include "/etc/bind/conf-slave/e39-1.conf"; +include "/etc/bind/conf-slave/e39-2.conf"; +include "/etc/bind/conf-slave/e41-1.conf"; +include "/etc/bind/conf-slave/e41-2.conf"; +include "/etc/bind/conf-slave/e41-3.conf"; +include "/etc/bind/conf-slave/e41-4.conf"; +include "/etc/bind/conf-slave/e43-1.conf"; +include "/etc/bind/conf-slave/e43-2.conf"; +include "/etc/bind/conf-slave/e43-3.conf"; +include "/etc/bind/conf-slave/e43-4.conf"; +include "/etc/bind/conf-slave/e45-1.conf"; +include "/etc/bind/conf-slave/e45-2.conf"; +include "/etc/bind/conf-slave/e45-3.conf"; +include "/etc/bind/conf-slave/e45-4.conf"; +include "/etc/bind/conf-slave/e47-1.conf"; +include "/etc/bind/conf-slave/e47-2.conf"; +include "/etc/bind/conf-slave/e47-3.conf"; +include "/etc/bind/conf-slave/e47-4.conf"; +include "/etc/bind/conf-slave/e49-1.conf"; +include "/etc/bind/conf-slave/e49-2.conf"; +include "/etc/bind/conf-slave/e49-3.conf"; +include "/etc/bind/conf-slave/e49-4.conf"; +include "/etc/bind/conf-slave/e5-2.conf"; +include "/etc/bind/conf-slave/e5-3.conf"; +include "/etc/bind/conf-slave/e5-4.conf"; +include "/etc/bind/conf-slave/e51-1.conf"; +include "/etc/bind/conf-slave/e51-2.conf"; +include "/etc/bind/conf-slave/e51-3.conf"; +include "/etc/bind/conf-slave/e51-4.conf"; +include "/etc/bind/conf-slave/e53-1.conf"; +include "/etc/bind/conf-slave/e53-2.conf"; +include "/etc/bind/conf-slave/e53-3.conf"; +include "/etc/bind/conf-slave/e53-4.conf"; +include "/etc/bind/conf-slave/e55-1.conf"; +include "/etc/bind/conf-slave/e55-2.conf"; +include "/etc/bind/conf-slave/e55-3.conf"; +include "/etc/bind/conf-slave/e55-4.conf"; +include "/etc/bind/conf-slave/e57-1.conf"; +include "/etc/bind/conf-slave/e57-2.conf"; +include "/etc/bind/conf-slave/e57-3.conf"; +include "/etc/bind/conf-slave/e57-4.conf"; +include "/etc/bind/conf-slave/e59-1.conf"; +include "/etc/bind/conf-slave/e59-2.conf"; +include "/etc/bind/conf-slave/e59-3.conf"; +include "/etc/bind/conf-slave/e59-4.conf"; +include "/etc/bind/conf-slave/e61-1.conf"; +include "/etc/bind/conf-slave/e61-2.conf"; +include "/etc/bind/conf-slave/e61-3.conf"; +include "/etc/bind/conf-slave/e61-4.conf"; +include "/etc/bind/conf-slave/e63-1.conf"; +include "/etc/bind/conf-slave/e63-2.conf"; +include "/etc/bind/conf-slave/e63-3.conf"; +include "/etc/bind/conf-slave/e63-4.conf"; +include "/etc/bind/conf-slave/e65-1.conf"; +include "/etc/bind/conf-slave/e65-2.conf"; +include "/etc/bind/conf-slave/e65-3.conf"; +include "/etc/bind/conf-slave/e65-4.conf"; +include "/etc/bind/conf-slave/e67-1.conf"; +include "/etc/bind/conf-slave/e67-2.conf"; +include "/etc/bind/conf-slave/e67-3.conf"; +include "/etc/bind/conf-slave/e67-4.conf"; +include "/etc/bind/conf-slave/e69-1.conf"; +include "/etc/bind/conf-slave/e69-2.conf"; +include "/etc/bind/conf-slave/e7-1.conf"; +include "/etc/bind/conf-slave/e7-2.conf"; +include "/etc/bind/conf-slave/e7-3.conf"; +include "/etc/bind/conf-slave/e7-4.conf"; +include "/etc/bind/conf-slave/e71-1.conf"; +include "/etc/bind/conf-slave/e71-2.conf"; +include "/etc/bind/conf-slave/e73-1.conf"; +include "/etc/bind/conf-slave/e73-2.conf"; +include "/etc/bind/conf-slave/e75-1.conf"; +include "/etc/bind/conf-slave/e75-2.conf"; +include "/etc/bind/conf-slave/e77-1.conf"; +include "/etc/bind/conf-slave/e77-2.conf"; +include "/etc/bind/conf-slave/e79-1.conf"; +include "/etc/bind/conf-slave/e79-2.conf"; +include "/etc/bind/conf-slave/e81-1.conf"; +include "/etc/bind/conf-slave/e81-2.conf"; +include "/etc/bind/conf-slave/e83-2.conf"; +include "/etc/bind/conf-slave/e85-2.conf"; +include "/etc/bind/conf-slave/e9-1.conf"; +include "/etc/bind/conf-slave/e9-2.conf"; +include "/etc/bind/conf-slave/e9-3.conf"; +include "/etc/bind/conf-slave/e9-4.conf"; +include "/etc/bind/conf-slave/event.conf"; +include "/etc/bind/conf-slave/flankenord.conf"; +include "/etc/bind/conf-slave/flankesor.conf"; +include "/etc/bind/conf-slave/foh.conf"; +include "/etc/bind/conf-slave/fugleberget.conf"; +include "/etc/bind/conf-slave/game.conf"; +include "/etc/bind/conf-slave/gamestage.conf"; +include "/etc/bind/conf-slave/highlights.conf"; +include "/etc/bind/conf-slave/hon.conf"; +include "/etc/bind/conf-slave/info.conf"; +include "/etc/bind/conf-slave/innsjekk.conf"; +include "/etc/bind/conf-slave/logistikk.conf"; +include "/etc/bind/conf-slave/medic.conf"; +include "/etc/bind/conf-slave/noc.conf"; +include "/etc/bind/conf-slave/north.conf"; +include "/etc/bind/conf-slave/presse.conf"; +include "/etc/bind/conf-slave/resepsjon.conf"; +include "/etc/bind/conf-slave/santander-temp.conf"; +include "/etc/bind/conf-slave/security.conf"; +include "/etc/bind/conf-slave/security2.conf"; +include "/etc/bind/conf-slave/sponsor.conf"; +include "/etc/bind/conf-slave/stage.conf"; +include "/etc/bind/conf-slave/streamer1.conf"; +include "/etc/bind/conf-slave/tech-wlan.conf"; +include "/etc/bind/conf-slave/wlan.conf"; diff --git a/examples/tg16/dns/slave/named.slave-reverse4.conf b/examples/tg16/dns/slave/named.slave-reverse4.conf new file mode 100644 index 0000000..97c25ef --- /dev/null +++ b/examples/tg16/dns/slave/named.slave-reverse4.conf @@ -0,0 +1,1188 @@ +// 88.92.0.0/24 +zone "0.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/0.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.1.0/24 +zone "1.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/1.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.2.0/24 +zone "2.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/2.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.3.0/24 +zone "3.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/3.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.4.0/24 +zone "4.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/4.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.5.0/24 +zone "5.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/5.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.6.0/24 +zone "6.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/6.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.7.0/24 +zone "7.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/7.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.8.0/24 +zone "8.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/8.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.9.0/24 +zone "9.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/9.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.10.0/24 +zone "10.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/10.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.11.0/24 +zone "11.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/11.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.12.0/24 +zone "12.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/12.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.13.0/24 +zone "13.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/13.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.14.0/24 +zone "14.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/14.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.15.0/24 +zone "15.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/15.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.16.0/24 +zone "16.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/16.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.17.0/24 +zone "17.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/17.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.18.0/24 +zone "18.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/18.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.19.0/24 +zone "19.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/19.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.20.0/24 +zone "20.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/20.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.21.0/24 +zone "21.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/21.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.22.0/24 +zone "22.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/22.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.23.0/24 +zone "23.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/23.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.24.0/24 +zone "24.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/24.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.25.0/24 +zone "25.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/25.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.26.0/24 +zone "26.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/26.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.27.0/24 +zone "27.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/27.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.28.0/24 +zone "28.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/28.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.29.0/24 +zone "29.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/29.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.30.0/24 +zone "30.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/30.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.31.0/24 +zone "31.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/31.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.32.0/24 +zone "32.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/32.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.33.0/24 +zone "33.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/33.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.34.0/24 +zone "34.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/34.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.35.0/24 +zone "35.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/35.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.36.0/24 +zone "36.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/36.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.37.0/24 +zone "37.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/37.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.38.0/24 +zone "38.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/38.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.39.0/24 +zone "39.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/39.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.40.0/24 +zone "40.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/40.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.41.0/24 +zone "41.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/41.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.42.0/24 +zone "42.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/42.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.43.0/24 +zone "43.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/43.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.44.0/24 +zone "44.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/44.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.45.0/24 +zone "45.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/45.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.46.0/24 +zone "46.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/46.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.47.0/24 +zone "47.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/47.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.48.0/24 +zone "48.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/48.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.49.0/24 +zone "49.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/49.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.50.0/24 +zone "50.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/50.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.51.0/24 +zone "51.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/51.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.52.0/24 +zone "52.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/52.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.53.0/24 +zone "53.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/53.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.54.0/24 +zone "54.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/54.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.55.0/24 +zone "55.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/55.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.56.0/24 +zone "56.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/56.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.57.0/24 +zone "57.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/57.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.58.0/24 +zone "58.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/58.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.59.0/24 +zone "59.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/59.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.60.0/24 +zone "60.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/60.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.61.0/24 +zone "61.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/61.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.62.0/24 +zone "62.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/62.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.63.0/24 +zone "63.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/63.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.64.0/24 +zone "64.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/64.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.65.0/24 +zone "65.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/65.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.66.0/24 +zone "66.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/66.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.67.0/24 +zone "67.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/67.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.68.0/24 +zone "68.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/68.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.69.0/24 +zone "69.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/69.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.70.0/24 +zone "70.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/70.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.71.0/24 +zone "71.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/71.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.72.0/24 +zone "72.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/72.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.73.0/24 +zone "73.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/73.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.74.0/24 +zone "74.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/74.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.75.0/24 +zone "75.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/75.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.76.0/24 +zone "76.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/76.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.77.0/24 +zone "77.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/77.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.78.0/24 +zone "78.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/78.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.79.0/24 +zone "79.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/79.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.80.0/24 +zone "80.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/80.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.81.0/24 +zone "81.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/81.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.82.0/24 +zone "82.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/82.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.83.0/24 +zone "83.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/83.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.84.0/24 +zone "84.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/84.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.85.0/24 +zone "85.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/85.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.86.0/24 +zone "86.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/86.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.87.0/24 +zone "87.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/87.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.88.0/24 +zone "88.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/88.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.89.0/24 +zone "89.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/89.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.90.0/24 +zone "90.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/90.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.91.0/24 +zone "91.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/91.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.92.0/24 +zone "92.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/92.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.93.0/24 +zone "93.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/93.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.94.0/24 +zone "94.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/94.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.95.0/24 +zone "95.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/95.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.96.0/24 +zone "96.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/96.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.97.0/24 +zone "97.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/97.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.98.0/24 +zone "98.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/98.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.99.0/24 +zone "99.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/99.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.100.0/24 +zone "100.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/100.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.101.0/24 +zone "101.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/101.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.102.0/24 +zone "102.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/102.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.103.0/24 +zone "103.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/103.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.104.0/24 +zone "104.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/104.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.105.0/24 +zone "105.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/105.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.106.0/24 +zone "106.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/106.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.107.0/24 +zone "107.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/107.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.108.0/24 +zone "108.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/108.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.109.0/24 +zone "109.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/109.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.110.0/24 +zone "110.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/110.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.111.0/24 +zone "111.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/111.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.112.0/24 +zone "112.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/112.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.113.0/24 +zone "113.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/113.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.114.0/24 +zone "114.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/114.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.115.0/24 +zone "115.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/115.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.116.0/24 +zone "116.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/116.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.117.0/24 +zone "117.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/117.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.118.0/24 +zone "118.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/118.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.119.0/24 +zone "119.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/119.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.120.0/24 +zone "120.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/120.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.121.0/24 +zone "121.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/121.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.122.0/24 +zone "122.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/122.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.123.0/24 +zone "123.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/123.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.124.0/24 +zone "124.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/124.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.125.0/24 +zone "125.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/125.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.126.0/24 +zone "126.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/126.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 88.92.127.0/24 +zone "127.92.88.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/127.92.88.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 185.110.148.0/24 +zone "148.110.185.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/148.110.185.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 185.110.149.0/24 +zone "149.110.185.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/149.110.185.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 185.110.150.0/24 +zone "150.110.185.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/150.110.185.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + +// 185.110.151.0/24 +zone "151.110.185.in-addr.arpa" { +	type slave; +	notify no; +	file "slave/151.110.185.in-addr.arpa.cache"; +	masters { master_ns; }; +	allow-transfer { ns-xfr; ext-xfr; }; +}; + diff --git a/examples/tg16/infoscreens/bg.png b/examples/tg16/infoscreens/bg.png Binary files differnew file mode 100644 index 0000000..d02dbc9 --- /dev/null +++ b/examples/tg16/infoscreens/bg.png diff --git a/examples/tg16/infoscreens/display1.html b/examples/tg16/infoscreens/display1.html new file mode 100644 index 0000000..05dd134 --- /dev/null +++ b/examples/tg16/infoscreens/display1.html @@ -0,0 +1,58 @@ +<html> +<head> +<link rel="stylesheet" type="text/css" href="//fonts.googleapis.com/css?family=Droid+Sans" /> +<style> +body { +	background-image: url("bg.png"); +	background-repeat: no-repeat; +	font-family: 'Droid Sans'; +	font-size: 30px; +	margin: 0 0 0 0; +} + +div { +	//border:1px solid red; +	border: none; +} + +#container { +	width: 1079px; +	height: 1920px; +} + +#logo-constraint { +	width: 854px; +	height: 250px; +} + +#frame { +	width: 854px; +	height: 680px; +	border: none; +} + +#header { +	text-align: center; +} + +#content { +	width: 855px; +} +</style> +</head> +<body> +	<div id="container"> +		<div id="logo-constraint"></div> +		 +		<div id="content"> +			<h1 id="header">Social Networks</h1> +			<iframe id="frame" src="http://spock.tg16.gathering.org:8000/en-US/account/insecurelogin?username=secret&password=REMOVED&return_to=/app/thegathering/tg1601social_html"></iframe> +		</div> + +		<div id="content"> +			<h1 id="header">Games</h1> +			<iframe id="frame" src="http://spock.tg16.gathering.org:8000/en-US/account/insecurelogin?username=secret&password=REMOVED&return_to=/app/thegathering/tg1602games_html"></iframe> +		</div> +	</div> +<body> +</html> diff --git a/examples/tg16/infoscreens/display2.html b/examples/tg16/infoscreens/display2.html new file mode 100644 index 0000000..aac5617 --- /dev/null +++ b/examples/tg16/infoscreens/display2.html @@ -0,0 +1,58 @@ +<html> +<head> +<link rel="stylesheet" type="text/css" href="//fonts.googleapis.com/css?family=Droid+Sans" /> +<style> +body { +	background-image: url("bg.png"); +	background-repeat: no-repeat; +	font-family: 'Droid Sans'; +	font-size: 30px; +	margin: 0 0 0 0; +} + +div { +	//border:1px solid red; +	border: none; +} + +#container { +	width: 1079px; +	height: 1920px; +} + +#logo-constraint { +	width: 854px; +	height: 250px; +} + +#frame { +	width: 854px; +	height: 680px; +	border: none; +} + +#header { +	text-align: center; +} + +#content { +	width: 855px; +} +</style> +</head> +<body> +	<div id="container"> +		<div id="logo-constraint"></div> +		 +		<div id="content"> +			<h1 id="header">Gaming Platform</h1> +			<iframe id="frame" src="http://spock.tg16.gathering.org:8000/en-US/account/insecurelogin?username=secret&password=REMOVED&return_to=/app/thegathering/tg1603progom_html"></iframe> +		</div> + +		<div id="content"> +			<h1 id="header">Web Browsers</h1> +			<iframe id="frame" src="http://spock.tg16.gathering.org:8000/en-US/account/insecurelogin?username=secret&password=REMOVED&return_to=/app/thegathering/tg1604bowsers_html"></iframe> +		</div> +	</div> +<body> +</html> diff --git a/examples/tg16/letsencrypt-tg16.sh b/examples/tg16/letsencrypt-tg16.sh new file mode 100644 index 0000000..03510b4 --- /dev/null +++ b/examples/tg16/letsencrypt-tg16.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +   openssl req -new -sha256 -key /root/le/keys/domain.key -subj "/" -reqexts SAN -config <(cat /etc/ssl/openssl.cnf <(printf "[SAN]\nsubjectAltName=DNS:yoda.tg16.gathering.org,DNS:stream.tg16.gathering.org,DNS:streams.tg16.gathering.org,DNS:webcam.tg16.gathering.org,DNS:webcams.tg16.gathering.org,DNS:nms.tg16.gathering.org,DNS:nms-public.tg16.gathering.org,DNS:stats.tg16.gathering.org,DNS:nms-api.tg16.gathering.org")) > /root/le/csrs/yoda.csr +   python /root/le/acme-tiny/acme_tiny.py --account-key /root/le/keys/account.key --csr /root/le/csrs/yoda.csr --acme-dir /var/www/html/.well-known/acme-challenge > /root/le/certs/yoda.crt +   if [ $? -ne 0 ]; then +   echo "Client exited with error, not overwriting cert" +   else +   cp /root/le/certs/yoda.crt /root/le/prodcerts/yoda.prod.crt +   fi + +curl https://letsencrypt.org/certs/lets-encrypt-x1-cross-signed.pem > /root/le/letsencrypt.ca-bundle.temp +if [ $? -ne 0 ]; then +echo "Client exited with error, not overwriting cert" +else +mv /root/le/letsencrypt.ca-bundle.temp /root/le/letsencrypt.ca-bundle +fi diff --git a/examples/tg16/munin/dhcp_usage b/examples/tg16/munin/dhcp_usage new file mode 100644 index 0000000..f8d29a5 --- /dev/null +++ b/examples/tg16/munin/dhcp_usage @@ -0,0 +1,80 @@ +#!/usr/bin/env perl + +use strict; +use warnings; +use POSIX; + +my $dhcpd_cmd="/usr/local/bin/dhcpd-pools"; +my $dhcpd_lf="/var/lib/dhcp/dhcpd.leases"; +my $dhcpd_cf="/etc/dhcp/dhcpd.conf"; + +my @output = `$dhcpd_cmd -c $dhcpd_cf -l $dhcpd_lf`; + +my $line; +my $subnet; +my $subnet2; + +for $line (@output) { + +  next if ($line =~ /^(shared net name|Ranges|name|Shared networks|Sum of all)/) or (length $line <=  1); + +    if ($line =~ /([\d]+\.[\d]+\.[\d]+\.[\d]+)\s+\-\s+([\d]+\.[\d]+\.[\d]+\.[\d]+)\s+([\d]+)\s+([\d]+)\s+([\d]+\.[\d]+)/) { + +      my $first_ip=$1; +      my $last_ip=$2; +      my $max=$3; +      my $current=$4; +      my $percent=ceil($5); +       +      my $octet; +      my @octets; +	 +	my $octet_count=0; +        for $octet (@octets=(split('\.',$first_ip))) { +	  if ($octet_count == 3) { +	     $octet_count=0; +	     $subnet = $first_ip; +	     substr($subnet,-length($octet)) = ($octet-4);      +	     $subnet =~ s/\./_/g; +		 +	       if (defined $ARGV[0] && $ARGV[0] eq "config") { +        	  print_config($subnet); +	       } else { +		print "dhcp_pool_${subnet}.value $percent\n"; +	     } +         +	 } + +	$octet_count++;   +        +	} + +   } + +} + +sub print_config { + +my $graph_name; + +$graph_name = shift; + +print <<EOF; +graph_args --upper-limit 100 -l 0 +graph_title DHCP IPv4 Pools Status +graph_vlabel % +graph_category DHCP +dhcp_pool_${graph_name}.label $graph_name +EOF + +} + +# print_config; + +#shared net name     first ip           last ip            max   cur    percent  touch   t+c  t+c perc +# All networks        88.92.0.4        - 88.92.0.62          59    26     44.068      2    28    47.458 + +#} + + + diff --git a/examples/tg16/munin/dhcp_usage_ipv6 b/examples/tg16/munin/dhcp_usage_ipv6 new file mode 100644 index 0000000..920650d --- /dev/null +++ b/examples/tg16/munin/dhcp_usage_ipv6 @@ -0,0 +1,85 @@ +#!/usr/bin/env perl + +use strict; +use warnings; +use POSIX; + +my $dhcpd_cmd="/usr/local/bin/dhcpd-pools"; +my $dhcpd_lf="/var/lib/dhcp/dhcpd6.leases"; +my $dhcpd_cf="/etc/dhcp/dhcpd6.conf"; + +my @output = `$dhcpd_cmd -c $dhcpd_cf -l $dhcpd_lf`; + +my $line; +my $subnet; + +for $line (@output) { + +#All networks        2a06:5840:65::1000                      - 2a06:5840:65::9999                      35226    25      0.071      1    26     0.074 +#All networks        2a06:5840:66::1000                      - 2a06:5840:66::9999                      35226    44      0.125      0    44     0.125 + + +  next if ($line =~ /^(shared net name|Ranges|name|Shared networks|Sum of all)/) or (length $line <=  1); + +    if ($line =~ /([a-zA-Z0-9]+\:[a-zA-Z0-9]+\:[a-zA-Z0-9]+\::[a-zA-Z0-9]+)\s+\-\s([a-zA-Z0-9]+\:[a-zA-Z0-9]+\:[a-zA-Z0-9]+\::[a-zA-Z0-9]+)\s+([\d]+)\s+([\d]+)\s+([\d]+\.[\d]+)/) { + +      my $first_ip=$1; +      my $last_ip=$2; +      my $max=$3; +      my $current=$4; +      my $percent=ceil($5);      + +      my $octet; +      my @octets; + +	print "IP: $percent\n"; +	 +	my $octet_count=0; +        for $octet (@octets=(split('\::',$first_ip))) { +	  if ($octet_count == 2) { +	     $octet_count=0; +	     $subnet = $first_ip; +	     substr($subnet,-length($octet)) = ($octet-4);      +	     $subnet =~ s/\./_/g; +		 +	       if (defined $ARGV[0] && $ARGV[0] eq "config") { +        	  print_config($subnet); +	       } else { +		print "dhcp_pool_${subnet}.value $percent\n"; +	     } +         +	 } + +	$octet_count++;   +        +	} + +   } + +} + +sub print_config { + +my $graph_name; + +$graph_name = shift; + +print <<EOF; +graph_args --upper-limit 100 -l 0 +graph_title DHCP IPv4 Pools Status +graph_vlabel % +graph_category DHCP +dhcp_pool_${graph_name}.label $graph_name +EOF + +} + +# print_config; + +#shared net name     first ip           last ip            max   cur    percent  touch   t+c  t+c perc +# All networks        88.92.0.4        - 88.92.0.62          59    26     44.068      2    28    47.458 + +#} + + + diff --git a/examples/tg16/munin/dhcp_usage_total b/examples/tg16/munin/dhcp_usage_total new file mode 100644 index 0000000..6abc9de --- /dev/null +++ b/examples/tg16/munin/dhcp_usage_total @@ -0,0 +1,78 @@ +#!/usr/bin/env perl + +use strict; +use warnings; +use POSIX; + +my $dhcpd_cmd="/usr/local/bin/dhcpd-pools"; +my $dhcpd_lf="/var/lib/dhcp/dhcpd.leases"; +my $dhcpd_cf="/etc/dhcp/dhcpd.conf"; + +my @output = `$dhcpd_cmd -c $dhcpd_cf -l $dhcpd_lf`; + +my $line; +my $max; +my $current; +my $percent; + +#Sum of all ranges: +#name                   max   cur     percent  touch    t+c  t+c perc +#All networks         22776  6348     27.871    3973  10321    45.315 + + +my $count=0; + +for $line (@output) { + +$count=1 if ($line =~ /^Sum of all ranges:/); + +if ($count >= 1 and $count <= 3) { + +   #print "DEBUG: $line\n"; + +  if ($line =~ /\s+([\d]+)\s+([\d]+)\s+([\d]+\.[\d]+)/) { +         $max=($1-$2); +         $current=$2; +         $percent=ceil($3); +      +	       if (defined $ARGV[0] && $ARGV[0] eq "config") { +        	  print_config(); +	       } else { +		print "dhcp_lease_total_current.value $current\n"; +		print "dhcp_lease_total_current_max.value $max\n"; +	     } +         +	 } +$count++; +	} + +} + +sub print_config { + +print <<EOF; +graph_title DHCP Total leases +graph_vlabel Total leases +graph_category DHCP +dhcp_lease_total_current.label Currently used IPv4 Leases +dhcp_lease_total_current.min 0 +dhcp_lease_total_current.draw AREASTACK +dhcp_lease_total_current_max.label IPv4 leases +dhcp_lease_total_current_max.draw  AREASTACK +dhcp_lease_total_current_max.label Total available IPv4 Leases  +EOF + +} + +# print_config; + +#shared net name     first ip           last ip            max   cur    percent  touch   t+c  t+c perc +# All networks        88.92.0.4        - 88.92.0.62          59    26     44.068      2    28    47.458 + +#} + +# +# dhcp_lease_total_current_max.colour #ff0000 +# dhcp_lease_total_current_max.label Totalt IPv4 Leases +# dhcp_lease_total_current.colour #ff7000 +# pts.draw AREASTACK diff --git a/examples/tg16/munin/dhcp_usage_total_ipv6 b/examples/tg16/munin/dhcp_usage_total_ipv6 new file mode 100644 index 0000000..91e47fc --- /dev/null +++ b/examples/tg16/munin/dhcp_usage_total_ipv6 @@ -0,0 +1,74 @@ +#!/usr/bin/env perl + +use strict; +use warnings; +use POSIX; + +my $dhcpd_cmd="/usr/local/bin/dhcpd-pools"; +my $dhcpd_lf="/var/lib/dhcp/dhcpd6.leases"; +my $dhcpd_cf="/etc/dhcp/dhcpd6.conf"; + +my @output = `$dhcpd_cmd -c $dhcpd_cf -l $dhcpd_lf`; + +my $line; +my $max; +my $current; +my $percent; + +#Sum of all ranges: +#name                   max   cur     percent  touch    t+c  t+c perc +#All networks         22776  6348     27.871    3973  10321    45.315 + + +my $count=0; + +for $line (@output) { + +$count=1 if ($line =~ /^Sum of all ranges:/); + +if ($count >= 1 and $count <= 3) { + +   #print "DEBUG: $line\n"; + +  if ($line =~ /\s+([\d]+)\s+([\d]+)\s+([\d]+\.[\d]+)/) { +         $max=($1-$2); +         $current=$2; +         $percent=ceil($3); +      +	       if (defined $ARGV[0] && $ARGV[0] eq "config") { +        	  print_config(); +	       } else { +		print "dhcp_lease_total_current.value $current\n"; +	     } +         +	 } +$count++; +	} + +} + +sub print_config { + +print <<EOF; +graph_title DHCP Total leases +graph_vlabel Total leases +graph_category DHCP +dhcp_lease_total_current.label Currently used IPv6 Leases +dhcp_lease_total_current.min 0 +dhcp_lease_total_current.draw AREASTACK +EOF + +} + +# print_config; + +#shared net name     first ip           last ip            max   cur    percent  touch   t+c  t+c perc +# All networks        88.92.0.4        - 88.92.0.62          59    26     44.068      2    28    47.458 + +#} + +# +# dhcp_lease_total_current_max.colour #ff0000 +# dhcp_lease_total_current_max.label Totalt IPv4 Leases +# dhcp_lease_total_current.colour #ff7000 +# pts.draw AREASTACK diff --git a/examples/tg16/netlist.txt b/examples/tg16/netlist.txt new file mode 100644 index 0000000..0ef311c --- /dev/null +++ b/examples/tg16/netlist.txt @@ -0,0 +1,193 @@ +# Manual networks +185.110.150.0/25 2a06:5841:150a::/64 noc +185.110.151.0/27 2a06:5841:151a::/64 tech-wlan + + + + +88.92.59.0/24 2a06:5840:59::/64 logistikk +88.92.60.0/24 2a06:5840:60::/64 event +88.92.61.0/24 2a06:5840:61::/64 creativia +88.92.62.0/24 2a06:5840:62::/64 event +88.92.63.0/24 2a06:5840:63::/64 info +88.92.64.0/24 2a06:5840:64::/64 north +88.92.65.0/24 2a06:5840:65::/64 fugleberget +88.92.66.0/24 2a06:5840:66::/64 crew +88.92.67.0/24 2a06:5840:67::/64 stage +88.92.68.0/24 2a06:5840:68::/64 foh +88.92.69.0/24 2a06:5840:69::/64 innsjekk +88.92.70.0/24 2a06:5840:70::/64 resepsjon +88.92.71.0/24 2a06:5840:71::/64 medic +88.92.72.0/24 2a06:5840:72::/64 sponsor +88.92.73.0/24 2a06:5840:73::/64 presse +88.92.74.0/24 2a06:5840:74::/64 security +88.92.75.0/24 2a06:5840:75::/64 security2 +88.92.76.0/24 2a06:5840:76::/64 game +88.92.77.0/24 2a06:5840:77::/64 auditorium +88.92.78.0/24 2a06:5840:78::/64 gamestage +88.92.79.0/24 2a06:5840:79::/64 hon +88.92.81.0/26 2a06:5840:81a::/64 highlights +88.92.93.0/24 2a06:5840:93::/64 santander-temp +88.92.95.0/25 2a06:5840:95a::/64 deltaker-srv + + +88.92.96.0/19 2a06:5840:96::/64 wlan +88.92.53.0/29 2a06:5840:530::/64 ap-stand +88.92.51.0/26 2a06:5840:51a::/64 ap-distro0 +88.92.51.64/26 2a06:5840:51b::/64 ap-distro1 +88.92.51.128/26 2a06:5840:51c::/64 ap-distro2 +88.92.51.192/26 2a06:5840:51d::/64 ap-distro3 +88.92.52.0/26 2a06:5840:52a::/64 ap-distro4 +88.92.52.64/26 2a06:5840:52b::/64 ap-distro5 +88.92.52.128/26 2a06:5840:52c::/64 ap-distro6 +88.92.52.192/26 2a06:5840:52d::/64 ap-distro7 + +88.92.41.64/26 2a06:5840:41b::/64 flankenord +88.92.41.128/26 2a06:5840:41c::/64 flankesor +88.92.41.192/26 2a06:5840:41d::/64 streamer1 + + +88.92.40.0/26 2a06:5840:40a::/64 creativia1 +88.92.40.64/26 2a06:5840:40b::/64 creativia2 +88.92.40.128/26 2a06:5840:40c::/64 creativia3 +88.92.40.192/26 2a06:5840:40d::/64 creativia4  +88.92.41.0/26 2a06:5840:41a::/64 creativia5 +88.92.42.64/26 2a06:5840:42b::/64 creativia6 +88.92.42.128/26	2a06:5840:42c::/64 creativia7 +88.92.42.192/26 2a06:5840:42d::/64 creativia-village +88.92.53.64/26 2a06:5840:53b::/64 ap-creativia +88.92.43.0/26 2a06:5840:43a::/64 creativiasw1 + + +# From switches.txt +88.92.0.0/26 2a06:5840:0a::/64 e1-3 +88.92.0.64/26 2a06:5840:0b::/64 e1-4 +88.92.0.128/26 2a06:5840:0c::/64 e3-3 +88.92.0.192/26 2a06:5840:0d::/64 e3-4 +88.92.1.0/26 2a06:5840:1a::/64 e5-2 +88.92.1.64/26 2a06:5840:1b::/64 e5-3 +88.92.1.128/26 2a06:5840:1c::/64 e5-4 +88.92.1.192/26 2a06:5840:1d::/64 e7-1 +88.92.2.0/26 2a06:5840:2a::/64 e7-2 +88.92.2.64/26 2a06:5840:2b::/64 e7-3 +88.92.2.128/26 2a06:5840:2c::/64 e7-4 +88.92.2.192/26 2a06:5840:2d::/64 e9-1 +88.92.3.0/26 2a06:5840:3a::/64 e9-2 +88.92.3.64/26 2a06:5840:3b::/64 e9-3 +88.92.3.128/26 2a06:5840:3c::/64 e9-4 +88.92.3.192/26 2a06:5840:3d::/64 e11-1 +88.92.4.0/26 2a06:5840:4a::/64 e11-2 +88.92.4.64/26 2a06:5840:4b::/64 e11-3 +88.92.4.128/26 2a06:5840:4c::/64 e11-4 +88.92.4.192/26 2a06:5840:4d::/64 e13-1 +88.92.5.0/26 2a06:5840:5a::/64 e13-2 +88.92.5.64/26 2a06:5840:5b::/64 e13-3 +88.92.5.128/26 2a06:5840:5c::/64 e13-4 +88.92.5.192/26 2a06:5840:5d::/64 e15-1 +88.92.6.0/26 2a06:5840:6a::/64 e15-2 +88.92.6.64/26 2a06:5840:6b::/64 e15-3 +88.92.6.128/26 2a06:5840:6c::/64 e15-4 +88.92.6.192/26 2a06:5840:6d::/64 e17-1 +88.92.7.0/26 2a06:5840:7a::/64 e17-2 +88.92.7.64/26 2a06:5840:7b::/64 e17-3 +88.92.7.128/26 2a06:5840:7c::/64 e17-4 +88.92.7.192/26 2a06:5840:7d::/64 e19-1 +88.92.8.0/26 2a06:5840:8a::/64 e19-2 +88.92.8.64/26 2a06:5840:8b::/64 e19-3 +88.92.8.128/26 2a06:5840:8c::/64 e19-4 +88.92.8.192/26 2a06:5840:8d::/64 e21-1 +88.92.9.0/26 2a06:5840:9a::/64 e21-2 +88.92.9.64/26 2a06:5840:9b::/64 e21-3 +88.92.9.128/26 2a06:5840:9c::/64 e21-4 +88.92.9.192/26 2a06:5840:9d::/64 e23-1 +88.92.10.0/26 2a06:5840:10a::/64 e23-2 +88.92.10.64/26 2a06:5840:10b::/64 e23-3 +88.92.10.128/26 2a06:5840:10c::/64 e23-4 +88.92.10.192/26 2a06:5840:10d::/64 e25-1 +88.92.11.0/26 2a06:5840:11a::/64 e25-2 +88.92.11.64/26 2a06:5840:11b::/64 e27-1 +88.92.11.128/26 2a06:5840:11c::/64 e27-2 +88.92.11.192/26 2a06:5840:11d::/64 e29-1 +88.92.12.0/26 2a06:5840:12a::/64 e29-2 +88.92.12.64/26 2a06:5840:12b::/64 e31-1 +88.92.12.128/26 2a06:5840:12c::/64 e31-2 +88.92.12.192/26 2a06:5840:12d::/64 e33-1 +88.92.13.0/26 2a06:5840:13a::/64 e33-2 +88.92.13.64/26 2a06:5840:13b::/64 e35-1 +88.92.13.128/26 2a06:5840:13c::/64 e35-2 +88.92.13.192/26 2a06:5840:13d::/64 e37-1 +88.92.14.0/26 2a06:5840:14a::/64 e37-2 +88.92.14.64/26 2a06:5840:14b::/64 e39-1 +88.92.14.128/26 2a06:5840:14c::/64 e39-2 +88.92.14.192/26 2a06:5840:14d::/64 e41-1 +88.92.15.0/26 2a06:5840:15a::/64 e41-2 +88.92.15.64/26 2a06:5840:15b::/64 e41-3 +88.92.15.128/26 2a06:5840:15c::/64 e41-4 +88.92.15.192/26 2a06:5840:15d::/64 e43-1 +88.92.16.0/26 2a06:5840:16a::/64 e43-2 +88.92.16.64/26 2a06:5840:16b::/64 e43-3 +88.92.16.128/26 2a06:5840:16c::/64 e43-4 +88.92.16.192/26 2a06:5840:16d::/64 e45-1 +88.92.17.0/26 2a06:5840:17a::/64 e45-2 +88.92.17.64/26 2a06:5840:17b::/64 e45-3 +88.92.17.128/26 2a06:5840:17c::/64 e45-4 +88.92.17.192/26 2a06:5840:17d::/64 e47-1 +88.92.18.0/26 2a06:5840:18a::/64 e47-2 +88.92.18.64/26 2a06:5840:18b::/64 e47-3 +88.92.18.128/26 2a06:5840:18c::/64 e47-4 +88.92.18.192/26 2a06:5840:18d::/64 e49-1 +88.92.19.0/26 2a06:5840:19a::/64 e49-2 +88.92.19.64/26 2a06:5840:19b::/64 e49-3 +88.92.19.128/26 2a06:5840:19c::/64 e49-4 +88.92.19.192/26 2a06:5840:19d::/64 e51-1 +88.92.20.0/26 2a06:5840:20a::/64 e51-2 +88.92.20.64/26 2a06:5840:20b::/64 e51-3 +88.92.20.128/26 2a06:5840:20c::/64 e51-4 +88.92.20.192/26 2a06:5840:20d::/64 e53-1 +88.92.21.0/26 2a06:5840:21a::/64 e53-2 +88.92.21.64/26 2a06:5840:21b::/64 e53-3 +88.92.21.128/26 2a06:5840:21c::/64 e53-4 +88.92.21.192/26 2a06:5840:21d::/64 e55-1 +88.92.22.0/26 2a06:5840:22a::/64 e55-2 +88.92.22.64/26 2a06:5840:22b::/64 e55-3 +88.92.22.128/26 2a06:5840:22c::/64 e55-4 +88.92.22.192/26 2a06:5840:22d::/64 e57-1 +88.92.23.0/26 2a06:5840:23a::/64 e57-2 +88.92.23.64/26 2a06:5840:23b::/64 e57-3 +88.92.23.128/26 2a06:5840:23c::/64 e57-4 +88.92.23.192/26 2a06:5840:23d::/64 e59-1 +88.92.24.0/26 2a06:5840:24a::/64 e59-2 +88.92.24.64/26 2a06:5840:24b::/64 e59-3 +88.92.24.128/26 2a06:5840:24c::/64 e59-4 +88.92.24.192/26 2a06:5840:24d::/64 e61-1 +88.92.25.0/26 2a06:5840:25a::/64 e61-2 +88.92.25.64/26 2a06:5840:25b::/64 e61-3 +88.92.25.128/26 2a06:5840:25c::/64 e61-4 +88.92.25.192/26 2a06:5840:25d::/64 e63-1 +88.92.26.0/26 2a06:5840:26a::/64 e63-2 +88.92.26.64/26 2a06:5840:26b::/64 e63-3 +88.92.26.128/26 2a06:5840:26c::/64 e63-4 +88.92.26.192/26 2a06:5840:26d::/64 e65-1 +88.92.27.0/26 2a06:5840:27a::/64 e65-2 +88.92.27.64/26 2a06:5840:27b::/64 e65-3 +88.92.27.128/26 2a06:5840:27c::/64 e65-4 +88.92.27.192/26 2a06:5840:27d::/64 e67-1 +88.92.28.0/26 2a06:5840:28a::/64 e67-2 +88.92.28.64/26 2a06:5840:28b::/64 e67-3 +88.92.28.128/26 2a06:5840:28c::/64 e67-4 +88.92.28.192/26 2a06:5840:28d::/64 e69-1 +88.92.29.0/26 2a06:5840:29a::/64 e69-2 +88.92.29.64/26 2a06:5840:29b::/64 e71-1 +88.92.29.128/26 2a06:5840:29c::/64 e71-2 +88.92.29.192/26 2a06:5840:29d::/64 e73-1 +88.92.30.0/26 2a06:5840:30a::/64 e73-2 +88.92.30.64/26 2a06:5840:30b::/64 e75-1 +88.92.30.128/26 2a06:5840:30c::/64 e75-2 +88.92.30.192/26 2a06:5840:30d::/64 e77-1 +88.92.31.0/26 2a06:5840:31a::/64 e77-2 +88.92.31.64/26 2a06:5840:31b::/64 e79-1 +88.92.31.128/26 2a06:5840:31c::/64 e79-2 +88.92.31.192/26 2a06:5840:31d::/64 e81-1 +88.92.32.0/26 2a06:5840:32a::/64 e81-2 +88.92.32.64/26 2a06:5840:32b::/64 e83-2 +88.92.32.128/26 2a06:5840:32c::/64 e85-2 diff --git a/examples/tg16/patchlist.txt b/examples/tg16/patchlist.txt new file mode 100644 index 0000000..5b460b5 --- /dev/null +++ b/examples/tg16/patchlist.txt @@ -0,0 +1,131 @@ +e1-3 distro0 ge-0/0/0 ge-1/0/0 ge-2/0/0 +e1-4 distro0 ge-0/0/1 ge-1/0/1 ge-2/0/1 +e3-3 distro0 ge-0/0/2 ge-1/0/2 ge-2/0/2 +e3-4 distro0 ge-0/0/3 ge-1/0/3 ge-2/0/3 +e5-2 distro1 ge-0/0/0 ge-1/0/0 ge-2/0/0 +e5-3 distro0 ge-0/0/4 ge-1/0/4 ge-2/0/4 +e5-4 distro0 ge-0/0/5 ge-1/0/5 ge-2/0/5 +e7-1 distro1 ge-0/0/1 ge-1/0/1 ge-2/0/1 +e7-2 distro1 ge-0/0/2 ge-1/0/2 ge-2/0/2 +e7-3 distro0 ge-0/0/6 ge-1/0/6 ge-2/0/6 +e7-4 distro0 ge-0/0/7 ge-1/0/7 ge-2/0/7 +e9-1 distro1 ge-0/0/3 ge-1/0/3 ge-2/0/3 +e9-2 distro1 ge-0/0/4 ge-1/0/4 ge-2/0/4 +e9-3 distro0 ge-0/0/8 ge-1/0/8 ge-2/0/8 +e9-4 distro0 ge-0/0/9 ge-1/0/9 ge-2/0/9 +e11-1 distro1 ge-0/0/5 ge-1/0/5 ge-2/0/5 +e11-2 distro1 ge-0/0/6 ge-1/0/6 ge-2/0/6 +e11-3 distro0 ge-0/0/10 ge-1/0/10 ge-2/0/10 +e11-4 distro0 ge-0/0/11 ge-1/0/11 ge-2/0/11 +e13-1 distro1 ge-0/0/7 ge-1/0/7 ge-2/0/7 +e13-2 distro1 ge-0/0/8 ge-1/0/8 ge-2/0/8 +e13-3 distro2 ge-0/0/0 ge-1/0/0 ge-2/0/0 +e13-4 distro2 ge-0/0/1 ge-1/0/1 ge-2/0/1 +e15-1 distro1 ge-0/0/9 ge-1/0/9 ge-2/0/9 +e15-2 distro1 ge-0/0/10 ge-1/0/10 ge-2/0/10 +e15-3 distro2 ge-0/0/2 ge-1/0/2 ge-2/0/2 +e15-4 distro2 ge-0/0/3 ge-1/0/3 ge-2/0/3 +e17-1 distro1 ge-0/0/11 ge-1/0/11 ge-2/0/11 +e17-2 distro1 ge-0/0/12 ge-1/0/12 ge-2/0/12 +e17-3 distro2 ge-0/0/4 ge-1/0/4 ge-2/0/4 +e17-4 distro2 ge-0/0/5 ge-1/0/5 ge-2/0/5 +e19-1 distro1 ge-0/0/13 ge-1/0/13 ge-2/0/13 +e19-2 distro1 ge-0/0/14 ge-1/0/14 ge-2/0/14 +e19-3 distro2 ge-0/0/6 ge-1/0/6 ge-2/0/6 +e19-4 distro2 ge-0/0/7 ge-1/0/7 ge-2/0/7 +e21-1 distro1 ge-0/0/15 ge-1/0/15 ge-2/0/15 +e21-2 distro1 ge-0/0/16 ge-1/0/16 ge-2/0/16 +e21-3 distro2 ge-0/0/8 ge-1/0/8 ge-2/0/8 +e21-4 distro2 ge-0/0/9 ge-1/0/9 ge-2/0/9 +e23-1 distro1 ge-0/0/17 ge-1/0/17 ge-2/0/17 +e23-2 distro1 ge-0/0/18 ge-1/0/18 ge-2/0/18 +e23-3 distro2 ge-0/0/10 ge-1/0/10 ge-2/0/10 +e23-4 distro2 ge-0/0/11 ge-1/0/11 ge-2/0/11 +e25-1 distro3 ge-0/0/0 ge-1/0/0 ge-2/0/0 +e25-2 distro3 ge-0/0/1 ge-1/0/1 ge-2/0/1 +e27-1 distro3 ge-0/0/2 ge-1/0/2 ge-2/0/2 +e27-2 distro3 ge-0/0/3 ge-1/0/3 ge-2/0/3 +e29-1 distro3 ge-0/0/4 ge-1/0/4 ge-2/0/4 +e29-2 distro3 ge-0/0/5 ge-1/0/5 ge-2/0/5 +e31-1 distro3 ge-0/0/6 ge-1/0/6 ge-2/0/6 +e31-2 distro3 ge-0/0/7 ge-1/0/7 ge-2/0/7 +e33-1 distro3 ge-0/0/8 ge-1/0/8 ge-2/0/8 +e33-2 distro3 ge-0/0/9 ge-1/0/9 ge-2/0/9 +e35-1 distro3 ge-0/0/10 ge-1/0/10 ge-2/0/10 +e35-2 distro3 ge-0/0/11 ge-1/0/11 ge-2/0/11 +e37-1 distro3 ge-0/0/12 ge-1/0/12 ge-2/0/12 +e37-2 distro3 ge-0/0/13 ge-1/0/13 ge-2/0/13 +e39-1 distro3 ge-0/0/14 ge-1/0/14 ge-2/0/14 +e39-2 distro3 ge-0/0/15 ge-1/0/15 ge-2/0/15 +e41-1 distro4 ge-0/0/0 ge-1/0/0 ge-2/0/0 +e41-2 distro4 ge-0/0/1 ge-1/0/1 ge-2/0/1 +e41-3 distro5 ge-0/0/0 ge-1/0/0 ge-2/0/0 +e41-4 distro5 ge-0/0/1 ge-1/0/1 ge-2/0/1 +e43-1 distro4 ge-0/0/2 ge-1/0/2 ge-2/0/2 +e43-2 distro4 ge-0/0/3 ge-1/0/3 ge-2/0/3 +e43-3 distro5 ge-0/0/2 ge-1/0/2 ge-2/0/2 +e43-4 distro5 ge-0/0/3 ge-1/0/3 ge-2/0/3 +e45-1 distro4 ge-0/0/4 ge-1/0/4 ge-2/0/4 +e45-2 distro4 ge-0/0/5 ge-1/0/5 ge-2/0/5 +e45-3 distro5 ge-0/0/4 ge-1/0/4 ge-2/0/4 +e45-4 distro5 ge-0/0/5 ge-1/0/5 ge-2/0/5 +e47-1 distro4 ge-0/0/6 ge-1/0/6 ge-2/0/6 +e47-2 distro4 ge-0/0/7 ge-1/0/7 ge-2/0/7 +e47-3 distro5 ge-0/0/6 ge-1/0/6 ge-2/0/6 +e47-4 distro5 ge-0/0/7 ge-1/0/7 ge-2/0/7 +e49-1 distro4 ge-0/0/8 ge-1/0/8 ge-2/0/8 +e49-2 distro4 ge-0/0/9 ge-1/0/9 ge-2/0/9 +e49-3 distro5 ge-0/0/8 ge-1/0/8 ge-2/0/8 +e49-4 distro5 ge-0/0/9 ge-1/0/9 ge-2/0/9 +e51-1 distro4 ge-0/0/10 ge-1/0/10 ge-2/0/10 +e51-2 distro4 ge-0/0/11 ge-1/0/11 ge-2/0/11 +e51-3 distro5 ge-0/0/10 ge-1/0/10 ge-2/0/10 +e51-4 distro5 ge-0/0/11 ge-1/0/11 ge-2/0/11 +e53-1 distro4 ge-0/0/12 ge-1/0/12 ge-2/0/12 +e53-2 distro4 ge-0/0/13 ge-1/0/13 ge-2/0/13 +e53-3 distro5 ge-0/0/12 ge-1/0/12 ge-2/0/12 +e53-4 distro5 ge-0/0/13 ge-1/0/13 ge-2/0/13 +e55-1 distro4 ge-0/0/14 ge-1/0/14 ge-2/0/14 +e55-2 distro4 ge-0/0/15 ge-1/0/15 ge-2/0/15 +e55-3 distro5 ge-0/0/14 ge-1/0/14 ge-2/0/14 +e55-4 distro5 ge-0/0/15 ge-1/0/15 ge-2/0/15 +e57-1 distro4 ge-0/0/16 ge-1/0/16 ge-2/0/16 +e57-2 distro4 ge-0/0/17 ge-1/0/17 ge-2/0/17 +e57-3 distro5 ge-0/0/16 ge-1/0/16 ge-2/0/16 +e57-4 distro5 ge-0/0/17 ge-1/0/17 ge-2/0/17 +e59-1 distro7 ge-0/0/0 ge-1/0/0 ge-2/0/0 +e59-2 distro7 ge-0/0/1 ge-1/0/1 ge-2/0/1 +e59-3 distro6 ge-0/0/0 ge-1/0/0 ge-2/0/0 +e59-4 distro6 ge-0/0/1 ge-1/0/1 ge-2/0/1 +e61-1 distro7 ge-0/0/2 ge-1/0/2 ge-2/0/2 +e61-2 distro7 ge-0/0/3 ge-1/0/3 ge-2/0/3 +e61-3 distro6 ge-0/0/2 ge-1/0/2 ge-2/0/2 +e61-4 distro6 ge-0/0/3 ge-1/0/3 ge-2/0/3 +e63-1 distro7 ge-0/0/4 ge-1/0/4 ge-2/0/4 +e63-2 distro7 ge-0/0/5 ge-1/0/5 ge-2/0/5 +e63-3 distro6 ge-0/0/4 ge-1/0/4 ge-2/0/4 +e63-4 distro6 ge-0/0/5 ge-1/0/5 ge-2/0/5 +e65-1 distro7 ge-0/0/6 ge-1/0/6 ge-2/0/6 +e65-2 distro7 ge-0/0/7 ge-1/0/7 ge-2/0/7 +e65-3 distro6 ge-0/0/6 ge-1/0/6 ge-2/0/6 +e65-4 distro6 ge-0/0/7 ge-1/0/7 ge-2/0/7 +e67-1 distro7 ge-0/0/8 ge-1/0/8 ge-2/0/8 +e67-2 distro7 ge-0/0/9 ge-1/0/9 ge-2/0/9 +e67-3 distro6 ge-0/0/8 ge-1/0/8 ge-2/0/8 +e67-4 distro6 ge-0/0/9 ge-1/0/9 ge-2/0/9 +e69-1 distro7 ge-0/0/10 ge-1/0/10 ge-2/0/10 +e69-2 distro7 ge-0/0/11 ge-1/0/11 ge-2/0/11 +e71-1 distro7 ge-0/0/12 ge-1/0/12 ge-2/0/12 +e71-2 distro7 ge-0/0/13 ge-1/0/13 ge-2/0/13 +e73-1 distro7 ge-0/0/14 ge-1/0/14 ge-2/0/14 +e73-2 distro7 ge-0/0/15 ge-1/0/15 ge-2/0/15 +e75-1 distro7 ge-0/0/16 ge-1/0/16 ge-2/0/16 +e75-2 distro7 ge-0/0/17 ge-1/0/17 ge-2/0/17 +e77-1 distro7 ge-0/0/18 ge-1/0/18 ge-2/0/18 +e77-2 distro7 ge-0/0/19 ge-1/0/19 ge-2/0/19 +e79-1 distro7 ge-0/0/20 ge-1/0/20 ge-2/0/20 +e79-2 distro7 ge-0/0/21 ge-1/0/21 ge-2/0/21 +e81-1 distro7 ge-0/0/22 ge-1/0/22 ge-2/0/22 +e81-2 distro7 ge-0/0/23 ge-1/0/23 ge-2/0/23 +e83-2 distro7 ge-0/0/24 ge-1/0/24 ge-2/0/24 +e85-2 distro7 ge-0/0/25 ge-1/0/25 ge-2/0/25 diff --git a/examples/tg16/pxe/README.md b/examples/tg16/pxe/README.md new file mode 100644 index 0000000..61c6dd1 --- /dev/null +++ b/examples/tg16/pxe/README.md @@ -0,0 +1,4 @@ +# Copying + +The content of this directory is a pure copy-paste from our setup. +Copyrights/license for the respective owners might apply.
\ No newline at end of file diff --git a/examples/tg16/pxe/bootx64.efi b/examples/tg16/pxe/bootx64.efi Binary files differnew file mode 100644 index 0000000..07db00a --- /dev/null +++ b/examples/tg16/pxe/bootx64.efi diff --git a/examples/tg16/pxe/chain.c32 b/examples/tg16/pxe/chain.c32 Binary files differnew file mode 100644 index 0000000..cb1813b --- /dev/null +++ b/examples/tg16/pxe/chain.c32 diff --git a/examples/tg16/pxe/grub/fonts/unicode.pf2 b/examples/tg16/pxe/grub/fonts/unicode.pf2 Binary files differnew file mode 100644 index 0000000..166acde --- /dev/null +++ b/examples/tg16/pxe/grub/fonts/unicode.pf2 diff --git a/examples/tg16/pxe/grub/grub.cfg b/examples/tg16/pxe/grub/grub.cfg new file mode 100644 index 0000000..5ea85ba --- /dev/null +++ b/examples/tg16/pxe/grub/grub.cfg @@ -0,0 +1,67 @@ +set default="0" +set timeout=-1 + +if loadfont unicode ; then +  set gfxmode=auto +  set locale_dir=$prefix/locale +  set lang=en_US +fi +terminal_output gfxterm + +set menu_color_normal=white/black +set menu_color_highlight=black/light-gray +if background_color 44,0,30; then +  clear +fi + +function gfxmode { +        set gfxpayload="${1}" +        if [ "${1}" = "keep" ]; then +                set vt_handoff=vt.handoff=7 +        else +                set vt_handoff= +        fi +} + +set linux_gfx_mode=keep + +export linux_gfx_mode + +menuentry 'Ubuntu 14.04 amd64 uefi' { +        gfxmode $linux_gfx_mode +	linux /ubuntu/14.04/amd64/linux $vt_handoff quiet splash +        initrd /ubuntu/14.04/amd64/initrd.lz +} + +menuentry 'Debian testing amd uefi' { +	gfxmode $linux_gfx_mode +	linux /debian/jessie/amd64/linux $vt_handoff quiet splash +	initrd /debian/jessie/amd64/linux.gz +} + + +# Don't delete please, Rockj has fucked up his grub :D +menuentry 'Rockjs Debian GNU/Linux' --class debian --class gnu-linux --class gnu --class os { +        load_video +        insmod gzio +        insmod part_gpt +        insmod ext2 +        set root='(hd1,gpt2)' +        search --no-floppy --fs-uuid --set=root bc211b41-74ba-494b-a9b6-f890a0295262 +        echo    'Loading Linux 3.12.6 ...' +        linux   /vmlinuz-3.12.6 root=/dev/mapper/sdb4_crypt ro  quiet +        echo    'Loading initial ramdisk ...' +        initrd  /initrd.img-3.12.6 +} +menuentry 'Rockjs Debian (recovery mode)' --class debian --class gnu-linux --class gnu --class os { +        load_video +        insmod gzio +        insmod part_gpt +        insmod ext2 +        set root='(hd1,gpt2)' +        search --no-floppy --fs-uuid --set=root bc211b41-74ba-494b-a9b6-f890a0295262 +        echo    'Loading Linux 3.12.6 ...' +        linux   /vmlinuz-3.12.6 root=/dev/mapper/sdb4_crypt ro single  +        echo    'Loading initial ramdisk ...' +        initrd  /initrd.img-3.12.6 +} diff --git a/examples/tg16/pxe/grubx64.efi b/examples/tg16/pxe/grubx64.efi Binary files differnew file mode 100644 index 0000000..cbe1f5d --- /dev/null +++ b/examples/tg16/pxe/grubx64.efi diff --git a/examples/tg16/pxe/grubx64.efi.signed b/examples/tg16/pxe/grubx64.efi.signed Binary files differnew file mode 100644 index 0000000..30f3357 --- /dev/null +++ b/examples/tg16/pxe/grubx64.efi.signed diff --git a/examples/tg16/pxe/menu.c32 b/examples/tg16/pxe/menu.c32 Binary files differnew file mode 100644 index 0000000..4fa0a1c --- /dev/null +++ b/examples/tg16/pxe/menu.c32 diff --git a/examples/tg16/pxe/menus/arch.cfg b/examples/tg16/pxe/menus/arch.cfg new file mode 100644 index 0000000..c7d8dfb --- /dev/null +++ b/examples/tg16/pxe/menus/arch.cfg @@ -0,0 +1,23 @@ +# /var/lib/tftpboot/menus/debian.cfg +MENU INCLUDE menus/common.cfg +MENU TITLE Arch Linux Live + +LABEL mainmenu +        MENU LABEL ^R Return to Main Menu +        COM32 vesamenu.c32 +        APPEND ~ + +MENU SEPARATOR + +LABEL arch_live +        MENU LABEL ^1 Arch Linux Live (Netboot) +        KERNEL arch/boot/vmlinuz_x86_64 +        APPEND initrd=arch/boot/initramfs_x86_64.img archisobasedir=arch rw root=/dev/nfs nfsroot=185.110.148.2:/var/lib/tftpboot/arch/arch ip=dhcp keymap=no + +#APPEND boot=casper netboot=nfs nfsroot=151.216.253.3:/var/nfsroot/ubuntu/12.04.4/i386 initrd=ubuntu/12.04.4/i386/initrd.lz -- + + +MENU SEPARATOR + + +TIMEOUT 900 diff --git a/examples/tg16/pxe/menus/background-2013.png b/examples/tg16/pxe/menus/background-2013.png Binary files differnew file mode 100644 index 0000000..293e591 --- /dev/null +++ b/examples/tg16/pxe/menus/background-2013.png diff --git a/examples/tg16/pxe/menus/background-2014.png b/examples/tg16/pxe/menus/background-2014.png Binary files differnew file mode 100644 index 0000000..d7f6b74 --- /dev/null +++ b/examples/tg16/pxe/menus/background-2014.png diff --git a/examples/tg16/pxe/menus/background-2015.png b/examples/tg16/pxe/menus/background-2015.png Binary files differnew file mode 100644 index 0000000..ec71212 --- /dev/null +++ b/examples/tg16/pxe/menus/background-2015.png diff --git a/examples/tg16/pxe/menus/background-2016.png b/examples/tg16/pxe/menus/background-2016.png Binary files differnew file mode 100644 index 0000000..bd1aacb --- /dev/null +++ b/examples/tg16/pxe/menus/background-2016.png diff --git a/examples/tg16/pxe/menus/background.png b/examples/tg16/pxe/menus/background.png Binary files differnew file mode 100644 index 0000000..bd1aacb --- /dev/null +++ b/examples/tg16/pxe/menus/background.png diff --git a/examples/tg16/pxe/menus/common.cfg b/examples/tg16/pxe/menus/common.cfg new file mode 100644 index 0000000..938736b --- /dev/null +++ b/examples/tg16/pxe/menus/common.cfg @@ -0,0 +1,29 @@ +MENU BACKGROUND menus/background.png +ALLOWOPTIONS 1 +PROMPT 0 +MENU WIDTH 78 +MENU ROWS 14 +MENU TABMSGROW 20 +MENU CMDLINEROW 25 +MENU HELPMSGROW 23 +MENU MARGIN 17 +MENU VSHIFT 8 +MENU COLOR BORDER       37;40 #00000000 #00000000 none +MENU COLOR TITLE        37;40 #ff7000 #00000000 none + +MENU COLOR UNSEL        37;40 #0bbbe8 #00ffffff none +MENU COLOR HOTKEY       37;40 #ff6b0035 #00ffffff none + +MENU COLOR SEL          37;40 #363636 #991766ff none +MENU COLOR HOTSEL       37;40 #ff7000 #ffb1dbfa none + +MENU COLOR HELP         37;40 #fff9a11d #00ffffff none +MENU COLOR TIMEOUT_MSG  37;40 #fff9a11d #0faaaaaa none +MENU COLOR TIMEOUT      37;40 #fff9a11d #0faaaaff none + +MENU COLOR PWDBORDER	37;40 #ff7000 #00000000 none +MENU COLOR PWDHEADER	37;40 #0bbbe8 #00ffffff none	 +MENU COLOR PWDENTRY	37;40 #363636 #00000000 none + + +MENU SEPARATOR diff --git a/examples/tg16/pxe/menus/common.cfg.orig b/examples/tg16/pxe/menus/common.cfg.orig new file mode 100644 index 0000000..fc8cf75 --- /dev/null +++ b/examples/tg16/pxe/menus/common.cfg.orig @@ -0,0 +1,25 @@ +MENU BACKGROUND menus/background-2016.png +MENU RESOLUTION 600 480 +ALLOWOPTIONS 1 +PROMPT 0 +MENU WIDTH 78 +MENU ROWS 14 +MENU TABMSGROW 20 +MENU CMDLINEROW 25 +MENU HELPMSGROW 23 +MENU MARGIN 17 +MENU VSHIFT 8 +MENU COLOR BORDER       37;40 #00000000 #00000000 none +MENU COLOR TITLE        37;40 #ff6b0035 #00000000 none + +MENU COLOR UNSEL        37;40 #ffedeb2d #00ffffff none +MENU COLOR HOTKEY       37;40 #ff6b0035 #00ffffff none + +MENU COLOR SEL          37;40 #ffedeb2d #991766ff none +MENU COLOR HOTSEL       37;40 #ff6b0035 #ffb1dbfa none + +MENU COLOR HELP         37;40 #fff9a11d #00ffffff none +MENU COLOR TIMEOUT_MSG  37;40 #fff9a11d #0faaaaaa none +MENU COLOR TIMEOUT      37;40 #fff9a11d #0faaaaff none + +MENU SEPARATOR diff --git a/examples/tg16/pxe/menus/debian.cfg b/examples/tg16/pxe/menus/debian.cfg new file mode 100644 index 0000000..8745feb --- /dev/null +++ b/examples/tg16/pxe/menus/debian.cfg @@ -0,0 +1,44 @@ +# /var/lib/tftpboot/menus/debian.cfg +MENU INCLUDE menus/common.cfg +MENU TITLE Debian Installers + +LABEL mainmenu +        MENU LABEL ^R Return to Main Menu +        COM32 vesamenu.c32 +        APPEND ~ + +MENU SEPARATOR + +LABEL jessie_amd64_install +        MENU LABEL ^1 Debian Testing amd64 (Stretch) netinstall +        KERNEL debian/stretch/amd64/linux +        APPEND vga=normal initrd=debian/stretch/amd64/initrd.gz  -- + +LABEL jessie_i386_install +        MENU LABEL ^2 Debian Testing i386 (Stretch) netinstall +        KERNEL debian/stretch/i386/linux +        APPEND vga=normal initrd=debian/stretch/i386/initrd.gz  -- +MENU SEPARATOR + +LABEL wheezy_amd64_install +        MENU LABEL ^3 Debian Stable amd64 (Jessie) netinstall +        KERNEL debian/jessie/amd64/linux +        APPEND vga=normal initrd=debian/jessie/amd64/initrd.gz  -- + +LABEL wheezy_i386_install +        MENU LABEL ^4 Debian Stable i386 (Jessie) netinstall +        KERNEL debian/jessie/i386/linux +        APPEND vga=normal initrd=debian/jessie/i386/initrd.gz  -- + +LABEL wheezy_amd64_fw +        MENU LABEL ^5 Debian FW-added Stable amd64 (Jessie) netinstall +        KERNEL debian/jessie_fw/amd64/linux +        APPEND initrd=debian/jessie_fw/amd64/initrd.gz -- + +#APPEND boot=casper netboot=nfs nfsroot=151.216.253.3:/var/nfsroot/ubuntu/12.04.4/i386 initrd=ubuntu/12.04.4/i386/initrd.lz -- + + +MENU SEPARATOR + + +TIMEOUT 900 diff --git a/examples/tg16/pxe/menus/hannamontana.cfg b/examples/tg16/pxe/menus/hannamontana.cfg new file mode 100644 index 0000000..a9b3057 --- /dev/null +++ b/examples/tg16/pxe/menus/hannamontana.cfg @@ -0,0 +1,16 @@ +MENU INCLUDE menus/common.cfg +MENU TITLE Hanna Montana Linux :D + +LABEL mainmenu +        MENU LABEL ^R Return to Main Menu +        COM32 vesamenu.c32 +        APPEND ~ + +MENU SEPARATOR + +LABEL hannamontana +        MENU LABEL ^1 Hanna Montana LIVE boot +        KERNEL hannamontana/casper/vmlinuz +        APPEND root=/dev/nfs boot=casper netboot=nfs nfsroot=185.110.148.2:/var/lib/tftpboot/hannamontana/ initrd=hannamontana/casper/initrd.gz -- + +TIMEOUT 900 diff --git a/examples/tg16/pxe/menus/tools.cfg b/examples/tg16/pxe/menus/tools.cfg new file mode 100644 index 0000000..48a8757 --- /dev/null +++ b/examples/tg16/pxe/menus/tools.cfg @@ -0,0 +1,36 @@ +# /var/lib/tftpboot/menus/debian.cfg +MENU INCLUDE menus/common.cfg +MENU TITLE Tools + +LABEL mainmenu +        MENU LABEL ^R Return to Main Menu +        COM32 vesamenu.c32 +        APPEND ~ + +MENU SEPARATOR + +LABEL memtest +        MENU LABEL ^Memory test using Memtest86+ +        TEXT HELP +Run memory test using Memtest86+ +        ENDTEXT +        KERNEL tools/mt86plus + +LABEL hdt +	MENU LABEL ^HDT - Hardware Detection Tool +	TEXT HELP +Used to examine system devices, system information, diagnostics +	ENDTEXT +	COM32 tools/hdt_0_5_2.c32 +	APPEND pciids=tools/pci.ids + +LABEL ntpasswd +	MENU LABEL ^Offline NT Password Recovery ... +	MENU PASSWD windowslol +	TEXT HELP +Can be used to recover/clear Windows password. Password protected. +	ENDTEXT +	KERNEL tools/ntpasswd/vmlinuz +	INITRD tools/ntpasswd/initrd.cgz,tools/ntpasswd/scsi.cgz + +TIMEOUT 900 diff --git a/examples/tg16/pxe/menus/ubuntu.cfg b/examples/tg16/pxe/menus/ubuntu.cfg new file mode 100644 index 0000000..62307cd --- /dev/null +++ b/examples/tg16/pxe/menus/ubuntu.cfg @@ -0,0 +1,48 @@ +# /var/lib/tftpboot/menus/ubuntu.cfg +MENU INCLUDE menus/common.cfg +MENU TITLE Ubuntu Live boot + +LABEL mainmenu +        MENU LABEL ^R Return to Main Menu +        COM32 vesamenu.c32 +        APPEND ~ + +MENU SEPARATOR +LABEL ubuntulive_14_10_32 +        MENU LABEL ^1 Ubuntu 14.10(LTS) 32bit LIVE boot +        KERNEL ubuntu/14.10/i386/casper/vmlinuz +        APPEND root=/dev/nfs boot=casper netboot=nfs nfsroot=185.110.148.2:/var/lib/tftpboot/ubuntu/14.10/i386/ initrd=ubuntu/14.10/i386/casper/initrd.lz -- + +LABEL ubuntulive_14_10_64 +        MENU LABEL ^2 Ubuntu 14.10(LTS) 64bit LIVE boot +        KERNEL ubuntu/14.10/amd64/casper/vmlinuz.efi +        APPEND root=/dev/nfs boot=casper netboot=nfs nfsroot=185.110.148.2:/var/lib/tftpboot/ubuntu/14.10/amd64/ initrd=ubuntu/14.10/amd64/casper/initrd.lz -- +MENU SEPARATOR + +LABEL ubuntulive_15_10_32 +        MENU LABEL ^3 Ubuntu 15.10 32bit LIVE boot +        KERNEL ubuntu/15.10/i386/casper/vmlinuz +        APPEND root=/dev/nfs boot=casper netboot=nfs nfsroot=185.110.148.2:/var/lib/tftpboot/ubuntu/15.10/i386/ initrd=ubuntu/15.10/i386/casper/initrd.lz -- + +LABEL ubuntulive_15_10_64 +        MENU LABEL ^4 Ubuntu 15.10 64bit LIVE boot +        KERNEL ubuntu/15.10/amd64/casper/vmlinuz.efi +        APPEND root=/dev/nfs boot=casper netboot=nfs nfsroot=185.110.148.2:/var/lib/tftpboot/ubuntu/15.10/amd64/ initrd=ubuntu/15.10/amd64/casper/initrd.lz -- +MENU SEPARATOR + +#LABEL ubuntuserverlive32 +#        MENU LABEL ^3 Ubuntu Server 14.10 32bit LIVE boot +#        KERNEL ubuntu/server/15.10/i386/install/vmlinuz +#        APPEND root=/dev/nfs boot=casper netboot=nfs nfsroot=185.110.148.2:/var/lib/tftpboot/ubuntu/server/14.10/i386/ initrd=ubuntu/server/14.10/i386/install/initrd.gz -- + +#LABEL ubuntuserverlive64 +#        MENU LABEL ^4 Ubuntu Server 14.10 64bit LIVE boot +#        KERNEL ubuntu/server/14.10/amd64/install/vmlinuz +#        APPEND root=/dev/nfs boot=casper netboot=nfs nfsroot=185.110.148.2:/var/lib/tftpboot/ubuntu/server/14.10/amd64/ initrd=ubuntu/server/14.10/amd64/install/initrd.gz -- + +#LABEL xpangolin32live +#        MENU LABEL ^2 xubuntu 14.04.2 32bit LIVE boot +#        KERNEL ubuntu/12.04.4/i386/vmlinuz +#        APPEND boot=casper netboot=nfs nfsroot=151.216.253.3:/var/nfsroot/ubuntu/12.04.4/i386 initrd=ubuntu/12.04.4/i386/initrd.lz -- + +TIMEOUT 900 diff --git a/examples/tg16/pxe/menus/ubuntu_bak.cfg b/examples/tg16/pxe/menus/ubuntu_bak.cfg new file mode 100644 index 0000000..c533dbf --- /dev/null +++ b/examples/tg16/pxe/menus/ubuntu_bak.cfg @@ -0,0 +1,22 @@ +# /var/lib/tftpboot/menus/ubuntu.cfg +MENU INCLUDE menus/common.cfg +MENU TITLE Ubuntu Live boot + +LABEL mainmenu +        MENU LABEL ^R Return to Main Menu +        COM32 vesamenu.c32 +        APPEND ~ + +MENU SEPARATOR + +LABEL kalin32live +        MENU LABEL ^1 Ubuntu 14.10 32bit LIVE boot +        KERNEL ubuntu/14.10/casper/vmlinuz +        APPEND boot=casper root=/dev/nfs netboot=nfs nfsroot=185.110.148.2:/srv/nfsroot/ubuntu/14.10/casper initrd=ubuntu/14.10/casper/initrd.lz -- + +#LABEL xpangolin32live +#        MENU LABEL ^2 xubuntu 14.04.2 32bit LIVE boot +#        KERNEL ubuntu/12.04.4/i386/vmlinuz +#        APPEND boot=casper netboot=nfs nfsroot=151.216.253.3:/var/nfsroot/ubuntu/12.04.4/i386 initrd=ubuntu/12.04.4/i386/initrd.lz -- + +TIMEOUT 900 diff --git a/examples/tg16/pxe/pxelinux.0 b/examples/tg16/pxe/pxelinux.0 Binary files differnew file mode 100644 index 0000000..c763741 --- /dev/null +++ b/examples/tg16/pxe/pxelinux.0 diff --git a/examples/tg16/pxe/pxelinux.cfg/default b/examples/tg16/pxe/pxelinux.cfg/default new file mode 100644 index 0000000..733fe60 --- /dev/null +++ b/examples/tg16/pxe/pxelinux.cfg/default @@ -0,0 +1,49 @@ +# /var/lib/tftpboot/pxelinux.cfg/default +DEFAULT vesamenu.c32 +MENU INCLUDE menus/common.cfg +MENU TITLE The Gathering 2016 - SWITCHED ON + +LABEL boot_hd0 +        MENU LABEL Boot from first hard drive +        MENU DEFAULT +        TEXT HELP +Boots your system as normal from the first BIOS drive +        ENDTEXT +        COM32 chain.c32 +        APPEND hd0 + +MENU SEPARATOR  + +LABEL debian +        MENU LABEL ^1 Debian  +        TEXT HELP +Debian installers and live-boot options. +        ENDTEXT +        COM32 vesamenu.c32 +        APPEND menus/debian.cfg + +LABEL ubuntu +        MENU LABEL ^2 Ubuntu  +        TEXT HELP +Ubuntu installers and live-boot options. +        ENDTEXT +        COM32 vesamenu.c32 +        APPEND menus/ubuntu.cfg + +LABEL hannamontana +        MENU LABEL ^3 Hanna Montana +        COM32 vesamenu.c32 +        APPEND menus/hannamontana.cfg + +LABEL arch +        MENU LABEL ^4 Arch Linux +        COM32 vesamenu.c32 +        APPEND menus/arch.cfg + +LABEL tools +        MENU LABEL ^5 Tools +        COM32 vesamenu.c32 +        APPEND menus/tools.cfg + +ONTIMEOUT boot_hd0 +TIMEOUT 300 diff --git a/examples/tg16/pxe/tools/hdt.c32 b/examples/tg16/pxe/tools/hdt.c32 Binary files differnew file mode 100644 index 0000000..d358fc7 --- /dev/null +++ b/examples/tg16/pxe/tools/hdt.c32 diff --git a/examples/tg16/pxe/tools/hdt_0_5_2.c32 b/examples/tg16/pxe/tools/hdt_0_5_2.c32 Binary files differnew file mode 100644 index 0000000..85caa15 --- /dev/null +++ b/examples/tg16/pxe/tools/hdt_0_5_2.c32 diff --git a/examples/tg16/pxe/tools/memtest86+-5.01.zip b/examples/tg16/pxe/tools/memtest86+-5.01.zip Binary files differnew file mode 100644 index 0000000..5318646 --- /dev/null +++ b/examples/tg16/pxe/tools/memtest86+-5.01.zip diff --git a/examples/tg16/pxe/tools/mt86plus b/examples/tg16/pxe/tools/mt86plus Binary files differnew file mode 100644 index 0000000..affaaab --- /dev/null +++ b/examples/tg16/pxe/tools/mt86plus diff --git a/examples/tg16/pxe/tools/ntpasswd/boot.msg b/examples/tg16/pxe/tools/ntpasswd/boot.msg new file mode 100644 index 0000000..779e8d4 --- /dev/null +++ b/examples/tg16/pxe/tools/ntpasswd/boot.msg @@ -0,0 +1,25 @@ + + +*************************************************************************** +*                                                                         * +*        Windows Reset Password / Registry Editor / Boot CD               * +*                                                                         * +*  (c) 1998-2014 Petter Nordahl-Hagen. Distributed under GNU GPL v2       * +*                                                                         * +* DISCLAIMER: THIS SOFTWARE COMES WITH ABSOLUTELY NO WARRANTIES!          * +*             THE AUTHOR CAN NOT BE HELD RESPONSIBLE FOR ANY DAMAGE       * +*             CAUSED BY THE (MIS)USE OF THIS SOFTWARE                     * +*                                                                         * +* More info at: http://pogostick.net/~pnh/ntpasswd/                       * +* Email       : pnh@pogostick.net                                         * +*                                                                         * +* CD build date: Sat Feb  1 17:35:02 CET 2014                            * +*************************************************************************** + +Press enter to boot, or give linux kernel boot options first if needed. +Some that I have to use once in a while: +boot nousb          - to turn off USB if not used and it causes problems +boot irqpoll        - if some drivers hang with irq problem messages +boot vga=ask        - if you have problems with the videomode +boot nodrivers      - skip automatic disk driver loading + diff --git a/examples/tg16/pxe/tools/ntpasswd/initrd.cgz b/examples/tg16/pxe/tools/ntpasswd/initrd.cgz Binary files differnew file mode 100644 index 0000000..a1e05b2 --- /dev/null +++ b/examples/tg16/pxe/tools/ntpasswd/initrd.cgz diff --git a/examples/tg16/pxe/tools/ntpasswd/isolinux.bin b/examples/tg16/pxe/tools/ntpasswd/isolinux.bin Binary files differnew file mode 100644 index 0000000..8904f61 --- /dev/null +++ b/examples/tg16/pxe/tools/ntpasswd/isolinux.bin diff --git a/examples/tg16/pxe/tools/ntpasswd/isolinux.cfg b/examples/tg16/pxe/tools/ntpasswd/isolinux.cfg new file mode 100644 index 0000000..1c4dc2e --- /dev/null +++ b/examples/tg16/pxe/tools/ntpasswd/isolinux.cfg @@ -0,0 +1,11 @@ +#serial 0 19200
 +default boot
 +display boot.msg
 +timeout 250
 +prompt 1
 +label boot
 +  kernel vmlinuz
 +
 +append rw vga=1 initrd=initrd.cgz,scsi.cgz loglevel=1
 +#console=ttyS0
 +
 diff --git a/examples/tg16/pxe/tools/ntpasswd/readme.txt b/examples/tg16/pxe/tools/ntpasswd/readme.txt new file mode 100644 index 0000000..b16f7d6 --- /dev/null +++ b/examples/tg16/pxe/tools/ntpasswd/readme.txt @@ -0,0 +1,58 @@ +***************************************************************************
 +*                                                                         *
 +*         Windows Change Password / Registry Editor / Boot CD             *
 +*                                                                         *
 +*  (c) 1998-2014 Petter Nordahl-Hagen. Distributed under GNU GPL v2       *
 +*                                                                         *
 +* DISCLAIMER: THIS SOFTWARE COMES WITH ABSOLUTELY NO WARRANTIES!          *
 +*             THE AUTHOR CAN NOT BE HELD RESPONSIBLE FOR ANY DAMAGE       *
 +*             CAUSED BY THE (MIS)USE OF THIS SOFTWARE                     *
 +*                                                                         *
 +* More info at: http://pogostick.net/~pnh/ntpasswd/                       *
 +* Email       : pnh@pogostick.net                                         *
 +***************************************************************************
 +
 +Just boot this CD and follow instructions.
 +Usually, just pressing return/enter should work, except some
 +drivers may have to be loaded manually with the 'm' menu option after boot.
 +
 + ---
 +
 +The password reset and registry edit has now been tested with the following:
 +
 +NT 3.51, NT 4, Windows 2000, Windows XP, Windows 2003 Server,
 +Vista, Windows 7, Server 2008, Windows 8, Windows 8.1, Server 2012
 +
 +As far as I know, it will work with all Service Packs (SP) and
 +all editions (Professional, Server, Home etc)
 +Also, 64 bit windows versions shold be OK.
 +
 + ---
 +
 +To make a bootable USB drive / key:
 +
 +1. Copy all files from this CD onto the USB drive.
 +   It cannot be in a subdirectory on the drive.
 +   You do not need delete files already on the drive.
 +2. Install the bootloader
 +   On the USB drive, there should now be a file "syslinux.exe".
 +   Start a command line window (cmd.exe) with "run as administrator"
 +   From the command line, run the command like this:
 +
 +
 +	j:\syslinux.exe -ma j:
 +
 +replace j with some other letter if your USB drive is on another
 +drive letter than j:
 +On some drives, you may have to omit the -ma option if you
 +get an error.
 +If it says nothing, it probably did install the bootloader.
 +
 +Please note that you may have to adjust settings in your computers BIOS
 +setup to boot from USB.
 +Also, some BIOS (often older machines) simply won't boot from USB anyway.
 +Unfortunately, there are extremely many different versions of BIOS,
 +and a lot of them are rather buggy when it comes to booting off different
 +media, so I am unable to help you.
 +
 +
 diff --git a/examples/tg16/pxe/tools/ntpasswd/scsi.cgz b/examples/tg16/pxe/tools/ntpasswd/scsi.cgz Binary files differnew file mode 100644 index 0000000..441abb3 --- /dev/null +++ b/examples/tg16/pxe/tools/ntpasswd/scsi.cgz diff --git a/examples/tg16/pxe/tools/ntpasswd/syslinux.cfg b/examples/tg16/pxe/tools/ntpasswd/syslinux.cfg new file mode 100644 index 0000000..1c4dc2e --- /dev/null +++ b/examples/tg16/pxe/tools/ntpasswd/syslinux.cfg @@ -0,0 +1,11 @@ +#serial 0 19200
 +default boot
 +display boot.msg
 +timeout 250
 +prompt 1
 +label boot
 +  kernel vmlinuz
 +
 +append rw vga=1 initrd=initrd.cgz,scsi.cgz loglevel=1
 +#console=ttyS0
 +
 diff --git a/examples/tg16/pxe/tools/ntpasswd/syslinux.exe b/examples/tg16/pxe/tools/ntpasswd/syslinux.exe Binary files differnew file mode 100644 index 0000000..a67dc0d --- /dev/null +++ b/examples/tg16/pxe/tools/ntpasswd/syslinux.exe diff --git a/examples/tg16/pxe/tools/ntpasswd/vmlinuz b/examples/tg16/pxe/tools/ntpasswd/vmlinuz Binary files differnew file mode 100644 index 0000000..356f43d --- /dev/null +++ b/examples/tg16/pxe/tools/ntpasswd/vmlinuz diff --git a/examples/tg16/pxe/tools/pci.ids b/examples/tg16/pxe/tools/pci.ids new file mode 100644 index 0000000..7990263 --- /dev/null +++ b/examples/tg16/pxe/tools/pci.ids @@ -0,0 +1,26662 @@ +# +#	List of PCI ID's +# +#	Version: 2015.01.28 +#	Date:    2015-01-28 03:15:02 +# +#	Maintained by Martin Mares <mj@ucw.cz> and other volunteers from the +#	PCI ID Project at http://pci-ids.ucw.cz/. +# +#	New data are always welcome, especially if they are accurate. If you have +#	anything to contribute, please follow the instructions at the web site. +# +#	This file can be distributed under either the GNU General Public License +#	(version 2 or higher) or the 3-clause BSD License. +# + +# Vendors, devices and subsystems. Please keep sorted. + +# Syntax: +# vendor  vendor_name +#	device  device_name				<-- single tab +#		subvendor subdevice  subsystem_name	<-- two tabs + +0010  Allied Telesis, Inc (Wrong ID) +# This is a relabelled RTL-8139 +	8139  AT-2500TX V3 Ethernet +001c  PEAK-System Technik GmbH +	0001  PCAN-PCI CAN-Bus controller +		001c 0004  2 Channel CAN Bus SJC1000 +		001c 0005  2 Channel CAN Bus SJC1000 (Optically Isolated) +003d  Lockheed Martin-Marietta Corp +# Real TJN ID is e159, but they got it wrong several times --mj +0059  Tiger Jet Network Inc. (Wrong ID) +0070  Hauppauge computer works Inc. +	7801  WinTV HVR-1800 MCE +0071  Nebula Electronics Ltd. +0095  Silicon Image, Inc. (Wrong ID) +	0680  Ultra ATA/133 IDE RAID CONTROLLER CARD +# Wrong ID used in subsystem ID of the TELES.S0/PCI 2.x ISDN adapter +00a7  Teles AG (Wrong ID) +0100  Ncipher Corp Ltd +0123  General Dynamics +# 018a is not LevelOne but there is a board misprogrammed +018a  LevelOne +	0106  FPC-0106TX misprogrammed [RTL81xx] +# 021b is not Compaq but there is a board misprogrammed +021b  Compaq Computer Corporation +	8139  HNE-300 (RealTek RTL8139c) [iPaq Networking] +0270  Hauppauge computer works Inc. (Wrong ID) +# SpeedStream is Efficient Networks, Inc, a Siemens Company +02ac  SpeedStream +	1012  1012 PCMCIA 10/100 Ethernet Card [RTL81xx] +0303  Hewlett-Packard Company (Wrong ID) +0308  ZyXEL Communications Corporation (Wrong ID) +0315  SK-Electronics Co., Ltd. +0357  TTTech Computertechnik AG (Wrong ID) +	000a  TTP-Monitoring Card V2.0 +0432  SCM Microsystems, Inc. +	0001  Pluto2 DVB-T Receiver for PCMCIA [EasyWatch MobilSet] +0675  Dynalink +	1700  IS64PH ISDN Adapter +	1702  IS64PH ISDN Adapter +	1703  ISDN Adapter (PCI Bus, DV, W) +	1704  ISDN Adapter (PCI Bus, D, C) +0721  Sapphire, Inc. +0777  Ubiquiti Networks, Inc. +0795  Wired Inc. +	6663  Butane II (MPEG2 encoder board) +	6666  MediaPress (MPEG2 encoder board) +07d1  D-Link System Inc +0925  VIA Technologies, Inc. (Wrong ID) +0a89  BREA Technologies Inc +0b0b  Rhino Equipment Corp. +	0105  Rhino R1T1 +	0205  Rhino R4FXO +	0206  RCB4FXO 4-channel FXO analog telphony card +	0305  Rhino R4T1 +	0405  Rhino R8FXX +	0406  RCB8FXX 8-channel modular analog telphony card +	0505  Rhino R24FXX +	0506  RCB24FXS 24-Channel FXS analog telphony card +	0605  Rhino R2T1 +	0705  Rhino R24FXS +	0706  RCB24FXO 24-Channel FXO analog telphony card +	0905  R1T3 Single T3 Digital Telephony Card +	0906  RCB24FXX 24-channel modular analog telphony card +	0a06  RCB672FXX 672-channel modular analog telphony card +0e11  Compaq Computer Corporation +	0001  PCI to EISA Bridge +	0002  PCI to ISA Bridge +	0046  Smart Array 64xx +		0e11 4091  Smart Array 6i +		0e11 409a  Smart Array 641 +		0e11 409b  Smart Array 642 +		0e11 409c  Smart Array 6400 +		0e11 409d  Smart Array 6400 EM +	0049  NC7132 Gigabit Upgrade Module +	004a  NC6136 Gigabit Server Adapter +	005a  Remote Insight II board - Lights-Out +	007c  NC7770 1000BaseTX +	007d  NC6770 1000BaseTX +	0085  NC7780 1000BaseTX +	00b1  Remote Insight II board - PCI device +	00bb  NC7760 +	00ca  NC7771 +	00cb  NC7781 +	00cf  NC7772 +	00d0  NC7782 +	00d1  NC7783 +	00e3  NC7761 +	0508  Netelligent 4/16 Token Ring +	1000  Triflex/Pentium Bridge, Model 1000 +	2000  Triflex/Pentium Bridge, Model 2000 +	3032  QVision 1280/p +	3033  QVision 1280/p +	3034  QVision 1280/p +	4000  4000 [Triflex] +	4040  Integrated Array +	4048  Compaq Raid LC2 +	4050  Smart Array 4200 +	4051  Smart Array 4250ES +	4058  Smart Array 431 +	4070  Smart Array 5300 +	4080  Smart Array 5i +	4082  Smart Array 532 +	4083  Smart Array 5312 +	4091  Smart Array 6i +	409a  Smart Array 641 +	409b  Smart Array 642 +	409c  Smart Array 6400 +	409d  Smart Array 6400 EM +	6010  HotPlug PCI Bridge 6010 +	7020  USB Controller +	a0ec  Fibre Channel Host Controller +	a0f0  Advanced System Management Controller +		0e11 b0f3  ProLiant DL360 +	a0f3  Triflex PCI to ISA Bridge +	a0f7  PCI Hotplug Controller +		8086 002a  PCI Hotplug Controller A +		8086 002b  PCI Hotplug Controller B +	a0f8  ZFMicro Chipset USB +	a0fc  FibreChannel HBA Tachyon +	ae10  Smart-2/P RAID Controller +		0e11 4030  Smart-2/P Array Controller +		0e11 4031  Smart-2SL Array Controller +		0e11 4032  Smart Array 3200 Controller +		0e11 4033  Smart Array 3100ES Controller +		0e11 4034  Smart Array 221 Controller +	ae29  MIS-L +	ae2a  MPC +	ae2b  MIS-E +	ae31  System Management Controller +	ae32  Netelligent 10/100 TX PCI UTP +	ae33  Triflex Dual EIDE Controller +	ae34  Netelligent 10 T PCI UTP +	ae35  Integrated NetFlex-3/P +	ae40  Netelligent Dual 10/100 TX PCI UTP +	ae43  Netelligent Integrated 10/100 TX UTP +	ae69  CETUS-L +	ae6c  Northstar +	ae6d  NorthStar CPU to PCI Bridge +	b011  Netelligent 10/100 TX Embedded UTP +	b012  Netelligent 10 T/2 PCI UTP/Coax +	b01e  NC3120 Fast Ethernet NIC +	b01f  NC3122 Fast Ethernet NIC +	b02f  NC1120 Ethernet NIC +	b030  Netelligent 10/100 TX UTP +	b04a  10/100 TX PCI Intel WOL UTP Controller +	b060  Smart Array 5300 Controller +	b0c6  NC3161 Fast Ethernet NIC +	b0c7  NC3160 Fast Ethernet NIC +	b0d7  NC3121 Fast Ethernet NIC +	b0dd  NC3131 Fast Ethernet NIC +	b0de  NC3132 Fast Ethernet Module +	b0df  NC6132 Gigabit Module +	b0e0  NC6133 Gigabit Module +	b0e1  NC3133 Fast Ethernet Module +	b123  NC6134 Gigabit NIC +	b134  NC3163 Fast Ethernet NIC +	b13c  NC3162 Fast Ethernet NIC +	b144  NC3123 Fast Ethernet NIC +	b163  NC3134 Fast Ethernet NIC +	b164  NC3165 Fast Ethernet Upgrade Module +	b178  Smart Array 5i/532 +		0e11 4080  Smart Array 5i +		0e11 4082  Smart Array 532 +		0e11 4083  Smart Array 5312 +	b1a4  NC7131 Gigabit Server Adapter +	b200  Memory Hot-Plug Controller +	b203  Integrated Lights Out Controller +	b204  Integrated Lights Out  Processor +	c000  Remote Insight Lights-Out Edition +	f130  NetFlex-3/P ThunderLAN 1.0 +	f150  NetFlex-3/P ThunderLAN 2.3 +0e55  HaSoTec GmbH +0eac  SHF Communication Technologies AG +	0008  Ethernet Powerlink Managing Node 01 +0f62  Acrox Technologies Co., Ltd. +# Formerly NCR +1000  LSI Logic / Symbios Logic +	0001  53c810 +		1000 1000  LSI53C810AE PCI to SCSI I/O Processor +	0002  53c820 +	0003  53c825 +		1000 1000  LSI53C825AE PCI to SCSI I/O Processor (Ultra Wide) +	0004  53c815 +	0005  53c810AP +	0006  53c860 +		1000 1000  LSI53C860E PCI to Ultra SCSI I/O Processor +	000a  53c1510 +		0e11 b143  Integrated Dual Channel Wide Ultra2 SCSI Controller +		1000 1000  LSI53C1510 PCI to Dual Channel Wide Ultra2 SCSI Controller (Nonintelligent mode) +	000b  53C896/897 +		0e11 6004  EOB003 Series SCSI host adapter +		1000 1000  LSI53C896/7 PCI to Dual Channel Ultra2 SCSI Multifunction Controller +		1000 1010  LSI22910 PCI to Dual Channel Ultra2 SCSI host adapter +		1000 1020  LSI21002 PCI to Dual Channel Ultra2 SCSI host adapter +		13e9 1000  6221L-4U (Dual U2W SCSI, dual 10/100TX, graphics) +	000c  53c895 +		1000 1010  LSI8951U PCI to Ultra2 SCSI host adapter +		1000 1020  LSI8952U PCI to Ultra2 SCSI host adapter +		1de1 3906  DC-390U2B SCSI adapter +		1de1 3907  DC-390U2W +	000d  53c885 +	000f  53c875 +		0e11 7004  Embedded Ultra Wide SCSI Controller +		1000 1000  LSI53C876/E PCI to Dual Channel SCSI Controller +		1000 1010  LSI22801 PCI to Dual Channel Ultra SCSI host adapter +		1000 1020  LSI22802 PCI to Dual Channel Ultra SCSI host adapter +		1092 8760  FirePort 40 Dual SCSI Controller +		1775 10d0  V5D Single Board Computer Wide Ultra SCSI +		1775 10d1  V5D Single Board Computer Ultra SCSI +		1de1 3904  DC390F/U Ultra Wide SCSI Adapter +		4c53 1000  CC7/CR7/CP7/VC7/VP7/VR7 mainboard +		4c53 1050  CT7 mainboard +	0010  53C1510 +		0e11 4040  Integrated Smart Array Controller +		0e11 4048  RAID LC2 Controller +		1000 1000  53C1510 PCI to Dual Channel Wide Ultra2 SCSI Controller (Intelligent mode) +	0012  53c895a +		1000 1000  LSI53C895A PCI to Ultra2 SCSI Controller +	0013  53c875a +		1000 1000  LSI53C875A PCI to Ultra SCSI Controller +	0020  53c1010 Ultra3 SCSI Adapter +		1000 1000  LSI53C1010-33 PCI to Dual Channel Ultra160 SCSI Controller +		107b 1040  Server Onboard 53C1010-33 +		1de1 1020  DC-390U3W +	0021  53c1010 66MHz  Ultra3 SCSI Adapter +		1000 1000  LSI53C1000/1000R/1010R/1010-66 PCI to Ultra160 SCSI Controller +		1000 1010  Asus TR-DLS onboard 53C1010-66 +		103c 1300  Ultra160 SCSI [AB306A] +		103c 1310  Ultra160 SCSI [A9918A] +		103c 1330  Ultra160 SCSI [A7059A] +		103c 1340  Ultra160 SCSI [A7060A] +		124b 1070  PMC-USCSI3 +		4c53 1080  CT8 mainboard +		4c53 1300  P017 mezzanine (32-bit PMC) +		4c53 1310  P017 mezzanine (64-bit PMC) +	002f  MegaRAID SAS 2208 IOV [Thunderbolt] +		1028 1f39  SPERC8-e +		1028 1f3e  SPERC 8 +	0030  53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI +		0e11 00da  ProLiant ML 350 +		1028 0123  LSI Logic 1020/1030 +		1028 014a  LSI Logic 1020/1030 +		1028 016c  PowerEdge 1850 MPT Fusion SCSI/RAID (Perc 4) +		1028 0183  LSI Logic 1020/1030 +		1028 018a  PERC 4/IM +		1028 1010  LSI U320 SCSI Controller +		103c 12c5  Ultra320 SCSI [A7173A] +		103c 1323  Core I/O LAN/SCSI Combo [AB314A] +		103c 3108  Single Channel Ultra320 SCSI HBA G2 +		124b 1170  PMC-USCSI320 +# VMware's emulation of this device. Was missing from the list. +		15ad 1976  LSI Logic Parallel SCSI Controller +		1734 1052  PRIMERGY BX/RX/TX S2 series onboard SCSI(IME) +	0031  53c1030ZC PCI-X Fusion-MPT Dual Ultra320 SCSI +	0032  53c1035 PCI-X Fusion-MPT Dual Ultra320 SCSI +		1000 1000  LSI53C1020/1030 PCI-X to Ultra320 SCSI Controller +	0033  1030ZC_53c1035 PCI-X Fusion-MPT Dual Ultra320 SCSI +	0040  53c1035 PCI-X Fusion-MPT Dual Ultra320 SCSI +		1000 0033  MegaRAID SCSI 320-2XR +		1000 0066  MegaRAID SCSI 320-2XRWS +	0041  53C1035ZC PCI-X Fusion-MPT Dual Ultra320 SCSI +	0050  SAS1064 PCI-X Fusion-MPT SAS +		1028 1f04  SAS 5/E +		1028 1f09  SAS 5i/R +	0054  SAS1068 PCI-X Fusion-MPT SAS +		1028 1f04  SAS 5/E Adapter Controller +		1028 1f05  SAS 5/i Adapter Controller +		1028 1f06  SAS 5/i Integrated Controller +		1028 1f07  SAS 5/iR Integrated RAID Controller +		1028 1f08  SAS 5/iR Integrated RAID Controller +		1028 1f09  SAS 5/iR Adapter RAID Controller +		15ad 1976  SAS Controller +	0055  SAS1068 PCI-X Fusion-MPT SAS +		1033 8336  SAS1068 +	0056  SAS1064ET PCI-Express Fusion-MPT SAS +		1014 03bb  ServeRAID BR10il SAS/SATA Controller v2 +	0057  M1064E MegaRAID SAS +		8086 346c  Embedded Software RAID Technology II (ESTRII) +	0058  SAS1068E PCI-Express Fusion-MPT SAS +		1000 3140  SAS3081E-R 8-Port SAS/SATA Host Bus Adapter +		1028 021d  SAS 6/iR Integrated Workstations RAID Controller +		1028 1f0e  SAS 6/iR Adapter RAID Controller +		1028 1f0f  SAS 6/iR Integrated Blades RAID Controller +		1028 1f10  SAS 6/iR Integrated RAID Controller +		103c 3229  SC44Ge Host Bus Adapter +	0059  MegaRAID SAS 8208ELP/8208ELP +	005a  SAS1066E PCI-Express Fusion-MPT SAS +	005b  MegaRAID SAS 2208 [Thunderbolt] +		1000 9265  MegaRAID SAS 9265-8i +		1000 9266  MegaRAID SAS 9266-8i +		1000 9267  MegaRAID SAS 9267-8i +		1000 9268  MegaRAID SAS 9265CV-8i / 9270CV-8i +		1000 9269  MegaRAID SAS 9266-4i +		1000 9270  MegaRAID SAS 9270-8i +		1000 9271  MegaRAID SAS 9271-8i +		1000 9272  MegaRAID SAS 9272-8i +		1000 9273  MegaRAID SAS 9270CV-8i +		1000 9274  MegaRAID SAS 9270-4i +		1000 9275  MegaRAID SAS 9271-8iCC +		1000 9276  MegaRAID SAS 9271-4i +		1000 9285  MegaRAID SAS 9285-8e +		1000 9288  MegaRAID SAS 9285CV-8e +		1000 9290  MegaRAID SAS 9286-8e +		1000 9291  MegaRAID SAS 9286CV-8e +		1000 9295  MegaRAID SAS 9286CV-8eCC +		1014 040b  ServeRAID M5110 SAS/SATA Controller +		1014 040c  ServeRAID M5120 SAS/SATA Controller +		1014 0412  ServeRAID M5110e SAS/SATA Controller +		1028 1f2d  PERC H810 Adapter +		1028 1f30  PERC H710 Embedded +		1028 1f31  PERC H710P Adapter +		1028 1f33  PERC H710P Mini (for blades) +		1028 1f34  PERC H710P Mini (for monolithics) +		1028 1f35  PERC H710 Adapter +		1028 1f37  PERC H710 Mini (for blades) +		1028 1f38  PERC H710 Mini (for monolithics) +		15d9 0690  LSI MegaRAID ROMB +		8086 3510  RMS25PB080 RAID Controller +		8086 3513  RMS25CB080 RAID Controller +	005c  SAS1064A PCI-X Fusion-MPT SAS +	005d  MegaRAID SAS-3 3108 [Invader] +		1028 1f41  PERC H830 Adapter +		1028 1f42  PERC H730P Adapter +		1028 1f43  PERC H730 Adapter +		1028 1f47  PERC H730P Mini +		1028 1f48  PERC H730P Mini (for blades) +		1028 1f49  PERC H730 Mini +		1028 1f4a  PERC H730 Mini (for blades) +		1028 1f4d  PERC FS33xS +		1028 1f4f  PERC H730P Slim +		1028 1f54  PERC FS33xD +		17aa 1052  ThinkServer RAID 720i +		17aa 1053  ThinkServer RAID 720ix +	005e  SAS1066 PCI-X Fusion-MPT SAS +	005f  MegaRAID SAS-3 3008 [Fury] +		1028 1f44  PERC H330 Adapter +		1028 1f4b  PERC H330 Mini +		1028 1f4c  PERC H330 Mini (for blades) +		1028 1f4d  PERC H330 Embedded (for monolithic) +	0060  MegaRAID SAS 1078 +		1000 1006  MegaRAID SAS 8888ELP +		1000 100a  MegaRAID SAS 8708ELP +		1000 100e  MegaRAID SAS 8884E +		1000 100f  MegaRAID SAS 8708E +		1000 1010  MegaRAID SATA 350-8ELP +		1000 1011  MegaRAID SATA 350-4ELP +		1000 1012  MegaRAID SAS 8704ELP +		1000 1016  MegaRAID SAS 8880EM2 +		1014 0363  MegaRAID SAS PCI Express ROMB +		1014 0364  SystemX MegaRAID SAS 8808E +		1014 0365  SystemX MegaRAID SAS 8884E +		1014 0379  SystemX MegaRAID SAS 8880EM2 +		1028 1f0a  PERC 6/E Adapter RAID Controller +		1028 1f0b  PERC 6/i Adapter RAID Controller +		1028 1f0c  PERC 6/i Integrated RAID Controller +		1028 1f0d  PERC 6/i Integrated RAID Controller +		1028 1f11  CERC 6/i Integrated RAID Controller +		1033 835a  MegaRAID SAS PCI Express ROMB +		1043 824d  MegaRAID SAS PCI Express ROMB +		1170 002f  MegaRAID SAS PCI Express ROMB +		1170 0036  MegaRAID SAS PCI Express ROMB +		15d9 c080  MegaRAID SAS PCI Express ROMB +		17aa 6b7c  MegaRAID SAS PCI Express ROMB +		18a1 0003  LSI MegaRAID SAS PCI Express ROMB +		8086 1006  RAID Controller SRCSAS28EP +		8086 100a  RAID Controller SRCSAS28EV +		8086 1010  RAID Controller SRCSATA28E +		8086 34cc  Integrated RAID Controller SROMBSAS28E +		8086 34cd  Integrated RAID Controller SROMBSAS28E +		8086 3505  Integrated RAID Controller SROMBSASMP2 +	0062  SAS1078 PCI-Express Fusion-MPT SAS +		1000 0062  SAS1078 PCI-Express Fusion-MPT SAS +	0064  SAS2116 PCI-Express Fusion-MPT SAS-2 [Meteor] +	0065  SAS2116 PCI-Express Fusion-MPT SAS-2 [Meteor] +	006e  SAS2308 PCI-Express Fusion-MPT SAS-2 +	0070  SAS2004 PCI-Express Fusion-MPT SAS-2 [Spitfire] +	0071  MR SAS HBA 2004 +	0072  SAS2008 PCI-Express Fusion-MPT SAS-2 [Falcon] +		1028 1f1c  6Gbps SAS HBA Adapter +		1028 1f1d  PERC H200 Adapter +		1028 1f1e  PERC H200 Integrated +		1028 1f1f  PERC H200 Modular +		1028 1f20  PERC H200 Embedded +		1028 1f22  Internal Tape Adapter +		8086 350f  RMS2LL040 RAID Controller +	0073  MegaRAID SAS 2008 [Falcon] +		1000 9240  MegaRAID SAS 9240-8i +		1000 9241  MegaRAID SAS 9240-4i +		1000 92a0  MegaRAID SAS 9220-8i +		1014 03b1  ServeRAID M1015 SAS/SATA Controller +		1028 1f4e  PERC H310 Adapter +		1028 1f4f  PERC H310 Integrated +		1028 1f50  PERC H310 Mini Blades +		1028 1f51  PERC H310 Mini Monolithics +		1028 1f52  PERC H310 Embedded1 +		1028 1f53  PERC H310 Embedded2 +		1028 1f54  PERC H310 Reserved +		1054 3035  LSI MegaRAID SAS 9240-8i +		1137 0072  2004 iMR ROMB +		1137 0073  2008 ROMB +		1137 00b0  UCSC RAID SAS 2008M-8i +		1137 00b1  UCSC RAID SAS 2008M-8i +		1137 00c2  UCS E-Series Double Wide +		1137 00c3  UCS E-Series Single Wide +		15d9 0400  Supermicro SMC2008-iMR +		1734 1177  RAID Ctrl SAS 6G 0/1 (D2607) +		17aa 1051  ThinkServer RAID 510i +		8086 350d  RMS2AF040 RAID Controller +		8086 9240  RAID Controller RS2WC080 +		8086 9241  RAID Controller RS2WC040 +	0074  SAS2108 PCI-Express Fusion-MPT SAS-2 [Liberator] +	0076  SAS2108 PCI-Express Fusion-MPT SAS-2 [Liberator] +	0077  SAS2108 PCI-Express Fusion-MPT SAS-2 [Liberator] +	0079  MegaRAID SAS 2108 [Liberator] +		1000 9251  MegaRAID SAS 9260-4ix +		1000 9256  MegaRAID SAS 9260-8ix +		1000 9260  MegaRAID SAS 9260-4i +		1000 9261  MegaRAID SAS 9260-8i +		1000 9262  MegaRAID SAS 9262-8i +		1000 9263  MegaRAID SAS 9261-8i +		1000 9264  MegaRAID SAS 9264-8i +		1000 9267  MegaRAID SAS 9260CV-4i +		1000 9268  MegaRAID SAS 9260CV-8i +		1000 9275  MegaRAID SAS 9280-8ex +		1000 9276  MR9260-16i +		1000 9280  MegaRAID SAS 9280-8e +		1000 9281  MegaRAID SAS 9281-8E +		1000 9282  MegaRAID SAS 9280-4i4e +		1000 9290  MegaRAID SAS 9280DE-24i4e +		1014 03b2  ServeRAID M5015 SAS/SATA Controller +		1014 03b3  ServeRAID M5025 SAS/SATA Controller +		1028 1f15  PERC H800 Adapter +		1028 1f16  PERC H700 Adapter +		1028 1f17  PERC H700 Integrated +		1028 1f18  PERC H700 Modular +		1028 1f1a  PERC H800 Proto Adapter +		1028 1f1b  PERC H700 Integrated +		1043 8480  PIKE-2108 16PD +		1734 1176  RAID Ctrl SAS 6G 5/6 512MB (D2616) +		1734 1177  RAID Ctrl SAS 6G 0/1 (D2607) +		8086 9256  MegaRAID SAS 9260DE-8i +		8086 9260  RAID Controller RS2BL040 +		8086 9261  RAID Controller RS2BL080 +		8086 9264  Warm Beach (Caster Lite) +		8086 9267  RAID Controller RS2VB040 +		8086 9268  RAID Controller RS2VB080 +	007c  MegaRAID SAS 1078DE +		1014 0395  ServeRAID-AR10is SAS/SATA Controller +	007e  SSS6200 PCI-Express Flash SSD +	0080  SAS2208 PCI-Express Fusion-MPT SAS-2 +	0081  SAS2208 PCI-Express Fusion-MPT SAS-2 +	0082  SAS2208 PCI-Express Fusion-MPT SAS-2 +	0083  SAS2208 PCI-Express Fusion-MPT SAS-2 +	0084  SAS2208 PCI-Express Fusion-MPT SAS-2 +	0085  SAS2208 PCI-Express Fusion-MPT SAS-2 +	0086  SAS2308 PCI-Express Fusion-MPT SAS-2 +	0087  SAS2308 PCI-Express Fusion-MPT SAS-2 +		1590 0044  H220i +	008f  53c875J +		1092 8000  FirePort 40 SCSI Controller +		1092 8760  FirePort 40 Dual SCSI Host Adapter +	0090  SAS3108 PCI-Express Fusion-MPT SAS-3 +	0091  SAS3108 PCI-Express Fusion-MPT SAS-3 +	0094  SAS3108 PCI-Express Fusion-MPT SAS-3 +	0095  SAS3108 PCI-Express Fusion-MPT SAS-3 +	0096  SAS3004 PCI-Express Fusion-MPT SAS-3 +	0097  SAS3008 PCI-Express Fusion-MPT SAS-3 +		1028 1f45  12GB/s HBA internal +		1028 1f46  12Gbps HBA +	0407  MegaRAID +		1000 0530  MegaRAID 530 SCSI 320-0X RAID Controller +		1000 0531  MegaRAID 531 SCSI 320-4X RAID Controller +		1000 0532  MegaRAID 532 SCSI 320-2X RAID Controller +		1028 0531  PowerEdge Expandable RAID Controller 4/QC +		1028 0533  PowerEdge Expandable RAID Controller 4/QC +		8086 0530  MegaRAID Intel RAID Controller SRCZCRX +		8086 0532  MegaRAID Intel RAID Controller SRCU42X +	0408  MegaRAID +		1000 0001  MegaRAID SCSI 320-1E RAID Controller +		1000 0002  MegaRAID SCSI 320-2E RAID Controller +		1025 004d  MegaRAID ACER ROMB-2E RAID Controller +		1028 0001  PowerEdge RAID Controller PERC4e/SC +		1028 0002  PowerEdge RAID Controller PERC4e/DC +		1028 0012  PowerEdge RAID Controller RAC4 +		1028 0015  PowerEdge RAID Controller PERC5 +		1028 1f03  PowerEdge RAID Controller PERC5 +		1734 1065  FSC MegaRAID PCI Express ROMB +		8086 0002  MegaRAID Intel RAID Controller SRCU42E +		8086 3449  MegaRAID Intel RAID Controller SROMBU +	0409  MegaRAID +		1000 3004  MegaRAID SATA 300-4X RAID Controller +		1000 3008  MegaRAID SATA 300-8X RAID Controller +		8086 3008  MegaRAID RAID Controller SRCS28X +		8086 3431  MegaRAID RAID Controller Alief SROMBU42E +		8086 3499  MegaRAID RAID Controller Harwich SROMBU42E +	0411  MegaRAID SAS 1068 +		1000 1001  MegaRAID SAS 8408E +		1000 1002  MegaRAID SAS 8480E +		1000 1003  MegaRAID SAS 8344ELP +		1000 1004  MegaRAID SAS 8308ELP +		1000 1008  MegaRAID SAS 84016E +		1000 100c  MegaRAID SATA 300-12E +		1000 100d  MegaRAID SATA 300-16E +		1000 2004  MegaRAID SATA 300-8ELP +		1000 2005  MegaRAID SATA 300-4ELP +		1033 8287  MegaRAID SAS PCI Express ROMB +		1054 3016  MegaRAID SAS RoMB Server +		1734 1081  MegaRAID SAS PCI Express ROMB +		1734 10a3  MegaRAID SAS PCI Express ROMB +		8086 1001  RAID Controller SRCSAS18E +		8086 1003  RAID Controller SRCSAS144E +		8086 3500  SROMBSAS18E RAID Controller +		8086 3501  SROMBSAS18E RAID Controller +		8086 3504  SROMBSAS18E RAID Controller +	0413  MegaRAID SAS 1068 [Verde ZCR] +		1000 1005  MegaRAID SAS 8300XLP +	0621  FC909 Fibre Channel Adapter +	0622  FC929 Fibre Channel Adapter +		1000 1020  44929 O Dual Fibre Channel card +	0623  FC929 LAN +	0624  FC919 Fibre Channel Adapter +	0625  FC919 LAN +	0626  FC929X Fibre Channel Adapter +		1000 1010  7202-XP-LC Dual Fibre Channel card +	0627  FC929X LAN +	0628  FC919X Fibre Channel Adapter +	0629  FC919X LAN +	0640  FC949X Fibre Channel Adapter +	0642  FC939X Fibre Channel Adapter +	0646  FC949ES Fibre Channel Adapter +	0701  83C885 NT50 DigitalScape Fast Ethernet +	0702  Yellowfin G-NIC gigabit ethernet +		1318 0000  PEI100X +	0804  SA2010 +	0805  SA2010ZC +	0806  SA2020 +	0807  SA2020ZC +	0901  61C102 +	1000  63C815 +	1960  MegaRAID +		1000 0518  MegaRAID 518 SCSI 320-2 Controller +		1000 0520  MegaRAID 520 SCSI 320-1 Controller +		1000 0522  MegaRAID 522 i4 133 RAID Controller +		1000 0523  MegaRAID SATA 150-6 RAID Controller +		1000 4523  MegaRAID SATA 150-4 RAID Controller +		1000 a520  MegaRAID ZCR SCSI 320-0 Controller +		1028 0518  MegaRAID 518 DELL PERC 4/DC RAID Controller +		1028 0520  MegaRAID 520 DELL PERC 4/SC RAID Controller +		1028 0531  PowerEdge Expandable RAID Controller 4/QC +		1028 0533  PowerEdge Expandable RAID Controller 4/QC +		8086 0520  MegaRAID RAID Controller SRCU41L +		8086 0523  MegaRAID RAID Controller SRCS16 +	3050  SAS2008 PCI-Express Fusion-MPT SAS-2 +	6001  DX1 Multiformat Broadcast HD/SD Encoder/Decoder +1001  Kolter Electronic +	0010  PCI 1616 Measurement card with 32 digital I/O lines +	0011  OPTO-PCI Opto-Isolated digital I/O board +	0012  PCI-AD/DA Analogue I/O board +	0013  PCI-OPTO-RELAIS Digital I/O board with relay outputs +	0014  PCI-Counter/Timer Counter Timer board +	0015  PCI-DAC416 Analogue output board +	0016  PCI-MFB Analogue I/O board +	0017  PROTO-3 PCI Prototyping board +	9100  INI-9100/9100W SCSI Host +# nee ATI Technologies, Inc. +1002  Advanced Micro Devices, Inc. [AMD/ATI] +	1304  Kaveri +	1305  Kaveri +	1306  Kaveri +	1307  Kaveri +	1308  Kaveri HDMI/DP Audio Controller +	1309  Kaveri [Radeon R6/R7 Graphics] +	130a  Kaveri [Radeon R6 Graphics] +	130b  Kaveri [Radeon R4 Graphics] +	130c  Kaveri [Radeon R7 Graphics] +	130d  Kaveri [Radeon R6 Graphics] +	130e  Kaveri [Radeon R5 Graphics] +	130f  Kaveri [Radeon R7 Graphics] +	1310  Kaveri +	1311  Kaveri +	1312  Kaveri +	1313  Kaveri [Radeon R7 Graphics] +	1314  Wrestler HDMI Audio +		174b 1001  PURE Fusion Mini +	1315  Kaveri [Radeon R5 Graphics] +	1316  Kaveri [Radeon R5 Graphics] +	1317  Kaveri +	1318  Kaveri [Radeon R5 Graphics] +	131b  Kaveri [Radeon R4 Graphics] +	131c  Kaveri [Radeon R7 Graphics] +	131d  Kaveri [Radeon R6 Graphics] +	1714  BeaverCreek HDMI Audio [Radeon HD 6500D and 6400G-6600G series] +		103c 168b  ProBook 4535s +	3150  RV380/M24 [Mobility Radeon X600] +		103c 0934  nx8220 +	3151  RV380 GL [FireMV 2400] +	3152  RV370/M22 [Mobility Radeon X300] +	3154  RV380/M24 GL [Mobility FireGL V3200] +	3155  RV380 GL [FireMV 2400] +	3171  RV380 GL [FireMV 2400] (Secondary) +	3e50  RV380 [Radeon X600] +	3e54  RV380 GL [FireGL V3200] +	3e70  RV380 [Radeon X600] (Secondary) +	4136  RS100 [Mobility IGP 320M] +	4137  RS200 [Radeon IGP 340] +	4144  R300 [Radeon 9500] +	4146  R300 [Radeon 9700 PRO] +	4147  R300 GL [FireGL Z1] +	4148  R350 [Radeon 9800/9800 SE] +	4150  RV350 [Radeon 9550/9600/X1050 Series] +		1002 0002  R9600 Pro primary (Asus OEM for HP) +		1002 0003  R9600 Pro secondary (Asus OEM for HP) +		1002 4722  All-in-Wonder 2006 AGP Edition +		1458 4024  GV-R96128D +		148c 2064  R96A-C3N +		148c 2066  R96A-C3N +		174b 7c19  Atlantis Radeon 9600 Pro +		174b 7c29  GC-R9600PRO +		17ee 2002  Radeon 9600 256Mb Primary +		18bc 0101  GC-R9600PRO (Primary) +	4151  RV350 [Radeon 9600 Series] +		1043 c004  A9600SE +	4152  RV360 [Radeon 9600/X1050 Series] +		1002 0002  Radeon 9600XT +		1002 4772  All-in-Wonder 9600 XT +		1043 c002  Radeon 9600 XT TVD +		1043 c01a  A9600XT/TD +		1462 9510  RX9600XT (MS-8951) +		174b 7c29  Radeon 9600XT +		1787 4002  Radeon 9600 XT +	4153  RV350 [Radeon 9550] +		1043 010c  A9550GE/TD +		1462 932c  RX9550SE-TD128 (MS-8932) +	4154  RV350 GL [FireGL T2] +	4155  RV350 [Radeon 9600] +	4157  RV350 GL [FireGL T2] +	4158  68800AX [Graphics Ultra Pro PCI] +	4164  R300 [Radeon 9500 PRO] (Secondary) +	4165  R300 [Radeon 9700 PRO] (Secondary) +	4166  R300 [Radeon 9700 PRO] (Secondary) +	4168  RV350 [Radeon 9800 SE] (Secondary) +	4170  RV350 [Radeon 9550/9600/X1050 Series] (Secondary) +		1002 0003  R9600 Pro secondary (Asus OEM for HP) +		1002 4723  All-in-Wonder 2006 AGP Edition (Secondary) +		1458 4025  GV-R96128D (Secondary) +		148c 2067  R96A-C3N (Secondary) +		174b 7c28  GC-R9600PRO (Secondary) +		17ee 2003  Radeon 9600 256Mb (Secondary) +		18bc 0100  GC-R9600PRO (Secondary) +	4171  RV350 [Radeon 9600] (Secondary) +		1043 c005  A9600SE (Secondary) +	4172  RV350 [Radeon 9600/X1050 Series] (Secondary) +		1002 0003  Radeon 9600XT (Secondary) +		1002 4773  All-in-Wonder 9600 XT (Secondary) +		1043 c003  A9600XT (Secondary) +		1043 c01b  A9600XT/TD (Secondary) +		174b 7c28  Radeon 9600XT (Secondary) +		1787 4003  Radeon 9600 XT (Secondary) +	4173  RV350 [Radeon 9550] (Secondary) +		1043 010d  A9550GE/TD (Secondary) +	4242  R200 [All-In-Wonder Radeon 8500 DV] +		1002 02aa  Radeon 8500 AIW DV Edition +	4243  R200 PCI Bridge [All-in-Wonder Radeon 8500DV] +	4336  RS100 [Radeon IGP 320M] +		1002 4336  Pavilion ze4300 ATI Radeon Mobility U1 (IGP 320 M) +		103c 0024  Pavilion ze4400 builtin Video +		161f 2029  eMachines M5312 builtin Video +	4337  RS200M [Radeon IGP 330M/340M/345M/350M] +		1014 053a  ThinkPad R40e +		103c 0850  Radeon IGP 345M +	4341  IXP150 AC'97 Audio Controller +	4342  IXP200 3COM 3C920B Ethernet Controller +	4345  EHCI USB Controller +	4347  OHCI USB Controller #1 +	4348  OHCI USB Controller #2 +	4349  Dual Channel Bus Master PCI IDE Controller +	434d  IXP AC'97 Modem +	4353  SMBus +	4354  215CT [Mach64 CT PCI] +	4358  210888CX [Mach64 CX] +	4361  IXP SB300 AC'97 Audio Controller +	4363  SMBus +	436e  436E Serial ATA Controller +	4370  IXP SB400 AC'97 Audio Controller +		1025 0079  Aspire 5024WLMMi +		1025 0091  Aspire 5032WXMi +		103c 2a05  Pavilion t3030.de Desktop PC +		103c 308b  MX6125 +		105b 0c81  Realtek ALC 653 +		107b 0300  MX6421 +		1462 0131  MS-1013 Notebook +	4371  IXP SB4x0 PCI-PCI Bridge +		103c 308b  MX6125 +		1462 7217  Aspire L250 +	4372  IXP SB4x0 SMBus Controller +		1025 0080  Aspire 5024WLMMi +		103c 2a20  Pavilion t3030.de Desktop PC +		103c 308b  MX6125 +		1462 0131  MS-1013 Notebook +		1462 7217  Aspire L250 +	4373  IXP SB4x0 USB2 Host Controller +		1025 0080  Aspire 5024WLMMi +		103c 2a20  Pavilion t3030.de Desktop PC +		103c 308b  MX6125 +		1462 7217  Aspire L250 +	4374  IXP SB4x0 USB Host Controller +		103c 2a20  Pavilion t3030.de Desktop PC +		103c 308b  MX6125 +		1462 7217  Aspire L250 +	4375  IXP SB4x0 USB Host Controller +		1025 0080  Aspire 5024WLMMi +		103c 2a20  Pavilion t3030.de Desktop PC +		103c 308b  MX6125 +		1462 7217  Aspire L250 +	4376  IXP SB4x0 IDE Controller +		1025 0080  Aspire 5024WLMMi +		103c 2a20  Pavilion t3030.de Desktop PC +		103c 308b  MX6125 +		1462 0131  MS-1013 Notebook +		1462 7217  Aspire L250 +	4377  IXP SB4x0 PCI-ISA Bridge +		1025 0080  Aspire 5024WLMi +		103c 2a20  Pavilion t3030.de Desktop PC +		103c 308b  MX6125 +		1462 7217  Aspire L250 +	4378  IXP SB400 AC'97 Modem Controller +		1025 0080  Aspire 5024WLMMi +		103c 308b  MX6125 +		1462 0131  MS-1013 Notebook +	4379  IXP SB4x0 Serial ATA Controller +		1462 7141  Aspire L250 +	437a  IXP SB400 Serial ATA Controller +		1002 4379  4379 Serial ATA Controller +		1002 437a  437A Serial ATA Controller +		1462 7141  Aspire L250 +		14f1 8800  Leadtek WinFast TV2000XP Expert +	437b  IXP SB4x0 High Definition Audio Controller +		1002 437b  IXP SB4x0 High Definition Audio Controller +		10cf 1326  Fujitsu Lifebook A3040 +		1734 10b8  Realtek High Definition Audio +	4380  SB600 Non-Raid-5 SATA +		103c 2813  DC5750 Microtower +		1179 ff50  Satellite P305D-S8995E +		1458 b003  GA-MA790FX-DS5 (rev. 1.0) +		1458 b005  Gigabyte GA-MA69G-S3H Motherboard +		1462 7327  K9AG Neo2 +		17f2 5999  KI690-AM2 Motherboard +	4381  SB600 SATA Controller (RAID 5 mode) +	4382  SB600 AC97 Audio +	4383  SBx00 Azalia (Intel HDA) +		1019 2120  A785GM-M +		103c 1611  Pavilion DM1Z-3000 +		103c 280a  DC5750 Microtower +		1043 8230  M3A78-EH Motherboard +		1043 836c  M4A785TD Motherboard +		1043 8410  M4A89GTD PRO/USB3 Motherboard +		1043 841b  M5A88-V EVO +		1179 ff50  Satellite P305D-S8995E +		1458 a022  GA-MA770-DS3rev2.0 Motherboard +		17f2 5000  KI690-AM2 Motherboard +	4384  SBx00 PCI to PCI Bridge +	4385  SBx00 SMBus Controller +		1019 2120  A785GM-M +		103c 1611  Pavilion DM1Z-3000 +		103c 280a  DC5750 Microtower +		1043 82ef  M3A78-EH Motherboard +		1043 8389  M4A785TD Motherboard +		1179 ff50  Satellite P305D-S8995E +		1458 4385  GA-MA770-DS3rev2.0 Motherboard +		1462 7368  K9AG Neo2 +		15d9 a811  H8DGU +		174b 1001  PURE Fusion Mini +		17f2 5000  KI690-AM2 Motherboard +	4386  SB600 USB Controller (EHCI) +		103c 280a  DC5750 Microtower +		1179 ff50  Satellite P305D-S8995E +		1462 7368  K9AG Neo2 +		17f2 5000  KI690-AM2 Motherboard +	4387  SB600 USB (OHCI0) +		103c 280a  DC5750 Microtower +		1179 ff50  Satellite P305D-S8995E +		1462 7368  K9AG Neo2 +		17f2 5000  KI690-AM2 Motherboard +	4388  SB600 USB (OHCI1) +		103c 280a  DC5750 Microtower +		1179 ff50  Satellite P305D-S8995E +		1462 7368  K9AG Neo2 +		17f2 5000  KI690-AM2 Motherboard +	4389  SB600 USB (OHCI2) +		103c 280a  DC5750 Microtower +		1179 ff50  Satellite P305D-S8995E +		1462 7368  K9AG Neo2 +		17f2 5000  KI690-AM2 Motherboard +	438a  SB600 USB (OHCI3) +		103c 280a  DC5750 Microtower +		1179 ff50  Satellite P305D-S8995E +		1462 7368  K9AG Neo2 +		17f2 5000  KI690-AM2 Motherboard +	438b  SB600 USB (OHCI4) +		103c 280a  DC5750 Microtower +		1179 ff50  Satellite P305D-S8995E +		1462 7368  K9AG Neo2 +		17f2 5000  KI690-AM2 Motherboard +	438c  SB600 IDE +		103c 280a  DC5750 Microtower +		1179 ff50  Satellite P305D-S8995E +		1458 5002  Gigabyte GA-MA69G-S3H Motherboard +		1462 7368  K9AG Neo2 +		17f2 5000  KI690-AM2 Motherboard +	438d  SB600 PCI to LPC Bridge +		103c 280a  DC5750 Microtower +		1179 ff50  Satellite P305D-S8995E +		1462 7368  K9AG Neo2 +		17f2 5000  KI690-AM2 Motherboard +	438e  SB600 AC97 Modem +	4390  SB7x0/SB8x0/SB9x0 SATA Controller [IDE mode] +		1043 82ef  M3A78-EH Motherboard +		1043 8389  M4A785TD Motherboard +		1458 b002  GA-MA770-DS3rev2.0 Motherboard +		1849 4390  Motherboard (one of many) +	4391  SB7x0/SB8x0/SB9x0 SATA Controller [AHCI mode] +		103c 1611  Pavilion DM1Z-3000 +		1043 82ef  M3A78-EH Motherboard +		1043 8443  M5A88-V EVO +		174b 1001  PURE Fusion Mini +	4392  SB7x0/SB8x0/SB9x0 SATA Controller [Non-RAID5 mode] +	4393  SB7x0/SB8x0/SB9x0 SATA Controller [RAID5 mode] +	4394  SB7x0/SB8x0/SB9x0 SATA Controller [AHCI mode] +	4395  SB8x0/SB9x0 SATA Controller [Storage mode] +	4396  SB7x0/SB8x0/SB9x0 USB EHCI Controller +		1019 2120  A785GM-M +		103c 1611  Pavilion DM1Z-3000 +		1043 82ef  M3A78-EH Motherboard +		1043 8443  M5A88-V EVO +		15d9 a811  H8DGU +		174b 1001  PURE Fusion Mini +	4397  SB7x0/SB8x0/SB9x0 USB OHCI0 Controller +		1019 2120  A785GM-M +		103c 1611  Pavilion DM1Z-3000 +		1043 82ef  M3A78-EH Motherboard +		1043 8443  M5A88-V EVO +		15d9 a811  H8DGU +		174b 1001  PURE Fusion Mini +	4398  SB7x0 USB OHCI1 Controller +		1019 2120  A785GM-M +		1043 82ef  M3A78-EH Motherboard +		15d9 a811  H8DGU +	4399  SB7x0/SB8x0/SB9x0 USB OHCI2 Controller +		1019 2120  A785GM-M +		1043 82ef  M3A78-EH Motherboard +		1043 8443  M5A88-V EVO +		174b 1001  PURE Fusion Mini +	439c  SB7x0/SB8x0/SB9x0 IDE Controller +		1019 2120  A785GM-M +		1043 82ef  M3A78-EH Motherboard +	439d  SB7x0/SB8x0/SB9x0 LPC host controller +		1019 2120  A785GM-M +		103c 1611  Pavilion DM1Z-3000 +		1043 82ef  M3A78-EH Motherboard +		1043 8443  M5A88-V EVO +		174b 1001  PURE Fusion Mini +	43a0  SB700/SB800/SB900 PCI to PCI bridge (PCIE port 0) +	43a1  SB700/SB800/SB900 PCI to PCI bridge (PCIE port 1) +	43a2  SB900 PCI to PCI bridge (PCIE port 2) +	43a3  SB900 PCI to PCI bridge (PCIE port 3) +	4437  RS250 [Mobility Radeon 7000 IGP] +	4554  210888ET [Mach64 ET] +	4654  Mach64 VT +	4742  3D Rage PRO AGP 2X +		1002 0040  Rage Pro Turbo AGP 2X +		1002 0044  Rage Pro Turbo AGP 2X +		1002 0061  Rage Pro AIW AGP 2X +		1002 0062  Rage Pro AIW AGP 2X +		1002 0063  Rage Pro AIW AGP 2X +		1002 0080  Rage Pro Turbo AGP 2X +		1002 0084  Rage Pro Turbo AGP 2X +		1002 4742  Rage Pro Turbo AGP 2X +		1002 8001  Rage Pro Turbo AGP 2X +		1028 0082  Rage Pro Turbo AGP 2X +		1028 4082  Optiplex GX1 Onboard Display Adapter +		1028 8082  Rage Pro Turbo AGP 2X +		1028 c082  Rage Pro Turbo AGP 2X +		8086 4152  Xpert 98D AGP 2X +		8086 464a  Rage Pro Turbo AGP 2X +	4744  3D Rage PRO AGP 1X +		1002 4744  Rage Pro Turbo AGP +		8086 4d55  Rage 3D Pro AGP 1X [Intel MU440EX] +	4749  3D Rage PRO PCI +		1002 0061  Rage Pro AIW +		1002 0062  Rage Pro AIW +	474d  Rage XL AGP 2X +		1002 0004  Xpert 98 RXL AGP 2X +		1002 0008  Xpert 98 RXL AGP 2X +		1002 0080  Rage XL AGP 2X +		1002 0084  Xpert 98 AGP 2X +		1002 474d  Rage XL AGP +		1033 806a  Rage XL AGP +	474e  Rage XC AGP +		1002 474e  Rage XC AGP +	474f  Rage XL +		1002 0008  Rage XL +		1002 474f  Rage XL +	4750  3D Rage Pro PCI +		1002 0040  Rage Pro Turbo +		1002 0044  Rage Pro Turbo +		1002 0080  Rage Pro Turbo +		1002 0084  Rage Pro Turbo +		1002 4750  Rage Pro Turbo +	4752  Rage XL PCI +		0e11 001e  Proliant Rage XL +		1002 0008  Rage XL +		1002 4752  Proliant Rage XL +		1002 8008  Rage XL +		1014 0240  eServer xSeries server mainboard +		1028 00ce  PowerEdge 1400 +		1028 00d1  PowerEdge 2550 +		1028 00d9  PowerEdge 2500 +		1028 0134  PowerEdge 600SC +		1028 014a  PowerEdge 1750 +		1028 0165  PowerEdge 750 +		103c 10e1  NetServer Rage XL +		103c 3208  ProLiant DL140 G2 +		107b 6400  6400 Server +		1734 007a  PRIMERGY RX/TX series onboard VGA +		1734 1073  Primergy Econel 200 D2020 mainboard +		8086 3411  SDS2 Mainboard +		8086 3427  S875WP1-E mainboard +		8086 5744  S845WD1-E mainboard +	4753  Rage XC +		1002 4753  Rage XC +	4754  3D Rage II/II+ PCI [Mach64 GT] +	4755  Mach64 GTB [3D Rage II+ DVD] +	4756  3D Rage IIC PCI [Mach64 GT IIC] +		1002 4756  Rage IIC +	4757  3D Rage IIC AGP +		1002 4757  Rage IIC AGP +		1028 0089  Rage 3D IIC +		1028 008e  PowerEdge 1300 onboard video +		1028 4082  Rage 3D IIC +		1028 8082  Rage 3D IIC +		1028 c082  Rage 3D IIC +	4758  210888GX [Mach64 GX PCI] +	4759  3D Rage IIC PCI +	475a  3D Rage IIC AGP +		1002 0084  Rage 3D Pro AGP 2x XPERT 98 +		1002 0087  Rage 3D IIC +		1002 475a  Rage IIC AGP +	4966  RV250 [Radeon 9000 Series] +		10f1 0002  RV250 If [Tachyon G9000 PRO] +		148c 2039  RV250 If [Radeon 9000 Pro "Evil Commando"] +		1509 9a00  RV250 If [Radeon 9000 "AT009"] +		1681 0040  RV250 If [3D prophet 9000] +		174b 7176  Radeon 9000 Pro +		174b 7192  RV250 If [Radeon 9000 "Atlantis"] +		17af 2005  RV250 If [Excalibur Radeon 9000 Pro] +		17af 2006  RV250 If [Excalibur Radeon 9000] +	496e  RV250 [Radeon 9000] (Secondary) +	4a49  R420 [Radeon X800 PRO/GTO AGP] +		174b 2620  R420 [Radeon X800 GTO AGP] +	4a4a  R420 [Radeon X800 GT AGP] +	4a4b  R420 [Radeon X800 AGP Series] +	4a4d  R420 GL [FireGL X3-256] +	4a4e  RV420/M18 [Mobility Radeon 9800] +	4a4f  R420 [Radeon X850 AGP] +	4a50  R420 [Radeon X800 XT Platinum Edition AGP] +	4a54  R420 [Radeon X800 VE AGP] +		1002 4422  All-In-Wonder X800 VE AGP +	4a69  R420 [Radeon X800 PRO/GTO] (Secondary) +	4a6a  R420 [Radeon X800] (Secondary) +	4a6b  R420 [Radeon X800 XT AGP] (Secondary) +	4a70  R420 [Radeon X800 XT Platinum Edition AGP] (Secondary) +	4a74  R420 [Radeon X800 VE] (Secondary) +	4b49  R481 [Radeon X850 XT AGP] +	4b4b  R481 [Radeon X850 PRO AGP] +	4b4c  R481 [Radeon X850 XT Platinum Edition AGP] +	4b69  R481 [Radeon X850 XT AGP] (Secondary) +	4b6b  R481 [Radeon X850 PRO AGP] (Secondary) +	4b6c  R481 [Radeon X850 XT Platinum Edition AGP] (Secondary) +	4c42  3D Rage LT PRO AGP 2X +		0e11 b0e7  Rage LT Pro (Compaq Presario 5240) +		0e11 b0e8  Rage 3D LT Pro +		0e11 b10e  3D Rage LT Pro (Compaq Armada 1750) +		1002 0040  Rage LT Pro AGP 2X +		1002 0044  Rage LT Pro AGP 2X +		1002 4c42  Rage LT Pro AGP 2X +		1002 8001  Rage LT Pro AGP 2X +		1028 0085  Rage 3D LT Pro +	4c46  Rage Mobility 128 AGP 2X/Mobility M3 +		1002 0155  IBM Thinkpad A22p +		1014 0155  IBM Thinkpad A22p +		1028 00b1  Latitude C600 +	4c47  3D Rage IIC PCI / Mobility Radeon 7500/7500C +	4c49  3D Rage LT PRO PCI +		1002 0004  Rage LT Pro +		1002 0040  Rage LT Pro +		1002 0044  Rage LT Pro +		1002 4c49  Rage LT Pro +	4c4d  Rage Mobility AGP 2x Series +		0e11 b111  Armada M700 +		0e11 b160  Armada E500 +		1002 0084  Xpert 98 AGP 2X (Mobility) +		1014 0154  ThinkPad A20m/A21m +		1028 00aa  Latitude CPt +		1028 00bb  Latitude CPx +		1179 ff00  Satellite 1715XCDS laptop +		13bd 1019  PC-AR10 +	4c50  3D Rage LT PRO PCI +		1002 4c50  Rage LT Pro +	4c52  Rage Mobility-M1 PCI +		1033 8112  Versa Note VXi +	4c54  264LT [Mach64 LT] +	4c57  RV200/M7 [Mobility Radeon 7500] +		1014 0517  ThinkPad T30 +		1014 0530  ThinkPad T4x Series +		1028 00e6  Radeon Mobility M7 LW (Dell Inspiron 8100) +		1028 012a  Latitude C640 +		1043 1622  Mobility Radeon M7 (L3C/S) +		144d c006  Radeon Mobility M7 LW in vpr Matrix 170B4 +	4c58  RV200/M7 GL [Mobility FireGL 7800] +	4c59  RV100/M6 [Rage/Radeon Mobility Series] +		0e11 b111  Evo N600c +		1014 0235  ThinkPad A30/A30p (2652/2653) +		1014 0239  ThinkPad X22/X23/X24 +		103c 0025  XE4500 Notebook +		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP +		104d 8140  PCG-Z1SP laptop +		1509 1930  Medion MD9703 +	4c66  RV250/M9 GL [Mobility FireGL 9000/Radeon 9000] +		1014 054d  ThinkPad T41 +	4c6e  RV250/M9 [Mobility Radeon 9000] (Secondary) +	4d46  Rage Mobility 128 AGP 4X/Mobility M4 +	4d52  Theater 550 PRO PCI [ATI TV Wonder 550] +	4d53  Theater 550 PRO PCIe +	4e44  R300 [Radeon 9700/9700 PRO] +		1002 515e  Radeon ES1000 +		1002 5965  Radeon ES1000 +	4e45  R300 [Radeon 9500 PRO/9700] +		1002 0002  Radeon R300 NE [Radeon 9500 Pro] +		1681 0002  Hercules 3D Prophet 9500 PRO [Radeon 9500 Pro] +	4e46  R300 [Radeon 9600 TX] +	4e47  R300 GL [FireGL X1] +	4e48  R350 [Radeon 9800 Series] +	4e49  R350 [Radeon 9800] +	4e4a  R360 [Radeon 9800 XXL/XT] +		1002 4e4a  R360 [Radeon 9800 XT] +	4e4b  R350 GL [FireGL X2 AGP Pro] +	4e50  RV350/M10 [Mobility Radeon 9600 PRO Turbo] +		1025 005a  TravelMate 290 +		103c 088c  NC8000 laptop +		103c 0890  NC6000 laptop +		144d c00c  P35 notebook +		1462 0311  MSI M510A +		1734 1055  Amilo M1420W +	4e51  RV350 [Radeon 9550/9600/X1050 Series] +	4e52  RV350/M10 [Mobility Radeon 9500/9700 SE] +		144d c00c  P35 notebook +	4e54  RV350/M10 GL [Mobility FireGL T2] +	4e56  RV360/M12 [Mobility Radeon 9550] +	4e64  R300 [Radeon 9700 PRO] (Secondary) +	4e65  R300 [Radeon 9500 PRO] (Secondary) +		1002 0003  Radeon R300 NE [Radeon 9500 Pro] +		1681 0003  Hercules 3D Prophet 9500 PRO [Radeon 9500 Pro] (Secondary) +	4e66  RV350 [Radeon 9600] (Secondary) +	4e67  R300 GL [FireGL X1] (Secondary) +	4e68  R350 [Radeon 9800 PRO] (Secondary) +	4e69  R350 [Radeon 9800] (Secondary) +	4e6a  RV350 [Radeon 9800 XT] (Secondary) +		1002 4e6a  R360 [Radeon 9800 XT] (Secondary) +		1002 4e71  M10 NQ [Radeon Mobility 9600] +	4e71  RV350/M10 [Mobility Radeon 9600] (Secondary) +	4f72  RV250 [Radeon 9000 Series] +	4f73  RV250 [Radeon 9000 Series] (Secondary) +	5044  All-In-Wonder 128 PCI +		1002 0028  Rage 128 AIW +		1002 0029  Rage 128 AIW +	5046  Rage 128 PRO AGP 4x TMDS +		1002 0004  Rage Fury Pro +		1002 0008  Rage Fury Pro/Xpert 2000 Pro +		1002 0014  Rage Fury Pro +		1002 0018  Rage Fury Pro/Xpert 2000 Pro +		1002 0028  Rage 128 Pro AIW AGP +		1002 002a  Rage 128 Pro AIW AGP +		1002 0048  Rage Fury Pro +		1002 2000  Rage Fury MAXX AGP 4x (TMDS) (VGA device) +		1002 2001  Rage Fury MAXX AGP 4x (TMDS) (Extra device?!) +	5050  Rage128 [Xpert 128 PCI] +		1002 0008  Xpert 128 +	5052  Rage 128 PRO AGP 4X TMDS +	5144  R100 [Radeon 7200 / All-In-Wonder Radeon] +		1002 0008  Radeon 7000/Radeon VE +		1002 0009  Radeon 7000/Radeon +		1002 000a  Radeon 7000/Radeon +		1002 001a  Radeon 7000/Radeon +		1002 0029  Radeon AIW +		1002 0038  Radeon 7000/Radeon +		1002 0039  Radeon 7000/Radeon +		1002 008a  Radeon 7000/Radeon +		1002 00ba  Radeon 7000/Radeon +		1002 0139  Radeon 7000/Radeon +		1002 028a  Radeon 7000/Radeon +		1002 02aa  Radeon AIW +		1002 053a  Radeon 7000/Radeon +	5148  R200 GL [FireGL 8800] +		1002 010a  FireGL 8800 64Mb +		1002 0152  FireGL 8800 128Mb +		1002 0162  FireGL 8700 32Mb +		1002 0172  FireGL 8700 64Mb +	514c  R200 [Radeon 8500/8500 LE] +		1002 003a  Radeon R200 QL [Radeon 8500 LE] +		1002 013a  Radeon 8500 +		148c 2026  R200 QL [Radeon 8500 Evil Master II Multi Display Edition] +		1681 0010  Radeon 8500 [3D Prophet 8500 128Mb] +		174b 7149  Radeon 8500 LE +		1787 0f08  Radeon R200 QL [PowerMagic Radeon 8500] +	514d  R200 [Radeon 9100] +	5157  RV200 [Radeon 7500/7500 LE] +		1002 013a  Radeon 7500 +		1002 0f2b  ALL-IN-WONDER VE PCI +		1002 103a  Dell Optiplex GX260 +		1458 4000  RV200 QW [RADEON 7500 PRO MAYA AR] +		148c 2024  RV200 QW [Radeon 7500LE Dual Display] +		148c 2025  RV200 QW [Radeon 7500 Evil Master Multi Display Edition] +		148c 2036  RV200 QW [Radeon 7500 PCI Dual Display] +		174b 7146  RV200 QW [Radeon 7500 LE] +		174b 7147  Radeon 7500 LE +		174b 7161  Radeon RV200 QW [Radeon 7500 LE] +		17af 0202  RV200 QW [Excalibur Radeon 7500LE] +	5159  RV100 [Radeon 7000 / Radeon VE] +		1002 000a  Radeon 7000/Radeon VE +		1002 000b  Radeon 7000 +		1002 0038  Radeon 7000/Radeon VE +		1002 003a  Radeon 7000/Radeon VE +		1002 00ba  Radeon 7000/Radeon VE +		1002 013a  Radeon 7000/Radeon VE +		1002 0908  XVR-100 (supplied by Sun) +# The IBM card doubles as an ATI PCI video adapter +		1014 029a  Remote Supervisor Adapter II (RSA2) +		1014 02c8  eServer xSeries server mainboard +		1028 016c  PowerEdge 1850 Embedded Radeon 7000/VE +		1028 016d  PowerEdge 2850 Embedded Radeon 7000-M +		1028 0170  PowerEdge 6850 Embedded Radeon 7000/VE +		1028 019a  PowerEdge SC1425 +		103c 1292  Radeon 7000 +		1043 c00a  A7000/T/64M +		1458 4002  RV100 QY [RADEON 7000 PRO MAYA AV Series] +		148c 2003  RV100 QY [Radeon 7000 Multi-Display Edition] +		148c 2023  RV100 QY [Radeon 7000 Evil Master Multi-Display] +		174b 0280  Radeon RV100 QY [Radeon 7000/VE] +		174b 7112  Radeon VE 7000 +		174b 7c28  Radeon VE 7000 DDR +		1787 0202  RV100 QY [Excalibur Radeon 7000] +		17ee 1001  Radeon 7000 64MB DDR + DVI +	515e  ES1000 +		1028 01bb  PowerEdge 1955 Embedded ATI ES1000 +		1028 01df  PowerEdge SC440 +		1028 01e6  PowerEdge 860 +		1028 01f0  PowerEdge R900 Embedded ATI ES1000 +		1028 0205  PowerEdge 2970 Embedded ATI ES1000 +		1028 020b  PowerEdge T605 Embedded ATI ES1000 +		1028 020f  PowerEdge R300 Embedded ATI ES1000 +		1028 0210  PowerEdge T300 Embedded ATI ES1000 +		1028 0221  PowerEdge R805 Embedded ATI ES1000 +		1028 0223  PowerEdge R905 Embedded ATI ES1000 +		1028 0225  PowerEdge T105 Embedded ATI ES1000 +		1028 023c  PowerEdge R200 Embedded ATI ES1000 +		103c 1304  Integrity iLO2 Advanced KVM VGA [AD307A] +		15d9 8680  X7DVL-E-O motherboard +		15d9 9680  X7DBN Motherboard +		8086 3476  S5000PSLSATA Server Board +	5245  Rage 128 GL PCI +		1002 0008  Xpert 128 +		1002 0028  Rage 128 AIW +		1002 0029  Rage 128 AIW +		1002 0068  Rage 128 AIW +	5246  Rage Fury/Xpert 128/Xpert 2000 AGP 2x +		1002 0004  Magnum/Xpert 128/Xpert 99 +		1002 0008  Magnum/Xpert128/X99/Xpert2000 +		1002 0028  Rage 128 AIW AGP +		1002 0044  Rage Fury/Xpert 128/Xpert 2000 +		1002 0068  Rage 128 AIW AGP +		1002 0448  Rage Fury +	524b  Rage 128 VR PCI +	524c  Rage 128 VR AGP +		1002 0008  Xpert 99/Xpert 2000 +		1002 0088  Xpert 99 +	5346  Rage 128 SF/4x AGP 2x +		1002 0048  RAGE 128 16MB VGA TVOUT AMC PAL +	534d  Rage 128 4X AGP 4x +		1002 0008  Xpert 99/Xpert 2000 +		1002 0018  Xpert 2000 +	5354  Mach 64 VT +		1002 5654  Mach 64 reference +	5446  Rage 128 PRO Ultra AGP 4x +		1002 0004  Rage Fury Pro +		1002 0008  Rage Fury Pro/Xpert 2000 Pro +		1002 0018  Rage Fury Pro/Xpert 2000 Pro +		1002 0028  Rage 128 AIW Pro AGP +		1002 0029  Rage 128 AIW +		1002 002a  Rage 128 AIW Pro AGP +		1002 002b  Rage 128 AIW +		1002 0048  Xpert 2000 Pro +	5452  Rage 128 PRO Ultra4XL VR-R AGP +		1002 001c  Rage 128 Pro 4XL +		103c 1279  Rage 128 Pro 4XL +	5460  RV370/M22 [Mobility Radeon X300] +		1775 1100  CR11/VR11 Single Board Computer +	5461  RV370/M22 [Mobility Radeon X300] +	5462  RV380/M24C [Mobility Radeon X600 SE] +	5464  RV370/M22 GL [Mobility FireGL V3100] +	5549  R423 [Radeon X800 GTO] +	554a  R423 [Radeon X800 XT Platinum Edition] +	554b  R423 [Radeon X800 GT/SE] +		1002 0302  Radeon X800 SE +	554d  R430 [Radeon X800 XL] +		1002 0322  All-In-Wonder X800 XL +		1458 2124  GV-R80L256V-B (AGP) +	554e  R430 [All-In-Wonder X800 GT] +	554f  R430 [Radeon X800] +	5550  R423 GL [FireGL V7100] +	5551  R423 GL [FireGL V5100] +	5569  R423 [Radeon X800 PRO] (Secondary) +	556b  R423 [Radeon X800 GT] (Secondary) +	556d  R430 [Radeon X800 XL] (Secondary) +		1458 2125  GV-R80L256V-B (AGP) +	556f  R430 [Radeon X800] (Secondary) +	5571  R423 GL [FireGL V5100] (Secondary) +	564b  RV410/M26 GL [Mobility FireGL V5000] +	564f  RV410/M26 [Mobility Radeon X700 XL] +	5652  RV410/M26 [Mobility Radeon X700] +	5653  RV410/M26 [Mobility Radeon X700] +		1025 0080  Aspire 5024WLMi +		103c 0940  HP Compaq NW8240 Mobile Workstation +	5654  264VT [Mach64 VT] +		1002 5654  Mach64VT Reference +	5655  264VT3 [Mach64 VT3] +	5656  264VT4 [Mach64 VT4] +	5657  RV410 [Radeon X550 XTX / X700] +	5830  RS300 Host Bridge +	5831  RS300 Host Bridge +	5832  RS300 Host Bridge +	5833  RS300 Host Bridge +	5834  RS300 [Radeon 9100 IGP] +	5835  RS300M [Mobility Radeon 9100 IGP] +	5838  RS300 AGP Bridge +	5854  RS480 [Radeon Xpress 200 Series] (Secondary) +	5874  RS480 [Radeon Xpress 1150] (Secondary) +	5940  RV280 [Radeon 9200 PRO] (Secondary) +		17af 2021  Excalibur Radeon 9250 (Secondary) +	5941  RV280 [Radeon 9200] (Secondary) +		1458 4019  Radeon 9200 +		174b 7c12  Radeon 9200 +		17af 200d  Excalibur Radeon 9200 +		18bc 0050  GC-R9200-C3 (Secondary) +	5944  RV280 [Radeon 9200 SE PCI] +	5950  RS480/RS482/RS485 Host Bridge +		1025 0080  Aspire 5024WLMMi +		103c 280a  DC5750 Microtower +		103c 2a20  Pavilion t3030.de Desktop PC +		103c 308b  MX6125 +		1462 0131  MS-1013 Notebook +		1462 7217  Aspire L250 +	5951  RX480/RX482 Host Bridge +	5952  RD580 Host Bridge +	5954  RS480 [Radeon Xpress 200 Series] +		1002 5954  RV370 [Radeon Xpress 200G Series] +	5955  RS480M [Mobility Radeon Xpress 200] +		1002 5955  RS480 0x5955 [Radeon XPRESS 200M 5955 (PCIE)] +		103c 308b  MX6125 +		1462 0131  MS-1013 Notebook +	5956  RD790 Host Bridge +	5957  RX780/RX790 Host Bridge +		1849 5957  A770CrossFire Motherboard +	5958  RD780 Host Bridge +	5960  RV280 [Radeon 9200 PRO] +		17af 2020  Excalibur Radeon 9250 +	5961  RV280 [Radeon 9200] +		1002 2f72  All-in-Wonder 9200 Series +		1019 4c30  Radeon 9200 VIVO +		12ab 5961  YUAN SMARTVGA Radeon 9200 +		1458 4018  Radeon 9200 +		174b 7c13  Radeon 9200 +		17af 200c  Excalibur Radeon 9200 +		18bc 0050  Radeon 9200 Game Buster +		18bc 0051  GC-R9200-C3 +		18bc 0053  Radeon 9200 Game Buster VIVO +	5962  RV280 [Radeon 9200] +	5964  RV280 [Radeon 9200 SE] +		1002 5964  Radeon 9200 SE, 64-bit 128MB DDR, 200/166MHz +		1043 c006  Radeon 9200 SE / TD / 128M +		1458 4018  Radeon 9200 SE +		1458 4032  Radeon 9200 SE 128MB +		147b 6191  R9200SE-DT +		148c 2073  CN-AG92E +		174b 7c13  Radeon 9200 SE +		1787 5964  Excalibur 9200SE VIVO 128M +		17af 2012  Radeon 9200 SE Excalibur +		18bc 0170  Sapphire Radeon 9200 SE 128MB Game Buster +		18bc 0173  GC-R9200L(SE)-C3H [Radeon 9200 Game Buster] +	5965  RV280 GL [FireMV 2200 PCI] +	5974  RS482/RS485 [Radeon Xpress 1100/1150] +		103c 280a  DC5750 Microtower +		1462 7141  Aspire L250 +	5975  RS482M [Mobility Radeon Xpress 200] +	5978  RX780/RD790 PCI to PCI bridge (external gfx0 port A) +		1849 5957  A770CrossFire Motherboard +	5979  RD790 PCI to PCI bridge (external gfx0 port B) +	597a  RD790 PCI to PCI bridge (PCI express gpp port A) +	597b  RX780/RD790 PCI to PCI bridge (PCI express gpp port B) +	597c  RD790 PCI to PCI bridge (PCI express gpp port C) +	597d  RX780/RD790 PCI to PCI bridge (PCI express gpp port D) +	597e  RD790 PCI to PCI bridge (PCI express gpp port E) +		1849 5957  A770CrossFire Motherboard +	597f  RD790 PCI to PCI bridge (PCI express gpp port F) +		1849 5957  A770CrossFire Motherboard +	5980  RD790 PCI to PCI bridge (external gfx1 port A) +	5981  RD790 PCI to PCI bridge (external gfx1 port B) +	5982  RD790 PCI to PCI bridge (NB-SB link) +	5a10  RD890 Northbridge only dual slot (2x16) PCI-e GFX Hydra part +	5a11  RD890 Northbridge only single slot PCI-e GFX Hydra part +	5a12  RD890 Northbridge only dual slot (2x8) PCI-e GFX Hydra part +		15d9 a811  H8DGU +	5a13  RD890 PCI to PCI bridge (external gfx0 port A) +	5a14  RD890 PCI to PCI bridge (external gfx0 port B) +	5a15  RD890 PCI to PCI bridge (PCI express gpp port A) +	5a16  RD890 PCI to PCI bridge (PCI express gpp port B) +	5a17  RD890 PCI to PCI bridge (PCI express gpp port C) +	5a18  RD890 PCI to PCI bridge (PCI express gpp port D) +		15d9 a811  H8DGU +	5a19  RD890 PCI to PCI bridge (PCI express gpp port E) +	5a1a  RD890 PCI to PCI bridge (PCI express gpp port F) +	5a1b  RD890 PCI to PCI bridge (PCI express gpp port G) +	5a1c  RD890 PCI to PCI bridge (PCI express gpp port H) +	5a1d  RD890 PCI to PCI bridge (external gfx1 port A) +	5a1e  RD890 PCI to PCI bridge (external gfx1 port B) +	5a1f  RD890 PCI to PCI bridge (NB-SB link) +		15d9 a811  H8DGU +	5a20  RD890S PCI Express bridge for GPP2 port 1 +	5a23  RD990 I/O Memory Management Unit (IOMMU) +	5a31  RC410 Host Bridge +	5a33  RS400 Host Bridge +	5a34  RS4xx PCI Express Port [ext gfx] +	5a36  RC4xx/RS4xx PCI Express Port 1 +	5a37  RC4xx/RS4xx PCI Express Port 2 +	5a38  RC4xx/RS4xx PCI Express Port 3 +	5a39  RC4xx/RS4xx PCI Express Port 4 +	5a3f  RC4xx/RS4xx PCI Bridge [int gfx] +		1462 7217  Aspire L250 +	5a41  RS400 [Radeon Xpress 200] +	5a42  RS400M [Radeon Xpress 200M] +	5a61  RC410 [Radeon Xpress 200/1100] +	5a62  RC410M [Mobility Radeon Xpress 200M] +	5b60  RV370 [Radeon X300] +		1043 002a  Extreme AX300SE-X +		1043 032e  Extreme AX300/TD +		1458 2102  GV-RX30S128D (X300SE) +		1462 0400  RX300SE-TD128E (MS-8940 REV:200) +		1462 0402  RX300SE-TD128E (MS-8940) +		174b 0500  Radeon X300 (PCIE) +		196d 1086  X300SE HM +	5b62  RV370 [Radeon X600/X600 SE] +	5b63  RV370 [Radeon X300/X550/X1050 Series] +	5b64  RV370 GL [FireGL V3100] +	5b65  RV370 GL [FireMV 2200] +	5b66  RV370X +	5b70  RV370 [Radeon X300 SE] +# RX300SE-TD128E +		1462 0403  Radeon X300 SE 128MB DDR +		174b 0501  Radeon X300 SE +		196d 1087  Radeon X300 SE HyperMemory +	5b72  RV380 [Radeon X300/X550/X1050 Series] (Secondary) +	5b73  RV370 [Radeon X300/X550/X1050 Series] (Secondary) +	5b74  RV370 GL [FireGL V3100] (Secondary) +	5b75  RV370 GL [FireMV 2200] (Secondary) +	5c61  RV280/M9+ [Mobility Radeon 9200 AGP] +	5c63  RV280/M9+ [Mobility Radeon 9200 AGP] +		1002 5c63  Apple iBook G4 2004 +		144d c00c  P30 notebook +	5d44  RV280 [Radeon 9200 SE] (Secondary) +		1458 4019  Radeon 9200 SE (Secondary) +		1458 4032  Radeon 9200 SE 128MB +		147b 6190  R9200SE-DT (Secondary) +		174b 7c12  Radeon 9200 SE (Secondary) +		1787 5965  Excalibur 9200SE VIVO 128M (Secondary) +		17af 2013  Radeon 9200 SE Excalibur (Secondary) +		18bc 0171  Radeon 9200 SE 128MB Game Buster (Secondary) +		18bc 0172  GC-R9200L(SE)-C3H [Radeon 9200 Game Buster] +	5d45  RV280 GL [FireMV 2200 PCI] (Secondary) +	5d48  R423/M28 [Mobility Radeon X800 XT] +	5d49  R423/M28 GL [Mobility FireGL V5100] +	5d4a  R423/M28 [Mobility Radeon X800] +	5d4d  R480 [Radeon X850 XT Platinum Edition] +	5d4e  R480 [Radeon X850 SE] +	5d4f  R480 [Radeon X800 GTO] +	5d50  R480 GL [FireGL V7200] +	5d52  R480 [Radeon X850 XT] +		1002 0b12  PowerColor X850XT PCIe (Primary) +	5d57  R423 [Radeon X800 XT] +	5d6d  R480 [Radeon X850 XT Platinum Edition] (Secondary) +	5d6f  R480 [Radeon X800 GTO] (Secondary) +	5d72  R480 [Radeon X850 XT] (Secondary) +		1002 0b13  PowerColor X850XT PCIe (Secondary) +	5d77  R423 [Radeon X800 XT] (Secondary) +	5e48  RV410 GL [FireGL V5000] +	5e49  RV410 [Radeon X700 Series] +	5e4a  RV410 [Radeon X700 XT] +	5e4b  RV410 [Radeon X700 PRO] +	5e4c  RV410 [Radeon X700 SE] +	5e4d  RV410 [Radeon X700] +		148c 2116  Bravo X700 +	5e4f  RV410 [Radeon X700] +		1569 1e4f  Radeon X550 XT +	5e6b  RV410 [Radeon X700 PRO] (Secondary) +	5e6d  RV410 [Radeon X700] (Secondary) +		148c 2117  Bravo X700 (Secondary) +	5f57  R423 [Radeon X800 XT] +	6600  Mars [Radeon HD 8670A/8670M/8750M] +		103c 1952  ProBook 455 G1 +	6601  Mars [Radeon HD 8730M] +		103c 2100  FirePro M4100 +	6602  Mars +	6603  Mars +	6604  Opal XT [Radeon R7 M265] +	6605  Opal PRO [Radeon R7 M260] +	6606  Mars XTX [Radeon HD 8790M] +		1028 0684  FirePro W4170M +	6607  Mars LE [Radeon HD 8530M / R5 M240] +	6608  Oland GL [FirePro W2100] +	6610  Oland XT [Radeon HD 8670 / R7 250] +		1019 0030  Radeon HD 8670 +		1028 2120  Radeon R7 250 +		1028 2322  Radeon R7 250 +		1462 2910  Radeon HD 8670 +		1462 2911  Radeon HD 8670 +		1642 3c81  Radeon HD 8670 +		1642 3c91  Radeon HD 8670 +	6611  Oland [Radeon HD 8570 / R7 240 OEM] +		1028 210b  Radeon R5 240 OEM +		174b 4248  Radeon R7 240 OEM +		174b a240  Radeon R7 240 OEM +		1b0a 90d3  Radeon R7 240 OEM +	6613  Oland PRO [Radeon R7 240] +		1682 7240  R7 240 2048 MB +	6620  Mars +	6621  Mars PRO +	6623  Mars +	6631  Oland +	6640  Saturn XT [FirePro M6100] +	6641  Saturn PRO [Radeon HD 8930M] +	6646  Bonaire XT [Radeon R9 M280X] +	6647  Bonaire PRO [Radeon R9 M270X] +	6649  Bonaire [FirePro W5100] +	6650  Bonaire +	6651  Bonaire +	6658  Bonaire XTX [Radeon R7 260X] +	665c  Bonaire XT [Radeon HD 7790/8770 / R9 260 OEM] +		1043 0452  Radeon HD 7790 DirectCU II OC +# R7790-1GD5/OC +		1462 2930  Radeon HD 7790 OC +		1462 2932  Radeon HD 8770 +		1462 2934  Radeon R9 260 OEM +		148c 9260  Radeon R9 260 OEM +# FX-779A-CDB4 / FX-779A-CDBC +		1682 3310  Radeon HD 7790 Black Edition 2 GB +# 100356OCL / 11210-01-20G +		174b e253  Radeon HD 7790 Dual-X OC +		1787 2329  Radeon HD 7790 TurboDuo +	665d  Bonaire [Radeon R7 200 Series] +	6660  Sun XT [Radeon HD 8670A/8670M/8690M] +	6663  Sun PRO [Radeon HD 8570A/8570M] +		1025 0846  Radeon HD 8570A +	6664  Jet XT [Radeon R5 M240] +	6665  Jet PRO [Radeon R5 M230] +	6667  Jet ULT [Radeon R5 M230] +	666f  Sun LE [Radeon HD 8550M / R5 M230] +	6670  Hainan +	6704  Cayman PRO GL [FirePro V7900] +	6707  Cayman LE GL [FirePro V5900] +	6718  Cayman XT [Radeon HD 6970] +	6719  Cayman PRO [Radeon HD 6950] +	671c  Antilles [Radeon HD 6990] +	671d  Antilles [Radeon HD 6990] +	671f  Cayman CE [Radeon HD 6930] +	6720  Blackcomb [Radeon HD 6970M/6990M] +		1028 048f  Radeon HD 6990M +		1028 0490  Alienware M17x R3 Radeon HD 6970M +		1028 04a4  FirePro M8900 +		1028 04ba  Radeon HD 6990M +		1028 053f  FirePro M8900 +		106b 0b00  Radeon HD 6970M +		1558 5102  Radeon HD 6970M +		1558 5104  Radeon HD 6990M +		1558 7201  Radeon HD 6990M +		174b e188  Radeon HD 6970M +	6724  Blackcomb [Mobility Radeon HD 6000 series] +	6725  Blackcomb [Radeon HD 6900M Series] +	6738  Barts XT [Radeon HD 6870] +# HD-687A-ZDFC +		1682 3103  Radeon HD 8670 +		1787 201a  Barts XT [Radeon HD 6870 X2] +		1787 201b  Barts XT [Radeon HD 6870 X2] +	6739  Barts PRO [Radeon HD 6850] +		1043 03b4  EAH6850 [Radeon HD 6850] +	673e  Barts LE [Radeon HD 6790] +		148c 7720  Radeon HD 7720 OEM +	6740  Whistler [Radeon HD 6730M/6770M/7690M XT] +		1019 238c  Radeon HD 6730M +		1019 238e  Radeon HD 6730M +		1019 2391  Radeon HD 6730M +		1019 2392  Radeon HD 6770M +		1028 04a3  Precision M4600 +		1028 053e  FirePro M5950 +		103c 1630  FirePro M5950 +		103c 1631  FirePro M5950 +		103c 164b  Radeon HD 6730M +		103c 164e  Radeon HD 6730M +		103c 1657  Radeon HD 6770M +		103c 1658  Radeon HD 6770M +		103c 165a  Radeon HD 6770M +		103c 165b  Radeon HD 6770M +		103c 1688  Radeon HD 6770M +		103c 1689  Radeon HD 6770M +		103c 168a  Radeon HD 6770M +		103c 185e  Radeon HD 7690M XT +		103c 3388  Radeon HD 6770M +		103c 3389  Radeon HD 6770M +		103c 3582  Radeon HD 6770M +		103c 366c  Radeon HD 6730M +		1043 1d02  Radeon HD 6730M +		1043 1d12  Radeon HD 6730M +		104d 9084  Radeon HD 6730M +		104d 9085  Radeon HD 6730M +		144d b074  Radeon HD 6730M +		144d b077  Radeon HD 6730M +		144d b084  Radeon HD 6730M +		144d b088  Radeon HD 6730M +		17aa 3982  Radeon HD 6730M +	6741  Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] +		1019 238e  Radeon HD 6650M +		1019 238f  Radeon HD 6650M +		1025 0379  Radeon HD 6650M +		1025 037b  Radeon HD 6650M +		1025 037e  Radeon HD 6650M +		1025 0382  Radeon HD 6650M +		1025 0384  Radeon HD 6650M +		1025 0385  Radeon HD 6650M +		1025 0386  Radeon HD 6650M +		1025 0387  Radeon HD 6650M +		1025 0388  Radeon HD 6650M +		1025 0442  Radeon HD 6650M +		1025 0451  Radeon HD 6650M +		1025 0489  Radeon HD 6650M +		1025 048b  Radeon HD 6650M +		1025 048c  Radeon HD 6650M +		1025 050a  Radeon HD 6650M +		1025 050b  Radeon HD 6650M +		1025 050c  Radeon HD 6650M +		1025 050e  Radeon HD 6650M +		1025 050f  Radeon HD 6650M +		1025 0513  Radeon HD 6650M +		1025 0514  Radeon HD 6650M +		1025 0515  Radeon HD 6650M +		1025 0516  Radeon HD 6650M +		1025 051e  Radeon HD 6650M +		1025 051f  Radeon HD 6650M +		1025 0520  Radeon HD 6650M +		1025 0521  Radeon HD 6650M +		1025 052a  Radeon HD 6650M +		1025 0555  Radeon HD 6650M +		1025 0556  Radeon HD 6650M +		1025 055d  Radeon HD 6650M +		1025 055e  Radeon HD 6650M +		1025 056d  Radeon HD 6650M +		1025 059a  Radeon HD 6650M +		1025 059b  Radeon HD 6650M +		1025 059e  Radeon HD 6650M +		1025 059f  Radeon HD 6650M +		1025 0600  Radeon HD 6650M +		1025 0605  Radeon HD 6650M +		1025 0606  Radeon HD 6650M +		1025 0619  Radeon HD 6650M +		1028 04c1  Radeon HD 6630M +		1028 04c5  Radeon HD 6630M +		1028 04cd  Radeon HD 6630M +		1028 04d7  Radeon HD 6630M +		1028 04d9  Radeon HD 6630M +		1028 052d  Radeon HD 6630M +		103c 1617  Radeon HD 6650M +		103c 1646  Radeon HD 6750M +		103c 1647  Radeon HD 6650M +		103c 164b  Radeon HD 6650M +		103c 164e  Radeon HD 6650M +		103c 1688  Radeon HD 6750M +		103c 1689  Radeon HD 6750M +		103c 168a  Radeon HD 6750M +		103c 1860  Radeon HD 7690M +		103c 3385  Radeon HD 6630M +		103c 3560  Radeon HD 6750M +		103c 358d  Radeon HD 6750M +		103c 3590  Radeon HD 6750M +		103c 3593  Radeon HD 6750M +		103c 366c  Radeon HD 6650M +		1043 1cd2  Radeon HD 6650M +		1043 2121  Radeon HD 6650M +		1043 2122  Radeon HD 6650M +		1043 2123  Radeon HD 6650M +		1043 2125  Radeon HD 7670M +		1043 2127  Radeon HD 7670M +		104d 907b  Radeon HD 6630M +		104d 9080  Radeon HD 6630M +		104d 9081  Radeon HD 6630M +		106b 00e2  MacBookPro8,2 [Core i7, 15", Late 2011] +		1179 fd63  Radeon HD 6630M +		1179 fd65  Radeon HD 6630M +		144d c093  Radeon HD 6650M +		144d c0ac  Radeon HD 6650M +		144d c0b3  Radeon HD 6750M +		144d c539  Radeon HD 6630M +		144d c609  Radeon HD 6630M +		152d 0914  Radeon HD 6650M +		17aa 21e1  Radeon HD 6630M +		17aa 3970  Radeon HD 6650M +		17aa 3976  Radeon HD 6650M +		1854 0907  Radeon HD 6650M +	6742  Whistler LE [Radeon HD 6610M/7610M] +		1002 6570  Turks [Radeon HD 6570] +		1019 2393  Radeon HD 6610M +		1043 1d82  K53SK Laptop Radeon HD 7610M +		1179 fb22  Radeon HD 7610M +		1179 fb23  Radeon HD 7610M +		1179 fb27  Radeon HD 7610M +		1179 fb2a  Radeon HD 7610M +		1179 fb2c  Radeon HD 7610M +		1179 fb30  Radeon HD 7610M +		1179 fb31  Radeon HD 7610M +		1179 fb32  Radeon HD 7610M +		1179 fb38  Radeon HD 7610M +		1179 fb39  Radeon HD 7610M +		1179 fb3a  Radeon HD 7610M +		1179 fb3b  Radeon HD 7610M +		1179 fb40  Radeon HD 7610M +		1179 fb41  Radeon HD 7610M +		1179 fb47  Radeon HD 7610M +		1179 fb48  Radeon HD 7610M +		1179 fb49  Radeon HD 7610M +		1179 fb51  Radeon HD 7610M +		1179 fb52  Radeon HD 7610M +		1179 fb53  Radeon HD 7610M +		1179 fb56  Radeon HD 7610M +		1179 fb81  Radeon HD 7610M +		1179 fb82  Radeon HD 7610M +		1179 fb83  Radeon HD 7610M +		1179 fc56  Radeon HD 7610M +		1179 fcd4  Radeon HD 7610M +		1179 fcee  Radeon HD 7610M +		1458 6570  Turks [Radeon HD 6570] +		1462 6570  Turks [Radeon HD 6570] +		148c 6570  Turks [Radeon HD 6570] +		1682 6570  Turks [Radeon HD 6570] +		174b 5570  Turks [Radeon HD 5570] +		174b 6570  Turks [Radeon HD 6570] +		174b 7570  Turks [Radeon HD 7570] +		174b 8510  Turks [Radeon HD 8510] +		174b 8570  Turks [Radeon HD 8570] +		1787 6570  Turks [Radeon HD 6570] +		17af 6570  Turks [Radeon HD 6570] +		8086 2111  Radeon HD 6625M +	6743  Whistler [Radeon E6760] +	6749  Turks GL [FirePro V4900] +	674a  Turks GL [FirePro V3900] +	6750  Onega [Radeon HD 6650A/7650A] +		1462 2670  Radeon HD 6670A +		17aa 3079  Radeon HD 7650A +		17aa 307a  Radeon HD 6650A +		17aa 3087  Radeon HD 7650A +		17aa 3618  Radeon HD 6650A +		17aa 3623  Radeon HD 6650A +		17aa 3627  Radeon HD 6650A +	6751  Turks [Radeon HD 7650A/7670A] +		1028 0548  Radeon HD 7650A +		1462 2671  Radeon HD 7670A +		1462 2672  Radeon HD 7670A +		1462 2680  Radeon HD 7650A +		1462 2681  Radeon HD 7650A +		17aa 3087  Radeon HD 7650A +	6758  Turks XT [Radeon HD 6670/7670] +		1028 0b0e  Radeon HD 6670 +		103c 6882  Radeon HD 6670 +		1462 250a  Radeon HD 7670 +		148c 7670  Radeon HD 7670 +		1545 7670  Radeon HD 7670 +		1682 3300  Radeon HD 7670 +		174b 7670  Radeon HD 7670 +		174b e181  Radeon HD 6670 +		1787 2309  Radeon HD 6670 +	6759  Turks PRO [Radeon HD 6570/7570/8550] +		103c 3130  Radeon HD 6570 +		1043 0403  Radeon HD 6570 +		1462 2500  Radeon HD 6570 +		1462 2509  Radeon HD 7570 +		148c 7570  Radeon HD 7570 +		1642 3a67  Radeon HD 6570 +		1682 3280  Radeon HD 7570 +		1682 3530  Radeon HD 8550 +		174b 7570  Radeon HD 7570 +		174b e142  Radeon HD 6570 +		174b e181  Radeon HD 6570 +		1b0a 908f  Radeon HD 6570 +		1b0a 9090  Radeon HD 6570 +		1b0a 9091  Radeon HD 6570 +		1b0a 9092  Radeon HD 6570 +		1b0a 909e  Radeon HD 6570 +		1b0a 90b5  Radeon HD 7570 +		1b0a 90b6  Radeon HD 7570 +	675b  Turks [Radeon HD 7600 Series] +	675d  Turks PRO [Radeon HD 7570] +	675f  Turks LE [Radeon HD 5570/6510/7510/8510] +		148c 6510  Radeon HD 6510 +		148c 6530  Radeon HD 6530 +		148c 7510  Radeon HD 7510 +		1545 7570  Radeon HD 7570 +		174b 6510  Radeon HD 6510 +		174b 7510  Radeon HD 7510 +		174b 8510  Radeon HD 8510 +		1787 2012  Radeon HD 5570 2GB GDDR3 +		1787 2314  Radeon HD 5570 1GB DDR2/GDDR3 +	6760  Seymour [Radeon HD 6400M/7400M Series] +		1002 0124  Radeon HD 6470M +		1002 0134  Radeon HD 6470M +		1019 238b  Radeon HD 6470M +		1019 238e  Radeon HD 6470M +		1019 2390  Radeon HD 6470M +		1019 9985  Radeon HD 6470M +		1028 04c1  Radeon HD 6470M +		1028 04c3  Radeon HD 6470M +		1028 04ca  Radeon HD 6470M +		1028 04cb  Radeon HD 6470M +		1028 04cc  Vostro 3350 +		1028 04d1  Radeon HD 6470M +		1028 04d3  Radeon HD 6470M +		1028 04d7  Radeon HD 6470M +		1028 0502  Radeon HD 6470M +		1028 0503  Radeon HD 6470M +		1028 0506  Radeon HD 6470M +		1028 0507  Radeon HD 6470M +		1028 0514  Radeon HD 6470M +		1028 051c  Radeon HD 6450M +		1028 051d  Radeon HD 6450M +		103c 161a  Radeon HD 6470M +		103c 161b  Radeon HD 6470M +		103c 161e  Radeon HD 6470M +		103c 161f  Radeon HD 6470M +		103c 1622  Radeon HD 6450M +		103c 1623  Radeon HD 6450M +		103c 164a  Radeon HD 6470M +		103c 164d  Radeon HD 6470M +		103c 1651  Radeon HD 6470M +		103c 1656  Radeon HD 6490M +		103c 1658  Radeon HD 6490M +		103c 1659  Radeon HD 6490M +		103c 165b  Radeon HD 6490M +		103c 165d  Radeon HD 6470M +		103c 165f  Radeon HD 6470M +		103c 1661  Radeon HD 6470M +		103c 1663  Radeon HD 6470M +		103c 1665  Radeon HD 6470M +		103c 1667  Radeon HD 6470M +		103c 1669  Radeon HD 6470M +		103c 166b  Radeon HD 6470M +		103c 166c  Radeon HD 6470M +		103c 166e  Radeon HD 6470M +		103c 1670  Radeon HD 6470M +		103c 1672  Radeon HD 6470M +		103c 167a  Radeon HD 6470M +		103c 167b  Radeon HD 6470M +		103c 167d  Radeon HD 6490M +		103c 167f  Radeon HD 6490M +		103c 168c  Radeon HD 6470M +		103c 168f  Radeon HD 6470M +		103c 1694  Radeon HD 6470M +		103c 1696  Radeon HD 6470M +		103c 1698  Radeon HD 6470M +		103c 169a  Radeon HD 6470M +		103c 169c  Radeon HD 6490M +		103c 1855  Radeon HD 7450M +		103c 1859  Radeon HD 7450M +		103c 185c  Radeon HD 7450M +		103c 185d  Radeon HD 7470M +		103c 185f  Radeon HD 7470M +		103c 1863  Radeon HD 7450M +		103c 355c  Radeon HD 6490M +		103c 355f  Radeon HD 6490M +		103c 3563  Radeon HD 6470M +		103c 3565  Radeon HD 6470M +		103c 3567  Radeon HD 6470M +		103c 3569  Radeon HD 6470M +		103c 3581  Radeon HD 6490M +		103c 3584  Radeon HD 6470M +		103c 358c  Radeon HD 6490M +		103c 358f  Radeon HD 6490M +		103c 3592  Radeon HD 6490M +		103c 3596  Radeon HD 6490M +		103c 366b  Radeon HD 6470M +		103c 3671  FirePro M3900 +		103c 3673  Radeon HD 6470M +		1043 100a  Radeon HD 7470M +		1043 100c  Radeon HD 6470M +		1043 101b  Radeon HD 6470M +		1043 101c  Radeon HD 6470M +		1043 102a  Radeon HD 7450M +		1043 102c  Radeon HD 6470M +		1043 104b  Radeon HD 7470M +		1043 105d  Radeon HD 7470M +		1043 106b  Radeon HD 7470M +		1043 106d  Radeon HD 7470M +		1043 107d  Radeon HD 7470M +		1043 1cb2  Radeon HD 6470M +		1043 1d22  Radeon HD 6470M +		1043 1d32  Radeon HD 6470M +		1043 2001  Radeon HD 6470M +		1043 2002  Radeon HD 7470M +		1043 2107  Radeon HD 7470M +		1043 2108  Radeon HD 7470M +		1043 2109  Radeon HD 7470M +		1043 84a0  Radeon HD 6470M +		1043 84e9  Radeon HD 6470M +		1043 8515  Radeon HD 7470M +		1043 8517  Radeon HD 7470M +		1043 855a  Radeon HD 7470M +		104d 907b  Radeon HD 6470M +		104d 9081  Radeon HD 6470M +		104d 9084  Radeon HD 6470M +		104d 9085  Radeon HD 6470M +		1179 0001  Radeon HD 6450M +		1179 0003  Radeon HD 6450M +		1179 0004  Radeon HD 6450M +		1179 fb22  Radeon HD 7470M +		1179 fb23  Radeon HD 7470M +		1179 fb2c  Radeon HD 7470M +		1179 fb31  Radeon HD 7470M +		1179 fb32  Radeon HD 7470M +		1179 fb33  Radeon HD 7470M +		1179 fb38  Radeon HD 7470M +		1179 fb39  Radeon HD 7470M +		1179 fb3a  Radeon HD 7470M +		1179 fb40  Radeon HD 7470M +		1179 fb41  Radeon HD 7470M +		1179 fb42  Radeon HD 7470M +		1179 fb47  Radeon HD 7470M +		1179 fb48  Radeon HD 7470M +		1179 fb51  Radeon HD 7470M +		1179 fb52  Radeon HD 7470M +		1179 fb53  Radeon HD 7470M +		1179 fb81  Radeon HD 7470M +		1179 fb82  Radeon HD 7470M +		1179 fb83  Radeon HD 7470M +		1179 fc51  Radeon HD 6470M +		1179 fc52  Radeon HD 7470M +		1179 fc56  Radeon HD 7470M +		1179 fcd3  Radeon HD 7470M +		1179 fcd4  Radeon HD 7470M +		1179 fcee  Radeon HD 7470M +		1179 fdee  Radeon HD 7470M +		144d b074  Radeon HD 6470M +		144d b084  Radeon HD 6470M +		144d c095  Radeon HD 6470M +		144d c0b3  Radeon HD 6490M +		144d c538  Radeon HD 6470M +		144d c581  Radeon HD 6470M +		144d c589  Radeon HD 6470M +		144d c609  Radeon HD 7470M +		144d c625  Radeon HD 7470M +		144d c636  Radeon HD 7450M +		1462 10ac  Radeon HD 6470M +		152d 0916  Radeon HD 6470M +		17aa 21e5  Radeon HD 6470M +		17aa 3900  Radeon HD 7450M +		17aa 3902  Radeon HD 7450M +		17aa 3969  Radeon HD 6470M +		17aa 3970  Radeon HD 7450M +		17aa 3976  Radeon HD 6470M +		17aa 397b  Radeon HD 6470M +		17aa 397d  Radeon HD 6470M +		17aa 5101  Radeon HD 7470M +		17aa 5102  Radeon HD 7450M +		17aa 5103  Radeon HD 7450M +		17aa 5106  Radeon HD 7450M +		1854 0897  Radeon HD 6470M +		1854 0900  Radeon HD 6470M +		1854 0908  Radeon HD 6470M +		1854 2015  Radeon HD 6470M +	6761  Seymour LP [Radeon HD 6430M] +	6763  Seymour [Radeon E6460] +	6764  Seymour [Radeon HD 6400M Series] +	6765  Seymour [Radeon HD 6400M Series] +	6766  Caicos +	6767  Caicos +	6768  Caicos +	6770  Caicos [Radeon HD 6450A/7450A] +		17aa 308d  Radeon HD 7450A +		17aa 3623  Radeon HD 6450A +		17aa 3627  Radeon HD 6450A +		17aa 3629  Radeon HD 6450A +		17aa 363c  Radeon HD 6450A +		17aa 3658  Radeon HD 7470A +	6771  Caicos XTX [Radeon HD 8490 / R5 235X OEM] +	6772  Caicos [Radeon HD 7450A] +	6778  Caicos XT [Radeon HD 7470/8470 / R5 235 OEM] +		1019 0024  Radeon HD 7470 +		1019 0027  Radeon HD 8470 +		1028 2120  Radeon HD 7470 +		1462 b491  Radeon HD 8470 +		1462 b492  Radeon HD 8470 +		1462 b493  Radeon HD 8470 OEM +		1642 3c65  Radeon HD 8470 +		1642 3c75  Radeon HD 8470 +		174b 8145  Radeon HD 8470 +		174b e145  Radeon HD 7470 +	6779  Caicos [Radeon HD 6450/7450/8450 / R5 230 OEM] +		1019 0016  Radeon HD 6450 +		1019 0017  Radeon HD 6450 +		1019 0018  Radeon HD 6450 +		1028 2120  Radeon HD 6450 +		103c 2128  Radeon HD 6450 +		103c 2aee  Radeon HD 7450A +		1462 2125  Radeon HD 6450 +		1462 2346  Radeon HD 7450 +		1462 2490  Radeon HD 6450 +		1462 2494  Radeon HD 6450 +		1462 2496  Radeon HD 7450 +		148c 7450  Radeon HD 7450 +		148c 8450  Radeon HD 8450 OEM +		1545 7470  Radeon HD 7470 +		1642 3a65  Radeon HD 6450 +		1642 3a66  Radeon HD 7450 +		1642 3a75  Radeon HD 6450 +		1642 3a76  Radeon HD 7450 +		1682 3200  Radeon HD 7450 +		174b 7450  Radeon HD 7450 +		174b e127  Radeon HD 6450 +		174b e153  Radeon HD 6450 +		174b e164  Radeon HD 6450 1 GB DDR3 +		174b e180  Radeon HD 6450 +		174b e201  Radeon HD 6450 +		17af 8450  Radeon HD 8450 OEM +		1b0a 9096  Radeon HD 6450 +		1b0a 9097  Radeon HD 6450 +		1b0a 90a8  Radeon HD 6450A +		1b0a 90b1  Radeon HD 6450 +		1b0a 90b3  Radeon HD 7450A +		1b0a 90bb  Radeon HD 7450A +	677b  Caicos PRO [Radeon HD 7450] +	6780  Tahiti XT GL [FirePro W9000] +	6784  Tahiti [ATI FirePro V (FireGL V) Graphics Adapter] +	6788  Tahiti [ATI FirePro V (FireGL V) Graphics Adapter] +	678a  Tahiti PRO GL [FirePro Series] +		1002 030c  FirePro W8000 +		1002 0310  FirePro S9000 +		1002 0420  Radeon Sky 700 +		1002 0422  Radeon Sky 900 +		1002 0710  FirePro S9050 +		1002 0b0e  FirePro S10000 Passive +		1002 0b2a  FirePro S10000 +		1028 030c  FirePro W8000 +	6790  Tahiti +	6791  Tahiti +	6792  Tahiti +	6798  Tahiti XT [Radeon HD 7970/8970 OEM / R9 280X] +		1002 3000  Tahiti XT2 [Radeon HD 7970 GHz Edition] +		1002 3001  Tahiti XTL [Radeon R9 280X] +		1002 4000  Radeon HD 8970 OEM +		1043 041c  HD 7970 DirectCU II +		1043 0420  HD 7970 DirectCU II TOP +		1043 0444  HD 7970 DirectCU II TOP +		1043 0448  HD 7970 DirectCU II TOP +		1043 044a  Tahiti XT2 [Matrix HD 7970] +		1043 044c  Tahiti XT2 [Matrix HD 7970 Platinum] +		1043 3001  Tahiti XTL [ROG Matrix R9 280X] +		1043 3006  Tahiti XTL [Radeon R9 280X DirectCU II TOP] +		1043 9999  ARES II +		1092 3000  Tahiti XT2 [Radeon HD 7970 GHz Edition] +		1458 2261  Tahiti XT2 [Radeon HD 7970 GHz Edition OC] +# GV-R928XOC-3GD +		1458 3001  Tahiti XTL [Radeon R9 280X OC] +		1462 2774  MSI R7970 TF 3GD5/OC BE +		1682 3211  Double D HD 7970 Black Edition +# FX-797A-TNBC +		1682 3213  HD 7970 Black Edition +		1682 3214  Double D HD 7970 +		1787 201c  HD 7970 IceQ X² +# Radeon HD 7970 X2 +		1787 2317  Radeon HD 7990 +		1787 3000  Tahiti XT2 [Radeon HD 7970 GHz Edition] +	6799  New Zealand [Radeon HD 7900 Series] +	679a  Tahiti PRO [Radeon HD 7950/8950 OEM / R9 280] +		1002 0b01  Radeon HD 8950 OEM +		1002 3000  Tahiti PRO2 [Radeon HD 7950 Boost] +		1462 3000  Radeon HD 8950 OEM +		174b a003  Radeon R9 280 +	679b  Malta [Radeon HD 7990] +		1002 0b28  Radeon HD 8990 OEM +		1002 0b2a  Radeon HD 7990 +		1462 8036  Radeon HD 8990 OEM +		148c 8990  Radeon HD 8990 OEM +	679e  Tahiti LE [Radeon HD 7870 XT] +	679f  Tahiti +	67a0  Hawaii XT GL [FirePro W9100] +	67a1  Hawaii PRO GL [FirePro W8100] +	67a2  Hawaii GL +	67a8  Hawaii +	67a9  Hawaii +	67aa  Hawaii +	67b0  Hawaii XT [Radeon R9 290X] +	67b1  Hawaii PRO [Radeon R9 290] +	67b9  Vesuvius [Radeon R9 295X2] +	67be  Hawaii LE +	6800  Wimbledon XT [Radeon HD 7970M] +		1002 0124  Radeon HD 7970M +		8086 2110  Radeon HD 7970M +		8086 2111  Radeon HD 7970M +	6801  Neptune XT [Radeon HD 8970M] +		1002 0124  Radeon HD 8970M +		1462 1117  Radeon R9 M290X +		8086 2110  Radeon HD 8970M +		8086 2111  Radeon HD 8970M +	6802  Wimbledon +	6806  Neptune +	6808  Pitcairn XT GL [FirePro W7000] +		1002 0310  FirePro S7000 +		1002 0420  Radeon Sky 500 +	6809  Pitcairn LE GL [FirePro W5000] +	6810  Curacao XT [Radeon R9 270X] +	6811  Curacao PRO [Radeon R9 270] +	6816  Pitcairn +	6817  Pitcairn +	6818  Pitcairn XT [Radeon HD 7870 GHz Edition] +		1002 0b05  Radeon HD 8870 OEM +		174b 8b04  Radeon HD 8860 +	6819  Pitcairn PRO [Radeon HD 7850] +		174b e221  Radeon HD 7850 2GB GDDR5 DVI-I/DVI-D/HDMI/DP +	6820  Venus XTX [Radeon HD 8890M / R9 M275X] +		103c 1851  Radeon HD 7750M +		17aa 3801  Radeon R9 M275 +	6821  Venus XT [Radeon HD 8870M / R9 M270X] +		1002 031e  FirePro SX4000 +		1028 05cc  FirePro M5100 +		1028 15cc  FirePro M5100 +	6822  Venus PRO [Radeon E8860] +	6823  Venus PRO [Radeon HD 8850M / R9 M265X] +	6825  Heathrow XT [Radeon HD 7870M] +		1028 053f  FirePro M6000 +		1028 05cd  FirePro M6000 +		1028 15cd  FirePro M6000 +		103c 176c  FirePro M6000 +		8086 2111  Chelsea PRO +	6826  Chelsea LP [Radeon HD 7700M Series] +	6827  Heathrow PRO [Radeon HD 7850M/8850M] +	6828  Cape Verde PRO [FirePro W600] +	6829  Cape Verde +	682a  Venus PRO +	682b  Venus LE [Radeon HD 8830M] +	682c  Cape Verde GL [FirePro W4100] +	682d  Chelsea XT GL [FirePro M4000] +	682f  Chelsea LP [Radeon HD 7730M] +		103c 1851  Radeon HD 7750M +	6830  Cape Verde [Radeon HD 7800M Series] +	6831  Cape Verde [AMD Radeon HD 7700M Series] +	6835  Cape Verde PRX [Radeon R9 255 OEM] +	6837  Cape Verde LE [Radeon HD 7730/8730] +		1462 2796  Radeon HD 8730 +		1462 8092  Radeon HD 8730 +		148c 8730  Radeon HD 8730 +		1787 3000  Radeon HD 6570 +	6838  Cape Verde +	6839  Cape Verde +	683b  Cape Verde [Radeon HD 7700 Series] +	683d  Cape Verde XT [Radeon HD 7770/8760 / R7 250X] +		1002 0030  Radeon HD 8760 OEM +		1019 0030  Radeon HD 8760 OEM +		103c 6890  Radeon HD 8760 OEM +		1043 8760  Radeon HD 8760 OEM +		1462 2710  R7770-PMD1GD5 +		174b 8304  Radeon HD 8760 OEM +	683f  Cape Verde PRO [Radeon HD 7750 / R7 250E] +	6840  Thames [Radeon HD 7500M/7600M Series] +		1025 050e  Radeon HD 7670M +		1025 050f  Radeon HD 7670M +		1025 0513  Radeon HD 7670M +		1025 0514  Radeon HD 7670M +		1025 056d  Radeon HD 7670M +		1025 059a  Radeon HD 7670M +		1025 059b  Radeon HD 7670M +		1025 059e  Radeon HD 7670M +		1025 0600  Radeon HD 7670M +		1025 0606  Radeon HD 7670M +		1025 0696  Radeon HD 7650M +		1025 0697  Radeon HD 7650M +		1025 0698  Radeon HD 7650M +		1025 0699  Radeon HD 7650M +		1025 0757  Radeon HD 7670M +		1028 056a  Radeon HD 7670M +		1028 056e  Radeon HD 7670M +		1028 0598  Radeon HD 7670M +		1028 059d  Radeon HD 7670M +		1028 05a3  Radeon HD 7670M +		1028 05b9  Radeon HD 7670M +		1028 05bb  Radeon HD 7670M +		103c 1789  FirePro M2000 +		103c 17f1  Radeon HD 7570M +		103c 17f4  Radeon HD 7650M +		103c 1813  Radeon HD 7590M +		103c 182f  Radeon HD 7670M +		103c 1830  Radeon HD 7670M +		103c 1835  Radeon HD 7670M +		103c 183a  Radeon HD 7670M +		103c 183c  Radeon HD 7670M +		103c 183e  Radeon HD 7670M +		103c 1840  Radeon HD 7670M +		103c 1842  Radeon HD 7670M +		103c 1844  Radeon HD 7670M +		103c 1848  Radeon HD 7670M +		103c 184a  Radeon HD 7670M +		103c 184c  Radeon HD 7670M +		103c 1895  Radeon HD 7670M +		103c 1897  Radeon HD 7670M +		103c 18a5  Radeon HD 7670M +		103c 18a7  Radeon HD 7670M +		103c 18f4  Radeon HD 7670M +		1043 100a  Radeon HD 7670M +		1043 104b  Radeon HD 7670M +		1043 10dc  Radeon HD 7670M +		1043 2121  Radeon HD 7670M +		1043 2122  Radeon HD 7670M +		1043 2123  Radeon HD 7670M +		1043 2125  Radeon HD 7670M +		1043 2127  Radeon HD 7670M +		1179 fb11  Radeon HD 7670M +		1179 fb22  Radeon HD 7670M +		1179 fb23  Radeon HD 7670M +		1179 fb2c  Radeon HD 7670M +		1179 fb31  Radeon HD 7670M +		1179 fb32  Radeon HD 7670M +		1179 fb38  Radeon HD 7670M +		1179 fb39  Radeon HD 7670M +		1179 fb3a  Radeon HD 7670M +		1179 fb40  Radeon HD 7670M +		1179 fb41  Radeon HD 7670M +		1179 fb47  Radeon HD 7670M +		1179 fb48  Radeon HD 7670M +		1179 fb51  Radeon HD 7670M +		1179 fb52  Radeon HD 7670M +		1179 fb53  Radeon HD 7670M +		1179 fb81  Radeon HD 7670M +		1179 fb82  Radeon HD 7670M +		1179 fb83  Radeon HD 7670M +		1179 fc56  Radeon HD 7670M +		1179 fcd4  Radeon HD 7670M +		1179 fcee  Radeon HD 7670M +		144d c0c5  Radeon HD 7690M +		144d c0ce  Radeon HD 7670M +		144d c0da  Radeon HD 7670M +		17aa 3970  Radeon HD 7670M +		17aa 397b  Radeon HD 7670M +		17aa 5101  Radeon HD 7670M +		17aa 5102  Radeon HD 7670M +		17aa 5103  Radeon HD 7670M +	6841  Thames [Radeon HD 7550M/7570M/7650M] +		1028 0561  Radeon HD 7650M +		1028 056c  Radeon HD 7650M +		1028 057f  Radeon HD 7570M +		103c 17f1  Radeon HD 7570M +		103c 17f4  Radeon HD 7650M +		103c 1813  Radeon HD 7570M +		103c 183a  Radeon HD 7650M +		103c 183c  Radeon HD 7650M +		103c 183e  Radeon HD 7650M +		103c 1840  Radeon HD 7650M +		103c 1842  Radeon HD 7650M +		103c 1844  Radeon HD 7650M +		1043 100a  Radeon HD 7650M +		1043 104b  Radeon HD 7650M +		1043 10dc  Radeon HD 7650M +		1043 2134  Radeon HD 7650M +		1179 0001  Radeon HD 7570M +		1179 0002  Radeon HD 7570M +		1179 fb43  Radeon HD 7550M +		1179 fb91  Radeon HD 7550M +		1179 fb92  Radeon HD 7550M +		1179 fb93  Radeon HD 7550M +		1179 fba2  Radeon HD 7550M +		1179 fba3  Radeon HD 7550M +		144d c0c7  Radeon HD 7550M +	6842  Thames LE [Radeon HD 7000M Series] +	6843  Thames [Radeon HD 7670M] +	6888  Cypress XT [FirePro V8800] +	6889  Cypress PRO [FirePro V7800] +		1002 0301  FirePro V7800P +	688a  Cypress XT [FirePro V9800] +		1002 030c  FirePro V9800P +	688c  Cypress XT GL [FireStream 9370] +	688d  Cypress PRO GL [FireStream 9350] +	6898  Cypress XT [Radeon HD 5870] +		1002 0b00  Radeon HD 5870 Eyefinity⁶ Edition +		106b 00d0  Radeon HD 5870 Mac Edition +# R5870-PM2D1G +		1462 8032  Radeon HD 5870 1 GB GDDR5 +		174b 6870  Radeon HD 6870 1600SP Edition +	6899  Cypress PRO [Radeon HD 5850] +# EAH5850 +		1043 0330  Radeon HD 5850 +		174b 237b  Radeon HD 5850 X2 +		174b 6850  Radeon HD 6850 1440SP Edition +	689b  Cypress PRO [Radeon HD 6800 Series] +	689c  Hemlock [Radeon HD 5970] +		1043 0352  ARES +	689d  Hemlock [Radeon HD 5970] +	689e  Cypress LE [Radeon HD 5830] +	68a0  Broadway XT [Mobility Radeon HD 5870] +		1028 12ef  FirePro M7820 +		103c 1520  FirePro M7820 +	68a1  Broadway PRO [Mobility Radeon HD 5850] +		106b 00cc  iMac MC511 Mobility Radeon HD 5850 MXM Module +	68a8  Granville [Radeon HD 6850M/6870M] +		1025 0442  Radeon HD 6850M +		1025 0451  Radeon HD 6850M +		1025 050a  Radeon HD 6850M +		1025 050b  Radeon HD 6850M +		1025 050c  Radeon HD 6850M +		1025 050e  Radeon HD 6850M +		1025 050f  Radeon HD 6850M +		1025 0513  Radeon HD 6850M +		1025 0514  Radeon HD 6850M +		1025 0515  Radeon HD 6850M +		1025 0516  Radeon HD 6850M +		1025 0525  Radeon HD 6850M +		1025 0526  Radeon HD 6850M +		1025 056d  Radeon HD 6850M +		1028 048f  Radeon HD 6870M +		1028 0490  Radeon HD 6870M +		1028 04b9  Radeon HD 6870M +		1028 04ba  Radeon HD 6870M +		103c 159b  Radeon HD 6850M +		144d c0ad  Radeon HD 6850M +	68a9  Juniper XT [FirePro V5800] +	68b8  Juniper XT [Radeon HD 5770] +		106b 00cf  MacPro5,1 [Mac Pro 2.8GHz DDR3] +	68b9  Juniper LE [Radeon HD 5670 640SP Edition] +	68ba  Juniper XT [Radeon HD 6770] +	68be  Juniper PRO [Radeon HD 5750] +		148c 3000  Radeon HD 6750 +	68bf  Juniper PRO [Radeon HD 6750] +		174b 6750  Radeon HD 6750 +	68c0  Madison [Mobility Radeon HD 5730 / 6570M] +		1019 2383  Mobility Radeon HD 5730 +		1028 02a2  Mobility Radeon HD 5730 +		1028 02fe  Mobility Radeon HD 5730 +		1028 0419  Mobility Radeon HD 5730 +		103c 147d  Mobility Radeon HD 5730 +		103c 1521  Madison XT [FirePro M5800] +		103c 1593  Mobility Radeon HD 6570 +		103c 1596  Mobility Radeon HD 6570 +		103c 1599  Mobility Radeon HD 6570 +		1043 1c22  Mobility Radeon HD 5730 +		17aa 3927  Mobility Radeon HD 5730 +		17aa 3952  Mobility Radeon HD 5730 +		17aa 3978  Radeon HD 6570M +	68c1  Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] +		1025 0205  Mobility Radeon HD 5650 +		1025 0293  Mobility Radeon HD 5650 +		1025 0294  Mobility Radeon HD 5650 +		1025 0296  Mobility Radeon HD 5650 +		1025 0308  Mobility Radeon HD 5650 +		1025 030a  Mobility Radeon HD 5650 +		1025 0311  Mobility Radeon HD 5650 +		1025 0312  Mobility Radeon HD 5650 +		1025 031c  Mobility Radeon HD 5650 +		1025 031d  Mobility Radeon HD 5650 +		1025 033d  Mobility Radeon HD 5650 +		1025 033e  Mobility Radeon HD 5650 +		1025 033f  Mobility Radeon HD 5650 +		1025 0346  Mobility Radeon HD 5650 +		1025 0347  Aspire 7740G +		1025 0348  Mobility Radeon HD 5650 +		1025 0356  Mobility Radeon HD 5650 +		1025 0357  Mobility Radeon HD 5650 +		1025 0358  Mobility Radeon HD 5650 +		1025 0359  Mobility Radeon HD 5650 +		1025 035a  Mobility Radeon HD 5650 +		1025 035b  Mobility Radeon HD 5650 +		1025 035c  Mobility Radeon HD 5650 +		1025 035d  Mobility Radeon HD 5650 +		1025 035e  Mobility Radeon HD 5650 +		1025 0360  Mobility Radeon HD 5650 +		1025 0362  Mobility Radeon HD 5650 +		1025 0364  Mobility Radeon HD 5650 +		1025 0365  Mobility Radeon HD 5650 +		1025 0366  Mobility Radeon HD 5650 +		1025 0367  Mobility Radeon HD 5650 +		1025 0368  Mobility Radeon HD 5650 +		1025 036c  Mobility Radeon HD 5650 +		1025 036d  Mobility Radeon HD 5650 +		1025 036e  Mobility Radeon HD 5650 +		1025 036f  Mobility Radeon HD 5650 +		1025 0372  Mobility Radeon HD 5650 +		1025 0373  Mobility Radeon HD 5650 +		1025 0377  Mobility Radeon HD 5650 +		1025 0378  Mobility Radeon HD 5650 +		1025 0379  Mobility Radeon HD 5650 +		1025 037a  Mobility Radeon HD 5650 +		1025 037b  Mobility Radeon HD 5650 +		1025 037e  Mobility Radeon HD 5650 +		1025 037f  Mobility Radeon HD 5650 +		1025 0382  Mobility Radeon HD 5650 +		1025 0383  Mobility Radeon HD 5650 +		1025 0384  Mobility Radeon HD 5650 +		1025 0385  Mobility Radeon HD 5650 +		1025 0386  Mobility Radeon HD 5650 +		1025 0387  Mobility Radeon HD 5650 +		1025 0388  Mobility Radeon HD 5650 +		1025 038b  Mobility Radeon HD 5650 +		1025 038c  Mobility Radeon HD 5650 +		1025 039a  Mobility Radeon HD 5650 +		1025 0411  Mobility Radeon HD 5650 +		1025 0412  Mobility Radeon HD 5650 +		1025 0418  Mobility Radeon HD 5650 +		1025 0419  Mobility Radeon HD 5650 +		1025 0420  Mobility Radeon HD 5650 +		1025 0421  Mobility Radeon HD 5650 +		1025 0425  Mobility Radeon HD 5650 +		1025 042a  Mobility Radeon HD 5650 +		1025 042e  Mobility Radeon HD 5650 +		1025 042f  Mobility Radeon HD 5650 +		1025 0432  Mobility Radeon HD 5650 +		1025 0433  Mobility Radeon HD 5650 +		1025 0442  Mobility Radeon HD 5650 +		1025 044c  Mobility Radeon HD 5650 +		1025 044e  Mobility Radeon HD 5650 +		1025 0451  Mobility Radeon HD 5650 +		1025 0454  Mobility Radeon HD 5650 +		1025 0455  Mobility Radeon HD 5650 +		1025 0475  Mobility Radeon HD 5650 +		1025 0476  Mobility Radeon HD 5650 +		1025 0487  Mobility Radeon HD 5650 +		1025 0489  Mobility Radeon HD 5650 +		1025 0498  Mobility Radeon HD 5650 +		1025 0517  Radeon HD 6550M +		1025 051a  Radeon HD 6550M +		1025 051b  Radeon HD 6550M +		1025 051c  Radeon HD 6550M +		1025 051d  Radeon HD 6550M +		1025 0525  Radeon HD 6550M +		1025 0526  Radeon HD 6550M +		1025 052b  Radeon HD 6550M +		1025 052c  Radeon HD 6550M +		1025 053c  Radeon HD 6550M +		1025 053d  Radeon HD 6550M +		1025 053e  Radeon HD 6550M +		1025 053f  Radeon HD 6550M +		1025 0607  Radeon HD 6550M +		1028 041b  Mobility Radeon HD 5650 +		1028 0447  Mobility Radeon HD 5650 +		1028 0448  Mobility Radeon HD 5650 +		1028 0456  Mobility Radeon HD 5650 +		1028 0457  Mobility Radeon HD 5650 +		103c 1436  Mobility Radeon HD 5650 +		103c 1437  Mobility Radeon HD 5650 +		103c 1440  Mobility Radeon HD 5650 +		103c 1448  Mobility Radeon HD 5650 +		103c 1449  Mobility Radeon HD 5650 +		103c 144a  Mobility Radeon HD 5650 +		103c 144b  Mobility Radeon HD 5650 +		103c 147b  Mobility Radeon HD 5650 +		103c 149c  Mobility Radeon HD 5650 +		103c 149e  Mobility Radeon HD 5650 +		103c 1521  Madison Pro [FirePro M5800] +		1043 1bc2  Mobility Radeon HD 5650 +		104d 9071  Mobility Radeon HD 5650 +		104d 9077  Mobility Radeon HD 5650 +		104d 9081  Mobility Radeon HD 5650 +		1179 fd00  Mobility Radeon HD 5650 +		1179 fd12  Mobility Radeon HD 5650 +		1179 fd1a  Mobility Radeon HD 5650 +		1179 fd30  Mobility Radeon HD 5650 +		1179 fd31  Mobility Radeon HD 5650 +		1179 fd50  Mobility Radeon HD 5650 +		1179 fd52  Radeon HD 6530M +		1179 fd63  Radeon HD 6530M +		1179 fd65  Radeon HD 6530M +		1179 fdd0  Mobility Radeon HD 5650 +		1179 fdd2  Radeon HD 6530M +		144d c07e  Mobility Radeon HD 5650 +		144d c085  Mobility Radeon HD 5650 +		14c0 0043  Mobility Radeon HD 5650 +		14c0 004d  Mobility Radeon HD 5650 +		17aa 3928  Mobility Radeon HD 5650 +		17aa 3951  Mobility Radeon HD 5650 +		17aa 3977  Radeon HD 6550M +	68c7  Madison [Mobility Radeon HD 5570/6550A] +		1462 2241  Mobility Radeon HD 5570 +		1462 2243  Mobility Radeon HD 5570 +		1462 2244  Mobility Radeon HD 5570 +		1462 2245  Radeon HD 6550A +		1462 2246  Radeon HD 6550A +	68c8  Redwood XT GL [FirePro V4800] +	68c9  Redwood PRO GL [FirePro V3800] +	68d8  Redwood XT [Radeon HD 5670/5690/5730] +		1028 68e0  Radeon HD 5670 +		174b 5690  Radeon HD 5690 +		174b 5730  Radeon HD 5730 +		174b e151  Radeon HD 5670 +		1787 3000  Radeon HD 5730 +		17af 3010  Radeon HD 5730 +		17af 3011  Radeon HD 5690 +	68d9  Redwood PRO [Radeon HD 5550/5570/5630/6510/6610/7570] +		103c 6870  Radeon HD 5570 +		103c 6872  Radeon HD 5570 +		1043 03ce  Radeon HD 5550 +		1462 2151  Radeon HD 5570 +		1462 2240  Radeon HD 5570 +		148c 3000  Radeon HD 6510 +		148c 3001  Radeon HD 6610 +		1545 5550  Radeon HD 5550 +		1545 7570  Radeon HD 7570 +		1642 3985  Radeon HD 5570 +		1642 3996  Radeon HD 5570 +		174b 3000  Radeon HD 6510 +		174b 6510  Radeon HD 6510 +		174b 6610  Radeon HD 6610 +		174b e142  Radeon HD 5570 +		1787 3000  Radeon HD 6510 +		17af 3000  Radeon HD 6510 +		17af 3010  Radeon HD 5630 +	68da  Redwood LE [Radeon HD 5550/5570/5630/6390/6490/7570] +		148c 3000  Radeon HD 6390 +		148c 3001  Radeon HD 6490 +		1545 7570  Radeon HD 7570 +		174b 3000  Radeon HD 6390 +		174b 5570  Radeon HD 5570 +		174b 5630  Radeon HD 5630 +		174b 6490  Radeon HD 6490 +		1787 3000  Radeon HD 5630 +		17af 3000  Radeon HD 6390 +		17af 3010  Radeon HD 5630 +	68de  Redwood +	68e0  Park [Mobility Radeon HD 5430/5450/5470] +		1028 0404  Mobility Radeon HD 5450 +		1028 0414  Mobility Radeon HD 5450 +		1028 0434  Mobility Radeon HD 5450 +		103c 1433  Mobility Radeon HD 5450 +		103c 1434  Mobility Radeon HD 5450 +		103c 1469  Mobility Radeon HD 5450 +		103c 146b  Mobility Radeon HD 5450 +		103c 1486  TouchSmart tm2-2050er discrete GPU (Mobility Radeon HD 5450) +		103c 1622  Mobility Radeon HD 5450 +		103c 1623  Mobility Radeon HD 5450 +		103c eeee  Mobility Radeon HD 5450 +		104d 9076  Mobility Radeon HD 5450 +		1682 304e  Caicos [Radeon HD 5450] +		1682 6000  Caicos [Radeon HD 5450] +		17aa 9e52  FirePro M3800 +		17aa 9e53  FirePro M3800 +	68e1  Park [Mobility Radeon HD 5430] +		1043 041f  Caicos [Radeon HD 7350] +		1043 3000  Caicos [Radeon HD 5450] +		148c 3000  Caicos [Radeon HD 5450] +		148c 3001  Caicos [Radeon HD 6230] +		148c 3002  Caicos [Radeon HD 6250] +		148c 3003  Caicos [Radeon HD 6350] +		148c 7350  Caicos [Radeon HD 7350] +		148c 8350  Caicos [Radeon HD 8350] +		1545 5450  Caicos [Radeon HD 5450] +		1545 7350  Caicos [Radeon HD 7350] +		1682 3000  Caicos [Radeon HD 5450] +		1682 6000  Caicos [Radeon HD 5450] +		1682 7350  Caicos [Radeon HD 7350] +		174b 3000  Caicos [Radeon HD 5450] +		174b 5470  Caicos [Radeon HD 5470] +		174b 6000  Caicos [Radeon HD 5450] +		174b 6230  Caicos [Radeon HD 6230] +		174b 6350  Caicos [Radeon HD 6350] +		174b 7350  Caicos [Radeon HD 7350] +		1787 3000  Caicos [Radeon HD 5450] +		17af 3000  Caicos [Radeon HD 5450] +		17af 3001  Caicos [Radeon HD 6230] +		17af 3014  Caicos [Radeon HD 6350] +		17af 3015  Caicos [Radeon HD 7350] +		17af 8350  Caicos [Radeon HD 8350 OEM] +	68e4  Robson CE [Radeon HD 6370M/7370M] +		1019 2386  Radeon HD 6350M +		1019 2387  Radeon HD 6350M +		1019 238d  Radeon HD 6370M +		1019 238e  Radeon HD 6370M +		1025 0382  Radeon HD 6370M +		1025 0489  Radeon HD 6370M +		1025 048a  Radeon HD 6370M +		1025 048b  Radeon HD 6370M +		1025 048c  Radeon HD 6370M +		1028 04c1  Radeon HD 6370M +		1028 04ca  Radeon HD 6370M +		1028 04cc  Radeon HD 6370M +		1028 04cd  Radeon HD 6370M +		1028 04d7  Radeon HD 6370M +		103c 1411  Radeon HD 6370M +		103c 1421  Radeon HD 6370M +		103c 1426  Radeon HD 6370M +		103c 1428  Radeon HD 6370M +		103c 142a  Radeon HD 6370M +		103c 142b  Radeon HD 6370M +		103c 143a  Radeon HD 6370M +		103c 143c  Radeon HD 6370M +		103c 1445  Radeon HD 6370M +		103c 162c  Radeon HD 6370M +		103c 162d  Radeon HD 6370M +		103c 162e  Radeon HD 6370M +		103c 162f  Radeon HD 6370M +		103c 1639  Radeon HD 6370M +		103c 163a  Radeon HD 6370M +		103c 163b  Radeon HD 6370M +		103c 163c  Radeon HD 6370M +		103c 163d  Radeon HD 6370M +		103c 163e  Radeon HD 6370M +		103c 163f  Radeon HD 6370M +		103c 1641  Radeon HD 6370M +		103c 1643  Radeon HD 6370M +		103c 3578  Radeon HD 6370M +		103c 357a  Radeon HD 6370M +		103c 3673  Radeon HD 6370M +		103c 3675  Radeon HD 6370M +		1043 1c92  Radeon HD 6370M +		1043 84a1  Radeon HD 6370M +		1043 84ad  Radeon HD 6370M +		104d 9081  Radeon HD 6370M +		1545 7350  Cedar [Radeon HD 7350] +		1558 4510  Radeon HD 6370M +		1558 5505  Radeon HD 6370M +		174b 5450  Cedar [Radeon HD 5450] +		17aa 21dd  Radeon HD 6370M +		17aa 21e9  Radeon HD 6370M +		17aa 3971  Radeon HD 6370M +		17aa 3972  Radeon HD 7370M +		17aa 397a  Radeon HD 6370M/7370M +		17aa 397b  Radeon HD 6370M/7370M +		17aa 397f  Radeon HD 7370M +	68e5  Robson LE [Radeon HD 6330M] +		1179 fd3c  Radeon HD 6330M +		1179 fd50  Radeon HD 6330M +		1179 fd52  Radeon HD 6330M +		1179 fd63  Radeon HD 6330M +		1179 fd65  Radeon HD 6330M +		1179 fd73  Radeon HD 6330M +		1179 fd75  Radeon HD 6330M +		1179 fdd0  Radeon HD 6330M +		1179 fdd2  Radeon HD 6330M +		1179 fdea  Radeon HD 6330M +		1179 fdf8  Radeon HD 6330M +		148c 5450  Cedar [Radeon HD 5450] +		148c 6350  Cedar [Radeon HD 6350] +		148c 7350  Cedar [Radeon HD 7350] +		148c 8350  Cedar [Radeon HD 8350] +		1545 7350  Cedar [Radeon HD 7350] +	68e8  Cedar +	68e9  Cedar [ATI FirePro (FireGL) Graphics Adapter] +	68f1  Cedar GL [FirePro 2460] +	68f2  Cedar GL [FirePro 2270] +	68f8  Cedar [Radeon HD 7300 Series] +	68f9  Cedar [Radeon HD 5000/6000/7350/8350 Series] +		1019 0001  Radeon HD 5450 +		1019 0002  Radeon HD 5450 +		1019 0019  Radeon HD 6350 +		1025 0518  Radeon HD 5450 +		1025 0519  Radeon HD 5450 +		1028 010e  XPS 8300 +		1028 2126  Radeon HD 6350 +		103c 2126  Radeon HD 6350 +		103c 2aac  Radeon HD 5450 +		103c 2aae  Radeon HD 5450 +		103c 3580  Radeon HD 5450 +		1043 0386  Radeon HD 5450 +		1043 03c2  EAH5450 SILENT/DI/512MD2 (LP) +		1462 2130  Radeon HD 5450 +		1462 2131  Radeon HD 5450 +		1462 2133  Radeon HD 6350 +		1462 2180  Radeon HD 5450 +		1462 2181  Radeon HD 5450 +		1462 2182  Radeon HD 6350 +		1462 2183  Radeon HD 6350 +		1462 2230  Radeon HD 5450 +		1462 2231  Radeon HD 5450 +		1462 2495  Radeon HD 6350 +		148c 3001  Radeon HD 5530/6250 +		148c 3002  Radeon HD 6290 +		148c 3003  Radeon HD 6230 +		148c 3004  Radeon HD 6350 +		148c 7350  Radeon HD 7350 +		148c 8350  Radeon HD 8350 +		1545 7350  Radeon HD 7350 +		1642 3983  Radeon HD 5450 +		1642 3984  Radeon HD 6350 +		1642 3987  Radeon HD 6350 +		1642 3997  Radeon HD 5450 +		1642 3a05  Radeon HD 5450 +		1642 3b31  Radeon HD 6350A +		1682 3270  Radeon HD 7350 +		174b 3000  Radeon HD 6230 +		174b 3987  Radeon HD 6350 +		174b 5470  Radeon HD 5470 +		174b 5490  Radeon HD 5490 +		174b 5530  Radeon HD 5530 +		174b 6230  Radeon HD 6230 +		174b 6250  Radeon HD 6250 +		174b 6290  Radeon HD 6290 +		174b 6350  Radeon HD 6350 +		174b 7350  Radeon HD 7350 +		174b 8350  Radeon HD 8350 +		174b e127  Radeon HD 5450 +		174b e145  Radeon HD 5450 +		174b e153  Radeon HD 5450 +		1787 3000  Radeon HD 5470 +		1787 3001  Radeon HD 5530 +		1787 3002  Radeon HD 5490 +		17aa 3602  Radeon HD 5450 +		17aa 3603  Radeon HD 5450 +		17aa 360f  Radeon HD 5450 +		17aa 3619  Radeon HD 5450 +		17af 3000  Radeon HD 6250 +		17af 3001  Radeon HD 6230 +		17af 3002  Radeon HD 6290 +		17af 3011  Radeon HD 5470 +		17af 3012  Radeon HD 5490 +		17af 3013  Radeon HD 5470 +		17af 3014  Radeon HD 6350 +	68fa  Cedar [Radeon HD 7350/8350 / R5 220] +		1019 0019  Radeon HD 7350 +		1019 0021  Radeon HD 7350 +		1019 0022  Radeon HD 7350 +		1019 0026  Radeon HD 8350 +		103c 2adf  Radeon HD 7350A +		103c 2ae8  Radeon HD 7350A +		1043 8350  Radeon HD 8350 +		1462 2128  Radeon HD 7350 +		1462 2184  Radeon HD 7350 +		1462 2186  Radeon HD 7350 +		1462 2495  Radeon HD 7350 +		1462 b490  Radeon HD 7350 +		1642 3985  Radeon HD 7350 +		174b 3510  Radeon HD 8350 +		174b 3521  Radeon R5 220 +		174b 3522  Radeon R5 220 +		174b 7350  Radeon HD 7350 +		174b 8153  Radeon HD 8350 +		174b e127  Radeon HD 7350 +		174b e153  Radeon HD 7350 +		174b e180  Radeon HD 7350 +		17af 3015  Radeon HD 7350 +	68fe  Cedar LE +	6900  Topaz XT [Radeon R7 M260/M265] +		1028 0640  Radeon R7 M265 +		103c 2269  Radeon R7 M260 +		103c 22c8  Radeon R7 M260 +		1179 f903  Radeon R7 M260 +		1179 f934  Radeon R7 M260 +	6901  Topaz PRO [Radeon R5 M255] +	6920  Tonga +	6921  Amethyst XT [Radeon R9 M295X] +	692b  Tonga PRO GL [FirePro W7100] +	692f  Tonga XT GL [FirePro W8100] +	6938  Amethyst XT [Radeon R9 M295X Mac Edition] +	6939  Tonga PRO [Radeon R9 285] +	700f  RS100 AGP Bridge +	7010  RS200/RS250 AGP Bridge +	7100  R520 [Radeon X1800 XT] +	7101  R520/M58 [Mobility Radeon X1800 XT] +	7102  R520/M58 [Mobility Radeon X1800] +	7104  R520 GL [FireGL V7200] +	7109  R520 [Radeon X1800 XL] +		1002 0322  All-in-Wonder X1800XL +		1002 0d02  Radeon X1800 CrossFire Edition +	710a  R520 [Radeon X1800 GTO] +		1002 0b12  Radeon X1800 GTO² +	710b  R520 [Radeon X1800 GTO] +	7120  R520 [Radeon X1800] (Secondary) +	7124  R520 GL [FireGL V7200] (Secondary) +	7129  R520 [Radeon X1800] (Secondary) +		1002 0323  All-In-Wonder X1800 XL (Secondary) +		1002 0d03  Radeon X1800 CrossFire Edition (Secondary) +	7140  RV515 [Radeon X1300/X1550/X1600 Series] +	7142  RV515 PRO [Radeon X1300/X1550 Series] +		1002 0322  All-in-Wonder 2006 PCI-E Edition +		1043 0142  EAX1300PRO/TD/256M +	7143  RV505 [Radeon X1300/X1550 Series] +	7145  RV515/M54 [Mobility Radeon X1400] +		17aa 2006  Thinkpad T60 model 2007 +	7146  RV515 [Radeon X1300/X1550] +		1002 0322  All-in-Wonder 2006 PCI-E Edition +		1545 1996  Radeon X1300 512MB PCI-e +	7147  RV505 [Radeon X1550 64-bit] +	7149  RV515/M52 [Mobility Radeon X1300] +	714a  RV515/M52 [Mobility Radeon X1300] +	7152  RV515 GL [FireGL V3300] +	7153  RV515 GL [FireGL V3350] +	715f  RV505 CE [Radeon X1550 64-bit] +	7162  RV515 PRO [Radeon X1300/X1550 Series] (Secondary) +		1002 0323  All-in-Wonder 2006 PCI-E Edition (Secondary) +	7163  RV505 [Radeon X1550 Series] (Secondary) +	7166  RV515 [Radeon X1300/X1550 Series] (Secondary) +		1002 0323  All-in-Wonder 2006 PCI-E Edition (Secondary) +		1545 1997  Radeon X1300 512MB PCI-e (Secondary) +	7167  RV515 [Radeon X1550 64-bit] (Secondary) +	7172  RV515 GL [FireGL V3300] (Secondary) +	7173  RV515 GL [FireGL V3350] (Secondary) +	7181  RV516 [Radeon X1600/X1650 Series] +	7183  RV516 [Radeon X1300/X1550 Series] +	7186  RV516/M64 [Mobility Radeon X1450] +	7187  RV516 [Radeon X1300/X1550 Series] +	7188  RV516/M64-S [Mobility Radeon X2300] +		103c 30c1  6910p +	718a  RV516/M64 [Mobility Radeon X2300] +	718b  RV516/M62 [Mobility Radeon X1350] +		1071 8209  Medion MIM 2240 Notebook PC [MD98100] +	718c  RV516/M62-CSP64 [Mobility Radeon X1350] +	718d  RV516/M64-CSP128 [Mobility Radeon X1450] +	7193  RV516 [Radeon X1550 Series] +	7196  RV516/M62-S [Mobility Radeon X1350] +	719b  RV516 GL [FireMV 2250] +	719f  RV516 [Radeon X1550 Series] +	71a0  RV516 [Radeon X1300/X1550 Series] (Secondary) +	71a1  RV516 [Radeon X1600/X1650 Series] (Secondary) +	71a3  RV516 [Radeon X1300/X1550 Series] (Secondary) +	71a7  RV516 [Radeon X1300/X1550 Series] (Secondary) +	71bb  RV516 GL [FireMV 2250] (Secondary) +	71c0  RV530 [Radeon X1600 XT/X1650 GTO] +		1002 e160  Radeon X1650 GTO +		174b e160  Radeon X1650 GTO +	71c1  RV535 [Radeon X1650 PRO] +		174b 0880  Radeon X1700 FSC +	71c2  RV530 [Radeon X1600 PRO] +	71c4  RV530/M56 GL [Mobility FireGL V5200] +		17aa 2007  ThinkPad T60p +	71c5  RV530/M56-P [Mobility Radeon X1600] +		103c 309f  Compaq nx9420 Notebook +		103c 30a3  Compaq NW8440 +		1043 10b2  A6J-Q008 +		106b 0080  MacBook Pro +	71c6  RV530LE [Radeon X1600/X1650 PRO] +	71c7  RV535 [Radeon X1650 PRO] +		1787 3000  PowerColor X1650 PRO AGP +	71ce  RV530 [Radeon X1300 XT/X1600 PRO] +	71d2  RV530 GL [FireGL V3400] +	71d4  RV530/M66 GL [Mobility FireGL V5250] +	71d5  RV530/M66-P [Mobility Radeon X1700] +	71d6  RV530/M66-XT [Mobility Radeon X1700] +	71de  RV530/M66 [Mobility Radeon X1700/X2500] +	71e0  RV530 [Radeon X1600] (Secondary) +		174b e161  Radeon X1600 GTO (Secondary) +	71e1  RV535 [Radeon X1650 PRO] (Secondary) +		174b 0881  Radeon X1700 FSC (Secondary) +	71e2  RV530 [Radeon X1600] (Secondary) +	71e6  RV530 [Radeon X1650] (Secondary) +	71e7  RV535 [Radeon X1650 PRO] (Secondary) +		1787 3001  Radeon X1650 PRO AGP +	71f2  RV530 GL [FireGL V3400] (Secondary) +	7210  RV550/M71 [Mobility Radeon HD 2300] +	7211  RV550/M71 [Mobility Radeon X2300 HD] +	7240  R580+ [Radeon X1950 XTX] +		1002 0d02  Radeon X1950 CrossFire Edition +	7244  R580+ [Radeon X1950 XT] +	7248  R580 [Radeon X1950] +	7249  R580 [Radeon X1900 XT] +		1002 0412  All-In-Wonder X1900 +		1002 0b12  Radeon X1900 XT/XTX +		1002 0d02  Radeon X1900 CrossFire Edition +		1043 0160  Radeon X1900 XTX 512 MB GDDR3 +	724b  R580 [Radeon X1900 GT] +		1002 0b12  Radeon X1900 (Primary) +		1002 0b13  Radeon X1900 (Secondary) +	724e  R580 GL [FireGL V7350] +	7269  R580 [Radeon X1900 XT] (Secondary) +	726b  R580 [Radeon X1900 GT] (Secondary) +	726e  R580 [AMD Stream Processor] (Secondary) +	7280  RV570 [Radeon X1950 PRO] +	7288  RV570 [Radeon X1950 GT] +	7291  RV560 [Radeon X1650 XT] +		1462 0810  Radeon X1700 SE +	7293  RV560 [Radeon X1650 GT] +	72a0  RV570 [Radeon X1950 PRO] (Secondary) +	72a8  RV570 [Radeon X1950 GT] (Secondary) +	72b1  RV560 [Radeon X1650 XT] (Secondary) +	72b3  RV560 [Radeon X1650 GT] (Secondary) +	7833  RS350 Host Bridge +	7834  RS350 [Radeon 9100 PRO/XT IGP] +	7835  RS350M [Mobility Radeon 9000 IGP] +	7838  RS350 AGP Bridge +	7910  RS690 Host Bridge +		1179 ff50  Satellite P305D-S8995E +		17f2 5000  KI690-AM2 Motherboard +	7911  RS690 Host Bridge +	7912  RS690 PCI to PCI Bridge (Internal gfx) +	7913  RS690 PCI to PCI Bridge (PCI Express Graphics Port 0) +	7915  RS690 PCI to PCI Bridge (PCI Express Port 1) +	7916  RS690 PCI to PCI Bridge (PCI Express Port 2) +	7917  RS690 PCI to PCI Bridge (PCI Express Port 3) +		1002 7910  RS690 PCI to PCI Bridge +	7919  RS690 HDMI Audio [Radeon Xpress 1200 Series] +		1179 7919  Satellite P305D-S8995E +		17f2 5000  KI690-AM2 Motherboard +	791e  RS690 [Radeon X1200] +		1462 7327  K9AG Neo2 +		17f2 5000  KI690-AM2 Motherboard +	791f  RS690M [Radeon Xpress 1200/1250/1270] +		1179 ff50  Satellite P305D-S8995E +	7930  RS600 Host Bridge +	7932  RS600 PCI to PCI Bridge (Internal gfx) +	7933  RS600 PCI to PCI Bridge (PCI Express Graphics Port 0) +	7935  RS600 PCI to PCI Bridge (PCI Express Port 1) +	7936  RS600 PCI to PCI Bridge (PCI Express Port 2) +	7937  RS690 PCI to PCI Bridge (PCI Express Port 3) +	793b  RS600 HDMI Audio [Radeon Xpress 1250] +	793f  RS690M [Radeon Xpress 1200/1250/1270] (Secondary) +	7941  RS600 [Radeon Xpress 1250] +	7942  RS600M [Radeon Xpress 1250] +	796e  RS740 [Radeon 2100] +	9400  R600 [Radeon HD 2900 PRO/XT] +		1002 2552  Radeon HD 2900 XT +		1002 3000  Radeon HD 2900 PRO +		1002 3142  HIS Radeon HD 2900XT 512MB GDDR3 VIVO PCIe +	9401  R600 [Radeon HD 2900 XT] +	9403  R600 [Radeon HD 2900 PRO] +	9405  R600 [Radeon HD 2900 GT] +	940a  R600 GL [FireGL V8650] +	940b  R600 GL [FireGL V8600] +	940f  R600 GL [FireGL V7600] +	9440  RV770 [Radeon HD 4870] +	9441  R700 [Radeon HD 4870 X2] +	9442  RV770 [Radeon HD 4850] +		1002 0502  MSI Radeon HD 4850 512MB GDDR3 +		174b e810  Radeon HD 4850 512MB GDDR3 +	9443  R700 [Radeon HD 4850 X2] +	9444  RV770 GL [FirePro V8750] +	9446  RV770 GL [FirePro V7760] +	944a  RV770/M98L [Mobility Radeon HD 4850] +	944b  RV770/M98 [Mobility Radeon HD 4850 X2] +	944c  RV770 LE [Radeon HD 4830] +	944e  RV770 CE [Radeon HD 4710] +		174b 3261  Radeon HD 4810 +	9450  RV770 GL [FireStream 9270] +	9452  RV770 GL [FireStream 9250] +	9456  RV770 GL [FirePro V8700] +	945a  RV770/M98-XT [Mobility Radeon HD 4870] +	9460  RV790 [Radeon HD 4890] +	9462  RV790 [Radeon HD 4860] +	946a  RV770 GL [FirePro M7750] +	9480  RV730/M96 [Mobility Radeon HD 4650/5165] +		103c 3628  Mobility Radeon HD 4650 [dv6-1190en] +	9488  RV730/M96-XT [Mobility Radeon HD 4670] +	9489  RV730/M96 GL [Mobility FireGL V5725] +	9490  RV730 XT [Radeon HD 4670] +		174b e880  Radeon HD 4670 512MB GDDR3 Dual DVI-I/TVO +	9491  RV730/M96-CSP [Radeon E4690] +	9495  RV730 [Radeon HD 4600 AGP Series] +		1002 0028  Radeon HD 4650/4670 AGP +		1092 0028  Radeon HD 4670 AGP 512MB DDR2 +		1458 0028  Radeon HD 4650 AGP +		1682 0028  Radeon HD 4650 AGP +		174b 0028  Radeon HD 4650 AGP DDR2 +	9498  RV730 PRO [Radeon HD 4650] +	949c  RV730 GL [FirePro V7750] +	949e  RV730 GL [FirePro V5700] +	949f  RV730 GL [FirePro V3750] +	94a0  RV740/M97 [Mobility Radeon HD 4830] +	94a1  RV740/M97-XT [Mobility Radeon HD 4860] +	94a3  RV740/M97 GL [FirePro M7740] +	94b3  RV740 PRO [Radeon HD 4770] +	94b4  RV740 PRO [Radeon HD 4750] +	94c1  RV610 [Radeon HD 2400 PRO/XT] +		1028 0211  Optiplex 755 +		1028 0d02  Optiplex 755 +	94c3  RV610 [Radeon HD 2400 PRO] +		1028 0302  Radeon HD 2400 Pro +		174b e400  Radeon HD 2400 PRO +		18bc 3550  Radeon HD 2400 PRO +	94c4  RV610 LE [Radeon HD 2400 PRO AGP] +	94c5  RV610 [Radeon HD 2400 LE] +	94c7  RV610 [Radeon HD 2350] +	94c8  RV610/M74 [Mobility Radeon HD 2400 XT] +	94c9  RV610/M72-S [Mobility Radeon HD 2400] +		1002 94c9  Radeon HD2400 +	94cb  RV610 [Radeon E2400] +	94cc  RV610 LE [Radeon HD 2400 PRO PCI] +	9500  RV670 [Radeon HD 3850 X2] +	9501  RV670 [Radeon HD 3870] +		174b e620  Radeon HD 3870 +	9504  RV670/M88 [Mobility Radeon HD 3850] +	9505  RV670 [Radeon HD 3690/3850] +		148c 3000  Radeon HD 3850 +		174b 3000  Radeon HD 3690/3850 +		1787 3000  Radeon HD 3690 +	9506  RV670/M88 [Mobility Radeon HD 3850 X2] +	9507  RV670 [Radeon HD 3830] +	9508  RV670/M88-XT [Mobility Radeon HD 3870] +	9509  RV670/M88 [Mobility Radeon HD 3870 X2] +	950f  R680 [Radeon HD 3870 X2] +	9511  RV670 GL [FireGL V7700] +	9513  RV670 [Radeon HD 3850 X2] +	9515  RV670 PRO [Radeon HD 3850 AGP] +	9519  RV670 GL [FireStream 9170] +	9540  RV710 [Radeon HD 4550] +	954f  RV710 [Radeon HD 4350/4550] +		1462 1618  R4350 MD512H (MS-V161) +	9552  RV710/M92 [Mobility Radeon HD 4330/4350/4550] +		1028 1103  M92 [Mobility Radeon HD 4330] +# GV-R435OC-512I/FF1 +		1458 21ac  Radeon HD 4350 +# GV-R455HM-512I/F41 +		1458 21ed  Radeon HD 4550 +# 113-100928-J01 +		148c 3000  Radeon HD 4350 Go! Green 512MB GDDR3 +# 113-2E172001-003 +		174b 3000  Radeon HD 4350/4550 HyperMemory DDR2 +	9553  RV710/M92 [Mobility Radeon HD 4530/4570/545v] +		1025 015e  Mobility Radeon HD 4570 +		1025 017d  Mobility Radeon HD 4570 +		1025 0205  Mobility Radeon HD 4570 +		1025 0206  Mobility Radeon HD 4570 +		1025 0237  Mobility Radeon HD 4570 +		1028 02be  Mobility Radeon HD 4570 +		1028 02e8  Mobility Radeon HD 4530 +		103c 3624  Mobility Radeon HD 4530 +		103c 3628  Mobility Radeon HD 4530 +		103c 3636  Mobility Radeon HD 4530 +		1043 1b32  Mobility Radeon HD 4570 +		1043 1b42  Mobility Radeon HD 4570 +		104d 9056  Mobility Radeon HD 4570 +		1179 ff82  Satellite L505-13T GPU (Mobility Radeon HD 5145) +	9555  RV710/M92 [Mobility Radeon HD 4350/4550] +		103c 1411  ProBook 4720s GPU (Mobility Radeon HD 4350) +	9557  RV711 GL [FirePro RG220] +	955f  RV710/M92 [Mobility Radeon HD 4330] +	9580  RV630 [Radeon HD 2600 PRO] +	9581  RV630/M76 [Mobility Radeon HD 2600] +	9583  RV630/M76 [Mobility Radeon HD 2600 XT/2700] +		106b 0083  iMac 7,1 +		1734 1107  Mobility Radeon HD 2700 +	9586  RV630 XT [Radeon HD 2600 XT AGP] +	9587  RV630 PRO [Radeon HD 2600 PRO AGP] +	9588  RV630 XT [Radeon HD 2600 XT] +		1458 216c  Radeon HD 2600 XT, 256MB GDDR3, 2x DVI, TV-out, PCIe (GV-RX26T256H) +	9589  RV630 PRO [Radeon HD 2600 PRO] +# Rebranded HD 2600 PRO +		1787 3000  Radeon HD 3610 +	958a  RV630 [Radeon HD 2600 X2] +	958b  RV630/M76 [Mobility Radeon HD 2600 XT] +	958c  RV630 GL [FireGL V5600] +	958d  RV630 GL [FireGL V3600] +	9591  RV635/M86 [Mobility Radeon HD 3650] +		1002 9591  Mobility Radeon HD 3650 +	9593  RV635/M86 [Mobility Radeon HD 3670] +	9595  RV635/M86 GL [Mobility FireGL V5700] +	9596  RV635 PRO [Radeon HD 3650 AGP] +		1043 0028  EAH3650 SILENT/HTDI/512M/A +	9597  RV635 PRO [Radeon HD 3650 AGP] +	9598  RV635 [Radeon HD 3650/3750/4570/4580] +		1002 9598  Mobility Radeon HD 3600 +		1043 01d6  EAH3650 Silent +		1043 3001  Radeon HD 4570 +		174b 3001  Radeon HD 3750 +		174b 4580  RV635 PRO [Radeon HD 4580] +	9599  RV635 PRO [Radeon HD 3650 AGP] +	95c0  RV620 PRO [Radeon HD 3470] +		1002 95c0  Mobility Radeon HD 3470 +	95c2  RV620/M82 [Mobility Radeon HD 3410/3430] +	95c4  RV620/M82 [Mobility Radeon HD 3450/3470] +		1002 95c4  Mobility Radeon HD 3400 +	95c5  RV620 LE [Radeon HD 3450] +		1028 0342  OptiPlex 980 +	95c6  RV620 LE [Radeon HD 3450 AGP] +	95c9  RV620 LE [Radeon HD 3450 PCI] +	95cc  RV620 GL [FirePro V3700] +	95cd  RV620 [FirePro 2450] +	95cf  RV620 GL [FirePro 2260] +	960f  RS780 HDMI Audio [Radeon (HD) 3000 Series] +	9610  RS780 [Radeon HD 3200] +		1458 d000  GA-MA78GM-S2H Motherboard +	9611  RS780C [Radeon 3100] +	9612  RS780M [Mobility Radeon HD 3200] +	9613  RS780MC [Mobility Radeon HD 3100] +	9614  RS780D [Radeon HD 3300] +	9616  RS780L [Radeon 3000] +	9640  BeaverCreek [Radeon HD 6550D] +	9641  BeaverCreek [Radeon HD 6620G] +	9642  Sumo [Radeon HD 6370D] +	9643  Sumo [Radeon HD 6380G] +	9644  Sumo [Radeon HD 6410D] +	9645  Sumo [Radeon HD 6410D] +	9647  BeaverCreek [Radeon HD 6520G] +	9648  Sumo [Radeon HD 6480G] +	9649  Sumo [Radeon HD 6480G] +	964a  BeaverCreek [Radeon HD 6530D] +	964b  Sumo +	964c  Sumo +	964e  Sumo +	964f  Sumo +	970f  RS880 HDMI Audio [Radeon HD 4200 Series] +		1019 2120  A785GM-M +		1043 83a2  M4A785TD Motherboard +		1043 843e  M5A88-V EVO +	9710  RS880 [Radeon HD 4200] +		1019 2120  A785GM-M +		1043 83a2  M4A785TD Motherboard +	9712  RS880M [Mobility Radeon HD 4225/4250] +	9713  RS880M [Mobility Radeon HD 4100] +	9714  RS880 [Radeon HD 4290] +	9715  RS880 [Radeon HD 4250] +		1043 843e  M5A88-V EVO +# Radeon HD 6250 too? +	9802  Wrestler [Radeon HD 6310] +		174b 1001  PURE Fusion Mini +	9803  Wrestler [Radeon HD 6310] +	9804  Wrestler [Radeon HD 6250] +	9805  Wrestler [Radeon HD 6250] +	9806  Wrestler [Radeon HD 6320] +	9807  Wrestler [Radeon HD 6290] +	9808  Wrestler [Radeon HD 7340] +	9809  Wrestler [Radeon HD 7310] +	980a  Wrestler [Radeon HD 7290] +	9830  Kabini [Radeon HD 8400 / R3 Series] +	9831  Kabini [Radeon HD 8400E] +	9832  Kabini [Radeon HD 8330] +	9833  Kabini [Radeon HD 8330E] +	9834  Kabini [Radeon HD 8210] +	9835  Kabini [Radeon HD 8310E] +	9836  Kabini [Radeon HD 8280 / R3 Series] +	9837  Kabini [Radeon HD 8280E] +	9838  Kabini [Radeon HD 8240 / R3 Series] +	9839  Kabini [Radeon HD 8180] +	983a  Kabini +	983b  Kabini +	983c  Kabini +	983d  Temash [Radeon HD 8250/8280G] +	983e  Kabini +	983f  Kabini +	9840  Kabini HDMI/DP Audio +	9850  Mullins [Radeon R3 Graphics] +	9851  Mullins [Radeon R4/R5 Graphics] +	9852  Mullins [Radeon R2 Graphics] +	9853  Mullins [Radeon R2 Graphics] +	9854  Mullins [Radeon R3E Graphics] +	9855  Mullins [Radeon R6 Graphics] +	9856  Mullins [Radeon R1E/R2E Graphics] +	9857  Mullins [Radeon APU XX-2200M with R2 Graphics] +	9858  Mullins +	9859  Mullins +	985a  Mullins +	985b  Mullins +	985c  Mullins +	985d  Mullins +	985e  Mullins +	985f  Mullins +	9900  Trinity [Radeon HD 7660G] +# AMD A10-5800K CPU +	9901  Trinity [Radeon HD 7660D] +	9902  Trinity HDMI Audio Controller +		103c 194e  ProBook 455 G1 Notebook +	9903  Trinity [Radeon HD 7640G] +		103c 194e  ProBook 455 G1 Notebook +		103c 1952  ProBook 455 G1 Notebook +	9904  Trinity [Radeon HD 7560D] +	9905  Trinity [FirePro A300 Series Graphics] +	9906  Trinity [FirePro A300 Series Graphics] +	9907  Trinity [Radeon HD 7620G] +	9908  Trinity [Radeon HD 7600G] +	9909  Trinity [Radeon HD 7500G] +	990a  Trinity [Radeon HD 7500G] +	990b  Richland [Radeon HD 8650G] +	990c  Richland [Radeon HD 8670D] +	990d  Richland [Radeon HD 8550G] +	990e  Richland [Radeon HD 8570D] +	990f  Richland [Radeon HD 8610G] +	9910  Trinity [Radeon HD 7660G] +	9913  Trinity [Radeon HD 7640G] +	9917  Trinity [Radeon HD 7620G] +	9918  Trinity [Radeon HD 7600G] +	9919  Trinity [Radeon HD 7500G] +	9990  Trinity [Radeon HD 7520G] +	9991  Trinity [Radeon HD 7540D] +	9992  Trinity [Radeon HD 7420G] +	9993  Trinity [Radeon HD 7480D] +	9994  Trinity [Radeon HD 7400G] +	9995  Richland [Radeon HD 8450G] +	9996  Richland [Radeon HD 8470D] +	9997  Richland [Radeon HD 8350G] +	9998  Richland [Radeon HD 8370D] +	9999  Richland [Radeon HD 8510G] +	999a  Richland [Radeon HD 8410G] +	999b  Richland [Radeon HD 8310G] +	999c  Richland +# AMD Quad-Core A8-Series APU A8-6500T with Radeon HD 8550D +	999d  Richland [Radeon HD 8550D] +	99a0  Trinity [Radeon HD 7520G] +	99a2  Trinity [Radeon HD 7420G] +	99a4  Trinity [Radeon HD 7400G] +	aa00  R600 HDMI Audio [Radeon HD 2900 Series] +	aa08  RV630 HDMI Audio [Radeon HD 2600 Series] +	aa10  RV610 HDMI Audio [Radeon HD 2350/2400 Series] +		174b aa10  Radeon HD 2400 PRO +		18bc aa10  Radeon HD 2400 PRO +	aa18  RV670/680 HDMI Audio [Radeon HD 3690/3800 Series] +	aa20  RV635 HDMI Audio [Radeon HD 3600 Series] +	aa28  RV620 HDMI Audio [Radeon HD 3400 Series] +	aa30  RV770 HDMI Audio [Radeon HD 4850/4870] +		174b aa30  Radeon HD 4850 512MB GDDR3 PCI-E Dual Slot Fansink +	aa38  RV710/730 HDMI Audio [Radeon HD 4000 series] +		103c 3628  dv6-1190en +	aa50  Cypress HDMI Audio [Radeon HD 5800 Series] +	aa58  Juniper HDMI Audio [Radeon HD 5700 Series] +# 5500, 5600 and mobile 5700 series +	aa60  Redwood HDMI Audio [Radeon HD 5000 Series] +		1025 033d  Mobility Radeon HD 5650 +		1025 0347  Aspire 7740G +	aa68  Cedar HDMI Audio [Radeon HD 5400/6300 Series] +		1028 aa68  XPS 8300 +	aa80  Cayman/Antilles HDMI Audio [Radeon HD 6900 Series] +	aa88  Barts HDMI Audio [Radeon HD 6800 Series] +	aa90  Turks/Whistler HDMI Audio [Radeon HD 6000 Series] +		1028 04a3  Precision M4600 +	aa98  Caicos HDMI Audio [Radeon HD 6400 Series] +		174b aa98  Radeon HD 6450 1GB DDR3 +	aaa0  Tahiti XT HDMI Audio [Radeon HD 7970 Series] +	aab0  Cape Verde/Pitcairn HDMI Audio [Radeon HD 7700/7800 Series] +	ac00  Theater 600 Pro +	ac02  TV Wonder HD 600 PCIe +	ac12  Theater HD T507 (DVB-T) TV tuner/capture device +	cab0  RS100 Host Bridge +	cab2  RS200 Host Bridge +	cab3  RS250 Host Bridge +	cbb2  RS200 Host Bridge +1003  ULSI Systems +	0201  US201 +1004  VLSI Technology Inc +	0005  82C592-FC1 +	0006  82C593-FC1 +	0007  82C594-AFC2 +	0008  82C596/7 [Wildcat] +	0009  82C597-AFC2 +	000c  82C541 [Lynx] +	000d  82C543 [Lynx] +	0101  82C532 +	0102  82C534 [Eagle] +	0103  82C538 +	0104  82C535 +	0105  82C147 +	0200  82C975 +	0280  82C925 +	0304  QSound ThunderBird PCI Audio +		1004 0304  QSound ThunderBird PCI Audio +		122d 1206  DSP368 Audio +		1483 5020  XWave Thunder 3D Audio +	0305  QSound ThunderBird PCI Audio Gameport +		1004 0305  QSound ThunderBird PCI Audio Gameport +		122d 1207  DSP368 Audio Gameport +		1483 5021  XWave Thunder 3D Audio Gameport +	0306  QSound ThunderBird PCI Audio Support Registers +		1004 0306  QSound ThunderBird PCI Audio Support Registers +		122d 1208  DSP368 Audio Support Registers +		1483 5022  XWave Thunder 3D Audio Support Registers +	0307  SAA7785 ThunderBird PCI Audio +		1004 0703  Philips Rhythmic Edge PSC703 +		1004 0705  Philips Seismic Edge PSC705 +		1004 0706  Philips Acoustic Edge PSC706 +	0308  SAA7785 ThunderBird PCI Audio Gameport +	0702  VAS96011 [Golden Gate II] +	0703  Tollgate +1005  Avance Logic Inc. [ALI] +	2064  ALG2032/2064 +	2128  ALG2364A +	2301  ALG2301 +	2302  ALG2302 +	2364  ALG2364 +	2464  ALG2364A +	2501  ALG2564A/25128A +1006  Reply Group +1007  NetFrame Systems Inc +1008  Epson +100a  Phoenix Technologies +100b  National Semiconductor Corporation +	0001  DP83810 +	0002  87415/87560 IDE +	000e  87560 Legacy I/O +	000f  FireWire Controller +	0011  NS87560 National PCI System I/O +	0012  USB Controller +	0020  DP83815 (MacPhyter) Ethernet Controller +		103c 0024  Pavilion ze4400 builtin Network +		12d9 000c  Aculab E1/T1 PMXc cPCI carrier card +		1385 f311  FA311 / FA312 (FA311 with WoL HW) +		1385 f312  FA312 (rev. A1) Fast Ethernet PCI Adapter +	0021  PC87200 PCI to ISA Bridge +	0022  DP83820 10/100/1000 Ethernet Controller +		1186 4900  DGE-500T +		1385 621a  GA621 +		1385 622a  GA622T +	0028  Geode GX2 Host Bridge +	002a  CS5535 South Bridge +	002b  CS5535 ISA bridge +	002d  CS5535 IDE +	002e  CS5535 Audio +	002f  CS5535 USB +	0030  Geode GX2 Graphics Processor +	0035  DP83065 [Saturn] 10/100/1000 Ethernet Controller +	0500  SCx200 Bridge +	0501  SCx200 SMI +	0502  SCx200, SC1100 IDE controller +		100b 0502  IDE Controller +	0503  SCx200, SC1100 Audio Controller +		100b 0503  XpressAudio controller +	0504  SCx200 Video +	0505  SCx200 XBus +	0510  SC1100 Bridge +		100b 0500  GPIO and LPC support bridge +	0511  SC1100 SMI & ACPI +		100b 0501  SC1100 SMI & ACPI bridge +	0515  SC1100 XBus +		100b 0505  SC1100 PCI to XBus bridge +	d001  87410 IDE +100c  Tseng Labs Inc +	3202  ET4000/W32p rev A +	3205  ET4000/W32p rev B +	3206  ET4000/W32p rev C +	3207  ET4000/W32p rev D +	3208  ET6000 +	4702  ET6300 +100d  AST Research Inc +100e  Weitek +	9000  P9000 Viper +	9001  P9000 Viper +	9002  P9000 Viper +	9100  P9100 Viper Pro/SE +1010  Video Logic, Ltd. +1011  Digital Equipment Corporation +	0001  DECchip 21050 +	0002  DECchip 21040 [Tulip] +	0004  DECchip 21030 [TGA] +	0007  NVRAM [Zephyr NVRAM] +	0008  KZPSA [KZPSA] +	0009  DECchip 21140 [FasterNet] +		1025 0310  21140 Fast Ethernet +		10b8 2001  SMC9332BDT EtherPower 10/100 +		10b8 2002  SMC9332BVT EtherPower T4 10/100 +		10b8 2003  SMC9334BDT EtherPower 10/100 (1-port) +		1109 2400  ANA-6944A/TX Fast Ethernet +		1112 2300  RNS2300 Fast Ethernet +		1112 2320  RNS2320 Fast Ethernet +		1112 2340  RNS2340 Fast Ethernet +		1113 1207  EN-1207-TX Fast Ethernet +		1186 1100  DFE-500TX Fast Ethernet +		1186 1112  DFE-570TX Fast Ethernet +		1186 1140  DFE-660 Cardbus Ethernet 10/100 +		1186 1142  DFE-660 Cardbus Ethernet 10/100 +		11f6 0503  Freedomline Fast Ethernet +		1282 9100  AEF-380TXD Fast Ethernet +		1385 1100  FA310TX Fast Ethernet +		2646 0001  KNE100TX Fast Ethernet +	000a  21230 Video Codec +	000d  PBXGB [TGA2] +	000f  DEFPA FDDI PCI-to-PDQ Interface Chip [PFI] +		1011 def1  FDDI controller (DEFPA) +		103c def1  FDDI controller (3X-DEFPA) +	0014  DECchip 21041 [Tulip Pass 3] +		1186 0100  DE-530+ +	0016  DGLPB [OPPO] +	0017  PV-PCI Graphics Controller (ZLXp-L) +	0018  Memory Channel interface +	0019  DECchip 21142/43 +		1011 500a  DE500A Fast Ethernet +		1011 500b  DE500B Fast Ethernet +		1014 0001  10/100 EtherJet Cardbus +		1025 0315  ALN315 Fast Ethernet +		1033 800c  PC-9821-CS01 100BASE-TX Interface Card +		1033 800d  PC-9821NR-B06 100BASE-TX Interface Card +		103c 125a  10/100Base-TX (PCI) [A5506B] +		108d 0016  Rapidfire 2327 10/100 Ethernet +		108d 0017  GoCard 2250 Ethernet 10/100 Cardbus +		10b8 2005  SMC8032DT Extreme Ethernet 10/100 +		10b8 8034  SMC8034 Extreme Ethernet 10/100 +		10ef 8169  Cardbus Fast Ethernet +		1109 2a00  ANA-6911A/TX Fast Ethernet +		1109 2b00  ANA-6911A/TXC Fast Ethernet +		1109 3000  ANA-6922/TX Fast Ethernet +		1113 1207  Cheetah Fast Ethernet +		1113 2220  Cardbus Fast Ethernet +		115d 0002  Cardbus Ethernet 10/100 +		1179 0203  Fast Ethernet +		1179 0204  Cardbus Fast Ethernet +		1186 1100  DFE-500TX Fast Ethernet +		1186 1101  DFE-500TX Fast Ethernet +		1186 1102  DFE-500TX Fast Ethernet +		1186 1112  DFE-570TX Quad Fast Ethernet +		11f0 4235  21143 [FASTLine-II UTP 10/100] +		1259 2800  AT-2800Tx Fast Ethernet +		1266 0004  Eagle Fast EtherMAX +		12af 0019  NetFlyer Cardbus Fast Ethernet +		1374 0001  Cardbus Ethernet Card 10/100 +		1374 0002  Cardbus Ethernet Card 10/100 +		1374 0007  Cardbus Ethernet Card 10/100 +		1374 0008  Cardbus Ethernet Card 10/100 +		1385 2100  FA510 +		1395 0001  10/100 Ethernet CardBus PC Card +		13d1 ab01  EtherFast 10/100 Cardbus (PCMPC200) +		1498 000a  TPMC880-10 10/100Base-T and 10Base2 PMC Ethernet Adapter +		1498 000b  TPMC880-11 Single 10/100Base-T PMC Ethernet Adapter +		1498 000c  TPMC880-12 Single 10Base2 PMC Ethernet Adapter +		14cb 0100  LNDL-100N 100Base-TX Ethernet PC Card +		1668 2000  FastNet Pro (PE2000) +		2646 0001  KNE100TX +		2646 0002  KNE-CB4TX +		8086 0001  EtherExpress PRO/100 Mobile CardBus 32 +	001a  Farallon PN9000SX Gigabit Ethernet +	0021  DECchip 21052 +	0022  DECchip 21150 +	0023  DECchip 21150 +	0024  DECchip 21152 +	0025  DECchip 21153 +	0026  DECchip 21154 +	0034  56k Modem Cardbus +		1374 0003  56k Modem Cardbus +	0045  DECchip 21553 +	0046  DECchip 21554 +		0e11 4050  Smart Array 4200 Controller +		0e11 4051  Smart Array 4250ES Controller +		0e11 4058  Smart Array 431 Controller +		103c 10c2  NetRAID-4M +		12d9 000a  IP Telephony card +		4c53 1050  CT7 mainboard +		4c53 1051  CE7 mainboard +		9005 0364  5400S (Mustang) +		9005 0365  5400S (Mustang) +		9005 1364  Dell PowerEdge RAID Controller 2 +		9005 1365  Dell PowerEdge RAID Controller 2 +		e4bf 1000  CC8-1-BLUES +	1065  StrongARM DC21285 +		1069 0020  DAC960P / DAC1164P +1012  Micronics Computers Inc +1013  Cirrus Logic +	0038  GD 7548 +	0040  GD 7555 Flat Panel GUI Accelerator +	004c  GD 7556 Video/Graphics LCD/CRT Ctrlr +	00a0  GD 5430/40 [Alpine] +	00a2  GD 5432 [Alpine] +	00a4  GD 5434-4 [Alpine] +	00a8  GD 5434-8 [Alpine] +	00ac  GD 5436 [Alpine] +	00b0  GD 5440 +	00b8  GD 5446 +		1af4 1100  QEMU Virtual Machine +	00bc  GD 5480 +		1013 00bc  CL-GD5480 +	00d0  GD 5462 +	00d2  GD 5462 [Laguna I] +	00d4  GD 5464 [Laguna] +	00d5  GD 5464 BD [Laguna] +	00d6  GD 5465 [Laguna] +		13ce 8031  Barco Metheus 2 Megapixel, Dual Head +		13cf 8031  Barco Metheus 2 Megapixel, Dual Head +	00e8  GD 5436U +	1100  CL 6729 +	1110  PD 6832 PCMCIA/CardBus Ctrlr +	1112  PD 6834 PCMCIA/CardBus Ctrlr +	1113  PD 6833 PCMCIA/CardBus Ctrlr +	1200  GD 7542 [Nordic] +	1202  GD 7543 [Viking] +	1204  GD 7541 [Nordic Light] +	4000  MD 5620 [CLM Data Fax Voice] +	4400  CD 4400 +	6001  CS 4610/11 [CrystalClear SoundFusion Audio Accelerator] +		1014 1010  CS4610 SoundFusion Audio Accelerator +	6003  CS 4614/22/24/30 [CrystalClear SoundFusion Audio Accelerator] +		1013 4280  Crystal SoundFusion PCI Audio Accelerator +		1014 0153  ThinkPad 600X/A20m +		153b 112e  DMX XFire 1024 +		153b 1136  SiXPack 5.1+ +		1681 0050  Game Theater XP +		1681 a010  Gamesurround Fortissimo II +		1681 a011  Gamesurround Fortissimo III 7.1 +		5053 3357  Santa Cruz +	6004  CS 4614/22/24 [CrystalClear SoundFusion Audio Accelerator] +	6005  Crystal CS4281 PCI Audio +		1013 4281  Crystal CS4281 PCI Audio +		10cf 10a8  Crystal CS4281 PCI Audio +		10cf 10a9  Crystal CS4281 PCI Audio +		10cf 10aa  Crystal CS4281 PCI Audio +		10cf 10ab  Crystal CS4281 PCI Audio +		10cf 10ac  Crystal CS4281 PCI Audio +		10cf 10ad  Crystal CS4281 PCI Audio +		10cf 10b4  Crystal CS4281 PCI Audio +		1179 0001  Crystal CS4281 PCI Audio +		14c0 000c  Crystal CS4281 PCI Audio +1014  IBM +	0002  PCI to MCA Bridge +	0005  Processor to I/O Controller [Alta Lite] +	0007  Processor to I/O Controller [Alta MP] +	000a  PCI to ISA Bridge (IBM27-82376) [Fire Coral] +	0017  CPU to PCI Bridge +	0018  TR Auto LANstreamer +	001b  GXT-150P +	001c  Carrera +	001d  SCSI-2 FAST PCI Adapter (82G2675) +	0020  GXT1000 Graphics Adapter +	0022  PCI to PCI Bridge (IBM27-82351) +	002d  Processor to I/O Controller [Python] +	002e  SCSI RAID Adapter [ServeRAID] +		1014 002e  ServeRAID-3x +		1014 022e  ServeRAID-4H +	0031  2 Port Serial Adapter +# AS400 iSeries PCI sync serial card +		1014 0031  2721 WAN IOA - 2 Port Sync Serial Adapter +	0036  PCI to 32-bit LocalBus Bridge [Miami] +	0037  PowerPC to PCI Bridge (IBM27-82660) +	003a  CPU to PCI Bridge +	003c  GXT250P/GXT255P Graphics Adapter +	003e  16/4 Token ring UTP/STP controller +		1014 003e  Token-Ring Adapter +		1014 00cd  Token-Ring Adapter + Wake-On-LAN +		1014 00ce  16/4 Token-Ring Adapter 2 +		1014 00cf  16/4 Token-Ring Adapter Special +		1014 00e4  High-Speed 100/16/4 Token-Ring Adapter +		1014 00e5  16/4 Token-Ring Adapter 2 + Wake-On-LAN +		1014 016d  iSeries 2744 Card +	0045  SSA Adapter +	0046  MPIC interrupt controller +	0047  PCI to PCI Bridge +	0048  PCI to PCI Bridge +	0049  Warhead SCSI Controller +	004e  ATM Controller (14104e00) +	004f  ATM Controller (14104f00) +	0050  ATM Controller (14105000) +	0053  25 MBit ATM Controller +	0054  GXT500P/GXT550P Graphics Adapter +	0057  MPEG PCI Bridge +	0058  SSA Adapter [Advanced SerialRAID/X] +	005e  GXT800P Graphics Adapter +	007c  ATM Controller (14107c00) +	007d  3780IDSP [MWave] +	008b  EADS PCI to PCI Bridge +	008e  GXT3000P Graphics Adapter +	0090  GXT 3000P +		1014 008e  GXT-3000P +	0091  SSA Adapter +	0095  20H2999 PCI Docking Bridge +	0096  Chukar chipset SCSI controller +		1014 0097  iSeries 2778 DASD IOA +		1014 0098  iSeries 2763 DASD IOA +		1014 0099  iSeries 2748 DASD IOA +	009f  PCI 4758 Cryptographic Accelerator +	00a5  ATM Controller (1410a500) +	00a6  ATM 155MBPS MM Controller (1410a600) +	00b7  256-bit Graphics Rasterizer [FireGL1] +		1092 00b8  FireGL1 AGP 32Mb +	00b8  GXT2000P Graphics Adapter +	00be  ATM 622MBPS Controller (1410be00) +	00dc  Advanced Systems Management Adapter (ASMA) +	00fc  CPC710 Dual Bridge and Memory Controller (PCI-64) +	0105  CPC710 Dual Bridge and Memory Controller (PCI-32) +	010f  Remote Supervisor Adapter (RSA) +	0142  Yotta Video Compositor Input +		1014 0143  Yotta Input Controller (ytin) +	0144  Yotta Video Compositor Output +		1014 0145  Yotta Output Controller (ytout) +	0156  405GP PLB to PCI Bridge +	015e  622Mbps ATM PCI Adapter +	0160  64bit/66MHz PCI ATM 155 MMF +	016e  GXT4000P Graphics Adapter +	0170  GXT6000P Graphics Adapter +	017d  GXT300P Graphics Adapter +	0180  Snipe chipset SCSI controller +		1014 0241  iSeries 2757 DASD IOA +		1014 0264  Quad Channel PCI-X U320 SCSI RAID Adapter (2780) +	0188  EADS-X PCI-X to PCI-X Bridge +	01a7  PCI-X to PCI-X Bridge +	01bd  ServeRAID Controller +		1014 01bd  ServeRAID 4Lx +		1014 01be  ServeRAID-4M +		1014 01bf  ServeRAID-4L +		1014 0208  ServeRAID-4Mx +		1014 020e  ServeRAID-4Lx +		1014 022e  ServeRAID-4H +		1014 0258  ServeRAID-5i +		1014 0259  ServeRAID-5i +	01c1  64bit/66MHz PCI ATM 155 UTP +	01e6  Cryptographic Accelerator +	01ef  PowerPC 440GP PCI Bridge +		1734 102b  PCEAS PCI-X Dual Port ESCON Adapter +		1734 10f8  PCEAT PCI-Express Dual Port ESCON Adapter +	01ff  10/100 Mbps Ethernet +	0219  Multiport Serial Adapter +		1014 021a  Dual RVX +		1014 0251  Internal Modem/RVX +		1014 0252  Quad Internal Modem +	021b  GXT6500P Graphics Adapter +	021c  GXT4500P Graphics Adapter +	0233  GXT135P Graphics Adapter +	028c  Citrine chipset SCSI controller +		1014 028d  Dual Channel PCI-X DDR SAS RAID Adapter (572E) +		1014 02be  Dual Channel PCI-X DDR U320 SCSI RAID Adapter (571B) +		1014 02c0  Dual Channel PCI-X DDR U320 SCSI Adapter (571A) +		1014 030d  PCI-X DDR Auxiliary Cache Adapter (575B) +	02a1  Calgary PCI-X Host Bridge +	02bd  Obsidian chipset SCSI controller +		1014 02c1  PCI-X DDR 3Gb SAS Adapter (572A/572C) +		1014 02c2  PCI-X DDR 3Gb SAS RAID Adapter (572B/571D) +		1014 0338  PCI-X DDR Auxiliary Cache Adapter (575C) +	0302  Winnipeg PCI-X Host Bridge +	0308  CalIOC2 PCI-E Root Port +	0314  ZISC 036 Neural accelerator card +	032d  Axon - Cell Companion Chip +		1014 03a1  PCIe PowerXCell 8i Cell Accelerator Board +	0339  Obsidian-E PCI-E SCSI controller +		1014 030a  PCIe 3Gb SAS RAID Adapter (574E) +		1014 033a  PCIe 3Gb SAS Adapter (57B3) +		1014 035c  PCIe x8 Internal 3Gb SAS adapter (57CC) +		1014 0360  PCI-E Auxiliary Cache Adapter (57B7) +	033d  PCI-E IPR SAS Adapter (FPGA) +		1014 033c  PCIe2 1.8GB Cache 6Gb SAS RAID Adapter Tri-port (57B5) +		1014 0353  PCIe2 3.1GB Cache 6Gb SAS RAID Enclosure (57C3) +		1014 0354  PCIe2 6Gb SAS Adapter Dual-port (57C4) +		1014 0356  PCIe2 1.8GB Cache 6Gb SAS RAID & SSD Adapter (574D) +		1014 035f  PCIe2 6Gb SAS Adapter Quad-port (57B2) +	034a  PCI-E IPR SAS Adapter (ASIC) +		1014 033b  PCIe2 6Gb SAS RAID Adapter Quad-port (57B4) +		1014 0355  PCIe2 3.6GB Cache 6Gb SAS RAID Adapter Quad-port (57B1) +		1014 0357  PCIe2 6Gb SAS Adapter Quad-port (57C6) +		1014 035d  PCIe3 1.8GB Cache RAID SAS Adapter Quad-port 6GB (57C8) +		1014 035e  PCIe2 3.6GB Cache 6Gb SAS RAID Adapter Quad-port (57CE) +		1014 03fb  PCIe3 28GB Cache RAID SAS Enclosure 6Gb x 16 (57D5) +		1014 03fe  PCIe3 x8 Cache SAS RAID Internal Adapter 6Gb (57D8) +		1014 03ff  PCIe3 x8 SAS RAID Internal Adapter 6Gb (57D7) +		1014 0474  PCIe3 x16 Cache SAS RAID Internal Adapter 6Gb (57EB) +		1014 0475  PCIe3 x16 SAS RAID Internal Adapter 6Gb (57EC) +		1014 0499  PCIe3 x16 Cache SAS RAID Internal Adapter 6Gb (57ED) +		1014 049a  PCIe3 x16 SAS RAID Internal Adapter 6Gb (57EE) +		1014 04c7  PCIe3 x 8 Cache SAS RAID Internal Adapter 6GB(2CCA) +		1014 04c8  PCIe3 x 8 Cache SAS RAID Internal Adapter 6GB(2CD2) +		1014 0c49  PCIe3 x 8 Cache SAS RAID Internal Adapter 6GB(2CCD) +	044b  GenWQE Accelerator Adapter +	04aa  Flash Adapter 90 (PCIe2 0.9TB) +	3022  QLA3022 Network Adapter +	4022  QLA3022 Network Adapter +	ffff  MPIC-2 interrupt controller +1015  LSI Logic Corp of Canada +1016  ICL Personal Systems +1017  SPEA Software AG +	5343  SPEA 3D Accelerator +1018  Unisys Systems +1019  Elitegroup Computer Systems +101a  AT&T GIS (NCR) +	0005  100VG ethernet +	0007  BYNET BIC4G/2C/2G +		101a 0019  BYNET BIC2C +		101a 001c  BYNET BIC2G +		101a 001f  BYNET BIC4G +	0009  PQS Memory Controller +	000a  BYNET BPCI Adapter +	000b  BYNET 4 Port BYA Switch (BYA4P) +	000c  BYNET 4 Port BYA Switch (BYA4G) +	0010  NCR AMC Memory Controller +	1dc1  BYNET BIC2M/BIC4M/BYA4M +		101a 0019  BIC2M +		101a 001f  BIC4M +		101a 0ece  BYA4M +	1fa8  BYNET Multi-port BIC Adapter (XBIC Based) +		101a 00c3  BYNET BIC2SE +101b  Vitesse Semiconductor +# Maxim VSC452 Super BMC Controller with Video +	0452  VSC452 [SuperBMC] +101c  Western Digital +	0193  33C193A +	0196  33C196A +	0197  33C197A +	0296  33C296A +	3193  7193 +	3197  7197 +	3296  33C296A +	4296  34C296 +	9710  Pipeline 9710 +	9712  Pipeline 9712 +	c24a  90C +# ID for Newly Acquired Storage Products from Vitesse +101d  Maxim Integrated Products +101e  American Megatrends Inc. +	0009  MegaRAID 428 Ultra RAID Controller (rev 03) +	1960  MegaRAID +		101e 0471  MegaRAID 471 Enterprise 1600 RAID Controller +		101e 0475  MegaRAID 475 Express 500/500LC RAID Controller +		101e 0477  MegaRAID 477 Elite 3100 RAID Controller +		101e 0493  MegaRAID 493 Elite 1600 RAID Controller +		101e 0494  MegaRAID 494 Elite 1650 RAID Controller +		101e 0503  MegaRAID 503 Enterprise 1650 RAID Controller +		101e 0511  MegaRAID 511 i4 IDE RAID Controller +		101e 0522  MegaRAID 522 i4133 RAID Controller +		1028 0471  PowerEdge RAID Controller 3/QC +		1028 0475  PowerEdge RAID Controller 3/SC +		1028 0493  PowerEdge RAID Controller 3/DC +		1028 0511  PowerEdge Cost Effective RAID Controller ATA100/4Ch +		103c 60e7  NetRAID-1M +		103c 60e8  NetRaid 2M [AMI MegaRaid 493] +	9010  MegaRAID 428 Ultra RAID Controller +	9030  EIDE Controller +	9031  EIDE Controller +	9032  EIDE & SCSI Controller +	9033  SCSI Controller +	9040  Multimedia card +	9060  MegaRAID 434 Ultra GT RAID Controller +	9063  MegaRAC +		101e 0767  Dell Remote Assistant Card 2 +101f  PictureTel +1020  Hitachi Computer Products +1021  OKI Electric Industry Co. Ltd. +1022  Advanced Micro Devices, Inc. [AMD] +	1100  K8 [Athlon64/Opteron] HyperTransport Technology Configuration +	1101  K8 [Athlon64/Opteron] Address Map +	1102  K8 [Athlon64/Opteron] DRAM Controller +	1103  K8 [Athlon64/Opteron] Miscellaneous Control +	1200  Family 10h Processor HyperTransport Configuration +	1201  Family 10h Processor Address Map +	1202  Family 10h Processor DRAM Controller +	1203  Family 10h Processor Miscellaneous Control +	1204  Family 10h Processor Link Control +	1300  Family 11h Processor HyperTransport Configuration +	1301  Family 11h Processor Address Map +	1302  Family 11h Processor DRAM Controller +	1303  Family 11h Processor Miscellaneous Control +	1304  Family 11h Processor Link Control +	1400  Family 15h (Models 10h-1fh) Processor Function 0 +	1401  Family 15h (Models 10h-1fh) Processor Function 1 +	1402  Family 15h (Models 10h-1fh) Processor Function 2 +	1403  Family 15h (Models 10h-1fh) Processor Function 3 +	1404  Family 15h (Models 10h-1fh) Processor Function 4 +	1405  Family 15h (Models 10h-1fh) Processor Function 5 +	1410  Family 15h (Models 10h-1fh) Processor Root Complex +	1412  Family 15h (Models 10h-1fh) Processor Root Port +	1413  Family 15h (Models 10h-1fh) Processor Root Port +	1414  Family 15h (Models 10h-1fh) Processor Root Port +	1415  Family 15h (Models 10h-1fh) Processor Root Port +	1416  Family 15h (Models 10h-1fh) Processor Root Port +	1417  Family 15h (Models 10h-1fh) Processor Root Port +	1418  Family 15h (Models 10h-1fh) Processor Root Port +	1419  Family 15h (Models 10h-1fh) I/O Memory Management Unit +	141a  Family 15h (Models 30h-3fh) Processor Function 0 +	141b  Family 15h (Models 30h-3fh) Processor Function 1 +	141c  Family 15h (Models 30h-3fh) Processor Function 2 +	141d  Family 15h (Models 30h-3fh) Processor Function 3 +	141e  Family 15h (Models 30h-3fh) Processor Function 4 +	141f  Family 15h (Models 30h-3fh) Processor Function 5 +	1422  Family 15h (Models 30h-3fh) Processor Root Complex +	1423  Family 15h (Models 30h-3fh) I/O Memory Management Unit +	1426  Family 15h (Models 30h-3fh) Processor Root Port +	1439  Family 16h Processor Functions 5:1 +	1510  Family 14h Processor Root Complex +		174b 1001  PURE Fusion Mini +	1512  Family 14h Processor Root Port +	1513  Family 14h Processor Root Port +	1514  Family 14h Processor Root Port +	1515  Family 14h Processor Root Port +	1516  Family 14h Processor Root Port +	1530  Family 16h Processor Function 0 +	1531  Family 16h Processor Function 1 +	1532  Family 16h Processor Function 2 +	1533  Family 16h Processor Function 3 +	1534  Family 16h Processor Function 4 +	1535  Family 16h Processor Function 5 +	1536  Family 16h Processor Root Complex +	1538  Family 16h Processor Function 0 +	1600  Family 15h Processor Function 0 +	1601  Family 15h Processor Function 1 +	1602  Family 15h Processor Function 2 +	1603  Family 15h Processor Function 3 +	1604  Family 15h Processor Function 4 +	1605  Family 15h Processor Function 5 +	1700  Family 12h/14h Processor Function 0 +	1701  Family 12h/14h Processor Function 1 +	1702  Family 12h/14h Processor Function 2 +	1703  Family 12h/14h Processor Function 3 +	1704  Family 12h/14h Processor Function 4 +	1705  Family 12h Processor Root Complex +	1707  Family 12h Processor Root Port +	1708  Family 12h Processor Root Port +	1709  Family 12h Processor Root Port +	170a  Family 12h Processor Root Port +	170b  Family 12h Processor Root Port +	170c  Family 12h Processor Root Port +	170d  Family 12h Processor Root Port +	1716  Family 12h/14h Processor Function 5 +	1718  Family 12h/14h Processor Function 6 +	1719  Family 12h/14h Processor Function 7 +	2000  79c970 [PCnet32 LANCE] +		1014 2000  NetFinity 10/100 Fast Ethernet +		1022 2000  PCnet - Fast 79C971 +		103c 104c  Ethernet with LAN remote power Adapter +		103c 1064  Ethernet with LAN remote power Adapter +		103c 1065  Ethernet with LAN remote power Adapter +		103c 106c  Ethernet with LAN remote power Adapter +		103c 106e  Ethernet with LAN remote power Adapter +		103c 10ea  Ethernet with LAN remote power Adapter +		1113 1220  EN1220 10/100 Fast Ethernet +		1259 2450  AT-2450 10/100 Fast Ethernet +		1259 2454  AT-2450v4 10Mb Ethernet Adapter +		1259 2700  AT-2700TX 10/100 Fast Ethernet +		1259 2701  AT-2700FX 100Mb Ethernet +		1259 2702  AT-2700FTX 10/100 Mb Fiber/Copper Fast Ethernet +		1259 2703  AT-2701FX +		1259 2704  AT-2701FTX 10/100 Mb Fiber/Copper Fast Ethernet +		4c53 1000  CC7/CR7/CP7/VC7/VP7/VR7 mainboard +		4c53 1010  CP5/CR6 mainboard +		4c53 1020  VR6 mainboard +		4c53 1030  PC5 mainboard +		4c53 1040  CL7 mainboard +		4c53 1060  PC7 mainboard +	2001  79c978 [HomePNA] +		1092 0a78  Multimedia Home Network Adapter +		1668 0299  ActionLink Home Network Adapter +	2003  Am 1771 MBW [Alchemy] +	2020  53c974 [PCscsi] +		1af4 1100  QEMU Virtual Machine +	2040  79c974 +	2080  CS5536 [Geode companion] Host Bridge +	2081  Geode LX Video +	2082  Geode LX AES Security Block +	208f  CS5536 GeodeLink PCI South Bridge +	2090  CS5536 [Geode companion] ISA +	2091  CS5536 [Geode companion] FLASH +	2093  CS5536 [Geode companion] Audio +	2094  CS5536 [Geode companion] OHC +	2095  CS5536 [Geode companion] EHC +	2096  CS5536 [Geode companion] UDC +	2097  CS5536 [Geode companion] UOC +	209a  CS5536 [Geode companion] IDE +	3000  ELanSC520 Microcontroller +	43a0  Hudson PCI to PCI bridge (PCIE port 0) +	43a1  Hudson PCI to PCI bridge (PCIE port 1) +	43a2  Hudson PCI to PCI bridge (PCIE port 2) +	43a3  Hudson PCI to PCI bridge (PCIE port 3) +	7006  AMD-751 [Irongate] System Controller +	7007  AMD-751 [Irongate] AGP Bridge +	700a  AMD-IGR4 AGP Host to PCI Bridge +	700b  AMD-IGR4 PCI to PCI Bridge +	700c  AMD-760 MP [IGD4-2P] System Controller +	700d  AMD-760 MP [IGD4-2P] AGP Bridge +	700e  AMD-760 [IGD4-1P] System Controller +	700f  AMD-760 [IGD4-1P] AGP Bridge +	7400  AMD-755 [Cobra] ISA +	7401  AMD-755 [Cobra] IDE +	7403  AMD-755 [Cobra] ACPI +	7404  AMD-755 [Cobra] USB +	7408  AMD-756 [Viper] ISA +	7409  AMD-756 [Viper] IDE +	740b  AMD-756 [Viper] ACPI +	740c  AMD-756 [Viper] USB +	7410  AMD-766 [ViperPlus] ISA +	7411  AMD-766 [ViperPlus] IDE +	7413  AMD-766 [ViperPlus] ACPI +	7414  AMD-766 [ViperPlus] USB +	7440  AMD-768 [Opus] ISA +		1043 8044  A7M-D Mainboard +	7441  AMD-768 [Opus] IDE +	7443  AMD-768 [Opus] ACPI +		1043 8044  A7M-D Mainboard +	7445  AMD-768 [Opus] Audio +	7446  AMD-768 [Opus] MC97 Modem +	7448  AMD-768 [Opus] PCI +	7449  AMD-768 [Opus] USB +	7450  AMD-8131 PCI-X Bridge +	7451  AMD-8131 PCI-X IOAPIC +	7454  AMD-8151 System Controller +	7455  AMD-8151 AGP Bridge +	7458  AMD-8132 PCI-X Bridge +	7459  AMD-8132 PCI-X IOAPIC +	7460  AMD-8111 PCI +		161f 3017  HDAMB +	7461  AMD-8111 USB +	7462  AMD-8111 Ethernet +	7463  AMD-8111 USB EHCI +	7464  AMD-8111 USB OHCI +		161f 3017  HDAMB +	7468  AMD-8111 LPC +		161f 3017  HDAMB +	7469  AMD-8111 IDE +		1022 2b80  AMD-8111 IDE [Quartet] +		161f 3017  HDAMB +	746a  AMD-8111 SMBus 2.0 +	746b  AMD-8111 ACPI +		161f 3017  HDAMB +	746d  AMD-8111 AC97 Audio +		161f 3017  HDAMB +	746e  AMD-8111 MC97 Modem +	756b  AMD-8111 ACPI +	7800  FCH SATA Controller [IDE mode] +	7801  FCH SATA Controller [AHCI mode] +		103c 168b  ProBook 4535s Notebook +		103c 194e  ProBook 455 G1 Notebook +	7802  FCH SATA Controller [RAID mode] +	7803  FCH SATA Controller [RAID mode] +	7804  FCH SATA Controller [AHCI mode] +	7805  FCH SATA Controller [RAID mode] +	7806  FCH SD Flash Controller +	7807  FCH USB OHCI Controller +		103c 194e  ProBook 455 G1 Notebook +	7808  FCH USB EHCI Controller +		103c 194e  ProBook 455 G1 Notebook +	7809  FCH USB OHCI Controller +		103c 194e  ProBook 455 G1 Notebook +	780b  FCH SMBus Controller +		103c 194e  ProBook 455 G1 Notebook +	780c  FCH IDE Controller +	780d  FCH Azalia Controller +		103c 194e  ProBook 455 G1 Notebook +		1043 8444  F2A85-M Series +	780e  FCH LPC Bridge +		103c 194e  ProBook 455 G1 Notebook +	780f  FCH PCI Bridge +	7812  FCH USB XHCI Controller +	7813  FCH SD Flash Controller +	7814  FCH USB XHCI Controller +		103c 194e  ProBook 455 G1 Notebook +	7900  FCH SATA Controller [IDE mode] +	7901  FCH SATA Controller [AHCI mode] +	7902  FCH SATA Controller [RAID mode] +	7903  FCH SATA Controller [RAID mode] +	7904  FCH SATA Controller [AHCI mode] +	7906  FCH SD Flash Controller +	7908  FCH USB EHCI Controller +	790b  FCH SMBus Controller +	790e  FCH LPC Bridge +	790f  FCH PCI Bridge +	7914  FCH USB XHCI Controller +	9600  RS780 Host Bridge +		1043 82f1  M3A78-EH Motherboard +	9601  RS880 Host Bridge +		1019 2120  A785GM-M +		1043 843e  M5A88-V EVO +	9602  RS780/RS880 PCI to PCI bridge (int gfx) +	9603  RS780 PCI to PCI bridge (ext gfx port 0) +	9604  RS780/RS880 PCI to PCI bridge (PCIE port 0) +	9605  RS780/RS880 PCI to PCI bridge (PCIE port 1) +	9606  RS780 PCI to PCI bridge (PCIE port 2) +	9607  RS780/RS880 PCI to PCI bridge (PCIE port 3) +	9608  RS780/RS880 PCI to PCI bridge (PCIE port 4) +	9609  RS780/RS880 PCI to PCI bridge (PCIE port 5) +	960a  RS780 PCI to PCI bridge (NB-SB link) +	960b  RS780 PCI to PCI bridge (ext gfx port 1) +1023  Trident Microsystems +	0194  82C194 +	2000  4DWave DX +	2001  4DWave NX +		122d 1400  Trident PCI288-Q3DII (NX) +	2100  CyberBlade XP4m32 +	2200  XGI Volari XP5 +	8400  CyberBlade/i7 +		1023 8400  CyberBlade i7 AGP +	8420  CyberBlade/i7d +		0e11 b15a  CyberBlade i7 AGP +	8500  CyberBlade/i1 +	8520  CyberBlade i1 +		0e11 b16e  CyberBlade i1 AGP +		1023 8520  CyberBlade i1 AGP +	8620  CyberBlade/i1 +		1014 0502  ThinkPad R30/T30 +		1014 1025  Travelmate 352TE +	8820  CyberBlade XPAi1 +	9320  TGUI 9320 +	9350  GUI Accelerator +	9360  Flat panel GUI Accelerator +	9382  Cyber 9382 [Reference design] +	9383  Cyber 9383 [Reference design] +	9385  Cyber 9385 [Reference design] +	9386  Cyber 9386 +	9388  Cyber 9388 +	9397  Cyber 9397 +	939a  Cyber 9397DVD +	9420  TGUI 9420 +	9430  TGUI 9430 +	9440  TGUI 9440 +	9460  TGUI 9460 +	9470  TGUI 9470 +	9520  Cyber 9520 +	9525  Cyber 9525 +	9540  Cyber 9540 +	9660  TGUI 9660/938x/968x +	9680  TGUI 9680 +	9682  TGUI 9682 +	9683  TGUI 9683 +	9685  ProVIDIA 9685 +	9750  3DImage 9750 +		1014 9750  3DImage 9750 +		1023 9750  3DImage 9750 +	9753  TGUI 9753 +	9754  TGUI 9754 +	9759  TGUI 975 +	9783  TGUI 9783 +	9785  TGUI 9785 +	9850  3DImage 9850 +	9880  Blade 3D PCI/AGP +		1023 9880  Blade 3D +	9910  CyberBlade/XP +	9930  CyberBlade/XPm +	9960  CyberBlade XP2 +1024  Zenith Data Systems +1025  Acer Incorporated [ALI] +	1435  M1435 +	1445  M1445 +	1449  M1449 +	1451  M1451 +	1461  M1461 +	1489  M1489 +	1511  M1511 +	1512  ALI M1512 Aladdin +	1513  M1513 +	1521  ALI M1521 Aladdin III CPU Bridge +		10b9 1521  ALI M1521 Aladdin III CPU Bridge +	1523  ALI M1523 ISA Bridge +		10b9 1523  ALI M1523 ISA Bridge +	1531  M1531 Northbridge [Aladdin IV/IV+] +	1533  M1533 PCI-to-ISA Bridge +		10b9 1533  ALI M1533 Aladdin IV/V ISA South Bridge +	1535  M1535 PCI Bridge + Super I/O + FIR +	1541  M1541 Northbridge [Aladdin V] +		10b9 1541  ALI M1541 Aladdin V/V+ AGP+PCI North Bridge +	1542  M1542 Northbridge [Aladdin V] +	1543  M1543 PCI-to-ISA Bridge + Super I/O + FIR +	1561  M1561 Northbridge [Aladdin 7] +	1621  M1621 Northbridge [Aladdin-Pro II] +	1631  M1631 Northbridge+3D Graphics [Aladdin TNT2] +	1641  M1641 Northbridge [Aladdin-Pro IV] +	1647  M1647 [MaGiK1] PCI North Bridge +	1671  M1671 Northbridge [ALADDiN-P4] +	1672  Northbridge [CyberALADDiN-P4] +	3141  M3141 +	3143  M3143 +	3145  M3145 +	3147  M3147 +	3149  M3149 +	3151  M3151 +	3307  M3307 MPEG-I Video Controller +	3309  M3309 MPEG-II Video w/ Software Audio Decoder +	3321  M3321 MPEG-II Audio/Video Decoder +	5212  M4803 +	5215  ALI PCI EIDE Controller +	5217  M5217H +	5219  M5219 +	5225  M5225 +	5229  M5229 +	5235  M5235 +	5237  M5237 PCI USB Host Controller +	5240  EIDE Controller +	5241  PCMCIA Bridge +	5242  General Purpose Controller +	5243  PCI to PCI Bridge Controller +	5244  Floppy Disk Controller +	5247  M1541 PCI to PCI Bridge +	5251  M5251 P1394 Controller +	5427  PCI to AGP Bridge +	5451  M5451 PCI AC-Link Controller Audio Device +	5453  M5453 PCI AC-Link Controller Modem Device +	7101  M7101 PCI PMU Power Management Controller +		10b9 7101  M7101 PCI PMU Power Management Controller +# should be 1022:9602 +	9602  AMD RS780/RS880 PCI to PCI bridge (int gfx) +1028  Dell +	0001  PowerEdge Expandable RAID Controller 2/Si +		1028 0001  PowerEdge 2400 +	0002  PowerEdge Expandable RAID Controller 3/Di +		1028 0002  PowerEdge 4400 +		1028 00d1  PERC 3/DiV [Viper] +		1028 00d9  PERC 3/DiL [Lexus] +	0003  PowerEdge Expandable RAID Controller 3/Si +		1028 0003  PowerEdge 2450 +# PowerEdge Codename Iguana +	0004  PowerEdge Expandable RAID Controller 3/Di [Iguana] +		1028 0004  PERC 3/DiF [Iguana] +	0006  PowerEdge Expandable RAID Controller 3/Di +	0007  Remote Access Card III +	0008  Remote Access Card III +	0009  Remote Access Card III: BMC/SMIC device not present +	000a  PowerEdge Expandable RAID Controller 3/Di +		1028 0106  PERC 3/DiJ [Jaguar] +		1028 011b  PERC 3/DiD [Dagger] +		1028 0121  PERC 3/DiB [Boxster] +	000c  Embedded Remote Access or ERA/O +	000d  Embedded Remote Access: BMC/SMIC device +	000e  PowerEdge Expandable RAID controller 4/Di +	000f  PowerEdge Expandable RAID controller 4/Di +		1028 014a  PowerEdge 1750 +	0010  Remote Access Card 4 +	0011  Remote Access Card 4 Daughter Card +	0012  Remote Access Card 4 Daughter Card Virtual UART +	0013  PowerEdge Expandable RAID controller 4 +		1028 016c  PowerEdge Expandable RAID Controller 4e/Si +		1028 016d  PowerEdge Expandable RAID Controller 4e/Di +		1028 016e  PowerEdge Expandable RAID Controller 4e/Di +		1028 016f  PowerEdge Expandable RAID Controller 4e/Di +		1028 0170  PowerEdge Expandable RAID Controller 4e/Di +	0014  Remote Access Card 4 Daughter Card SMIC interface +	0015  PowerEdge Expandable RAID controller 5 +		1028 1f01  PERC 5/E Adapter RAID Controller +		1028 1f02  PERC 5/i Adapter RAID Controller +		1028 1f03  PERC 5/i Integrated RAID Controller +	0016  PowerEdge Expandable RAID controller S300 +		1028 1f24  PERC S300 Controller +# NV-RAM Adapter used in Dell DR appliances +	0073  NV-RAM Adapter +1029  Siemens Nixdorf IS +102a  LSI Logic +	0000  HYDRA +	0010  ASPEN +	001f  AHA-2940U2/U2W /7890/7891 SCSI Controllers +		9005 000f  2940U2W SCSI Controller +		9005 0106  2940U2W SCSI Controller +		9005 a180  2940U2W SCSI Controller +	00c5  AIC-7899 U160/m SCSI Controller +		1028 00c5  PowerEdge 2550/2650/4600 +	00cf  AIC-7899P U160/m +		1028 0106  PowerEdge 4600 +		1028 0121  PowerEdge 2650 +102b  Matrox Electronics Systems Ltd. +# DJ: I've a suspicion that 0010 is a duplicate of 0d10. +	0010  MGA-I [Impression?] +	0100  MGA 1064SG [Mystique] +	0518  MGA-II [Athena] +	0519  MGA 2064W [Millennium] +	051a  MGA 1064SG [Mystique] +		102b 0100  MGA-1064SG Mystique +		102b 1100  MGA-1084SG Mystique +		102b 1200  MGA-1084SG Mystique +		1100 102b  MGA-1084SG Mystique +		110a 0018  Scenic Pro C5 (D1025) +	051b  MGA 2164W [Millennium II] +		102b 051b  MGA-2164W Millennium II +		102b 1100  MGA-2164W Millennium II +		102b 1200  MGA-2164W Millennium II +		102b 2100  MGA-2164W Millennium II +	051e  MGA 1064SG [Mystique] AGP +	051f  MGA 2164W [Millennium II] AGP +	0520  MGA G200 +		102b dbc2  G200 Multi-Monitor +		102b dbc8  G200 Multi-Monitor +		102b dbe2  G200 Multi-Monitor +		102b dbe8  G200 Multi-Monitor +		102b ff03  Millennium G200 SD +		102b ff04  Marvel G200 +	0521  MGA G200 AGP +		1014 ff03  Millennium G200 AGP +		102b 48e9  Mystique G200 AGP +		102b 48f8  Millennium G200 SD AGP +		102b 4a60  Millennium G200 LE AGP +		102b 4a64  Millennium G200 AGP +		102b c93c  Millennium G200 AGP +		102b c9b0  Millennium G200 AGP +		102b c9bc  Millennium G200 AGP +		102b ca60  Millennium G250 LE AGP +		102b ca6c  Millennium G250 AGP +		102b dbbc  Millennium G200 AGP +		102b dbc2  Millennium G200 MMS (Dual G200) +		102b dbc3  G200 Multi-Monitor +		102b dbc8  Millennium G200 MMS (Dual G200) +		102b dbd2  G200 Multi-Monitor +		102b dbd3  G200 Multi-Monitor +		102b dbd4  G200 Multi-Monitor +		102b dbd5  G200 Multi-Monitor +		102b dbd8  G200 Multi-Monitor +		102b dbd9  G200 Multi-Monitor +		102b dbe2  Millennium G200 MMS (Quad G200) +		102b dbe3  G200 Multi-Monitor +		102b dbe8  Millennium G200 MMS (Quad G200) +		102b dbf2  G200 Multi-Monitor +		102b dbf3  G200 Multi-Monitor +		102b dbf4  G200 Multi-Monitor +		102b dbf5  G200 Multi-Monitor +		102b dbf8  G200 Multi-Monitor +		102b dbf9  G200 Multi-Monitor +		102b f806  Mystique G200 Video AGP +		102b ff00  MGA-G200 AGP +		102b ff02  Mystique G200 AGP +		102b ff03  Millennium G200 AGP +		102b ff04  Marvel G200 AGP +		110a 0032  MGA-G200 AGP +	0522  MGA G200e [Pilot] ServerEngines (SEP1) +		103c 31fa  ProLiant DL140 G3 +	0525  MGA G400/G450 +		0e11 b16f  MGA-G400 AGP +		102b 0328  Millennium G400 16Mb SDRAM +		102b 0338  Millennium G400 16Mb SDRAM +		102b 0378  Millennium G400 32Mb SDRAM +		102b 0541  Millennium G450 Dual Head +		102b 0542  Millennium G450 Dual Head LX +		102b 0543  Millennium G450 Single Head LX +		102b 0641  Millennium G450 32Mb SDRAM Dual Head +		102b 0642  Millennium G450 32Mb SDRAM Dual Head LX +		102b 0643  Millennium G450 32Mb SDRAM Single Head LX +		102b 07c0  Millennium G450 Dual Head LE +		102b 07c1  Millennium G450 SDR Dual Head LE +		102b 0d41  Millennium G450 Dual Head PCI +		102b 0d42  Millennium G450 Dual Head LX PCI +		102b 0d43  Millennium G450 32Mb Dual Head PCI +		102b 0e00  Marvel G450 eTV +		102b 0e01  Marvel G450 eTV +		102b 0e02  Marvel G450 eTV +		102b 0e03  Marvel G450 eTV +		102b 0f80  Millennium G450 Low Profile +		102b 0f81  Millennium G450 Low Profile +		102b 0f82  Millennium G450 Low Profile DVI +		102b 0f83  Millennium G450 Low Profile DVI +		102b 19d8  Millennium G400 16Mb SGRAM +		102b 19f8  Millennium G400 32Mb SGRAM +		102b 2159  Millennium G400 Dual Head 16Mb +		102b 2179  Millennium G400 MAX/Dual Head 32Mb +		102b 217d  Millennium G400 Dual Head Max +		102b 23c0  Millennium G450 +		102b 23c1  Millennium G450 +		102b 23c2  Millennium G450 DVI +		102b 23c3  Millennium G450 DVI +		102b 2f58  Millennium G400 +		102b 2f78  Millennium G400 +		102b 3693  Marvel G400 AGP +		102b 5dd0  4Sight II +		102b 5f50  4Sight II +		102b 5f51  4Sight II +		102b 5f52  4Sight II +		102b 9010  Millennium G400 Dual Head +		1458 0400  GA-G400 +		1705 0001  Millennium G450 32MB SGRAM +		1705 0002  Millennium G450 16MB SGRAM +		1705 0003  Millennium G450 32MB +		1705 0004  Millennium G450 16MB +	0527  Parhelia +		102b 0840  Parhelia 128Mb +		102b 0850  Parhelia 256MB +		102b 0870  MED2mp-DVI +		102b 0880  P-256 Edge Overlap Controller +	0528  Parhelia +		102b 1020  Parhelia 128MB +		102b 1030  Parhelia 256 MB Dual DVI +		102b 1040  MED2mp-DVI +		102b 1050  Sono S20 +		102b 1060  PJ-30L +		102b 1070  PJ-40L +		102b 1421  MED5mp +		102b 1431  MED3mp-DVI +		102b 1451  MED5mp-DVI +		102b 1491  MED2mp-DVI +		102b 14b1  MED3mp-DVI +		102b 14c1  MED5mp-DVI +		102b 14e1  Parhelia PCI 256MB +		102b 14f1  Parhelia Precision SGT +		102b 1501  ATC-4MP +		102b 1511  ATC-4MP +		102b 1521  TheatreVUE T30 +		102b 1531  TheatreVUE T20 +		102b 1541  MED2mp-DVI +		102b 1551  MED3mp-DVI +		102b 1561  MED5mp-DVI +		102b 1571  Parhelia DL256 PCI +		102b 1591  Parhelia Precision SDT +		102b 15a1  MED4mp-DVI +		102b 2011  Parhelia HR256 +		102b 2021  QID Pro +		102b 2061  PJ-40LP +		102b 2081  EWS Quad +		102b 2411  PPX-OUT8 +		102b 2421  VPX-OUT8 +		102b 2441  PPX-OUT4 +		102b 2451  VPX-OUT4 +		102b 2491  LPX-OUT4 +	0530  MGA G200EV +	0532  MGA G200eW WPCM450 +		1028 0235  PowerEdge R710 MGA G200eW WPCM450 +		1028 0236  PowerEdge R610 MGA G200eW WPCM450 +		1028 0237  PowerEdge T610 MGA G200eW WPCM450 +		1028 0287  PowerEdge M610 MGA G200eW WPCM450 +		1028 028c  PowerEdge R410 MGA G200eW WPCM450 +		1028 028d  PowerEdge T410 MGA G200eW WPCM450 +		1028 029c  PowerEdge M710 MGA G200eW WPCM450 +		1028 02a4  PowerEdge T310 MGA G200eW WPCM450 +		15d9 0624  X9SCM-F Motherboard +		15d9 a811  H8DGU +	0533  MGA G200EH +		103c 3381  iLO4 +	0534  G200eR2 +	0540  M91XX +		102b 2080  M9140 LP PCIe x16 +		102b 20c0  Xenia +		102b 20c1  Xenia Pro +		102b 2100  M9120 PCIe x16 +		102b 2140  M9125 PCIe x16 +		102b 2180  M9120 Plus LP PCIe x16 +		102b 21c0  M9120 Plus LP PCIe x1 +		102b 2200  VDA1164 Output Board +		102b 2240  M9148 LP PCIe x16 +		102b 2241  M9138 LP PCIe x16 +		102b 2280  M9188 ATX PCIe x16 +		102b 22c0  M9128 LP PCIe x16 +	0d10  MGA Ultima/Impression +	1000  MGA G100 [Productiva] +		102b ff01  Productiva G100 +		102b ff05  Productiva G100 Multi-Monitor +	1001  MGA G100 [Productiva] AGP +		102b 1001  MGA-G100 AGP +		102b ff00  MGA-G100 AGP +		102b ff01  MGA-G100 Productiva AGP +		102b ff03  Millennium G100 AGP +		102b ff04  MGA-G100 AGP +		102b ff05  MGA-G100 Productiva AGP Multi-Monitor +		110a 001e  MGA-G100 AGP +	2007  MGA Mistral +	2527  Millennium G550 +# PCI\VEN_102B&DEV_2527&SUBSYS_0F42102B&REV_01 +		102b 0f42  Matrox G550 Low Profile PCI +		102b 0f83  Millennium G550 +		102b 0f84  Millennium G550 Dual Head DDR 32Mb +		102b 1e41  Millennium G550 +		102b 2300  Millennium G550 LP PCIE +	2537  Millenium P650/P750 +		102b 1820  Millennium P750 64MB +		102b 1830  Millennium P650 64MB +		102b 1850  RAD2mp +		102b 1860  RAD3mp +		102b 1880  Sono S10 +		102b 1c10  QID 128MB +		102b 2811  Millennium P650 Low-profile PCI 64MB +		102b 2821  Millenium P650 Low-profile PCI +		102b 2841  RAD PCI +		102b 2851  Spectrum PCI +		102b 2871  EpicA TC2 +		102b 2c11  QID Low-profile PCI +		102b 2c21  QID LP PCI LW +		102b 2c31  QID LP PCI +		102b 2c41  EpicA TC4 +		102b 3001  Extio F1400 +		102b 3011  Extio F1220 +		102b 3041  RG-200DL +		102b 3051  RG-400SL +		102b 3061  Extio F1420 +		102b 3081  Extio F1240 +	2538  Millenium P650 PCIe +		102b 0847  RAD PCIe +		102b 08c7  Millennium P650 PCIe 128MB +		102b 0907  Millennium P650 PCIe 64MB +		102b 0947  Parhelia APVe +		102b 0987  ATC PCIe 4MP +		102b 1047  Millennium P650 LP PCIe 128MB +		102b 1087  Millennium P650 LP PCIe 64MB +		102b 1801  Millenium P650 PCIe x1 +		102b 2538  Parhelia APVe +		102b 3007  QID Low-profile PCIe +		102b 3087  Aurora VX3mp +		102b 30c7  QID LP PCIe +	2539  Millennium P690 +		102b 0040  Millenium P690 PCIe x16 +		102b 0042  ONYX +		102b 0043  SPECTRA +		102b 0080  Millenium P690 Plus LP PCIe x16 +		102b 0081  Millenium P690 LP PCIe x16 +		102b 0082  RAD LPX PCIe x16 +		102b 00c0  Millenium P690 Plus LP PCI +		102b 00c2  Millenium P690 LP PCI +		102b 00c3  RAD LPX PCI +		102b 0101  Millenium P690 PCI +		102b 0140  Millenium P690 LP PCIe x1 +		102b 0180  Display Wall IP Decode 128 MB +	4164  Morphis QxT frame grabber +	43b4  Morphis Qxt encoding engine +	4510  Morphis COM port +	4536  VIA Framegrabber +	4686  Concord GX (customized Intel 82541) +	475b  Solios eCL/XCL-B frame grabber +	475d  Vio frame grabber family +		102b 4b90  Vio Duo frame grabber (single channel) +		102b 4b91  Vio Duo frame grabber +		102b 4b92  Vio Analog frame grabber +		102b 4b93  Vio SDI Frame Grabber +		102b 4b94  Vio DVI-A frame grabber +	475f  Solios (single-Full) CL frame grabber +		102b 475f  Solios eCL/XCL-F frame grabber +		102b 4d5f  Solios eV-CL (single-Full) frame grabber +		102b 4e5f  Solios eM-CL (single-Full) frame grabber +	47a1  Solios eA/XA frame grabber +		102b 4be0  Solios eA/XA (single) frame grabber +		102b 4be1  Solios eA/XA (dual) frame grabber +		102b 4be2  Solios eA/XA (quad) frame grabber +	47a2  Solios COM port +	47c1  Solios (dual-Base/single-Medium) CL frame grabber +		102b 0000  Solios frame grabber +		102b 4b80  Solios eCL/XCL (single-Medium) frame grabber +		102b 4b81  Solios eCL/XCL (dual-Base) frame grabber +		102b 4d80  Solios eV-CL (single-Medium) frame grabber +		102b 4d81  Solios eV-CL (dual-Base) frame grabber +		102b 4e80  Solios eM-CL (single-Medium) frame grabber +		102b 4e81  Solios eM-CL (dual-Base) frame grabber +	47c2  Solios COM port +	4949  Radient frame grabber family +		102b 0010  Radient eCL (Single-full) frame grabber +		102b 0011  Radient eCLV (Single-full) frame grabber +		102b 0020  Radient eCL (Dual-base) frame grabber +		102b 0030  Radient eCL (Dual-full) frame grabber +		102b 0040  Radient eCL (Quad-base) frame grabber +		102b 0050  Radient eCL (Golden) frame grabber +		102b 1010  Radient eV-CXP (quad CXP-6) frame grabber +		102b 1015  Radient eV-CXP (dual CXP-6) frame grabber +		102b 1020  Radient eV-CXP (quad CXP-3) frame grabber +		102b 1050  Radient eV-CXP (Golden) frame grabber +	4cdc  Morphis JPEG2000 accelerator +	4f54  Morphis (e)Quad frame grabber +	4fc5  Morphis (e)Dual frame grabber +	5e10  Morphis aux I/O +	6573  Shark 10/100 Multiport SwitchNIC +102c  Chips and Technologies +	00b8  F64310 +	00c0  F69000 HiQVideo +		102c 00c0  F69000 HiQVideo +		4c53 1000  CC7/CR7/CP7/VC7/VP7/VR7 mainboard +		4c53 1010  CP5/CR6 mainboard +		4c53 1020  VR6 mainboard +		4c53 1030  PC5 mainboard +		4c53 1050  CT7 mainboard +		4c53 1051  CE7 mainboard +	00d0  F65545 +	00d8  F65545 +	00dc  F65548 +	00e0  F65550 +	00e4  F65554 +	00e5  F65555 HiQVPro +		0e11 b049  Armada 1700 Laptop Display Controller +		1179 0001  Satellite Pro/Satellite +	00f0  F68554 +	00f4  F68554 HiQVision +	00f5  F68555 +	0c30  F69030 +		4c53 1000  CC7/CR7/CP7/VC7/VP7/VR7 mainboard +		4c53 1050  CT7 mainboard +		4c53 1051  CE7 mainboard +		4c53 1080  CT8 mainboard +102d  Wyse Technology Inc. +	50dc  3328 Audio +102e  Olivetti Advanced Technology +102f  Toshiba America +	0009  r4x00 +	000a  TX3927 MIPS RISC PCI Controller +	0020  ATM Meteor 155 +		102f 00f8  ATM Meteor 155 +	0030  TC35815CF PCI 10/100 Mbit Ethernet Controller +	0031  TC35815CF PCI 10/100 Mbit Ethernet Controller with WOL +	0032  TC35815CF PCI 10/100 Mbit Ethernet Controller on TX4939 +	0105  TC86C001 [goku-s] IDE +	0106  TC86C001 [goku-s] USB 1.1 Host +	0107  TC86C001 [goku-s] USB Device Controller +	0108  TC86C001 [goku-s] I2C/SIO/GPIO Controller +	0180  TX4927/38 MIPS RISC PCI Controller +	0181  TX4925 MIPS RISC PCI Controller +	0182  TX4937 MIPS RISC PCI Controller +	01b4  Celleb platform IDE interface +	01b5  SCC USB 2.0 EHCI controller +	01b6  SCC USB 1.1 OHCI controller +1030  TMC Research +1031  Miro Computer Products AG +	5601  DC20 ASIC +	5607  Video I/O & motion JPEG compressor +	5631  Media 3D +	6057  MiroVideo DC10/DC30+ +1032  Compaq +1033  NEC Corporation +	0000  Vr4181A USB Host or Function Control Unit +	0001  PCI to 486-like bus Bridge +	0002  PCI to VL98 Bridge +	0003  ATM Controller +	0004  R4000 PCI Bridge +	0005  PCI to 486-like bus Bridge +	0006  PC-9800 Graphic Accelerator +	0007  PCI to UX-Bus Bridge +	0008  PC-9800 Graphic Accelerator +	0009  PCI to PC9800 Core-Graph Bridge +	0016  PCI to VL Bridge +	001a  [Nile II] +	0021  Vrc4373 [Nile I] +	0029  PowerVR PCX1 +	002a  PowerVR 3D +	002c  Star Alpha 2 +	002d  PCI to C-bus Bridge +	0035  OHCI USB Controller +		1033 0035  USB Controller +		103c 1293  USB add-in card +		103c 1294  USB 2.0 add-in card +		1179 0001  USB +		12ee 7000  Root Hub +		14c2 0105  PTI-205N USB 2.0 Host Controller +		1799 0001  Root Hub +		1931 000a  GlobeTrotter Fusion Quad Lite (PPP data) +		1931 000b  GlobeTrotter Fusion Quad Lite (GSM data) +		807d 0035  PCI-USB2 (OHCI subsystem) +	003b  PCI to C-bus Bridge +	003e  NAPCCARD Cardbus Controller +	0046  PowerVR PCX2 [midas] +	005a  Vrc5074 [Nile 4] +	0063  uPD72862 [Firewarden] IEEE1394 OHCI 1.0 Link Controller +	0067  PowerVR Neon 250 Chipset +		1010 0020  PowerVR Neon 250 AGP 32Mb +		1010 0080  PowerVR Neon 250 AGP 16Mb +		1010 0088  PowerVR Neon 250 16Mb +		1010 0090  PowerVR Neon 250 AGP 16Mb +		1010 0098  PowerVR Neon 250 16Mb +		1010 00a0  PowerVR Neon 250 AGP 32Mb +		1010 00a8  PowerVR Neon 250 32Mb +		1010 0120  PowerVR Neon 250 AGP 32Mb +	0072  uPD72874 IEEE1394 OHCI 1.1 3-port PHY-Link Ctrlr +	0074  56k Voice Modem +		1033 8014  RCV56ACF 56k Voice Modem +	009b  Vrc5476 +	00a5  VRC4173 +	00a6  VRC5477 AC97 +	00cd  uPD72870 [Firewarden] IEEE1394a OHCI 1.0 Link/3-port PHY Controller +		12ee 8011  Root hub +	00ce  uPD72871 [Firewarden] IEEE1394a OHCI 1.0 Link/1-port PHY Controller +	00df  Vr4131 +	00e0  uPD72010x USB 2.0 Controller +		12ee 7001  Root hub +		14c2 0205  PTI-205N USB 2.0 Host Controller +		1799 0002  Root Hub +		807d 1043  PCI-USB2 (EHCI subsystem) +	00e7  uPD72873 [Firewarden] IEEE1394a OHCI 1.1 Link/2-port PHY Controller +	00f2  uPD72874 [Firewarden] IEEE1394a OHCI 1.1 Link/3-port PHY Controller +	00f3  uPD6113x Multimedia Decoder/Processor [EMMA2] +	010c  VR7701 +	0125  uPD720400 PCI Express - PCI/PCI-X Bridge +	013a  Dual Tuner/MPEG Encoder +	0194  uPD720200 USB 3.0 Host Controller +		1028 04a3  Precision M4600 +		1028 04b2  Vostro 3350 +		1028 04da  Vostro 3750 +		1043 8413  P8P67 Deluxe Motherboard +		1af4 1100  QEMU Virtual Machine +		1b96 0001  USB 3.0 PCIe Card +	01e7  uPD72873 [Firewarden] IEEE1394a OHCI 1.1 Link/2-port PHY Controller +	01f2  uPD72874 [Firewarden] IEEE1394a OHCI 1.1 Link/3-port PHY Controller +1034  Framatome Connectors USA Inc. +1035  Comp. & Comm. Research Lab +1036  Future Domain Corp. +	0000  TMC-18C30 [36C70] +1037  Hitachi Micro Systems +1038  AMP, Inc +1039  Silicon Integrated Systems [SiS] +	0001  AGP Port (virtual PCI-to-PCI bridge) +	0002  AGP Port (virtual PCI-to-PCI bridge) +	0003  AGP Port (virtual PCI-to-PCI bridge) +	0004  PCI-to-PCI bridge +	0006  85C501/2/3 +	0008  SiS85C503/5513 (LPC Bridge) +	0009  5595 Power Management Controller +	000a  PCI-to-PCI bridge +	0016  SiS961/2/3 SMBus controller +	0018  SiS85C503/5513 (LPC Bridge) +	0163  163 802.11b/g Wireless LAN Adapter +	0180  RAID bus controller 180 SATA/PATA  [SiS] +	0181  SATA +	0182  182 SATA/RAID Controller +		1734 1095  D2030-A1 +	0186  AHCI Controller (0106) +	0190  190 Ethernet Adapter +	0191  191 Gigabit Ethernet Adapter +	0200  5597/5598/6326 VGA +		1039 0000  SiS5597 SVGA (Shared RAM) +	0204  82C204 +	0205  SG86C205 +	0300  300/305 PCI/AGP VGA Display Adapter +		107d 2720  Leadtek WinFast VR300 +	0310  315H PCI/AGP VGA Display Adapter +	0315  315 PCI/AGP VGA Display Adapter +	0325  315PRO PCI/AGP VGA Display Adapter +	0330  330 [Xabre] PCI/AGP VGA Display Adapter +	0406  85C501/2 +	0496  85C496 +	0530  530 Host +	0540  540 Host +	0550  550 Host +	0597  5513C +	0601  85C601 +	0620  620 Host +	0630  630 Host +	0633  633 Host +	0635  635 Host +	0645  SiS645 Host & Memory & AGP Controller +	0646  SiS645DX Host & Memory & AGP Controller +	0648  645xx +	0649  SiS649 Host +	0650  650/M650 Host +	0651  651 Host +	0655  655 Host +	0660  660 Host +	0661  661FX/M661FX/M661MX Host +	0662  662 Host +	0671  671MX +	0730  730 Host +	0733  733 Host +	0735  735 Host +	0740  740 Host +	0741  741/741GX/M741 Host +		1849 0741  K7S41/K7S41GX motherboard +	0745  745 Host +	0746  746 Host +	0755  755 Host +	0760  760/M760 Host +	0761  761/M761 Host +		1734 1099  D2030-A1 Motherboard +	0900  SiS900 PCI Fast Ethernet +		1019 0a14  K7S5A motherboard +		1039 0900  SiS900 10/100 Ethernet Adapter onboard [Asus P4SC-EA] +		1043 8035  CUSI-FX motherboard +		1043 80a7  Motherboard P4S800D-X +		1462 0900  MS-6701 motherboard +	0961  SiS961 [MuTIOL Media IO] +	0962  SiS962 [MuTIOL Media IO] LPC Controller +	0963  SiS963 [MuTIOL Media IO] LPC Controller +	0964  SiS964 [MuTIOL Media IO] LPC Controller +	0965  SiS965 [MuTIOL Media IO] +	0966  SiS966 [MuTIOL Media IO] +	0968  SiS968 [MuTIOL Media IO] +	1180  SATA Controller / IDE mode +	1182  SATA Controller / RAID mode +	1183  SATA Controller / IDE mode +	1184  AHCI Controller / RAID mode +	1185  AHCI IDE Controller (0106) +	3602  83C602 +	5107  5107 +	5300  SiS540 PCI Display Adapter +	5315  550 PCI/AGP VGA Display Adapter +	5401  486 PCI Chipset +	5511  5511/5512 +	5513  5513 IDE Controller +		1019 0970  P6STP-FL motherboard +		1039 5513  SiS5513 EIDE Controller (A,B step) +		1043 8035  CUSI-FX motherboard +		1462 7010  MS-6701 motherboard +		1631 5513  GA-8SIML Rev1.0 Motherboard +		1734 1095  D2030-A1 Motherboard +	5517  5517 +	5571  5571 +	5581  5581 Pentium Chipset +	5582  5582 +	5591  5591/5592 Host +	5596  5596 Pentium Chipset +	5597  5597 [SiS5582] +	5600  5600 Host +	6204  Video decoder & MPEG interface +	6205  VGA Controller +	6236  6236 3D-AGP +	6300  630/730 PCI/AGP VGA Display Adapter +		1019 0970  P6STP-FL motherboard +		1043 8035  CUSI-FX motherboard +		104d 80e2  VAIO PCV-J200 +	6306  530/620 PCI/AGP VGA Display Adapter +	6325  65x/M650/740 PCI/AGP VGA Display Adapter +		1039 6325  SiS 651 onboard [Asus P4SC-EA] +		1631 1004  SiS 651C onboard [Gigabyte GA-8SIML Rev1.0] +	6326  86C326 5598/6326 +		1039 6326  SiS6326 GUI Accelerator +		1092 0a50  SpeedStar A50 +		1092 0a70  SpeedStar A70 +		1092 4910  SpeedStar A70 +		1092 4920  SpeedStar A70 +		10b0 6326  S6110-B (AGP) +		1569 6326  SiS6326 GUI Accelerator +	6330  661/741/760 PCI/AGP or 662/761Gx PCIE VGA Display Adapter +		1039 6330  [M]661xX/[M]741[GX]/[M]760 PCI/AGP VGA Adapter +		1043 8113  SiS Real 256E (ASUS P5S800-VM motherboard) +		1458 d000  SiS661FX GUI 2D/3D Accelerator +		1734 1099  D2030-A1 +	6350  770/670 PCIE VGA Display Adapter +	6351  771/671 PCIE VGA Display Adapter +	7001  USB 1.1 Controller +		1019 0a14  K7S5A motherboard +		1039 7000  Onboard USB Controller +		1462 5470  ECS K7SOM+ motherboard +		1462 7010  MS-6701 motherboard +		1734 1095  D2030-A1 Motherboard +	7002  USB 2.0 Controller +		1462 5470  K7SOM+ 5.2C Motherboard +		1462 7010  MS-6701 motherboard +		1509 7002  Onboard USB Controller +		1734 1095  D2030-A1 +	7007  FireWire Controller +		1462 701d  MS-6701 +	7012  SiS7012 AC'97 Sound Controller +		1019 0f05  A928 (i-Buddie) +		1039 7012  SiS 7012 onboard [Asus P4SC-EA] AC'97 Sound Controller +		1043 818f  A8S-X Motherboard +		13f6 0300  CMI9739(A) on ECS K7SOM+ motherboard +		1462 5850  MSI 648 Max (MS-6585) +		1462 7010  MS-6701 motherboard +		15bd 1001  DFI 661FX motherboard +		1734 109f  D2030-A1 Motherboard +		1849 7012  K7S41GX motherboard +# There are may be different modem codecs here (Intel537 compatible and incompatible) +	7013  AC'97 Modem Controller +	7016  SiS7016 PCI Fast Ethernet Adapter +		1039 7016  SiS7016 10/100 Ethernet Adapter +	7018  SiS PCI Audio Accelerator +		1014 01b6  SiS PCI Audio Accelerator +		1014 01b7  SiS PCI Audio Accelerator +		1019 7018  SiS PCI Audio Accelerator +		1025 000e  SiS PCI Audio Accelerator +		1025 0018  SiS PCI Audio Accelerator +		1039 7018  SiS PCI Audio Accelerator +		1043 1453  SiS PCI Audio Accelerator +		1043 800b  SiS PCI Audio Accelerator +		104d 80e2  VAIO PCV-J200 +		1054 7018  SiS PCI Audio Accelerator +		107d 5330  SiS PCI Audio Accelerator +		107d 5350  SiS PCI Audio Accelerator +		1170 3209  SiS PCI Audio Accelerator +		1462 400a  SiS PCI Audio Accelerator +		14a4 2089  SiS PCI Audio Accelerator +		14cd 2194  SiS PCI Audio Accelerator +		14ff 1100  SiS PCI Audio Accelerator +		152d 8808  SiS PCI Audio Accelerator +		1558 1103  SiS PCI Audio Accelerator +		1558 2200  SiS PCI Audio Accelerator +		1563 7018  SiS PCI Audio Accelerator +		15c5 0111  SiS PCI Audio Accelerator +		270f a171  SiS PCI Audio Accelerator +		a0a0 0022  SiS PCI Audio Accelerator +	7019  SiS7019 Audio Accelerator +	7502  Azalia Audio Controller +103a  Seiko Epson Corporation +103b  Tatung Corp. Of America +103c  Hewlett-Packard Company +	1005  A4977A Visualize EG +	1008  Visualize FX +	1028  Tach TL Fibre Channel Host Adapter +	1029  Tach XL2 Fibre Channel Host Adapter +		107e 000f  Interphase 5560 Fibre Channel Adapter +		9004 9210  1Gb/2Gb Family Fibre Channel Controller +		9004 9211  1Gb/2Gb Family Fibre Channel Controller +	102a  Tach TS Fibre Channel Host Adapter +		107e 000e  Interphase 5540/5541 Fibre Channel Adapter +		9004 9110  1Gb/2Gb Family Fibre Channel Controller +		9004 9111  1Gb/2Gb Family Fibre Channel Controller +	1030  J2585A DeskDirect 10/100VG NIC +	1031  J2585B HP 10/100VG PCI LAN Adapter +		103c 1040  J2973A DeskDirect 10BaseT NIC +		103c 1041  J2585B DeskDirect 10/100VG NIC +		103c 1042  J2970A DeskDirect 10BaseT/2 NIC +	1040  J2973A DeskDirect 10BaseT NIC +	1041  J2585B DeskDirect 10/100 NIC +	1042  J2970A DeskDirect 10BaseT/2 NIC +	1048  Diva Serial [GSP] Multiport UART +		103c 1049  Tosca Console +		103c 104a  Tosca Secondary +		103c 104b  Maestro SP2 +		103c 1223  Superdome Console +		103c 1226  Keystone SP2 +		103c 1227  Powerbar SP2 +		103c 1282  Everest SP2 +		103c 1301  Diva RMP3 +	1054  PCI Local Bus Adapter +	1064  79C970 PCnet Ethernet Controller +	108b  Visualize FXe +	10c1  NetServer Smart IRQ Router +	10ed  TopTools Remote Control +	10f0  rio System Bus Adapter +	10f1  rio I/O Controller +	1219  NetServer PCI Hot-Plug Controller +	121a  NetServer SMIC Controller +	121b  NetServer Legacy COM Port Decoder +	121c  NetServer PCI COM Port Decoder +	1229  zx1 System Bus Adapter +	122a  zx1 I/O Controller +	122e  PCI-X Local Bus Adapter +	127b  sx1000 System Bus Adapter +	127c  sx1000 I/O Controller +	1290  Auxiliary Diva Serial Port +		103c 1291  Diva SP2 +	1291  Auxiliary Diva Serial Port +	12b4  zx1 QuickSilver AGP8x Local Bus Adapter +	12eb  sx2000 System Bus Adapter +	12ec  sx2000 I/O Controller +	12ee  PCI-X 2.0 Local Bus Adapter +	1302  RMP-3 Shared Memory Driver +	1303  RMP-3 (Remote Management Processor) +	2910  E2910A PCIBus Exerciser +	2925  E2925A 32 Bit, 33 MHzPCI Exerciser & Analyzer +	3206  Adaptec Embedded Serial ATA HostRAID +	3220  Smart Array P600 +		103c 3225  3 Gb/s SAS RAID +	3230  Smart Array Controller +		103c 3223  Smart Array P800 +		103c 3234  P400 SAS Controller +		103c 3235  P400i SAS Controller +		103c 3237  E500 SAS Controller +		103c 323d  P700m SAS Controller +	3238  Smart Array E200i (SAS Controller) +		103c 3211  Smart Array E200i +		103c 3212  Smart Array E200 +	3239  Smart Array Gen9 Controllers +		103c 21bd  P244br +		103c 21be  Smart Array +		103c 21bf  H240ar +		103c 21c0  P440ar +		103c 21c1  Smart Array +		103c 21c2  P440 +		103c 21c3  P441 +		103c 21c4  Smart Array +		103c 21c5  Smart Array +		103c 21c6  H244br +		103c 21c7  H240 +		103c 21c8  H241 +		103c 21c9  Smart Array +		103c 21ca  Smart Array +		103c 21cb  P840 +		103c 21cc  Smart Array +		103c 21cd  Smart Array +		103c 21ce  Smart Array +	323a  Smart Array G6 controllers +		103c 3241  Smart Array P212 +		103c 3243  Smart Array P410 +		103c 3245  Smart Array P410i +		103c 3247  Smart Array P411 +		103c 3249  Smart Array P812 +		103c 324a  HP Smart Array 712m (Mezzanine RAID controller) +		103c 324b  Smart Array P711m (Mezzanine RAID controller) +	323b  Smart Array Gen8 Controllers +		103c 3350  P222 +		103c 3351  P420 +		103c 3352  P421 +		103c 3354  P420i +		103c 3355  P220i +	323c  Smart Array Gen8+ Controllers +		103c 1920  P430i +		103c 1921  P830i +		103c 1922  P430 +		103c 1923  P431 +		103c 1924  P830 +		103c 1925  Smart Array +		103c 1926  P731m +		103c 1928  P230i +	3300  Integrated Lights-Out Standard Virtual USB Controller +		103c 3304  iLO2 +		103c 3305  iLO2 +		103c 3309  iLO2 GXL/iLO3 GXE +		103c 330e  iLO3 +		103c 3381  iLO4 +	3301  Integrated Lights-Out Standard Serial Port +		103c 3304  iLO2 +		103c 3305  iLO2 +		103c 330e  iLO3 +		103c 3381  iLO4 +# Virtual serial port which is presented on a Java applet +	3302  Integrated Lights-Out Standard KCS Interface +		103c 3304  iLO2 +		103c 3305  iLO2 +		103c 330e  iLO3 +		103c 3381  iLO4 +	3305  Integrated Lights-Out (iLO2) Controller +	3306  Integrated Lights-Out Standard Slave Instrumentation & System Support +		103c 330e  iLO3 +		103c 3381  iLO4 +	3307  Integrated Lights-Out Standard Management Processor Support and Messaging +# HP DL380 G6 +		103c 3309  iLO 2 +		103c 330e  iLO3 +		103c 3381  iLO4 +	3308  Integrated Lights-Out Standard MS Watchdog Timer +		103c 330e  iLO3 +		103c 3381  iLO4 +	402f  PCIe Root Port +	4030  zx2 System Bus Adapter +	4031  zx2 I/O Controller +	4037  PCIe Local Bus Adapter +	403b  PCIe Root Port +103e  Solliday Engineering +103f  Synopsys/Logic Modeling Group +1040  Accelgraphics Inc. +1041  Computrend +1042  Micron +	1000  PC Tech RZ1000 +	1001  PC Tech RZ1001 +	3000  Samurai_0 +	3010  Samurai_1 +	3020  Samurai_IDE +1043  ASUSTeK Computer Inc. +	0464  Radeon R9 270x GPU +	0675  ISDNLink P-IN100-ST-D +		0675 1704  ISDN Adapter (PCI Bus, D, C) +		0675 1707  ISDN Adapter (PCI Bus, DV, W) +		10cf 105e  ISDN Adapter (PCI Bus, DV, W) +# Should be 1022:9602 +	9602  AMD RS780/RS880 PCI to PCI bridge (int gfx) +		1043 83a2  M4A785TD Motherboard +1044  Adaptec (formerly DPT) +	1012  Domino RAID Engine +	a400  SmartCache/Raid I-IV Controller +	a500  PCI Bridge +	a501  SmartRAID V Controller +		1044 c001  PM1554U2 Ultra2 Single Channel +		1044 c002  PM1654U2 Ultra2 Single Channel +		1044 c003  PM1564U3 Ultra3 Single Channel +		1044 c004  PM1564U3 Ultra3 Dual Channel +		1044 c005  PM1554U2 Ultra2 Single Channel (NON ACPI) +		1044 c00a  PM2554U2 Ultra2 Single Channel +		1044 c00b  PM2654U2 Ultra2 Single Channel +		1044 c00c  PM2664U3 Ultra3 Single Channel +		1044 c00d  PM2664U3 Ultra3 Dual Channel +		1044 c00e  PM2554U2 Ultra2 Single Channel (NON ACPI) +		1044 c00f  PM2654U2 Ultra2 Single Channel (NON ACPI) +		1044 c014  PM3754U2 Ultra2 Single Channel (NON ACPI) +		1044 c015  PM3755U2B Ultra2 Single Channel (NON ACPI) +		1044 c016  PM3755F Fibre Channel (NON ACPI) +		1044 c01e  PM3757U2 Ultra2 Single Channel +		1044 c01f  PM3757U2 Ultra2 Dual Channel +		1044 c020  PM3767U3 Ultra3 Dual Channel +		1044 c021  PM3767U3 Ultra3 Quad Channel +		1044 c028  PM2865U3 Ultra3 Single Channel +		1044 c029  PM2865U3 Ultra3 Dual Channel +		1044 c02a  PM2865F Fibre Channel +		1044 c03c  2000S Ultra3 Single Channel +		1044 c03d  2000S Ultra3 Dual Channel +		1044 c03e  2000F Fibre Channel +		1044 c046  3000S Ultra3 Single Channel +		1044 c047  3000S Ultra3 Dual Channel +		1044 c048  3000F Fibre Channel +		1044 c050  5000S Ultra3 Single Channel +		1044 c051  5000S Ultra3 Dual Channel +		1044 c052  5000F Fibre Channel +		1044 c05a  2400A UDMA Four Channel +		1044 c05b  2400A UDMA Four Channel DAC +		1044 c064  3010S Ultra3 Dual Channel +		1044 c065  3410S Ultra160 Four Channel +		1044 c066  3010S Fibre Channel +	a511  SmartRAID V Controller +		1044 c032  ASR-2005S I2O Zero Channel +		1044 c035  ASR-2010S I2O Zero Channel +	c066  3010S Ultra3 Dual Channel +1045  OPTi Inc. +	a0f8  82C750 [Vendetta] USB Controller +	c101  92C264 +	c178  92C178 +	c556  82X556 [Viper] +	c557  82C557 [Viper-M] +	c558  82C558 [Viper-M ISA+IDE] +	c567  82C750 [Vendetta], device 0 +	c568  82C750 [Vendetta], device 1 +	c569  82C579 [Viper XPress+ Chipset] +	c621  82C621 [Viper-M/N+] +	c700  82C700 [FireStar] +	c701  82C701 [FireStar Plus] +	c814  82C814 [Firebridge 1] +	c822  82C822 +	c824  82C824 +	c825  82C825 [Firebridge 2] +	c832  82C832 +	c861  82C861 +	c881  82C881 [FireLink] 1394 OHCI Link Controller +	c895  82C895 +	c935  EV1935 ECTIVA MachOne PCIAudio +	d568  82C825 [Firebridge 2] +	d721  IDE [FireStar] +1046  IPC Corporation, Ltd. +1047  Genoa Systems Corp +1048  Elsa AG +	0c60  Gladiac MX +	0d22  Quadro4 900XGL [ELSA GLoria4 900XGL] +	1000  QuickStep 1000 +	3000  QuickStep 3000 +	8901  Gloria XL +		1048 0935  GLoria XL (Virge) +1049  Fountain Technologies, Inc. +# nee SGS Thomson Microelectronics +104a  STMicroelectronics +	0000  STLS2F Host Bridge +	0008  STG 2000X +	0009  STG 1764X +	0010  STG4000 [3D Prophet Kyro Series] +		104a 4018  ST PowerVR Kyro (64MB AGP TVO) +# 64MB AGP +		1681 0010  PowerVR Kyro II [3D Prophet 4500] +		1681 0028  3D Prophet 4000XT +		1681 c010  3D Prophet 4500 TV-Out +		1681 c069  3D Prophet 4000XT +	0201  STPC Vega Northbridge +	0209  STPC Consumer/Industrial North- and Southbridge +	020a  STPC Atlas/ConsumerS/Consumer IIA Northbridge +	020b  STPC Consumer II ISA Bridge +	0210  STPC Atlas ISA Bridge +	021a  STPC Consumer S Southbridge +	021b  STPC Consumer IIA Southbridge +	0220  STPC Industrial PCI to PCCard bridge +	0228  STPC Atlas IDE +	0229  STPC Vega IDE +	0230  STPC Atlas/Vega OHCI USB Controller +	0238  STPC Vega LAN +	0500  ST70137 [Unicorn] ADSL DMT Transceiver +		104a 0500  BeWAN ADSL PCI st +	0564  STPC Client Northbridge +	0981  21x4x DEC-Tulip compatible 10/100 Ethernet +	1746  STG 1764X +	2774  21x4x DEC-Tulip compatible 10/100 Ethernet +	3520  MPEG-II decoder card +	55cc  STPC Client Southbridge +104b  BusLogic +	0140  BT-946C (old) [multimaster  01] +	1040  BT-946C (BA80C30) [MultiMaster 10] +	8130  Flashpoint LT +104c  Texas Instruments +	0500  100 MBit LAN Controller +	0508  TMS380C2X Compressor Interface +	1000  Eagle i/f AS +	104c  PCI1510 PC card Cardbus Controller +	3d04  TVP4010 [Permedia] +	3d07  TVP4020 [Permedia 2] +		1011 4d10  Comet +		1040 000f  AccelStar II +		1040 0011  AccelStar II +		1048 0a31  WINNER 2000 +		1048 0a32  GLoria Synergy +		1048 0a34  GLoria Synergy +		1048 0a35  GLoria Synergy +		1048 0a36  GLoria Synergy +		1048 0a43  GLoria Synergy +		1048 0a44  GLoria Synergy +		107d 2633  WinFast 3D L2300 +		1092 0126  FIRE GL 1000 PRO +		1092 0127  FIRE GL 1000 PRO +		1092 0136  FIRE GL 1000 PRO +		1092 0141  FIRE GL 1000 PRO +		1092 0146  FIRE GL 1000 PRO +		1092 0148  FIRE GL 1000 PRO +		1092 0149  FIRE GL 1000 PRO +		1092 0152  FIRE GL 1000 PRO +		1092 0154  FIRE GL 1000 PRO +		1092 0155  FIRE GL 1000 PRO +		1092 0156  FIRE GL 1000 PRO +		1092 0157  FIRE GL 1000 PRO +		1097 3d01  Jeronimo Pro +		1102 100f  Graphics Blaster Extreme +		3d3d 0100  Reference Permedia 2 3D +	8000  PCILynx/PCILynx2 IEEE 1394 Link Layer Controller +		105e 8003  FireBoard200 +		1443 8003  FireBoard200 +		1443 8005  FireBoard400 +		1443 8006  FireBoard400 +		e4bf 1010  CF1-1-SNARE +		e4bf 1020  CF1-2-SNARE +		e4bf 1040  FireCompact400 +	8009  TSB12LV22 IEEE-1394 Controller +		104d 8032  8032 OHCI i.LINK (IEEE 1394) Controller +		1443 8010  FireBoard400-OHCI +	8017  PCI4410 FireWire Controller +	8019  TSB12LV23 IEEE-1394 Controller +		11bd 000a  Studio DV500-1394 +		11bd 000e  Studio DV +		1443 8010  FireBoard400-OHCI +		e4bf 1010  CF2-1-CYMBAL +	8020  TSB12LV26 IEEE-1394 Controller (Link) +		1028 00d8  Precision 530 +		104d 80e2  VAIO PCV-J200 +		11bd 000f  Studio DV500-1394 +		11bd 001c  Excalibur 4.1 +		1443 8010  FireBoard400-OHCI +	8021  TSB43AA22 IEEE-1394 Controller (PHY/Link Integrated) +		104d 80df  Vaio PCG-FX403 +		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP +	8022  TSB43AB22 IEEE-1394a-2000 Controller (PHY/Link) [iOHCI-Lynx] +		104c 8023  TSB43AB22/A IEEE-1394a-2000 Controller (PHY/Link) +	8023  TSB43AB22A IEEE-1394a-2000 Controller (PHY/Link) [iOHCI-Lynx] +		1028 0168  Precision Workstation 670 Mainboard +		103c 088c  NC8000 laptop +		1043 808b  K8N4/A8N Series Mainboard +		1043 815b  P5W DH Deluxe Motherboard +		1443 8023  FireCard400 +		8086 5044  Desktop Board DP35DP +	8024  TSB43AB23 IEEE-1394a-2000 Controller (PHY/Link) +		107d 6620  Winfast DV2000 FireWire Controller +		1443 8024  FireBoard Blue +		1458 1000  Motherboard +	8025  TSB82AA2 IEEE-1394b Link Layer Controller +		1043 813c  P5P series mainboard +		1443 8025  FireBoard800 +		1458 1000  GA-K8N Ultra-9 Mainboard +		1546 8025  FWB-PCI01 +		17fc 8025  GIC3800 +	8026  TSB43AB21 IEEE-1394a-2000 Controller (PHY/Link) +		1025 0035  TravelMate 660 +		1025 003c  Aspire 2001WLCi (Compaq CL50 motherboard) +		103c 0025  XE4500 Notebook +		103c 006a  NX9500 +		1043 808d  A7V333 mainboard. +	8027  PCI4451 IEEE-1394 Controller +		1028 00e5  Latitude C810 +		1028 00e6  PCI4451 IEEE-1394 Controller (Dell Inspiron 8100) +	8029  PCI4510 IEEE-1394 Controller +		1028 0163  Latitude D505 +		1028 0196  Inspiron 5160 +		1071 8160  MIM2900 +	802b  PCI7410,7510,7610 OHCI-Lynx Controller +		1028 0139  Latitude D400 +		1028 014e  PCI7410,7510,7610 OHCI-Lynx Controller (Latitude D800) +	802e  PCI7x20 1394a-2000 OHCI Two-Port PHY/Link-Layer Controller +		1028 018d  Inspiron 700m/710m +	8031  PCIxx21/x515 Cardbus Controller +		1025 0080  Aspire 5024WLMi +		103c 0934  Compaq nw8240/nx8220 +		103c 099c  NX6110/NC6120 +		103c 308b  MX6125 +	8032  OHCI Compliant IEEE 1394 Host Controller +		1025 0080  Aspire 5024WLMi +		103c 0934  Compaq nw8240/nx8220 +		103c 099c  NX6110/NC6120 +		103c 308b  MX6125 +	8033  PCIxx21 Integrated FlashMedia Controller +		1025 0080  Aspire 5024WLMi +		103c 0934  Compaq nw8240/nx8220 +		103c 099c  NX6110/NC6120 +		103c 308b  MX6125 +	8034  PCI6411/6421/6611/6621/7411/7421/7611/7621 Secure Digital Controller +		1025 0080  Aspire 5024WLMi +		103c 0934  Compaq nw8240/nx8220 +		103c 099c  NX6110/NC6120 +		103c 308b  MX6125 +	8035  PCI6411/6421/6611/6621/7411/7421/7611/7621 Smart Card Controller +		103c 0934  Compaq nw8240/nx8220 +		103c 099c  NX6110/NC6120 +	8036  PCI6515 Cardbus Controller +	8038  PCI6515 SmartCard Controller +	8039  PCIxx12 Cardbus Controller +		103c 309f  Compaq nx9420 Notebook +		103c 30a1  NC2400 +		103c 30a3  Compaq nw8440 +		104d 902d  VAIO VGN-NR120E +	803a  PCIxx12 OHCI Compliant IEEE 1394 Host Controller +		103c 309f  nx9420 +		103c 30a1  NC2400 +		103c 30a3  Compaq nw8440 +		104d 902d  VAIO VGN-NR120E +	803b  5-in-1 Multimedia Card Reader (SD/MMC/MS/MS PRO/xD) +		103c 309f  nx9420 +		103c 30a3  Compaq nw8440 +		104d 902d  VAIO VGN-NR120E +	803c  PCIxx12 SDA Standard Compliant SD Host Controller +		103c 309f  nx9420 +		103c 30a3  Compaq nw8440 +	803d  PCIxx12 GemCore based SmartCard controller +		103c 309f  Compaq nx9420 Notebook +		103c 30a1  NC2400 +		103c 30a3  nc8430 +		103c 30aa  nc6310 +	8101  TSB43DB42 IEEE-1394a-2000 Controller (PHY/Link) +	8201  PCI1620 Firmware Loading Function +	8204  PCI7410/7510/7610 PCI Firmware Loading Function +		1028 0139  Latitude D400 +		1028 014e  Latitude D800 +	8231  XIO2000(A)/XIO2200A PCI Express-to-PCI Bridge +		5678 1234  DC-1394 PCIe +	8232  XIO3130 PCI Express Switch (Upstream) +	8233  XIO3130 PCI Express Switch (Downstream) +	8235  XIO2200A IEEE-1394a-2000 Controller (PHY/Link) +		5678 1234  DC-1394 PCIe +	823e  XIO2213A/B/XIO2221 PCI Express to PCI Bridge [Cheetah Express] +	823f  XIO2213A/B/XIO2221 IEEE-1394b OHCI Controller [Cheetah Express] +		1546 803c  FWB-PCIE1X11B +	8240  XIO2001 PCI Express-to-PCI Bridge +	8241  TUSB73x0 SuperSpeed USB 3.0 xHCI Host Controller +	8400  ACX 100 22Mbps Wireless Interface +		1186 3b00  DWL-650+ PC Card cardbus 22Mbs Wireless Adapter [AirPlus] +		1186 3b01  DWL-520+ 22Mbps PCI Wireless Adapter +		1395 2201  WL22-PC +		16ab 8501  WL-8305 IEEE802.11b+ Wireless LAN PCI Adapter +	8401  ACX 100 22Mbps Wireless Interface +	9000  Wireless Interface (of unknown type) +	9065  TMS320DM642 +	9066  ACX 111 54Mbps Wireless Interface +		0308 3404  G-102 v1 802.11g Wireless Cardbus Adapter +		0308 3406  G-162 v2 802.11g Wireless Cardbus Adapter +		104c 9066  WL212 Sitecom Wireless Network PCI-Card 100M (Version 1) +# Found in Philips ADSL ANNEX A WLAN Router SNA6500/18 sold by Belgacom +		104c 9067  TNETW1130GVF +		104c 9096  Trendnet TEW-412PC Wireless PCI Adapter (Version A) +		1186 3b04  DWL-G520+ Wireless PCI Adapter +		1186 3b05  DWL-G650+ AirPlusG+ CardBus Wireless LAN +		1186 3b08  AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.B1) +		1385 4c00  WG311v2 802.11g Wireless PCI Adapter +		13d1 aba0  SWLMP-54108 108Mbps Wireless mini PCI card 802.11g+ +		14ea ab07  GW-NS54GM Wireless Cardbus Adapter +		16ec 010d  USR5416 802.11g Wireless Turbo PCI Adapter +		16ec 010e  USR5410 802.11g Wireless Cardbus Adapter +		1737 0033  WPC54G v2 802.11g Wireless-G Notebook Adapter +		17cf 0032  G-162 v1 802.11g Wireless Cardbus Adapter +		17cf 0033  Z-Com XG650 Wireless miniPCI 802.11b/g +		187e 340b  G-302 v2 802.11g Wireless PCI Adapter +		187e 340c  G-360 v2 802.11g Wireless PCI Adapter +	a001  TDC1570 +	a100  TDC1561 +	a102  TNETA1575 HyperSAR Plus w/PCI Host i/f & UTOPIA i/f +	a106  TMS320C6414 TMS320C6415 TMS320C6416 +		175c 5000  ASI50xx Audio Adapter +		175c 6400  ASI6400 Cobranet series +		175c 8700  ASI87xx Radio Tuner card +	ac10  PCI1050 +	ac11  PCI1053 +	ac12  PCI1130 +	ac13  PCI1031 +	ac15  PCI1131 +	ac16  PCI1250 +		1014 0092  ThinkPad 600 +	ac17  PCI1220 +	ac18  PCI1260 +	ac19  PCI1221 +	ac1a  PCI1210 +	ac1b  PCI1450 +		0e11 b113  Armada M700 +		1014 0130  ThinkPad 600X/A21m/T20/T22 +	ac1c  PCI1225 +		0e11 b121  Armada E500 +		1028 0088  Latitude CPi A400XT +	ac1d  PCI1251A +	ac1e  PCI1211 +	ac1f  PCI1251B +	ac20  TI 2030 +	ac21  PCI2031 +	ac22  PCI2032 PCI Docking Bridge +	ac23  PCI2250 PCI-to-PCI Bridge +	ac28  PCI2050 PCI-to-PCI Bridge +	ac2c  PCI2060 PCI-to-PCI Bridge +	ac30  PCI1260 PC card Cardbus Controller +	ac40  PCI4450 PC card Cardbus Controller +	ac41  PCI4410 PC card Cardbus Controller +	ac42  PCI4451 PC card Cardbus Controller +		1028 00e6  PCI4451 PC card CardBus Controller (Inspiron 8100) +	ac44  PCI4510 PC card Cardbus Controller +		1028 0149  Inspiron 5100 +		1028 0163  Latitude D505 +		1028 0196  Inspiron 5160 +		1071 8160  MIM2000 +	ac46  PCI4520 PC card Cardbus Controller +		1014 0552  ThinkPad +	ac47  PCI7510 PC card Cardbus Controller +		1028 0139  Latitude D400 +		1028 013f  Precision M60 +		1028 014e  Latitude D800 +	ac48  PCI7610 PC Card Cardbus Controller +	ac49  PCI7410 PC Card Cardbus Controller +	ac4a  PCI7510/7610 CardBus Bridge +		1028 0139  Latitude D400 +		1028 014e  Latitude D800 +	ac4b  PCI7610 SD/MMC controller +	ac4c  PCI7610 Memory Stick controller +	ac50  PCI1410 PC card Cardbus Controller +	ac51  PCI1420 PC card Cardbus Controller +		0e11 004e  Evo N600c +		1014 0148  ThinkPad A20m +		1014 023b  ThinkPad T23 +		1028 00b1  Latitude C600 +		1028 012a  Latitude C640 +		1033 80cd  Versa Note VXi +		10cf 1095  Lifebook S-4510/C6155 +		e4bf 1000  CP2-2-HIPHOP +	ac52  PCI1451 PC card Cardbus Controller +	ac53  PCI1421 PC card Cardbus Controller +	ac54  PCI1620 PC Card Controller +		103c 08b0  tc1100 tablet +	ac55  PCI1520 PC card Cardbus Controller +		1014 0512  ThinkPad T30/T40 +		103c 0025  XE4500 Notebook +	ac56  PCI1510 PC card Cardbus Controller +		1014 0512  ThinkPad R50e +		1014 0528  ThinkPad R40e +		17aa 2012  ThinkPad T60/R60 series +	ac60  PCI2040 PCI to DSP Bridge Controller +		175c 5100  ASI51xx Audio Adapter +		175c 6100  ASI61xx Audio Adapter +		175c 6200  ASI62xx Audio Adapter +		175c 8800  ASI88xx Audio Adapter +		186f 3001  WR-G303 PCI radio receiver +		186f 3005  WR-G305 PCI radio receiver +		186f 3101  WR-G313 PCI radio receiver +		186f 3105  WR-G315 PCI radio receiver +	ac8d  PCI 7620 +	ac8e  PCI7420 CardBus Controller +		1028 018d  Inspiron 700m/710m +	ac8f  PCI7420/7620 SD/MS-Pro Controller +		1028 018d  Inspiron 700m/710m +	b001  TMS320C6424 +	fe00  FireWire Host Controller +	fe03  12C01A FireWire Host Controller +104d  Sony Corporation +	8004  DTL-H2500 [Playstation development board] +	8009  CXD1947Q i.LINK Controller +	8039  CXD3222 i.LINK Controller +	8056  Rockwell HCF 56K modem +	808a  Memory Stick Controller +	81ce  SxS Pro memory card +104e  Oak Technology, Inc +	0017  OTI-64017 +	0107  OTI-107 [Spitfire] +	0109  Video Adapter +	0111  OTI-64111 [Spitfire] +	0217  OTI-64217 +	0317  OTI-64317 +104f  Co-time Computer Ltd +1050  Winbond Electronics Corp +	0000  NE2000 +	0001  W83769F +	0033  W89C33D 802.11 a/b/g BB/MAC +	0105  W82C105 +	0840  W89C840 +		1050 0001  W89C840 Ethernet Adapter +		1050 0840  W89C840 Ethernet Adapter +	0940  W89C940 +	5a5a  W89C940F +	6692  W6692 +		1043 1702  ISDN Adapter (PCI Bus, D, W) +		1043 1703  ISDN Adapter (PCI Bus, DV, W) +		1043 1707  ISDN Adapter (PCI Bus, DV, W) +		144f 1702  ISDN Adapter (PCI Bus, D, W) +		144f 1703  ISDN Adapter (PCI Bus, DV, W) +		144f 1707  ISDN Adapter (PCI Bus, DV, W) +	9921  W99200F MPEG-1 Video Encoder +	9922  W99200F/W9922PF MPEG-1/2 Video Encoder +	9970  W9970CF +1051  Anigma, Inc. +1052  ?Young Micro Systems +1053  Young Micro Systems +1054  Hitachi, Ltd +	3009  2Gbps Fibre Channel to PCI HBA 3009 +	300a  4Gbps Fibre Channel to PCI-X HBA 300a +	300b  4Gbps Fibre Channel to PCI-X HBA 300b +	300f  ColdFusion 3 Chipset Processor to I/O Controller +	3010  ColdFusion 3 Chipset Memory Controller Hub +	3011  ColdFusion 3e Chipset Processor to I/O Controller +	3012  ColdFusion 3e Chipset Memory Controller Hub +	3017  Unassigned Hitachi Shared FC Device 3017 +	301b  Virtual VGA Device +	301d  PCIe-to-PCIe Bridge with Virtualization IO Assist Feature +	3020  FIVE-EX based Fibre Channel to PCIe HBA +	302c  M001 PCI Express Switch Upstream Port +	302d  M001 PCI Express Switch Downstream Port +	3070  Hitachi FIVE-FX Fibre Channel to PCIe HBA +	3505  SH7751 PCI Controller (PCIC) +	350e  SH7751R PCI Controller (PCIC) +1055  Efar Microsystems +	9130  SLC90E66 [Victory66] IDE +	9460  SLC90E66 [Victory66] ISA +	9462  SLC90E66 [Victory66] USB +	9463  SLC90E66 [Victory66] ACPI +	e420  LAN9420/LAN9420i +1056  ICL +# Motorola made a mistake and used 1507 instead of 1057 in some chips. Please look at the 1507 entry as well when updating this. +1057  Motorola +	0001  MPC105 [Eagle] +	0002  MPC106 [Grackle] +	0003  MPC8240 [Kahlua] +	0004  MPC107 +	0006  MPC8245 [Unity] +	0008  MPC8540 +	0009  MPC8560 +	0012  MPC8548 [PowerQUICC III] +	0100  MC145575 [HFC-PCI] +	0431  KTI829c 100VG +	1073  Nokia N770 +	1219  Nokia N800 +	1801  DSP56301 Digital Signal Processor +		14fb 0101  Transas Radar Imitator Board [RIM] +		14fb 0102  Transas Radar Imitator Board [RIM-2] +		14fb 0202  Transas Radar Integrator Board [RIB-2] +		14fb 0611  1 channel CAN bus Controller [CanPci-1] +		14fb 0612  2 channels CAN bus Controller [CanPci-2] +		14fb 0613  3 channels CAN bus Controller [CanPci-3] +		14fb 0614  4 channels CAN bus Controller [CanPci-4] +		14fb 0621  1 channel CAN bus Controller [CanPci2-1] +		14fb 0622  2 channels CAN bus Controller [CanPci2-2] +		14fb 0810  Transas VTS Radar Integrator Board [RIB-4] +		175c 4200  ASI4215 Audio Adapter +		175c 4300  ASI43xx Audio Adapter +		175c 4400  ASI4401 Audio Adapter +		ecc0 0010  Darla +		ecc0 0020  Gina +		ecc0 0030  Layla rev.0 +		ecc0 0031  Layla rev.1 +		ecc0 0040  Darla24 rev.0 +		ecc0 0041  Darla24 rev.1 +		ecc0 0050  Gina24 rev.0 +		ecc0 0051  Gina24 rev.1 +		ecc0 0070  Mona rev.0 +		ecc0 0071  Mona rev.1 +		ecc0 0072  Mona rev.2 +	18c0  MPC8265A/8266/8272 +	18c1  MPC8271/MPC8272 +	3052  SM56 Data Fax Modem +	3410  DSP56361 Digital Signal Processor +		ecc0 0050  Gina24 rev.0 +		ecc0 0051  Gina24 rev.1 +		ecc0 0060  Layla24 +		ecc0 0070  Mona rev.0 +		ecc0 0071  Mona rev.1 +		ecc0 0072  Mona rev.2 +		ecc0 0080  Mia rev.0 +		ecc0 0081  Mia rev.1 +		ecc0 0090  Indigo +		ecc0 00a0  Indigo IO +		ecc0 00b0  Indigo DJ +		ecc0 0100  3G +	4801  Raven +	4802  Falcon +	4803  Hawk +	4806  CPX8216 +	4d68  20268 +	5600  SM56 PCI Modem +		1057 0300  SM56 PCI Speakerphone Modem +		1057 0301  SM56 PCI Voice Modem +		1057 0302  SM56 PCI Fax Modem +		1057 5600  SM56 PCI Voice modem +		13d2 0300  SM56 PCI Speakerphone Modem +		13d2 0301  SM56 PCI Voice modem +		13d2 0302  SM56 PCI Fax Modem +		1436 0300  SM56 PCI Speakerphone Modem +		1436 0301  SM56 PCI Voice modem +		1436 0302  SM56 PCI Fax Modem +		144f 100c  SM56 PCI Fax Modem +		1494 0300  SM56 PCI Speakerphone Modem +		1494 0301  SM56 PCI Voice modem +		14c8 0300  SM56 PCI Speakerphone Modem +		14c8 0302  SM56 PCI Fax Modem +		1668 0300  SM56 PCI Speakerphone Modem +		1668 0302  SM56 PCI Fax Modem +	5608  Wildcard X100P +	5803  MPC5200 +	5806  MCF54 Coldfire +	5808  MPC8220 +	5809  MPC5200B +	6400  MPC190 Security Processor (S1 family, encryption) +	6405  MPC184 Security Processor (S1 family) +1058  Electronics & Telecommunications RSH +# Formerly: Teknor Industrial Computers Inc +1059  Kontron +105a  Promise Technology, Inc. +	0d30  PDC20265 (FastTrak100 Lite/Ultra100) +		1043 8042  AV7266-E South Bridge Promise RAID +		105a 4d33  Ultra100 +	0d38  20263 +		105a 4d39  Fasttrak66 +	1275  20275 +	3318  PDC20318 (SATA150 TX4) +	3319  PDC20319 (FastTrak S150 TX4) +		105a 3319  FastTrak S150 TX4 4 port SATA PCI board +		8086 3427  S875WP1-E mainboard +	3371  PDC20371 (FastTrak S150 TX2plus) +	3373  PDC20378 (FastTrak 378/SATA 378) +		1043 80f5  K8V Deluxe/PC-DL Deluxe motherboard +		1462 590d  KT6 Delta-FIS2R (MS-6590) +		1462 702e  K8T NEO FIS2R motherboard +	3375  PDC20375 (SATA150 TX2plus) +	3376  PDC20376 (FastTrak 376) +		1043 809e  A7V8X motherboard +	3515  PDC40719 [FastTrak TX4300/TX4310] +	3519  PDC40519 (FastTrak TX4200) +	3570  PDC20771 [FastTrak TX2300] +	3571  PDC20571 (FastTrak TX2200) +	3574  PDC20579 SATAII 150 IDE Controller +	3577  PDC40779 (SATA 300 779) +	3d17  PDC40718 (SATA 300 TX4) +	3d18  PDC20518/PDC40518 (SATAII 150 TX4) +	3d73  PDC40775 (SATA 300 TX2plus) +	3d75  PDC20575 (SATAII150 TX2plus) +	3f20  PDC42819 [FastTrak TX2650/TX4650] +	4302  80333 [SuperTrak EX4350] +	4d30  PDC20267 (FastTrak100/Ultra100) +		105a 4d33  Ultra100 +		105a 4d39  FastTrak100 +		8086 5744  S845WD1-E mainboard +	4d33  20246 +		105a 4d33  20246 IDE Controller +	4d38  PDC20262 (FastTrak66/Ultra66) +		105a 4d30  Ultra Device on SuperTrak +		105a 4d33  Ultra66 +		105a 4d39  FastTrak66 +	4d68  PDC20268 [Ultra100 TX2] +		105a 4d68  Ultra100 TX2 +	4d69  20269 +		105a 4d68  Ultra133TX2 +	5275  PDC20276 (MBFastTrak133 Lite) +		1043 807e  A7V333 motherboard. +		105a 0275  SuperTrak SX6000 IDE +		105a 1275  MBFastTrak133 Lite (tm) Controller (RAID mode) +		1458 b001  MBUltra 133 +	5300  DC5300 +	6268  PDC20270 (FastTrak100 LP/TX2/TX4) +		105a 4d68  FastTrak100 TX2 +	6269  PDC20271 (FastTrak TX2000) +		105a 6269  FastTrak TX2/TX2000 +	6300  PDC81731 [FastTrak SX8300] +	6621  PDC20621 (FastTrak S150 SX4/FastTrak SX4000 lite) +	6622  PDC20621 [SATA150 SX4] 4 Channel IDE RAID Controller +	6624  PDC20621 [FastTrak SX4100] +	6626  PDC20618 (Ultra 618) +	6629  PDC20619 (FastTrak TX4000) +	7275  PDC20277 (SBFastTrak133 Lite) +	8002  SATAII150 SX8 +	8350  80333 [SuperTrak EX8350/EX16350], 80331 [SuperTrak EX8300/EX16300] +	8650  81384 [SuperTrak EX SAS and SATA RAID Controller] +		105a 4600  SuperTrak EX4650A +		105a 4601  SuperTrak EX4650 +		105a 4610  SuperTrak EX4650EL +		105a 8600  SuperTrak EX8650EL +		105a 8601  SuperTrak EX8650A +		105a 8602  SuperTrak EX8654 +		105a 8603  SuperTrak EX8658 +		105a 8604  SuperTrak EX8650 +		105a 8610  SuperTrak EX8650M +		105a a600  SuperTrak EX12650 +		105a b600  SuperTrak EX16650 +		105a b601  SuperTrak EX16654 +		105a b602  SuperTrak EX16658 +	8760  PM8010 [SuperTrak EX SAS and SATA 6G RAID Controller] +	c350  80333 [SuperTrak EX12350] +	e350  80333 [SuperTrak EX24350] +105b  Foxconn International, Inc. +105c  Wipro Infotech Limited +105d  Number 9 Computer Company +	2309  Imagine 128 +	2339  Imagine 128-II +		105d 0000  Imagine 128 series 2 4Mb VRAM +		105d 0001  Imagine 128 series 2 4Mb VRAM +		105d 0002  Imagine 128 series 2 4Mb VRAM +		105d 0003  Imagine 128 series 2 4Mb VRAM +		105d 0004  Imagine 128 series 2 4Mb VRAM +		105d 0005  Imagine 128 series 2 4Mb VRAM +		105d 0006  Imagine 128 series 2 4Mb VRAM +		105d 0007  Imagine 128 series 2 4Mb VRAM +		105d 0008  Imagine 128 series 2e 4Mb DRAM +		105d 0009  Imagine 128 series 2e 4Mb DRAM +		105d 000a  Imagine 128 series 2 8Mb VRAM +		105d 000b  Imagine 128 series 2 8Mb H-VRAM +		11a4 000a  Barco Metheus 5 Megapixel +		13cc 0000  Barco Metheus 5 Megapixel +		13cc 0004  Barco Metheus 5 Megapixel +		13cc 0005  Barco Metheus 5 Megapixel +		13cc 0006  Barco Metheus 5 Megapixel +		13cc 0008  Barco Metheus 5 Megapixel +		13cc 0009  Barco Metheus 5 Megapixel +		13cc 000a  Barco Metheus 5 Megapixel +		13cc 000c  Barco Metheus 5 Megapixel +	493d  Imagine 128 T2R [Ticket to Ride] +		11a4 000a  Barco Metheus 5 Megapixel, Dual Head +		11a4 000b  Barco Metheus 5 Megapixel, Dual Head +		13cc 0002  Barco Metheus 4 Megapixel, Dual Head +		13cc 0003  Barco Metheus 5 Megapixel, Dual Head +		13cc 0007  Barco Metheus 5 Megapixel, Dual Head +		13cc 0008  Barco Metheus 5 Megapixel, Dual Head +		13cc 0009  Barco Metheus 5 Megapixel, Dual Head +		13cc 000a  Barco Metheus 5 Megapixel, Dual Head +	5348  Revolution 4 +		105d 0037  Revolution IV-FP AGP (For SGI 1600SW) +		11a4 0028  PVS5600M +		11a4 0038  PVS5600D +105e  Vtech Computers Ltd +105f  Infotronic America Inc +1060  United Microelectronics [UMC] +	0001  UM82C881 +	0002  UM82C886 +	0101  UM8673F +	0881  UM8881 +	0886  UM8886F +	0891  UM8891A +	1001  UM886A +	673a  UM8886BF +	673b  EIDE Master/DMA +	8710  UM8710 +	886a  UM8886A +	8881  UM8881F +	8886  UM8886F +	888a  UM8886A +	8891  UM8891A +	9017  UM9017F +	9018  UM9018 +	9026  UM9026 +	e881  UM8881N +	e886  UM8886N +	e88a  UM8886N +	e891  UM8891N +1061  I.I.T. +	0001  AGX016 +	0002  IIT3204/3501 +1062  Maspar Computer Corp +1063  Ocean Office Automation +1064  Alcatel +	1102  Dynamite 2840 (ADSL PCI modem) +1065  Texas Microsystems +1066  PicoPower Technology +	0000  PT80C826 +	0001  PT86C521 [Vesuvius v1] Host Bridge +	0002  PT86C523 [Vesuvius v3] PCI-ISA Bridge Master +	0003  PT86C524 [Nile] PCI-to-PCI Bridge +	0004  PT86C525 [Nile-II] PCI-to-PCI Bridge +	0005  National PC87550 System Controller +	8002  PT86C523 [Vesuvius v3] PCI-ISA Bridge Slave +1067  Mitsubishi Electric +	0301  AccelGraphics AccelECLIPSE +	0304  AccelGALAXY A2100 [OEM Evans & Sutherland] +	0308  Tornado 3000 [OEM Evans & Sutherland] +	1002  VG500 [VolumePro Volume Rendering Accelerator] +1068  Diversified Technology +1069  Mylex Corporation +	0001  DAC960P +	0002  DAC960PD +	0010  DAC960PG +	0020  DAC960LA +	0050  AcceleRAID 352/170/160 support Device +		1069 0050  AcceleRAID 352 support Device +		1069 0052  AcceleRAID 170 support Device +		1069 0054  AcceleRAID 160 support Device +	b166  AcceleRAID 600/500/400/Sapphire support Device +		1014 0242  iSeries 2872 DASD IOA +		1014 0266  Dual Channel PCI-X U320 SCSI Adapter +		1014 0278  Dual Channel PCI-X U320 SCSI RAID Adapter +		1014 02d3  Dual Channel PCI-X U320 SCSI Adapter +		1014 02d4  Dual Channel PCI-X U320 SCSI RAID Adapter +		1069 0200  AcceleRAID 400, Single Channel, PCI-X, U320, SCSI RAID +		1069 0202  AcceleRAID Sapphire, Dual Channel, PCI-X, U320, SCSI RAID +		1069 0204  AcceleRAID 500, Dual Channel, Low-Profile, PCI-X, U320, SCSI RAID +		1069 0206  AcceleRAID 600, Dual Channel, PCI-X, U320, SCSI RAID +	ba55  eXtremeRAID 1100 support Device +	ba56  eXtremeRAID 2000/3000 support Device +		1069 0030  eXtremeRAID 3000 support Device +		1069 0040  eXtremeRAID 2000 support Device +	ba57  eXtremeRAID 4000/5000 support Device +		1069 0072  eXtremeRAID 5000 support Device +106a  Aten Research Inc +106b  Apple Inc. +	0001  Bandit PowerPC host bridge +	0002  Grand Central I/O +	0003  Control Video +	0004  PlanB Video-In +	0007  O'Hare I/O +	000c  DOS on Mac +	000e  Hydra Mac I/O +	0010  Heathrow Mac I/O +	0017  Paddington Mac I/O +	0018  UniNorth FireWire +	0019  KeyLargo USB +	001e  UniNorth Internal PCI +	001f  UniNorth PCI +	0020  UniNorth AGP +	0021  UniNorth GMAC (Sun GEM) +	0022  KeyLargo Mac I/O +	0024  UniNorth/Pangea GMAC (Sun GEM) +	0025  KeyLargo/Pangea Mac I/O +	0026  KeyLargo/Pangea USB +	0027  UniNorth/Pangea AGP +	0028  UniNorth/Pangea PCI +	0029  UniNorth/Pangea Internal PCI +	002d  UniNorth 1.5 AGP +	002e  UniNorth 1.5 PCI +	002f  UniNorth 1.5 Internal PCI +	0030  UniNorth/Pangea FireWire +	0031  UniNorth 2 FireWire +		106b 5811  iBook G4 2004 +	0032  UniNorth 2 GMAC (Sun GEM) +	0033  UniNorth 2 ATA/100 +	0034  UniNorth 2 AGP +	0035  UniNorth 2 PCI +	0036  UniNorth 2 Internal PCI +	003b  UniNorth/Intrepid ATA/100 +	003e  KeyLargo/Intrepid Mac I/O +	003f  KeyLargo/Intrepid USB +		1af4 1100  QEMU Virtual Machine +	0040  K2 KeyLargo USB +	0041  K2 KeyLargo Mac/IO +	0042  K2 FireWire +	0043  K2 ATA/100 +	0045  K2 HT-PCI Bridge +	0046  K2 HT-PCI Bridge +	0047  K2 HT-PCI Bridge +	0048  K2 HT-PCI Bridge +	0049  K2 HT-PCI Bridge +	004a  CPC945 HT Bridge +	004b  U3 AGP +	004c  K2 GMAC (Sun GEM) +	004f  Shasta Mac I/O +	0050  Shasta IDE +	0051  Shasta (Sun GEM) +	0052  Shasta Firewire +	0053  Shasta PCI Bridge +	0054  Shasta PCI Bridge +	0055  Shasta PCI Bridge +	0056  U4 PCIe +	0057  U3 HT Bridge +	0058  U3L AGP Bridge +	0059  U3H AGP Bridge +	005b  CPC945 PCIe Bridge +	0066  Intrepid2 AGP Bridge +	0067  Intrepid2 PCI Bridge +	0068  Intrepid2 PCI Bridge +	0069  Intrepid2 ATA/100 +	006a  Intrepid2 Firewire +	006b  Intrepid2 GMAC (Sun GEM) +	0074  U4 HT Bridge +# should be 14e4:1645 +	1645  Broadcom NetXtreme BCM5701 Gigabit Ethernet +106c  Hynix Semiconductor +	8139  8139c 100BaseTX Ethernet Controller +	8801  Dual Pentium ISA/PCI Motherboard +	8802  PowerPC ISA/PCI Motherboard +	8803  Dual Window Graphics Accelerator +	8804  LAN Controller +	8805  100-BaseT LAN +106d  Sequent Computer Systems +106e  DFI, Inc +106f  City Gate Development Ltd +1070  Daewoo Telecom Ltd +1071  Mitac +	8160  Mitac 8060B Mobile Platform +1072  GIT Co Ltd +1073  Yamaha Corporation +	0001  3D GUI Accelerator +	0002  YGV615 [RPA3 3D-Graphics Controller] +	0003  YMF-740 +	0004  YMF-724 +		1073 0004  YMF724-Based PCI Audio Adapter +	0005  DS1 Audio +		1073 0005  DS-XG PCI Audio CODEC +	0006  DS1 Audio +	0008  DS1 Audio +		1073 0008  DS-XG PCI Audio CODEC +	000a  DS1L Audio +		1073 0004  DS-XG PCI Audio CODEC +		1073 000a  DS-XG PCI Audio CODEC +		8086 4d55  DS-XG PCI Audio CODEC [Intel MU440EX] +	000c  YMF-740C [DS-1L Audio Controller] +		107a 000c  DS-XG PCI Audio CODEC +	000d  YMF-724F [DS-1 Audio Controller] +		1073 000d  DS-XG PCI Audio CODEC +	0010  YMF-744B [DS-1S Audio Controller] +		1073 0006  DS-XG PCI Audio CODEC +		1073 0010  DS-XG PCI Audio CODEC +	0012  YMF-754 [DS-1E Audio Controller] +		1073 0012  DS-XG PCI Audio Codec +	0020  DS-1 Audio +	1000  SW1000XG [XG Factory] +	2000  DS2416 Digital Mixing Card +		1073 2000  DS2416 Digital Mixing Card +1074  NexGen Microsystems +	4e78  82c500/1 +1075  Advanced Integrations Research +1076  Chaintech Computer Co. Ltd +1077  QLogic Corp. +	1016  ISP10160 Single Channel Ultra3 SCSI Processor +	1020  ISP1020 Fast-wide SCSI +	1022  ISP1022 Fast-wide SCSI +	1080  ISP1080 SCSI Host Adapter +	1216  ISP12160 Dual Channel Ultra3 SCSI Processor +		101e 8471  QLA12160 on AMI MegaRAID +		101e 8493  QLA12160 on AMI MegaRAID +	1240  ISP1240 SCSI Host Adapter +	1280  ISP1280 SCSI Host Adapter +	2020  ISP2020A Fast!SCSI Basic Adapter +	2031  ISP8324-based 16Gb Fibre Channel to PCI Express Adapter +	2100  QLA2100 64-bit Fibre Channel Adapter +		1077 0001  QLA2100 64-bit Fibre Channel Adapter +	2200  QLA2200 64-bit Fibre Channel Adapter +		1077 0002  QLA2200 +	2300  QLA2300 64-bit Fibre Channel Adapter +	2312  ISP2312-based 2Gb Fibre Channel to PCI-X HBA +		103c 0131  2Gb Fibre Channel - Single port [A7538A] +		103c 12ba  2Gb Fibre Channel - Dual port [A6826A] +	2322  ISP2322-based 2Gb Fibre Channel to PCI-X HBA +	2422  ISP2422-based 4Gb Fibre Channel to PCI-X HBA +		103c 12d7  4Gb Fibre Channel [AB379A] +		103c 12dd  4Gb Fibre Channel [AB429A] +	2432  ISP2432-based 4Gb Fibre Channel to PCI Express HBA +		103c 7040  FC1142SR 4Gb 1-port PCIe Fibre Channel Host Bus Adapter [HPAE311A] +	2532  ISP2532-based 8Gb Fibre Channel to PCI Express HBA +		103c 3262  StorageWorks 81Q +		1077 0167  QME2572 Dual Port FC8 HBA Mezzanine +	3022  ISP4022-based Ethernet NIC +	3032  ISP4032-based Ethernet IPv6 NIC +	4010  ISP4010-based iSCSI TOE HBA +	4022  ISP4022-based iSCSI TOE HBA +	4032  ISP4032-based iSCSI TOE IPv6 HBA +	5432  SP232-based 4Gb Fibre Channel to PCI Express HBA +	6312  SP202-based 2Gb Fibre Channel to PCI-X HBA +	6322  SP212-based 2Gb Fibre Channel to PCI-X HBA +	7220  IBA7220 InfiniBand HCA +	7322  IBA7322 QDR InfiniBand HCA +	8000  10GbE Converged Network Adapter (TCP/IP Networking) +	8001  10GbE Converged Network Adapter (FCoE) +	8020  cLOM8214 1/10GbE Controller +		1028 1f64  QMD8262-k 10G DP bNDC KR +		103c 3346  CN1000Q Dual Port Converged Network Adapter +		103c 3733  NC523SFP 10Gb 2-port Server Adapter +		1077 0203  8200 Series Single Port 10GbE Converged Network Adapter (TCP/IP Networking) +		1077 0207  8200 Series Dual Port 10GbE Converged Network Adapter (TCP/IP Networking) +		1077 020b  3200 Series Dual Port 10Gb Intelligent Ethernet Adapter +		1077 020c  3200 Series Quad Port 1Gb Intelligent Ethernet Adapter +		1077 020f  3200 Series Single Port 10Gb Intelligent Ethernet Adapter +		1077 0210  QME8242-k 10GbE Dual Port Mezzanine Card +	8021  8200 Series 10GbE Converged Network Adapter (FCoE) +		103c 3348  CN1000Q Dual Port Converged Network Adapter +		1077 0211  QME8242-k 10GbE Dual Port Mezzanine Card, FCoE +	8022  8200 Series 10GbE Converged Network Adapter (iSCSI) +		103c 3347  CN1000Q Dual Port Converged Network Adapter +		1077 0212  QME8242-k 10GbE Dual Port Mezzanine Card, iSCSI +	8030  ISP8324 1/10GbE Converged Network Controller +		1077 0243  8300 Series Single Port 10GbE Converged Network Adapter (TCP/IP Networking) +		1077 0246  8300 Series Dual Port 10GbE Converged Network Adapter (TCP/IP Networking) +	8031  8300 Series 10GbE Converged Network Adapter (FCoE) +	8032  8300 Series 10GbE Converged Network Adapter (iSCSI) +	8430  ISP8324 1/10GbE Converged Network Controller (NIC VF) +	8431  8300 Series 10GbE Converged Network Adapter (FCoE VF) +	8432  ISP2432M-based 10GbE Converged Network Adapter (CNA) +1078  Cyrix Corporation +	0000  5510 [Grappa] +	0001  PCI Master +	0002  5520 [Cognac] +	0100  5530 Legacy [Kahlua] +	0101  5530 SMI [Kahlua] +	0102  5530 IDE [Kahlua] +	0103  5530 Audio [Kahlua] +	0104  5530 Video [Kahlua] +	0400  ZFMicro PCI Bridge +	0401  ZFMicro Chipset SMI +	0402  ZFMicro Chipset IDE +	0403  ZFMicro Expansion Bus +1079  I-Bus +107a  NetWorth +# formerly Gateway 2000 / acquired by Acer Inc. +107b  Gateway, Inc. +107c  LG Electronics [Lucky Goldstar Co. Ltd] +107d  LeadTek Research Inc. +	0000  P86C850 +107e  Interphase Corporation +	0001  5515 ATM Adapter [Flipper] +	0002  100 VG AnyLan Controller +	0004  5526 Fibre Channel Host Adapter +	0005  x526 Fibre Channel Host Adapter +	0008  5525/5575 ATM Adapter (155 Mbit) [Atlantic] +	9003  5535-4P-BRI-ST +	9007  5535-4P-BRI-U +	9008  5535-1P-SR +	900c  5535-1P-SR-ST +	900e  5535-1P-SR-U +	9011  5535-1P-PRI +	9013  5535-2P-PRI +	9023  5536-4P-BRI-ST +	9027  5536-4P-BRI-U +	9031  5536-1P-PRI +	9033  5536-2P-PRI +107f  Data Technology Corporation +	0802  SL82C105 +1080  Contaq Microsystems +	0600  82C599 +	c691  Cypress CY82C691 +	c693  82c693 +1081  Supermac Technology +	0d47  Radius PCI to NuBUS Bridge +1082  EFA Corporation of America +1083  Forex Computer Corporation +	0001  FR710 +1084  Parador +1086  J. Bond Computer Systems +1087  Cache Computer +1088  Microcomputer Systems (M) Son +1089  Data General Corporation +# Formerly Bit3 Computer Corp. +108a  SBS Technologies +	0001  VME Bridge Model 617 +	0010  VME Bridge Model 618 +	0040  dataBLIZZARD +	3000  VME Bridge Model 2706 +108c  Oakleigh Systems Inc. +108d  Olicom +	0001  Token-Ring 16/4 PCI Adapter (3136/3137) +	0002  16/4 Token Ring +	0004  RapidFire OC-3139/3140 Token-Ring 16/4 PCI Adapter +		108d 0004  OC-3139/3140 RapidFire Token-Ring 16/4 Adapter +	0005  GoCard 3250 Token-Ring 16/4 CardBus PC Card +	0006  OC-3530 RapidFire Token-Ring 100 +	0007  RapidFire 3141 Token-Ring 16/4 PCI Fiber Adapter +		108d 0007  OC-3141 RapidFire Token-Ring 16/4 Adapter +	0008  RapidFire 3540 HSTR 100/16/4 PCI Adapter +		108d 0008  OC-3540 RapidFire HSTR 100/16/4 Adapter +	0011  OC-2315 +	0012  OC-2325 +	0013  OC-2183/2185 +	0014  OC-2326 +	0019  OC-2327/2250 10/100 Ethernet Adapter +		108d 0016  OC-2327 Rapidfire 10/100 Ethernet Adapter +		108d 0017  OC-2250 GoCard 10/100 Ethernet Adapter +	0021  OC-6151/6152 [RapidFire ATM 155] +	0022  ATM Adapter +108e  Oracle/SUN +	0001  EBUS +	1000  EBUS +	1001  Happy Meal 10/100 Ethernet [hme] +	1100  RIO EBUS +		108e 1100  RIO EBUS on Blade 100 motherboard +	1101  RIO 10/100 Ethernet [eri] +		108e 1101  RIO GEM on Blade 100 motherboard +	1102  RIO 1394 +		108e 1102  RIO 1394 on Blade 100 motherboard +	1103  RIO USB +		108e 1103  RIO USB on Blade 100 motherboard +	1647  Broadcom 570x 10/100/1000 Ethernet [bge] +	1648  Broadcom 570x 10/100/1000 Ethernet [bge] +	16a7  Broadcom 570x 10/100/1000 Ethernet [bge] +	16a8  Broadcom 570x 10/100/1000 Ethernet [bge] +	2bad  GEM 10/100/1000 Ethernet [ge] +	5000  Simba Advanced PCI Bridge +		108e 5000  Netra AX1105-500 +	5043  SunPCI Co-processor +	5ca0  Crypto Accelerator 6000 [mca] +	6300  Intel 21554 PCI-PCI bus bridge [db21554] +	6301  Intel 21554 PCI-PCI bus bridge [db21554] +	6302  Intel 21554 PCI-PCI bus bridge [db21554] +	6303  Intel 21554 PCI-PCI bus bridge [db21554] +	6310  Intel 21554 PCI-PCI bus bridge [db21554] +	6311  Intel 21554 PCI-PCI bus bridge [db21554] +	6312  Intel 21554 PCI-PCI bus bridge [db21554] +	6313  Intel 21554 PCI-PCI bus bridge [db21554] +	6320  Intel 21554 PCI-PCI bus bridge [db21554] +	6323  Intel 21554 PCI-PCI bus bridge [db21554] +	6330  Intel 21554 PCI-PCI bus bridge [db21554] +	6331  Intel 21554 PCI-PCI bus bridge [db21554] +	6332  Intel 21554 PCI-PCI bus bridge [db21554] +	6333  Intel 21554 PCI-PCI bus bridge [db21554] +	6340  Intel 21554 PCI-PCI bus bridge [db21554] +	6343  Intel 21554 PCI-PCI bus bridge [db21554] +	6350  Intel 21554 PCI-PCI bus bridge [db21554] +	6353  Intel 21554 PCI-PCI bus bridge [db21554] +	6722  Intel 21554 PCI-PCI bus bridge [db21554] +	676e  SunPCiIII +	7063  SunPCiII / SunPCiIIpro +	8000  Psycho PCI Bus Module +	8001  Schizo PCI Bus Module +	8002  Schizo+ PCI Bus Module +	80f0  PCIe switch [px] +	80f8  PCIe switch [px] +	9010  PCIe/PCI bridge switch [pxb_plx] +	9020  PCIe/PCI bridge switch [pxb_plx] +	9102  Davicom Fast Ethernet driver for Davicom DM9102A [dmfe] +	a000  Psycho UPA-PCI Bus Module [pcipsy] +	a001  Psycho UPA-PCI Bus Module [pcipsy] +		108e a001  Ultra IIe on Blade 100 motherboard +	a801  Schizo Fireplane-PCI bus bridge module [pcisch] +	aaaa  Multithreaded Shared 10GbE Ethernet Network Controller +	abba  Cassini 10/100/1000 +	abcd  Multithreaded 10-Gigabit Ethernet Network Controller +	c416  Sun Fire System/System Controller Interface chip [sbbc] +108f  Systemsoft +1090  Compro Computer Services, Inc. +	4610  PCI RTOM +	4620  GPIO HSD +1091  Intergraph Corporation +	0020  3D graphics processor +	0021  3D graphics processor w/Texturing +	0040  3D graphics frame buffer +	0041  3D graphics frame buffer +	0060  Proprietary bus bridge +	00e4  Powerstorm 4D50T +	0720  Motion JPEG codec +	0780  Intense3D Wildcat 3410 (MSMT496) +	07a0  Sun Expert3D-Lite Graphics Accelerator +	1091  Sun Expert3D Graphics Accelerator +1092  Diamond Multimedia Systems +	0028  Viper V770 +		1092 4a00  Viper V770 32MB +	00a0  Speedstar Pro SE +	00a8  Speedstar 64 +	0550  Viper V550 +	08d4  Supra 2260 Modem +	094c  SupraExpress 56i Pro +	1001  Video Crunch It 1001 capture card +	1092  Viper V330 +	6120  Maximum DVD +	8810  Stealth SE +	8811  Stealth 64/SE +	8880  Stealth +	8881  Stealth +	88b0  Stealth 64 +	88b1  Stealth 64 +	88c0  Stealth 64 +	88c1  Stealth 64 +	88d0  Stealth 64 +	88d1  Stealth 64 +	88f0  Stealth 64 +	88f1  Stealth 64 +	9999  DMD-I0928-1 "Monster sound" sound chip +1093  National Instruments +	0160  PCI-DIO-96 +	0162  PCI-MIO-16XE-50 +	1150  PCI-6533 (PCI-DIO-32HS) +	1170  PCI-MIO-16XE-10 +	1180  PCI-MIO-16E-1 +	1190  PCI-MIO-16E-4 +	11b0  PXI-6070E +	11c0  PXI-6040E +	11d0  PXI-6030E +	1270  PCI-6032E +	1290  PCI-6704 +	12b0  PCI-6534 +	1310  PCI-6602 +	1320  PXI-6533 +	1330  PCI-6031E +	1340  PCI-6033E +	1350  PCI-6071E +	1360  PXI-6602 +	13c0  PXI-6508 +	1490  PXI-6534 +	14e0  PCI-6110 +	14f0  PCI-6111 +	1580  PXI-6031E +	15b0  PXI-6071E +	1710  PXI-6509 +	17c0  PXI-5690 +	17d0  PCI-6503 +	1870  PCI-6713 +	1880  PCI-6711 +	18b0  PCI-6052E +	18c0  PXI-6052E +	1920  PXI-6704 +	1930  PCI-6040E +	19c0  PCI-4472 +	1aa0  PXI-4110 +	1ad0  PCI-6133 +	1ae0  PXI-6133 +	1e30  PCI-6624 +	1e40  PXI-6624 +	1e50  PXI-5404 +	2410  PCI-6733 +	2420  PXI-6733 +	2430  PCI-6731 +	2470  PCI-4474 +	24a0  PCI-4065 +	24b0  PXI-4200 +	24f0  PXI-4472 +	2510  PCI-4472 +	2520  PCI-4474 +	27a0  PCI-6123 +	27b0  PXI-6123 +	2880  DAQCard-6601 +	2890  PCI-6036E +	28a0  PXI-4461 +	28b0  PCI-6013 +	28c0  PCI-6014 +	28d0  PCI-5122 +	28e0  PXI-5122 +	29f0  PXI-7334 +	2a00  PXI-7344 +	2a60  PCI-6023E +	2a70  PCI-6024E +	2a80  PCI-6025E +	2ab0  PXI-6025E +	2b10  PXI-6527 +	2b20  PCI-6527 +	2b80  PXI-6713 +	2b90  PXI-6711 +	2c60  PCI-6601 +	2c70  PXI-6601 +	2c80  PCI-6035E +	2c90  PCI-6703 +	2ca0  PCI-6034E +	2cb0  PCI-7344 +	2cc0  PXI-6608 +	2d20  PXI-5600 +	2db0  PCI-6608 +	2dc0  PCI-4070 +	2dd0  PXI-4070 +	2eb0  PXI-4472 +	2ec0  PXI-6115 +	2ed0  PCI-6115 +	2ee0  PXI-6120 +	2ef0  PCI-6120 +	2fd1  PCI-7334 +	2fd2  PCI-7350 +	2fd3  PCI-7342 +	2fd5  PXI-7350 +	2fd6  PXI-7342 +	7003  PCI-6551 +	7004  PXI-6551 +	700b  PXI-5421 +	700c  PCI-5421 +	7023  PXI-2593 +	702c  PXI-7831R +	702d  PCI-7831R +	702e  PXI-7811R +	702f  PCI-7811R +	7030  PCI-CAN (Series 2) +	7031  PCI-CAN/2 (Series 2) +	7032  PCI-CAN/LS (Series 2) +	7033  PCI-CAN/LS2 (Series 2) +	7034  PCI-CAN/DS (Series 2) +	7035  PXI-8460 (Series 2, 1 port) +	7036  PXI-8460 (Series 2, 2 ports) +	7037  PXI-8461 (Series 2, 1 port) +	7038  PXI-8461 (Series 2, 2 ports) +	7039  PXI-8462 (Series 2) +	703f  PXI-2566 +	7040  PXI-2567 +	7044  MXI-4 Connection Monitor +	7047  PXI-6653 +	704c  PXI-2530 +	704f  PXI-4220 +	7050  PXI-4204 +	7055  PXI-7830R +	7056  PCI-7830R +	705a  PCI-CAN/XS (Series 2) +	705b  PCI-CAN/XS2 (Series 2) +	705c  PXI-8464 (Series 2, 1 port) +	705d  PXI-8464 (Series 2, 2 ports) +	705e  cRIO-9102 +	7060  PXI-5610 +	7064  PXI-1045 Trigger Routing Module +	7065  PXI-6652 +	7066  PXI-6651 +	7067  PXI-2529 +	7068  PCI-CAN/SW (Series 2) +	7069  PCI-CAN/SW2 (Series 2) +	706a  PXI-8463 (Series 2, 1 port) +	706b  PXI-8463 (Series 2, 2 ports) +	7073  PCI-6723 +	7074  PXI-7833R +	7075  PXI-6552 +	7076  PCI-6552 +	707c  PXI-1428 +	707e  PXI-4462 +	7080  PXI-8430/2 (RS-232) Interface +	7081  PXI-8431/2 (RS-485) Interface +	7083  PCI-7833R +	7085  PCI-6509 +	7086  PXI-6528 +	7087  PCI-6515 +	7088  PCI-6514 +	708c  PXI-2568 +	708d  PXI-2569 +	70a9  PCI-6528 +	70aa  PCI-6229 +	70ab  PCI-6259 +	70ac  PCI-6289 +	70ad  PXI-6251 +	70ae  PXI-6220 +	70af  PCI-6221 +	70b0  PCI-6220 +	70b1  PXI-6229 +	70b2  PXI-6259 +	70b3  PXI-6289 +	70b4  PCI-6250 +	70b5  PXI-6221 +	70b6  PCI-6280 +	70b7  PCI-6254 +	70b8  PCI-6251 +	70b9  PXI-6250 +	70ba  PXI-6254 +	70bb  PXI-6280 +	70bc  PCI-6284 +	70bd  PCI-6281 +	70be  PXI-6284 +	70bf  PXI-6281 +	70c0  PCI-6143 +	70c3  PCI-6511 +	70c4  PXI-7330 +	70c5  PXI-7340 +	70c6  PCI-7330 +	70c7  PCI-7340 +	70c8  PCI-6513 +	70c9  PXI-6515 +	70ca  PCI-1405 +	70cc  PCI-6512 +	70cd  PXI-6514 +	70ce  PXI-1405 +	70cf  PCIe-GPIB +	70d0  PXI-2570 +	70d1  PXI-6513 +	70d2  PXI-6512 +	70d3  PXI-6511 +	70d4  PCI-6722 +	70d6  PXI-4072 +	70d7  PXI-6541 +	70d8  PXI-6542 +	70d9  PCI-6541 +	70da  PCI-6542 +	70db  PCI-8430/2 (RS-232) Interface +	70dc  PCI-8431/2 (RS-485) Interface +	70dd  PXI-8430/4 (RS-232) Interface +	70de  PXI-8431/4 (RS-485) Interface +	70df  PCI-8430/4 (RS-232) Interface +	70e0  PCI-8431/4 (RS-485) Interface +	70e1  PXI-2532 +	70e2  PXI-8430/8 (RS-232) Interface +	70e3  PXI-8431/8 (RS-485) Interface +	70e4  PCI-8430/8 (RS-232) Interface +	70e5  PCI-8431/8 (RS-485) Interface +	70e6  PXI-8430/16 (RS-232) Interface +	70e7  PCI-8430/16 (RS-232) Interface +	70e8  PXI-8432/2 (Isolated RS-232) Interface +	70e9  PXI-8433/2 (Isolated RS-485) Interface +	70ea  PCI-8432/2 (Isolated RS-232) Interface +	70eb  PCI-8433/2 (Isolated RS-485) Interface +	70ec  PXI-8432/4 (Isolated RS-232) Interface +	70ed  PXI-8433/4 (Isolated RS-485) Interface +	70ee  PCI-8432/4 (Isolated RS-232) Interface +	70ef  PCI-8433/4 (Isolated RS-485) Interface +	70f0  PXI-5922 +	70f1  PCI-5922 +	70f2  PCI-6224 +	70f3  PXI-6224 +	70f6  cRIO-9101 +	70f7  cRIO-9103 +	70f8  cRIO-9104 +	70ff  PXI-6723 +	7100  PXI-6722 +	7104  PCIx-1429 +	7105  PCIe-1429 +	710a  PXI-4071 +	710d  PXI-6143 +	710e  PCIe-GPIB +	710f  PXI-5422 +	7110  PCI-5422 +	7111  PXI-5441 +	7119  PXI-6561 +	711a  PXI-6562 +	711b  PCI-6561 +	711c  PCI-6562 +	7120  PCI-7390 +	7121  PXI-5122EX +	7122  PCI-5122EX +	7123  PXIe-5653 +	7124  PCI-6510 +	7125  PCI-6516 +	7126  PCI-6517 +	7127  PCI-6518 +	7128  PCI-6519 +	7137  PXI-2575 +	713c  PXI-2585 +	713d  PXI-2586 +	7142  PXI-4224 +	7144  PXI-5124 +	7145  PCI-5124 +	7146  PCI-6132 +	7147  PXI-6132 +	7148  PCI-6122 +	7149  PXI-6122 +	714c  PXI-5114 +	714d  PCI-5114 +	7150  PXI-2564 +	7152  PCI-5640R +	7156  PXI-1044 Trigger Routing Module +	715d  PCI-1426 +	7167  PXI-5412 +	7168  PCI-5412 +	716b  PCI-6230 +	716c  PCI-6225 +	716d  PXI-6225 +	716f  PCI-4461 +	7170  PCI-4462 +	7171  PCI-6010 +	7174  PXI-8360 +	7177  PXI-6230 +	717d  PCIe-6251 +	717f  PCIe-6259 +	7187  PCI-1410 +	718b  PCI-6521 +	718c  PXI-6521 +	7191  PCI-6154 +	7193  PXI-7813R +	7194  PCI-7813R +	7195  PCI-8254R +	7197  PXI-5402 +	7198  PCI-5402 +	719f  PCIe-6535 +	71a0  PCIe-6536 +	71a3  PXI-5650 +	71a4  PXI-5652 +	71a5  PXI-2594 +	71a7  PXI-2595 +	71a9  PXI-2596 +	71aa  PXI-2597 +	71ab  PXI-2598 +	71ac  PXI-2599 +	71ad  PCI-GPIB+ +	71ae  PCIe-1430 +	71b7  PXI-1056 Trigger Routing Module +	71b8  PXI-1045 Trigger Routing Module +	71b9  PXI-1044 Trigger Routing Module +	71bb  PXI-2584 +	71bc  PCI-6221 (37-pin) +	71bf  PCIe-1427 +	71c5  PCI-6520 +	71c6  PXI-2576 +	71c7  cRIO-9072 +	71dc  PCI-1588 +	71e0  PCI-6255 +	71e1  PXI-6255 +	71e2  PXI-5406 +	71e3  PCI-5406 +	71fc  PXI-4022 +	7209  PCI-6233 +	720a  PXI-6233 +	720b  PCI-6238 +	720c  PXI-6238 +	7260  PXI-5142 +	7261  PCI-5142 +	726d  PXI-5651 +	7273  PXI-4461 +	7274  PXI-4462 +	7279  PCI-6232 +	727a  PXI-6232 +	727b  PCI-6239 +	727c  PXI-6239 +	727e  SMBus Controller +		1093 75ac  PXIe-8388 +		1093 75ad  PXIe-8389 +		1093 7650  PXIe-8381 +		1093 8360  PXIe-8360 +		1093 8370  PXIe-8370 +		1093 8375  PXIe-8375 +	7281  PCI-6236 +	7282  PXI-6236 +	7283  PXI-2554 +	7288  PXIe-5611 +	7293  PCIe-8255R +	729d  cRIO-9074 +	72a4  PCIe-4065 +	72a7  PCIe-6537 +	72a8  PXI-5152 +	72a9  PCI-5152 +	72aa  PXI-5105 +	72ab  PCI-5105 +	72b8  PXI-6682 +	72d0  PXI-2545 +	72d1  PXI-2546 +	72d2  PXI-2547 +	72d3  PXI-2548 +	72d4  PXI-2549 +	72d5  PXI-2555 +	72d6  PXI-2556 +	72d7  PXI-2557 +	72d8  PXI-2558 +	72d9  PXI-2559 +	72e8  PXIe-6251 +	72e9  PXIe-6259 +	72ef  PXI-4498 +	72f0  PXI-4496 +	72fb  PXIe-6672 +	730e  PXI-4130 +	730f  PXI-5922EX +	7310  PCI-5922EX +	731c  PXI-2535 +	731d  PXI-2536 +	7322  PXIe-6124 +	7327  PXI-6529 +	7331  PXIe-5602 +	7332  PXIe-5601 +	7333  PXI-5900 +	7335  PXI-2533 +	7336  PXI-2534 +	7342  PXI-4461 +	7349  PXI-5154 +	734a  PCI-5154 +	7357  PXI-4065 +	7359  PXI-4495 +	7370  PXI-4461 +	7373  sbRIO-9601 +	7374  IOtech-9601 +	7375  sbRIO-9602 +	7378  sbRIO-9641 +	737d  PXI-5124EX +	7384  PXI-7851R +	7385  PXI-7852R +	7386  PCIe-7851R +	7387  PCIe-7852R +	7390  PXI-7841R +	7391  PXI-7842R +	7392  PXI-7853R +	7393  PCIe-7841R +	7394  PCIe-7842R +	7397  sbRIO-9611 +	7398  sbRIO-9612 +	7399  sbRIO-9631 +	739a  sbRIO-9632 +	739b  sbRIO-9642 +	73a1  PXIe-4498 +	73a2  PXIe-4496 +	73a5  PXIe-5641R +	73a7  PXI-8250 Chassis Monitor Module +	73a8  PXI-8511 CAN/LS +	73a9  PXI-8511 CAN/LS +	73aa  PXI-8512 CAN/HS +	73ab  PXI-8512 CAN/HS +	73ac  PXI-8513 CAN/XS +	73ad  PXI-8513 CAN/XS +	73af  PXI-8516 LIN +	73b1  PXI-8517 FlexRay +	73b2  PXI-8531 CANopen +	73b3  PXI-8531 CANopen +	73b4  PXI-8532 DeviceNet +	73b5  PXI-8532 DeviceNet +	73b6  PCI-8511 CAN/LS +	73b7  PCI-8511 CAN/LS +	73b8  PCI-8512 CAN/HS +	73b9  PCI-8512 CAN/HS +	73ba  PCI-8513 CAN/XS +	73bb  PCI-8513 CAN/XS +	73bd  PCI-8516 LIN +	73bf  PCI-8517 FlexRay +	73c0  PCI-8531 CANopen +	73c1  PCI-8531 CANopen +	73c2  PCI-8532 DeviceNet +	73c3  PCI-8532 DeviceNet +	73c5  PXIe-2527 +	73c6  PXIe-2529 +	73c8  PXIe-2530 +	73c9  PXIe-2532 +	73ca  PXIe-2569 +	73cb  PXIe-2575 +	73cc  PXIe-2593 +	73d5  PXI-7951R +	73d6  PXI-7952R +	73d7  PXI-7953R +	73e1  PXI-7854R +	73ec  PXI-7954R +	73ed  cRIO-9073 +	73f0  PXI-5153 +	73f1  PCI-5153 +	73f4  PXI-2515 +	73f6  cRIO-9111 +	73f7  cRIO-9112 +	73f8  cRIO-9113 +	73f9  cRIO-9114 +	73fa  cRIO-9116 +	73fb  cRIO-9118 +	7404  PXI-4132 +	7405  PXIe-6674T +	7406  PXIe-6674 +	740e  PCIe-8430/16 (RS-232) Interface +	740f  PCIe-8430/8 (RS-232) Interface +	7410  PCIe-8431/16 (RS-485) Interface +	7411  PCIe-8431/8 (RS-485) Interface +	7414  PCIe-GPIB+ +	741c  PXI-5691 +	741d  PXI-5695 +	743c  CSC-3059 +	7448  PXI-2510 +	7454  PXI-2512 +	7455  PXI-2514 +	7456  PXIe-2512 +	7457  PXIe-2514 +	745a  PXI-6682H +	745e  PXI-5153EX +	745f  PCI-5153EX +	7460  PXI-5154EX +	7461  PCI-5154EX +	746d  PXIe-5650 +	746e  PXIe-5651 +	746f  PXIe-5652 +	7472  PXI-2800 +	7495  PXIe-5603 +	7497  PXIe-5605 +	74ae  PXIe-2515 +	74b4  PXI-2531 +	74b5  PXIe-2531 +	74c1  PXIe-8430/16 (RS-232) Interface +	74c2  PXIe-8430/8 (RS-232) Interface +	74c3  PXIe-8431/16 (RS-485) Interface +	74c4  PXIe-8431/8 (RS-485) Interface +	74d5  PXIe-5630 +	74d9  PCIe-8432/2 (Isolated RS-232) Interface +	74da  PCIe-8433/2 (Isolated RS-485) Interface +	74db  PCIe-8432/4 (Isolated RS-232) Interface +	74dc  PCIe-8433/4 (Isolated RS-485) Interface +	74e8  NI 9148 +	7515  PCIe-8430/2 (RS-232) Interface +	7516  PCIe-8430/4 (RS-232) Interface +	7517  PCIe-8431/2 (RS-485) Interface +	7518  PCIe-8431/4 (RS-485) Interface +	751b  cRIO-9081 +	751c  cRIO-9082 +	7528  PXIe-4497 +	7529  PXIe-4499 +	752a  PXIe-4492 +	7539  NI 9157 +	753a  NI 9159 +	7598  PXI-2571 +	75a4  PXI-4131A +	75b1  PCIe-7854R +	75ba  PXI-2543 +	75bb  PXIe-2543 +	75e5  PXI-6683 +	75e6  PXI-6683H +	75ef  PXIe-5632 +	761f  PXI-2540 +	7620  PXIe-2540 +	7621  PXI-2541 +	7622  PXIe-2541 +	7626  NI 9154 +	7627  NI 9155 +	7638  PXI-2720 +	7639  PXI-2722 +	763a  PXIe-2725 +	763b  PXIe-2727 +	763c  PXI-4465 +	764b  PXIe-2790 +	764c  PXI-2520 +	764d  PXI-2521 +	764e  PXI-2522 +	764f  PXI-2523 +	7654  PXI-2796 +	7655  PXI-2797 +	7656  PXI-2798 +	7657  PXI-2799 +	765d  PXI-2542 +	765e  PXIe-2542 +	765f  PXI-2544 +	7660  PXIe-2544 +	766d  PCIe-6535B +	766e  PCIe-6536B +	766f  PCIe-6537B +	76a3  PXIe-6535B +	76a4  PXIe-6536B +	76a5  PXIe-6537B +	9020  PXI-2501 +	9030  PXI-2503 +	9040  PXI-2527 +	9050  PXI-2565 +	9060  PXI-2590 +	9070  PXI-2591 +	9080  PXI-2580 +	9090  PCI-4021 +	90a0  PXI-4021 +	b001  PCI-1408 +	b011  PXI-1408 +	b021  PCI-1424 +	b022  PXI-1424 +	b031  PCI-1413 +	b041  PCI-1407 +	b051  PXI-1407 +	b061  PCI-1411 +	b071  PCI-1422 +	b081  PXI-1422 +	b091  PXI-1411 +	b0b1  PCI-1409 +	b0c1  PXI-1409 +	b0e1  PCI-1428 +	c4c4  PXIe/PCIe Device +		1093 728a  PXIe-5421 +		1093 728b  PXIe-5442 +		1093 728d  PXIe-5451 +		1093 72a2  PXIe-5122 +		1093 72da  PXIe-5422 +		1093 72f7  PXIe-6535 +		1093 72f8  PXIe-6536 +		1093 72f9  PXIe-6537 +		1093 7326  PCIe-6509 +		1093 736c  PXIe-4140 +		1093 738b  PXIe-5622 +		1093 73c4  PXIe-5450 +		1093 73c7  PXIe-6545 +		1093 73d4  PXIe-6544 +		1093 7425  PCIe-6320 +		1093 7427  PCIe-6321 +		1093 7428  PXIe-6323 +		1093 7429  PCIe-6323 +		1093 742a  PXIe-6341 +		1093 742b  PCIe-6341 +		1093 742c  PXIe-6343 +		1093 742d  PCIe-6343 +		1093 742f  PCIe-6351 +		1093 7431  PCIe-6353 +		1093 7432  PXIe-6361 +		1093 7433  PCIe-6361 +		1093 7434  PXIe-6363 +		1093 7435  PCIe-6363 +		1093 7436  PXIe-6356 +		1093 7437  PXIe-6358 +		1093 7438  PXIe-6366 +		1093 7439  PXIe-6368 +		1093 7468  PXIe-5185 +		1093 7469  PXIe-5186 +		1093 7492  PXIe-4300 +		1093 7498  PXIe-6548 +		1093 7499  PXIe-6547 +		1093 74a8  PXIe-4330 +		1093 74a9  PXIe-4331 +		1093 74b1  PXIe-4154 +		1093 74b2  PXIe-4353 +		1093 74b6  PCIe-1433 +		1093 74cd  PXIe-5643R +		1093 74d0  PXIe-7961R +		1093 74dd  PXIe-6376 +		1093 74de  PXIe-6378 +		1093 74e2  PXIe-7962R +		1093 74e3  PXIe-7965R +		1093 74e5  PXIe-4844 +		1093 74f3  PCIe-5140 +		1093 753c  PXIe-1435 +		1093 7548  PXIe-5622 (25MHz DDC) +		1093 754d  PCIe-5155 +		1093 7551  PXIe-6556 +		1093 7553  PCIe-1473R +		1093 7570  PCIe-1474R +		1093 7571  PXIe-1475R +		1093 7572  PXIe-1476R +		1093 75a2  PXIe-5693 +		1093 75a3  PXIe-5694 +		1093 75a5  PXIe-4141 +		1093 75ce  PXIe-7966R +		1093 75cf  PXIe-4357 +		1093 75d2  PXIe-RevB-5643R +		1093 75d3  PXIe-5644R +		1093 75ee  PXIe-5645R +		1093 7613  PXIe-6555 +		1093 7619  PXIe-5185 +		1093 761a  PXIe-5186 +		1093 7629  PXIe-4142 +		1093 762a  PXIe-4143 +		1093 762b  PXIe-4138 +		1093 762c  PXIe-4144 +		1093 762d  PXIe-4145 +		1093 7644  PXIe-4841 +		1093 7658  PXIe-5162 (4CH) +		1093 76ab  PXIe-4322 +		1093 76ad  PXIe-4112 +		1093 76ae  PXIe-4113 +		1093 76b5  PXIe-7971R +		1093 76b6  PXIe-7972R +		1093 76b7  PXIe-7975R +		1093 76c8  PXIe-6614 +		1093 76c9  PXIe-6612 +		1093 76cb  PXIe-5646R +		1093 76cc  PXIe-5162 (2CH) +		1093 76d0  PXIe-5160 (2CH) +		1093 76d1  PXIe-5160 (4CH) +		1093 76dc  PXIe-4610 +		1093 76fb  PCIe-1473R-LX110 +		1093 76fe  PXIe-5644R +		1093 76ff  PXIe-5644R +		1093 7700  PXIe-5644R +		1093 7701  PXIe-5645R +		1093 7702  PXIe-5645R +		1093 7703  PXIe-5645R +		1093 770c  PXIe-4139 +		1093 7711  PXIe-4464 +		1093 7716  PCIe-6612 +		1093 771e  PXIe-4339 +		1093 7735  cRIO-9033 +		1093 774b  cRIO-9031 +		1093 774d  cRIO-9034 +		1093 7755  cRIO-9030 +		1093 7777  PXIe-7976R +		1093 7782  PXIe-5646R +		1093 7783  PXIe-5646R +		1093 7784  PXIe-5646R +		1093 77a5  PXIe-6345 +		1093 77a6  PXIe-6355 +		1093 77a7  PXIe-6365 +		1093 77a8  PXIe-6375 +		1093 77b4  PXIe-7820R +		1093 77b5  PXIe-7821R +		1093 77b6  PXIe-7822R +		1093 77b9  cRIO-9038 +	c801  PCI-GPIB +	c811  PCI-GPIB+ +	c821  PXI-GPIB +	c831  PMC-GPIB +	c840  PCI-GPIB +	d130  PCI-232/2 Interface +	d140  PCI-232/4 Interface +	d150  PCI-232/8 Interface +	d160  PCI-485/2 Interface +	d170  PCI-485/4 Interface +	d190  PXI-8422/2 (Isolated RS-232) Interface +	d1a0  PXI-8422/4 (Isolated RS-232) Interface +	d1b0  PXI-8423/2 (Isolated RS-485) Interface +	d1c0  PXI-8423/4 (Isolated RS-485) Interface +	d1d0  PXI-8420/2 (RS-232) Interface +	d1e0  PXI-8420/4 (RS-232) Interface +	d1f0  PXI-8420/8 (RS-232) Interface +	d1f1  PXI-8420/16 (RS-232) Interface +	d230  PXI-8421/2 (RS-485) Interface +	d240  PXI-8421/4 (RS-485) Interface +	d250  PCI-232/2 (Isolated) Interface +	d260  PCI-485/2 (Isolated) Interface +	d270  PCI-232/4 (Isolated) Interface +	d280  PCI-485/4 (Isolated) Interface +	d290  PCI-485/8 Interface +	d2a0  PXI-8421/8 (RS-485) Interface +	d2b0  PCI-232/16 Interface +	e111  PCI-CAN +	e131  PXI-8461 (1 port) +	e141  PCI-CAN/LS +	e151  PXI-8460 (1 port) +	e211  PCI-CAN/2 +	e231  PXI-8461 (2 ports) +	e241  PCI-CAN/LS2 +	e251  PXI-8460 (2 ports) +	e261  PCI-CAN/DS +	e271  PXI-8462 +1094  First International Computers [FIC] +# nee CMD Technology Inc +1095  Silicon Image, Inc. +	0240  Adaptec AAR-1210SA SATA HostRAID Controller +	0640  PCI0640 +	0643  PCI0643 +	0646  PCI0646 +	0647  PCI0647 +	0648  PCI0648 +		1043 8025  CUBX motherboard +	0649  SiI 0649 Ultra ATA/100 PCI to ATA Host Controller +		0e11 005d  Integrated Ultra ATA-100 Dual Channel Controller +		0e11 007e  Integrated Ultra ATA-100 IDE RAID Controller +		101e 0649  AMI MegaRAID IDE 100 Controller +	0650  PBC0650A +	0670  USB0670 +		1095 0670  USB0670 +	0673  USB0673 +	0680  PCI0680 Ultra ATA-133 Host Controller +		1095 0680  SiI 0680 ATA/133 Controller +		1095 3680  Winic W-680 (Silicon Image 680 based) +	3112  SiI 3112 [SATALink/SATARaid] Serial ATA Controller +		1095 3112  SiI 3112 SATALink Controller +		1095 6112  SiI 3112 SATARaid Controller +		9005 0250  SATAConnect 1205SA Host Controller +	3114  SiI 3114 [SATALink/SATARaid] Serial ATA Controller +		1043 8167  A8N-SLI Deluxe/Premium Mainboard +		1095 3114  SiI 3114 SATALink Controller +		1095 6114  SiI 3114 SATARaid Controller +	3124  SiI 3124 PCI-X Serial ATA Controller +		1095 3124  SiI 3124 PCI-X Serial ATA Controller +	3132  SiI 3132 Serial ATA Raid II Controller +	3512  SiI 3512 [SATALink/SATARaid] Serial ATA Controller +		1095 3512  SiI 3512 SATALink Controller +		1095 6512  SiI 3512 SATARaid Controller +	3531  SiI 3531 [SATALink/SATARaid] Serial ATA Controller +		17c0 4083  Medion WIM 2210 Notebook PC [MD96850] +1096  Alacron +1097  Appian Technology +1098  Quantum Designs (H.K.) Ltd +	0001  QD-8500 +	0002  QD-8580 +1099  Samsung Electronics Co., Ltd +109a  Packard Bell +109b  Gemlight Computer Ltd. +109c  Megachips Corporation +109d  Zida Technologies Ltd. +109e  Brooktree Corporation +	0310  Bt848 Video Capture +	032e  Bt878 Video Capture +	0350  Bt848 Video Capture +	0351  Bt849A Video capture +	0369  Bt878 Video Capture +		1002 0001  TV-Wonder +		1002 0003  TV-Wonder/VE +	036c  Bt879(??) Video Capture +		13e9 0070  Win/TV (Video Section) +	036e  Bt878 Video Capture +		0070 13eb  WinTV Series +		0070 ff01  Viewcast Osprey 200 +		0071 0101  DigiTV PCI +		107d 6606  WinFast TV 2000 +		11bd 0012  PCTV pro (TV + FM stereo receiver) +		11bd 001c  PCTV Sat (DBC receiver) +		127a 0001  Bt878 Mediastream Controller NTSC +		127a 0002  Bt878 Mediastream Controller PAL BG +		127a 0003  Bt878a Mediastream Controller PAL BG +		127a 0048  Bt878/832 Mediastream Controller +		144f 3000  MagicTView CPH060 - Video +		1461 0002  TV98 Series (TV/No FM/Remote) +		1461 0003  AverMedia UltraTV PCI 350 +		1461 0004  AVerTV WDM Video Capture +		1461 0761  AverTV DVB-T +		1461 0771  AverMedia AVerTV DVB-T 771 +		14f1 0001  Bt878 Mediastream Controller NTSC +		14f1 0002  Bt878 Mediastream Controller PAL BG +		14f1 0003  Bt878a Mediastream Controller PAL BG +		14f1 0048  Bt878/832 Mediastream Controller +		1822 0001  VisionPlus DVB card +		1851 1850  FlyVideo'98 - Video +		1851 1851  FlyVideo II +		1852 1852  FlyVideo'98 - Video (with FM Tuner) +		18ac d500  DViCO FusionHDTV5 Lite +		270f fc00  Digitop DTT-1000 +# Vendor/ID appear to be randomly chosen +		aa00 1460  Spectra8 CardA Input0 +# Vendor/ID appear to be randomly chosen +		aa01 1461  Spectra8 CardA Input1 +# Vendor/ID appear to be randomly chosen +		aa02 1462  Spectra8 CardA Input2 +# Vendor/ID appear to be randomly chosen +		aa03 1463  Spectra8 CardA Input3 +# Vendor/ID appear to be randomly chosen +		aa04 1464  Spectra8 CardB Input0 +# Vendor/ID appear to be randomly chosen +		aa05 1465  Spectra8 CardB Input1 +# Vendor/ID appear to be randomly chosen +		aa06 1466  Spectra8 CardB Input2 +# Vendor/ID appear to be randomly chosen +		aa07 1467  Spectra8 CardB Input3 +# Vendor/ID appear to be randomly chosen +		aa08 1468  Spectra8 CardC Input0 +# Vendor/ID appear to be randomly chosen +		aa09 1469  Spectra8 CardC Input1 +# Vendor/ID appear to be randomly chosen +		aa0a 146a  Spectra8 CardC Input2 +# Vendor/ID appear to be randomly chosen +		aa0b 146b  Spectra8 CardC Input3 +# Vendor/ID appear to be randomly chosen +		aa0c 146c  Spectra8 CardD Input0 +# Vendor/ID appear to be randomly chosen +		aa0d 146d  Spectra8 CardD Input1 +# Vendor/ID appear to be randomly chosen +		aa0e 146e  Spectra8 CardD Input2 +# Vendor/ID appear to be randomly chosen +		aa0f 146f  Spectra8 CardD Input3 +		bd11 1200  PCTV pro (TV + FM stereo receiver) +	036f  Bt879 Video Capture +		127a 0044  Bt879 Video Capture NTSC +		127a 0122  Bt879 Video Capture PAL I +		127a 0144  Bt879 Video Capture NTSC +		127a 0222  Bt879 Video Capture PAL BG +		127a 0244  Bt879a Video Capture NTSC +		127a 0322  Bt879 Video Capture NTSC +		127a 0422  Bt879 Video Capture NTSC +		127a 1122  Bt879 Video Capture PAL I +		127a 1222  Bt879 Video Capture PAL BG +		127a 1322  Bt879 Video Capture NTSC +		127a 1522  Bt879a Video Capture PAL I +		127a 1622  Bt879a Video Capture PAL BG +		127a 1722  Bt879a Video Capture NTSC +		14f1 0044  Bt879 Video Capture NTSC +		14f1 0122  Bt879 Video Capture PAL I +		14f1 0144  Bt879 Video Capture NTSC +		14f1 0222  Bt879 Video Capture PAL BG +		14f1 0244  Bt879a Video Capture NTSC +		14f1 0322  Bt879 Video Capture NTSC +		14f1 0422  Bt879 Video Capture NTSC +		14f1 1122  Bt879 Video Capture PAL I +		14f1 1222  Bt879 Video Capture PAL BG +		14f1 1322  Bt879 Video Capture NTSC +		14f1 1522  Bt879a Video Capture PAL I +		14f1 1622  Bt879a Video Capture PAL BG +		14f1 1722  Bt879a Video Capture NTSC +		1851 1850  FlyVideo'98 - Video +		1851 1851  FlyVideo II +		1852 1852  FlyVideo'98 - Video (with FM Tuner) +	0370  Bt880 Video Capture +		1851 1850  FlyVideo'98 +		1851 1851  FlyVideo'98 EZ - video +		1852 1852  FlyVideo'98 (with FM Tuner) +	0878  Bt878 Audio Capture +		0070 13eb  WinTV Series +		0070 ff01  Viewcast Osprey 200 +		0071 0101  DigiTV PCI +		1002 0001  TV-Wonder +		1002 0003  TV-Wonder/VE +		11bd 0012  PCTV pro (TV + FM stereo receiver, audio section) +		11bd 001c  PCTV Sat (DBC receiver) +		127a 0001  Bt878 Video Capture (Audio Section) +		127a 0002  Bt878 Video Capture (Audio Section) +		127a 0003  Bt878 Video Capture (Audio Section) +		127a 0048  Bt878 Video Capture (Audio Section) +		13e9 0070  Win/TV (Audio Section) +		144f 3000  MagicTView CPH060 - Audio +		1461 0002  Avermedia PCTV98 Audio Capture +		1461 0003  UltraTV PCI 350 +		1461 0004  AVerTV WDM Audio Capture +		1461 0761  AVerTV DVB-T +		1461 0771  AverMedia AVerTV DVB-T 771 +		14f1 0001  Bt878 Video Capture (Audio Section) +		14f1 0002  Bt878 Video Capture (Audio Section) +		14f1 0003  Bt878 Video Capture (Audio Section) +		14f1 0048  Bt878 Video Capture (Audio Section) +		1822 0001  VisionPlus DVB Card +		18ac d500  DViCO FusionHDTV5 Lite +		270f fc00  Digitop DTT-1000 +		bd11 1200  PCTV pro (TV + FM stereo receiver, audio section) +	0879  Bt879 Audio Capture +		127a 0044  Bt879 Video Capture (Audio Section) +		127a 0122  Bt879 Video Capture (Audio Section) +		127a 0144  Bt879 Video Capture (Audio Section) +		127a 0222  Bt879 Video Capture (Audio Section) +		127a 0244  Bt879 Video Capture (Audio Section) +		127a 0322  Bt879 Video Capture (Audio Section) +		127a 0422  Bt879 Video Capture (Audio Section) +		127a 1122  Bt879 Video Capture (Audio Section) +		127a 1222  Bt879 Video Capture (Audio Section) +		127a 1322  Bt879 Video Capture (Audio Section) +		127a 1522  Bt879 Video Capture (Audio Section) +		127a 1622  Bt879 Video Capture (Audio Section) +		127a 1722  Bt879 Video Capture (Audio Section) +		14f1 0044  Bt879 Video Capture (Audio Section) +		14f1 0122  Bt879 Video Capture (Audio Section) +		14f1 0144  Bt879 Video Capture (Audio Section) +		14f1 0222  Bt879 Video Capture (Audio Section) +		14f1 0244  Bt879 Video Capture (Audio Section) +		14f1 0322  Bt879 Video Capture (Audio Section) +		14f1 0422  Bt879 Video Capture (Audio Section) +		14f1 1122  Bt879 Video Capture (Audio Section) +		14f1 1222  Bt879 Video Capture (Audio Section) +		14f1 1322  Bt879 Video Capture (Audio Section) +		14f1 1522  Bt879 Video Capture (Audio Section) +		14f1 1622  Bt879 Video Capture (Audio Section) +		14f1 1722  Bt879 Video Capture (Audio Section) +	0880  Bt880 Audio Capture +	2115  BtV 2115 Mediastream controller +	2125  BtV 2125 Mediastream controller +	2164  BtV 2164 +	2165  BtV 2165 +	8230  Bt8230 ATM Segment/Reassembly Ctrlr (SRC) +	8472  Bt8472 +	8474  Bt8474 +109f  Trigem Computer Inc. +10a0  Meidensha Corporation +10a1  Juko Electronics Ind. Co. Ltd +10a2  Quantum Corporation +10a3  Everex Systems Inc +10a4  Globe Manufacturing Sales +10a5  Smart Link Ltd. +	3052  SmartPCI562 56K Modem +	5449  SmartPCI561 modem +10a6  Informtech Industrial Ltd. +10a7  Benchmarq Microelectronics +10a8  Sierra Semiconductor +	0000  STB Horizon 64 +10a9  Silicon Graphics Intl. Corp. +	0001  Crosstalk to PCI Bridge +	0002  Linc I/O controller +	0003  IOC3 I/O controller +	0004  O2 MACE +	0005  RAD Audio +	0006  HPCEX +	0007  RPCEX +	0008  DiVO VIP +	0009  AceNIC Gigabit Ethernet +		10a9 8002  AceNIC Gigabit Ethernet +	0010  AMP Video I/O +	0011  GRIP +	0012  SGH PSHAC GSN +	0208  SSIM1 SAS Adapter +	1001  Magic Carpet +	1002  Lithium +	1003  Dual JPEG 1 +	1004  Dual JPEG 2 +	1005  Dual JPEG 3 +	1006  Dual JPEG 4 +	1007  Dual JPEG 5 +	1008  Cesium +	100a  IOC4 I/O controller +	1504  SSIM1 Fibre Channel Adapter +	2001  Fibre Channel +	2002  ASDE +	4001  TIO-CE PCI Express Bridge +	4002  TIO-CE PCI Express Port +	8001  O2 1394 +	8002  G-net NT +# PCIe x1 Low Profile +	802b  REACT external interrupt controller +10aa  ACC Microelectronics +	0000  ACCM 2188 +	2051  2051 CPU bridge +	5842  2051 ISA bridge +10ab  Digicom +10ac  Honeywell IAC +10ad  Symphony Labs +	0001  W83769F +	0003  SL82C103 +	0005  SL82C105 +	0103  SL82c103 +	0105  SL82c105 +	0565  W83C553F/W83C554F +10ae  Cornerstone Technology +10af  Micro Computer Systems Inc +10b0  CardExpert Technology +10b1  Cabletron Systems Inc +10b2  Raytheon Company +10b3  Databook Inc +	3106  DB87144 +	b106  DB87144 +10b4  STB Systems Inc +	1b1d  Velocity 128 3D +		10b4 237e  Velocity 4400 +10b5  PLX Technology, Inc. +	0001  i960 PCI bus interface +	0557  PCI9030 32-bit 33MHz PCI <-> IOBus Bridge +		10b5 9030  Digium Tormenta 2 T400P-SS7 or E400P-SS7 Quad T1 or E1 PCI card +	1000  PCI9030 32-bit 33MHz PCI <-> IOBus Bridge +		10b5 9030  ATCOM AT400P Quad T1 PCI card +	1024  Acromag, Inc. IndustryPack Carrier Card +	1042  Brandywine / jxi2, Inc. - PMC-SyncClock32, IRIG A & B, Nasa 36 +	106a  Dual OX16C952 4 port serial adapter [Megawolf Romulus/4] +	1076  VScom 800 8 port serial adaptor +	1077  VScom 400 4 port serial adaptor +	1078  VScom 210 2 port serial and 1 port parallel adaptor +	1103  VScom 200 2 port serial adaptor +	1146  VScom 010 1 port parallel adaptor +	1147  VScom 020 2 port parallel adaptor +	2000  PCI9030 32-bit 33MHz PCI <-> IOBus Bridge +		10b5 9030  ATCOM AE400P Quad E1 PCI card +	2540  IXXAT CAN-Interface PC-I 04/PCI +	2724  Thales PCSM Security Card +	3376  Cosateq 4 Port CAN Card +	4000  PCI9030 32-bit 33MHz PCI <-> IOBus Bridge +		10b5 9030  Tormenta 3 Varion V400P/ATCOM TE400P Quad E1/T1/J1 PCI card +	4001  PCI9030 32-bit 33MHz PCI <-> IOBus Bridge +		10b5 9030  ATCOM A400PE Quad E1 PCI card +	4002  PCI9030 32-bit 33MHz PCI <-> IOBus Bridge +		10b5 9030  ATCOM A400PT Quad T1 PCI card +	6140  PCI6140 32-bit 33MHz PCI-to-PCI Bridge +	6150  PCI6150 32-bit 33MHz PCI-to-PCI Bridge +	6152  PCI6152 32-bit 66MHz PCI-to-PCI Bridge +	6154  PCI6154 64-bit 66MHz PCI-to-PCI Bridge +	6254  PCI6254 64-bit 66MHz PCI-to-PCI Bridge +	6466  PCI6466 64-bit 66MHz PCI-to-PCI Bridge +	6520  PCI6520 64-bit 133MHz PCI-X-to-PCI-X Bridge +	6540  PCI6540 64-bit 133MHz PCI-X-to-PCI-X Bridge +		1775 1100  CR11 Single Board Computer +		4c53 10e0  PSL09 PrPMC +	6541  PCI6540/6466 PCI-PCI bridge (non-transparent mode, primary side) +		1775 1100  CR11 Single Board Computer +		4c53 10e0  PSL09 PrPMC +	6542  PCI6540/6466 PCI-PCI bridge (non-transparent mode, secondary side) +		1775 1100  CR11 Single Board Computer +		4c53 10e0  PSL09 PrPMC +	8111  PEX 8111 PCI Express-to-PCI Bridge +	8112  PEX8112 x1 Lane PCI Express-to-PCI Bridge +	8114  PEX 8114 PCI Express-to-PCI/PCI-X Bridge +	8311  PEX8311 x1 Lane PCI Express-to-Generic Local Bus Bridge +	8505  PEX 8505 5-lane, 5-port PCI Express Switch +	8508  PEX 8508 8-lane, 5-port PCI Express Switch +	8509  PEX 8509 8-lane, 8-port PCI Express Switch +	8512  PEX 8512 12-lane, 5-port PCI Express Switch +	8516  PEX 8516  Versatile PCI Express Switch +	8517  PEX 8517 16-lane, 5-port PCI Express Switch +	8518  PEX 8518 16-lane, 5-port PCI Express Switch +	8524  PEX 8524 24-lane, 6-port PCI Express Switch +	8525  PEX 8525 24-lane, 5-port PCI Express Switch +	8532  PEX 8532  Versatile PCI Express Switch +	8533  PEX 8533 32-lane, 6-port PCI Express Switch +	8547  PEX 8547 48-lane, 3-port PCI Express Switch +	8548  PEX 8548 48-lane, 9-port PCI Express Switch +	8604  PEX 8604 4-lane, 4-Port PCI Express Gen 2 (5.0 GT/s) Switch +	8605  PEX 8605 PCI Express 4-port Gen2 Switch +	8606  PEX 8606 6 Lane, 6 Port PCI Express Gen 2 (5.0 GT/s) Switch +	8608  PEX 8608 8-lane, 8-Port PCI Express Gen 2 (5.0 GT/s) Switch +	8609  PEX 8609 8-lane, 8-Port PCI Express Gen 2 (5.0 GT/s) Switch with DMA +	8612  PEX 8612 12-lane, 4-Port PCI Express Gen 2 (5.0 GT/s) Switch +	8613  PEX 8613 12-lane, 3-Port PCI Express Gen 2 (5.0 GT/s) Switch +	8614  PEX 8614 12-lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch +	8615  PEX 8615 12-lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch with DMA +	8616  PEX 8616 16-lane, 4-Port PCI Express Gen 2 (5.0 GT/s) Switch +	8617  PEX 8617 16-lane, 4-Port PCI Express Gen 2 (5.0 GT/s) Switch with P2P +	8618  PEX 8618 16-lane, 16-Port PCI Express Gen 2 (5.0 GT/s) Switch +	8619  PEX 8619 16-lane, 16-Port PCI Express Gen 2 (5.0 GT/s) Switch with DMA +	8624  PEX 8624 24-lane, 6-Port PCI Express Gen 2 (5.0 GT/s) Switch [ExpressLane] +		13a3 1845  DX1845 Acceleration Card +	8625  PEX 8625 24-lane, 24-Port PCI Express Gen 2 (5.0 GT/s) Switch +	8632  PEX 8632 32-lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch +	8636  PEX 8636 36-lane, 24-Port PCI Express Gen 2 (5.0 GT/s) Switch +	8647  PEX 8647 48-Lane, 3-Port PCI Express Gen 2 (5.0 GT/s) Switch +	8648  PEX 8648 48-lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch +	8649  PEX 8649 48-lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch +	8664  PEX 8664 64-lane, 16-Port PCI Express Gen 2 (5.0 GT/s) Switch +	8680  PEX 8680 80-lane, 20-Port PCI Express Gen 2 (5.0 GT/s) Multi-Root Switch +	8696  PEX 8696 96-lane, 24-Port PCI Express Gen 2 (5.0 GT/s) Multi-Root Switch +	8717  PEX 8717 16-lane, 8-Port PCI Express Gen 3 (8.0 GT/s) Switch with DMA +	8718  PEX 8718 16-Lane, 5-Port PCI Express Gen 3 (8.0 GT/s) Switch +	8732  PEX 8732 32-lane, 8-Port PCI Express Gen 3 (8.0 GT/s) Switch +	8734  PEX 8734 32-lane, 8-Port PCI Express Gen 3 (8.0GT/s) Switch +	8747  PEX 8747 48-Lane, 5-Port PCI Express Gen 3 (8.0 GT/s) Switch +# This is the Non-Transparent-Bridge Virtualized Port as presented by the PLX PEX 8732 chip, the physical bridges show up at 10b5:8732 +	87b0  PEX 8732 32-lane, 8-Port PCI Express Gen 3 (8.0 GT/s) Switch +	9016  PLX 9016 8-port serial controller +	9030  PCI9030 32-bit 33MHz PCI <-> IOBus Bridge +		10b5 2695  Hilscher CIF50-PB/DPS Profibus +		10b5 2862  Alpermann+Velte PCL PCI LV (3V/5V): Timecode Reader Board +		10b5 2906  Alpermann+Velte PCI TS (3V/5V): Time Synchronisation Board +		10b5 2940  Alpermann+Velte PCL PCI D (3V/5V): Timecode Reader Board +		10b5 2977  IXXAT iPC-I XC16/PCI CAN Board +		10b5 2978  SH ARC-PCIu/SH ARC-PCI104/SH ARC-PCIe SOHARD ARCNET card +		10b5 3025  Alpermann+Velte PCL PCI L (3V/5V): Timecode Reader Board +		10b5 3068  Alpermann+Velte PCL PCI HD (3V/5V): Timecode Reader Board +		10b5 3463  Alpermann+Velte PCL PCI D (v2) (3V/5V): Timecode Reader Board +		12fe 0111  CPCI-ASIO4 (ESD 4-port Serial Interface Board) +		1369 9c01  VX222v2 +		1369 9d01  VX222-Mic +		1369 9d02  VX222-Mic +		1369 9e01  PCX924v2 +		1369 9f01  PCX924-Mic +		1369 9f02  PCX924-Mic +		1369 a001  PCX22v2 +		1369 a701  LCM220v2 +		1369 a801  LCM200 +		1397 3136  4xS0-ISDN PCI Adapter +		1397 3137  S2M-E1-ISDN PCI Adapter +		1518 0200  Kontron ThinkIO-C +		15ed 1002  MCCS 8-port Serial Hot Swap +		15ed 1003  MCCS 16-port Serial Hot Swap +# MIL-STD-1553B Board +		e1c5 0001  TE1-PCI +		e1c5 0005  TA1-PCI +		e1c5 0006  TA1-PCI4 +	9036  9036 +	9050  PCI <-> IOBus Bridge +		10b5 1067  IXXAT CAN i165 +		10b5 114e  Wasco WITIO PCI168extended +		10b5 1169  Wasco OPTOIO32standard 32 digital in, 32 digital out +		10b5 1172  IK220 (Heidenhain) +		10b5 2036  SatPak GPS +		10b5 2221  Alpermann+Velte PCL PCI LV: Timecode Reader Board +		10b5 2273  SH ARC-PCI SOHARD ARCNET card +		10b5 2431  Alpermann+Velte PCL PCI D: Timecode Reader Board +		10b5 2905  Alpermann+Velte PCI TS: Time Synchronisation Board +		10b5 3196  Goramo PLX200SYN sync serial card +		10b5 9050  PCI-I04 PCI Passive PC/CAN Interface +		1369 8901  PCX11+ PCI +		1369 8f01  VX222 +		1369 9401  PCX924 +		1369 9501  PCX22 +		1498 0362  TPMC866 8 Channel Serial Card +		1522 0001  RockForce 4 Port V.90 Data/Fax/Voice Modem +		1522 0002  RockForce 2 Port V.90 Data/Fax/Voice Modem +		1522 0003  RockForce 6 Port V.90 Data/Fax/Voice Modem +		1522 0004  RockForce 8 Port V.90 Data/Fax/Voice Modem +		1522 0010  RockForce2000 4 Port V.90 Data/Fax/Voice Modem +		1522 0020  RockForce2000 2 Port V.90 Data/Fax/Voice Modem +		15ed 1000  Macrolink MCCS 8-port Serial +		15ed 1001  Macrolink MCCS 16-port Serial +		15ed 1002  Macrolink MCCS 8-port Serial Hot Swap +		15ed 1003  Macrolink MCCS 16-port Serial Hot Swap +		5654 2036  OpenSwitch 6 Telephony card +		5654 3132  OpenSwitch 12 Telephony card +		5654 5634  OpenLine4 Telephony Card +		d531 c002  PCIntelliCAN 2xSJA1000 CAN bus +		d84d 4006  EX-4006 1P +		d84d 4008  EX-4008 1P EPP/ECP +		d84d 4014  EX-4014 2P +		d84d 4018  EX-4018 3P EPP/ECP +		d84d 4025  EX-4025 1S(16C550) RS-232 +		d84d 4027  EX-4027 1S(16C650) RS-232 +		d84d 4028  EX-4028 1S(16C850) RS-232 +		d84d 4036  EX-4036 2S(16C650) RS-232 +		d84d 4037  EX-4037 2S(16C650) RS-232 +		d84d 4038  EX-4038 2S(16C850) RS-232 +		d84d 4052  EX-4052 1S(16C550) RS-422/485 +		d84d 4053  EX-4053 2S(16C550) RS-422/485 +		d84d 4055  EX-4055 4S(16C550) RS-232 +		d84d 4058  EX-4055 4S(16C650) RS-232 +		d84d 4065  EX-4065 8S(16C550) RS-232 +		d84d 4068  EX-4068 8S(16C650) RS-232 +		d84d 4078  EX-4078 2S(16C552) RS-232+1P +	9052  PCI9052 PCI <-> IOBus Bridge +	9054  PCI9054 32-bit 33MHz PCI <-> IOBus Bridge +		10b5 2455  Wessex Techology PHIL-PCI +		10b5 2696  Innes Corp AM Radcap card +		10b5 2717  Innes Corp Auricon card +		10b5 2844  Innes Corp TVS Encoder card +		12c7 4001  Intel Dialogic DM/V960-4T1 PCI +		12d9 0002  PCI Prosody Card rev 1.5 +		14b4 d100  Dektec DTA-100 +		14b4 d114  Dektec DTA-120 +		16df 0011  PIKA PrimeNet MM PCI +		16df 0012  PIKA PrimeNet MM cPCI 8 +		16df 0013  PIKA PrimeNet MM cPCI 8 (without CAS Signaling) +		16df 0014  PIKA PrimeNet MM cPCI 4 +		16df 0015  PIKA Daytona MM +		16df 0016  PIKA InLine MM +	9056  PCI9056 32-bit 66MHz PCI <-> IOBus Bridge +		10b5 2979  CellinkBlade 11 - CPCI board VoATM AAL1 +		10b5 3268  IXXAT iPC-I XC16/PCIe CAN Board +		10b5 3352  Alpermann+Velte PCL PCIe HD: Timecode Reader Board +		10b5 3353  Alpermann+Velte PCL PCIe D: Timecode Reader Board +		10b5 3354  Alpermann+Velte PCL PCIe LV: Timecode Reader Board +		10b5 3355  Alpermann+Velte PCL PCIe L: Timecode Reader Board +		10b5 3415  Alpermann+Velte PCIe TS: Time Synchronisation Board +		10b5 3493  Alpermann+Velte PCL PCIe 3G: Timecode Reader Board +		1369 c001  LX6464ES +		1369 c201  LX1616ES +		14b4 d10a  DekTec DTA-110T +		14b4 d128  Dektec DTA-140 +		14b4 d140  Dektec DTA-140 +		1a0e 006f  Dektec DTA-111 +	9060  PCI9060 32-bit 33MHz PCI <-> IOBus Bridge +	906d  9060SD +		125c 0640  Aries 16000P +	906e  9060ES +	9080  PCI9080 32-bit; 33MHz PCI <-> IOBus Bridge +		103c 10eb  (Agilent) E2777B 83K Series Optical Communication Interface +		103c 10ec  (Agilent) E6978-66442 PCI CIC +		10b5 1123  Sectra KK631 encryption board +		10b5 9080  9080 [real subsystem ID not set] +		12d9 0002  PCI Prosody Card +		12df 4422  4422PCI ["Do-All" Telemetry Data Aquisition System] +		1369 9601  PCX822np +		1369 a102  PCX822v2 +		1369 a201  PCX442 +		1369 a301  LCM440v2 +		1369 a401  VX822 +		1369 a402  VX822v2 +		1369 a901  LCM420 +		1369 aa01  VX820v2 +		1517 000b  ECSG-1R3ADC-PMC Clock synthesizer +	9656  PCI9656 PCI <-> IOBus Bridge +		1517 000f  ECDR-GC314-PMC Receiver +		1885 0700  Tsunami FPGA PMC with Altera Stratix S40 +		1885 0701  Tsunami FPGA PMC with Altera Stratix S30 +	a100  Blackmagic Design DeckLink +	bb04  B&B 3PCIOSD1A Isolated PCI Serial +	c001  CronyxOmega-PCI (8-port RS232) +	d00d  PCI9030 32-bit 33MHz PCI <-> IOBus Bridge +		10b5 9030  Digium Tormenta 2 T400P or E400P Quad T1 or E1 PCI card +	d33d  PCI9030 32-bit 33MHz PCI <-> IOBus Bridge +		10b5 9030  Tormenta 3 Varion V401PT Quad T1/J1 PCI card +	d44d  PCI9030 32-bit 33MHz PCI <-> IOBus Bridge +		10b5 17f6  Allo CP100P/E 1-port E1/T1/J1 PCI/PCIe card +		10b5 17f7  Allo CP400P/E 4-port E1/T1/J1 PCI/PCIe card +		10b5 17f8  Allo CP200P/E 2-port E1/T1/J1 PCI/PCIe card +		10b5 9030  Tormenta 3 Varion V401PE Quad E1 PCI card +10b6  Madge Networks +	0001  Smart 16/4 PCI Ringnode +	0002  Smart 16/4 PCI Ringnode Mk2 +		10b6 0002  Smart 16/4 PCI Ringnode Mk2 +		10b6 0006  16/4 CardBus Adapter +	0003  Smart 16/4 PCI Ringnode Mk3 +		0e11 b0fd  Compaq NC4621 PCI, 4/16, WOL +		10b6 0003  Smart 16/4 PCI Ringnode Mk3 +		10b6 0007  Presto PCI Plus Adapter +	0004  Smart 16/4 PCI Ringnode Mk1 +	0006  16/4 Cardbus Adapter +		10b6 0006  16/4 CardBus Adapter +	0007  Presto PCI Adapter +		10b6 0007  Presto PCI +	0009  Smart 100/16/4 PCI-HS Ringnode +		10b6 0009  Smart 100/16/4 PCI-HS Ringnode +	000a  Token Ring 100/16/4 Ringnode/Ringrunner +		10b6 000a  Token Ring 100/16/4 Ringnode/Ringrunner +	000b  16/4 CardBus Adapter Mk2 +		10b6 0008  16/4 CardBus Adapter Mk2 +		10b6 000b  16/4 Cardbus Adapter Mk2 +	000c  RapidFire 3140V2 16/4 TR Adapter +		10b6 000c  RapidFire 3140V2 16/4 TR Adapter +	1000  Collage 25/155 ATM Client Adapter +	1001  Collage 155 ATM Server Adapter +10b7  3Com Corporation +	0001  3c985 1000BaseSX (SX/TX) +# wrong ID? +		9850 0001  3c985B-SX +	0013  AR5212 802.11abg NIC (3CRDAG675) +		10b7 2031  3CRDAG675 11a/b/g Wireless PCI Adapter +	0910  3C910-A01 +	1006  MINI PCI type 3B Data Fax Modem +	1007  Mini PCI 56k Winmodem +		10b7 615b  Mini PCI 56K Modem +		10b7 615c  Mini PCI 56K Modem +	1201  3c982-TXM 10/100baseTX Dual Port A [Hydra] +	1202  3c982-TXM 10/100baseTX Dual Port B [Hydra] +	1700  3c940 10/100/1000Base-T [Marvell] +		1043 80eb  A7V600/P4P800/K8V motherboard +		10b7 0010  3C940 Gigabit LOM Ethernet Adapter +		10b7 0020  3C941 Gigabit LOM Ethernet Adapter +		147b 1407  KV8-MAX3 motherboard +	3390  3c339 TokenLink Velocity +	3590  3c359 TokenLink Velocity XL +		10b7 3590  TokenLink Velocity XL Adapter (3C359/359B) +	4500  3c450 HomePNA [Tornado] +	5055  3c555 Laptop Hurricane +	5057  3c575 Megahertz 10/100 LAN CardBus [Boomerang] +		10b7 5a57  3C575 Megahertz 10/100 LAN Cardbus PC Card +	5157  3cCFE575BT Megahertz 10/100 LAN CardBus [Cyclone] +		10b7 5b57  3C575 Megahertz 10/100 LAN Cardbus PC Card +	5257  3cCFE575CT CardBus [Cyclone] +		10b7 5c57  FE575C-3Com 10/100 LAN CardBus-Fast Ethernet +	5900  3c590 10BaseT [Vortex] +	5920  3c592 EISA 10mbps Demon/Vortex +	5950  3c595 100BaseTX [Vortex] +	5951  3c595 100BaseT4 [Vortex] +	5952  3c595 100Base-MII [Vortex] +	5970  3c597 EISA Fast Demon/Vortex +	5b57  3c595 Megahertz 10/100 LAN CardBus [Boomerang] +		10b7 5b57  3C575 Megahertz 10/100 LAN Cardbus PC Card +	6000  3CRSHPW796 [OfficeConnect Wireless CardBus] +	6001  3com 3CRWE154G72 [Office Connect Wireless LAN Adapter] +	6055  3c556 Hurricane CardBus [Cyclone] +	6056  3c556B CardBus [Tornado] +		10b7 6556  10/100 Mini PCI Ethernet Adapter +	6560  3cCFE656 CardBus [Cyclone] +		10b7 656a  3CCFEM656 10/100 LAN+56K Modem CardBus +	6561  3cCFEM656 10/100 LAN+56K Modem CardBus +		10b7 656b  3CCFEM656 10/100 LAN+56K Modem CardBus +	6562  3cCFEM656B 10/100 LAN+Winmodem CardBus [Cyclone] +		10b7 656b  3CCFEM656B 10/100 LAN+56K Modem CardBus +	6563  3cCFEM656B 10/100 LAN+56K Modem CardBus +		10b7 656b  3CCFEM656 10/100 LAN+56K Modem CardBus +	6564  3cXFEM656C 10/100 LAN+Winmodem CardBus [Tornado] +	7646  3cSOHO100-TX Hurricane +	7770  3CRWE777 PCI Wireless Adapter [Airconnect] +	7940  3c803 FDDILink UTP Controller +	7980  3c804 FDDILink SAS Controller +	7990  3c805 FDDILink DAS Controller +	80eb  3c940B 10/100/1000Base-T +	8811  Token ring +	9000  3c900 10BaseT [Boomerang] +	9001  3c900 10Mbps Combo [Boomerang] +	9004  3c900B-TPO Etherlink XL [Cyclone] +		10b7 9004  3C900B-TPO Etherlink XL TPO 10Mb +	9005  3c900B-Combo Etherlink XL [Cyclone] +		10b7 9005  3C900B-Combo Etherlink XL Combo +	9006  3c900B-TPC Etherlink XL [Cyclone] +	900a  3c900B-FL 10base-FL [Cyclone] +	9050  3c905 100BaseTX [Boomerang] +	9051  3c905 100BaseT4 [Boomerang] +	9054  3C905B-TX Fast Etherlink XL PCI +		10b7 9054  3C905B-TX Fast Etherlink XL PCI +	9055  3c905B 100BaseTX [Cyclone] +		1028 0080  3C905B Fast Etherlink XL 10/100 +		1028 0081  3C905B Fast Etherlink XL 10/100 +		1028 0082  3C905B Fast Etherlink XL 10/100 +		1028 0083  3C905B Fast Etherlink XL 10/100 +		1028 0084  3C905B Fast Etherlink XL 10/100 +		1028 0085  3C905B Fast Etherlink XL 10/100 +		1028 0086  3C905B Fast Etherlink XL 10/100 +		1028 0087  3C905B Fast Etherlink XL 10/100 +		1028 0088  3C905B Fast Etherlink XL 10/100 +		1028 0089  3C905B Fast Etherlink XL 10/100 +		1028 0090  3C905B Fast Etherlink XL 10/100 +		1028 0091  3C905B Fast Etherlink XL 10/100 +		1028 0092  3C905B Fast Etherlink XL 10/100 +		1028 0093  3C905B Fast Etherlink XL 10/100 +		1028 0094  3C905B Fast Etherlink XL 10/100 +		1028 0095  3C905B Fast Etherlink XL 10/100 +		1028 0096  3C905B Fast Etherlink XL 10/100 +		1028 0097  3C905B Fast Etherlink XL 10/100 +		1028 0098  3C905B Fast Etherlink XL 10/100 +		1028 0099  3C905B Fast Etherlink XL 10/100 +		10b7 9055  3C905B Fast Etherlink XL 10/100 +	9056  3c905B-T4 Fast EtherLink XL [Cyclone] +	9058  3c905B Deluxe Etherlink 10/100/BNC [Cyclone] +	905a  3c905B-FX Fast Etherlink XL FX 100baseFx [Cyclone] +	9200  3c905C-TX/TX-M [Tornado] +		1028 0095  3C920 Integrated Fast Ethernet Controller +		1028 0097  3C920 Integrated Fast Ethernet Controller +		1028 00b4  OptiPlex GX110 +		1028 00d8  Precision 530 +		1028 00fe  Optiplex GX240 +		1028 012a  3C920 Integrated Fast Ethernet Controller [Latitude C640] +		10b7 1000  3C905CX-TX/TX-M Fast Etherlink for PC Management NIC +		10b7 7000  10/100 Mini PCI Ethernet Adapter +		10f1 2466  Tiger MPX S2466 (3C920 Integrated Fast Ethernet Controller) +		144d c005  X10 Laptop +	9201  3C920B-EMB Integrated Fast Ethernet Controller [Tornado] +		1043 80ab  A7N8X Deluxe onboard 3C920B-EMB Integrated Fast Ethernet Controller +	9202  3Com 3C920B-EMB-WNM Integrated Fast Ethernet Controller +	9210  3C920B-EMB-WNM Integrated Fast Ethernet Controller +	9300  3CSOHO100B-TX 910-A01 [tulip] +	9800  3c980-TX Fast Etherlink XL Server Adapter [Cyclone] +		10b7 9800  3c980-TX Fast Etherlink XL Server Adapter +	9805  3c980-C 10/100baseTX NIC [Python-T] +		10b7 1201  EtherLink Server 10/100 Dual Port A +		10b7 1202  EtherLink Server 10/100 Dual Port B +		10b7 9805  3c980 10/100baseTX NIC [Python-T] +		10f1 2462  Thunder K7 S2462 +	9900  3C990-TX [Typhoon] +	9902  3CR990-TX-95 [Typhoon 56-bit] +	9903  3CR990-TX-97 [Typhoon 168-bit] +	9904  3C990B-TX-M/3C990BSVR [Typhoon2] +		10b7 1000  3CR990B-TX-M [Typhoon2] +		10b7 2000  3CR990BSVR [Typhoon2 Server] +	9905  3CR990-FX-95/97/95 [Typhon Fiber] +		10b7 1101  3CR990-FX-95 [Typhoon Fiber 56-bit] +		10b7 1102  3CR990-FX-97 [Typhoon Fiber 168-bit] +		10b7 2101  3CR990-FX-95 Server [Typhoon Fiber 56-bit] +		10b7 2102  3CR990-FX-97 Server [Typhoon Fiber 168-bit] +	9908  3CR990SVR95 [Typhoon Server 56-bit] +	9909  3CR990SVR97 [Typhoon Server 168-bit] +	990a  3C990SVR [Typhoon Server] +	990b  3C990SVR [Typhoon Server] +10b8  Standard Microsystems Corp [SMC] +	0005  83c170 EPIC/100 Fast Ethernet Adapter +		1055 e000  LANEPIC 10/100 [EVB171Q-PCI] +		1055 e002  LANEPIC 10/100 [EVB171G-PCI] +		10b8 a011  EtherPower II 10/100 +		10b8 a014  EtherPower II 10/100 +		10b8 a015  EtherPower II 10/100 +		10b8 a016  EtherPower II 10/100 +		10b8 a017  EtherPower II 10/100 +	0006  83c175 EPIC/100 Fast Ethernet Adapter +		1055 e100  LANEPIC Cardbus Fast Ethernet Adapter +		1055 e102  LANEPIC Cardbus Fast Ethernet Adapter +		1055 e300  LANEPIC Cardbus Fast Ethernet Adapter +		1055 e302  LANEPIC Cardbus Fast Ethernet Adapter +		10b8 a012  LANEPIC Cardbus Fast Ethernet Adapter +		13a2 8002  LANEPIC Cardbus Fast Ethernet Adapter +		13a2 8006  LANEPIC Cardbus Fast Ethernet Adapter +	1000  FDC 37c665 +	1001  FDC 37C922 +	a011  83C170QF +	b106  SMC34C90 +# Split off ALi Corporation in 2003 +10b9  ULi Electronics Inc. +	0101  CMI8338/C3DX PCI Audio Device +	0111  C-Media CMI8738/C3DX Audio Device (OEM) +		10b9 0111  C-Media CMI8738/C3DX Audio Device (OEM) +	0780  Multi-IO Card +	0782  Multi-IO Card +	1435  M1435 +	1445  M1445 +	1449  M1449 +	1451  M1451 +	1461  M1461 +	1489  M1489 +	1511  M1511 [Aladdin] +	1512  M1512 [Aladdin] +	1513  M1513 [Aladdin] +	1521  M1521 [Aladdin III] +		10b9 1521  ALI M1521 Aladdin III CPU Bridge +	1523  M1523 +		10b9 1523  ALI M1523 ISA Bridge +	1531  M1531 [Aladdin IV] +	1533  M1533/M1535/M1543 PCI to ISA Bridge [Aladdin IV/V/V+] +		1014 053b  ThinkPad R40e +		10b9 1533  ALi M1533 Aladdin IV/V ISA Bridge +	1541  M1541 +		10b9 1541  ALI M1541 Aladdin V/V+ AGP System Controller +	1543  M1543 +	1563  M1563 HyperTransport South Bridge +		10b9 1563  ASRock 939Dual-SATA2 Motherboard +		1849 1563  ASRock 939Dual-SATA2 Motherboard +	1573  PCI to LPC Controller +	1575  M1575 South Bridge +	1621  M1621 +	1631  ALI M1631 PCI North Bridge Aladdin Pro III +	1632  M1632M Northbridge+Trident +	1641  ALI M1641 PCI North Bridge Aladdin Pro IV +	1644  M1644/M1644T Northbridge+Trident +	1646  M1646 Northbridge+Trident +	1647  M1647 Northbridge [MAGiK 1 / MobileMAGiK 1] +	1651  M1651/M1651T Northbridge [Aladdin-Pro 5/5M,Aladdin-Pro 5T/5TM] +	1671  M1671 Super P4 Northbridge [AGP4X,PCI and SDR/DDR] +	1672  M1672 Northbridge [CyberALADDiN-P4] +	1681  M1681 P4 Northbridge [AGP8X,HyperTransport and SDR/DDR] +	1687  M1687 K8 Northbridge [AGP8X and HyperTransport] +	1689  M1689 K8 Northbridge [Super K8 Single Chip] +	1695  M1695 Host Bridge +	1697  M1697 HTT Host Bridge +	3141  M3141 +	3143  M3143 +	3145  M3145 +	3147  M3147 +	3149  M3149 +	3151  M3151 +	3307  M3307 +	3309  M3309 +	3323  M3325 Video/Audio Decoder +	5212  M4803 +	5215  MS4803 +	5217  M5217H +	5219  M5219 +	5225  M5225 +	5228  M5228 ALi ATA/RAID Controller +	5229  M5229 IDE +		1014 050f  ThinkPad R30 +		1014 053d  ThinkPad R40e +		103c 0024  Pavilion ze4400 builtin IDE +		103c 0025  XE4500 Notebook +		1043 8053  A7A266 Motherboard IDE +		1849 5229  ASRock 939Dual-SATA2 Motherboard IDE (PATA) +	5235  M5225 +	5237  USB 1.1 Controller +		1014 0540  ThinkPad R40e +		103c 0024  Pavilion ze4400 builtin USB +		103c 0025  XE4500 Notebook +		104d 810f  VAIO PCG-U1 USB/OHCI Revision 1.0 +		10b9 5237  ASRock 939Dual-SATA2 Motherboard +		1849 5237  ASRock 939Dual-SATA2 Motherboard +	5239  USB 2.0 Controller +		10b9 5239  ASRock 939Dual-SATA2 Motherboard +		1849 5239  ASRock 939Dual-SATA2 Motherboard +	5243  M1541 PCI to AGP Controller +	5246  AGP8X Controller +	5247  PCI to AGP Controller +	5249  M5249 HTT to PCI Bridge +	524b  PCI Express Root Port +	524c  PCI Express Root Port +	524d  PCI Express Root Port +	524e  PCI Express Root Port +	5251  M5251 P1394 OHCI 1.0 Controller +	5253  M5253 P1394 OHCI 1.1 Controller +	5261  M5261 Ethernet Controller +	5263  ULi 1689,1573 integrated ethernet. +	5281  ALi M5281 Serial ATA / RAID Host Controller +	5287  ULi 5287 SATA +	5288  ULi M5288 SATA +		1043 8056  A8R-MVP Mainboard +	5289  ULi 5289 SATA +	5450  Lucent Technologies Soft Modem AMR +	5451  M5451 PCI AC-Link Controller Audio Device +		1014 0506  ThinkPad R30 +		1014 053e  ThinkPad R40e +		103c 0024  Pavilion ze4400 builtin Audio +		103c 0025  XE4500 Notebook +	5453  M5453 PCI AC-Link Controller Modem Device +	5455  M5455 PCI AC-Link Controller Audio Device +		10b9 5455  ASRock 939Dual-SATA2 Motherboard +		1849 0850  ASRock 939Dual-SATA2 Motherboard +	5457  M5457 AC'97 Modem Controller +		1014 0535  ThinkPad R40e +		103c 0024  Pavilion ze4400 builtin Modem Device +		103c 0025  XE4500 Notebook +	5459  SmartLink SmartPCI561 56K Modem +	545a  SmartLink SmartPCI563 56K Modem +	5461  HD Audio Controller +	5471  M5471 Memory Stick Controller +	5473  M5473 SD-MMC Controller +	7101  M7101 Power Management Controller [PMU] +		1014 0510  ThinkPad R30 +		1014 053c  ThinkPad R40e +		103c 0024  Pavilion ze4400 +		103c 0025  XE4500 Notebook +		1849 7101  ASRock 939Dual-SATA2 Motherboard +10ba  Mitsubishi Electric Corp. +	0301  AccelGraphics AccelECLIPSE +	0304  AccelGALAXY A2100 [OEM Evans & Sutherland] +	0308  Tornado 3000 [OEM Evans & Sutherland] +		10dd 0024  Tornado 3000 +	1002  VG500 [VolumePro Volume Rendering Accelerator] +10bb  Dapha Electronics Corporation +10bc  Advanced Logic Research +10bd  Surecom Technology +	0e34  NE-34 +10be  Tseng Labs International Co. +10bf  Most Inc +10c0  Boca Research Inc. +10c1  ICM Co., Ltd. +10c2  Auspex Systems Inc. +10c3  Samsung Semiconductors, Inc. +10c4  Award Software International Inc. +10c5  Xerox Corporation +10c6  Rambus Inc. +10c7  Media Vision +10c8  Neomagic Corporation +	0001  NM2070 [MagicGraph 128] +	0002  NM2090 [MagicGraph 128V] +	0003  NM2093 [MagicGraph 128ZV] +	0004  NM2160 [MagicGraph 128XD] +		1014 00ba  MagicGraph 128XD +		1025 1007  MagicGraph 128XD +		1028 0074  MagicGraph 128XD +		1028 0075  MagicGraph 128XD +		1028 007d  MagicGraph 128XD +		1028 007e  MagicGraph 128XD +		1033 802f  MagicGraph 128XD +		104d 801b  MagicGraph 128XD +		104d 802f  MagicGraph 128XD +		104d 830b  MagicGraph 128XD +		10ba 0e00  MagicGraph 128XD +		10c8 0004  MagicGraph 128XD +		10cf 1029  MagicGraph 128XD +		10f7 8308  MagicGraph 128XD +		10f7 8309  MagicGraph 128XD +		10f7 830b  MagicGraph 128XD +		10f7 830d  MagicGraph 128XD +		10f7 8312  MagicGraph 128XD +	0005  NM2200 [MagicGraph 256AV] +		1014 00dd  ThinkPad 570 +		1028 0088  Latitude CPi A +	0006  NM2360 [MagicMedia 256ZX] +		1014 0152  ThinkPad 600X +	0016  NM2380 [MagicMedia 256XL+] +		10c8 0016  MagicMedia 256XL+ +	0025  NM2230 [MagicGraph 256AV+] +	0083  NM2093 [MagicGraph 128ZV+] +	8005  NM2200 [MagicMedia 256AV Audio] +		0e11 b0d1  MagicMedia 256AV Audio Device on Discovery +		0e11 b126  MagicMedia 256AV Audio Device on Durango +		1014 00dd  ThinkPad 390/i1720/i1721 +		1025 1003  MagicMedia 256AV Audio Device on TravelMate 720 +		1028 0088  Latitude CPi A +		1028 008f  MagicMedia 256AV Audio Device on Colorado Inspiron +		103c 0007  MagicMedia 256AV Audio Device on Voyager II +		103c 0008  MagicMedia 256AV Audio Device on Voyager III +		103c 000d  MagicMedia 256AV Audio Device on Omnibook 900 +		10c8 8005  MagicMedia 256AV Audio Device on FireAnt +		110a 8005  MagicMedia 256AV Audio Device +		14c0 0004  MagicMedia 256AV Audio Device +	8006  NM2360 [MagicMedia 256ZX Audio] +	8016  NM2380 [MagicMedia 256XL+ Audio] +10c9  Dataexpert Corporation +10ca  Fujitsu Microelectr., Inc. +10cb  Omron Corporation +# nee Mentor ARC Inc +10cc  Mai Logic Incorporated +	0660  Articia S Host Bridge +	0661  Articia S PCI Bridge +10cd  Advanced System Products, Inc +	1100  ASC1100 +	1200  ASC1200 [(abp940) Fast SCSI-II] +	1300  ABP940-U / ABP960-U +		10cd 1310  ASC1300 SCSI Adapter +		1195 1320  Ultra-SCSI CardBus PC Card REX CB31 +	2300  ABP940-UW +	2500  ABP940-U2W +	2700  ABP3950-U3W +10ce  Radius +# nee Citicorp TTI +10cf  Fujitsu Limited. +	01ef  PCEA4 PCI-Express Dual Port ESCON Adapter +	1414  On-board USB 1.1 companion controller +	1415  On-board USB 2.0 EHCI controller +	1422  E8410 nVidia graphics adapter +	142d  HD audio (Realtek ALC262) +	1430  82566MM Intel 1Gb copper LAN interface +	1623  PCEA4 PCI-Express Dual Port ESCON Adapter +	2001  mb86605 +	200c  MB86613L IEEE1394 OHCI 1.0 Controller +	2010  MB86613S IEEE1394 OHCI 1.1 Controller +	2019  MB86295S [CORAL P] +	201e  MB86296S [CORAL PA] +	202b  MB86297A [Carmine Graphics Controller] +10d1  FuturePlus Systems Corp. +10d2  Molex Incorporated +10d3  Jabil Circuit Inc +10d4  Hualon Microelectronics +10d5  Autologic Inc. +10d6  Cetia +10d7  BCM Advanced Research +10d8  Advanced Peripherals Labs +10d9  Macronix, Inc. [MXIC] +	0431  MX98715 +	0512  MX98713 +	0531  MX987x5 +		1186 1200  DFE-540TX ProFAST 10/100 Adapter +	8625  MX86250 +	8626  Macronix MX86251 + 3Dfx Voodoo Rush +	8888  MX86200 +10da  Compaq IPG-Austin +	0508  TC4048 Token Ring 4/16 +	3390  Tl3c3x9 +10db  Rohm LSI Systems, Inc. +10dc  CERN/ECP/EDU +	0001  STAR/RD24 SCI-PCI (PMC) +	0002  TAR/RD24 SCI-PCI (PMC) +	0021  HIPPI destination +	0022  HIPPI source +	10dc  ATT2C15-3 FPGA +10dd  Evans & Sutherland +	0100  Lightning 1200 +		10dd 0023  Lightning 1200 15+16M +10de  NVIDIA Corporation +	0008  NV1 [EDGE 3D] +	0009  NV1 [EDGE 3D] +	0020  NV4 [Riva TNT] +		1043 0200  V3400 TNT +		1048 0c18  Erazor II SGRAM +		1048 0c19  Erazor II +		1048 0c1b  Erazor II +		1048 0c1c  Erazor II +		1092 0550  Viper V550 +		1092 0552  Viper V550 +		1092 4804  Viper V550 +		1092 4808  Viper V550 +		1092 4810  Viper V550 +		1092 4812  Viper V550 +		1092 4815  Viper V550 +		1092 4820  Viper V550 with TV out +		1092 4822  Viper V550 +		1092 4904  Viper V550 +		1092 4914  Viper V550 +		1092 8225  Viper V550 +		10b4 273d  Velocity 4400 +		10b4 273e  Velocity 4400 +		10b4 2740  Velocity 4400 +		10de 0020  Riva TNT +		1102 1015  Graphics Blaster CT6710 +		1102 1016  Graphics Blaster RIVA TNT +	0028  NV5 [Riva TNT2 / TNT2 Pro] +		1043 0200  AGP-V3800 SGRAM +		1043 0201  AGP-V3800 SDRAM +		1043 0205  PCI-V3800 +		1043 4000  AGP-V3800PRO +		1048 0c21  Synergy II +		1048 0c28  Erazor III +		1048 0c29  Erazor III +		1048 0c2a  Erazor III +		1048 0c2b  Erazor III +		1048 0c31  Erazor III Pro +		1048 0c32  Erazor III Pro +		1048 0c33  Erazor III Pro +		1048 0c34  Erazor III Pro +		107d 2134  WinFast 3D S320 II + TV-Out +		1092 4804  Viper V770 +		1092 4a00  Viper V770 +		1092 4a02  Viper V770 Ultra +		1092 5a00  RIVA TNT2/TNT2 Pro +		1092 5a40  Viper V770D AGP +		1092 6a02  Viper V770 Ultra +		1092 7a02  Viper V770 Ultra +		10de 0005  RIVA TNT2 Pro +		10de 000f  Compaq NVIDIA TNT2 Pro +		1102 1020  3D Blaster RIVA TNT2 +		1102 1026  3D Blaster RIVA TNT2 Digital +		1462 8806  MS-8806 AGPhantom Graphics Card +		14af 5810  Maxi Gamer Xentor +	0029  NV5 [Riva TNT2 Ultra] +		1043 0200  AGP-V3800 Deluxe +		1043 0201  AGP-V3800 Ultra SDRAM +		1043 0205  PCI-V3800 Ultra +		1048 0c2e  Erazor III Ultra +		1048 0c2f  Erazor III Ultra +		1048 0c30  Erazor III Ultra +		1102 1021  3D Blaster RIVA TNT2 Ultra +		1102 1029  3D Blaster RIVA TNT2 Ultra +		1102 102f  3D Blaster RIVA TNT2 Ultra +		14af 5820  Maxi Gamer Xentor 32 +		4843 4f34  Dynamite +	002a  NV5 [Riva TNT2] +	002b  NV5 [Riva TNT2] +	002c  NV5 [Vanta / Vanta LT] +		1043 0200  AGP-V3800 Combat SDRAM +		1043 0201  AGP-V3800 Combat +		1048 0c20  TNT2 Vanta +		1048 0c21  TNT2 Vanta +		1048 0c25  TNT2 Vanta 16MB +		1092 6820  Viper V730 +		1102 1031  CT6938 VANTA 8MB +		1102 1034  CT6894 VANTA 16MB +		14af 5008  Maxi Gamer Phoenix 2 +	002d  NV5 [Riva TNT2 Model 64 / Model 64 Pro] +		1043 0200  AGP-V3800M +		1043 0201  AGP-V3800M +		1048 0c3a  Erazor III LT +		1048 0c3b  Erazor III LT +		107d 2137  WinFast 3D S325 +		10de 0006  RIVA TNT2 Model 64/Model 64 Pro +		10de 001e  M64 AGP4x +		1102 1023  CT6892 RIVA TNT2 Value +		1102 1024  CT6932 RIVA TNT2 Value 32Mb +		1102 102c  CT6931 RIVA TNT2 Value [Jumper] +		1102 1030  CT6931 RIVA TNT2 Value +# S26361-D1243-V116 +		110a 006f  GM1000-16 +# S26361-D1243-V216 +		110a 0081  GM1000-16 +		1462 8808  MSI-8808 +		14af 5620  Gamer Cougar Video Edition +		1554 1041  Pixelview RIVA TNT2 M64 +		1569 002d  Palit Microsystems Daytona TNT2 M64 +	0034  MCP04 SMBus +	0035  MCP04 IDE +	0036  MCP04 Serial ATA Controller +	0037  MCP04 Ethernet Controller +	0038  MCP04 Ethernet Controller +	003a  MCP04 AC'97 Audio Controller +	003b  MCP04 USB Controller +	003c  MCP04 USB Controller +	003d  MCP04 PCI Bridge +	003e  MCP04 Serial ATA Controller +	0040  NV40 [GeForce 6800 Ultra] +	0041  NV40 [GeForce 6800] +		1043 817b  V9999 Gamer Edition +		107d 2992  WinFast A400 +		1458 310f  Geforce 6800 GV-N6812 +	0042  NV40 [GeForce 6800 LE] +		107d 299b  WinFast A400 LE +	0043  NV40 [GeForce 6800 XE] +	0044  NV40 [GeForce 6800 XT] +	0045  NV40 [GeForce 6800 GT] +		1043 817d  V9999GT +		1458 3140  GV-N68T256D +	0047  NV40 [GeForce 6800 GS] +		1682 2109  GeForce 6800 GS +	0048  NV40 [GeForce 6800 XT] +	004e  NV40GL [Quadro FX 4000] +	0050  CK804 ISA Bridge +		1043 815a  K8N4/A8N Series Mainboard +		10f1 2865  Tomcat K8E (S2865) +		1458 0c11  GA-K8N Ultra-9 Mainboard +		1462 7100  MSI K8N Diamond +		1462 7125  K8N Neo4-F mainboard +		147b 1c1a  KN8-Ultra Mainboard +		1565 3402  NF4 AM2L Mainboard +	0051  CK804 ISA Bridge +		1028 0225  PowerEdge T105 ISA Bridge +	0052  CK804 SMBus +		1028 0225  PowerEdge T105 SMBus +		1043 815a  K8N4/A8N Series Mainboard +		10f1 2865  Tomcat K8E (S2865) +		1458 0c11  GA-K8N Ultra-9 Mainboard +		1462 7100  MSI K8N Diamond +		1462 7125  K8N Neo4-F mainboard +		147b 1c1a  KN8-Ultra Mainboard +		1565 3402  NF4 AM2L Mainboard +	0053  CK804 IDE +		1043 815a  K8N4/A8N Series Mainboard +		10f1 2865  Tomcat K8E (S2865) +		1458 5002  GA-K8N Ultra-9 Mainboard +		1462 7100  MSI K8N Diamond +		1462 7125  K8N Neo4-F mainboard +		147b 1c1a  KN8-Ultra Mainboard +		1565 3402  NF4 AM2L Mainboard +	0054  CK804 Serial ATA Controller +		1028 0225  PowerEdge T105 Serial ATA +		1043 815a  A8N Series Mainboard +		10f1 2865  Tomcat K8E (S2865) +		1458 b003  GA-K8N Ultra-9 Mainboard +		1462 7100  MSI K8N Diamond +		1462 7125  K8N Neo4-F mainboard +		147b 1c1a  KN8-Ultra Mainboard +		1565 5401  NF4 AM2L Mainboard +	0055  CK804 Serial ATA Controller +		1028 0225  PowerEdge T105 Serial ATA +		1043 815a  K8N4/A8N Series Mainboard +		10f1 2865  Tomcat K8E (S2865) +		1458 b003  GA-K8N Ultra-9 Mainboard +		1462 7125  K8N Neo4-F mainboard +		147b 1c1a  KN8-Ultra Mainboard +		1565 5401  NF4 AM2L Mainboard +	0056  CK804 Ethernet Controller +	0057  CK804 Ethernet Controller +		1043 8141  K8N4/A8N Series Mainboard +		10de cb84  NF4 Lanparty +		10f1 2865  Tomcat K8E (S2865) +		1458 e000  GA-K8N Ultra-9 Mainboard +		1462 7100  MSI K8N Diamond +		1462 7125  K8N Neo4-F mainboard +		147b 1c1a  KN8-Ultra Mainboard +		1565 2501  NF4 AM2L Mainboard +	0058  CK804 AC'97 Modem +	0059  CK804 AC'97 Audio Controller +		1043 812a  K8N4/A8N Series Mainboard +		10f1 2865  Tomcat K8E (S2865) +		1462 7585  K8N Neo4-F mainboard +		147b 1c1a  KN8-Ultra Mainboard +		1565 8211  NF4 AM2L Mainboard +	005a  CK804 USB Controller +		1028 0225  PowerEdge T105 onboard USB +		1043 815a  K8N4/A8N Series Mainboard +		10f1 2865  Tomcat K8E (S2865) +		1458 5004  GA-K8N Ultra-9 Mainboard +		1462 7100  MSI K8N Diamond +		1462 7125  K8N Neo4-F mainboard +		147b 1c1a  KN8-Ultra Mainboard +		1565 3402  NF4 AM2L Mainboard +	005b  CK804 USB Controller +		1028 0225  PowerEdge T105 onboard USB +		1043 815a  K8N4/A8N Series Mainboard +		10f1 2865  Tomcat K8E (S2865) +		1458 5004  GA-K8N Ultra-9 Mainboard +		1462 7100  MSI K8N Diamond +		1462 7125  K8N Neo4-F mainboard +		147b 1c1a  KN8-Ultra Mainboard +		1565 3402  NF4 AM2L Mainboard +	005c  CK804 PCI Bridge +	005d  CK804 PCIE Bridge +	005e  CK804 Memory Controller +		1028 0225  PowerEdge T105 Memory Controller +		1043 815a  A8N Series Mainboard +		10de 005e  ECS Elitegroup NFORCE3-A939 motherboard. +		10f1 2865  Tomcat K8E (S2865) +		10f1 2891  Thunder K8SRE Mainboard +		1458 5000  GA-K8N Ultra-9 Mainboard +		1462 7100  K8N Diamond Mainboard +		1462 7125  K8N Neo4-F Mainboard +		147b 1c1a  KN8-Ultra Mainboard +		1565 3402  NF4 AM2L Mainboard +	005f  CK804 Memory Controller +	0060  nForce2 ISA Bridge +		1043 80ad  A7N8X Mainboard +		147b 1c02  NF7-S/NF7 (nVidia-nForce2) 2.X +		a0a0 03ba  UK79G-1394 motherboard +	0064  nForce2 SMBus (MCP) +		147b 1c02  NF7-S/NF7 (nVidia-nForce2) 2.X +		a0a0 03bb  UK79G-1394 motherboard +	0065  nForce2 IDE +		10de 0c11  nForce 2 EIDE Controller +		a0a0 03b2  UK79G-1394 motherboard +	0066  nForce2 Ethernet Controller +		1043 80a7  A7N8X Mainboard onboard nForce2 Ethernet +		10de 0c11  nForce MCP-T Networking Adapter +		a0a0 03b3  UK79G-1394 motherboard +	0067  nForce2 USB Controller +		1043 0c11  A7N8X Mainboard +		a0a0 03b4  UK79G-1394 motherboard +	0068  nForce2 USB Controller +		1043 0c11  A7N8X Mainboard +		a0a0 03b4  UK79G-1394 motherboard +	006a  nForce2 AC97 Audio Controler (MCP) +		1043 8095  nForce2 AC97 Audio Controler (MCP) +		a0a0 0304  UK79G-1394 motherboard +	006b  nForce Audio Processing Unit +		10de 006b  nForce2 MCP Audio Processing Unit +		a0a0 0304  UK79G-1394 motherboard +	006c  nForce2 External PCI Bridge +	006d  nForce2 PCI Bridge +	006e  nForce2 FireWire (IEEE 1394) Controller +		a0a0 0306  UK79G-1394 motherboard +	0080  MCP2A ISA bridge +		147b 1c09  NV7 Motherboard +	0084  MCP2A SMBus +		147b 1c09  NV7 Motherboard +	0085  MCP2A IDE +		147b 1c09  NV7 Motherboard +	0086  MCP2A Ethernet Controller +	0087  MCP2A USB Controller +		147b 1c09  NV7 Motherboard +	0088  MCP2A USB Controller +		147b 1c09  NV7 Motherboard +	008a  MCP2S AC'97 Audio Controller +		147b 1c09  NV7 Motherboard +	008b  MCP2A PCI Bridge +	008c  MCP2A Ethernet Controller +	008e  nForce2 Serial ATA Controller +	0090  G70 [GeForce 7800 GTX] +	0091  G70 [GeForce 7800 GTX] +	0092  G70 [GeForce 7800 GT] +	0093  G70 [GeForce 7800 GS] +	0095  G70 [GeForce 7800 SLI] +	0097  G70 [GeForce GTS 250] +	0098  G70M [GeForce Go 7800] +	0099  G70M [GeForce Go 7800 GTX] +	009d  G70GL [Quadro FX 4500] +	00a0  NV5 [Aladdin TNT2] +		14af 5810  Maxi Gamer Xentor +	00c0  NV41 [GeForce 6800 GS] +	00c1  NV41 [GeForce 6800] +	00c2  NV41 [GeForce 6800 LE] +	00c3  NV41 [GeForce 6800 XT] +	00c5  NV41 +	00c6  NV41 +	00c7  NV41 +	00c8  NV41M [GeForce Go 6800] +	00c9  NV41M [GeForce Go 6800 Ultra] +	00cc  NV41GLM [Quadro FX Go1400] +	00cd  NV42GL [Quadro FX 3450/4000 SDI] +	00ce  NV41GL [Quadro FX 1400] +	00cf  NV41 +	00d0  nForce3 LPC Bridge +	00d1  nForce3 Host Bridge +	00d2  nForce3 AGP Bridge +	00d3  CK804 Memory Controller +	00d4  nForce3 SMBus +	00d5  nForce3 IDE +	00d6  nForce3 Ethernet +	00d7  nForce3 USB 1.1 +	00d8  nForce3 USB 2.0 +	00d9  nForce3 Audio +	00da  nForce3 Audio +	00dd  nForce3 PCI Bridge +	00df  CK8S Ethernet Controller +		1043 80a7  K8N-E +		105b 0c43  Winfast NF3250K8AA +		147b 1c0b  NF8 Mainboard +	00e0  nForce3 250Gb LPC Bridge +		1043 813f  K8N-E +		10de 0c11  Winfast NF3250K8AA +		1462 7030  K8N Neo-FSR v2.0 +		147b 1c0b  NF8 Mainboard +		1849 00e0  Motherboard (one of many) +	00e1  nForce3 250Gb Host Bridge +		1043 813f  K8N-E +		1462 7030  K8N Neo-FSR v2.0 +		147b 1c0b  NF8 Mainboard +		1849 00e1  Motherboard (one of many) +	00e2  nForce3 250Gb AGP Host to PCI Bridge +	00e3  nForce3 Serial ATA Controller +		1043 813f  K8N-E +		105b 0c43  Winfast NF3250K8AA +		147b 1c0b  NF8 Mainboard +		1849 00e3  Motherboard (one of many) +	00e4  nForce 250Gb PCI System Management +		1043 813f  K8N-E +		105b 0c43  Winfast NF3250K8AA +		1462 7030  K8N Neo-FSR v2.0 +		147b 1c0b  NF8 Mainboard +		1849 00e4  Motherboard (one of many) +	00e5  CK8S Parallel ATA Controller (v2.5) +		1043 813f  K8N-E +		105b 0c43  Winfast NF3250K8AA +		1462 7030  K8N Neo-FSR v2.0 +		147b 1c0b  NF8 Mainboard +		1849 00e5  Motherboard (one of many) +		f849 00e5  Motherboard (one of many) +	00e6  CK8S Ethernet Controller +	00e7  CK8S USB Controller +		1043 813f  K8N-E +		105b 0c43  Winfast NF3250K8AA +		1462 7030  K8N Neo-FSR v2.0 +		147b 1c0b  NF8 Mainboard +		1849 00e7  Motherboard (one of many) +	00e8  nForce3 EHCI USB 2.0 Controller +		1043 813f  K8N-E +		105b 0c43  Winfast NF3250K8AA +		1462 7030  K8N Neo-FSR v2.0 +		147b 1c0b  NF8 Mainboard +		1849 00e8  Motherboard (one of many) +	00ea  nForce3 250Gb AC'97 Audio Controller +		1043 819d  K8N-E +		105b 0c43  Winfast NF3250K8AA +		1462 b010  K8N Neo-FSR v2.0 +		147b 1c0b  NF8 Mainboard +	00ed  nForce3 250Gb PCI-to-PCI Bridge +	00ee  nForce3 Serial ATA Controller 2 +	00f1  NV43 [GeForce 6600 GT] +		1043 81a6  N6600GT TD 128M AGP +		1043 81c6  N6600GT TD 128M AGP +		1458 3150  GV-N66T128VP +		1554 1191  PixelView PV-N43UA (128KD) +		1682 2119  GeForce 6600 GT AGP +	00f2  NV43 [GeForce 6600] +		1554 1194  PixelView PV-N43AT (256KD) +		1682 211c  GeForce 6600 256MB DDR DUAL DVI TV +	00f3  NV43 [GeForce 6200] +	00f4  NV43 [GeForce 6600 LE] +	00f5  G71 [GeForce 7800 GS] +	00f6  NV43 [GeForce 6800 GS/XT] +		1682 217e  XFX GeForce 6800 XTreme 256MB DDR3 AGP +	00f8  NV40GL [Quadro FX 3400/4400] +	00f9  NV40 [GeForce 6800 GT/GTO/Ultra] +		10de 00f9  NV40 [GeForce 6800 GT] +		1682 2120  GEFORCE 6800 GT PCI-E +	00fa  NV36 [GeForce PCX 5750] +	00fb  NV38 [GeForce PCX 5900] +	00fc  NV37GL [Quadro FX 330/GeForce PCX 5300] +	00fd  NV37GL [Quadro PCI-E Series] +	00fe  NV38GL [Quadro FX 1300] +	00ff  NV18 [GeForce PCX 4300] +	0100  NV10 [GeForce 256 SDR] +		1043 0200  AGP-V6600 SGRAM +		1043 0201  AGP-V6600 SDRAM +		1043 4008  AGP-V6600 SGRAM +		1043 4009  AGP-V6600 SDRAM +		1048 0c41  Erazor X +		1048 0c43  ERAZOR X PCI +		1048 0c48  Synergy Force +		1102 102d  CT6941 GeForce 256 +		14af 5022  3D Prophet SE +	0101  NV10 [GeForce 256 DDR] +		1043 0202  AGP-V6800 DDR +		1043 400a  AGP-V6800 DDR SGRAM +		1043 400b  AGP-V6800 DDR SDRAM +		1048 0c42  Erazor X +		107d 2822  WinFast GeForce 256 +		1102 102e  CT6970/CT6971 +		14af 5021  3D Prophet DDR-DVI +	0103  NV10GL [Quadro] +		1048 0c40  GLoria II-64 +		1048 0c44  GLoria II +		1048 0c45  GLoria II +		1048 0c4a  GLoria II-64 Pro +		1048 0c4b  GLoria II-64 Pro DVII +	0110  NV11 [GeForce2 MX/MX 400] +		1043 4015  AGP-V7100 Pro +		1043 4021  V7100 Deluxe Combo +		1043 4031  V7100 Pro with TV output +		1048 0c60  Gladiac MX +		1048 0c61  Gladiac 511PCI +		1048 0c63  Gladiac 511TV-OUT 32MB +		1048 0c64  Gladiac 511TV-OUT 64MB +		1048 0c65  Gladiac 511TWIN +		1048 0c66  Gladiac 311 +		10b0 0001  GeForce2 MX Jumbo TV +		10de 0091  Dell OEM GeForce 2 MX 400 +		10de 00a1  Apple OEM GeForce2 MX +		1462 8523  MS-8852 +		1462 8817  MSI GeForce2 MX400 Pro32S [MS-8817] +		14af 7102  3D Prophet II MX +		14af 7103  3D Prophet II MX Dual-Display +		1545 0023  Xtasy Rev. B2 +		1554 1081  MVGA-NVG11AM(400) +	0111  NV11 [GeForce2 MX200] +	0112  NV11M [GeForce2 Go] +	0113  NV11GL [Quadro2 MXR/EX/Go] +	0140  NV43 [GeForce 6600 GT] +		1458 3125  GV-NX66T128D +		1458 3126  GV-NX66T256DE +		1462 8939  MS-8983 +	0141  NV43 [GeForce 6600] +		1043 81b0  EN6600 Silencer +		107d 593a  LR2A22 128MB TV OUT +		107d 597b  WINFAST PX6600 +		1458 3124  GV-NX66128DP Turbo Force Edition +	0142  NV43 [GeForce 6600 LE] +	0143  NV43 [GeForce 6600 VE] +	0144  NV43M [GeForce Go 6600] +	0145  NV43 [GeForce 6610 XL] +	0146  NV43M [GeForce Go6200 TE / 6600 TE] +	0147  NV43 [GeForce 6700 XL] +	0148  NV43M [GeForce Go 6600] +	0149  NV43M [GeForce Go 6600 GT] +	014a  NV43 [Quadro NVS 440] +	014b  NV43 +	014d  NV43GL [Quadro FX 550] +	014e  NV43GL [Quadro FX 540] +	014f  NV43 [GeForce 6200] +	0150  NV15 [GeForce2 GTS/Pro] +		1043 4016  V7700 AGP Video Card +		1043 402a  AGP-V7700 +		1048 0c50  Gladiac +		1048 0c52  Gladiac-64 +		107d 2840  WinFast GeForce2 GTS with TV output +		107d 2842  WinFast GeForce 2 Pro +		10de 002e  GeForce2 GTS +		1462 815a  MS-8815 +		1462 8831  Creative GeForce2 Pro +	0151  NV15 [GeForce2 Ti] +		1043 405f  V7700Ti +		1462 5506  Creative 3D Blaster GeForce2 Titanium +		1462 8364  MS-8836 +	0152  NV15 [GeForce2 Ultra] +		1048 0c56  GLADIAC Ultra +	0153  NV15GL [Quadro2 Pro] +	0160  NV44 [GeForce 6500] +	0161  NV44 [GeForce 6200 TurboCache] +	0162  NV44 [GeForce 6200 SE TurboCache] +	0163  NV44 [GeForce 6200 LE] +	0164  NV44M [GeForce Go 6200] +	0165  NV44 [Quadro NVS 285] +	0166  NV44M [GeForce Go 6400] +	0167  NV44M [GeForce Go 6200] +	0168  NV44M [GeForce Go 6400] +	0169  NV44 [GeForce 6250] +	016a  NV44 [GeForce 7100 GS] +	016d  NV44 +	016e  NV44 +	016f  NV44 +	0170  NV17 [GeForce4 MX 460] +		1462 8630  MS-8863 +	0171  NV17 [GeForce4 MX 440] +		10b0 0002  Gainward Pro/600 TV +		10de 0008  Apple OEM GeForce4 MX 440 +		1462 8661  G4MX440-VTP +		1462 8730  MX440SES-T (MS-8873) +		1462 8743  MS-8874 +		1462 8852  GeForce4 MX440 PCI +		147b 8f00  Abit Siluro GeForce4MX440 +	0172  NV17 [GeForce4 MX 420] +		1462 8730  MS-8873 +		1462 8784  MS-8878 +	0173  NV17 [GeForce4 MX 440-SE] +	0174  NV17M [GeForce4 440 Go] +	0175  NV17M [GeForce4 420 Go] +	0176  NV17M [GeForce4 420 Go 32M] +		103c 08b0  tc1100 tablet +		144d c005  X10 Laptop +		4c53 1090  Cx9 / Vx9 mainboard +	0177  NV17M [GeForce4 460 Go] +	0178  NV17GL [Quadro4 550 XGL] +	0179  NV17M [GeForce4 440 Go 64M] +		10de 0179  GeForce4 MX (Mac) +	017a  NV17GL [Quadro NVS] +	017b  NV17GL [Quadro4 550 XGL] +	017c  NV17GL [Quadro4 500 GoGL] +	017f  NV17 +	0181  NV18 [GeForce4 MX 440 AGP 8x] +		1043 8063  GeForce4 MX 440 AGP 8X +		1043 806f  V9180 Magic +		1462 8880  MS-StarForce GeForce4 MX 440 with AGP8X +		1462 8900  MS-8890 GeForce 4 MX440 AGP8X +		1462 9350  MSI GeForce4 MX T8X with AGP8X +		147b 8f0d  Siluro GF4 MX-8X +		1554 1111  PixelView MVGA-NVG18A +	0182  NV18 [GeForce4 MX 440SE AGP 8x] +	0183  NV18 [GeForce4 MX 420 AGP 8x] +	0184  NV18 [GeForce4 MX] +	0185  NV18 [GeForce4 MX 4000] +	0186  NV18M [GeForce4 448 Go] +	0187  NV18M [GeForce4 488 Go] +	0188  NV18GL [Quadro4 580 XGL] +	0189  NV18 [GeForce4 MX with AGP8X (Mac)] +	018a  NV18GL [Quadro NVS 280 SD] +	018b  NV18GL [Quadro4 380 XGL] +	018c  NV18GL [Quadro NVS 50 PCI] +	018d  NV18M [GeForce4 448 Go] +	018f  NV18 +	0190  G80 [GeForce 8800 GTS / 8800 GTX] +	0191  G80 [GeForce 8800 GTX] +	0192  G80 [GeForce 8800 GTS] +	0193  G80 [GeForce 8800 GTS] +		107d 20bd  WinFast PX 8800 GTS TDH +	0194  G80 [GeForce 8800 Ultra] +	0197  G80GL [Tesla C870] +	019d  G80GL [Quadro FX 5600] +	019e  G80GL [Quadro FX 4600] +	01a0  nForce 220/420 NV11 [GeForce2 MX] +	01a4  nForce CPU bridge +	01ab  nForce 420 Memory Controller (DDR) +	01ac  nForce 220/420 Memory Controller +	01ad  nForce 220/420 Memory Controller +	01b0  nForce Audio Processing Unit +	01b1  nForce AC'97 Audio Controller +	01b2  nForce ISA Bridge +	01b4  nForce PCI System Management +	01b7  nForce AGP to PCI Bridge +	01b8  nForce PCI-to-PCI bridge +	01bc  nForce IDE +	01c1  nForce AC'97 Modem Controller +	01c2  nForce USB Controller +	01c3  nForce Ethernet Controller +	01d0  G72 [GeForce 7350 LE] +	01d1  G72 [GeForce 7300 LE] +		107d 5efa  WinFast PX7300LE-TD128 +		107d 5efb  WinFast PX7300LE-TD256 +		1462 0345  7300LE PCI Express Graphics Adapter +	01d2  G72 [GeForce 7550 LE] +	01d3  G72 [GeForce 7200 GS / 7300 SE] +	01d5  G72 +	01d6  G72M [GeForce Go 7200] +	01d7  G72M [Quadro NVS 110M/GeForce Go 7300] +	01d8  G72M [GeForce Go 7400] +		1028 01d7  XPS M1210 +	01d9  G72M [GeForce Go 7450] +	01da  G72M [Quadro NVS 110M] +	01db  G72M [Quadro NVS 120M] +	01dc  G72GLM [Quadro FX 350M] +	01dd  G72 [GeForce 7500 LE] +	01de  G72GL [Quadro FX 350] +		10de 01dc  Quadro  FX Go350M +	01df  G72 [GeForce 7300 GS] +	01e0  nForce2 IGP2 +		147b 1c09  NV7 Motherboard +	01e8  nForce2 AGP +	01ea  nForce2 Memory Controller 0 +		a0a0 03b9  UK79G-1394 motherboard +	01eb  nForce2 Memory Controller 1 +		a0a0 03b9  UK79G-1394 motherboard +	01ec  nForce2 Memory Controller 2 +		a0a0 03b9  UK79G-1394 motherboard +	01ed  nForce2 Memory Controller 3 +		a0a0 03b9  UK79G-1394 motherboard +	01ee  nForce2 Memory Controller 4 +		10de 01ee  MSI Delta-L nForce2 memory controller +		a0a0 03b9  UK79G-1394 motherboard +	01ef  nForce2 Memory Controller 5 +		a0a0 03b9  UK79G-1394 motherboard +	01f0  C17 [GeForce4 MX IGP] +		a0a0 03b5  UK79G-1394 motherboard +	0200  NV20 [GeForce3] +		1043 402f  AGP-V8200 DDR +		1048 0c70  GLADIAC 920 +	0201  NV20 [GeForce3 Ti 200] +	0202  NV20 [GeForce3 Ti 500] +		1043 405b  V8200 T5 +		1545 002f  Xtasy 6964 +	0203  NV20GL [Quadro DCC] +	0211  NV48 [GeForce 6800] +	0212  NV48 [GeForce 6800 LE] +	0215  NV48 [GeForce 6800 GT] +	0218  NV48 [GeForce 6800 XT] +	0221  NV44A [GeForce 6200] +		1043 81e1  N6200/TD/256M/A +		3842 a341  256A8N341DX +	0222  NV44 [GeForce 6200 A-LE] +	0224  NV44 +	0240  C51PV [GeForce 6150] +		1043 81cd  A8N-VM CSM +		1462 7207  K8NGM2 series +	0241  C51 [GeForce 6150 LE] +	0242  C51G [GeForce 6100] +		105b 0cad  Winfast 6100K8MB +	0243  C51 PCI Express Bridge +	0244  C51 [GeForce Go 6150] +		103c 30b5  Presario V3242AU +		103c 30b7  Presario V6133CL +		10de 0244  GeForce Go 6150 +	0245  C51 [Quadro NVS 210S/GeForce 6150LE] +	0246  C51 PCI Express Bridge +	0247  C51 [GeForce Go 6100] +		1043 1382  MCP51 PCI-X GeForce Go 6100 +	0248  C51 PCI Express Bridge +	0249  C51 PCI Express Bridge +	024a  C51 PCI Express Bridge +	024b  C51 PCI Express Bridge +	024c  C51 PCI Express Bridge +	024d  C51 PCI Express Bridge +	024e  C51 PCI Express Bridge +	024f  C51 PCI Express Bridge +	0250  NV25 [GeForce4 Ti 4600] +	0251  NV25 [GeForce4 Ti 4400] +		1043 8023  v8440 GeForce 4 Ti4400 +		10de 0251  PNY GeForce4 Ti 4400 +		1462 8710  PNY GeForce4 Ti 4400 +	0252  NV25 [GeForce4 Ti] +	0253  NV25 [GeForce4 Ti 4200] +		107d 2896  WinFast A250 LE TD (Dual VGA/TV-out/DVI) +		147b 8f09  Siluro (Dual VGA/TV-out/DVI) +	0258  NV25GL [Quadro4 900 XGL] +	0259  NV25GL [Quadro4 750 XGL] +	025b  NV25GL [Quadro4 700 XGL] +	0260  MCP51 LPC Bridge +		103c 2a34  Pavilion a1677c +		103c 30b7  Presario V6133CL +		1043 81bc  A8N-VM CSM Mainboard +		1458 5001  GA-M55plus-S3G +		1462 7207  K8NGM2 series +	0261  MCP51 LPC Bridge +		105b 0cad  Winfast 6100K8MB +	0262  MCP51 LPC Bridge +	0263  MCP51 LPC Bridge +	0264  MCP51 SMBus +		103c 2a34  Pavilion a1677c +		103c 30b7  Presario V6133CL +		1043 81bc  A8N-VM CSM Mainboard +		105b 0cad  Winfast 6100K8MB +		1462 7207  K8NGM2 series +	0265  MCP51 IDE +		103c 2a34  Pavilion a1677c +		103c 30b7  Presario V6133CL +		1043 81bc  A8N-VM CSM Mainboard +		1462 7207  K8NGM2 series +# Foxconn has used a wrong vendor ID for this one +		f05b 0cad  Winfast 6100K8MB +	0266  MCP51 Serial ATA Controller +		103c 2a34  Pavilion a1677c +		103c 30b7  Presario V6133CL +		1043 81bc  A8N-VM CSM Mainboard +		1462 7207  K8NGM2 series +	0267  MCP51 Serial ATA Controller +		103c 2a34  Pavilion a1677c +		1043 81bc  A8N-VM CSM Mainboard +		1462 7207  K8NGM2 series +	0268  MCP51 Ethernet Controller +	0269  MCP51 Ethernet Controller +		103c 2a34  Pavilion a1677c +		103c 30b7  Presario V6133CL +		1043 8141  A8N-VM CSM Mainboard +		1462 7207  K8NGM2 series +	026a  MCP51 MCI +	026b  MCP51 AC97 Audio Controller +		105b 0cad  Winfast 6100K8MB +	026c  MCP51 High Definition Audio +		103c 2a34  Pavilion a1677c +		103c 30b5  Presario V3242AU +		103c 30b7  Presario V6133CL +		10de cb84  ASUSTeK Computer Inc. A8N-VM CSM Mainboard +		1462 7207  K8NGM2 series +	026d  MCP51 USB Controller +		103c 2a34  Pavilion a1677c +		103c 30b7  Presario V6133CL +		1043 81bc  A8N-VM CSM Mainboard +		105b 0cad  Winfast 6100K8MB +		1462 7207  K8NGM2 series +	026e  MCP51 USB Controller +		103c 2a34  Pavilion a1677c +		103c 30b7  Presario V6133CL +		1043 81bc  A8N-VM CSM Mainboard +		105b 0cad  Winfast 6100K8MB +		1462 7207  K8NGM2 series +	026f  MCP51 PCI Bridge +		103c 30b7  Presario V6133CL +	0270  MCP51 Host Bridge +		103c 2a34  Pavilion a1677c +		103c 30b7  Presario V6133CL +		1043 81bc  A8N-VM CSM Mainboard +		105b 0cad  Winfast 6100K8MB +		1458 5001  GA-M55plus-S3G +		1462 7207  K8NGM2 series +	0271  MCP51 PMU +		103c 30b5  Presario V3242AU +		103c 30b7  Presario V6133CL +	0272  MCP51 Memory Controller 0 +		103c 2a34  Pavilion a1677c +		105b 0cad  Winfast 6100K8MB +	027e  C51 Memory Controller 2 +		103c 2a34  Pavilion a1677c +		103c 30b7  Presario V6133CL +		1043 81cd  A8N-VM CSM Mainboard +		1458 5000  GA-M55plus-S3G +		1462 7207  K8NGM2 series +	027f  C51 Memory Controller 3 +		103c 2a34  Pavilion a1677c +		103c 30b7  Presario V6133CL +		1043 81cd  A8N-VM CSM Mainboard +		1458 5000  GA-M55plus-S3G +		1462 7207  K8NGM2 series +	0280  NV28 [GeForce4 Ti 4800] +	0281  NV28 [GeForce4 Ti 4200 AGP 8x] +	0282  NV28 [GeForce4 Ti 4800 SE] +	0286  NV28M [GeForce4 Ti 4200 Go AGP 8x] +	0288  NV28GL [Quadro4 980 XGL] +	0289  NV28GL [Quadro4 780 XGL] +	028c  NV28GLM [Quadro4 Go700] +	0290  G71 [GeForce 7900 GTX] +	0291  G71 [GeForce 7900 GT/GTO] +		10de 042b  NX7900GTO-T2D512E [7900 GTO] +	0292  G71 [GeForce 7900 GS] +	0293  G71 [GeForce 7900 GX2] +	0294  G71 [GeForce 7950 GX2] +	0295  G71 [GeForce 7950 GT] +		1043 8225  GeForce 7950 GT +		107d 2a68  WinFast PX7950GT TDH +		1462 0663  NX7950GT-VT2D512EZ-HD +	0297  G71M [GeForce Go 7950 GTX] +	0298  G71M [GeForce Go 7900 GS] +	0299  G71M [GeForce Go 7900 GTX] +	029a  G71GLM [Quadro FX 2500M] +	029b  G71GLM [Quadro FX 1500M] +	029c  G71GL [Quadro FX 5500] +	029d  G71GL [Quadro FX 3500] +		1028 019b  G71GLM [Quadro FX 3500M] +	029e  G71GL [Quadro FX 1500] +	029f  G71GL [Quadro FX 4500 X2] +# Xbox Graphics Processing Unit (Integrated). GeForce3 derivative (NV20 < NV2A < NV25). +	02a0  NV2A [XGPU] +	02a5  MCPX CPU Bridge +	02a6  MCPX Memory Controller +	02e0  G73 [GeForce 7600 GT] +		02e0 2249  GF 7600GT 560M 256MB DDR3 DUAL DVI TV +	02e1  G73 [GeForce 7600 GS] +		1682 222b  PV-T73K-UAL3 (256MB) +		1682 2247  GF 7600GS 512MB DDR2 +	02e2  G73 [GeForce 7300 GT] +	02e3  G71 [GeForce 7900 GS] +	02e4  G71 [GeForce 7950 GT] +		1682 2271  PV-T71A-YDF7 (512MB) +	02f0  C51 Host Bridge +		103c 2a34  Pavilion a1677c +		103c 30b7  Presario V6133CL +		1043 81cd  A8N-VM CSM Mainboard +		1462 7207  K8NGM2 series +	02f1  C51 Host Bridge +		1458 5000  GA-M55plus-S3G +	02f2  C51 Host Bridge +	02f3  C51 Host Bridge +	02f4  C51 Host Bridge +	02f5  C51 Host Bridge +	02f6  C51 Host Bridge +	02f7  C51 Host Bridge +	02f8  C51 Memory Controller 5 +		103c 2a34  Pavilion a1677c +		103c 30b7  Presario V6133CL +		1043 81cd  A8N-VM CSM Mainboard +		1458 5000  GA-M55plus-S3G +		1462 7207  K8NGM2 series +	02f9  C51 Memory Controller 4 +		103c 2a34  Pavilion a1677c +		103c 30b7  Presario V6133CL +		1043 81cd  A8N-VM CSM Mainboard +		1458 5000  GA-M55plus-S3G +		1462 7207  K8NGM2 series +	02fa  C51 Memory Controller 0 +		103c 2a34  Pavilion a1677c +		103c 30b7  Presario V6133CL +		1043 81cd  A8N-VM CSM Mainboard +		1458 5000  GA-M55plus-S3G +		1462 7207  K8NGM2 series +	02fb  C51 PCI Express Bridge +	02fc  C51 PCI Express Bridge +		103c 30b7  Presario V6133CL +	02fd  C51 PCI Express Bridge +		103c 30b7  Presario V6133CL +	02fe  C51 Memory Controller 1 +		103c 2a34  Pavilion a1677c +		103c 30b7  Presario V6133CL +		1043 81cd  A8N-VM CSM Mainboard +		1458 5000  GA-M55plus-S3G +		1462 7207  K8NGM2 series +	02ff  C51 Host Bridge +		103c 2a34  Pavilion a1677c +		103c 30b7  Presario V6133CL +		1043 81cd  A8N-VM CSM Mainboard +		1458 5000  GA-M55plus-S3G +		1462 7207  K8NGM2 series +	0300  NV30 [GeForce FX] +	0301  NV30 [GeForce FX 5800 Ultra] +	0302  NV30 [GeForce FX 5800] +	0308  NV30GL [Quadro FX 2000] +	0309  NV30GL [Quadro FX 1000] +	0311  NV31 [GeForce FX 5600 Ultra] +	0312  NV31 [GeForce FX 5600] +	0314  NV31 [GeForce FX 5600XT] +		1043 814a  V9560XT/TD +	0316  NV31M +	0318  NV31GL +	031a  NV31M [GeForce FX Go5600] +	031b  NV31M [GeForce FX Go5650] +	031c  NV31GLM [Quadro FX Go700] +	0320  NV34 [GeForce FX 5200] +	0321  NV34 [GeForce FX 5200 Ultra] +	0322  NV34 [GeForce FX 5200] +		1043 02fb  V9250 Magic +		1043 8180  V9520-X/TD/128M +		107d 2967  WinFast A340T 128MB +		1462 9110  MS-8911 (FX5200-TD128) +		1462 9171  MS-8917 (FX5200-T128) +		1462 9360  MS-8936 (FX5200-T128) +		1682 1351  GeForce FX 5200 +	0323  NV34 [GeForce FX 5200LE] +	0324  NV34M [GeForce FX Go5200 64M] +		1028 0196  Inspiron 5160 +		103c 006a  Pavilion ZD7000 laptop +		1071 8160  MIM2000 +	0325  NV34M [GeForce FX Go5250] +	0326  NV34 [GeForce FX 5500] +		1458 310d  GeForce FX 5500 128 MB +		1682 2034  GeForce 5500 256 MB +	0327  NV34 [GeForce FX 5100] +	0328  NV34M [GeForce FX Go5200 32M/64M] +	0329  NV34M [GeForce FX Go5200] +		10de 0010  Powerbook G4 +	032a  NV34GL [Quadro NVS 280 PCI] +	032b  NV34GL [Quadro FX 500/600 PCI] +	032c  NV34M [GeForce FX Go5300 / Go5350] +	032d  NV34M [GeForce FX Go5100] +	032e  NV34 +	032f  NV34 [GeForce FX 5200] +	0330  NV35 [GeForce FX 5900 Ultra] +		1043 8137  V9950 Ultra / 256 MB +	0331  NV35 [GeForce FX 5900] +		1043 8145  V9950GE +	0332  NV35 [GeForce FX 5900XT] +	0333  NV38 [GeForce FX 5950 Ultra] +	0334  NV35 [GeForce FX 5900ZT] +		1462 9373  FX5900ZT-VTD128 (MS-8937) +	0338  NV35GL [Quadro FX 3000] +	033f  NV35GL [Quadro FX 700] +	0341  NV36 [GeForce FX 5700 Ultra] +		1462 9380  MS-8938 (FX5700U-TD128) +	0342  NV36 [GeForce FX 5700] +	0343  NV36 [GeForce FX 5700LE] +	0344  NV36 [GeForce FX 5700VE] +	0347  NV36M [GeForce FX Go5700] +		103c 006a  NX9500 +	0348  NV36M [GeForce FX Go5700] +	034c  NV36 [Quadro FX Go1000] +	034d  NV36 +	034e  NV36GL [Quadro FX 1100] +	0360  MCP55 LPC Bridge +	0361  MCP55 LPC Bridge +		1028 0221  PowerEdge R805 MCP55 LPC Bridge +	0362  MCP55 LPC Bridge +		147b 1c24  KN9 series mainboard +	0363  MCP55 LPC Bridge +	0364  MCP55 LPC Bridge +		1028 0221  PowerEdge R805 MCP55 LPC Bridge +	0365  MCP55 LPC Bridge +	0366  MCP55 LPC Bridge +	0367  MCP55 LPC Bridge +	0368  MCP55 SMBus Controller +		1028 020c  PowerEdge M605 MCP55 SMBus +		1028 0221  PowerEdge R805 MCP55 SMBus +		147b 1c24  KN9 series mainboard +	0369  MCP55 Memory Controller +		147b 1c24  KN9 series mainboard +	036a  MCP55 Memory Controller +	036b  MCP55 SMU +	036c  MCP55 USB Controller +		1028 020c  PowerEdge M605 MCP55 USB Controller +		1028 0221  PowerEdge R805 MCP55 USB Controller +		147b 1c24  KN9 series mainboard +	036d  MCP55 USB Controller +		1028 020c  PowerEdge M605 MCP55 USB Controller +		1028 0221  PowerEdge R805 MCP55 USB Controller +		147b 1c24  KN9 series mainboard +	036e  MCP55 IDE +		147b 1c24  KN9 series mainboard +	0370  MCP55 PCI bridge +	0371  MCP55 High Definition Audio +		147b 1c24  KN9 series mainboard +	0372  MCP55 Ethernet +	0373  MCP55 Ethernet +		147b 1c24  KN9 series mainboard +	0374  MCP55 PCI Express bridge +	0375  MCP55 PCI Express bridge +	0376  MCP55 PCI Express bridge +	0377  MCP55 PCI Express bridge +	0378  MCP55 PCI Express bridge +	037a  MCP55 Memory Controller +	037e  MCP55 SATA Controller +	037f  MCP55 SATA Controller +		1028 0221  PowerEdge R805 MCP55 SATA Controller +		147b 1c24  KN9 series mainboard +	038b  G73 [GeForce 7650 GS] +	0390  G73 [GeForce 7650 GS] +	0391  G73 [GeForce 7600 GT] +		1458 3427  GV-NX76T128D-RH +		1462 0452  NX7600GT-VT2D256E +	0392  G73 [GeForce 7600 GS] +		1462 0622  NX7600GS-T2D256EH +	0393  G73 [GeForce 7300 GT] +		10de 0412  NX7300GT-TD256EH +		1462 0412  NX7300GT-TD256EH +	0394  G73 [GeForce 7600 LE] +	0395  G73 [GeForce 7300 GT] +	0396  G73 +	0397  G73M [GeForce Go 7700] +	0398  G73M [GeForce Go 7600] +		1025 006c  Acer 9814 WKMI +	0399  G73M [GeForce Go 7600 GT] +	039a  G73M [Quadro NVS 300M] +	039b  G73M [GeForce Go 7900 SE] +	039c  G73GLM [Quadro FX 550M] +		10de 039c  Quadro FX 560M +	039d  G73 +	039e  G73GL [Quadro FX 560] +	039f  G73 +	03a0  C55 Host Bridge +	03a1  C55 Host Bridge +	03a2  C55 Host Bridge +	03a3  C55 Host Bridge +	03a4  C55 Host Bridge +	03a5  C55 Host Bridge +	03a6  C55 Host Bridge +	03a7  C55 Host Bridge +	03a8  C55 Memory Controller +	03a9  C55 Memory Controller +	03aa  C55 Memory Controller +	03ab  C55 Memory Controller +	03ac  C55 Memory Controller +	03ad  C55 Memory Controller +	03ae  C55 Memory Controller +	03af  C55 Memory Controller +	03b0  C55 Memory Controller +	03b1  C55 Memory Controller +	03b2  C55 Memory Controller +	03b3  C55 Memory Controller +	03b4  C55 Memory Controller +	03b5  C55 Memory Controller +	03b6  C55 Memory Controller +	03b7  C55 PCI Express bridge +	03b8  C55 PCI Express bridge +	03b9  C55 PCI Express bridge +	03ba  C55 Memory Controller +	03bb  C55 PCI Express bridge +	03bc  C55 Memory Controller +	03d0  C61 [GeForce 6150SE nForce 430] +		1028 020e  Inspiron 531 +	03d1  C61 [GeForce 6100 nForce 405] +	03d2  C61 [GeForce 6100 nForce 400] +	03d5  C61 [GeForce 6100 nForce 420] +	03d6  C61 [GeForce 7025 / nForce 630a] +	03e0  MCP61 LPC Bridge +		1028 020e  Inspiron 531 +		1849 03e0  939NF6G-VSTA Board +	03e1  MCP61 LPC Bridge +		1043 83a4  M4N68T series motherboard +	03e2  MCP61 Host Bridge +		1043 83a4  M4N68T series motherboard +	03e3  MCP61 LPC Bridge +	03e4  MCP61 High Definition Audio +	03e5  MCP61 Ethernet +	03e6  MCP61 Ethernet +	03e7  MCP61 SATA Controller +	03e8  MCP61 PCI Express bridge +		1028 020e  Inspiron 531 +		1849 03e8  939NF6G-VSTA Board +	03e9  MCP61 PCI Express bridge +		1028 020e  Inspiron 531 +		1849 03e9  939NF6G-VSTA Board +	03ea  MCP61 Memory Controller +		1028 020e  Inspiron 531 +		1849 03ea  939NF6G-VSTA Board +	03eb  MCP61 SMBus +		1028 020e  Inspiron 531 +		1043 83a4  M4N68T series motherboard +		1849 03eb  939NF6G-VSTA Board +	03ec  MCP61 IDE +		1025 0392  ET1350 +		1028 020e  Inspiron 531 +		1043 83a4  M4N68T series motherboard +		1849 03ec  939NF6G-VSTA Board +	03ee  MCP61 Ethernet +	03ef  MCP61 Ethernet +		1025 8000  ET1350 +		1028 020e  Inspiron 531 +		1043 83a4  M4N68T series motherboard +		1849 03ef  939NF6G-VSTA Board +	03f0  MCP61 High Definition Audio +		1028 020e  Inspiron 531 +		1043 8415  M4N68T series motherboard +		1849 0888  939NF6G-VSTA Board +	03f1  MCP61 USB 1.1 Controller +		1028 020e  Inspiron 531 +		1043 83a4  M4N68T series motherboard +		1849 03f1  939NF6G-VSTA Board +	03f2  MCP61 USB 2.0 Controller +		1028 020e  Inspiron 531 +		1043 83a4  M4N68T series motherboard +		1849 03f2  939NF6G-VSTA Board +	03f3  MCP61 PCI bridge +		1028 020e  Inspiron 531 +		1849 03f3  939NF6G-VSTA Board +	03f4  MCP61 SMU +	03f5  MCP61 Memory Controller +		1028 020e  Inspiron 531 +		1043 83a4  M4N68T series motherboard +		1849 03eb  939NF6G-VSTA Board +	03f6  MCP61 SATA Controller +		1028 020e  Inspiron 531 +		1043 83a4  M4N68T series motherboard +		1849 03f6  939NF6G-VSTA Board +	03f7  MCP61 SATA Controller +	0400  G84 [GeForce 8600 GTS] +		1043 8241  EN8600GTS +	0401  G84 [GeForce 8600 GT] +	0402  G84 [GeForce 8600 GT] +		1458 3455  GV-NX86T512H +		1462 0910  NX8600GT-T2D256EZ +	0403  G84 [GeForce 8600 GS] +	0404  G84 [GeForce 8400 GS] +		1462 1230  NX8400GS-TD256E +	0405  G84M [GeForce 9500M GS] +	0406  G84 [GeForce 8300 GS] +	0407  G84M [GeForce 8600M GT] +	0408  G84M [GeForce 9650M GS] +	0409  G84M [GeForce 8700M GT] +	040a  G84GL [Quadro FX 370] +	040b  G84GLM [Quadro NVS 320M] +	040c  G84GLM [Quadro FX 570M] +		17aa 20d9  ThinkPad T61p +	040d  G84GLM [Quadro FX 1600M] +	040e  G84GL [Quadro FX 570] +	040f  G84GL [Quadro FX 1700] +	0410  G92 [GeForce GT 330] +	0414  G92 [GeForce 9800 GT] +	0420  G86 [GeForce 8400 SE] +	0421  G86 [GeForce 8500 GT] +		1462 0960  NX8500GT-TD512EH/M2 +	0422  G86 [GeForce 8400 GS] +	0423  G86 [GeForce 8300 GS] +	0424  G86 [GeForce 8400 GS] +	0425  G86M [GeForce 8600M GS] +		1025 0121  Aspire 5920G +	0426  G86M [GeForce 8400M GT] +	0427  G86M [GeForce 8400M GS] +		103c 30cc  Pavilion dv6700 +		103c 30cf  Pavilion dv9668eg Laptop +	0428  G86M [GeForce 8400M G] +	0429  G86M [Quadro NVS 140M] +		17aa 20d8  ThinkPad T61 +	042a  G86M [Quadro NVS 130M] +	042b  G86M [Quadro NVS 135M] +	042c  G86 [GeForce 9400 GT] +	042d  G86GLM [Quadro FX 360M] +	042e  G86M [GeForce 9300M G] +	042f  G86 [Quadro NVS 290] +	0440  MCP65 LPC Bridge +	0441  MCP65 LPC Bridge +	0442  MCP65 LPC Bridge +		103c 30cf  Pavilion dv9668eg Laptop +	0443  MCP65 LPC Bridge +	0444  MCP65 Memory Controller +		103c 30cf  Pavilion dv9668eg Laptop +	0445  MCP65 Memory Controller +	0446  MCP65 SMBus +		103c 30cf  Pavilion dv9668eg Laptop +	0447  MCP65 SMU +		103c 30cf  Pavilion dv9668eg Laptop +	0448  MCP65 IDE +		103c 30cf  Pavilion dv9668eg Laptop +	0449  MCP65 PCI bridge +		10de cb84  HP Pavilion dv9668eg Laptop +	044a  MCP65 High Definition Audio +		103c 30cf  Pavilion dv9668eg Laptop +	044b  MCP65 High Definition Audio +	044c  MCP65 AHCI Controller +	044d  MCP65 AHCI Controller +	044e  MCP65 AHCI Controller +	044f  MCP65 AHCI Controller +	0450  MCP65 Ethernet +		103c 30cf  Pavilion dv9668eg Laptop +	0451  MCP65 Ethernet +	0452  MCP65 Ethernet +	0453  MCP65 Ethernet +	0454  MCP65 USB 1.1 OHCI Controller +		103c 30cf  Pavilion dv9668eg Laptop +	0455  MCP65 USB 2.0 EHCI Controller +		103c 30cf  Pavilion dv9668eg Laptop +	0456  MCP65 USB Controller +	0457  MCP65 USB Controller +	0458  MCP65 PCI Express bridge +		10de 0000  MCP65 PCI Express bridge +	0459  MCP65 PCI Express bridge +		10de 0000  MCP65 PCI Express bridge +	045a  MCP65 PCI Express bridge +		10de 0000  MCP65 PCI Express bridge +	045b  MCP65 PCI Express bridge +		10de 0000  MCP65 PCI Express bridge +	045c  MCP65 SATA Controller +	045d  MCP65 SATA Controller +		103c 30cf  Pavilion dv9668eg Laptop +	045e  MCP65 SATA Controller +	045f  MCP65 SATA Controller +	0531  C67 [GeForce 7150M / nForce 630M] +	0533  C67 [GeForce 7000M / nForce 610M] +	053a  C68 [GeForce 7050 PV / nForce 630a] +	053b  C68 [GeForce 7050 PV / nForce 630a] +		1043 8308  M2N68-AM Motherbord +	053e  C68 [GeForce 7025 / nForce 630a] +	0541  MCP67 Memory Controller +	0542  MCP67 SMBus +		1043 8308  M2N68-AM Motherbord +	0543  MCP67 Co-processor +	0547  MCP67 Memory Controller +		1043 8308  M2N68-AM Motherbord +		1849 0547  ALiveNF7G-HDready +	0548  MCP67 ISA Bridge +		1043 8308  M2N68-AM Motherboard +	054c  MCP67 Ethernet +		1043 8308  M2N68-AM Motherbord +		1849 054c  ALiveNF7G-HDready, MCP67 Gigabit Ethernet +	054d  MCP67 Ethernet +	054e  MCP67 Ethernet +	054f  MCP67 Ethernet +	0550  MCP67 AHCI Controller +		1043 8308  M2N68-AM Motherboard +	0554  MCP67 AHCI Controller +		1043 8308  M2N68-AM Motherboard +	0555  MCP67 SATA Controller +		1043 8308  M2N68-AM Motherboard +	055c  MCP67 High Definition Audio +		1043 8290  M2N68-AM Motherboard +	055d  MCP67 High Definition Audio +	055e  MCP67 OHCI USB 1.1 Controller +		1043 8308  M2N68-AM Motherboard +	055f  MCP67 EHCI USB 2.0 Controller +		1043 8308  M2N68-AM Motherboard +	0560  MCP67 IDE Controller +		f043 8308  M2N68-AM Motherboard +	0561  MCP67 PCI Bridge +	0562  MCP67 PCI Express Bridge +		1849 0562  ALiveNF7G-HDready +	0563  MCP67 PCI Express Bridge +	0568  MCP78S [GeForce 8200] Memory Controller +		103c 2a9e  Pavilion p6310f +		1043 82e8  M3N72-D +		1462 7508  K9N2GM-FIH +		1849 0568  K10N78FullHD-hSLI R3.0 Memory Controller +	0569  MCP78S [GeForce 8200] PCI Express Bridge +		103c 2a9e  Pavilion p6310f +		1043 82e8  M3N72-D +		1462 7508  K9N2GM-FIH +		1849 0569  K10N78FullHD-hSLI R3.0 PCI Express Bridge +	056a  MCP73 [nForce 630i] USB 2.0 Controller (EHCI) +		1019 297a  MCP73PVT-SM +	056c  MCP73 IDE +		1019 297a  MCP73PVT-SM +		1afa 7150  JW-IN7150-HD +	056d  MCP73 PCI Express bridge +		1019 297a  MCP73PVT-SM +	056e  MCP73 PCI Express bridge +		1019 297a  MCP73PVT-SM +	056f  MCP73 PCI Express bridge +		1019 297a  MCP73PVT-SM +	05b1  NF200 PCIe 2.0 switch +	05b8  NF200 PCIe 2.0 switch for GTX 295 +	05be  NF200 PCIe 2.0 switch for Quadro Plex S4 / Tesla S870 / Tesla S1070 / Tesla S2050 +	05e0  GT200b [GeForce GTX 295] +	05e1  GT200 [GeForce GTX 280] +	05e2  GT200 [GeForce GTX 260] +	05e3  GT200b [GeForce GTX 285] +		1682 2490  GX-285N-ZDF +	05e6  GT200b [GeForce GTX 275] +	05e7  GT200GL [Tesla C1060 / M1060] +		10de 0595  Tesla T10 Processor +		10de 068f  Tesla T10 Processor +		10de 0697  Tesla M1060 +		10de 0714  Tesla M1060 +		10de 0743  Tesla M1060 +	05ea  GT200 [GeForce GTX 260] +	05eb  GT200 [GeForce GTX 295] +	05ed  GT200GL [Quadro Plex 2200 D2] +	05f1  GT200 [GeForce GTX 280] +	05f2  GT200 [GeForce GTX 260] +	05f8  GT200GL [Quadro Plex 2200 S4] +	05f9  GT200GL [Quadro CX] +	05fd  GT200GL [Quadro FX 5800] +	05fe  GT200GL [Quadro FX 4800] +	05ff  GT200GL [Quadro FX 3800] +	0600  G92 [GeForce 8800 GTS 512] +	0601  G92 [GeForce 9800 GT] +	0602  G92 [GeForce 8800 GT] +	0603  G92 [GeForce GT 230 OEM] +	0604  G92 [GeForce 9800 GX2] +	0605  G92 [GeForce 9800 GT] +	0606  G92 [GeForce 8800 GS] +	0607  G92 [GeForce GTS 240] +	0608  G92M [GeForce 9800M GTX] +	0609  G92M [GeForce 8800M GTS] +		106b 00a7  GeForce 8800 GS +	060a  G92M [GeForce GTX 280M] +	060b  G92M [GeForce 9800M GT] +	060c  G92M [GeForce 8800M GTX] +	060d  G92 [GeForce 8800 GS] +	060f  G92M [GeForce GTX 285M] +	0610  G92 [GeForce 9600 GSO] +		1682 2385  GeForce 9600 GSO 768mb +	0611  G92 [GeForce 8800 GT] +		107d 2ab0  Winfast PX8800 GT PCI-E +		19da 1040  ZT-88TES2P-FSP +	0612  G92 [GeForce 9800 GTX / 9800 GTX+] +	0613  G92 [GeForce 9800 GTX+] +	0614  G92 [GeForce 9800 GT] +		107d 2ab3  WinFast PX9800 GT (S-Fanpipe) +	0615  G92 [GeForce GTS 250] +		3842 1150  GeForce GTS 250 P/N 512-P3-1150-TR +# Overclocked +		3842 1151  GeForce GTS 250 P/N 512-P3-1151-TR +		3842 1155  GeForce GTS 250 P/N 01G-P3-1155-TR +# Overclocked +		3842 1156  GeForce GTS 250 P/N 01G-P3-1156-TR +	0617  G92M [GeForce 9800M GTX] +	0618  G92M [GeForce GTX 260M] +	0619  G92GL [Quadro FX 4700 X2] +	061a  G92GL [Quadro FX 3700] +	061b  G92GL [Quadro VX 200] +	061c  G92GLM [Quadro FX 3600M] +	061d  G92GLM [Quadro FX 2800M] +	061e  G92GLM [Quadro FX 3700M] +	061f  G92GLM [Quadro FX 3800M] +	0620  G94 [GeForce 9800 GT] +	0621  G94 [GeForce GT 230] +	0622  G94 [GeForce 9600 GT] +		107d 2ac1  WinFast PX9600GT 1024MB +		1458 3481  GV-NX96T512HP +	0623  G94 [GeForce 9600 GS] +	0624  G94 [GeForce 9600 GT Green Edition] +	0625  G94 [GeForce 9600 GSO 512] +	0626  G94 [GeForce GT 130] +	0627  G94 [GeForce GT 140] +	0628  G94M [GeForce 9800M GTS] +	062a  G94M [GeForce 9700M GTS] +	062b  G94M [GeForce 9800M GS] +	062c  G94M [GeForce 9800M GTS] +	062d  G94 [GeForce 9600 GT] +	062e  G94 [GeForce 9600 GT] +		106b 0605  GeForce GT 130 +	062f  G94 [GeForce 9800 S] +	0630  G94 [GeForce 9600 GT] +	0631  G94M [GeForce GTS 160M] +	0632  G94M [GeForce GTS 150M] +	0633  G94 [GeForce GT 220] +	0635  G94 [GeForce 9600 GSO] +	0637  G94 [GeForce 9600 GT] +	0638  G94GL [Quadro FX 1800] +	063a  G94GLM [Quadro FX 2700M] +	063f  G94 [GeForce 9600 GE] +	0640  G96 [GeForce 9500 GT] +	0641  G96 [GeForce 9400 GT] +		1682 4009  PV-T94G-ZAFG +	0642  G96 [D9M-10] +	0643  G96 [GeForce 9500 GT] +	0644  G96 [GeForce 9500 GS] +	0645  G96 [GeForce 9500 GS] +	0646  G96 [GeForce GT 120] +	0647  G96M [GeForce 9600M GT] +	0648  G96M [GeForce 9600M GS] +	0649  G96M [GeForce 9600M GT] +		1043 202d  GeForce GT 220M +	064a  G96M [GeForce 9700M GT] +	064b  G96M [GeForce 9500M G] +	064c  G96M [GeForce 9650M GT] +	064d  G96 [GeForce 9600 GT] +	064e  G96 [GeForce 9600 GT / 9800 GT] +	0651  G96M [GeForce G 110M] +	0652  G96M [GeForce GT 130M] +		152d 0850  GeForce GT 240M LE +	0653  G96M [GeForce GT 120M] +	0654  G96M [GeForce GT 220M] +		1043 14a2  GeForce GT 320M +		1043 14d2  GeForce GT 320M +	0655  G96 [GeForce GT 120] +	0656  G96 [GeForce 9650 S] +	0658  G96GL [Quadro FX 380] +	0659  G96GL [Quadro FX 580] +	065a  G96GLM [Quadro FX 1700M] +	065b  G96 [GeForce 9400 GT] +	065c  G96GLM [Quadro FX 770M] +	065d  G96 [GeForce 9500 GA / 9600 GT / GTS 250] +	065f  G96 [GeForce G210] +	06c0  GF100 [GeForce GTX 480] +	06c4  GF100 [GeForce GTX 465] +	06ca  GF100M [GeForce GTX 480M] +	06cb  GF100 [GeForce GTX 480] +	06cd  GF100 [GeForce GTX 470] +	06d1  GF100GL [Tesla C2050 / C2070] +		10de 0771  Tesla C2050 +		10de 0772  Tesla C2070 +	06d2  GF100GL [Tesla M2070] +		10de 0774  Tesla M2070 +		10de 0830  Tesla M2070 +		10de 0842  Tesla M2070 +		10de 088f  Tesla X2070 +		10de 0908  Tesla M2070 +	06d8  GF100GL [Quadro 6000] +	06d9  GF100GL [Quadro 5000] +	06da  GF100GLM [Quadro 5000M] +	06dc  GF100GL [Quadro 6000] +	06dd  GF100GL [Quadro 4000] +	06de  GF100GL [Tesla T20 Processor] +		10de 0773  Tesla S2050 +		10de 082f  Tesla M2050 +		10de 0840  Tesla X2070 +		10de 0842  Tesla M2050 +		10de 0846  Tesla M2050 +		10de 0866  Tesla M2050 +		10de 0907  Tesla M2050 +		10de 091e  Tesla M2050 +	06df  GF100GL [Tesla M2070-Q] +		10de 084d  Tesla M2070-Q +		10de 087f  Tesla M2070-Q +	06e0  G98 [GeForce 9300 GE] +	06e1  G98 [GeForce 9300 GS] +	06e2  G98 [GeForce 8400] +	06e3  G98 [GeForce 8300 GS] +	06e4  G98 [GeForce 8400 GS Rev. 2] +		1458 3475  GV-NX84S256HE [GeForce 8400 GS] +	06e5  G98M [GeForce 9300M GS] +	06e6  G98 [GeForce G 100] +	06e7  G98 [GeForce 9300 SE] +	06e8  G98M [GeForce 9200M GS] +		103c 360b  GeForce 9200M GE +	06e9  G98M [GeForce 9300M GS] +		1043 19b2  U6V laptop +	06ea  G98M [Quadro NVS 150M] +	06eb  G98M [Quadro NVS 160M] +	06ec  G98M [GeForce G 105M] +	06ed  G98 [GeForce 9600 GT / 9800 GT] +	06ee  G98 [GeForce 9600 GT / 9800 GT] +	06ef  G98M [GeForce G 103M] +	06f1  G98M [GeForce G 105M] +	06f8  G98 [Quadro NVS 420] +	06f9  G98GL [Quadro FX 370 LP] +	06fa  G98 [Quadro NVS 450] +	06fb  G98GLM [Quadro FX 370M] +	06fd  G98 [Quadro NVS 295] +	06ff  G98 [HICx16 + Graphics] +		10de 0711  HICx8 + Graphics +	0751  MCP78S [GeForce 8200] Memory Controller +		103c 2a9e  Pavilion p6310f +		1043 82e8  M3N72-D +		1462 7508  K9N2GM-FIH +		1849 0751  K10N78FullHD-hSLI R3.0 Memory Controller +	0752  MCP78S [GeForce 8200] SMBus +		103c 2a9e  Pavilion p6310f +		1043 82e8  M3N72-D +		1462 7508  K9N2GM-FIH +		1849 0752  K10N78FullHD-hSLI R3.0 SMBus +	0753  MCP78S [GeForce 8200] Co-Processor +		103c 2a9e  Pavilion p6310f +		1043 82e8  M3N72-D +		1462 7508  K9N2GM-FIH +		1849 0753  K10N78FullHD-hSLI R3.0 Co-Processor +	0754  MCP78S [GeForce 8200] Memory Controller +		103c 2a9e  Pavilion p6310f +		1043 82e8  M3N72-D +		1462 7508  K9N2GM-FIH +		1849 0754  K10N78FullHD-hSLI R3.0 Memory Controller +	0759  MCP78S [GeForce 8200] IDE +		1043 82e8  M3N72-D +		1462 7508  K9N2GM-FIH +		1849 0759  K10N78FullHD-hSLI R3.0 IDE +	075a  MCP78S [GeForce 8200] PCI Bridge +		103c 2a9e  Pavilion p6310f +		1043 82e8  M3N72-D +		1849 075a  K10N78FullHD-hSLI R3.0 PCI Bridge +	075b  MCP78S [GeForce 8200] PCI Express Bridge +		103c 2a9e  Pavilion p6310f +		1043 82e8  M3N72-D +		1462 7508  K9N2GM-FIH +		1849 075b  K10N78FullHD-hSLI R3.0 PCI Express Bridge +	075c  MCP78S [GeForce 8200] LPC Bridge +		103c 2a9e  Pavilion p6310f +		1462 7508  K9N2GM-FIH +		1849 075c  K10N78FullHD-hSLI R3.0 LPC Bridge +	075d  MCP78S [GeForce 8200] LPC Bridge +		1043 82e8  M3N72-D +	0760  MCP77 Ethernet +		103c 2a9e  Pavilion p6310f +		1043 82e8  M3N72-D +		1462 7508  K9N2GM-FIH +		1849 0760  K10N78FullHD-hSLI R3.0 Ethernet +	0761  MCP77 Ethernet +	0762  MCP77 Ethernet +	0763  MCP77 Ethernet +	0774  MCP72XE/MCP72P/MCP78U/MCP78S High Definition Audio +		103c 2a9e  Pavilion p6310f +# has a Realtek ALC1200 HDAudio Codec +		1043 82fe  M3N72-D +		1462 7508  K9N2GM-FIH +		1849 3662  K10N78FullHD-hSLI R3.0 High Definition Audio +	0778  MCP78S [GeForce 8200] PCI Express Bridge +		103c 2a9e  Pavilion p6310f +		1043 82e8  M3N72-D +		1462 7508  K9N2GM-FIH +		1849 0778  K10N78FullHD-hSLI R3.0 PCI Express Bridge +	077a  MCP78S [GeForce 8200] PCI Bridge +		103c 2a9e  Pavilion p6310f +		1043 82e8  M3N72-D +		1462 7508  K9N2GM-FIH +		1849 077a  K10N78FullHD-hSLI R3.0 PCI Bridge +	077b  MCP78S [GeForce 8200] OHCI USB 1.1 Controller +		103c 2a9e  Pavilion p6310f +		1043 82e8  M3N72-D +		1462 7508  K9N2GM-FIH +		1849 077b  K10N78FullHD-hSLI R3.0 OHCI USB 1.1 Controller +	077c  MCP78S [GeForce 8200] EHCI USB 2.0 Controller +		103c 2a9e  Pavilion p6310f +		1043 82e8  M3N72-D +		1462 7508  K9N2GM-FIH +		1849 077c  K10N78FullHD-hSLI R3.0 EHCI USB 2.0 Controller +	077d  MCP78S [GeForce 8200] OHCI USB 1.1 Controller +		103c 2a9e  Pavilion p6310f +		1043 82e8  M3N72-D +		1462 7508  K9N2GM-FIH +		1849 077d  K10N78FullHD-hSLI R3.0 OHCI USB 1.1 Controller +	077e  MCP78S [GeForce 8200] EHCI USB 2.0 Controller +		103c 2a9e  Pavilion p6310f +		1043 82e8  M3N72-D +		1462 7508  K9N2GM-FIH +		1849 077e  K10N78FullHD-hSLI R3.0 EHCI USB 2.0 Controller +	07c0  MCP73 Host Bridge +		1afa 7150  JW-IN7150-HD +	07c1  MCP73 Host Bridge +		1019 297a  MCP73PVT-SM +	07c2  MCP73 Host Bridge +	07c5  MCP73 Host Bridge +	07c8  MCP73 Memory Controller +		1019 297a  MCP73PVT-SM +		1afa 7150  JW-IN7150-HD +	07cb  nForce 630i memory controller +		1019 297a  MCP73PVT-SM +		1afa 7150  JW-IN7150-HD +	07cd  nForce 630i memory controller +		1019 297a  MCP73PVT-SM +		1afa 7150  JW-IN7150-HD +	07ce  nForce 630i memory controller +		1019 297a  MCP73PVT-SM +		1afa 7150  JW-IN7150-HD +	07cf  nForce 630i memory controller +		1019 297a  MCP73PVT-SM +		1afa 7150  JW-IN7150-HD +	07d0  nForce 630i memory controller +		1019 297a  MCP73PVT-SM +		1afa 7150  JW-IN7150-HD +	07d1  nForce 630i memory controller +		1019 297a  MCP73PVT-SM +		1afa 7150  JW-IN7150-HD +	07d2  nForce 630i memory controller +		1019 297a  MCP73PVT-SM +		1afa 7150  JW-IN7150-HD +	07d3  nForce 630i memory controller +		1019 297a  MCP73PVT-SM +		1afa 7150  JW-IN7150-HD +	07d6  nForce 630i memory controller +		1019 297a  MCP73PVT-SM +		1afa 7150  JW-IN7150-HD +	07d7  MCP73 LPC Bridge +		1019 297a  MCP73PVT-SM +		1afa 7150  JW-IN7150-HD +	07d8  MCP73 SMBus +		1019 297a  MCP73PVT-SM +		1afa 7150  JW-IN7150-HD +	07d9  MCP73 Memory Controller +		1019 297a  MCP73PVT-SM +		1afa 7150  JW-IN7150-HD +	07da  MCP73 Co-processor +		1afa 7150  JW-IN7150-HD +	07dc  MCP73 Ethernet +	07dd  MCP73 Ethernet +	07de  MCP73 Ethernet +	07df  MCP73 Ethernet +	07e0  C73 [GeForce 7150 / nForce 630i] +		1afa 7150  JW-IN7150-HD +	07e1  C73 [GeForce 7100 / nForce 630i] +		1019 297a  MCP73PVT-SM +	07e2  C73 [GeForce 7050 / nForce 630i] +	07e3  C73 [GeForce 7050 / nForce 610i] +	07e5  C73 [GeForce 7100 / nForce 620i] +	07f0  MCP73 IDE +	07f4  GeForce 7100/nForce 630i SATA +		1019 297a  MCP73PVT-SM +	07f8  MCP73 SATA RAID Controller +	07fc  MCP73 High Definition Audio +		1019 297a  MCP73PVT-SM +		10de 07fc  MCP73 High Definition Audio +	07fe  GeForce 7100/nForce 630i USB +		1019 297a  MCP73PVT-SM +		1afa 7150  JW-IN7150-HD +	0840  C77 [GeForce 8200M] +	0844  C77 [GeForce 9100M G] +	0845  C77 [GeForce 8200M G] +	0846  C77 [GeForce 9200] +	0847  C78 [GeForce 9100] +		103c 2a9e  Pavilion p6310f +	0848  C77 [GeForce 8300] +	0849  C77 [GeForce 8200] +		1462 7508  K9N2GM-FIH +		1849 0849  K10N78FullHD-hSLI R3.0 GeForce 8200 +	084a  C77 [nForce 730a] +	084b  C77 [GeForce 8200] +	084c  C77 [nForce 780a/980a SLI] +	084d  C77 [nForce 750a SLI] +		1043 82e8  M3N72-D mGPU +	084f  C77 [GeForce 8100 / nForce 720a] +	0860  C79 [GeForce 9300] +	0861  C79 [GeForce 9400] +	0862  C79 [GeForce 9400M G] +	0863  C79 [GeForce 9400M] +		106b 00aa  MacBook5,1 +	0864  C79 [GeForce 9300] +	0865  C79 [GeForce 9300/ION] +	0866  C79 [GeForce 9400M G] +		106b 00b1  GeForce 9400M +	0867  C79 [GeForce 9400] +		106b 00ad  iMac 9,1 +	0868  C79 [nForce 760i SLI] +	0869  MCP7A [GeForce 9400] +	086a  C79 [GeForce 9400] +	086c  C79 [GeForce 9300 / nForce 730i] +	086d  C79 [GeForce 9200] +	086e  C79 [GeForce 9100M G] +	086f  MCP79 [GeForce 8200M G] +	0870  C79 [GeForce 9400M] +	0871  C79 [GeForce 9200] +	0872  C79 [GeForce G102M] +		1043 19b4  GeForce G102M +		1043 1aa2  GeForce G102M +		1043 1c02  GeForce G102M +		1043 1c42  GeForce G205M +	0873  C79 [GeForce G102M] +		1043 19b4  GeForce G102M +		1043 1c12  GeForce G102M +		1043 1c52  GeForce G205M +	0874  C79 [ION] +	0876  ION VGA [GeForce 9400M] +	087a  C79 [GeForce 9400] +	087d  ION VGA +		19da a123  IONITX-F-E +	087e  ION LE VGA +	087f  ION LE VGA +	08a0  MCP89 [GeForce 320M] +	08a2  MCP89 [GeForce 320M] +	08a3  MCP89 [GeForce 320M] +	08a4  MCP89 [GeForce 320M] +	08a5  MCP89 [GeForce 320M] +	0a20  GT216 [GeForce GT 220] +		1043 8311  ENGT220/DI/1GD3(LP)/V2 +	0a21  GT216M [GeForce GT 330M] +	0a22  GT216 [GeForce 315] +	0a23  GT216 [GeForce 210] +	0a26  GT216 [GeForce 405] +	0a27  GT216 [GeForce 405] +	0a28  GT216M [GeForce GT 230M] +	0a29  GT216M [GeForce GT 330M] +	0a2a  GT216M [GeForce GT 230M] +	0a2b  GT216M [GeForce GT 330M] +	0a2c  GT216M [NVS 5100M] +	0a2d  GT216M [GeForce GT 320M] +	0a30  GT216 [GeForce 505] +	0a32  GT216 [GeForce GT 415] +	0a34  GT216M [GeForce GT 240M] +	0a35  GT216M [GeForce GT 325M] +	0a38  GT216GL [Quadro 400] +	0a3c  GT216GLM [Quadro FX 880M] +	0a60  GT218 [GeForce G210] +	0a62  GT218 [GeForce 205] +	0a63  GT218 [GeForce 310] +	0a64  GT218 [ION] +	0a65  GT218 [GeForce 210] +		1043 8334  EN210 SILENT +	0a66  GT218 [GeForce 310] +	0a67  GT218 [GeForce 315] +	0a68  GT218M [GeForce G 105M] +	0a69  GT218M [GeForce G 105M] +	0a6a  GT218M [NVS 2100M] +	0a6c  GT218M [NVS 3100M] +		1028 040b  Latitude E6510 +		17aa 2142  ThinkPad T410 +	0a6e  GT218M [GeForce 305M] +	0a6f  GT218 [ION] +	0a70  GT218M [GeForce 310M] +	0a71  GT218M [GeForce 305M] +	0a72  GT218M [GeForce 310M] +	0a73  GT218M [GeForce 305M] +	0a74  GT218M [GeForce G210M] +		1b0a 903a  GeForce G210 +	0a75  GT218M [GeForce 310M] +	0a76  GT218 [ION 2] +	0a78  GT218GL [Quadro FX 380 LP] +	0a7a  GT218M [GeForce 315M] +		104d 907e  GeForce 315M +		1179 fc50  GeForce 315M +		1179 fc61  GeForce 315M +		1179 fc71  GeForce 315M +		1179 fc90  GeForce 315M +		1179 fcc0  GeForce 315M +		1179 fcd0  GeForce 315M +		1179 fce2  GeForce 315M +		1179 fcf2  GeForce 315M +		1179 fd16  GeForce 315M +		1179 fd40  GeForce 315M +		1179 fd50  GeForce 315M +		1179 fd52  GeForce 315M +		1179 fd61  GeForce 315M +		1179 fd71  GeForce 315M +		1179 fd92  GeForce 315M +		1179 fd96  GeForce 315M +		1179 fdd0  GeForce 315M +		1179 fdd2  GeForce 315M +		1179 fdfe  GeForce 315M +		144d c0a2  GeForce 315M +		144d c0b2  GeForce 315M +		144d c581  GeForce 315M +		144d c587  GeForce 315M +		144d c588  GeForce 315M +		144d c597  GeForce 315M +		144d c606  GeForce 315M +		1462 aa51  GeForce 405 +		1462 aa58  GeForce 405 +		1462 ac71  GeForce 405 +		1462 ac81  GeForce 315M +		1462 ac82  GeForce 405 +		1462 ae33  GeForce 405 +		1642 3980  GeForce 405 +		17aa 3950  GeForce 405M +		17aa 397d  GeForce 405M +		1b0a 2091  GeForce 315M +		1b0a 90b4  GeForce 405 +		1bfd 0003  GeForce 405 +		1bfd 8006  GeForce 405 +		1bfd 8007  GeForce 315M +	0a7b  GT218 [GeForce 505] +	0a7c  GT218GLM [Quadro FX 380M] +	0a80  MCP79 Host Bridge +	0a81  MCP79 Host Bridge +	0a82  MCP79 Host Bridge +	0a83  MCP79 Host Bridge +	0a84  MCP79 Host Bridge +	0a85  MCP79 Host Bridge +	0a86  MCP79 Host Bridge +	0a87  MCP79 Host Bridge +	0a88  MCP79 Memory Controller +	0a89  MCP79 Memory Controller +	0a98  MCP79 Memory Controller +		10de cb79  iMac 9,1 +	0aa0  MCP79 PCI Express Bridge +		10de cb79  Apple iMac 9,1 +	0aa2  MCP79 SMBus +		10de cb79  Apple iMac 9,1 +		19da a123  IONITX-F-E +	0aa3  MCP79 Co-processor +		10de cb79  Apple iMac 9,1 +		19da a123  IONITX-F-E +	0aa4  MCP79 Memory Controller +		19da a123  IONITX-F-E +	0aa5  MCP79 OHCI USB 1.1 Controller +		10de cb79  Apple iMac 9,1 +		19da a123  IONITX-F-E +	0aa6  MCP79 EHCI USB 2.0 Controller +		10de cb79  Apple iMac 9,1 +		19da a123  IONITX-F-E +	0aa7  MCP79 OHCI USB 1.1 Controller +		10de cb79  Apple iMac 9,1 +		19da a123  IONITX-F-E +	0aa8  MCP79 OHCI USB 1.1 Controller +	0aa9  MCP79 EHCI USB 2.0 Controller +		10de cb79  Apple iMac 9,1 +		19da a123  IONITX-F-E +	0aaa  MCP79 EHCI USB 2.0 Controller +	0aab  MCP79 PCI Bridge +		10de cb79  Apple iMac 9,1 +	0aac  MCP79 LPC Bridge +	0aad  MCP79 LPC Bridge +		19da a123  IONITX-F-E +	0aae  MCP79 LPC Bridge +		10de cb79  Apple iMac 9,1 +	0aaf  MCP79 LPC Bridge +	0ab0  MCP79 Ethernet +		10de cb79  Apple iMac 9,1 +		19da a123  IONITX-F-E +	0ab1  MCP79 Ethernet +	0ab2  MCP79 Ethernet +	0ab3  MCP79 Ethernet +	0ab4  MCP79 SATA Controller +		19da a123  IONITX-F-E +	0ab5  MCP79 SATA Controller +	0ab6  MCP79 SATA Controller +	0ab7  MCP79 SATA Controller +	0ab8  MCP79 AHCI Controller +	0ab9  MCP79 AHCI Controller +		10de cb79  Apple iMac 9,1 +	0aba  MCP79 AHCI Controller +	0abb  MCP79 AHCI Controller +	0abc  MCP79 RAID Controller +	0abd  MCP79 RAID Controller +	0abe  MCP79 RAID Controller +	0abf  MCP79 RAID Controller +	0ac0  MCP79 High Definition Audio +		10de cb79  Apple iMac 9,1 +	0ac1  MCP79 High Definition Audio +	0ac2  MCP79 High Definition Audio +	0ac3  MCP79 High Definition Audio +	0ac4  MCP79 PCI Express Bridge +		10de cb79  Apple iMac 9,1 +	0ac5  MCP79 PCI Express Bridge +	0ac6  MCP79 PCI Express Bridge +		10de cb79  Apple iMac 9,1 +	0ac7  MCP79 PCI Express Bridge +		10de cb79  Apple iMac 9,1 +	0ac8  MCP79 PCI Express Bridge +	0ad0  MCP78S [GeForce 8200] SATA Controller (non-AHCI mode) +		1462 7508  K9N2GM-FIH +		1849 0ad0  K10N78FullHD-hSLI R3.0 IDE +	0ad4  MCP78S [GeForce 8200] AHCI Controller +		103c 2a9e  Pavilion p6310f +		1043 82e8  M3N72-D +		1849 0ad4  K10N78FullHD-hSLI R3.0 AHCI Controller +	0ad8  MCP78S [GeForce 8200] SATA Controller (RAID mode) +	0be2  GT216 HDMI Audio Controller +		1043 8311  ENGT220/DI/1GD3(LP)/V2 +	0be3  High Definition Audio Controller +		1028 040b  Latitude E6510 +		10de 066d  G98 [GeForce 8400GS] +	0be4  High Definition Audio Controller +	0be5  GF100 High Definition Audio Controller +	0be9  GF106 High Definition Audio Controller +		1558 8687  CLEVO/KAPOK W860CU +		3842 1452  GeForce GTS 450 +	0bea  GF108 High Definition Audio Controller +		3842 1430  GeForce GT 430 +	0beb  GF104 High Definition Audio Controller +		1462 2322  N460GTX Cyclone 1GD5/OC +	0bee  GF116 High Definition Audio Controller +	0bf0  Tegra2 PCIe x4 Bridge +	0bf1  Tegra2 PCIe x2 Bridge +	0ca0  GT215 [GeForce GT 330] +	0ca2  GT215 [GeForce GT 320] +	0ca3  GT215 [GeForce GT 240] +	0ca4  GT215 [GeForce GT 340] +	0ca5  GT215 [GeForce GT 220] +	0ca7  GT215 [GeForce GT 330] +	0ca8  GT215M [GeForce GTS 260M] +	0ca9  GT215M [GeForce GTS 250M] +	0cac  GT215 [GeForce GT 220/315] +	0caf  GT215M [GeForce GT 335M] +	0cb0  GT215M [GeForce GTS 350M] +	0cb1  GT215M [GeForce GTS 360M] +	0cbc  GT215GLM [Quadro FX 1800M] +	0d60  MCP89 HOST Bridge +	0d68  MCP89 Memory Controller +	0d69  MCP89 Memory Controller +	0d76  MCP89 PCI Express Bridge +	0d79  MCP89 SMBus +	0d7a  MCP89 Co-Processor +	0d7b  MCP89 Memory Controller +	0d7d  MCP89 Ethernet +	0d80  MCP89 LPC Bridge +	0d85  MCP89 SATA Controller +	0d88  MCP89 SATA Controller (AHCI mode) +	0d89  MCP89 SATA Controller (AHCI mode) +	0d8d  MCP89 SATA Controller (RAID mode) +	0d94  MCP89 High Definition Audio +	0d9c  MCP89 OHCI USB 1.1 Controller +	0d9d  MCP89 EHCI USB 2.0 Controller +	0dc0  GF106 [GeForce GT 440] +	0dc4  GF106 [GeForce GTS 450] +	0dc5  GF106 [GeForce GTS 450 OEM] +	0dc6  GF106 [GeForce GTS 450] +	0dcd  GF106M [GeForce GT 555M] +	0dce  GF106M [GeForce GT 555M] +	0dd1  GF106M [GeForce GTX 460M] +		1558 8687  CLEVO/KAPOK W860CU +	0dd2  GF106M [GeForce GT 445M] +	0dd3  GF106M [GeForce GT 435M] +	0dd6  GF106M [GeForce GT 550M] +	0dd8  GF106GL [Quadro 2000] +		10de 0914  Quadro 2000D +	0dda  GF106GLM [Quadro 2000M] +	0de0  GF108 [GeForce GT 440] +	0de1  GF108 [GeForce GT 430] +		3842 1430  GeForce GT 430 +	0de2  GF108 [GeForce GT 420] +	0de3  GF108M [GeForce GT 635M] +	0de4  GF108 [GeForce GT 520] +	0de5  GF108 [GeForce GT 530] +	0de7  GF108 [GeForce GT 610] +	0de8  GF108M [GeForce GT 620M] +	0de9  GF108M [GeForce GT 630M] +		1025 0692  GeForce GT 620M +		1025 0725  GeForce GT 620M +		1025 0728  GeForce GT 620M +		1025 072b  GeForce GT 620M +		1025 072e  GeForce GT 620M +		1025 0753  GeForce GT 620M +		1025 0754  GeForce GT 620M +		17aa 3977  GeForce GT 640M LE +		1b0a 2210  GeForce GT 635M +	0dea  GF108M [GeForce 610M] +		17aa 365a  GeForce 615 +		17aa 365b  GeForce 615 +		17aa 365e  GeForce 615 +		17aa 3660  GeForce 615 +		17aa 366c  GeForce 615 +	0deb  GF108M [GeForce GT 555M] +	0dec  GF108M [GeForce GT 525M] +	0ded  GF108M [GeForce GT 520M] +	0dee  GF108M [GeForce GT 415M] +	0def  GF108M [NVS 5400M] +	0df0  GF108M [GeForce GT 425M] +	0df1  GF108M [GeForce GT 420M] +	0df2  GF108M [GeForce GT 435M] +	0df3  GF108M [GeForce GT 420M] +	0df4  GF108M [GeForce GT 540M] +		152d 0952  GeForce GT 630M +		152d 0953  GeForce GT 630M +	0df5  GF108M [GeForce GT 525M] +	0df6  GF108M [GeForce GT 550M] +	0df7  GF108M [GeForce GT 520M] +	0df8  GF108GL [Quadro 600] +	0df9  GF108GLM [Quadro 500M] +	0dfa  GF108GLM [Quadro 1000M] +	0dfc  GF108GLM [NVS 5200M] +	0e08  GF119 HDMI Audio Controller +# 1024MB with passive cooling (heatsink) +		10b0 104a  Gainward GeForce GT 610 +	0e09  GF110 High Definition Audio Controller +	0e0a  GK104 HDMI Audio Controller +	0e0b  GK106 HDMI Audio Controller +	0e0c  GF114 HDMI Audio Controller +	0e0f  GK208 HDMI/DP Audio Controller +	0e12  TegraK1 PCIe x4 Bridge +	0e13  TegraK1 PCIe x1 Bridge +	0e1a  GK110 HDMI Audio +	0e1b  GK107 HDMI Audio Controller +		103c 197b  ZBook 15 +		1043 8428  GTX650-DC-1GD5 +	0e1c  Tegra3+ PCIe x4 Bridge +	0e1d  Tegra3+ PCIe x2 Bridge +	0e22  GF104 [GeForce GTX 460] +		1462 2322  N460GTX Cyclone 1GD5/OC +	0e23  GF104 [GeForce GTX 460 SE] +	0e24  GF104 [GeForce GTX 460 OEM] +	0e30  GF104M [GeForce GTX 470M] +	0e31  GF104M [GeForce GTX 485M] +	0e3a  GF104GLM [Quadro 3000M] +	0e3b  GF104GLM [Quadro 4000M] +	0f00  GF108 [GeForce GT 630] +	0f01  GF108 [GeForce GT 620] +	0f02  GF108 [GeForce GT 730] +	0fbb  GM204 High Definition Audio Controller +	0fc0  GK107 [GeForce GT 640 OEM] +	0fc1  GK107 [GeForce GT 640] +	0fc2  GK107 [GeForce GT 630 OEM] +	0fc6  GK107 [GeForce GTX 650] +		1043 8428  GTX650-DC-1GD5 +	0fc8  GK107 [GeForce GT 740] +	0fcd  GK107M [GeForce GT 755M] +	0fce  GK107M [GeForce GT 640M LE] +	0fd1  GK107M [GeForce GT 650M] +		1043 1597  GeForce GT 650M +		1043 15a7  GeForce GT 650M +		1043 2103  N56VZ +		1043 2105  GeForce GT 650M +		1043 2141  GeForce GT 650M +	0fd2  GK107M [GeForce GT 640M] +		1028 054f  GeForce GT 640M +		1028 055f  GeForce GT 640M +		1028 0595  GeForce GT 640M LE +		1028 05b2  GeForce GT 640M LE +	0fd3  GK107M [GeForce GT 640M LE] +	0fd4  GK107M [GeForce GTX 660M] +	0fd5  GK107M [GeForce GT 650M Mac Edition] +	0fd8  GK107M [GeForce GT 640M Mac Edition] +	0fd9  GK107M [GeForce GT 645M] +	0fdb  GK107M +	0fdf  GK107M [GeForce GT 740M] +	0fe0  GK107M [GeForce GTX 660M Mac Edition] +	0fe1  GK107M [GeForce GT 730M] +	0fe2  GK107M [GeForce GT 745M] +	0fe3  GK107M [GeForce GT 745M] +		103c 2b16  GeForce GT 745A +		17aa 3675  GeForce GT 745A +	0fe4  GK107M [GeForce GT 750M] +	0fe5  GK107 [GeForce K340 USM] +	0fe6  GK107 [GRID K1 NVS USM] +# GRID K1 USM +	0fe7  GK107GL [GRID K100 vGPU] +		10de 101e  GRID K100 +	0fe9  GK107M [GeForce GT 750M Mac Edition] +	0fea  GK107M [GeForce GT 755M Mac Edition] +	0fef  GK107GL [GRID K340] +	0ff1  GK107 [NVS 1000] +	0ff2  GK107GL [GRID K1] +	0ff3  GK107GL [Quadro K420] +	0ff5  GK107GL [GRID K1 Tesla USM] +	0ff6  GK107GLM [Quadro K1100M] +		103c 197b  ZBook 15 +# GRID K1 Quadro USM +	0ff7  GK107GL [GRID K140Q vGPU] +		10de 1037  GRID K140Q +	0ff8  GK107GLM [Quadro K500M] +	0ff9  GK107GL [Quadro K2000D] +	0ffa  GK107GL [Quadro K600] +	0ffb  GK107GLM [Quadro K2000M] +	0ffc  GK107GLM [Quadro K1000M] +	0ffd  GK107 [NVS 510] +	0ffe  GK107GL [Quadro K2000] +	0fff  GK107GL [Quadro 410] +	1001  GK110B [GeForce GTX TITAN Z] +	1003  GK110 [GeForce GTX Titan LE] +	1004  GK110 [GeForce GTX 780] +		3842 0784  GK110B [GeForce GTX 780 SC w/ ACX Cooler] +		3842 1784  GK110B [GeForce GTX 780 Dual FTW w/ ACX Cooler] +		3842 1788  GK110B [GeForce GTX 780 Dual Classified w/ ACX Cooler] +	1005  GK110 [GeForce GTX Titan] +		1043 8451  GTXTITAN-6GD5 +# Reference Model +		10de 1035  GeForce GTX Titan +# 06G-P4-2790-KR +		3842 2790  GeForce GTX Titan +# 06G-P4-2791-KR +		3842 2791  GeForce GTX Titan SC +# 06G-P4-2793-KR +		3842 2793  GeForce GTX Titan SC Signature +# 06G-P4-2794-KR +		3842 2794  GeForce GTX Titan SC Hydro Copper +# 06G-P4-2795-KR +		3842 2795  GeForce GTX Titan SC Hydro Copper Signature +	1007  GK110 [GeForce GTX 780 Rev. 2] +	1008  GK110 [GeForce GTX 780 Ti Rev. 2] +	100a  GK110B [GeForce GTX 780 Ti] +	100c  GK110B [GeForce GTX Titan Black] +	101e  GK110GL [Tesla K20X] +	101f  GK110GL [Tesla K20] +	1020  GK110GL [Tesla K20X] +	1021  GK110GL [Tesla K20Xm] +	1022  GK110GL [Tesla K20c] +	1023  GK110BGL [Tesla K40m] +	1024  GK110BGL [Tesla K40c] +	1026  GK110GL [Tesla K20s] +	1027  GK110BGL [Tesla K40st] +	1028  GK110GL [Tesla K20m] +	1029  GK110BGL [Tesla K40s] +	102a  GK110BGL [Tesla K40t] +	102d  GK210GL [Tesla K80] +	102e  GK110BGL [Tesla K40d] +	103a  GK110GL [Quadro K6000] +	103c  GK110GL [Quadro K5200] +	1040  GF119 [GeForce GT 520] +	1042  GF119 [GeForce 510] +	1048  GF119 [GeForce 605] +	1049  GF119 [GeForce GT 620 OEM] +	104a  GF119 [GeForce GT 610] +# 1024MB with passive cooling (heatsink) +		10b0 104a  Gainward GeForce GT 610 +	104b  GF119 [GeForce GT 625 OEM] +	104c  GF119 [GeForce GT 705] +	104d  GF119 [GeForce GT 710] +	1050  GF119M [GeForce GT 520M] +	1051  GF119M [GeForce GT 520MX] +	1052  GF119M [GeForce GT 520M] +	1054  GF119M [GeForce 410M] +	1055  GF119M [GeForce 410M] +	1056  GF119M [NVS 4200M] +	1057  GF119M [Quadro NVS 4200M] +	1058  GF119M [GeForce 610M] +		103c 2aed  GeForce 610 +		103c 2af1  GeForce 610 +		1043 10ac  GeForce GT 610M +		1043 10bc  GeForce GT 610M +		1043 1652  GeForce GT 610M +		17aa 367a  GeForce 610M +		17aa 3682  GeForce 800A +		17aa 3687  GeForce 800A +		17aa 3692  GeForce 705A +		17aa 3695  GeForce 800A +		17aa a117  GeForce 610M +	1059  GF119M [GeForce 610M] +	105a  GF119M [GeForce 610M] +		1043 2111  GeForce GT 610M +		1043 2112  GeForce GT 610M +	105b  GF119M [GeForce 705M] +		103c 2afb  GeForce 705A +		17aa 309d  GeForce 705A +		17aa 30b1  GeForce 800A +		17aa 36a1  GeForce 800A +	107c  GF119 [NVS 315] +	107d  GF119 [NVS 310] +	1080  GF110 [GeForce GTX 580] +	1081  GF110 [GeForce GTX 570] +		10de 087e  Leadtek WinFast GTX 570 +	1082  GF110 [GeForce GTX 560 Ti OEM] +	1084  GF110 [GeForce GTX 560 OEM] +	1086  GF110 [GeForce GTX 570 Rev. 2] +	1087  GF110 [GeForce GTX 560 Ti 448 Cores] +	1088  GF110 [GeForce GTX 590] +	1089  GF110 [GeForce GTX 580] +	108b  GF110 [GeForce GTX 580] +	108e  GF110GL [Tesla C2090] +	1091  GF110GL [Tesla M2090] +		10de 088e  Tesla X2090 +		10de 0891  Tesla X2090 +		10de 0974  Tesla X2090 +		10de 098d  Tesla X2090 +	1094  GF110GL [Tesla M2075] +		10de 0888  Tesla M2075 +	1096  GF110GL [Tesla C2050 / C2075] +		10de 0910  Tesla C2075 +		10de 0911  Tesla C2050 +	109a  GF100GLM [Quadro 5010M] +	109b  GF100GL [Quadro 7000] +		10de 0918  Quadro 7000 +	10c0  GT218 [GeForce 9300 GS Rev. 2] +	10c3  GT218 [GeForce 8400 GS Rev. 3] +	10c5  GT218 [GeForce 405] +	10d8  GT218 [NVS 300] +	1140  GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] +		1025 0600  GeForce GT 620M +		1025 0606  GeForce GT 620M +		1025 064a  GeForce GT 620M +		1025 064c  GeForce GT 620M +		1025 067a  GeForce GT 620M +		1025 0680  GeForce GT 620M +		1025 0686  GeForce 710M +		1025 0689  GeForce 710M +		1025 068b  GeForce 710M +		1025 068d  GeForce 710M +		1025 068e  GeForce 710M +		1025 0691  GeForce 710M +		1025 0692  GeForce GT 620M +		1025 0694  GeForce GT 620M +		1025 0702  GeForce GT 620M +		1025 0719  GeForce GT 620M +		1025 0725  GeForce GT 620M +		1025 0728  GeForce GT 620M +		1025 072b  GeForce GT 620M +		1025 072e  GeForce GT 620M +		1025 0732  GeForce GT 620M +		1025 0763  GeForce GT 720M +		1025 0773  GeForce 710M +		1025 0774  GeForce 710M +		1025 0776  GeForce GT 720M +		1025 077a  GeForce 710M +		1025 077b  GeForce 710M +		1025 077c  GeForce 710M +		1025 077d  GeForce 710M +		1025 077e  GeForce 710M +		1025 077f  GeForce 710M +		1025 0781  GeForce GT 720M +		1025 0798  GeForce GT 720M +		1025 0799  GeForce GT 720M +		1025 079b  GeForce GT 720M +		1025 079c  GeForce GT 720M +		1025 0807  GeForce GT 720M +		1025 0821  GeForce GT 720M +		1025 0823  GeForce GT 720M +		1025 0830  GeForce GT 720M +		1025 0837  GeForce GT 720M +		1025 083e  GeForce 820M +		1025 0841  GeForce 710M +		1025 0854  GeForce 820M +		1025 0855  GeForce 820M +		1025 0856  GeForce 820M +		1025 0857  GeForce 820M +		1025 0858  GeForce 820M +		1025 0868  GeForce 820M +		1025 0869  GeForce 810M +		1025 0873  GeForce 820M +		1025 0878  GeForce 820M +		1025 087b  GeForce 820M +		1025 087c  GeForce 810M +		1025 0881  GeForce 820M +		1025 088a  GeForce 820M +		1025 090f  GeForce 820M +		1025 0921  GeForce 820M +		1028 054d  GeForce GT 630M +		1028 054e  GeForce GT 630M +		1028 0554  GeForce GT 620M +		1028 0557  GeForce GT 620M +		1028 0562  GeForce GT 625M +		1028 0565  GeForce GT 630M +		1028 0568  GeForce GT 630M +		1028 0590  GeForce GT 630M +		1028 0592  GeForce GT 625M +		1028 0594  GeForce GT 625M +		1028 0595  GeForce GT 625M +		1028 05a2  GeForce GT 625M +		1028 05b1  GeForce GT 625M +		1028 05b3  GeForce GT 625M +		1028 05da  GeForce GT 630M +		1028 05de  GeForce GT 720M +		1028 05e0  GeForce GT 720M +		1028 05e8  GeForce GT 630M +		1028 05f4  GeForce GT 720M +		1028 064e  GeForce 820M +		1028 0652  GeForce 820M +		1028 0662  GeForce 820M +		1028 068d  GeForce 820M +		103c 18ef  GeForce GT 630M +		103c 18f9  GeForce GT 630M +		103c 18fb  GeForce GT 630M +		103c 18fd  GeForce GT 630M +		103c 18ff  GeForce GT 630M +		103c 2aef  GeForce GT 720A +		103c 2af9  GeForce 710A +		1043 10dd  NVS 5200M +		1043 10ed  NVS 5200M +		1043 11fd  GeForce GT 720M +		1043 124d  GeForce GT 720M +		1043 126d  GeForce GT 720M +		1043 131d  GeForce GT 720M +		1043 13fd  GeForce GT 720M +		1043 14c7  GeForce GT 720M +		1043 1507  GeForce GT 620M +		1043 15ad  GeForce 820M +		1043 15ed  GeForce 820M +		1043 160d  GeForce 820M +		1043 163d  GeForce 820M +		1043 166d  GeForce 820M +		1043 16cd  GeForce 820M +		1043 16dd  GeForce 820M +		1043 170d  GeForce 820M +		1043 176d  GeForce 820M +		1043 178d  GeForce 820M +		1043 179d  GeForce 820M +		1043 17dd  GeForce 820M +		1043 2132  GeForce GT 620M +		1043 2136  NVS 5200M +		1043 21ba  GeForce GT 720M +		1043 21fa  GeForce GT 720M +		1043 220a  GeForce GT 720M +		1043 221a  GeForce GT 720M +		1043 223a  GeForce GT 710M +		1043 224a  GeForce GT 710M +		1043 227a  GeForce 820M +		1043 228a  GeForce 820M +		1043 8595  GeForce GT 720M +		1072 152d  GeForce GT 720M +		10cf 17f5  GeForce GT 720M +		1179 fa01  GeForce 710M +		1179 fa02  GeForce 710M +		1179 fa03  GeForce 710M +		1179 fa05  GeForce 710M +		1179 fa11  GeForce 710M +		1179 fa13  GeForce 710M +		1179 fa18  GeForce 710M +		1179 fa19  GeForce 710M +		1179 fa21  GeForce 710M +		1179 fa23  GeForce 710M +		1179 fa2a  GeForce 710M +		1179 fa32  GeForce 710M +		1179 fa33  GeForce 710M +		1179 fa36  GeForce 710M +		1179 fa38  GeForce 710M +		1179 fa42  GeForce 710M +		1179 fa43  GeForce 710M +		1179 fa45  GeForce 710M +		1179 fa47  GeForce 710M +		1179 fa49  GeForce 710M +		1179 fa58  GeForce 710M +		1179 fa59  GeForce 710M +		1179 fa88  GeForce 710M +		1179 fa89  GeForce 710M +		144d b092  GeForce GT 620M +		144d c0d5  GeForce GT 630M +		144d c0d7  GeForce GT 620M +		144d c0e2  NVS 5200M +		144d c0e3  NVS 5200M +		144d c0e4  NVS 5200M +		144d c652  GeForce GT 620M +		144d c709  GeForce 710M +		144d c711  GeForce 710M +		144d c736  GeForce 710M +		1462 10b8  GeForce GT 710M +		1462 10e9  GeForce GT 720M +		1462 1116  GeForce 820M +		1462 aa33  GeForce 720M +		1462 aaa2  GeForce GT 720M +		1462 aaa3  GeForce 820M +		1462 ae71  GeForce GT 720M +		152d 0926  GeForce 620M +		152d 0982  GeForce GT 630M +		152d 0983  GeForce GT 630M +		152d 1005  GeForce GT 820M +		152d 1012  GeForce 710M +		152d 1019  GeForce 820M +		152d 1030  GeForce GT 630M +		152d 1055  GeForce 710M +		152d 1067  GeForce GT 720M +		152d 1072  GeForce GT 720M +		152d 1086  GeForce 820M +		17aa 2200  NVS 5200M +		17aa 2213  GeForce GT 720M +		17aa 2220  GeForce GT 720M +		17aa 309c  GeForce GT 720A +		17aa 30b4  GeForce 820A +		17aa 3656  GeForce GT 620M +		17aa 365a  GeForce 705M +		17aa 365e  GeForce 800M +		17aa 366c  GeForce 800M +		17aa 3685  GeForce 800M +		17aa 3686  GeForce 800M +		17aa 3687  GeForce 705A +		17aa 3696  GeForce 820A +		17aa 369b  GeForce 820A +		17aa 369c  GeForce 820A +		17aa 369d  GeForce 820A +		17aa 369e  GeForce 820A +		17aa 3800  GeForce GT 720M +		17aa 3801  GeForce GT 720M +		17aa 3802  GeForce GT 720M +		17aa 3803  GeForce GT 720M +		17aa 3804  GeForce GT 720M +		17aa 3806  GeForce GT 720M +		17aa 3808  GeForce GT 720M +		17aa 380d  GeForce 820M +		17aa 380e  GeForce 820M +		17aa 380f  GeForce 820M +		17aa 3811  GeForce 820M +		17aa 3812  GeForce 820M +		17aa 3813  GeForce 820M +		17aa 3816  GeForce 820M +		17aa 3818  GeForce 820M +		17aa 3901  GeForce 610M / GT 620M +		17aa 3902  GeForce 710M +		17aa 3903  GeForce 610M/710M +		17aa 3904  GeForce GT 620M/625M +		17aa 3905  GeForce GT 720M +		17aa 3910  GeForce 720M +		17aa 3912  GeForce 720M +		17aa 3977  GeForce GT 720M +		17aa 3983  GeForce 610M +		17aa 5001  GeForce 610M +		17aa 5003  GeForce GT 720M +		17aa 5005  GeForce 705M +		17aa 500d  GeForce GT 620M +		17aa 5014  GeForce 710M +		17aa 5017  GeForce 710M +		17aa 5019  GeForce 710M +		17aa 501a  GeForce 710M +		17aa 501f  GeForce GT 720M +		17aa 5025  GeForce 710M +		17aa 5027  GeForce 710M +		17aa 502a  GeForce 710M +		17aa 502b  GeForce GT 720M +		17aa 502d  GeForce 710M +		17aa 502e  GeForce GT 720M +		17aa 502f  GeForce GT 720M +		17aa 5030  GeForce 705M +		17aa 5031  GeForce 705M +		17aa 5032  GeForce 820M +		17aa 5033  GeForce 820M +		17aa 503e  GeForce 710M +		17aa 503f  GeForce 820M +		17aa 5040  GeForce 820M +		1854 0177  GeForce 710M +		1854 0180  GeForce 710M +		1854 0190  GeForce GT 720M +		1854 0192  GeForce GT 720M +		1b0a 20dd  GeForce GT 620M +		1b0a 20df  GeForce GT 620M +		1b0a 2202  GeForce GT 720M +	1180  GK104 [GeForce GTX 680] +		1043 83f1  GTX680-DC2-2GD5 +		3842 3682  GeForce GTX 680 Mac Edition +	1182  GK104 [GeForce GTX 760 Ti] +	1183  GK104 [GeForce GTX 660 Ti] +	1184  GK104 [GeForce GTX 770] +	1185  GK104 [GeForce GTX 660 OEM] +		10de 106f  GK104 [GeForce GTX 760 OEM] +	1187  GK104 [GeForce GTX 760] +	1188  GK104 [GeForce GTX 690] +	1189  GK104 [GeForce GTX 670] +		10de 1074  GK104 [GeForce GTX 760 Ti OEM] +	118a  GK104GL [GRID K520] +	118b  GK104GL [GRID K2 GeForce USM] +	118c  GK104 [GRID K2 NVS USM] +# GRID K2 USM +	118d  GK104GL [GRID K200 vGPU] +		10de 101d  GRID K200 +	118e  GK104 [GeForce GTX 760 OEM] +	118f  GK104GL [Tesla K10] +	1191  GK104 [GeForce GTX 760 Rev. 2] +	1193  GK104 [GeForce GTX 760 Ti OEM] +	1194  GK104GL [Tesla K8] +	1195  GK104 [GeForce GTX 660 Rev. 2] +	1198  GK104M [GeForce GTX 880M] +	1199  GK104M [GeForce GTX 870M] +	119a  GK104M [GeForce GTX 860M] +	119d  GK104M [GeForce GTX 775M Mac Edition] +	119e  GK104M [GeForce GTX 780M Mac Edition] +	119f  GK104M [GeForce GTX 780M] +	11a0  GK104M [GeForce GTX 680M] +	11a1  GK104M [GeForce GTX 670MX] +	11a2  GK104M [GeForce GTX 675MX Mac Edition] +	11a3  GK104M [GeForce GTX 680MX] +		106b 010d  iMac 13,2 +	11a7  GK104M [GeForce GTX 675MX] +# GRID K2 Quadro USM +	11b0  GK104GL [GRID K240Q\K260Q vGPU] +		10de 101a  GRID K240Q +		10de 101b  GRID K260Q +	11b1  GK104GL [GRID K2 Tesla USM] +	11b4  GK104GL [Quadro K4200] +	11b6  GK104GLM [Quadro K3100M] +	11b7  GK104GLM [Quadro K4100M] +	11b8  GK104GLM [Quadro K5100M] +	11ba  GK104GL [Quadro K5000] +	11bb  GK104GL [Quadro 4100] +	11bc  GK104GLM [Quadro K5000M] +	11bd  GK104GLM [Quadro K4000M] +	11be  GK104GLM [Quadro K3000M] +	11bf  GK104GL [GRID K2] +	11c0  GK106 [GeForce GTX 660] +	11c2  GK106 [GeForce GTX 650 Ti Boost] +		1043 845b  GeForce GTX 650 Ti Boost DirectCU II OC +		1462 2874  GeForce GTX 650 Ti Boost TwinFrozr II OC +		1569 11c2  GeForce GTX 650 Ti Boost OC +		19da 1281  GeForce GTX 650 Ti Boost OC +		3842 3657  GeForce GTX 650 Ti Boost +		3842 3658  GeForce GTX 650 Ti Boost Superclocked +	11c3  GK106 [GeForce GTX 650 Ti OEM] +		10de 1030  GeForce GTX 650 Ti OEM +	11c4  GK106 [GeForce GTX 645 OEM] +	11c6  GK106 [GeForce GTX 650 Ti] +	11c7  GK106 [GeForce GTX 750 Ti] +	11c8  GK106 [GeForce GTX 650 OEM] +	11e0  GK106M [GeForce GTX 770M] +	11e1  GK106M [GeForce GTX 765M] +	11e2  GK106M [GeForce GTX 765M] +	11e3  GK106M [GeForce GTX 760M] +		17aa 3683  GeForce GTX 760A +	11fa  GK106GL [Quadro K4000] +	11fc  GK106GLM [Quadro K2100M] +	1200  GF114 [GeForce GTX 560 Ti] +	1201  GF114 [GeForce GTX 560] +	1202  GF114 [GeForce GTX 560 Ti OEM] +	1203  GF114 [GeForce GTX 460 SE v2] +	1205  GF114 [GeForce GTX 460 v2] +	1206  GF114 [GeForce GTX 555] +	1207  GF114 [GeForce GT 645 OEM] +	1208  GF114 [GeForce GTX 560 SE] +	1210  GF114M [GeForce GTX 570M] +	1211  GF114M [GeForce GTX 580M] +	1212  GF114M [GeForce GTX 675M] +	1213  GF114M [GeForce GTX 670M] +	1241  GF116 [GeForce GT 545 OEM] +	1243  GF116 [GeForce GT 545] +	1244  GF116 [GeForce GTX 550 Ti] +	1245  GF116 [GeForce GTS 450 Rev. 2] +	1246  GF116M [GeForce GT 550M] +	1247  GF116M [GeForce GT 555M/635M] +		1043 1752  GeForce GT 555M +		1043 2050  GeForce GT 555M +		1043 2051  GeForce GT 555M +		1043 212a  GeForce GT 635M +		1043 212b  GeForce GT 635M +		1043 212c  GeForce GT 635M +		152d 0930  GeForce GT 635M +	1248  GF116M [GeForce GT 555M/635M] +		152d 0930  GeForce GT 635M +		17c0 10e7  GeForce GT 555M +		17c0 10e8  GeForce GT 555M +		17c0 10ea  GeForce GT 555M +		1854 0890  GeForce GT 555M +		1854 0891  GeForce GT 555M +		1854 1795  GeForce GT 555M +		1854 1796  GeForce GT 555M +		1854 3005  GeForce GT 555M +	1249  GF116 [GeForce GTS 450 Rev. 3] +	124b  GF116 [GeForce GT 640 OEM] +	124d  GF116M [GeForce GT 555M/635M] +		1028 0491  GeForce GT 555M +		1028 0570  GeForce GT 555M +		1028 0571  GeForce GT 555M +		1462 108d  GeForce GT 555M +		1462 10cc  GeForce GT 635M +	1251  GF116M [GeForce GT 560M] +	1280  GK208 [GeForce GT 635] +	1281  GK208 [GeForce GT 710] +	1282  GK208 [GeForce GT 640 Rev. 2] +	1284  GK208 [GeForce GT 630 Rev. 2] +	1286  GK208 [GeForce GT 720] +	1287  GK208 [GeForce GT 730] +	1288  GK208 [GeForce GT 720] +	1290  GK208M [GeForce GT 730M] +		103c 2afa  GeForce GT 730A +		103c 2b04  GeForce GT 730A +		1043 13ad  GeForce GT 730M +		1043 13cd  GeForce GT 730M +	1291  GK208M [GeForce GT 735M] +	1292  GK208M [GeForce GT 740M] +		17aa 3675  GeForce GT 740A +		17aa 3684  GeForce GT 740A +	1293  GK208M [GeForce GT 730M] +	1294  GK208M [GeForce GT 740M] +	1295  GK208M [GeForce 710M] +		103c 2b0d  GeForce GT 710A +		103c 2b0f  GeForce GT 710A +		103c 2b11  GeForce GT 710A +		103c 2b20  GeForce 810A +		103c 2b21  GeForce GT 810A +		103c 2b22  GeForce GT 810A +	1296  GK208M [GeForce 825M] +	1298  GK208M [GeForce GT 720M] +	1299  GK208M [N16V-GM] +	12a0  GK208 +	12b9  GK208GLM [Quadro K610M] +	12ba  GK208GLM [Quadro K510M] +	1340  GM108M [GeForce 830M] +		103c 2b2b  GeForce 830A +	1341  GM108M [GeForce 840M] +		17aa 3697  GeForce 840A +		17aa 3699  GeForce 840A +		17aa 369c  GeForce 840A +	1346  GM108M [GeForce 930M] +	1347  GM108M [GeForce 940M] +	1380  GM107 [GeForce GTX 750 Ti] +	1381  GM107 [GeForce GTX 750] +	1382  GM107 [GeForce GTX 745] +	1389  GM107GL [GRID M30] +	1390  GM107M [GeForce 845M] +	1391  GM107M [GeForce GTX 850M] +		17aa 3697  GeForce GTX 850A +		17aa a125  GeForce GTX 850A +	1392  GM107M [GeForce GTX 860M] +	1393  GM107M [GeForce 840M] +	1398  GM107M [GeForce 845M] +	139a  GM107M [GeForce GTX 950M] +	139b  GM107M [GeForce GTX 960M] +	139c  GM107M [N16S-GT1-KB-B] +	13b0  GM107GLM [N16P-Q3] +	13b3  GM107GLM [Quadro K2200M] +	13ba  GM107GL [Quadro K2200] +	13bb  GM107GL [Quadro K620] +	13bc  GM107GL [Quadro K1200] +	13bd  GM107GL [GRID M40] +	13c0  GM204 [GeForce GTX 980] +		1043 8504  GTX980-4GD5 +	13c1  GM204 +	13c2  GM204 [GeForce GTX 970] +	13c3  GM204 +	13d7  GM204M [GeForce GTX 980M] +	13d8  GM204M [GeForce GTX 970M] +	13d9  GM204M [GeForce GTX 965M] +	1401  GM206 [GeForce GTX 960] +	17f0  GM200GL [Quadro M6000] +10df  Emulex Corporation +	0720  OneConnect NIC (Skyhawk) +		17aa 1056  ThinkServer OCm14102-UX-L AnyFabric +		17aa 1057  ThinkServer OCm14104-UX-L AnyFabric +		17aa 1059  ThinkServer OCm14104-UT-L AnyFabric +	0722  OneConnect iSCSI Initiator (Skyhawk) +	0723  OneConnect iSCSI Initiator + Target (Skyhawk) +	0724  OneConnect FCoE Initiator (Skyhawk) +	0728  OneConnect NIC (Skyhawk-VF) +	072a  OneConnect iSCSI Initiator (Skyhawk-VF) +	072b  OneConnect iSCSI Initiator + Target (Skyhawk-VF) +	072c  OneConnect FCoE Initiator (Skyhawk-VF) +	1ae5  LP6000 Fibre Channel Host Adapter +	e100  Proteus-X: LightPulse IOV Fibre Channel Host Adapter +	e131  LightPulse 8Gb/s PCIe Shared I/O Fibre Channel Adapter +	e180  Proteus-X: LightPulse IOV Fibre Channel Host Adapter +	e200  Lancer-X: LightPulse Fibre Channel Host Adapter +	e208  LightPulse 16Gb Fibre Channel Host Adapter (Lancer-VF) +	e220  OneConnect NIC (Lancer) +		17aa 1054  ThinkServer LPm16002B-M6-L AnyFabric +		17aa 1055  ThinkServer LPm16004B-M8-L AnyFabric +	e240  OneConnect iSCSI Initiator (Lancer) +	e260  OneConnect FCoE Initiator (Lancer) +	e268  OneConnect 10Gb FCoE Converged Network Adapter (Lancer-VF) +	f011  Saturn: LightPulse Fibre Channel Host Adapter +	f015  Saturn: LightPulse Fibre Channel Host Adapter +	f085  LP850 Fibre Channel Host Adapter +	f095  LP952 Fibre Channel Host Adapter +	f098  LP982 Fibre Channel Host Adapter +	f0a1  Thor LightPulse Fibre Channel Host Adapter +	f0a5  Thor LightPulse Fibre Channel Host Adapter +	f0b5  Viper LightPulse Fibre Channel Host Adapter +	f0d1  Helios LightPulse Fibre Channel Host Adapter +	f0d5  Helios LightPulse Fibre Channel Host Adapter +	f0e1  Zephyr LightPulse Fibre Channel Host Adapter +	f0e5  Zephyr LightPulse Fibre Channel Host Adapter +	f0f5  Neptune LightPulse Fibre Channel Host Adapter +	f100  Saturn-X: LightPulse Fibre Channel Host Adapter +	f111  Saturn-X LightPulse Fibre Channel Host Adapter +	f112  Saturn-X LightPulse Fibre Channel Host Adapter +	f180  LPSe12002 EmulexSecure Fibre Channel Adapter +	f700  LP7000 Fibre Channel Host Adapter +	f701  LP7000 Fibre Channel Host Adapter Alternate ID (JX1:2-3, JX2:1-2) +	f800  LP8000 Fibre Channel Host Adapter +	f801  LP8000 Fibre Channel Host Adapter Alternate ID (JX1:2-3, JX2:1-2) +	f900  LP9000 Fibre Channel Host Adapter +	f901  LP9000 Fibre Channel Host Adapter Alternate ID (JX1:2-3, JX2:1-2) +	f980  LP9802 Fibre Channel Host Adapter +	f981  LP9802 Fibre Channel Host Adapter Alternate ID +	f982  LP9802 Fibre Channel Host Adapter Alternate ID +	fa00  Thor-X LightPulse Fibre Channel Host Adapter +	fb00  Viper LightPulse Fibre Channel Host Adapter +	fc00  Thor-X LightPulse Fibre Channel Host Adapter +		10df fc00  LP10000 LightPulse Fibre Channel Host Adapter +	fc10  Helios-X LightPulse Fibre Channel Host Adapter +	fc20  Zephyr-X LightPulse Fibre Channel Host Adapter +	fc40  Saturn-X: LightPulse Fibre Channel Host Adapter +	fc50  Proteus-X: LightPulse IOV Fibre Channel Host Adapter +	fd00  Helios-X LightPulse Fibre Channel Host Adapter +	fd11  Helios-X LightPulse Fibre Channel Host Adapter +	fd12  Helios-X LightPulse Fibre Channel Host Adapter +	fe00  Zephyr-X LightPulse Fibre Channel Host Adapter +	fe05  Zephyr-X: LightPulse FCoE Adapter +	fe11  Zephyr-X LightPulse Fibre Channel Host Adapter +	fe12  Zephyr-X LightPulse FCoE Adapter +	ff00  Neptune LightPulse Fibre Channel Host Adapter +10e0  Integrated Micro Solutions Inc. +	5026  IMS5026/27/28 +	5027  IMS5027 +	5028  IMS5028 +	8849  IMS8849 +	8853  IMS8853 +	9128  IMS9128 [Twin turbo 128] +10e1  Tekram Technology Co.,Ltd. +	0391  TRM-S1040 +		10e1 0391  DC-315U SCSI-3 Host Adapter +	690c  DC-690c +	dc29  DC-290 +10e2  Aptix Corporation +10e3  Tundra Semiconductor Corp. +	0000  CA91C042 [Universe] +	0108  Tsi108 Host Bridge for Single PowerPC +	0148  Tsi148 [Tempe] +		1775 1100  VR11 Single Board Computer +	0860  CA91C860 [QSpan] +	0862  CA91C862A [QSpan-II] +	8260  CA91L8200B [Dual PCI PowerSpan II] +	8261  CA91L8260B [Single PCI PowerSpan II] +	a108  Tsi109 Host Bridge for Dual PowerPC +10e4  Tandem Computers +	8029  Realtek 8029 Network Card +10e5  Micro Industries Corporation +10e6  Gainbery Computer Products Inc. +10e7  Vadem +10e8  Applied Micro Circuits Corp. +	1072  INES GPIB-PCI (AMCC5920 based) +	2011  Q-Motion Video Capture/Edit board +	4750  S5930 [Matchmaker] +	5920  S5920 +	8043  LANai4.x [Myrinet LANai interface chip] +	8062  S5933_PARASTATION +	807d  S5933 [Matchmaker] +	8088  Kongsberg Spacetec Format Synchronizer +	8089  Kongsberg Spacetec Serial Output Board +	809c  S5933_HEPC3 +	80b9  Harmonix Hi-Card P8 (4x active ISDN BRI) +	80d7  PCI-9112 +	80d8  PCI-7200 +	80d9  PCI-9118 +	80da  PCI-9812 +	80fc  APCI1500 Signal processing controller (16 dig. inputs + 16 dig. outputs) +	811a  PCI-IEEE1355-DS-DE Interface +	814c  Fastcom ESCC-PCI (Commtech, Inc.) +	8170  S5933 [Matchmaker] (Chipset Development Tool) +	81e6  Multimedia video controller +	828d  APCI3001 Signal processing controller (up to 16 analog inputs) +	8291  Fastcom 232/8-PCI (Commtech, Inc.) +	82c4  Fastcom 422/4-PCI (Commtech, Inc.) +	82c5  Fastcom 422/2-PCI (Commtech, Inc.) +	82c6  Fastcom IG422/1-PCI (Commtech, Inc.) +	82c7  Fastcom IG232/2-PCI (Commtech, Inc.) +	82ca  Fastcom 232/4-PCI (Commtech, Inc.) +	82db  AJA HDNTV HD SDI Framestore +	82e2  Fastcom DIO24H-PCI (Commtech, Inc.) +	8406  PCIcanx/PCIcan CAN interface [Kvaser AB] +	8407  PCIcan II CAN interface (A1021, PCB-07, PCB-08) [Kvaser AB] +	8851  S5933 on Innes Corp FM Radio Capture card +	e004  X-Gene PCIe bridge +10e9  Alps Electric Co., Ltd. +10ea  Integraphics +	1680  IGA-1680 +	1682  IGA-1682 +	1683  IGA-1683 +	2000  CyberPro 2000 +	2010  CyberPro 2000A +	5000  CyberPro 5000 +	5050  CyberPro 5050 +	5202  CyberPro 5202 +# CyberPro5202 Audio Function +	5252  CyberPro5252 +10eb  Artists Graphics +	0101  3GA +	8111  Twist3 Frame Grabber +10ec  Realtek Semiconductor Co., Ltd. +	0139  RTL-8139/8139C/8139C+ Ethernet Controller +	5208  RTS5208 PCI Express Card Reader +	5209  RTS5209 PCI Express Card Reader +	5227  RTS5227 PCI Express Card Reader +		17aa 220e  ThinkPad T440p +		17aa 2214  ThinkPad X240 +	5229  RTS5229 PCI Express Card Reader +		1025 0813  Aspire R7-571 +		103c 194e  ProBook 455 G1 Notebook +	5249  RTS5249 PCI Express Card Reader +		103c 1909  ZBook 15 +	5288  RTS5288 PCI Express Card Reader +	8029  RTL-8029(AS) +		10b8 2011  EZ-Card (SMC1208) +		10ec 8029  RTL-8029(AS) +		1113 1208  EN1208 +		1186 0300  DE-528 +		1259 2400  AT-2400 +		1af4 1100  QEMU Virtual Machine +	8129  RTL-8129 +		10ec 8129  RT8129 Fast Ethernet Adapter +		11ec 8129  RTL8111/8168 PCIe Gigabit Ethernet (misconfigured) +	8136  RTL8101E/RTL8102E PCI Express Fast Ethernet controller +		103c 2ab1  Pavilion p6774 +		103c 30cc  Pavilion dv6700 +		1179 ff64  RTL8102E PCI-E Fast Ethernet NIC +		17c0 1053  AzureWave AW-NE766 802.11B/G/N Mini PCIe Card Model RT2700E +	8138  RT8139 (B/C) Cardbus Fast Ethernet Adapter +		10ec 8138  RT8139 (B/C) Fast Ethernet Adapter +	8139  RTL-8100/8101L/8139 PCI Fast Ethernet Adapter +		0357 000a  TTP-Monitoring Card V2.0 +		1025 005a  TravelMate 290 +		1025 8920  ALN-325 +		1025 8921  ALN-325 +		103c 006a  NX9500 +		103c 2a20  Pavilion t3030.de Desktop PC +		103c 30d9  Presario C700 +		1043 1045  L8400B or L3C/S notebook +		1043 8109  P5P800-MX Mainboard +		1071 8160  MIM2000 +		10bd 0320  EP-320X-R +		10ec 8139  RTL-8100/8101L/8139 PCI Fast Ethernet Adapter +		10f7 8338  Panasonic CF-Y5 laptop +		1113 ec01  LevelOne FNC-0107TX/FNC-0109TX +		1186 1300  DFE-538TX +		1186 1320  SN5200 +		1186 8139  DRN-32TX +		11f6 8139  FN22-3(A) LinxPRO Ethernet Adapter +		1259 2500  AT-2500TX +		1259 2503  AT-2500TX/ACPI +		1385 f31d  FA311 v2 +		1395 2100  AMB2100 +		1429 d010  ND010/ND012 +		1432 9130  EN-9130TX +		1436 8139  RT8139 +		144d c00c  P30/P35 notebook +		1458 e000  GA-7VM400M/7VT600 Motherboard +		1462 0131  MS-1013 Notebook +		1462 217c  Aspire L250 +		1462 788c  865PE Neo2-V Mainboard +		146c 1439  FE-1439TX +		1489 6001  GF100TXRII +		1489 6002  GF100TXRA +		149c 139a  LFE-8139ATX +		149c 8139  LFE-8139TX +		14cb 0200  LNR-100 Family 10/100 Base-TX Ethernet +		1565 2300  P4TSV Onboard LAN (RTL8100B) +		1631 7003  Onboard RTL8111 on GA-8SIML Rev1.0 Mainboard +		1695 9001  Onboard RTL8101L 10/100 MBit +		16ec 00ff  USR997900A +		1799 5000  F5D5000 PCI Card/Desktop Network PCI Card +		1799 5010  F5D5010 CardBus Notebook Network Card +		187e 3303  FN312 +		1904 8139  RTL8139D Fast Ethernet Adapter +		1af4 1100  QEMU Virtual Machine +		2646 0001  KNE120TX +		8e2e 7000  KF-230TX +		8e2e 7100  KF-230TX/2 +		a0a0 0007  ALN-325C +	8167  RTL-8110SC/8169SC Gigabit Ethernet +		1458 e000  GA-MA69G-S3H Motherboard +		1462 235c  P965 Neo MS-7235 mainboard +		1462 236c  945P Neo3-F motherboard +	8168  RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller +		1019 8168  RTL8111/8168 PCI Express Gigabit Ethernet controller +		1028 0283  Vostro 220 +		1028 04b2  Vostro 3350 +		1028 04da  Vostro 3750 +		103c 1611  Pavilion DM1Z-3000 +		103c 1950  ProBook 450/455 +		103c 2a6f  Asus IPIBL-LB Motherboard +		1043 11f5  A6J-Q008 +		1043 16d5  U6V/U31J laptop +		1043 81aa  P5B +		1043 82c6  M3A78-EH Motherboard +		1043 83a3  M4A785TD Motherboard +		1043 8432  P8P67 and other motherboards +		1043 8505  P8 series motherboard +		105b 0d7c  D270S/D250S Motherboard +		10ec 8168  RTL8111/8168 PCI Express Gigabit Ethernet controller +		1458 e000  Motherboard +		1462 238c  Onboard RTL8111b on MSI P965 Platinum Mainboard +		1462 368c  K9AG Neo2 +		1462 4180  Wind PC MS-7418 +		1462 7522  X58 Pro-E +		1775 11cc  CC11/CL11 +		1849 8168  Motherboard (one of many) +		8086 d615  Desktop Board D510MO/D525MW +	8169  RTL8169 PCI Gigabit Ethernet Controller +		1025 0079  Aspire 5024WLMi +		10bd 3202  EP-320G-TX1 32-bit PCI Gigabit Ethernet Adapter +		10ec 8169  RTL8169/8110 Family PCI Gigabit Ethernet NIC +		1259 c107  CG-LAPCIGT +		1371 434e  ProG-2000L +		1385 311a  GA311 +		1385 5200  GA511 Gigabit PC Card +		1458 e000  GA-8I915ME-G Mainboard +		1462 030c  K8N Neo-FSR v2.0 mainboard +		1462 065c  Hetis 865GV-E (MS-7065) +		1462 702c  K8T NEO 2 motherboard +		1462 7094  K8T Neo2-F V2.0 +		16ec 011f  USR997903 +		1734 1091  D2030-A1 +		a0a0 0449  AK86-L motherboard +	8171  RTL8191SEvA Wireless LAN Controller +	8172  RTL8191SEvB Wireless LAN Controller +	8173  RTL8192SE Wireless LAN Controller +	8174  RTL8192SE Wireless LAN Controller +	8176  RTL8188CE 802.11b/g/n WiFi Adapter +		1a3b 1139  AW-NE139H Half-size Mini PCIe Card +	8177  RTL8191CE PCIe Wireless Network Adapter +	8178  RTL8192CE PCIe Wireless Network Adapter +	8179  RTL8188EE Wireless Network Adapter +	8180  RTL8180L 802.11b MAC +		1385 4700  MA521 802.11b Wireless PC Card +		1737 0019  WPC11v4 802.11b Wireless-B Notebook Adapter +	8185  RTL-8185 IEEE 802.11a/b/g Wireless LAN Controller +	818b  RTL8192EE PCIe Wireless Network Adapter +	8190  RTL8190 802.11n PCI Wireless Network Adapter +	8191  RTL8192CE PCIe Wireless Network Adapter +	8192  RTL8192E/RTL8192SE Wireless LAN Controller +	8193  RTL8192DE Wireless LAN Controller +	8197  SmartLAN56 56K Modem +	8199  RTL8187SE Wireless LAN Controller +		1462 6894  MN54G2 / MS-6894 Wireless Mini PCIe Card +	8723  RTL8723AE PCIe Wireless Network Adapter +	8812  RTL8812AE 802.11ac PCIe Wireless Network Adapter +	8813  RTL8813AE 802.11ac PCIe Wireless Network Adapter +	8821  RTL8821AE 802.11ac PCIe Wireless Network Adapter +	b723  RTL8723BE PCIe Wireless Network Adapter +10ed  Ascii Corporation +	7310  V7310 +10ee  Xilinx Corporation +	0001  EUROCOM for PCI (ECOMP) +	0002  Octal E1/T1 for PCI ETP Card +	0007  Default PCIe endpoint ID +	0205  Wildcard TE205P +	0210  Wildcard TE210P +	0300  Spartan 3 Designs (Xilinx IP) +	0314  Wildcard TE405P/TE410P (1st Gen) +	0405  Wildcard TE405P (2nd Gen) +	0410  Wildcard TE410P (2nd Gen) +	0600  Xilinx 6 Designs (Xilinx IP) +	2b00  Zomojo Zcard +	3fc0  RME Digi96 +	3fc1  RME Digi96/8 +	3fc2  RME Digi96/8 Pro +	3fc3  RME Digi96/8 Pad +	3fc4  RME Digi9652 (Hammerfall) +	3fc5  RME Hammerfall DSP +	3fc6  RME Hammerfall DSP MADI +	8380  Ellips ProfiXpress Profibus Master +	8381  Ellips Santos Frame Grabber +	d154  Copley Controls CAN card (PCI-CAN-02) +# SED is assigned Xilinx PCI device IDs ebf0 through ebff +	ebf0  SED Systems Modulator/Demodulator +	ebf1  SED Systems Audio Interface Card +	ebf2  SED Systems Common PCI Interface +10ef  Racore Computer Products, Inc. +	8154  M815x Token Ring Adapter +10f0  Peritek Corporation +10f1  Tyan Computer +	2865  Tyan Thunder K8E S2865 +	5300  Tyan S5380 Mainboard +10f2  Achme Computer, Inc. +10f3  Alaris, Inc. +10f4  S-MOS Systems, Inc. +10f5  NKK Corporation +	a001  NDR4000 [NR4600 Bridge] +10f6  Creative Electronic Systems SA +10f7  Matsushita Electric Industrial Co., Ltd. +10f8  Altos India Ltd +10f9  PC Direct +10fa  Truevision +	000c  TARGA 1000 +10fb  Thesys Gesellschaft fuer Mikroelektronik mbH +	186f  TH 6255 +10fc  I-O Data Device, Inc. +# What's in the cardbus end of a Sony ACR-A01 card, comes with newer Vaio CD-RW drives +	0003  Cardbus IDE Controller +	0005  Cardbus SCSI CBSC II +10fd  Soyo Computer, Inc +10fe  Fast Multimedia AG +10ff  NCube +1100  Jazz Multimedia +1101  Initio Corporation +	0002  INI-920 Ultra SCSI Adapter +	1060  INI-A100U2W +	1622  INI-1623 PCI SATA-II Controller +	9100  INI-9100/9100W +	9400  INI-940 Fast Wide SCSI Adapter +	9401  INI-935 Fast Wide SCSI Adapter +	9500  INI-950 SCSI Adapter +	9502  INI-950P Ultra Wide SCSI Adapter +1102  Creative Labs +	0002  SB Live! EMU10k1 +		100a 1102  SB Live! 5.1 Digital OEM SB0220 EMU10K1-JFF +		1102 0020  CT4850 SBLive! Value +		1102 0021  CT4620 SBLive! +		1102 002f  SBLive! mainboard implementation +		1102 100a  SB Live! 5.1 Digital OEM [SB0220] +		1102 4001  E-mu APS +		1102 8022  CT4780 SBLive! Value +		1102 8023  CT4790 SoundBlaster PCI512 +		1102 8024  CT4760 SBLive! +		1102 8025  SBLive! Mainboard Implementation +		1102 8026  CT4830 SBLive! Value +		1102 8027  CT4832 SBLive! Value +		1102 8028  CT4760 SBLive! OEM version +		1102 8031  CT4831 SBLive! Value +		1102 8040  CT4760 SBLive! +		1102 8051  CT4850 SBLive! Value +		1102 8061  SBLive! Player 5.1 +		1102 8064  SBLive! 5.1 Model SB0100 +		1102 8065  SBLive! 5.1 Digital Model SB0220 +		1102 8066  Live! 5.1 Digital [SB0228] +		1102 8067  SBLive! 5.1 eMicro 28028 +	0004  SB Audigy +		1102 0051  SB0090 Audigy Player +		1102 0053  SB0090 Audigy Player/OEM +		1102 0058  SB0090 Audigy Player/OEM +		1102 1002  SB Audigy2 Platinum +		1102 1003  SB0350 Audigy 2 +		1102 1007  SB0240 Audigy 2 Platinum 6.1 +		1102 1009  SB Audigy2 OEM HP +		1102 2001  SB Audigy 2 ZS Platinum Pro +		1102 2002  SB Audigy 2 ZS (SB0350) +		1102 4001  E-MU 1010 +		1102 4002  E-MU 0404 +	0005  SB X-Fi +		1102 0021  X-Fi Platinum +		1102 002c  X-Fi XtremeGamer FATAL1TY PRO +		1102 1003  X-Fi XtremeMusic +	0006  [SB Live! Value] EMU10k1X +	0007  CA0106 Soundblaster +		1102 0007  SBLive! 24bit +		1102 1001  SB0310 Audigy LS +		1102 1002  SB0312 Audigy LS +		1102 1006  SB0410 SBLive! 24-bit +		1102 100a  SB0570 [SB Audigy SE] +		1102 1012  SB0790 X-Fi XA +		1102 1013  Soundblaster X-Fi Xtreme Audio +		1462 1009  K8N Diamond +	0008  SB0400 Audigy2 Value +		1102 0008  EMU0404 Digital Audio System +		1102 4004  EMU1010 Digital Audio System [MAEM8960] +	0009  [SB X-Fi Xtreme Audio] CA0110-IBG +		1102 0010  [SB X-Fi Xtreme Audio] CA0110-IBG +		1102 0018  SB1040 +	000b  EMU20k2 [X-Fi Titanium Series] +		1102 0041  SB0880 [SoundBlaster X-Fi Titanium PCI-e] +	0012  SB Recon3D +	4001  SB Audigy FireWire Port +		1102 0010  SB Audigy FireWire Port +	7002  SB Live! Game Port +		1102 0020  Gameport Joystick +	7003  SB Audigy Game Port +		1102 0040  SB Audigy Game Port +		1102 0060  SB Audigy2 MIDI/Game Port +	7004  [SB Live! Value] Input device controller +	7005  SB Audigy LS Game Port +		1102 1001  SB0310 Audigy LS MIDI/Game port +		1102 1002  SB0312 Audigy LS MIDI/Game port +	7006  [SB X-Fi Xtreme Audio] CA0110-IBG PCI to PCIe Bridge +	8938  Ectiva EV1938 +		1033 80e5  SlimTower-Jim (NEC) +		1071 7150  Mitac 7150 +		110a 5938  Siemens Scenic Mobile 510PIII +		13bd 100c  Ceres-C (Sharp, Intel BX) +		13bd 100d  Sharp, Intel Banister +		13bd 100e  TwinHead P09S/P09S3 (Sharp) +		13bd f6f1  Marlin (Sharp) +		14ff 0e70  P88TE (TWINHEAD INTERNATIONAL Corp) +		14ff c401  Notebook 9100/9200/2000 (TWINHEAD INTERNATIONAL Corp) +		156d b400  G400 - Geo (AlphaTop (Taiwan)) +		156d b550  G560  (AlphaTop (Taiwan)) +		156d b560  G560  (AlphaTop (Taiwan)) +		156d b700  G700/U700  (AlphaTop (Taiwan)) +		156d b795  G795  (AlphaTop (Taiwan)) +		156d b797  G797  (AlphaTop (Taiwan)) +# nee Triones Technologies, Inc. +1103  HighPoint Technologies, Inc. +	0003  HPT343/345/346/363 +	0004  HPT366/368/370/370A/372/372N +		1103 0001  HPT370A +		1103 0004  HPT366 UDMA66 (r1) / HPT368 UDMA66 (r2) / HPT370 UDMA100 (r3) / HPT370 UDMA100 RAID (r4) +		1103 0005  HPT370 UDMA100 +		1103 0006  HPT302/302N +	0005  HPT372A/372N +	0006  HPT302/302N +	0007  HPT371/371N +	0008  HPT374 +	0009  HPT372N +	0620  RocketRAID 620 2 Port SATA-III Controller +	0622  RocketRAID 622 2 Port SATA-III Controller +	0640  RocketRAID 640 4 Port SATA-III Controller +	0644  RocketRAID 644 4 Port SATA-III Controller (eSATA) +	0645  RocketRAID 644L 4 Port SATA-III Controller (eSATA) +	1720  RocketRAID 1720 (2x SATA II RAID Controller) +	1740  RocketRAID 1740 +	1742  RocketRAID 1742 +	2210  RocketRAID 2210 SATA-II Controller +		11ab 11ab  88SX6042 +	2300  RocketRAID 230x 4 Port SATA-II Controller +	2310  RocketRAID 2310 4 Port SATA-II Controller +	2320  RocketRAID 2320 SATA-II Controller +	2322  RocketRAID 2322 SATA-II Controller +	2340  RocketRAID 2340 16 Port SATA-II Controller +	2640  RocketRAID 2640 SAS/SATA Controller +	2722  RocketRAID 2722 +# SFF-8087 Mini-SAS 16 port internal +	2740  RocketRAID 2740 +# SFF-8088 Mini-SAS 16 port external +	2744  RocketRaid 2744 +# SFF-8088 8 port external / SFF-8087 24 port internal +	2782  RocketRAID 2782 +	3120  RocketRAID 3120 +	3220  RocketRAID 3220 +	3320  RocketRAID 3320 +	4310  RocketRaid 4310 +1104  RasterOps Corp. +1105  Sigma Designs, Inc. +	1105  REALmagic Xcard MPEG 1/2/3/4 DVD Decoder +	8300  REALmagic Hollywood Plus DVD Decoder +	8400  EM840x REALmagic DVD/MPEG-2 Audio/Video Decoder +	8401  EM8401 REALmagic DVD/MPEG-2 A/V Decoder +	8470  EM8470 REALmagic DVD/MPEG-4 A/V Decoder +	8471  EM8471 REALmagic DVD/MPEG-4 A/V Decoder +	8475  EM8475 REALmagic DVD/MPEG-4 A/V Decoder +		1105 0001  REALmagic X-Card +	8476  EM8476 REALmagic DVD/MPEG-4 A/V Decoder +		127d 0000  CineView II +	8485  EM8485 REALmagic DVD/MPEG-4 A/V Decoder +	8486  EM8486 REALmagic DVD/MPEG-4 A/V Decoder +	c622  EM8622L MPEG-4.10 (H.264) and SMPTE 421M (VC-1) A/V Decoder +1106  VIA Technologies, Inc. +	0102  Embedded VIA Ethernet Controller +	0130  VT6305 1394.A Controller +	0198  P4X600 Host Bridge +	0204  K8M800 Host Bridge +	0208  PT890 Host Bridge +	0238  K8T890 Host Bridge +	0258  PT880 Host Bridge +	0259  CN333/CN400/PM880 Host Bridge +	0269  KT880 Host Bridge +	0282  K8T800Pro Host Bridge +		1043 80a3  A8V Deluxe +	0290  K8M890 Host Bridge +	0293  PM896 Host Bridge +	0296  P4M800 Host Bridge +	0305  VT8363/8365 [KT133/KM133] +		1019 0987  K7VZA Mainboard +		1043 8033  A7V Mainboard +		1043 803e  A7V-E Mainboard +		1043 8042  A7V133/A7V133-C Mainboard +		147b a401  KT7/KT7-RAID/KT7A/KT7A-RAID Mainboard +	0308  PT880 Ultra/PT894 Host Bridge +		1043 8199  P4V800D-X Mainboard +		1849 0308  Motherboard +	0314  CN700/VN800/P4M800CE/Pro Host Bridge +	0324  CX700/VX700 Host Bridge +	0327  P4M890 Host Bridge +	0336  K8M890CE Host Bridge +	0340  PT900 Host Bridge +	0351  K8T890CF Host Bridge +	0353  VX800 Host Bridge +	0364  CN896/VN896/P4M900 Host Bridge +		1043 81ce  P5VD2-VM mothervoard +	0391  VT8371 [KX133] +	0409  VX855/VX875 Host Bridge: Host Control +	0410  VX900 Host Bridge: Host Control +	0415  VT6415 PATA IDE Host Controller +		1043 838f  Motherboard +	0501  VT8501 [Apollo MVP4] +	0505  VT82C505 +# Shares chip with :0576. The VT82C576M has :1571 instead of :0561. +	0561  VT82C576MV +	0571  VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE +		1019 0985  P6VXA Motherboard +		1019 0a81  L7VTA v1.0 Motherboard (KT400-8235) +		1043 8052  VT8233A Bus Master ATA100/66/33 IDE +		1043 808c  A7V8X / A7V333 motherboard +		1043 80a1  A7V8X-X motherboard rev. 1.01 +		1043 80ed  A7V600/K8V-X/A8V Deluxe motherboard +		1106 0571  VT82C586/B/VT82C686/A/B/VT8233/A/C/VT8235 PIPC Bus Master IDE +		1179 0001  Magnia Z310 +		1297 f641  FX41 motherboard +		1458 5002  GA-7VAX Mainboard +		1462 5901  KT6 Delta-FIS2R (MS-6590) +		1462 7020  K8T NEO 2 motherboard +		1462 7094  K8T Neo2-F V2.0 +		1462 7120  KT4AV motherboard +		1462 7181  K8MM3-V mainboard +		147b 1407  KV8-MAX3 motherboard +# probably all K7VT2/4*/6 +		1849 0571  K7VT series Motherboards +	0576  VT82C576 3V [Apollo Master] +	0581  CX700/VX700 RAID Controller +# Upgrade bios to get correct ID: 5324 instead of 0581 +		1106 0581  Wrong IDE ID +	0585  VT82C585VP [Apollo VP1/VPX] +	0586  VT82C586/A/B PCI-to-ISA [Apollo VP] +		1106 0000  MVP3 ISA Bridge +	0591  VT8237A SATA 2-Port Controller +	0595  VT82C595 [Apollo VP2] +	0596  VT82C596 ISA [Mobile South] +		1106 0000  VT82C596/A/B PCI to ISA Bridge +		1458 0596  VT82C596/A/B PCI to ISA Bridge +	0597  VT82C597 [Apollo VP3] +	0598  VT82C598 [Apollo MVP3] +	0601  VT8601 [Apollo ProMedia] +	0605  VT8605 [ProSavage PM133] +		103c 1254  D9840-60001 [Brio BA410 Motherboard] +		1043 802c  CUV4X mainboard +	0680  VT82C680 [Apollo P6] +	0686  VT82C686 [Apollo Super South] +		1019 0985  P6VXA Motherboard +		103c 1256  D9840-60001 [Brio BA410 Motherboard] +		1043 802c  CUV4X mainboard +		1043 8033  A7V Mainboard +		1043 803e  A7V-E Mainboard +		1043 8040  A7M266 Mainboard +		1043 8042  A7V133/A7V133-C Mainboard +		1106 0000  VT82C686/A PCI to ISA Bridge +		1106 0686  VT82C686/A PCI to ISA Bridge +		1179 0001  Magnia Z310 +		147b a702  KG7-Lite Mainboard +	0691  VT82C693A/694x [Apollo PRO133x] +		1019 0985  P6VXA Motherboard +		1179 0001  Magnia Z310 +		1458 0691  VT82C691 Apollo Pro System Controller +	0693  VT82C693 [Apollo Pro Plus] +	0698  VT82C693A [Apollo Pro133 AGP] +	0709  VX11 Standard Host Bridge +	070a  VX11 PCI Express Root Port +	070b  VX11 PCI Express Root Port +	070c  VX11 PCI Express Root Port +	070d  VX11 PCI Express Root Port +	070e  VX11 PCI Express Root Port +	0926  VT82C926 [Amazon] +	1000  VT82C570MV +	1106  VT82C570MV +	1122  VX800/VX820 Chrome 9 HC3 Integrated Graphics +	1204  K8M800 Host Bridge +	1208  PT890 Host Bridge +	1238  K8T890 Host Bridge +	1258  PT880 Host Bridge +	1259  CN333/CN400/PM880 Host Bridge +	1269  KT880 Host Bridge +	1282  K8T800Pro Host Bridge +	1290  K8M890 Host Bridge +	1293  PM896 Host Bridge +	1296  P4M800 Host Bridge +	1308  PT894 Host Bridge +	1314  CN700/VN800/P4M800CE/Pro Host Bridge +	1324  CX700/VX700 Host Bridge +	1327  P4M890 Host Bridge +	1336  K8M890CE Host Bridge +	1340  PT900 Host Bridge +	1351  VT3351 Host Bridge +	1353  VX800/VX820 Error Reporting +	1364  CN896/VN896/P4M900 Host Bridge +	1409  VX855/VX875 Error Reporting +	1410  VX900 Error Reporting +	1571  VT82C576M/VT82C586 +	1595  VT82C595/97 [Apollo VP2/97] +	1732  VT1732 [Envy24 II] PCI Multi-Channel Audio Controller +	2106  VIA Rhine Family Fast Ethernet Adapter (VT6105) +	2204  K8M800 Host Bridge +	2208  PT890 Host Bridge +	2238  K8T890 Host Bridge +	2258  PT880 Host Bridge +	2259  CN333/CN400/PM880 CPU Host Bridge +	2269  KT880 Host Bridge +	2282  K8T800Pro Host Bridge +	2290  K8M890 Host Bridge +	2293  PM896 Host Bridge +	2296  P4M800 Host Bridge +	2308  PT894 Host Bridge +	2314  CN700/VN800/P4M800CE/Pro Host Bridge +	2324  CX700/VX700 Host Bridge +	2327  P4M890 Host Bridge +	2336  K8M890CE Host Bridge +	2340  PT900 Host Bridge +	2351  VT3351 Host Bridge +	2353  VX800/VX820 Host Bus Control +	2364  CN896/VN896/P4M900 Host Bridge +	2409  VX855/VX875 Host Bus Control +	2410  VX900 CPU Bus Controller +	287a  VT8251 PCI to PCI Bridge +	287b  VT8251 Host Bridge +	287c  VT8251 PCIE Root Port +	287d  VT8251 PCIE Root Port +	287e  VT8237/8251 Ultra VLINK Controller +	3022  CLE266 +	3038  VT82xxxxx UHCI USB 1.1 Controller +# possibly Hewlett-Packard D9840-60001 [Brio BA410 Motherboard] +		0925 1234  VA-502 Mainboard +		1019 0985  P6VXA Motherboard +		1019 0a81  L7VTA v1.0 Motherboard (KT400-8235) +		1043 8080  A7V333 motherboard +		1043 808c  VT6202 USB2.0 4 port controller +		1043 80a1  A7V8X-X motherboard +		1043 80ed  A7V600/K8V-X/A8V Deluxe motherboard +		1179 0001  Magnia Z310 +		1458 5004  GA-7VAX Mainboard +		1462 5901  KT6 Delta-FIS2R (MS-6590) +		1462 7020  K8T NEO 2 motherboard +		1462 7094  K8T Neo2-F V2.0 +		1462 7120  KT4AV motherboard +		1462 7181  K8MM3-V mainboard +		147b 1407  KV8-MAX3 motherboard +		182d 201d  CN-029 USB2.0 4 port PCI Card +# probably all K7VT2/4*/6 +		1849 3038  K7VT series Motherboards +		19da a179  ZBOX nano VD01 +		1af4 1100  QEMU Virtual Machine +	3040  VT82C586B ACPI +	3043  VT86C100A [Rhine] +		10bd 0000  VT86C100A Fast Ethernet Adapter +		1106 0100  VT86C100A Fast Ethernet Adapter +		1186 1400  DFE-530TX rev A +	3044  VT6306/7/8 [Fire II(M)] IEEE 1394 OHCI Controller +		0010 0001  IEEE 1394 4port DCST 1394-3+1B +		1025 005a  TravelMate 290 +		103c 2a20  Pavilion t3030.de Desktop PC +		103c 2a3b  Media Center PC m7590n +		1043 808a  A8V/A8N/P4P800 series motherboard +		1043 81fe  Motherboard +		1458 1000  GA-7VT600-1394 Motherboard +		1462 207d  K8NGM2 series motherboard +		1462 217d  Aspire L250 +		1462 590d  KT6 Delta-FIS2R (MS-6590) +		1462 702d  K8T NEO 2 motherboard +		1462 971d  MS-6917 +	3050  VT82C596 Power Management +	3051  VT82C596 Power Management +	3053  VT6105M [Rhine-III] +	3057  VT82C686 [Apollo Super ACPI] +		1019 0985  P6VXA Motherboard +		1019 0987  K7VZA Motherboard +		1043 8033  A7V Mainboard +		1043 803e  A7V-E Mainboard +		1043 8040  A7M266 Mainboard +		1043 8042  A7V133/A7V133-C Mainboard +		1179 0001  Magnia Z310 +	3058  VT82C686 AC97 Audio Controller +		0e11 0097  SoundMax Digital Integrated Audio +		0e11 b194  Soundmax integrated digital audio +		1019 0985  P6VXA Motherboard +		1019 0987  K7VZA Motherboard +		103c 1251  D9840-60001 [Brio BA410 Motherboard] +		1043 1106  A7V133/A7V133-C Mainboard +		1106 4511  Onboard Audio on EP7KXA +		1106 aa03  VT1612A AC'97 Audio Controller +		11d4 5348  AD1881A audio +		1458 7600  Onboard Audio +		1462 3091  MS-6309 Onboard Audio +		1462 3092  MS-6309 v2.x Mainboard (VIA VT1611A codec) +		1462 3300  MS-6330 Onboard Audio +		15dd 7609  Onboard Audio +	3059  VT8233/A/8235/8237 AC97 Audio Controller +		1019 0a81  L7VTA v1.0 Motherboard (KT400-8235) +		1019 1877  K8M800-M2 (V2.0) onboard audio +		1043 8095  A7V8X Motherboard (Realtek ALC650 codec) +		1043 80a1  A7V8X-X Motherboard +		1043 80b0  A7V600/K8V-X/K8V Deluxe motherboard (ADI AD1980 codec [SoundMAX]) +		1043 810d  Asus P5VD1-X (AD1888 codec [SoundMax]) +		1043 812a  A8V Deluxe motherboard (Realtek ALC850 codec) +		10ec 8168  High Definition Audio +		1106 3059  L7VMM2 Motherboard +		1106 4161  K7VT2 motherboard +		1106 4170  PCPartner P4M800-8237R Motherboard +		1106 4552  Soyo KT-600 Dragon Plus (Realtek ALC 650) +		1297 c160  FX41 motherboard (Realtek ALC650 codec) +		1413 147b  KV8 Pro motherboard onboard audio +		1458 a002  GA-7VAX Onboard Audio (Realtek ALC650) +		1462 0080  K8T NEO 2 motherboard +		1462 3800  KT266 onboard audio +		1462 5901  KT6 Delta-FIS2R (MS-6590) +		1462 7181  K8MM3-V mainboard +		147b 1407  KV8-MAX3 motherboard +		1695 300c  EP-8KRA2+ Mainboard +		1849 0850  ASRock 775Dual-880 Pro onboard audio (Realtek ALC850) +		1849 9739  P4VT8 Mainboard (C-Media CMI9739A codec) +# probably all K7VT2/4*/6 +		1849 9761  K7VT series Motherboards +		4005 4710  MSI K7T266 Pro2-RU (MSI-6380 v2) onboard audio (Realtek/ALC 200/200P) +		a0a0 01b6  AK77-8XN onboard audio +		a0a0 0342  AK86-L motherboard +	3065  VT6102 [Rhine-II] +		1043 80a1  A7V8X-X Motherboard +		1043 80ed  A7V600-X Motherboard +		1106 0102  VT6102 [Rhine II] Embeded Ethernet Controller on VT8235 +		1186 1400  DFE-530TX rev A +		1186 1401  DFE-530TX rev B +		13b9 1421  LD-10/100AL PCI Fast Ethernet Adapter (rev.B) +		1462 7061  MS-7061 +		1462 7181  K8MM3-V mainboard +		147b 1c09  NV7 Motherboard +		1695 3005  VT6103 +		1695 300c  Realtek ALC655 sound chip +# probably all K7VT2/4*/6 +		1849 3065  K7VT series Motherboards +# This hosts more than just the Intel 537 codec, it also hosts PCtel (SIL33) and SmartLink (SIL34) codecs +	3068  AC'97 Modem Controller +		1462 309e  MS-6309 Saturn Motherboard +	3074  VT8233 PCI to ISA Bridge +		1043 8052  VT8233A +	3091  VT8633 [Apollo Pro266] +	3099  VT8366/A/7 [Apollo KT266/A/333] +		1043 8064  A7V266-E Mainboard +		1043 807f  A7V333 Mainboard +		1849 3099  K7VT2 motherboard +	3101  VT8653 Host Bridge +	3102  VT8662 Host Bridge +	3103  VT8615 Host Bridge +	3104  USB 2.0 +		1019 0a81  L7VTA v1.0 Motherboard (KT400-8235) +		1043 808c  A7V8X motherboard +		1043 80a1  A7V8X-X motherboard rev 1.01 +		1043 80ed  A7V600/K8V-X/A8V Deluxe motherboard +		1106 3104  USB 2.0 Controller +		1297 f641  FX41 motherboard +		1458 5004  GA-7VAX Mainboard +		1462 5901  KT6 Delta-FIS2R (MS-6590) +		1462 7020  K8T NEO 2 motherboard +		1462 7094  K8T Neo2-F V2.0 +		1462 7120  KT4AV motherboard +		1462 7181  K8MM3-V mainboard +		147b 1407  KV8-MAX3 motherboard +		182d 201d  CN-029 USB 2.0 4 port PCI Card +# probably all K7VT2/4*/6 +		1849 3104  K7VT series Motherboards +		19da a179  ZBOX nano VD01 +	3106  VT6105/VT6106S [Rhine-III] +		1106 0105  VT6106S [Rhine-III] +		1186 1403  DFE-530TX rev C +		1186 1405  DFE-520TX Fast Ethernet PCI Adapter +		1186 1406  DFE-530TX+ rev F2 +		1186 1407  DFE-538TX +	3108  K8M800/K8N800/K8N800A [S3 UniChrome Pro] +	3109  VT8233C PCI to ISA Bridge +	3112  VT8361 [KLE133] Host Bridge +	3113  VPX/VPX2 PCI to PCI Bridge Controller +	3116  VT8375 [KM266/KL266] Host Bridge +		1297 f641  FX41 motherboard +	3118  CN400/PM800/PM880/PN800/PN880 [S3 UniChrome Pro] +	3119  VT6120/VT6121/VT6122 Gigabit Ethernet Adapter +	3122  VT8623 [Apollo CLE266] integrated CastleRock graphics +	3123  VT8623 [Apollo CLE266] +	3128  VT8753 [P4X266 AGP] +	3133  VT3133 Host Bridge +	3142  VT6651 WiFi Adapter, 802.11b +	3147  VT8233A ISA Bridge +		1043 808c  A7V333 motherboard +	3148  P4M266 Host Bridge +	3149  VIA VT6420 SATA RAID Controller +		1043 80ed  A7V600/K8V Deluxe/K8V-X/A8V Deluxe motherboard +		1458 b003  GA-7VM400AM(F) Motherboard +		1462 5901  KT6 Delta-FIS2R (MS-6590) +		1462 7020  K8T Neo 2 Motherboard +		1462 7094  K8T Neo2-F V2.0 +		1462 7181  K8MM3-V mainboard +		147b 1407  KV8-MAX3 motherboard +		147b 1408  KV7 +		1849 3149  K7VT6 motherboard +		a0a0 04ad  AK86-L motherboard +	3156  P/KN266 Host Bridge +	3157  CX700/VX700 [S3 UniChrome Pro] +	3164  VT6410 ATA133 RAID controller +		1043 80f4  P4P800 Mainboard Deluxe ATX +		1462 7028  915P/G Neo2 +	3168  P4X333/P4X400/PT800 AGP Bridge +		1849 3168  P4VT8 Mainboard +	3177  VT8235 ISA Bridge +		1019 0a81  L7VTA v1.0 Motherboard (KT400-8235) +		1043 808c  A7V8X motherboard +		1043 80a1  A7V8X-X motherboard +		1106 0000  KT4AV motherboard +		1297 f641  FX41 motherboard +		1458 5001  GA-7VAX Mainboard +# probably all K7VT2/4*/6 +		1849 3177  K7VT series Motherboards +	3178  ProSavageDDR P4N333 Host Bridge +	3188  VT8385 [K8T800 AGP] Host Bridge +		1043 80a3  K8V Deluxe/K8V-X motherboard +		147b 1407  KV8-MAX3 motherboard +	3189  VT8377 [KT400/KT600 AGP] Host Bridge +		1043 807f  A7V8X motherboard +		1106 0000  KT4AV motherboard (KT400A) +		1458 5000  GA-7VAX Mainboard +# probably all K7VT2/4*/6 +		1849 3189  K7VT series Motherboards +	31b0  VX11 Standard Host Bridge +	31b1  VX11 Standard Host Bridge +	31b2  VX11 DRAM Controller +	31b3  VX11 Power Management Controller +	31b4  VX11 I/O APIC +	31b5  VX11 Scratch Device +	31b7  VX11 Standard Host Bridge +	31b8  VX11 PCI to PCI Bridge +	3204  K8M800 Host Bridge +	3205  VT8378 [KM400/A] Chipset Host Bridge +		1458 5000  GA-7VM400M Motherboard +	3208  PT890 Host Bridge +	3213  VPX/VPX2 PCI to PCI Bridge Controller +	3218  K8T800M Host Bridge +	3227  VT8237 ISA bridge [KT600/K8T800/K8T890 South] +		1043 80ed  A7V600/K8V-X/A8V Deluxe motherboard +		1106 3227  DFI KT600-AL / Soltek SL-B9D-FGR Motherboard +		1458 5001  GA-7VT600 Motherboard +		147b 1407  KV8-MAX3 motherboard +		1849 3227  K7VT4 motherboard +	3230  K8M890CE/K8N890CE [Chrome 9] +	3238  K8T890 Host Bridge +	3249  VT6421 IDE/SATA Controller +		1106 3249  VT6421 IDE/SATA Controller +	324a  CX700/VX700 PCI to PCI Bridge +	324b  CX700/VX700 Host Bridge +	324e  CX700/VX700 Internal Module Bus +	3253  VT6655 WiFi Adapter, 802.11a/b/g +	3258  PT880 Host Bridge +	3259  CN333/CN400/PM880 Host Bridge +	3260  VIA Chrome9 HC IGP +	3269  KT880 Host Bridge +	3282  K8T800Pro Host Bridge +	3287  VT8251 PCI to ISA Bridge +	3288  VT8237A/VT8251 HDA Controller +		19da a179  ZBOX VD01 +	3290  K8M890 Host Bridge +	3296  P4M800 Host Bridge +	3324  CX700/VX700 Host Bridge +	3327  P4M890 Host Bridge +	3336  K8M890CE Host Bridge +	3337  VT8237A PCI to ISA Bridge +	3340  PT900 Host Bridge +	3343  P4M890 [S3 UniChrome Pro] +	3344  CN700/P4M800 Pro/P4M800 CE/VN800 Graphics [S3 UniChrome Pro] +	3349  VT8251 AHCI/SATA 4-Port Controller +	3351  VT3351 Host Bridge +	3353  VX800 PCI to PCI Bridge +	3364  CN896/VN896/P4M900 Host Bridge +	3371  CN896/VN896/P4M900 [Chrome 9 HC] +	3372  VT8237S PCI to ISA Bridge +	337a  VT8237A PCI to PCI Bridge +	337b  VT8237A Host Bridge +	3403  VT6315 Series Firewire Controller +		1043 8374  M5A88-V EVO +		1043 8384  P8P67 Deluxe Motherboard +	3409  VX855/VX875 DRAM Bus Control +	3410  VX900 DRAM Bus Control +		19da a179  ZBOX nano VD01 +	3432  VL80x xHCI USB 3.0 Controller +	3456  VX11 Standard Host Bridge +	345b  VX11 Miscellaneous Bus +	3a01  VX11 Graphics [Chrome 645/640] +	4149  VIA VT6420 (ATA133) Controller +	4204  K8M800 Host Bridge +	4208  PT890 Host Bridge +	4238  K8T890 Host Bridge +	4258  PT880 Host Bridge +	4259  CN333/CN400/PM880 Host Bridge +	4269  KT880 Host Bridge +	4282  K8T800Pro Host Bridge +	4290  K8M890 Host Bridge +	4293  PM896 Host Bridge +	4296  P4M800 Host Bridge +	4308  PT894 Host Bridge +	4314  CN700/VN800/P4M800CE/Pro Host Bridge +	4324  CX700/VX700 Host Bridge +	4327  P4M890 Host Bridge +	4336  K8M890CE Host Bridge +	4340  PT900 Host Bridge +	4351  VT3351 Host Bridge +	4353  VX800/VX820 Power Management Control +	4364  CN896/VN896/P4M900 Host Bridge +	4409  VX855/VX875 Power Management Control +	4410  VX900 Power Management and Chip Testing Control +		19da a179  ZBOX nano VD01 +	5030  VT82C596 ACPI [Apollo PRO] +	5122  VX855/VX875 Chrome 9 HCM Integrated Graphics +	5208  PT890 I/O APIC Interrupt Controller +	5238  K8T890 I/O APIC Interrupt Controller +	5287  VT8251 Serial ATA Controller +	5290  K8M890 I/O APIC Interrupt Controller +	5308  PT894 I/O APIC Interrupt Controller +	5324  VX800 Serial ATA and EIDE Controller +	5327  P4M890 I/O APIC Interrupt Controller +	5336  K8M890CE I/O APIC Interrupt Controller +	5340  PT900 I/O APIC Interrupt Controller +	5351  VT3351 I/O APIC Interrupt Controller +	5353  VX800/VX820 APIC and Central Traffic Control +	5364  CN896/VN896/P4M900 I/O APIC Interrupt Controller +	5372  VT8237/8251 Serial ATA Controller +	5409  VX855/VX875 APIC and Central Traffic Control +	5410  VX900 APIC and Central Traffic Control +	6100  VT85C100A [Rhine II] +	6287  SATA RAID Controller +	6290  K8M890CE Host Bridge +	6327  P4M890 Security Device +	6353  VX800/VX820 Scratch Registers +	6364  CN896/VN896/P4M900 Security Device +	6409  VX855/VX875 Scratch Registers +	6410  VX900 Scratch Registers +		19da a179  ZBOX nano VD01 +	7122  VX900 Graphics [Chrome9 HD] +	7204  K8M800 Host Bridge +	7205  KM400/KN400/P4M800 [S3 UniChrome] +		1458 d000  Gigabyte GA-7VM400(A)M(F) Motherboard +		1462 7061  MS-7061 +	7208  PT890 Host Bridge +	7238  K8T890 Host Bridge +	7258  PT880 Host Bridge +	7259  CN333/CN400/PM880 Host Bridge +	7269  KT880 Host Bridge +	7282  K8T800Pro Host Bridge +	7290  K8M890 Host Bridge +	7293  PM896 Host Bridge +	7296  P4M800 Host Bridge +	7308  PT894 Host Bridge +	7314  CN700/VN800/P4M800CE/Pro Host Bridge +	7324  CX700/VX700 Host Bridge +	7327  P4M890 Host Bridge +	7336  K8M890CE Host Bridge +	7340  PT900 Host Bridge +	7351  VT3351 Host Bridge +	7353  VX800/VX820 North-South Module Interface Control +	7364  CN896/VN896/P4M900 Host Bridge +	7409  VX855/VX875 North-South Module Interface Control +	7410  VX900 North-South Module Interface Control +		19da a179  ZBOX nano VD01 +	8231  VT8231 [PCI-to-ISA Bridge] +	8235  VT8235 ACPI +	8305  VT8363/8365 [KT133/KM133 AGP] +	8324  CX700/VX700 PCI to ISA Bridge +	8353  VX800/VX820 Bus Control and Power Management +	8391  VT8371 [KX133 AGP] +	8400  MVP4 +	8409  VX855/VX875 Bus Control and Power Management +	8410  VX900 Bus Control and Power Management +		19da a179  ZBOX VD01 +	8500  KLE133/PLE133/PLE133T +	8501  VT8501 [Apollo MVP4 AGP] +	8596  VT82C596 [Apollo PRO AGP] +	8597  VT82C597 [Apollo VP3 AGP] +	8598  VT82C598/694x [Apollo MVP3/Pro133x AGP] +		1019 0985  P6VXA Motherboard +	8601  VT8601 [Apollo ProMedia AGP] +	8605  VT8605 [PM133 AGP] +	8691  VT82C691 [Apollo Pro] +	8693  VT82C693 [Apollo Pro Plus] PCI Bridge +	8a25  PL133/PL133T [S3 ProSavage] +	8a26  KL133/KL133A/KM133/KM133A [S3 ProSavage] +	8d01  PN133/PN133T [S3 Twister] +	8d04  KM266/P4M266/P4M266A/P4N266 [S3 ProSavageDDR] +	9001  VX900 Serial ATA Controller +	9082  Standard AHCI 1.0 SATA Controller +	9140  HDMI Audio Device +	9201  USB3.0 Controller +	9530  Secure Digital Memory Card Controller +	95d0  SDIO Host Controller +	a208  PT890 PCI to PCI Bridge Controller +	a238  K8T890 PCI to PCI Bridge Controller +	a327  P4M890 PCI to PCI Bridge Controller +	a353  VX8xx South-North Module Interface Control +	a364  CN896/VN896/P4M900 PCI to PCI Bridge Controller +	a409  VX855/VX875 USB Device Controller +	a410  VX900 PCI Express Root Port 0 +	b091  VT8633 [Apollo Pro266 AGP] +	b099  VT8366/A/7 [Apollo KT266/A/333 AGP] +	b101  VT8653 AGP Bridge +	b102  VT8362 AGP Bridge +	b103  VT8615 AGP Bridge +	b112  VT8361 [KLE133] AGP Bridge +	b113  VPX/VPX2 I/O APIC Interrupt Controller +	b115  VT8363/8365 [KT133/KM133] PCI Bridge +	b168  VT8235 PCI Bridge +	b188  VT8237/8251 PCI bridge [K8M890/K8T800/K8T890 South] +		147b 1407  KV8-MAX3 motherboard +	b198  VT8237/VX700 PCI Bridge +	b213  VPX/VPX2 I/O APIC Interrupt Controller +	b353  VX855/VX875/VX900 PCI to PCI Bridge +	b410  VX900 PCI Express Root Port 1 +	b999  [K8T890 North / VT8237 South] PCI Bridge +	c208  PT890 PCI to PCI Bridge Controller +	c238  K8T890 PCI to PCI Bridge Controller +	c327  P4M890 PCI to PCI Bridge Controller +	c340  PT900 PCI to PCI Bridge Controller +	c353  VX800/VX820 PCI Express Root Port +	c364  CN896/VN896/P4M900 PCI to PCI Bridge Controller +	c409  VX855/VX875 EIDE Controller +	c410  VX900 PCI Express Root Port 2 +	d104  VT8237R USB UDCI Controller +	d208  PT890 PCI to PCI Bridge Controller +	d213  VPX/VPX2 PCI to PCI Bridge Controller +	d238  K8T890 PCI to PCI Bridge Controller +	d340  PT900 PCI to PCI Bridge Controller +	d410  VX900 PCI Express Root Port 3 +	e208  PT890 PCI to PCI Bridge Controller +	e238  K8T890 PCI to PCI Bridge Controller +	e340  PT900 PCI to PCI Bridge Controller +	e353  VX800/VX820 PCI Express Root Port +	e410  VX900 PCI Express Physical Layer Electrical Sub-block +	f208  PT890 PCI to PCI Bridge Controller +	f238  K8T890 PCI to PCI Bridge Controller +	f340  PT900 PCI to PCI Bridge Controller +	f353  VX800/VX820 PCI Express Root Port +1107  Stratus Computers +	0576  VIA VT82C570MV [Apollo] (Wrong vendor ID!) +1108  Proteon, Inc. +	0100  p1690plus_AA +	0101  p1690plus_AB +	0105  P1690Plus +	0108  P1690Plus +	0138  P1690Plus +	0139  P1690Plus +	013c  P1690Plus +	013d  P1690Plus +1109  Cogent Data Technologies, Inc. +	1400  EM110TX [EX110TX] +110a  Siemens AG +	0002  Pirahna 2-port +	0005  Tulip controller, power management, switch extender +	0006  FSC PINC (I/O-APIC) +	0015  FSC Multiprocessor Interrupt Controller +	001d  FSC Copernicus Management Controller +	007b  FSC Remote Service Controller, mailbox device +	007c  FSC Remote Service Controller, shared memory device +	007d  FSC Remote Service Controller, SMIC device +	2101  HST SAPHIR V Primary PCI (ISDN/PMx) +# Superfastcom-PCI (Commtech, Inc.) or DSCC4 WAN Adapter +	2102  DSCC4 PEB/PEF 20534 DMA Supported Serial Communication Controller with 4 Channels +	2104  Eicon Diva 2.02 compatible passive ISDN card +	3141  SIMATIC NET CP 5611 / 5621 +	3142  SIMATIC NET CP 5613 / 5614 +	3143  SIMATIC NET CP 1613 +	4021  SIMATIC NET CP 5512 (Profibus and MPI Cardbus Adapter) +	4029  SIMATIC NET CP 5613 A2 +		110a 4029  SIMATIC NET CP 5613 A2 +		110a c029  SIMATIC NET CP 5614 A2 +	4035  SIMATIC NET CP 1613 A2 +	4036  SIMATIC NET CP 1616 +	4038  SIMATIC NET CP 1604 +	4069  SIMATIC NET CP 5623 +		110a 4069  SIMATIC NET CP 5623 +		110a c069  SIMATIC NET CP 5624 +	407c  SIMATIC NET CP 5612 +	407d  SIMATIC NET CP 5613 A3 +	407e  SIMATIC NET CP 5622 +	4083  SIMATIC NET CP 5614 A3 +	4084  SIMATIC NET CP 1626 +	4942  FPGA I-Bus Tracer for MBD +	6120  SZB6120 +110b  Chromatic Research Inc. +	0001  Mpact Media Processor +	0004  Mpact 2 +110c  Mini-Max Technology, Inc. +110d  Znyx Advanced Systems +110e  CPU Technology +110f  Ross Technology +1110  Powerhouse Systems +	6037  Firepower Powerized SMP I/O ASIC +	6073  Firepower Powerized SMP I/O ASIC +1111  Santa Cruz Operation +# Also claimed to be RNS or Rockwell International, current PCISIG records list Osicom +1112  Osicom Technologies Inc +	2200  FDDI Adapter +	2300  Fast Ethernet Adapter +	2340  4 Port Fast Ethernet Adapter +	2400  ATM Adapter +1113  Accton Technology Corporation +	1211  SMC2-1211TX +		103c 1207  EN-1207D Fast Ethernet Adapter +		1113 1211  EN-1207D Fast Ethernet Adapter +	1216  EN-1216 Ethernet Adapter +		1113 1216  EN1207F series PCI Fast Ethernet Adapter +		1113 2220  EN2220A Cardbus Fast Ethernet Adapter +		1113 2242  EN2242 10/100 Ethernet Mini-PCI Card +		111a 1020  SpeedStream 1020 PCI 10/100 Ethernet Adaptor [EN-1207F-TX ?] +	1217  EN-1217 Ethernet Adapter +	5105  10Mbps Network card +	9211  EN-1207D Fast Ethernet Adapter +		1113 9211  EN-1207D Fast Ethernet Adapter +	9511  21x4x DEC-Tulip compatible Fast Ethernet +	d301  CPWNA100 (Philips wireless PCMCIA) +	ec02  SMC 1244TX v3 +	ee23  SMCWPCIT-G 108Mbps Wireless PCI adapter +1114  Atmel Corporation +	0506  at76c506 802.11b Wireless Network Adaptor +1115  3D Labs +1116  Data Translation +	0022  DT3001 +	0023  DT3002 +	0024  DT3003 +	0025  DT3004 +	0026  DT3005 +	0027  DT3001-PGL +	0028  DT3003-PGL +	0051  DT322 +	0060  DT340 +	0069  DT332 +	80c2  DT3162 +1117  Datacube, Inc +	9500  Max-1C SVGA card +	9501  Max-1C image processing +1118  Berg Electronics +1119  ICP Vortex Computersysteme GmbH +	0000  GDT 6000/6020/6050 +	0001  GDT 6000B/6010 +	0002  GDT 6110/6510 +	0003  GDT 6120/6520 +	0004  GDT 6530 +	0005  GDT 6550 +	0006  GDT 6117/6517 +	0007  GDT 6127/6527 +	0008  GDT 6537 +	0009  GDT 6557/6557-ECC +	000a  GDT 6115/6515 +	000b  GDT 6125/6525 +	000c  GDT 6535 +	000d  GDT 6555/6555-ECC +	0100  GDT 6117RP/6517RP +	0101  GDT 6127RP/6527RP +	0102  GDT 6537RP +	0103  GDT 6557RP +	0104  GDT 6111RP/6511RP +	0105  GDT 6121RP/6521RP +	0110  GDT 6117RD/6517RD +	0111  GDT 6127RD/6527RD +	0112  GDT 6537RD +	0113  GDT 6557RD +	0114  GDT 6111RD/6511RD +	0115  GDT 6121RD/6521RD +	0118  GDT 6118RD/6518RD/6618RD +	0119  GDT 6128RD/6528RD/6628RD +	011a  GDT 6538RD/6638RD +	011b  GDT 6558RD/6658RD +	0120  GDT 6117RP2/6517RP2 +	0121  GDT 6127RP2/6527RP2 +	0122  GDT 6537RP2 +	0123  GDT 6557RP2 +	0124  GDT 6111RP2/6511RP2 +	0125  GDT 6121RP2/6521RP2 +	0136  GDT 6113RS/6513RS +	0137  GDT 6123RS/6523RS +	0138  GDT 6118RS/6518RS/6618RS +	0139  GDT 6128RS/6528RS/6628RS +	013a  GDT 6538RS/6638RS +	013b  GDT 6558RS/6658RS +	013c  GDT 6533RS/6633RS +	013d  GDT 6543RS/6643RS +	013e  GDT 6553RS/6653RS +	013f  GDT 6563RS/6663RS +	0166  GDT 7113RN/7513RN/7613RN +	0167  GDT 7123RN/7523RN/7623RN +	0168  GDT 7118RN/7518RN/7518RN +	0169  GDT 7128RN/7528RN/7628RN +	016a  GDT 7538RN/7638RN +	016b  GDT 7558RN/7658RN +	016c  GDT 7533RN/7633RN +	016d  GDT 7543RN/7643RN +	016e  GDT 7553RN/7653RN +	016f  GDT 7563RN/7663RN +	01d6  GDT 4x13RZ +	01d7  GDT 4x23RZ +	01f6  GDT 8x13RZ +	01f7  GDT 8x23RZ +	01fc  GDT 8x33RZ +	01fd  GDT 8x43RZ +	01fe  GDT 8x53RZ +	01ff  GDT 8x63RZ +	0210  GDT 6519RD/6619RD +	0211  GDT 6529RD/6629RD +	0260  GDT 7519RN/7619RN +	0261  GDT 7529RN/7629RN +	02ff  GDT MAXRP +	0300  GDT NEWRX +	0301  GDT NEWRX2 +111a  Efficient Networks, Inc +	0000  155P-MF1 (FPGA) +	0002  155P-MF1 (ASIC) +	0003  ENI-25P ATM +		111a 0000  ENI-25p Miniport ATM Adapter +	0005  SpeedStream (LANAI) +		111a 0001  ENI-3010 ATM +		111a 0009  ENI-3060 ADSL (VPI=0) +		111a 0101  ENI-3010 ATM +		111a 0109  ENI-3060CO ADSL (VPI=0) +		111a 0809  ENI-3060 ADSL (VPI=0 or 8) +		111a 0909  ENI-3060CO ADSL (VPI=0 or 8) +		111a 0a09  ENI-3060 ADSL (VPI=<0..15>) +	0007  SpeedStream ADSL +		111a 1001  ENI-3061 ADSL [ASIC] +	1020  SpeedStream PCI 10/100 Network Card +	1203  SpeedStream 1023 Wireless PCI Adapter +111b  Teledyne Electronic Systems +111c  Tricord Systems Inc. +	0001  Powerbis Bridge +111d  Integrated Device Technology, Inc. [IDT] +	0001  IDT77201/77211 155Mbps ATM SAR Controller [NICStAR] +	0003  IDT77222/77252 155Mbps ATM MICRO ABR SAR Controller +	0004  IDT77V252 155Mbps ATM MICRO ABR SAR Controller +	0005  IDT77V222 155Mbps ATM MICRO ABR SAR Controller +	8018  PES12N3A PCI Express Switch +	801c  PES24N3A PCI Express Switch +	8028  PES4T4 PCI Express Switch +	802b  PES8T5A PCI Express Switch +	802c  PES16T4 PCI Express Switch +	802d  PES16T7 PCI Express Switch +	802e  PES24T6 PCI Express Switch +	802f  PES32T8 PCI Express Switch +	8032  PES48T12 PCI Express Switch +	8034  PES16/22/34H16 PCI Express Switch +	8035  PES32H8 PCI Express Switch +	8036  PES48H12 PCI Express Switch +	8037  PES64H16 PCI Express Switch +	8039  PES3T3 PCI Express Switch +	803a  PES4T4 PCI Express Switch +	803c  PES5T5 PCI Express Switch +	803d  PES6T5 PCI Express Switch +	8048  PES8NT2 PCI Express Switch +	8049  PES8NT2 PCI Express Switch +	804a  PES8NT2 PCI Express Internal NTB +	804b  PES8NT2 PCI Express External NTB +	804c  PES16NT2 PCI Express Switch +	804d  PES16NT2 PCI Express Switch +	804e  PES16NT2 PCI Express Internal NTB +	804f  PES16NT2 PCI Express External NTB +	8058  PES12NT3 PCI Express Switch +	8059  PES12NT3 PCI Express Switch +	805a  PES12NT3 PCI Express Internal NTB +	805b  PES12NT3 PCI Express External NTB +	805c  PES24NT3 PCI Express Switch +	805d  PES24NT3 PCI Express Switch +	805e  PES24NT3 PCI Express Internal NTB +	805f  PES24NT3 PCI Express External NTB +	8060  PES16T4G2 PCI Express Gen2 Switch +	8061  PES12T3G2 PCI Express Gen2 Switch +	8068  PES6T6G2 PCI Express Gen2 Switch +	806a  PES24T3G2 PCI Express Gen2 Switch +		14c1 000c  10G-PCIE2-8B2 +	806c  PES16T4A/4T4G2 PCI Express Gen2 Switch +	806e  PES24T6G2 PCI Express Gen2 Switch +	806f  HIO524G2 PCI Express Gen2 Switch +	8088  PES32NT8BG2 PCI Express Switch +		1093 752f  PXIe-8383mc Device +		1093 7543  PXIe-8383mc System Host +		1093 755c  PXIe-8364 +		1093 755d  PXIe-8374 +		1093 75ff  PXIe-8383mc DMA +		1093 7600  PXIe-8383mc DMA +		1093 7602  PXIe-8384 +111e  Eldec +111f  Precision Digital Images +	4a47  Precision MX Video engine interface +	5243  Frame capture bus interface +1120  EMC Corporation +1121  Zilog +1122  Multi-tech Systems, Inc. +1123  Excellent Design, Inc. +1124  Leutron Vision AG +	2581  Picport Monochrome +1125  Eurocore +1126  Vigra +1127  FORE Systems Inc +	0200  ForeRunner PCA-200 ATM +	0210  PCA-200PC +	0250  ATM +	0300  ForeRunner PCA-200EPC ATM +	0310  ATM +	0400  ForeRunnerHE ATM Adapter +		1127 0400  ForeRunnerHE ATM +1129  Firmworks +112a  Hermes Electronics Company, Ltd. +112b  Linotype - Hell AG +112c  Zenith Data Systems +112d  Ravicad +112e  Infomedia Microelectronics Inc. +112f  Dalsa Inc. +	0000  MVC IC-PCI +	0001  MVC IM-PCI Video frame grabber/processor +	0008  PC-CamLink PCI framegrabber +1130  Computervision +1131  Philips Semiconductors +	1561  USB 1.1 Host Controller +		1775 c200  C2K onboard USB 1.1 host controller +	1562  USB 2.0 Host Controller +		1775 c200  C2K onboard USB 2.0 host controller +	3400  SmartPCI56(UCB1500) 56K Modem +	5400  TriMedia TM1000/1100 +		12ca 0000  BlueICE +	5402  TriMedia TM1300 +		1244 0f00  Fritz!Card DSL +		15eb 1300  DT1300 +		15eb 1302  DT1302 +		15eb 1304  DT1304 +		15eb 1305  DT1305 +		15eb 1306  PMCDT1306 +		15eb 1308  DT1308 +		15eb 1331  DT1301 with SAA7121 +		15eb 1337  DT1301 with SAA7127 +		15eb 2d3d  X3D +		15eb 7022  PTM1300 +	5405  TriMedia TM1500 +		1136 0005  LCP-1500 +	5406  TriMedia TM1700 +	540b  PNX1005 Media Processor +		1131 0020  PNXLite PCI Demo Board +	7130  SAA7130 Video Broadcast Decoder +		0000 4016  Behold TV 401 +		0000 4051  Behold TV 405 FM +		0000 5051  Behold TV 505 RDS +		0000 505b  Behold TV 505 RDS +		102b 48d0  Matrox CronosPlus +		1048 226b  ELSA EX-VISION 300TV +		107d 6655  WinFast DTV1000S +		1131 0000  SAA7130-based TV tuner card +		1131 2001  10MOONS PCI TV CAPTURE CARD +		1131 2005  Techcom (India) TV Tuner Card (SSD-TV-670) +		1458 9006  GT-PS700 DVB-S tuner +		1461 050c  Nagase Sangyo TransGear 3000TV +		1461 10ff  AVerMedia DVD EZMaker +		1461 2108  AverMedia AverTV/305 +		1461 2115  AverMedia AverTV Studio 305 +		153b 1152  Terratec Cinergy 200 TV +		185b c100  Compro VideoMate TV PVR/FM +		185b c901  Videomate DVB-T200 +		5168 0138  LifeView FlyVIDEO2000 +		5ace 5010  Behold TV 501 +		5ace 5050  Behold TV 505 FM +	7133  SAA7131/SAA7133/SAA7135 Video Broadcast Decoder +		0000 4091  Beholder BeholdTV 409 FM +		0000 5071  Behold TV 507 RDS +		0000 507b  Behold TV 507 RDS +		0000 5201  Behold TV Columbus +		0070 6701  WinTV HVR-1110 +		1019 4cb5  Elitegroup ECS TVP3XP FM1236 Tuner Card (NTSC,FM) +		1043 0210  FlyTV mini Asus Digimatrix +		1043 4843  ASUS TV-FM 7133 +		1043 4845  TV-FM 7135 +		1043 4862  P7131 Dual +		1043 4876  My Cinema-P7131 Hybrid +		1131 0000  SAA713x-based TV tuner card +		1131 2001  Proteus Pro [philips reference design] +		1131 2018  Tiger reference design +		1131 4ee9  MonsterTV Mobile +		1131 7133  Pinnacle PCTV 301i +		11bd 002b  PCTV Stereo +		11bd 002e  PCTV 110i (saa7133) +		12ab 0800  PURPLE TV +		13c2 2804  Technotrend Budget T-3000 Hybrid +		1421 0335  Instant TV DVB-T Cardbus +		1421 1370  Instant TV (saa7135) +		1435 7330  VFG7330 +		1435 7350  VFG7350 +		1458 9001  GC-PTV-TAF Hybrid TV card +		1458 9002  GT-PTV-TAF-RH DVB-T/Analog TV/FM tuner +		1458 9003  GT-PTV-AF-RH Analog TV/FM tuner +		1458 9004  GT-P8000 DVB-T/Analog TV/FM tuner +		1458 9005  GT-P6000 Analog TV/FM tuner +		1458 9008  GT-P5100 Analog TV tuner +		1461 1044  AVerTVHD MCE A180 +		1461 4836  M10D Hybrid DVBT +		1461 861e  M105 PAL/SECAM/NTSC/FM Tuner +		1461 a14b  AVerTV Studio 509 +		1461 a836  M115 DVB-T, PAL/SECAM/NTSC Tuner +		1461 f01d  DVB-T Super 007 +		1461 f31f  Avermedia AVerTV GO 007 FM +		1461 f936  Hybrid+FM PCI (rev A16D) +		1462 6231  TV@nywhere Plus +		1489 0214  LifeView FlyTV Platinum FM +		14c0 1212  LifeView FlyTV Platinum Mini2 +		153b 1160  Cinergy 250 PCI TV +		153b 1162  Terratec Cinergy 400 mobile +		17de 7256  PlusTV All In One PI610 card +		17de 7350  ATSC 110 Digital / Analog HDTV Tuner +		17de 7352  ATSC 115 Digital / Analog HDTV Tuner +		185b c100  VideoMate TV +		185b c900  VideoMate T750 +		5168 0306  LifeView FlyDVB-T DUO +		5168 0319  LifeView FlyDVB Trio +		5168 0502  LifeView FlyDVB-T Duo CardBus +		5168 0520  LifeView FlyDVB Trio CardBus +		5168 1502  LifeView FlyTV CardBus +		5168 2502  LifeView FlyDVB-T CardBus +		5168 2520  LifeView FlyDVB-S Duo CardBus +		5168 3502  LifeView FlyDVB-T Hybrid CardBus +		5168 3520  LifeView FlyDVB Trio N CardBus +		5ace 5030  Behold TV 503 FM +		5ace 5090  Behold TV 509 FM +		5ace 6090  Behold TV 609 FM +		5ace 6091  Behold TV 609 FM +		5ace 6092  Behold TV 609 RDS +		5ace 6093  Behold TV 609 RDS +		5ace 6190  Behold TV M6 +		5ace 6191  Behold TV M63 +		5ace 6193  Behold TV M6 Extra +		5ace 6290  Behold TV H6 +		5ace 7090  Behold TV A7 +		5ace 7150  Behold TV H75 +		5ace 7151  Behold TV H75 +		5ace 7190  Behold TV H7 +		5ace 7191  Behold TV H7 +		5ace 7290  Behold TV T7 +		5ace 7591  Behold TV X7 +		5ace 7595  Behold TV X7 +	7134  SAA7134/SAA7135HL Video Broadcast Decoder +		0000 4036  Behold TV 403 +		0000 4037  Behold TV 403 FM +		0000 4071  Behold TV 407 FM +		1019 4cb4  Elitegroup ECS TVP3XP FM1216 Tuner Card(PAL-BG,FM) +		1043 0210  Digimatrix TV +		1043 4840  ASUS TV-FM 7134 +		1043 4842  TV-FM 7134 +		1131 0000  SAA713x-based TV tuner card +		1131 2004  EUROPA V3 reference design +		1131 4e85  SKNet Monster TV +		1131 6752  EMPRESS +		11bd 002b  PCTV Stereo +		11bd 002d  PCTV 300i DVB-T + PAL +		1461 2c00  AverTV Hybrid+FM PCI +		1461 9715  AVerTV Studio 307 +		1461 a70a  Avermedia AVerTV 307 +		1461 a70b  AverMedia M156 / Medion 2819 +		1461 d6ee  Cardbus TV/Radio (E500) +		1471 b7e9  AVerTV Cardbus plus +		153b 1142  Terratec Cinergy 400 TV +		153b 1143  Terratec Cinergy 600 TV +		153b 1158  Terratec Cinergy 600 TV MK3 +		1540 9524  ProVideo PV952 +		16be 0003  Medion 7134 +		185b c200  Compro VideoMate Gold+ Pal +		185b c900  Videomate DVB-T300 +		1894 a006  KNC One TV-Station DVR +		1894 fe01  KNC One TV-Station RDS / Typhoon TV Tuner RDS +		5168 0138  FLY TV PRIME 34FM +		5168 0300  FlyDVB-S +		5ace 5070  Behold TV 507 FM +		5ace 6070  Behold TV 607 FM +		5ace 6071  Behold TV 607 FM +		5ace 6072  Behold TV 607 RDS +		5ace 6073  Behold TV 607 RDS +	7145  SAA7145 +	7146  SAA7146 +		110a 0000  Fujitsu/Siemens DVB-C card rev1.5 +		110a ffff  Fujitsu/Siemens DVB-C card rev1.5 +		1124 2581  Leutron Vision PicPort +		1131 4f56  KNC1 DVB-S Budget +		1131 4f60  Fujitsu-Siemens Activy DVB-S Budget Rev AL +		1131 4f61  Activy DVB-S Budget Rev GR +		1131 5f61  Activy DVB-T Budget +		114b 2003  DVRaptor Video Edit/Capture Card +		11bd 0006  DV500 Overlay +		11bd 000a  DV500 Overlay +		11bd 000f  DV500 Overlay +		13c2 0000  Siemens/Technotrend/Hauppauge DVB card rev1.3 or rev1.5 +		13c2 0001  Technotrend/Hauppauge DVB card rev1.3 or rev1.6 +		13c2 0002  Technotrend/Hauppauge DVB card rev2.1 +		13c2 0003  Technotrend/Hauppauge DVB card rev2.1 +		13c2 0004  Technotrend/Hauppauge DVB card rev2.1 +		13c2 0006  Technotrend/Hauppauge DVB card rev1.3 or rev1.6 +		13c2 0008  Technotrend/Hauppauge DVB-T +		13c2 000a  Octal/Technotrend DVB-C for iTV +		13c2 000e  Technotrend/Hauppauge DVB card rev2.3 +		13c2 1003  Technotrend-Budget/Hauppauge WinTV-NOVA-S DVB card +		13c2 1004  Technotrend-Budget/Hauppauge WinTV-NOVA-C DVB card +		13c2 1005  Technotrend-Budget/Hauppauge WinTV-NOVA-T DVB card +		13c2 100c  Technotrend-Budget/Hauppauge WinTV-NOVA-CI DVB card +		13c2 100f  Technotrend-Budget/Hauppauge WinTV-NOVA-CI DVB card +		13c2 1010  DVB C-1500 +		13c2 1011  Technotrend-Budget/Hauppauge WinTV-NOVA-T DVB card +		13c2 1012  DVB T-1500 +		13c2 1013  SATELCO Multimedia DVB +		13c2 1016  WinTV-NOVA-SE DVB card +		13c2 1018  DVB S-1401 +		13c2 1019  S2-3200 +		13c2 1102  Technotrend/Hauppauge DVB card rev2.1 +		153b 1155  Cinergy 1200 DVB-S +		153b 1156  Cinergy 1200 DVB-C +		153b 1157  Cinergy 1200 DVB-T +		153b 1176  Cinergy 1200 DVB-C (MK3) +		1894 0020  KNC One DVB-C V1.0 +		1894 0023  TVStation DVB-C plus +# http://www.knc1.com/gb.htm +		1894 0054  TV-Station DVB-S +	7160  SAA7160 +		1458 9009  E8000 DVB-T/Analog TV/FM tuner +		1461 1455  AVerTV Hybrid Speedy PCI-E (H788) +	7162  SAA7162 +		11bd 0101  Pinnacle PCTV 7010iX TV Card +	7164  SAA7164 +		0070 8800  WinTV HVR-2250 +		0070 8810  WinTV HVR-2250 +		0070 8851  WinTV HVR-2250 +		0070 8853  WinTV HVR-2250 +		0070 8880  WinTV HVR-2250 +		0070 8891  WinTV HVR-2250 +		0070 88a0  WinTV HVR-2250 +		0070 88a1  WinTV HVR-2250 +		0070 8900  WinTV HVR-2200 +		0070 8901  WinTV HVR-2200 +		0070 8940  WinTV HVR-2200 (submodel 89619) +		0070 8951  WinTV HVR-2200 +		0070 8953  WinTV HVR-2200 +		0070 8980  WinTV HVR-2200 +		0070 8991  WinTV HVR-2200 +		0070 8993  WinTV HVR-2200 +		0070 89a0  WinTV HVR-2200 +		0070 89a1  WinTV HVR-2200 +		0070 f123  WinTV HVR-2205 +	7231  SAA7231 +		5ace 8000  Behold TV H8 +		5ace 8001  Behold TV H8 +		5ace 8050  Behold TV H85 +		5ace 8051  Behold TV H85 +		5ace 8100  Behold TV A8 +		5ace 8101  Behold TV A8 +		5ace 8150  Behold TV A85 +		5ace 8151  Behold TV A85 +		5ace 8201  Behold TV T8 +	9730  SAA9730 Integrated Multimedia and Peripheral Controller +		1131 0000  Integrated Multimedia and Peripheral Controller +1132  Mitel Corp. +1133  Dialogic Corporation +	7701  Eiconcard C90 +	7711  Eiconcard C91 +	7901  EiconCard S90 +	7902  EiconCard S90 +	7911  EiconCard S91 +	7912  EiconCard S91 +	7921  Eiconcard S92 +	7941  EiconCard S94 +	7942  EiconCard S94 +	7943  EiconCard S94 +	7944  EiconCard S94 +	7945  Eiconcard S94 +	7948  Eiconcard S94 64bit/66MHz +	9711  Eiconcard S91 V2 +	9911  Eiconcard S91 V2 +	9941  Eiconcard S94 V2 +	9a41  Eiconcard S94 PCIe +	b921  EiconCard P92 +	b922  EiconCard P92 +	b923  EiconCard P92 +	e001  Diva Pro 2.0 S/T +	e002  Diva 2.0 S/T PCI +	e003  Diva Pro 2.0 U +	e004  Diva 2.0 U PCI +	e005  Diva 2.01 S/T PCI +	e006  Diva CT S/T PCI +	e007  Diva CT U PCI +	e008  Diva CT Lite S/T PCI +	e009  Diva CT Lite U PCI +	e00a  Diva ISDN+V.90 PCI +	e00b  Diva ISDN PCI 2.02 +	e00c  Diva 2.02 PCI U +	e00d  Diva Pro 3.0 PCI +	e00e  Diva ISDN+CT S/T PCI Rev 2 +	e010  Diva Server BRI-2M PCI +		110a 0021  Fujitsu Siemens ISDN S0 +	e011  Diva Server BRI S/T Rev 2 +	e012  Diva Server 4BRI-8M PCI +	e013  4BRI +		1133 1300  Diva V-4BRI-8 PCI v2 +		1133 e013  Diva 4BRI-8 PCI v2 +	e014  Diva Server PRI-30M PCI +	e015  Diva PRI PCI v2 +	e016  Diva Server Voice 4BRI PCI +	e017  Diva Server Voice 4BRI Rev 2 +		1133 e017  Diva Server Voice 4BRI-8M 2.0 PCI +	e018  BRI +		1133 1800  Diva V-BRI-2 PCI v2 +		1133 e018  Diva BRI-2 PCI v2 +	e019  Diva Server Voice PRI Rev 2 +		1133 e019  Diva Server Voice PRI 2.0 PCI +	e01a  Diva BRI-2FX PCI v2 +	e01b  Diva Server Voice BRI-2M 2.0 PCI +		1133 e01b  Diva Server Voice BRI-2M 2.0 PCI +	e01c  PRI +		1133 1c01  Diva PRI/E1/T1-8 PCI v3 +		1133 1c02  Diva PRI/T1-24 PCI(e) v3 +		1133 1c03  Diva PRI/E1-30 PCI(e) v3 +		1133 1c04  Diva PRI/E1/T1-CTI PCI(e) v3 +		1133 1c05  Diva V-PRI/T1-24 PCI(e) v3 +		1133 1c06  Diva V-PRI/E1-30 PCI(e) v3 +		1133 1c07  Diva Server PRI/E1/T1-8 Cornet NQ +		1133 1c08  Diva Server PRI/T1-24 Cornet NQ +		1133 1c09  Diva Server PRI/E1-30 Cornet NQ +		1133 1c0a  Diva Server PRI/E1/T1 Cornet NQ +		1133 1c0b  Diva Server V-PRI/T1-24 Cornet NQ +		1133 1c0c  Diva Server V-PRI/E1-30 Cornet NQ +	e01e  2PRI +		1133 1e01  Diva 2PRI/E1/T1-60 PCI v1 +		1133 e01e  Diva V-2PRI/E1/T1-60 PCI v1 +	e020  4PRI +		1133 2001  Diva 4PRI/E1/T1-120 PCI v1 +		1133 e020  Diva V-4PRI/E1/T1-120 PCI v1 +	e022  Analog-2 +		1133 2200  Diva V-Analog-2 PCI v1 +		1133 e022  Diva Analog-2 PCI v1 +	e024  Analog-4 +		1133 2400  Diva V-Analog-4 PCI v1 +		1133 e024  Diva Analog-4 PCI v1 +	e028  Analog-8 +		1133 2800  Diva V-Analog-8 PCI v1 +		1133 e028  Diva Analog-8 PCI v1 +	e02a  Diva IPM-300 PCI v1 +	e02c  Diva IPM-600 PCI v1 +	e02e  4BRI +		1133 2e01  Diva V-4BRI-8 PCIe v2 +		1133 e02e  Diva 4BRI-8 PCIe v2 +	e032  BRI +		1133 3201  Diva V-BRI-2 PCIe v2 +		1133 e032  Diva BRI-2 PCIe v2 +	e034  Diva BRI-CTI PCI v2 +1134  Mercury Computer Systems +	0001  Raceway Bridge +	0002  Dual PCI to RapidIO Bridge +	000b  POET Serial RapidIO Bridge +	000d  POET PSDMS Device +1135  Fuji Xerox Co Ltd +	0001  Printer controller +1136  Momentum Data Systems +	0002  PCI-JTAG +1137  Cisco Systems Inc +	0023  VIC 81 PCIe Upstream Port +	0040  VIC PCIe Upstream Port +		1137 004f  VIC 1280 Dual 40Gb Mezzanine +		1137 0084  VIC 1240 Dual 40Gb MLOM +		1137 0085  VIC 1225 Dual 10Gb SFP+ PCIe +		1137 00cd  VIC 1285 Dual 40Gb QSFP+ PCIe +		1137 00ce  VIC 1225T Dual 10GBaseT PCIe +		1137 012a  VIC M4308 Dual 40Gb +		1137 012c  VIC 1340 Dual 40Gb MLOM +		1137 012e  VIC 1227 Dual 10Gb SFP+ PCIe +		1137 0137  VIC 1380 Dual 40Gb Mezzanine +	0041  VIC PCIe Downstream Port +	0042  VIC Management Controller +		1137 0047  VIC P81E PCIe Management Controller +		1137 0085  VIC 1225 PCIe Management Controller +		1137 00cd  VIC 1285 PCIe Management Controller +		1137 00ce  VIC 1225T PCIe Management Controller +		1137 012e  VIC 1227 PCIe Management Controller +	0043  VIC Ethernet NIC +		1137 0047  VIC P81E PCIe Ethernet NIC +		1137 0048  VIC M81KR Mezzanine Ethernet NIC +		1137 004f  VIC 1280 Mezzanine Ethernet NIC +		1137 0084  VIC 1240 MLOM Ethernet NIC +		1137 0085  VIC 1225 PCIe Ethernet NIC +		1137 00cd  VIC 1285 PCIe Ethernet NIC +		1137 00ce  VIC 1225T PCIe Ethernet NIC +		1137 012a  VIC M4308 Ethernet NIC +		1137 012c  VIC 1340 MLOM Ethernet NIC +		1137 012e  VIC 1227 PCIe Ethernet NIC +		1137 0137  VIC 1380 Mezzanine Ethernet NIC +	0044  VIC Ethernet NIC Dynamic +		1137 0047  VIC P81E PCIe Ethernet NIC Dynamic +		1137 0048  VIC M81KR Mezzanine Ethernet NIC Dynamic +		1137 004f  VIC 1280 Mezzanine Ethernet NIC Dynamic +		1137 0084  VIC 1240 MLOM Ethernet NIC Dynamic +		1137 0085  VIC 1225 PCIe Ethernet NIC Dynamic +		1137 00cd  VIC 1285 PCIe Ethernet NIC Dynamic +		1137 00ce  VIC 1225T PCIe Ethernet NIC Dynamic +		1137 012a  VIC M4308 Ethernet NIC Dynamic +		1137 012c  VIC 1340 MLOM Ethernet NIC Dynamic +		1137 012e  VIC 1227 PCIe Ethernet NIC Dynamic +		1137 0137  VIC 1380 Mezzanine Ethernet NIC Dynamic +	0045  VIC FCoE HBA +		1137 0047  VIC P81E PCIe FCoE HBA +		1137 0048  VIC M81KR Mezzanine FCoE HBA +		1137 004f  VIC 1280 Mezzanine FCoE HBA +		1137 0084  VIC 1240 MLOM FCoE HBA +		1137 0085  VIC 1225 PCIe FCoE HBA +		1137 00cd  VIC 1285 PCIe FCoE HBA +		1137 00ce  VIC 1225T PCIe FCoE HBA +		1137 012a  VIC M4308 FCoE HBA +		1137 012c  VIC 1340 MLOM FCoE HBA +		1137 012e  VIC 1227 PCIe FCoE HBA +		1137 0137  VIC 1380 Mezzanine FCoE HBA +	0046  VIC SCSI Controller +		1137 012a  VIC M4308 SCSI Controller +	004e  VIC 82 PCIe Upstream Port +	0071  VIC SR-IOV VF +	007a  VIC 1300 PCIe Upstream Port +		1137 012a  VIC M4308 Dual 40Gb +		1137 012c  VIC 1340 Dual 40Gb MLOM +		1137 0137  VIC 1380 Dual 40Gb Mezzanine +	00cf  VIC Userspace NIC +		1137 004f  VIC 1280 Mezzanine Userspace NIC +		1137 0084  VIC 1240 MLOM Userspace NIC +		1137 0085  VIC 1225 PCIe Userspace NIC +		1137 00cd  VIC 1285 PCIe Userspace NIC +		1137 00ce  VIC 1225T PCIe Userspace NIC +		1137 012a  VIC M4308 Userspace NIC +		1137 012c  VIC 1340 MLOM Userspace NIC +		1137 012e  VIC 1227 PCIe Userspace NIC +		1137 0137  VIC 1380 Mezzanine Userspace NIC +1138  Ziatech Corporation +	8905  8905 [STD 32 Bridge] +1139  Dynamic Pictures, Inc +	0001  VGA Compatable 3D Graphics +113a  FWB Inc +113b  Network Computing Devices +113c  Cyclone Microsystems, Inc. +	0000  PCI-9060 i960 Bridge +	0001  PCI-SDK [PCI i960 Evaluation Platform] +	0911  PCI-911 [i960Jx-based Intelligent I/O Controller] +	0912  PCI-912 [i960CF-based Intelligent I/O Controller] +	0913  PCI-913 +	0914  PCI-914 [I/O Controller w/ secondary PCI bus] +113d  Leading Edge Products Inc +113e  Sanyo Electric Co - Computer Engineering Dept +113f  Equinox Systems, Inc. +	0808  SST-64P Adapter +	1010  SST-128P Adapter +	80c0  SST-16P DB Adapter +	80c4  SST-16P RJ Adapter +	80c8  SST-16P Adapter +	8888  SST-4P Adapter +	9090  SST-8P Adapter +1140  Intervoice Inc +1141  Crest Microsystem Inc +1142  Alliance Semiconductor Corporation +	3210  AP6410 +	6422  ProVideo 6422 +	6424  ProVideo 6424 +	6425  ProMotion AT25 +	643d  ProMotion AT3D +1143  NetPower, Inc +1144  Cincinnati Milacron +	0001  Noservo controller +1145  Workbit Corporation +	8007  NinjaSCSI-32 Workbit +	f007  NinjaSCSI-32 KME +	f010  NinjaSCSI-32 Workbit +	f012  NinjaSCSI-32 Logitec +	f013  NinjaSCSI-32 Logitec +	f015  NinjaSCSI-32 Melco +	f020  NinjaSCSI-32 Sony PCGA-DVD51 +	f021  NinjaPATA-32 Delkin Cardbus UDMA +	f024  NinjaPATA-32 Delkin Cardbus UDMA +	f103  NinjaPATA-32 Delkin Cardbus UDMA +1146  Force Computers +1147  Interface Corp +# Nee Schneider & Koch +1148  SysKonnect +	4000  FDDI Adapter +		0e11 b03b  Netelligent 100 FDDI DAS Fibre SC +		0e11 b03c  Netelligent 100 FDDI SAS Fibre SC +		0e11 b03d  Netelligent 100 FDDI DAS UTP +		0e11 b03e  Netelligent 100 FDDI SAS UTP +		0e11 b03f  Netelligent 100 FDDI SAS Fibre MIC +		1148 5521  FDDI SK-5521 (SK-NET FDDI-UP) +		1148 5522  FDDI SK-5522 (SK-NET FDDI-UP DAS) +		1148 5541  FDDI SK-5541 (SK-NET FDDI-FP) +		1148 5543  FDDI SK-5543 (SK-NET FDDI-LP) +		1148 5544  FDDI SK-5544 (SK-NET FDDI-LP DAS) +		1148 5821  FDDI SK-5821 (SK-NET FDDI-UP64) +		1148 5822  FDDI SK-5822 (SK-NET FDDI-UP64 DAS) +		1148 5841  FDDI SK-5841 (SK-NET FDDI-FP64) +		1148 5843  FDDI SK-5843 (SK-NET FDDI-LP64) +		1148 5844  FDDI SK-5844 (SK-NET FDDI-LP64 DAS) +	4200  Token Ring adapter +	4300  SK-9872 Gigabit Ethernet Server Adapter (SK-NET GE-ZX dual link) +		1148 9821  SK-9821 Gigabit Ethernet Server Adapter (SK-NET GE-T) +		1148 9822  SK-9822 Gigabit Ethernet Server Adapter (SK-NET GE-T dual link) +		1148 9841  SK-9841 Gigabit Ethernet Server Adapter (SK-NET GE-LX) +		1148 9842  SK-9842 Gigabit Ethernet Server Adapter (SK-NET GE-LX dual link) +		1148 9843  SK-9843 Gigabit Ethernet Server Adapter (SK-NET GE-SX) +		1148 9844  SK-9844 Gigabit Ethernet Server Adapter (SK-NET GE-SX dual link) +		1148 9861  SK-9861 Gigabit Ethernet Server Adapter (SK-NET GE-SX Volition) +		1148 9862  SK-9862 Gigabit Ethernet Server Adapter (SK-NET GE-SX Volition dual link) +		1148 9871  SK-9871 Gigabit Ethernet Server Adapter (SK-NET GE-ZX) +		1148 9872  SK-9872 Gigabit Ethernet Server Adapter (SK-NET GE-ZX dual link) +		1259 2970  AT-2970SX Gigabit Ethernet Adapter +		1259 2971  AT-2970LX Gigabit Ethernet Adapter +		1259 2972  AT-2970TX Gigabit Ethernet Adapter +		1259 2973  AT-2971SX Gigabit Ethernet Adapter +		1259 2974  AT-2971T Gigabit Ethernet Adapter +		1259 2975  AT-2970SX/2SC Gigabit Ethernet Adapter +		1259 2976  AT-2970LX/2SC Gigabit Ethernet Adapter +		1259 2977  AT-2970TX/2TX Gigabit Ethernet Adapter +	4320  SK-9871 V2.0 Gigabit Ethernet 1000Base-ZX Adapter, PCI64, Fiber ZX/SC +		1148 0121  Marvell RDK-8001 Adapter +		1148 0221  Marvell RDK-8002 Adapter +		1148 0321  Marvell RDK-8003 Adapter +		1148 0421  Marvell RDK-8004 Adapter +		1148 0621  Marvell RDK-8006 Adapter +		1148 0721  Marvell RDK-8007 Adapter +		1148 0821  Marvell RDK-8008 Adapter +		1148 0921  Marvell RDK-8009 Adapter +		1148 1121  Marvell RDK-8011 Adapter +		1148 1221  Marvell RDK-8012 Adapter +		1148 3221  SK-9521 V2.0 10/100/1000Base-T Adapter +		1148 5021  SK-9821 V2.0 Gigabit Ethernet 10/100/1000Base-T Adapter +		1148 5041  SK-9841 V2.0 Gigabit Ethernet 1000Base-LX Adapter +		1148 5043  SK-9843 V2.0 Gigabit Ethernet 1000Base-SX Adapter +		1148 5051  SK-9851 V2.0 Gigabit Ethernet 1000Base-SX Adapter +		1148 5061  SK-9861 V2.0 Gigabit Ethernet 1000Base-SX Adapter +		1148 5071  SK-9871 V2.0 Gigabit Ethernet 1000Base-ZX Adapter +		1148 9521  SK-9521 10/100/1000Base-T Adapter +	4400  SK-9Dxx Gigabit Ethernet Adapter +	4500  SK-9Mxx Gigabit Ethernet Adapter +	9000  SK-9S21 10/100/1000Base-T Server Adapter, PCI-X, Copper RJ-45 +	9843  [Fujitsu] Gigabit Ethernet +	9e00  SK-9E21D 10/100/1000Base-T Adapter, Copper RJ-45 +		1148 2100  SK-9E21 Server Adapter +		1148 21d0  SK-9E21D 10/100/1000Base-T Adapter +		1148 2200  SK-9E22 Server Adapter +		1148 8100  SK-9E81 Server Adapter +		1148 8200  SK-9E82 Server Adapter +		1148 9100  SK-9E91 Server Adapter +		1148 9200  SK-9E92 Server Adapter +	9e01  SK-9E21M 10/100/1000Base-T Adapter +1149  Win System Corporation +114a  VMIC +	5565  GE-IP PCI5565,PMC5565 Reflective Memory Node +	5579  VMIPCI-5579 (Reflective Memory Card) +	5587  VMIPCI-5587 (Reflective Memory Card) +	6504  VMIC PCI 7755 FPGA +	7587  VMIVME-7587 +114b  Canopus Co., Ltd +114c  Annabooks +114d  IC Corporation +114e  Nikon Systems Inc +114f  Digi International +	0002  AccelePort EPC +	0003  RightSwitch SE-6 +	0004  AccelePort Xem +	0005  AccelePort Xr +	0006  AccelePort Xr,C/X +	0009  AccelePort Xr/J +	000a  AccelePort EPC/J +	000c  DataFirePRIme T1 (1-port) +	000d  SyncPort 2-Port (x.25/FR) +	0011  AccelePort 8r EIA-232 (IBM) +	0012  AccelePort 8r EIA-422 +	0013  AccelePort Xr +	0014  AccelePort 8r EIA-422 +	0015  AccelePort Xem +	0016  AccelePort EPC/X +	0017  AccelePort C/X +	001a  DataFirePRIme E1 (1-port) +	001b  AccelePort C/X (IBM) +	001c  AccelePort Xr (SAIP) +	001d  DataFire RAS T1/E1/PRI +		114f 0050  DataFire RAS E1 Adapter +		114f 0051  DataFire RAS Dual E1 Adapter +		114f 0052  DataFire RAS T1 Adapter +		114f 0053  DataFire RAS Dual T1 Adapter +	0023  AccelePort RAS +	0024  DataFire RAS B4 ST/U +		114f 0030  DataFire RAS BRI U Adapter +		114f 0031  DataFire RAS BRI S/T Adapter +	0026  AccelePort 4r 920 +	0027  AccelePort Xr 920 +	0028  ClassicBoard 4 +	0029  ClassicBoard 8 +	0034  AccelePort 2r 920 +	0035  DataFire DSP T1/E1/PRI cPCI +	0040  AccelePort Xp +		114f 0042  AccelePort 2p PCI +		114f 0043  AccelePort 4p PCI +		114f 0044  AccelePort 8p PCI +		114f 0045  AccelePort 16p PCI +		114f 004e  AccelePort 32p PCI +	0042  AccelePort 2p +	0043  AccelePort 4p +	0044  AccelePort 8p +	0045  AccelePort 16p +	004e  AccelePort 32p +	0070  Datafire Micro V IOM2 (Europe) +	0071  Datafire Micro V (Europe) +	0072  Datafire Micro V IOM2 (North America) +	0073  Datafire Micro V (North America) +	00b0  Digi Neo 4 +	00b1  Digi Neo 8 +	00c8  Digi Neo 2 DB9 +	00c9  Digi Neo 2 DB9 PRI +	00ca  Digi Neo 2 RJ45 +	00cb  Digi Neo 2 RJ45 PRI +	00cc  Digi Neo 1 422 +	00cd  Digi Neo 1 422 485 +	00ce  Digi Neo 2 422 485 +	00d0  ClassicBoard 4 422 +	00d1  ClassicBoard 8 422 +	00f1  Digi Neo PCI-E 4 port +	00f4  Digi Neo 4 (IBM version) +	6001  Avanstar +1150  Thinking Machines Corp +1151  JAE Electronics Inc. +1152  Megatek +1153  Land Win Electronic Corp +1154  Melco Inc +1155  Pine Technology Ltd +1156  Periscope Engineering +1157  Avsys Corporation +1158  Voarx R & D Inc +	3011  Tokenet/vg 1001/10m anylan +	9050  Lanfleet/Truevalue +	9051  Lanfleet/Truevalue +1159  Mutech Corp +	0001  MV-1000 +	0002  MV-1500 +115a  Harlequin Ltd +115b  Parallax Graphics +115c  Photron Ltd. +115d  Xircom +	0003  Cardbus Ethernet 10/100 +		1014 0181  10/100 EtherJet Cardbus Adapter +		1014 1181  10/100 EtherJet Cardbus Adapter +		1014 8181  10/100 EtherJet Cardbus Adapter +		1014 9181  10/100 EtherJet Cardbus Adapter +		115d 0181  Cardbus Ethernet 10/100 +		115d 0182  RealPort2 CardBus Ethernet 10/100 (R2BE-100) +		115d 1181  Cardbus Ethernet 10/100 +		1179 0181  Cardbus Ethernet 10/100 +		8086 8181  EtherExpress PRO/100 Mobile CardBus 32 Adapter +		8086 9181  EtherExpress PRO/100 Mobile CardBus 32 Adapter +	0005  Cardbus Ethernet 10/100 +		1014 0182  10/100 EtherJet Cardbus Adapter +		1014 1182  10/100 EtherJet Cardbus Adapter +		115d 0182  Cardbus Ethernet 10/100 +		115d 1182  Cardbus Ethernet 10/100 +	0007  Cardbus Ethernet 10/100 +		1014 0182  10/100 EtherJet Cardbus Adapter +		1014 1182  10/100 EtherJet Cardbus Adapter +		115d 0182  Cardbus Ethernet 10/100 +		115d 1182  Cardbus Ethernet 10/100 +	000b  Cardbus Ethernet 10/100 +		1014 0183  10/100 EtherJet Cardbus Adapter +		115d 0183  Cardbus Ethernet 10/100 +	000c  Mini-PCI V.90 56k Modem +	000f  Cardbus Ethernet 10/100 +		1014 0183  10/100 EtherJet Cardbus Adapter +		115d 0183  Cardbus Ethernet 10/100 +	00d4  Mini-PCI K56Flex Modem +	0101  Cardbus 56k modem +		115d 1081  Cardbus 56k Modem +	0103  Cardbus Ethernet + 56k Modem +		1014 9181  Cardbus 56k Modem +		1115 1181  Cardbus Ethernet 100 + 56k Modem +		115d 1181  CBEM56G-100 Ethernet + 56k Modem +		8086 9181  PRO/100 LAN + Modem56 CardBus +115e  Peer Protocols Inc +115f  Maxtor Corporation +1160  Megasoft Inc +1161  PFU Limited +1162  OA Laboratory Co Ltd +1163  Rendition +	0001  Verite 1000 +	2000  Verite V2000/V2100/V2200 +		1092 2000  Stealth II S220 +1164  Advanced Peripherals Technologies +1165  Imagraph Corporation +	0001  Motion TPEG Recorder/Player with audio +# nee ServerWorks +1166  Broadcom +	0000  CMIC-LE +	0005  CNB20-LE Host Bridge +	0006  CNB20HE Host Bridge +	0007  CNB20-LE Host Bridge +	0008  CNB20HE Host Bridge +	0009  CNB20LE Host Bridge +	0010  CIOB30 +	0011  CMIC-HE +	0012  CMIC-WS Host Bridge (GC-LE chipset) +	0013  CNB20-HE Host Bridge +	0014  CMIC-LE Host Bridge (GC-LE chipset) +	0015  CMIC-GC Host Bridge +	0016  CMIC-GC Host Bridge +	0017  GCNB-LE Host Bridge +	0031  HT1100 HPX0 HT Host Bridge +	0036  BCM5785 [HT1000] PCI/PCI-X Bridge +	0101  CIOB-X2 PCI-X I/O Bridge +	0103  EPB PCI-Express to PCI-X Bridge +	0104  BCM5785 [HT1000] PCI/PCI-X Bridge +	0110  CIOB-E I/O Bridge with Gigabit Ethernet +	0130  BCM5780 [HT2000] PCI-X bridge +	0132  BCM5780 [HT2000] PCI-Express Bridge +		1166 0132  HT2000 PCI-Express bridge +	0140  HT2100 PCI-Express Bridge +	0141  HT2100 PCI-Express Bridge +	0142  HT2100 PCI-Express Bridge +	0144  HT2100 PCI-Express Bridge +	0200  OSB4 South Bridge +	0201  CSB5 South Bridge +		4c53 1080  CT8 mainboard +	0203  CSB6 South Bridge +		1734 1012  PRIMERGY RX/TX series +	0205  BCM5785 [HT1000] Legacy South Bridge +	0211  OSB4 IDE Controller +	0212  CSB5 IDE Controller +		1028 014a  PowerEdge 1750 +		1028 810b  PowerEdge 1650/2550 +		4c53 1080  CT8 mainboard +	0213  CSB6 RAID/IDE Controller +		1028 4134  PowerEdge 600SC +		1028 c134  Poweredge SC600 +		1734 1012  PRIMERGY RX/TX series onboard IDE +	0214  BCM5785 [HT1000] IDE +		1028 0205  PowerEdge 2970 HT1000 IDE +	0217  CSB6 IDE Controller +		1028 4134  Poweredge SC600 +	021b  HT1100 HD Audio +	0220  OSB4/CSB5 OHCI USB Controller +		4c53 1080  CT8 mainboard +	0221  CSB6 OHCI USB Controller +		1734 1012  PRIMERGY RX/TX series onboard OHCI +	0223  BCM5785 [HT1000] USB +		1028 0205  PowerEdge 2970 HT1000 USB Controller +		1028 020b  PowerEdge T605 HT1000 USB Controller +	0225  CSB5 LPC bridge +	0227  GCLE-2 Host Bridge +		1734 1012  PRIMERGY RX/TX series +	0230  CSB5 LPC bridge +		4c53 1080  CT8 mainboard +	0234  BCM5785 [HT1000] LPC +		1028 0205  PowerEdge 2970 HT1000 LPC +		1028 020b  PowerEdge T605 HT1000 LPC +	0235  BCM5785 [HT1000] XIOAPIC0-2 +	0238  BCM5785 [HT1000] WDTimer +	0240  K2 SATA +	0241  RAIDCore RC4000 +	0242  RAIDCore BC4000 +	024a  BCM5785 [HT1000] SATA (Native SATA Mode) +		1028 020b  PowerEdge T605 onboard SATA Controller +# The device starts as 024A, and changes to 024B if set to PATA mode in BIOS +	024b  BCM5785 [HT1000] SATA (PATA/IDE Mode) +		1028 0205  PowerEdge 2970 HT1000 SATA controller +	0406  HT1100 PCI-X Bridge +	0408  HT1100 Legacy Device +	040a  HT1100 ISA-LPC Bridge +		1028 0223  PowerEdge R905 HT1100 ISA-LPC Bridge +	0410  HT1100 SATA Controller (Native SATA Mode) +	0411  HT1100 SATA Controller (PATA / IDE Mode) +	0412  HT1100 USB OHCI Controller +	0414  HT1100 USB EHCI Controller +	0416  HT1100 USB EHCI Controller (with Debug Port) +	0420  HT1100 PCI-Express Bridge +	0421  HT1100 SAS/SATA Controller +	0422  HT1100 PCI-Express Bridge +1167  Mutoh Industries Inc +1168  Thine Electronics Inc +1169  Centre for Development of Advanced Computing +# nee Polaris Communications +116a  Luminex Software, Inc. +	6100  Bus/Tag Channel +	6800  Escon Channel +	7100  Bus/Tag Channel +	7800  Escon Channel +116b  Connectware Inc +116c  Intelligent Resources Integrated Systems +116d  Martin-Marietta +116e  Electronics for Imaging +116f  Workstation Technology +1170  Inventec Corporation +1171  Loughborough Sound Images Plc +1172  Altera Corporation +1173  Adobe Systems, Inc +1174  Bridgeport Machines +1175  Mitron Computer Inc. +1176  SBE Incorporated +1177  Silicon Engineering +1178  Alfa, Inc. +	afa1  Fast Ethernet Adapter +1179  Toshiba America Info Systems +	0102  Extended IDE Controller +	0103  EX-IDE Type-B +	0404  DVD Decoder card +	0406  Tecra Video Capture device +	0407  DVD Decoder card (Version 2) +	0601  CPU to PCI bridge +		1179 0001  Satellite Pro +	0602  PCI to ISA bridge +	0603  ToPIC95 PCI to CardBus Bridge for Notebooks +	0604  PCI-Docking Host bridge +	060a  ToPIC95 +		1179 0001  Satellite Pro +	060f  ToPIC97 +		1179 0001  Satellite 4010 +	0617  ToPIC100 PCI to Cardbus Bridge with ZV Support +	0618  CPU to PCI and PCI to ISA bridge +	0701  FIR Port Type-O +	0803  TC6371AF SD Host Controller +	0804  TC6371AF SmartMedia Controller +	0805  SD TypA Controller +	0d01  FIR Port Type-DO +		1179 0001  FIR Port Type-DO +117a  A-Trend Technology +117b  L G Electronics, Inc. +117c  ATTO Technology, Inc. +	002c  ExpressSAS R380 +	002d  ExpressSAS R348 +	0030  Ultra320 SCSI Host Adapter +		117c 8013  ExpressPCI UL4D +		117c 8014  ExpressPCI UL4S +		117c 8027  ExpressPCI UL5D +		117c 802f  ExpressPCI UL5D Low Profile +	0033  SAS Adapter +	0041  ExpressSAS R30F +	8013  ExpressPCI UL4D +	8014  ExpressPCI UL4S +	8027  ExpressPCI UL5D +117d  Becton & Dickinson +117e  T/R Systems +117f  Integrated Circuit Systems +1180  Ricoh Co Ltd +	0465  RL5c465 +	0466  RL5c466 +	0475  RL5c475 +		144d c006  vpr Matrix 170B4 CardBus bridge +	0476  RL5c476 II +		1014 0185  ThinkPad A/T/X Series +		1014 056c  ThinkPad Z60t +		1028 014f  Latitude X300 laptop +		1028 0188  Inspiron 6000 laptop +		103c 30c0  Compaq 6710b +		103c 30c1  Compaq 6910p +		1043 1237  A6J-Q008 +		1043 1967  V6800V +		1043 1987  Asus A4K and Z81K notebooks, possibly others ( mid-2005 machines ) +		104d 80df  Vaio PCG-FX403 +		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP +		104d 814e  VAIO GRZ390Z +		10f7 8338  Panasonic CF-Y5 laptop +		144d c005  X10 Laptop +		144d c00c  P30/P35 notebook +		14ef 0220  PCD-RP-220S +		17aa 201c  ThinkPad X60/X60s +		17aa 20c4  ThinkPad T61 +		17aa 20c6  ThinkPad R61 +	0477  RL5c477 +	0478  RL5c478 +		1014 0184  ThinkPad A30p +	0511  R5C511 +	0522  R5C522 IEEE 1394 Controller +		1014 01cf  ThinkPad A30p +		1043 1967  V6800V +	0551  R5C551 IEEE 1394 Controller +		144d c006  vpr Matrix 170B4 +	0552  R5C552 IEEE 1394 Controller +		1014 0511  ThinkPad A/T/X Series +		1028 014f  Latitude X300 laptop +		1028 0188  Inspiron 6000 laptop +		1043 1237  A6J-Q008 +		1043 1757  M2400N laptop +		144d c005  X10 Laptop +		144d c00c  P30/P35 notebook +		17aa 201e  ThinkPad X60/X60s +	0554  R5C554 +	0575  R5C575 SD Bus Host Adapter +	0576  R5C576 SD Bus Host Adapter +	0592  R5C592 Memory Stick Bus Host Adapter +		1025 0121  Aspire 5920G +		1028 01d7  XPS M1210 +		1028 01f3  Inspiron 1420 +		103c 30b5  Presario V3242AU +		103c 30b7  Presario V6133CL +		103c 30cc  Pavilion dv6700 +		103c 30cf  Pavilion dv9668eg Laptop +		1043 1237  A6J-Q008 +		1043 1967  V6800V +		144d c018  X20 IV +		17aa 20ca  ThinkPad T61 +	0811  R5C811 +	0822  R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter +		1014 0556  ThinkPad X60s / Z60t +		1014 0598  ThinkPad Z60m +		1025 0121  Aspire 5920G +		1028 0188  Inspiron 6000 laptop +		1028 01a2  Inspiron 9200 +		1028 01d7  XPS M1210 +		1028 01f3  Inspiron 1420 +		103c 03b5  Presario V3242AU +		103c 30b7  Presario V6133CL +		103c 30c1  Compaq 6910p +		103c 30cc  Pavilion dv6700 +		103c 30cf  Pavilion dv9668eg Laptop +		1043 1237  A6J-Q008 +		1043 1967  ASUS V6800V +		10f7 8338  Panasonic CF-Y5 laptop +		144d c018  X20 IV +		17aa 201d  ThinkPad X60/X60s +		17aa 20c7  ThinkPad T61 +		17aa 20c8  ThinkPad W500 +	0832  R5C832 IEEE 1394 Controller +		1025 0121  Aspire 5920G +		1028 01d7  XPS M1210 +		1028 01f3  Inspiron 1420 +		1028 024d  Latitude E4300 +		103c 30b5  Presario V3242AU +		103c 30b7  Presario V6133CL +		103c 30c1  Compaq 6910p +		103c 30cc  Pavilion dv6700 +		103c 30cf  Pavilion dv9668eg Laptop +		17aa 20c7  ThinkPad R61 +	0841  R5C841 CardBus/SD/SDIO/MMC/MS/MSPro/xD/IEEE1394 +	0843  R5C843 MMC Host Controller +		1025 0121  Aspire 5920G +		1028 01d7  XPS M1210 +		1028 01f3  Inspiron 1420 +		1028 01f5  Dell Inspiron 1501 +		1028 024f  Dell Latitude e6500 +		103c 03b5  Presario V3242AU +		103c 30b7  Presario V6133CL +		1183 0843  Alienware Aurora m9700 +	0852  xD-Picture Card Controller +		1025 0121  Aspire 5920G +		1028 01f3  Inspiron 1420 +		103c 30b5  Presario V3242AU +		103c 30b7  Presario V6133CL +		103c 30cc  Pavilion dv6700 +		103c 30cf  Pavilion dv9668eg Laptop +		1043 1967  V6800V +		1180 0852  Pavilion 2410us +		1324 10cf  P7120 +	e230  R5U2xx (R5U230 / R5U231 / R5U241) [Memory Stick Host Controller] +	e476  CardBus bridge +		1028 040a  Latitude E6410 +		1028 040b  Latitude E6510 +	e822  MMC/SD Host Controller +		1028 040a  Latitude E6410 +		1028 040b  Latitude E6510 +	e823  PCIe SDXC/MMC Host Controller +	e832  R5C832 PCIe IEEE 1394 Controller +		1028 040a  Latitude E6410 +		1028 040b  Latitude E6510 +	e852  PCIe xD-Picture Card Controller +1181  Telmatics International +1183  Fujikura Ltd +1184  Forks Inc +1185  Dataworld International Ltd +1186  D-Link System Inc +	1002  DL10050 Sundance Ethernet +		1186 1002  DFE-550TX/FX +		1186 1012  DFE-580TX +	1025  AirPlus Xtreme G DWL-G650 Adapter +	1026  AirXpert DWL-AG650 Wireless Cardbus Adapter +	1043  AirXpert DWL-AG650 Wireless Cardbus Adapter +	1300  RTL8139 Ethernet +		1186 1300  DFE-538TX 10/100 Ethernet Adapter +		1186 1301  DFE-530TX+ 10/100 Ethernet Adapter +		1186 1303  DFE-528TX 10/100 Fast Ethernet PCI Adapter +	1340  DFE-690TXD CardBus PC Card +	1540  DFE-680TX +	1541  DFE-680TXD CardBus PC Card +	1561  DRP-32TXD Cardbus PC Card +	3300  DWL-510 / DWL-610 802.11b [Realtek RTL8180L] +		1186 3300  DWL-610 Wireless Cardbus Adapter +		1186 3301  DWL-510 Wireless PCI Adapter +	3a10  AirXpert DWL-AG650 Wireless Cardbus Adapter(rev.B) +	3a11  AirXpert DWL-AG520 Wireless PCI Adapter(rev.B) +	4000  DL2000-based Gigabit Ethernet +	4001  DGE-550SX PCI-X Gigabit Ethernet Adapter +	4300  DGE-528T Gigabit Ethernet Adapter +# rev. B1; RealTek RTL8168E. +		1186 4b10  DGE-560T PCI Express (x1) Gigabit Ethernet Adapter +	4302  DGE-530T Gigabit Ethernet Adapter (rev.C1) [Realtek RTL8169] +	4b00  DGE-560T PCI Express Gigabit Ethernet Adapter +	4b01  DGE-530T Gigabit Ethernet Adapter (rev 11) +	4b02  DGE-560SX PCI Express Gigabit Ethernet Adapter +	4b03  DGE-550T Gigabit Ethernet Adapter V.B1 +	4c00  Gigabit Ethernet Adapter +		1186 4c00  DGE-530T Gigabit Ethernet Adapter +	8400  D-Link DWL-650+ CardBus PC Card +1187  Advanced Technology Laboratories, Inc. +1188  Shima Seiki Manufacturing Ltd. +1189  Matsushita Electronics Co Ltd +118a  Hilevel Technology +118b  Hypertec Pty Limited +118c  Corollary, Inc +	0014  PCIB [C-bus II to PCI bus host bridge chip] +	1117  Intel 8-way XEON Profusion Chipset [Cache Coherency Filter] +118d  BitFlow Inc +	0001  Raptor-PCI framegrabber +	0012  Model 12 Road Runner Frame Grabber +	0014  Model 14 Road Runner Frame Grabber +	0024  Model 24 Road Runner Frame Grabber +	0044  Model 44 Road Runner Frame Grabber +	0112  Model 12 Road Runner Frame Grabber +	0114  Model 14 Road Runner Frame Grabber +	0124  Model 24 Road Runner Frame Grabber +	0144  Model 44 Road Runner Frame Grabber +	0212  Model 12 Road Runner Frame Grabber +	0214  Model 14 Road Runner Frame Grabber +	0224  Model 24 Road Runner Frame Grabber +	0244  Model 44 Road Runner Frame Grabber +	0312  Model 12 Road Runner Frame Grabber +	0314  Model 14 Road Runner Frame Grabber +	0324  Model 24 Road Runner Frame Grabber +	0344  Model 44 Road Runner Frame Grabber +118e  Hermstedt GmbH +118f  Green Logic +1190  Tripace +	c731  TP-910/920/940 PCI Ultra(Wide) SCSI Adapter +1191  Artop Electronic Corp +	0003  SCSI Cache Host Adapter +	0004  ATP8400 +	0005  ATP850UF +	0006  ATP860 NO-BIOS +	0007  ATP860 +	0008  ATP865 NO-ROM +	0009  ATP865 +	000a  ATP867-A +	000b  ATP867-B +	000d  ATP8620 +	000e  ATP8620 +	8002  AEC6710 SCSI-2 Host Adapter +	8010  AEC6712UW SCSI +	8020  AEC6712U SCSI +	8030  AEC6712S SCSI +	8040  AEC6712D SCSI +	8050  AEC6712SUW SCSI +	8060  AEC6712 SCSI +	8080  AEC67160 SCSI +	8081  AEC67160S SCSI +	808a  AEC67162 2-ch. LVD SCSI +1192  Densan Company Ltd +1193  Zeitnet Inc. +	0001  1221 +	0002  1225 +1194  Toucan Technology +1195  Ratoc System Inc +1196  Hytec Electronics Ltd +1197  Gage Applied Sciences, Inc. +	010c  CompuScope 82G 8bit 2GS/s Analog Input Card +1198  Lambda Systems Inc +1199  Attachmate Corporation +	0101  Advanced ISCA/PCI Adapter +	6832  Sierra Wireless MC8780 Device +119a  Mind Share, Inc. +119b  Omega Micro Inc. +	1221  82C092G +119c  Information Technology Inst. +119d  Bug, Inc. Sapporo Japan +119e  Fujitsu Microelectronics Ltd. +	0001  FireStream 155 +	0003  FireStream 50 +119f  Bull HN Information Systems +11a0  Convex Computer Corporation +11a1  Hamamatsu Photonics K.K. +11a2  Sierra Research and Technology +11a3  Deuretzbacher GmbH & Co. Eng. KG +11a4  Barco Graphics NV +11a5  Microunity Systems Eng. Inc +11a6  Pure Data Ltd. +11a7  Power Computing Corp. +11a8  Systech Corp. +11a9  InnoSys Inc. +	4240  AMCC S933Q Intelligent Serial Card +11aa  Actel +# Nee Galileo Technology, Inc. +11ab  Marvell Technology Group Ltd. +	0146  GT-64010/64010A System Controller +	0f53  88E6318 Link Street network controller +	11ab  MV88SE614x SATA II PCI-E controller +	138f  W8300 802.11 Adapter (rev 07) +	1fa6  Marvell W8300 802.11 Adapter +		1186 3b08  AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.A1) +	1fa7  88W8310 and 88W8000G [Libertas] 802.11g client chipset +	1faa  88w8335 [Libertas] 802.11b/g Wireless +		1385 4e00  WG511v2 54 Mbps Wireless PC Card +		1385 6b00  WG311v3 802.11g Wireless PCI Adapter +		1737 0040  WPC54G v5 802.11g Wireless-G Notebook Adapter +	2211  88SB2211 PCI Express to PCI Bridge +	2a01  88W8335 [Libertas] 802.11b/g Wireless +	2a02  88W8361 [TopDog] 802.11n Wireless +		07d1 3b02  DIR-615 rev. A1 Mini PCI Wireless Module +		1385 7c00  WN511T RangeMax Next 300 Mbps Wireless PC Card +		1385 7c01  WN511T RangeMax Next 300 Mbps Wireless Notebook Adapter +		1385 7e00  WN311T RangeMax Next 300 Mbps Wireless PCI Adapter +		1799 801b  F5D8011 v2 802.11n N1 Wireless Notebook Card +	2a08  88W8362e [TopDog] 802.11a/b/g/n Wireless +	2a0a  88W8363 [TopDog] 802.11n Wireless +	2a0c  88W8363 [TopDog] 802.11n Wireless +	2a24  88W8363 [TopDog] 802.11n Wireless +	2a2b  88W8687 [TopDog] 802.11b/g Wireless +	2a30  88W8687 [TopDog] 802.11b/g Wireless +	2a40  88W8366 [TopDog] 802.11n Wireless +	2a41  88W8366 [TopDog] 802.11n Wireless +	2a42  88W8366 [TopDog] 802.11n Wireless +	2a43  88W8366 [TopDog] 802.11n Wireless +	2a55  88W8864 [Avastar] 802.11ac Wireless +	2b36  88W8764 [Avastar] 802.11n Wireless +	4101  OLPC Cafe Controller Secure Digital Controller +	4320  88E8001 Gigabit Ethernet Controller +		1019 0f38  Marvell 88E8001 Gigabit Ethernet Controller (ECS) +		1019 8001  Marvell 88E8001 Gigabit Ethernet Controller (ECS) +		1043 173c  Marvell 88E8001 Gigabit Ethernet Controller (Asus) +		1043 811a  Marvell 88E8001 Gigabit Ethernet Controller (Asus) +		105b 0c19  Marvell 88E8001 Gigabit Ethernet Controller (Foxconn) +		10b8 b452  EZ Card 1000 (SMC9452TXV.2) +		11ab 0121  Marvell RDK-8001 +		11ab 0321  Marvell RDK-8003 +		11ab 1021  Marvell RDK-8010 +		11ab 4320  Marvell Yukon Gigabit Ethernet 10/100/1000Baset-T Constroller (Asus) +		11ab 5021  Marvell Yukon Gigabit Ethernet 10/100/1000Base-T Controller (64 bit) +		11ab 9521  Marvell Yukon Gigabit Ethernet 10/100/1000Base-T Controller (32 bit) +		1458 e000  Marvell 88E8001 Gigabit Ethernet Controller (Gigabyte) +		147b 1406  Marvell 88E8001 Gigabit Ethernet Controller (Abit) +		15d4 0047  Marvell 88E8001 Gigabit Ethernet Controller (Iwill) +		1695 9025  Marvell 88E8001 Gigabit Ethernet Controller (Epox) +		17f2 1c03  Marvell 88E8001 Gigabit Ethernet Controller (Albatron) +		270f 2803  Marvell 88E8001 Gigabit Ethernet Controller (Chaintech) +	4340  88E8021 PCI-X IPMI Gigabit Ethernet Controller +	4341  88E8022 PCI-X IPMI Gigabit Ethernet Controller +	4342  88E8061 PCI-E IPMI Gigabit Ethernet Controller +	4343  88E8062 PCI-E IPMI Gigabit Ethernet Controller +	4344  88E8021 PCI-X IPMI Gigabit Ethernet Controller +	4345  88E8022 PCI-X IPMI Gigabit Ethernet Controller +	4346  88E8061 PCI-E IPMI Gigabit Ethernet Controller +	4347  88E8062 PCI-E IPMI Gigabit Ethernet Controller +		4c53 10d0  Telum ASLP10 PrAMC Gigabit Ethernet +	4350  88E8035 PCI-E Fast Ethernet Controller +		1179 0001  Marvell 88E8035 Fast Ethernet Controller (Toshiba) +		11ab 3521  Marvell RDK-8035 +		1854 000d  Marvell 88E8035 Fast Ethernet Controller (LGE) +		1854 000e  Marvell 88E8035 Fast Ethernet Controller (LGE) +		1854 000f  Marvell 88E8035 Fast Ethernet Controller (LGE) +		1854 0011  Marvell 88E8035 Fast Ethernet Controller (LGE) +		1854 0012  Marvell 88E8035 Fast Ethernet Controller (LGE) +		1854 0016  Marvell 88E8035 Fast Ethernet Controller (LGE) +		1854 0017  Marvell 88E8035 Fast Ethernet Controller (LGE) +		1854 0018  Marvell 88E8035 Fast Ethernet Controller (LGE) +		1854 0019  Marvell 88E8035 Fast Ethernet Controller (LGE) +		1854 001c  Marvell 88E8035 Fast Ethernet Controller (LGE) +		1854 001e  Marvell 88E8035 Fast Ethernet Controller (LGE) +		1854 0020  Marvell 88E8035 Fast Ethernet Controller (LGE) +	4351  88E8036 PCI-E Fast Ethernet Controller +		107b 4009  Marvell 88E8036 Fast Ethernet Controller (Wistron) +		10f7 8338  Marvell 88E8036 Fast Ethernet Controller (Panasonic) +		1179 0001  Marvell 88E8036 Fast Ethernet Controller (Toshiba) +		1179 ff00  Marvell 88E8036 Fast Ethernet Controller (Compal) +		1179 ff10  Marvell 88E8036 Fast Ethernet Controller (Inventec) +		11ab 3621  Marvell RDK-8036 +		13d1 ac12  Abocom EFE3K - 10/100 Ethernet Expresscard +		161f 203d  Marvell 88E8036 Fast Ethernet Controller (Arima) +		1854 000d  Marvell 88E8036 Fast Ethernet Controller (LGE) +		1854 000e  Marvell 88E8036 Fast Ethernet Controller (LGE) +		1854 000f  Marvell 88E8036 Fast Ethernet Controller (LGE) +		1854 0011  Marvell 88E8036 Fast Ethernet Controller (LGE) +		1854 0012  Marvell 88E8036 Fast Ethernet Controller (LGE) +		1854 0016  Marvell 88E8036 Fast Ethernet Controller (LGE) +		1854 0017  Marvell 88E8036 Fast Ethernet Controller (LGE) +		1854 0018  Marvell 88E8036 Fast Ethernet Controller (LGE) +		1854 0019  Marvell 88E8036 Fast Ethernet Controller (LGE) +		1854 001c  Marvell 88E8036 Fast Ethernet Controller (LGE) +		1854 001e  Marvell 88E8036 Fast Ethernet Controller (LGE) +		1854 0020  Marvell 88E8036 Fast Ethernet Controller (LGE) +	4352  88E8038 PCI-E Fast Ethernet Controller +	4353  88E8039 PCI-E Fast Ethernet Controller +		104d 902d  VAIO VGN-NR120E +	4354  88E8040 PCI-E Fast Ethernet Controller +		144d c06a  R730 Laptop +		144d c072  Notebook N150P +	4355  88E8040T PCI-E Fast Ethernet Controller +		1179 ff50  Satellite P305D-S8995E +	4356  88EC033 PCI-E Fast Ethernet Controller +	4357  88E8042 PCI-E Fast Ethernet Controller +	435a  88E8048 PCI-E Fast Ethernet Controller +	4360  88E8052 PCI-E ASF Gigabit Ethernet Controller +		1043 8134  Marvell 88E8052 Gigabit Ethernet Controller (Asus) +		107b 4009  Marvell 88E8052 Gigabit Ethernet Controller (Wistron) +		11ab 5221  Marvell RDK-8052 +		1458 e000  Marvell 88E8052 Gigabit Ethernet Controller (Gigabyte) +		1462 052c  Marvell 88E8052 Gigabit Ethernet Controller (MSI) +		1849 8052  Marvell 88E8052 Gigabit Ethernet Controller (ASRock) +		a0a0 0509  Marvell 88E8052 Gigabit Ethernet Controller (Aopen) +	4361  88E8050 PCI-E ASF Gigabit Ethernet Controller +		107b 3015  Marvell 88E8050 Gigabit Ethernet Controller (Gateway) +		11ab 5021  Marvell 88E8050 Gigabit Ethernet Controller (Intel) +		8086 3063  D925XCVLK mainboard +		8086 3439  Marvell 88E8050 Gigabit Ethernet Controller (Intel) +	4362  88E8053 PCI-E Gigabit Ethernet Controller +		103c 2a0d  Marvell 88E8053 Gigabit Ethernet Controller (Asus) +		1043 8142  Marvell 88E8053 Gigabit Ethernet controller PCIe (Asus) +		109f 3197  Marvell 88E8053 Gigabit Ethernet Controller (Trigem) +		10f7 8338  Marvell 88E8053 Gigabit Ethernet Controller (Panasonic) +		10fd a430  Marvell 88E8053 Gigabit Ethernet Controller (SOYO) +		1179 0001  Marvell 88E8053 Gigabit Ethernet Controller (Toshiba) +		1179 ff00  Marvell 88E8053 Gigabit Ethernet Controller (Compal) +		1179 ff10  Marvell 88E8053 Gigabit Ethernet Controller (Inventec) +		11ab 5321  Marvell RDK-8053 +		1297 c240  Marvell 88E8053 Gigabit Ethernet Controller (Shuttle) +		1297 c241  Marvell 88E8053 Gigabit Ethernet Controller (Shuttle) +		1297 c242  Marvell 88E8053 Gigabit Ethernet Controller (Shuttle) +		1297 c243  Marvell 88E8053 Gigabit Ethernet Controller (Shuttle) +		1297 c244  Marvell 88E8053 Gigabit Ethernet Controller (Shuttle) +		13d1 ac11  EGE5K - Giga Ethernet Expresscard +		1458 e000  Marvell 88E8053 Gigabit Ethernet Controller (Gigabyte) +		1462 058c  Marvell 88E8053 Gigabit Ethernet Controller (MSI) +		14c0 0012  Marvell 88E8053 Gigabit Ethernet Controller (Compal) +		1558 04a0  Marvell 88E8053 Gigabit Ethernet Controller (Clevo) +		15bd 1003  Marvell 88E8053 Gigabit Ethernet Controller (DFI) +		161f 203c  Marvell 88E8053 Gigabit Ethernet Controller (Arima) +		161f 203d  Marvell 88E8053 Gigabit Ethernet Controller (Arima) +		1695 9029  Marvell 88E8053 Gigabit Ethernet Controller (Epox) +		17f2 2c08  Marvell 88E8053 Gigabit Ethernet Controller (Albatron) +		17ff 0585  Marvell 88E8053 Gigabit Ethernet Controller (Quanta) +		1849 8053  Marvell 88E8053 Gigabit Ethernet Controller (ASRock) +		1854 000b  Marvell 88E8053 Gigabit Ethernet Controller (LGE) +		1854 000c  Marvell 88E8053 Gigabit Ethernet Controller (LGE) +		1854 0010  Marvell 88E8053 Gigabit Ethernet Controller (LGE) +		1854 0013  Marvell 88E8053 Gigabit Ethernet Controller (LGE) +		1854 0014  Marvell 88E8053 Gigabit Ethernet Controller (LGE) +		1854 0015  Marvell 88E8053 Gigabit Ethernet Controller (LGE) +		1854 001a  Marvell 88E8053 Gigabit Ethernet Controller (LGE) +		1854 001b  Marvell 88E8053 Gigabit Ethernet Controller (LGE) +		1854 001d  Marvell 88E8053 Gigabit Ethernet Controller (LGE) +		1854 001f  Marvell 88E8053 Gigabit Ethernet Controller (LGE) +		1854 0021  Marvell 88E8053 Gigabit Ethernet Controller (LGE) +		1854 0022  Marvell 88E8053 Gigabit Ethernet Controller (LGE) +		270f 2801  Marvell 88E8053 Gigabit Ethernet Controller (Chaintech) +		a0a0 0506  Marvell 88E8053 Gigabit Ethernet Controller (Aopen) +	4363  88E8055 PCI-E Gigabit Ethernet Controller +	4364  88E8056 PCI-E Gigabit Ethernet Controller +		1043 81f8  Motherboard +		11ba 00ba  8056 Gigabit Ethernet Controller +	4365  88E8070 based Ethernet Controller +	4366  88EC036 PCI-E Gigabit Ethernet Controller +	4367  88EC032 Ethernet Controller +	4368  88EC034 Ethernet Controller +	4369  88EC042 Ethernet Controller +	436a  88E8058 PCI-E Gigabit Ethernet Controller +		11ab 00ba  Imac 8,1 Wired Ethernet Adapter +	436b  88E8071 PCI-E Gigabit Ethernet Controller +	436c  88E8072 PCI-E Gigabit Ethernet Controller +	436d  88E8055 PCI-E Gigabit Ethernet Controller +	4370  88E8075 PCI-E Gigabit Ethernet Controller +	4380  88E8057 PCI-E Gigabit Ethernet Controller +# AVB = "Audio Video Bridging" +	4381  Yukon Optima 88E8059 [PCIe Gigabit Ethernet Controller with AVB] +	4611  GT-64115 System Controller +	4620  GT-64120/64120A/64121A System Controller +	4801  GT-48001 +	5005  Belkin F5D5005 Gigabit Desktop Network PCI Card +	5040  MV88SX5040 4-port SATA I PCI-X Controller +	5041  MV88SX5041 4-port SATA I PCI-X Controller +	5080  MV88SX5080 8-port SATA I PCI-X Controller +	5081  MV88SX5081 8-port SATA I PCI-X Controller +	5181  88f5181 [Orion-1] ARM SoC +	5182  88f5182 [Orion-NAS] ARM SoC +	5281  88f5281 [Orion-2] ARM SoC +	6041  MV88SX6041 4-port SATA II PCI-X Controller +	6042  88SX6042 PCI-X 4-Port SATA-II +	6081  MV88SX6081 8-port SATA II PCI-X Controller +	6101  88SE6101/6102 single-port PATA133 interface +		1043 82e0  P5K PRO Motherboard +	6111  88SE6111 1-port PATA133(IDE) and 1-port SATA II Controllers +	6121  88SE6121 SATA II / PATA Controller +	6141  88SE614x SATA II PCI-E controller +	6145  88SE6145 SATA II PCI-E controller +	6180  88F6180 [Kirkwood] ARM SoC +	6192  88F6190/6192 [Kirkwood] ARM SoC +	6281  88F6281 [Kirkwood] ARM SoC +# This device ID was used for earlier chips. +	6381  MV78xx0 [Discovery Innovation] ARM SoC +	6440  88SE6440 SAS/SATA PCIe controller +	6450  64560 System Controller +	6460  MV64360/64361/64362 System Controller +	6480  MV64460/64461/64462 System Controller +		1775 c200  C2K CompactPCI single board computer +	6485  MV64460/64461/64462 System Controller, Revision B +	7042  88SX7042 PCI-e 4-port SATA-II +		16b8 434b  Tempo SATA E4P +	7810  MV78100 [Discovery Innovation] ARM SoC +	7820  MV78200 [Discovery Innovation] ARM SoC +	7823  MV78230 [Armada XP] ARM SoC +	7846  88F6820 [Armada 385] ARM SoC +	f003  GT-64010 Primary Image Piranha Image Generator +11ac  Canon Information Systems Research Aust. +11ad  Lite-On Communications Inc +	0002  LNE100TX +		11ad 0002  LNE100TX +		11ad 0003  LNE100TX +		11ad f003  LNE100TX +		11ad ffff  LNE100TX +		1385 f004  FA310TX +		2646 f002  KNE110TX EtheRx Fast Ethernet +	c115  LNE100TX [Linksys EtherFast 10/100] +		11ad c001  LNE100TX [ver 2.0] +		2646 000b  KNE111TX +11ae  Aztech System Ltd +11af  Avid Technology Inc. +	0001  Cinema +	ee40  Digidesign Audiomedia III +11b0  V3 Semiconductor Inc. +	0002  V300PSC +	0292  V292PBC [Am29030/40 Bridge] +	0960  V96xPBC +	880a  Deltacast Delta-HD-22 +	c960  V96DPC +11b1  Apricot Computers +11b2  Eastman Kodak +11b3  Barr Systems Inc. +11b4  Leitch Technology International +11b5  Radstone Technology Plc +11b6  United Video Corp +11b7  Motorola +11b8  XPoint Technologies, Inc +	0001  Quad PeerMaster +11b9  Pathlight Technology Inc. +	c0ed  SSA Controller +11ba  Videotron Corp +11bb  Pyramid Technology +11bc  Network Peripherals Inc +	0001  NP-PCI +11bd  Pinnacle Systems Inc. +	002e  PCTV 40i +	0040  Royal TS Function 1 +		11bd 0044  PCTV 2000i Dual DVB-T Pro PCI Tuner 1 +		11bd 0045  PCTV Dual Sat Pro PCI 4000i Tuner 1 +	0041  RoyalTS Function 2 +		11bd 0044  PCTV 2000i Dual DVB-T Pro PCI Tuner 2 +		11bd 0045  PCTV Dual Sat Pro PCI 4000i Tuner 2 +	0042  Royal TS Function 3 +		11bd 0044  PCTV 2000i Dual DVB-T Pro PCI Common +		11bd 0045  PCTV Dual Sat Pro PCI 4000i Common +	0051  PCTV HD 800i +	bede  AV/DV Studio Capture Card +11be  International Microcircuits Inc +11bf  Astrodesign, Inc. +11c0  Hewlett Packard +# nee Agere Systems nee Lucent Microelectronics +11c1  LSI Corporation +	0440  56k WinModem +		1033 8015  LT WinModem 56k Data+Fax+Voice+Dsvd +		1033 8047  LT WinModem 56k Data+Fax+Voice+Dsvd +		1033 804f  LT WinModem 56k Data+Fax+Voice+Dsvd +		10cf 102c  LB LT Modem V.90 56k +		10cf 104a  BIBLO LT Modem 56k +		10cf 105f  LB2 LT Modem V.90 56k +		1179 0001  Internal V.90 Modem +		11c1 0440  LT WinModem 56k Data+Fax+Voice+Dsvd +		122d 4101  MDP7800-U Modem +		122d 4102  MDP7800SP-U Modem +		13e0 0040  LT WinModem 56k Data+Fax+Voice+Dsvd +		13e0 0440  LT WinModem 56k Data+Fax+Voice+Dsvd +		13e0 0441  LT WinModem 56k Data+Fax+Voice+Dsvd +		13e0 0450  LT WinModem 56k Data+Fax+Voice+Dsvd +		13e0 f100  LT WinModem 56k Data+Fax+Voice+Dsvd +		13e0 f101  LT WinModem 56k Data+Fax+Voice+Dsvd +		144d 2101  LT56PV Modem +		149f 0440  LT WinModem 56k Data+Fax+Voice+Dsvd +	0441  56k WinModem +		1033 804d  LT WinModem 56k Data+Fax +		1033 8065  LT WinModem 56k Data+Fax +		1092 0440  Supra 56i +		1179 0001  Internal V.90 Modem +		11c1 0440  LT WinModem 56k Data+Fax +		11c1 0441  LT WinModem 56k Data+Fax +		122d 4100  MDP7800-U Modem +		13e0 0040  LT WinModem 56k Data+Fax +		13e0 0100  LT WinModem 56k Data+Fax +		13e0 0410  LT WinModem 56k Data+Fax +		13e0 0420  TelePath Internet 56k WinModem +		13e0 0440  LT WinModem 56k Data+Fax +		13e0 0443  LT WinModem 56k Data+Fax +		13e0 f102  LT WinModem 56k Data+Fax +		1416 9804  CommWave 56k Modem +		141d 0440  LT WinModem 56k Data+Fax +		144f 0441  Lucent 56k V.90 DF Modem +		144f 0449  Lucent 56k V.90 DF Modem +		144f 110d  Lucent Win Modem +		1468 0441  Presario 56k V.90 DF Modem +		1668 0440  Lucent Win Modem +	0442  56k WinModem +		11c1 0440  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd +		11c1 0442  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd +		13e0 0412  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd +		13e0 0442  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd +		13fc 2471  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd +		144d 2104  LT56PT Modem +		144f 1104  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd +		149f 0440  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd +		1668 0440  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd +	0443  LT WinModem +	0444  LT WinModem +	0445  LT WinModem +		8086 2203  PRO/100+ MiniPCI (probably an Ambit U98.003.C.00 combo card) +		8086 2204  PRO/100+ MiniPCI on Armada E500 +	0446  LT WinModem +	0447  LT WinModem +	0448  WinModem 56k +		1014 0131  Lucent Win Modem +		1033 8066  LT WinModem 56k Data+Fax+Voice+Dsvd +		13e0 0030  56k Voice Modem +		13e0 0040  LT WinModem 56k Data+Fax+Voice+Dsvd +# Actiontech eth+modem card as used by Dell &c. +		1668 2400  LT WinModem 56k (MiniPCI Ethernet+Modem) +	0449  L56xM+S [Mars-2] WinModem 56k +		0e11 b14d  56k V.90 Modem +		1014 018c  ThinkPad 600X +		13e0 0020  LT WinModem 56k Data+Fax +		13e0 0041  TelePath Internet 56k WinModem +		1436 0440  Lucent Win Modem +		144f 0449  Lucent 56k V.90 DFi Modem +		1468 0410  IBM ThinkPad T23 +		1468 0440  Lucent Win Modem +		1468 0449  Presario 56k V.90 DFi Modem +	044a  F-1156IV WinModem (V90, 56KFlex) +		10cf 1072  LB Global LT Modem +		13e0 0012  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd +		13e0 0042  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd +		144f 1005  LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd +	044b  LT WinModem +	044c  LT WinModem +	044d  LT WinModem +	044e  LT WinModem +	044f  V90 WildWire Modem +	0450  LT WinModem +		1033 80a8  Versa Note Vxi +		144f 4005  Magnia SG20 +		1468 0450  Evo N600c +	0451  LT WinModem +	0452  LT WinModem +	0453  LT WinModem +	0454  LT WinModem +	0455  LT WinModem +	0456  LT WinModem +	0457  LT WinModem +	0458  LT WinModem +	0459  LT WinModem +	045a  LT WinModem +	045c  LT WinModem +	0461  V90 WildWire Modem +	0462  V90 WildWire Modem +	0480  Venus Modem (V90, 56KFlex) +	048c  V.92 56K WinModem +# InPorte Home Internal 56k Modem/fax/answering machine/SMS Features +	048f  V.92 56k WinModem +	0620  Lucent V.92 Data/Fax Modem +	2600  StarPro26XX family (SP2601, SP2603, SP2612) DSP +	5400  OR3TP12 FPSC +	5656  Venus Modem +	5801  USB +	5802  USS-312 USB Controller +	5803  USS-344S USB Controller +	5811  FW322/323 [TrueFire] 1394a Controller +		103c 2a34  Pavilion a1677c +		103c 2a6f  Asus IPIBL-LB Motherboard +		103c 2a9e  Pavilion p6310f +		1043 8294  LSI FW322/323 IEEE 1394a FireWire Controller +		8086 524c  D865PERL mainboard +		dead 0800  FireWire Host Bus Adapter +	5901  FW643 [TrueFire] PCIe 1394b Controller +		11c1 5900  FW643 [TrueFire] PCIe 1394b Controller +		1443 0643  FireBoard800-e V.2 +		1546 0643  FWB-PCIE1X2x +	5903  FW533 [TrueFire] PCIe 1394a Controller +	8110  T8110 H.100/H.110 TDM switch +		12d9 000c  E1/T1 PMXc cPCI carrier card +	ab10  WL60010 Wireless LAN MAC +	ab11  WL60040 Multimode Wireles LAN MAC +		11c1 ab12  WaveLAN 11abg Cardbus card (Model 1102) +		11c1 ab13  WaveLAN 11abg MiniPCI card (Model 0512) +		11c1 ab15  WaveLAN 11abg Cardbus card (Model 1106) +		11c1 ab16  WaveLAN 11abg MiniPCI card (Model 0516) +	ab20  ORiNOCO PCI Adapter +	ab21  Agere Wireless PCI Adapter +	ab30  Hermes2 Mini-PCI WaveLAN a/b/g +		14cd 2012  Hermes2 Mini-PCI WaveLAN a/b/g +	ed00  ET-131x PCI-E Ethernet Controller +	ed01  ET-131x PCI-E Ethernet Controller +11c2  Sand Microelectronics +11c3  NEC Corporation +11c4  Document Technologies, Inc +11c5  Shiva Corporation +11c6  Dainippon Screen Mfg. Co. Ltd +11c7  D.C.M. Data Systems +11c8  Dolphin Interconnect Solutions AS +	0658  PSB32 SCI-Adapter D31x +	d665  PSB64 SCI-Adapter D32x +	d667  PSB66 SCI-Adapter D33x +11c9  Magma +	0010  16-line serial port w/- DMA +	0011  4-line serial port w/- DMA +11ca  LSI Systems, Inc +11cb  Specialix Research Ltd. +	2000  PCI_9050 +		11cb 0200  SX +		11cb b008  I/O8+ +	4000  SUPI_1 +	8000  T225 +11cc  Michels & Kleberhoff Computer GmbH +11cd  HAL Computer Systems, Inc. +11ce  Netaccess +11cf  Pioneer Electronic Corporation +11d0  Lockheed Martin Federal Systems-Manassas +11d1  Auravision +	01f7  VxP524 +	01f9  VxP951 +11d2  Intercom Inc. +11d3  Trancell Systems Inc +11d4  Analog Devices +	1535  Blackfin BF535 processor +	1805  SM56 PCI modem +11d5  Ikon Corporation +	0115  10115 +	0117  10117 +11d6  Tekelec Telecom +11d7  Trenton Technology, Inc. +11d8  Image Technologies Development +11d9  TEC Corporation +11da  Novell +11db  Sega Enterprises Ltd +11dc  Questra Corporation +11dd  Crosfield Electronics Limited +11de  Zoran Corporation +	6017  miroVIDEO DC30 +	6057  ZR36057PQC Video cutting chipset +		1031 7efe  DC10 Plus +		1031 fc00  MiroVIDEO DC50, Motion JPEG Capture/CODEC Board +		12f8 8a02  Tekram Video Kit +		13ca 4231  JPEG/TV Card +	6120  ZR36120 +		1328 f001  Cinemaster C DVD Decoder +		13c2 0000  MediaFocus Satellite TV Card +		1de1 9fff  Video Kit C210 +11df  New Wave PDG +11e0  Cray Communications A/S +11e1  GEC Plessey Semi Inc. +11e2  Samsung Information Systems America +11e3  Quicklogic Corporation +	0001  COM-ON-AIR Dosch&Amand DECT +	0560  QL5064 Companion Design Demo Board +	5030  PC Watchdog +	8417  QL5064 [QuickPCI] PCI v2.2 bridge for SMT417 Dual TMS320C6416T PMC Module +11e4  Second Wave Inc +11e5  IIX Consulting +11e6  Mitsui-Zosen System Research +11e7  Toshiba America, Elec. Company +11e8  Digital Processing Systems Inc. +11e9  Highwater Designs Ltd. +11ea  Elsag Bailey +11eb  Formation Inc. +11ec  Coreco Inc +	000d  Oculus-F/64P +	1800  Cobra/C6 +11ed  Mediamatics +11ee  Dome Imaging Systems Inc +11ef  Nicolet Technologies B.V. +11f0  Compu-Shack +	4231  FDDI +	4232  FASTline UTP Quattro +	4233  FASTline FO +	4234  FASTline UTP +	4235  FASTline-II UTP +	4236  FASTline-II FO +	4731  GIGAline +11f1  Symbios Logic Inc +11f2  Picture Tel Japan K.K. +11f3  Keithley Metrabyte +	0011  KPCI-PIO24 +11f4  Kinetic Systems Corporation +	2915  CAMAC controller +11f5  Computing Devices International +11f6  Compex +	0112  ENet100VG4 +	0113  FreedomLine 100 +	1401  ReadyLink 2000 +	2011  RL100-ATX 10/100 +		11f6 2011  RL100-ATX +	2201  ReadyLink 100TX (Winbond W89C840) +		11f6 2011  ReadyLink 100TX +	9881  RL100TX Fast Ethernet +11f7  Scientific Atlanta +11f8  PMC-Sierra Inc. +	5220  BR522x [PMC-Sierra maxRAID SAS Controller] +	7364  PM7364 [FREEDM - 32 Frame Engine & Datalink Mgr] +	7375  PM7375 [LASAR-155 ATM SAR] +	7384  PM7384 [FREEDM - 84P672 Frm Engine & Datalink Mgr] +	8000  PM8000  [SPC - SAS Protocol Controller] +	8032  ATTO Celerity FC8xEN +		117c 003b  Celerity FC-82EN Fibre Channel Adapter +		117c 003c  Celerity FC-84EN Fibre Channel Adapter +11f9  I-Cube Inc +11fa  Kasan Electronics Company, Ltd. +11fb  Datel Inc +11fc  Silicon Magic +11fd  High Street Consultants +11fe  Comtrol Corporation +	0001  RocketPort 32 port w/external I/F +	0002  RocketPort 8 port w/external I/F +	0003  RocketPort 16 port w/external I/F +	0004  RocketPort 4 port w/quad cable +	0005  RocketPort 8 port w/octa cable +	0006  RocketPort 8 port w/RJ11 connectors +	0007  RocketPort 4 port w/RJ11 connectors +	0008  RocketPort 8 port w/ DB78 SNI (Siemens) connector +	0009  RocketPort 16 port w/ DB78 SNI (Siemens) connector +	000a  RocketPort Plus 4 port +	000b  RocketPort Plus 8 port +	000c  RocketModem 6 port +	000d  RocketModem 4-port +	000e  RocketPort Plus 2 port RS232 +	000f  RocketPort Plus 2 port RS422 +	0040  RocketPort Infinity Octa, 8port, RJ45 +	0041  RocketPort Infinity 32port, External Interface +	0042  RocketPort Infinity 8port, External Interface +	0043  RocketPort Infinity 16port, External Interface +	0044  RocketPort Infinity Quad, 4port, DB +	0045  RocketPort Infinity Octa, 8port, DB +	0047  RocketPort Infinity 4port, RJ45 +	004f  RocketPort Infinity 2port, SMPTE +	0052  RocketPort Infinity Octa, 8port, SMPTE +	0801  RocketPort UPCI 32 port w/external I/F +	0802  RocketPort UPCI 8 port w/external I/F +	0803  RocketPort UPCI 16 port w/external I/F +	0805  RocketPort UPCI 8 port w/octa cable +	080c  RocketModem III 8 port +	080d  RocketModem III 4 port +	0810  RocketPort UPCI Plus 4 port RS232 +	0811  RocketPort UPCI Plus 8 port RS232 +	0812  RocketPort UPCI Plus 8 port RS422 +	0903  RocketPort Compact PCI 16 port w/external I/F +	8015  RocketPort 4-port UART 16954 +11ff  Scion Corporation +	0003  AG-5 +1200  CSS Corporation +1201  Vista Controls Corp +1202  Network General Corp. +	4300  Gigabit Ethernet Adapter +		1202 9841  SK-9841 LX +		1202 9842  SK-9841 LX dual link +		1202 9843  SK-9843 SX +		1202 9844  SK-9843 SX dual link +1203  Bayer Corporation, Agfa Division +1204  Lattice Semiconductor Corporation +1205  Array Corporation +1206  Amdahl Corporation +1208  Parsytec GmbH +	4853  HS-Link Device +1209  SCI Systems Inc +120a  Synaptel +120b  Adaptive Solutions +120c  Technical Corp. +120d  Compression Labs, Inc. +120e  Cyclades Corporation +	0100  Cyclom-Y below first megabyte +	0101  Cyclom-Y above first megabyte +	0102  Cyclom-4Y below first megabyte +	0103  Cyclom-4Y above first megabyte +	0104  Cyclom-8Y below first megabyte +	0105  Cyclom-8Y above first megabyte +	0200  Cyclades-Z below first megabyte +	0201  Cyclades-Z above first megabyte +	0300  PC300/RSV or /X21 (2 ports) +	0301  PC300/RSV or /X21 (1 port) +	0310  PC300/TE (2 ports) +	0311  PC300/TE (1 port) +	0320  PC300/TE-M (2 ports) +	0321  PC300/TE-M (1 port) +	0400  PC400 +120f  Essential Communications +	0001  Roadrunner serial HIPPI +1210  Hyperparallel Technologies +1211  Braintech Inc +1212  Kingston Technology Corp. +1213  Applied Intelligent Systems, Inc. +1214  Performance Technologies, Inc. +1215  Interware Co., Ltd +1216  Purup Prepress A/S +1217  O2 Micro, Inc. +	00f7  Firewire (IEEE 1394) +		1071 8209  Medion MIM 2240 Notebook PC [MD98100] +		1179 ff50  Satellite P305D-S8995E +	10f7  1394 OHCI Compliant Host Controller +	11f7  OZ600 1394a-2000 Controller +		1028 04a3  Precision M4600 +	13f7  1394 OHCI Compliant Host Controller +	6729  OZ6729 +	673a  OZ6730 +	6832  OZ6832/6833 CardBus Controller +	6836  OZ6836/6860 CardBus Controller +	6872  OZ6812 CardBus Controller +	6925  OZ6922 CardBus Controller +	6933  OZ6933/711E1 CardBus/SmartCardBus Controller +		1025 1016  Travelmate 612 TX +	6972  OZ601/6912/711E0 CardBus/SmartCardBus Controller +		1014 020c  ThinkPad R30 +		1028 0152  Latitude D500 +		1179 0001  Magnia Z310 +	7110  OZ711Mx 4-in-1 MemoryCardBus Accelerator +		103c 088c  NC8000 laptop +		103c 0890  NC6000 laptop +		1734 106c  Amilo A1645 +	7112  OZ711EC1/M1 SmartCardBus/MemoryCardBus Controller +	7113  OZ711EC1 SmartCardBus Controller +		1025 0035  TravelMate 660 +	7114  OZ711M1/MC1 4-in-1 MemoryCardBus Controller +	7120  Integrated MMC/SD Controller +		1071 8209  Medion MIM 2240 Notebook PC [MD98100] +		1179 ff50  Satellite P305D-S8995E +	7130  Integrated MS/xD Controller +		1071 8209  Medion MIM 2240 Notebook PC [MD98100] +		1179 ff50  Satellite P305D-S8995E +	7134  OZ711MP1/MS1 MemoryCardBus Controller +	7135  Cardbus bridge +	7136  OZ711SP1 Memory CardBus Controller +	71e2  OZ711E2 SmartCardBus Controller +	7212  OZ711M2 4-in-1 MemoryCardBus Controller +	7213  OZ6933E CardBus Controller +	7223  OZ711M3/MC3 4-in-1 MemoryCardBus Controller +		103c 088c  NC8000 laptop +		103c 0890  NC6000 laptop +		10cf 11c4  Lifebook P5020D Laptop +	7233  OZ711MP3/MS3 4-in-1 MemoryCardBus Controller +	8120  Integrated MMC/SD Controller +	8130  Integrated MS/MSPRO/xD Controller +	8220  OZ600FJ1/OZ900FJ1 SD/MMC Card Reader Controller +	8221  OZ600FJ0/OZ900FJ0/OZ600FJS SD/MMC Card Reader Controller +	8320  OZ600RJ1/OZ900RJ1 SD/MMC Card Reader Controller +		1028 04a3  Precision M4600 +	8321  OZ600RJ0/OZ900RJ0/OZ600RJS SD/MMC Card Reader Controller +	8330  OZ600 MS/xD Controller +		1028 04a3  Precision M4600 +	8331  O2 Flash Memory Card +	8520  SD/MMC Card Reader Controller +1218  Hybricon Corp. +1219  First Virtual Corporation +121a  3Dfx Interactive, Inc. +	0001  Voodoo +	0002  Voodoo 2 +	0003  Voodoo Banshee +		1092 0003  Monster Fusion +		1092 4000  Monster Fusion +		1092 4002  Monster Fusion +		1092 4801  Monster Fusion AGP +		1092 4803  Monster Fusion AGP +		1092 8030  Monster Fusion +		1092 8035  Monster Fusion AGP +		10b0 0001  Dragon 4000 +		1102 1017  3D Blaster Banshee PCI (CT6760) +		1102 1018  3D Blaster Banshee VE +		121a 0001  Voodoo Banshee AGP +		121a 0003  Voodoo Banshee AGP SGRAM +		121a 0004  Voodoo Banshee +		139c 0016  Raven +		139c 0017  Raven +		14af 0002  Maxi Gamer Phoenix +	0004  Voodoo Banshee [Velocity 100] +	0005  Voodoo 3 +		121a 0004  Voodoo3 AGP +		121a 0030  Voodoo3 AGP +		121a 0031  Voodoo3 AGP +		121a 0034  Voodoo3 AGP +		121a 0036  Voodoo3 2000 PCI +		121a 0037  Voodoo3 AGP +		121a 0038  Voodoo3 AGP +		121a 003a  Voodoo3 AGP +		121a 0044  Voodoo3 +		121a 004b  Velocity 100 +		121a 004c  Velocity 200 +		121a 004d  Voodoo3 AGP +		121a 004e  Voodoo3 AGP +		121a 0051  Voodoo3 AGP +		121a 0052  Voodoo3 AGP +		121a 0057  Voodoo3 3000 PCI +		121a 0060  Voodoo3 3500 TV (NTSC) +		121a 0061  Voodoo3 3500 TV (PAL) +		121a 0062  Voodoo3 3500 TV (SECAM) +	0009  Voodoo 4 / Voodoo 5 +		121a 0003  Voodoo5 PCI 5500 +		121a 0009  Voodoo5 AGP 5500/6000 +	0057  Voodoo 3/3000 [Avenger] +121b  Advanced Telecommunications Modules +121c  Nippon Texaco., Ltd +121d  LiPPERT ADLINK Technology GmbH +121e  CSPI +	0201  Myrinet 2000 Scalable Cluster Interconnect +121f  Arcus Technology, Inc. +1220  Ariel Corporation +	1220  AMCC 5933 TMS320C80 DSP/Imaging board +1221  Contec Co., Ltd +	9172  PO-64L(PCI)H [Isolated Digital Output Board for PCI] +	91a2  PO-32L(PCI)H [Isolated Digital Output Board for PCI] +	91c3  DA16-16(LPCI)L [Un-insulated highly precise analog output board for Low Profile PCI] +	b152  DIO-96D2-LPCI +	c103  ADA16-32/2(PCI)F [High-Speed Analog I/O Board for PCI] +1222  Ancor Communications, Inc. +1223  Artesyn Communication Products +	0003  PM/Link +	0004  PM/T1 +	0005  PM/E1 +	0008  PM/SLS +	0009  BajaSpan Resource Target +	000a  BajaSpan Section 0 +	000b  BajaSpan Section 1 +	000c  BajaSpan Section 2 +	000d  BajaSpan Section 3 +	000e  PM/PPC +1224  Interactive Images +1225  Power I/O, Inc. +1227  Tech-Source +	0006  Raptor GFX 8P +	0023  Raptor GFX [1100T] +	0045  Raptor 4000-L [Linux version] +	004a  Raptor 4000-LR-L [Linux version] +1228  Norsk Elektro Optikk A/S +1229  Data Kinesis Inc. +122a  Integrated Telecom +122b  LG Industrial Systems Co., Ltd +122c  Sican GmbH +122d  Aztech System Ltd +	1206  368DSP +	1400  Trident PCI288-Q3DII (NX) +	50dc  3328 Audio +		122d 0001  3328 Audio +	80da  3328 Audio +		122d 0001  3328 Audio +122e  Xyratex +	7722  Napatech XL1 +	7724  Napatech XL2/XA +	7729  Napatech XD +122f  Andrew Corporation +1230  Fishcamp Engineering +1231  Woodward McCoach, Inc. +	04e1  Desktop PCI Telephony 4 +	05e1  Desktop PCI Telephony 5/6 +	0d00  LightParser +	0d02  LightParser 2 +	0d13  Desktop PCI L1/L3 Telephony +1232  GPT Limited +1233  Bus-Tech, Inc. +1235  Risq Modular Systems, Inc. +1236  Sigma Designs Corporation +	0000  RealMagic64/GX +	6401  REALmagic 64/GX (SD 6425) +1237  Alta Technology Corporation +1238  Adtran +1239  3DO Company +123a  Visicom Laboratories, Inc. +123b  Seeq Technology, Inc. +123c  Century Systems, Inc. +123d  Engineering Design Team, Inc. +	0000  EasyConnect 8/32 +	0002  EasyConnect 8/64 +	0003  EasyIO +123e  Simutech, Inc. +# nee C-Cube Microsystems / acquired by Magnum Semiconductor +123f  LSI Logic +	00e4  MPEG +	8120  DVxplore Codec +		10de 01e1  NVTV PAL +		10de 01e2  NVTV NTSC +		10de 01e3  NVTV PAL +		10de 0248  NVTV NTSC +		10de 0249  NVTV PAL +		11bd 0006  DV500 E4 +		11bd 000a  DV500 E4 +		11bd 000f  DV500 E4 +		1809 0016  Emuzed MAUI-III PCI PVR FM TV +	8888  Cinemaster C 3.0 DVD Decoder +		1002 0001  Cinemaster C 3.0 DVD Decoder +		1002 0002  Cinemaster C 3.0 DVD Decoder +		1328 0001  Cinemaster C 3.0 DVD Decoder +1240  Marathon Technologies Corp. +1241  DSC Communications +# Formerly Jaycor Networks, Inc. +1242  JNI Corporation +	1560  JNIC-1560 PCI-X Fibre Channel Controller +		1242 6562  FCX2-6562 Dual Channel PCI-X Fibre Channel Adapter +		1242 656a  FCX-6562 PCI-X Fibre Channel Adapter +	4643  FCI-1063 Fibre Channel Adapter +	6562  FCX2-6562 Dual Channel PCI-X Fibre Channel Adapter +	656a  FCX-6562 PCI-X Fibre Channel Adapter +1243  Delphax +# Audio-Visuelles Marketing und Computersysteme +1244  AVM GmbH +	0700  B1 ISDN +	0800  C4 ISDN +	0a00  A1 ISDN [Fritz] +		1244 0a00  FRITZ!Card ISDN Controller +	0e00  Fritz!PCI v2.0 ISDN +	1100  C2 ISDN +	1200  T1 ISDN +	2700  Fritz!Card DSL SL +	2900  Fritz!Card DSL v2.0 +1245  A.P.D., S.A. +1246  Dipix Technologies, Inc. +1247  Xylon Research, Inc. +1248  Central Data Corporation +1249  Samsung Electronics Co., Ltd. +124a  AEG Electrocom GmbH +124b  SBS/Greenspring Modular I/O +	0040  PCI-40A or cPCI-200 Quad IndustryPack carrier +		124b 9080  PCI9080 Bridge +124c  Solitron Technologies, Inc. +124d  Stallion Technologies, Inc. +	0000  EasyConnection 8/32 +	0002  EasyConnection 8/64 +	0003  EasyIO +	0004  EasyConnection/RA +124e  Cylink +124f  Infortrend Technology, Inc. +	0041  IFT-2000 Series RAID Controller +1250  Hitachi Microcomputer System Ltd +1251  VLSI Solutions Oy +1253  Guzik Technical Enterprises +1254  Linear Systems Ltd. +	0065  DVB Master FD +	007c  DVB Master Quad/o +1255  Optibase Ltd +	1110  MPEG Forge +	1210  MPEG Fusion +	2110  VideoPlex +	2120  VideoPlex CC +	2130  VideoQuest +1256  Perceptive Solutions, Inc. +	4201  PCI-2220I +	4401  PCI-2240I +	5201  PCI-2000 +1257  Vertex Networks, Inc. +1258  Gilbarco, Inc. +# nee Allied Telesyn International +1259  Allied Telesis +	2560  AT-2560 Fast Ethernet Adapter (i82557B) +	2801  AT-2801FX (RTL-8139) +	a117  RTL81xx Fast Ethernet +	a11e  RTL81xx Fast Ethernet +	a120  21x4x DEC-Tulip compatible 10/100 Ethernet +125a  ABB Power Systems +125b  Asix Electronics Corporation +	1400  AX88141 Fast Ethernet Controller +		1186 1100  AX8814X Based PCI Fast Ethernet Adapter +125c  Aurora Technologies, Inc. +	0101  Saturn 4520P +	0640  Aries 16000P +125d  ESS Technology +	0000  ES336H Fax Modem (Early Model) +	1948  ES1948 Maestro-1 +	1968  ES1968 Maestro 2 +		1028 0085  ES1968 Maestro-2 PCI +		1033 8051  ES1968 Maestro-2 Audiodrive +	1969  ES1938/ES1946/ES1969 Solo-1 Audiodrive +		1014 0166  ES1969 SOLO-1 AudioDrive on IBM Aptiva Mainboard +		125d 8888  Solo-1 Audio Adapter +		153b 111b  Terratec 128i PCI +	1978  ES1978 Maestro 2E +		0e11 b112  Armada M700/E500 +		1033 803c  ES1978 Maestro-2E Audiodrive +		1033 8058  ES1978 Maestro-2E Audiodrive +		1092 4000  Monster Sound MX400 +		1179 0001  ES1978 Maestro-2E Audiodrive +	1988  ES1988 Allegro-1 +		0e11 0098  Evo N600c +		1092 4100  Sonic Impact S100 +		125d 0431  Allegro AudioDrive +		125d 1988  ESS Allegro-1 Audiodrive +		125d 1998  Allegro AudioDrive +		125d 1999  Allegro-1 AudioDrive +	1989  ESS Modem +		125d 1989  ESS Modem +	1998  ES1983S Maestro-3i PCI Audio Accelerator +		1028 00b1  Latitude C600 +		1028 00e5  Latitude C810 +		1028 00e6  ES1983S Maestro-3i (Dell Inspiron 8100) +	1999  ES1983S Maestro-3i PCI Modem Accelerator +	199a  ES1983S Maestro-3i PCI Audio Accelerator +	199b  ES1983S Maestro-3i PCI Modem Accelerator +	2808  ES336H Fax Modem (Later Model) +	2838  ES2838/2839 SuperLink Modem +	2898  ES2898 Modem +		125d 0424  ES56-PI Data Fax Modem +		125d 0425  ES56T-PI Data Fax Modem +		125d 0426  ES56V-PI Data Fax Modem +		125d 0427  VW-PI Data Fax Modem +		125d 0428  ES56ST-PI Data Fax Modem +		125d 0429  ES56SV-PI Data Fax Modem +		147a c001  ES56-PI Data Fax Modem +		148d 1030  HCF WV-PI56 [ESS ES56-PI Data Fax Modem] +		14fe 0428  ES56-PI Data Fax Modem +		14fe 0429  ES56-PI Data Fax Modem +125e  Specialvideo Engineering SRL +125f  Concurrent Technologies, Inc. +1260  Intersil Corporation +	3872  ISL3872 [Prism 3] +		1468 0202  LAN-Express IEEE 802.11b Wireless LAN +	3873  ISL3874 [Prism 2.5]/ISL3872 [Prism 3] +		10cf 1169  MBH7WM01-8734 802.11b Wireless Mini PCI Card [ISL3874] +		1186 3501  DWL-520 Wireless PCI Adapter (rev A or B) [ISL3874] +		1186 3700  DWL-520 Wireless PCI Adapter (rev E1) [ISL3872] +		1385 4105  MA311 802.11b wireless adapter [ISL3874] +		1668 0414  HWP01170-01 802.11b PCI Wireless Adapter +		16a5 1601  AIR.mate PC-400 PCI Wireless LAN Adapter +		1737 3874  WMP11 v1 802.11b Wireless-B PCI Adapter [ISL3874] +		4033 7033  PCW200 802.11b Wireless PCI Adapter [ISL3874] +		8086 2510  M3AWEB Wireless 802.11b MiniPCI Adapter +		8086 2513  Wireless 802.11b MiniPCI Adapter +	3877  ISL3877 [Prism Indigo] +	3886  ISL3886 [Prism Javelin/Prism Xbow] +		17cf 0037  XG-901 and clones Wireless Adapter +	3890  ISL3890 [Prism GT/Prism Duette]/ISL3886 [Prism Javelin/Prism Xbow] +		10b8 2802  SMC2802W V1 Wireless PCI Adapter [ISL3890] +		10b8 2835  SMC2835W Wireless Cardbus Adapter +		10b8 a835  SMC2835W V2 Wireless Cardbus Adapter +		1113 4203  WN4201B +		1113 8201  T-Com T-Sinus 154pcicard Wireless PCI Adapter +		1113 b301  T-Sinus 154card Cardbus +		1113 ee03  SMC2802W V2 Wireless PCI Adapter [ISL3886] +		1113 ee08  SMC2835W V3 EU Wireless Cardbus Adapter +		1186 3202  DWL-G650 A1 Wireless Adapter +		1259 c104  CG-WLCB54GT Wireless Adapter +		1260 0000  WG511 v1 54 Mbps Wireless PC Card +		1385 4800  WG511 v2/v3 54 Mbps Wireless PC Card +		16a5 1605  ALLNET ALL0271 Wireless PCI Adapter +		17cf 0014  XG-600 and clones Wireless Adapter +		17cf 0020  XG-900 and clones Wireless Adapter +		187e 3403  G-110 802.11g Wireless Cardbus Adapter +	8130  HMP8130 NTSC/PAL Video Decoder +	8131  HMP8131 NTSC/PAL Video Decoder +# This is probably more likely a HW fault, but I am keeping it for now --mj +	ffff  ISL3886IK +		1260 0000  Senao 3054MP+ (J) mini-PCI WLAN 802.11g adapter +1261  Matsushita-Kotobuki Electronics Industries, Ltd. +1262  ES Computer Company, Ltd. +1263  Sonic Solutions +1264  Aval Nagasaki Corporation +1265  Casio Computer Co., Ltd. +1266  Microdyne Corporation +	0001  NE10/100 Adapter (i82557B) +	1910  NE2000Plus (RT8029) Ethernet Adapter +		1266 1910  NE2000Plus Ethernet Adapter +1267  S. A. Telecommunications +	5352  PCR2101 +	5a4b  Telsat Turbo +1268  Tektronix +1269  Thomson-CSF/TTM +126a  Lexmark International, Inc. +126b  Adax, Inc. +126c  Northern Telecom +	1211  10/100BaseTX [RTL81xx] +	126c  802.11b Wireless Ethernet Adapter +126d  Splash Technology, Inc. +126e  Sumitomo Metal Industries, Ltd. +126f  Silicon Motion, Inc. +	0501  SM501 VoyagerGX Rev. AA +	0510  SM501 VoyagerGX Rev. B +	0710  SM710 LynxEM +	0712  SM712 LynxEM+ +	0718  SM718 LynxSE+ +	0720  SM720 Lynx3DM +	0730  SM731 Cougar3DR +	0810  SM810 LynxE +	0811  SM811 LynxE +	0820  SM820 Lynx3D +	0910  SM910 +1270  Olympus Optical Co., Ltd. +1271  GW Instruments +1272  Telematics International +1273  Hughes Network Systems +	0002  DirecPC +1274  Ensoniq +	1171  ES1373 [AudioPCI] (also Creative Labs CT5803) +	1371  ES1371 / Creative Labs CT2518 [AudioPCI-97] +		0e11 0024  AudioPCI on Motherboard Compaq Deskpro +		0e11 b1a7  ES1371, ES1373 AudioPCI +		1033 80ac  ES1371, ES1373 AudioPCI +		1042 1854  Tazer +		107b 8054  Tabor2 +		1274 1371  AudioPCI 64V/128 / Creative Sound Blaster CT4810 +		1274 8001  CT4751 board +		1462 6470  ES1371, ES1373 AudioPCI On Motherboard MS-6147 1.1A +		1462 6560  ES1371, ES1373 AudioPCI On Motherboard MS-6156 1.10 +		1462 6630  ES1371, ES1373 AudioPCI On Motherboard MS-6163BX 1.0A +		1462 6631  ES1371, ES1373 AudioPCI On Motherboard MS-6163VIA 1.0A +		1462 6632  ES1371, ES1373 AudioPCI On Motherboard MS-6163BX 2.0A +		1462 6633  ES1371, ES1373 AudioPCI On Motherboard MS-6163VIA 2.0A +		1462 6820  ES1371, ES1373 AudioPCI On Motherboard MS-6182 1.00 +		1462 6822  ES1371, ES1373 AudioPCI On Motherboard MS-6182 1.00A +		1462 6830  ES1371, ES1373 AudioPCI On Motherboard MS-6183 1.00 +		1462 6880  ES1371, ES1373 AudioPCI On Motherboard MS-6188 1.00 +		1462 6900  ES1371, ES1373 AudioPCI On Motherboard MS-6190 1.00 +		1462 6910  ES1371, ES1373 AudioPCI On Motherboard MS-6191 +		1462 6930  ES1371, ES1373 AudioPCI On Motherboard MS-6193 +		1462 6990  ES1371, ES1373 AudioPCI On Motherboard MS-6199BX 2.0A +		1462 6991  ES1371, ES1373 AudioPCI On Motherboard MS-6199VIA 2.0A +		14a4 2077  ES1371, ES1373 AudioPCI On Motherboard KR639 +		14a4 2105  ES1371, ES1373 AudioPCI On Motherboard MR800 +		14a4 2107  ES1371, ES1373 AudioPCI On Motherboard MR801 +		14a4 2172  ES1371, ES1373 AudioPCI On Motherboard DR739 +		1509 9902  ES1371, ES1373 AudioPCI On Motherboard KW11 +		1509 9903  ES1371, ES1373 AudioPCI On Motherboard KW31 +		1509 9904  ES1371, ES1373 AudioPCI On Motherboard KA11 +		1509 9905  ES1371, ES1373 AudioPCI On Motherboard KC13 +		152d 8801  ES1371, ES1373 AudioPCI On Motherboard CP810E +		152d 8802  ES1371, ES1373 AudioPCI On Motherboard CP810 +		152d 8803  ES1371, ES1373 AudioPCI On Motherboard P3810E +		152d 8804  ES1371, ES1373 AudioPCI On Motherboard P3810-S +		152d 8805  ES1371, ES1373 AudioPCI On Motherboard P3820-S +		270f 2001  ES1371, ES1373 AudioPCI On Motherboard 6CTR +		270f 2200  ES1371, ES1373 AudioPCI On Motherboard 6WTX +		270f 3000  ES1371, ES1373 AudioPCI On Motherboard 6WSV +		270f 3100  ES1371, ES1373 AudioPCI On Motherboard 6WIV2 +		270f 3102  ES1371, ES1373 AudioPCI On Motherboard 6WIV +		270f 7060  ES1371, ES1373 AudioPCI On Motherboard 6ASA2 +		8086 4249  ES1371, ES1373 AudioPCI On Motherboard BI440ZX +		8086 424c  ES1371, ES1373 AudioPCI On Motherboard BL440ZX +		8086 425a  ES1371, ES1373 AudioPCI On Motherboard BZ440ZX +		8086 4341  ES1371, ES1373 AudioPCI On Motherboard Cayman +		8086 4343  ES1371, ES1373 AudioPCI On Motherboard Cape Cod +		8086 4541  D815EEA Motherboard +		8086 4649  ES1371, ES1373 AudioPCI On Motherboard Fire Island +		8086 464a  ES1371, ES1373 AudioPCI On Motherboard FJ440ZX +		8086 4d4f  ES1371, ES1373 AudioPCI On Motherboard Montreal +		8086 4f43  ES1371, ES1373 AudioPCI On Motherboard OC440LX +		8086 5243  ES1371, ES1373 AudioPCI On Motherboard RC440BX +		8086 5352  ES1371, ES1373 AudioPCI On Motherboard SunRiver +		8086 5643  ES1371, ES1373 AudioPCI On Motherboard Vancouver +		8086 5753  ES1371, ES1373 AudioPCI On Motherboard WS440BX +	5000  ES1370 [AudioPCI] +	5880  5880B [AudioPCI] +		1274 2000  Creative Sound Blaster AudioPCI128 +		1274 2003  Creative SoundBlaster AudioPCI 128 +		1274 5880  Creative Sound Blaster AudioPCI128 +		1274 8001  Sound Blaster 16PCI 4.1ch +		1458 a000  5880 AudioPCI On Motherboard 6OXET +		1462 6880  5880 AudioPCI On Motherboard MS-6188 1.00 +		270f 2001  5880 AudioPCI On Motherboard 6CTR +		270f 2200  5880 AudioPCI On Motherboard 6WTX +		270f 7040  5880 AudioPCI On Motherboard 6ATA4 +	8001  CT5880 [AudioPCI] +	8002  5880A [AudioPCI] +1275  Network Appliance Corporation +1276  Switched Network Technologies, Inc. +1277  Comstream +1278  Transtech Parallel Systems Ltd. +	0701  TPE3/TM3 PowerPC Node +	0710  TPE5 PowerPC PCI board +	1100  PMC-FPGA02 +	1101  TS-C43 card with 4 ADSP-TS101 processors +1279  Transmeta Corporation +	0060  TM8000 Northbridge +	0061  TM8000 AGP bridge +	0295  Northbridge +	0395  LongRun Northbridge +	0396  SDRAM controller +	0397  BIOS scratchpad +127a  Rockwell International +	1002  HCF 56k Data/Fax Modem +		1092 094c  SupraExpress 56i PRO [Diamond SUP2380] +		122d 4002  HPG / MDP3858-U +		122d 4005  MDP3858-E +		122d 4007  MDP3858-A/-NZ +		122d 4012  MDP3858-SA +		122d 4017  MDP3858-W +		122d 4018  MDP3858-W +		127a 1002  Rockwell 56K D/F HCF Modem +	1003  HCF 56k Data/Fax Modem +		0e11 b0bc  229-DF Zephyr +		0e11 b114  229-DF Cheetah +		1033 802b  229-DF +		13df 1003  PCI56RX Modem +		13e0 0117  IBM +		13e0 0147  IBM F-1156IV+/R3 Spain V.90 Modem +		13e0 0197  IBM +		13e0 01c7  IBM F-1156IV+/R3 WW V.90 Modem +		13e0 01f7  IBM +		1436 1003  IBM +		1436 1103  IBM 5614PM3G V.90 Modem +		1436 1602  Compaq 229-DF Ducati +	1004  HCF 56k Data/Fax/Voice Modem +		1048 1500  MicroLink 56k Modem +		10cf 1059  Fujitsu 229-DFRT +	1005  HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem +		1005 127a  AOpen FM56-P +		1033 8029  229-DFSV +		1033 8054  Modem +		10cf 103c  Fujitsu +		10cf 1055  Fujitsu 229-DFSV +		10cf 1056  Fujitsu 229-DFSV +		122d 4003  MDP3858SP-U +		122d 4006  Packard Bell MDP3858V-E +		122d 4008  MDP3858SP-A/SP-NZ +		122d 4009  MDP3858SP-E +		122d 4010  MDP3858V-U +		122d 4011  MDP3858SP-SA +		122d 4013  MDP3858V-A/V-NZ +		122d 4015  MDP3858SP-W +		122d 4016  MDP3858V-W +		122d 4019  MDP3858V-SA +		13df 1005  PCI56RVP Modem +		13e0 0187  IBM +		13e0 01a7  IBM +		13e0 01b7  IBM DF-1156IV+/R3 Spain V.90 Modem +		13e0 01d7  IBM DF-1156IV+/R3 WW V.90 Modem +		1436 1005  IBM +		1436 1105  IBM +		1437 1105  IBM 5614PS3G V.90 Modem +	1022  HCF 56k Modem +		1436 1303  M3-5614PM3G V.90 Modem +	1023  HCF 56k Data/Fax Modem +		122d 4020  Packard Bell MDP3858-WE +		122d 4023  MDP3858-UE +		13e0 0247  IBM F-1156IV+/R6 Spain V.90 Modem +		13e0 0297  IBM +		13e0 02c7  IBM F-1156IV+/R6 WW V.90 Modem +		1436 1203  IBM +		1436 1303  IBM +	1024  HCF 56k Data/Fax/Voice Modem +	1025  HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem +		10cf 106a  Fujitsu 235-DFSV +		122d 4021  Packard Bell MDP3858V-WE +		122d 4022  MDP3858SP-WE +		122d 4024  MDP3858V-UE +		122d 4025  MDP3858SP-UE +	1026  HCF 56k PCI Speakerphone Modem +	1032  HCF 56k Modem +	1033  HCF 56k Modem +	1034  HCF 56k Modem +	1035  HCF 56k PCI Speakerphone Modem +	1036  HCF 56k Modem +	1085  HCF 56k Volcano PCI Modem +	2004  HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem +	2005  HCF 56k Data/Fax Modem +		104d 8044  229-DFSV +		104d 8045  229-DFSV +		104d 8055  PBE/Aztech 235W-DFSV +		104d 8056  235-DFSV +		104d 805a  Modem +		104d 805f  Modem +		104d 8074  Modem +	2013  HSF 56k Data/Fax Modem +		1179 0001  Modem +		1179 ff00  Modem +	2014  HSF 56k Data/Fax/Voice Modem +		10cf 1057  Fujitsu Citicorp III +		122d 4050  MSP3880-U +		122d 4055  MSP3880-W +	2015  HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem +		10cf 1063  Fujitsu +		10cf 1064  Fujitsu +		1468 2015  Fujitsu +	2016  HSF 56k Data/Fax/Voice/Spkp Modem +		122d 4051  MSP3880V-W +		122d 4052  MSP3880SP-W +		122d 4054  MSP3880V-U +		122d 4056  MSP3880SP-U +		122d 4057  MSP3880SP-A +	4311  Riptide HSF 56k PCI Modem +		127a 4311  Ring Modular? Riptide HSF RT HP Dom +		13e0 0210  HP-GVC +	4320  Riptide PCI Audio Controller +		1235 4320  Riptide PCI Audio Controller +	4321  Riptide HCF 56k PCI Modem +		1235 4321  Hewlett Packard DF +		1235 4324  Hewlett Packard DF +		13e0 0210  Hewlett Packard DF +		144d 2321  Riptide +	4322  Riptide PCI Game Controller +		1235 4322  Riptide PCI Game Controller +	8234  RapidFire 616X ATM155 Adapter +		108d 0022  RapidFire 616X ATM155 Adapter +		108d 0027  RapidFire 616X ATM155 Adapter +127b  Pixera Corporation +127c  Crosspoint Solutions, Inc. +127d  Vela Research +127e  Winnov, L.P. +	0010  Videum 1000 Plus +127f  Fujifilm +1280  Photoscript Group Ltd. +1281  Yokogawa Electric Corporation +1282  Davicom Semiconductor, Inc. +	6585  DM562P V90 Modem +	9009  Ethernet 100/10 MBit +	9100  21x4x DEC-Tulip compatible 10/100 Ethernet +	9102  21x4x DEC-Tulip compatible 10/100 Ethernet +# Subsystem ID is main ID reveresed. +		0291 8212  DM9102A (DM9102AE, SM9102AF) Ethernet 100/10 MBit +	9132  Ethernet 100/10 MBit +1283  Integrated Technology Express, Inc. +	673a  IT8330G +	8152  IT8152F/G Advanced RISC-to-PCI Companion Chip +	8211  ITE 8211F Single Channel UDMA 133 +		1043 8138  P5GD1-VW Mainboard +	8212  IT8212 Dual channel ATA RAID controller +		1283 0001  IT/ITE8212 Dual channel ATA RAID controller +	8213  IT8213 IDE Controller +		1458 b000  GA-EG45M-DS2H Mainboard +	8330  IT8330G +	8872  IT8874F PCI Dual Serial Port Controller +	8888  IT8888F/G PCI to ISA Bridge with SMB [Golden Gate] +	8889  IT8889F PCI to ISA Bridge +	e886  IT8330G +1284  Sahara Networks, Inc. +1285  Platform Technologies, Inc. +	0100  AGOGO sound chip (aka ESS Maestro 1) +1286  Mazet GmbH +1287  M-Pact, Inc. +	001e  LS220D DVD Decoder +	001f  LS220C DVD Decoder +1288  Timestep Corporation +1289  AVC Technology, Inc. +128a  Asante Technologies, Inc. +128b  Transwitch Corporation +128c  Retix Corporation +128d  G2 Networks, Inc. +	0021  ATM155 Adapter +128e  Hoontech Corporation/Samho Multi Tech Ltd. +	0008  ST128 WSS/SB +	0009  ST128 SAM9407 +	000a  ST128 Game Port +	000b  ST128 MPU Port +	000c  ST128 Ctrl Port +128f  Tateno Dennou, Inc. +1290  Sord Computer Corporation +1291  NCS Computer Italia +1292  Tritech Microelectronics Inc +	fc02  Pyramid3D TR25202 +1293  Media Reality Technology +1294  Rhetorex, Inc. +1295  Imagenation Corporation +	0800  PXR800 +	1000  PXD1000 +1296  Kofax Image Products +1297  Holco Enterprise Co, Ltd/Shuttle Computer +1298  Spellcaster Telecommunications Inc. +1299  Knowledge Technology Lab. +129a  VMetro, inc. +	0615  PBT-615 PCI-X Bus Analyzer +	1100  PMC-FPGA05 +	1106  XMC-FPGA05F, PCI interface +	1107  XMC-FPGA05F, PCIe interface +	1108  XMC-FPGA05D, PCI interface +	1109  XMC-FPGA05D, PCIe interface +129b  Image Access +129c  Jaycor +129d  Compcore Multimedia, Inc. +129e  Victor Company of Japan, Ltd. +129f  OEC Medical Systems, Inc. +12a0  Allen-Bradley Company +12a1  Simpact Associates, Inc. +12a2  Newgen Systems Corporation +12a3  Lucent Technologies +	8105  T8105 H100 Digital Switch +12a4  NTT Electronics Technology Company +12a5  Vision Dynamics Ltd. +12a6  Scalable Networks, Inc. +12a7  AMO GmbH +12a8  News Datacom +12a9  Xiotech Corporation +12aa  SDL Communications, Inc. +12ab  Yuan Yuan Enterprise Co., Ltd. +	0000  MPG160/Kuroutoshikou ITVC15-STVLP +	0002  AU8830 [Vortex2] Based Sound Card With A3D Support +	0003  T507 (DVB-T) TV tuner/capture device +	2300  Club-3D Zap TV2100 +	3000  MPG-200C PCI DVD Decoder Card +	4789  MPC788 MiniPCI Hybrid TV Tuner +	fff3  MPG600/Kuroutoshikou ITVC16-STVLP +	ffff  MPG600/Kuroutoshikou ITVC16-STVLP +12ac  Measurex Corporation +12ad  Multidata GmbH +12ae  Alteon Networks Inc. +	0001  AceNIC Gigabit Ethernet +		1014 0104  Gigabit Ethernet-SX PCI Adapter +		12ae 0001  Gigabit Ethernet-SX (Universal) +	0002  AceNIC Gigabit Ethernet (Copper) +		10a9 8002  Acenic Gigabit Ethernet +		12ae 0002  Gigabit Ethernet-T (3C986-T) +	00fa  Farallon PN9100-T Gigabit Ethernet +12af  TDK USA Corp +12b0  Jorge Scientific Corp +12b1  GammaLink +12b2  General Signal Networks +12b3  Inter-Face Co Ltd +12b4  FutureTel Inc +12b5  Granite Systems Inc. +12b6  Natural Microsystems +12b7  Cognex Modular Vision Systems Div. - Acumen Inc. +12b8  Korg +# Nee US Robotics +12b9  3Com Corp, Modem Division +	1006  WinModem +		12b9 005c  USR 56k Internal Voice WinModem (Model 3472) +		12b9 005e  USR 56k Internal WinModem (Models 662975) +		12b9 0062  USR 56k Internal Voice WinModem (Model 662978) +		12b9 0068  USR 56k Internal Voice WinModem (Model 5690) +		12b9 007a  USR 56k Internal Voice WinModem (Model 662974) +		12b9 007f  USR 56k Internal WinModem (Models 5698, 5699) +		12b9 0080  USR 56k Internal WinModem (Models 2975, 3528) +		12b9 0081  USR 56k Internal Voice WinModem (Models 2974, 3529) +		12b9 0091  USR 56k Internal Voice WinModem (Model 2978) +	1007  USR 56k Internal WinModem +		12b9 00a3  USR 56k Internal WinModem (Model 3595) +		12b9 00c4  U.S. Robotics V.92 Voice Faxmodem (2884A/B/C) +	1008  56K FaxModem Model 5610 +		12b9 00a2  USR 56k Internal FAX Modem (Model 2977) +		12b9 00aa  USR 56k Internal Voice Modem (Model 2976) +		12b9 00ab  USR 56k Internal Voice Modem (Model 5609) +		12b9 00ac  USR 56k Internal Voice Modem (Model 3298) +		12b9 00ad  USR 56k Internal FAX Modem (Model 5610) +		12b9 00d3  USR 56K Internal V92 FAX Modem (Model 5610) +		12b9 baba  USR 56K Internal Voice Modem 3CP3298-DEL (Model 5601) [Hawk] +12ba  BittWare, Inc. +12bb  Nippon Unisoft Corporation +12bc  Array Microsystems +12bd  Computerm Corp. +12be  Anchor Chips Inc. +	3041  AN3041Q CO-MEM +	3042  AN3042Q CO-MEM Lite +		12be 3042  Anchor Chips Lite Evaluation Board +12bf  Fujifilm Microdevices +12c0  Infimed +12c1  GMM Research Corp +12c2  Mentec Limited +12c3  Holtek Microelectronics Inc +	0058  PCI NE2K Ethernet +	5598  PCI NE2K Ethernet +12c4  Connect Tech Inc +	0001  Blue HEAT/PCI 8 (RS232/CL/RJ11) +	0002  Blue HEAT/PCI 4 (RS232) +	0003  Blue HEAT/PCI 2 (RS232) +	0004  Blue HEAT/PCI 8 (UNIV, RS485) +	0005  Blue HEAT/PCI 4+4/6+2 (UNIV, RS232/485) +	0006  Blue HEAT/PCI 4 (OPTO, RS485) +	0007  Blue HEAT/PCI 2+2 (RS232/485) +	0008  Blue HEAT/PCI 2 (OPTO, Tx, RS485) +	0009  Blue HEAT/PCI 2+6 (RS232/485) +	000a  Blue HEAT/PCI 8 (Tx, RS485) +	000b  Blue HEAT/PCI 4 (Tx, RS485) +	000c  Blue HEAT/PCI 2 (20 MHz, RS485) +	000d  Blue HEAT/PCI 2 PTM +	0100  NT960/PCI +	0201  cPCI Titan - 2 Port +	0202  cPCI Titan - 4 Port +	0300  CTI PCI UART 2 (RS232) +	0301  CTI PCI UART 4 (RS232) +	0302  CTI PCI UART 8 (RS232) +	0310  CTI PCI UART 1+1 (RS232/485) +	0311  CTI PCI UART 2+2 (RS232/485) +	0312  CTI PCI UART 4+4 (RS232/485) +	0320  CTI PCI UART 2 +	0321  CTI PCI UART 4 +	0322  CTI PCI UART 8 +	0330  CTI PCI UART 2 (RS485) +	0331  CTI PCI UART 4 (RS485) +	0332  CTI PCI UART 8 (RS485) +12c5  Picture Elements Incorporated +	007e  Imaging/Scanning Subsystem Engine +	007f  Imaging/Scanning Subsystem Engine +	0081  PCIVST [Grayscale Thresholding Engine] +	0085  Video Simulator/Sender +	0086  THR2 Multi-scale Thresholder +12c6  Mitani Corporation +12c7  Dialogic Corp +# 12 Line, 6 port, CT-BUS/SC-BUS, loopstart FXO adaptor. +	0546  Springware D/120JCT-LS +# 24 Channel, 1 Port, CT-BUS/SC-BUS, T1/PRI adaptor. +	0647  Springware D/240JCT-T1 +# 4 Line, 4 port, CT-BUS/SC-BUS, loopstart FXO adaptor. Revision 01 +	0676  Springware D/41JCT-LS +# 48 Channel, 2 Port, CT-BUS/SC-BUS, T1/PRI adaptor. +	0685  Springware D/480JCT-2T1 +12c8  G Force Co, Ltd +12c9  Gigi Operations +12ca  Integrated Computing Engines +12cb  Antex Electronics Corporation +	0027  SC4 (StudioCard) +	002e  StudioCard 2000 +12cc  Pluto Technologies International +12cd  Aims Lab +12ce  Netspeed Inc. +12cf  Prophet Systems, Inc. +12d0  GDE Systems, Inc. +12d1  PSITech +12d2  NVidia / SGS Thomson (Joint Venture) +	0008  NV1 +	0009  DAC64 +	0018  Riva128 +		1048 0c10  VICTORY Erazor +		107b 8030  STB Velocity 128 +		1092 0350  Viper V330 +		1092 1092  Viper V330 +		10b4 1b1b  STB Velocity 128 +		10b4 1b1d  STB Velocity 128 +		10b4 1b1e  STB Velocity 128, PAL TV-Out +		10b4 1b20  STB Velocity 128 Sapphire +		10b4 1b21  STB Velocity 128 +		10b4 1b22  STB Velocity 128 AGP, NTSC TV-Out +		10b4 1b23  STB Velocity 128 AGP, PAL TV-Out +		10b4 1b27  STB Velocity 128 DVD +		10b4 1b88  MVP Pro 128 +		10b4 222a  STB Velocity 128 AGP +		10b4 2230  STB Velocity 128 +		10b4 2232  STB Velocity 128 +		10b4 2235  STB Velocity 128 AGP +		2a15 54a3  3DVision-SAGP / 3DexPlorer 3000 +	0019  Riva128ZX +	0020  TNT +	0028  TNT2 +	0029  UTNT2 +	002c  VTNT2 +	00a0  ITNT2 +12d3  Vingmed Sound A/S +12d4  Ulticom (Formerly DGM&S) +	0200  T1 Card +12d5  Equator Technologies Inc +	0003  BSP16 +	1000  BSP15 +12d6  Analogic Corp +12d7  Biotronic SRL +12d8  Pericom Semiconductor +	01a7  PI7C21P100 PCI to PCI Bridge +	400a  PI7C9X442SL PCI Express Bridge Port +	400e  PI7C9X442SL USB OHCI Controller +	400f  PI7C9X442SL USB EHCI Controller +	71e2  PI7C7300A/PI7C7300D PCI-to-PCI Bridge +	71e3  PI7C7300A/PI7C7300D PCI-to-PCI Bridge (Secondary Bus 2) +	8140  PI7C8140A PCI-to-PCI Bridge +	8148  PI7C8148A/PI7C8148B PCI-to-PCI Bridge +	8150  PCI to PCI Bridge +	8152  PI7C8152A/PI7C8152B/PI7C8152BI PCI-to-PCI Bridge +	8154  PI7C8154A/PI7C8154B/PI7C8154BI PCI-to-PCI Bridge +	e110  PI7C9X110 PCI Express to PCI bridge +		1775 11cc  CC11/CL11 CompactPCI Bridge +	e111  PI7C9X111SL PCIe-to-PCI Reversible Bridge +	e130  PCI Express to PCI-XPI7C9X130 PCI-X Bridge +12d9  Aculab PLC +	0002  PCI Prosody +	0004  cPCI Prosody +	0005  Aculab E1/T1 PCI card +	1078  Prosody X class e1000 device +		12d9 000d  Prosody X PCI +		12d9 000e  Prosody X cPCI +12da  True Time Inc. +12db  Annapolis Micro Systems, Inc +12dc  Symicron Computer Communication Ltd. +12dd  Management Graphics +12de  Rainbow Technologies +	0200  CryptoSwift CS200 +12df  SBS Technologies Inc +12e0  Chase Research +	0010  ST16C654 Quad UART +	0020  ST16C654 Quad UART +	0030  ST16C654 Quad UART +12e1  Nintendo Co, Ltd +12e2  Datum Inc. Bancomm-Timing Division +12e3  Imation Corp - Medical Imaging Systems +12e4  Brooktrout Technology Inc +12e5  Apex Semiconductor Inc +12e6  Cirel Systems +12e7  Sunsgroup Corporation +12e8  Crisc Corp +12e9  GE Spacenet +12ea  Zuken +12eb  Aureal Semiconductor +	0001  Vortex 1 +		104d 8036  AU8820 Vortex Digital Audio Processor +		1092 2000  Sonic Impact A3D +		1092 2100  Sonic Impact A3D +		1092 2110  Sonic Impact A3D +		1092 2200  Sonic Impact A3D +		122d 1002  AU8820 Vortex Digital Audio Processor +		12eb 0001  AU8820 Vortex Digital Audio Processor +		5053 3355  Montego +		50b2 1111  XLerate +	0002  Vortex 2 +		104d 8049  AU8830 Vortex 3D Digital Audio Processor +		104d 807b  AU8830 Vortex 3D Digital Audio Processor +		1092 3000  Monster Sound II +		1092 3001  Monster Sound II +		1092 3002  Monster Sound II +		1092 3003  Monster Sound II +		1092 3004  Monster Sound II +		12eb 0002  AU8830 Vortex 3D Digital Audio Processor +		12eb 0088  AU8830 Vortex 3D Digital Audio Processor +		144d 3510  AU8830 Vortex 3D Digital Audio Processor +		5053 3356  Montego II +	0003  AU8810 Vortex Digital Audio Processor +		104d 8049  AU8810 Vortex Digital Audio Processor +		104d 8077  AU8810 Vortex Digital Audio Processor +		109f 1000  AU8810 Vortex Digital Audio Processor +		12eb 0003  AU8810 Vortex Digital Audio Processor +		1462 6780  AU8810 Vortex Digital Audio Processor +		14a4 2073  AU8810 Vortex Digital Audio Processor +		14a4 2091  AU8810 Vortex Digital Audio Processor +		14a4 2104  AU8810 Vortex Digital Audio Processor +		14a4 2106  AU8810 Vortex Digital Audio Processor +	8803  Vortex 56k Software Modem +		12eb 8803  Vortex 56k Software Modem +12ec  3A International, Inc. +12ed  Optivision Inc. +12ee  Orange Micro +12ef  Vienna Systems +12f0  Pentek +12f1  Sorenson Vision Inc +12f2  Gammagraphx, Inc. +12f3  Radstone Technology +12f4  Megatel +12f5  Forks +12f6  Dawson France +12f7  Cognex +12f8  Electronic Design GmbH +	0002  VideoMaker +12f9  Four Fold Ltd +12fb  Spectrum Signal Processing +	0001  PMC-MAI +	00f5  F5 Dakar +	02ad  PMC-2MAI +	2adc  ePMC-2ADC +	3100  PRO-3100 +	3500  PRO-3500 +	4d4f  Modena +	8120  ePMC-8120 +	da62  Daytona C6201 PCI (Hurricane) +	db62  Ingliston XBIF +	dc62  Ingliston PLX9054 +	dd62  Ingliston JTAG/ISP +	eddc  ePMC-MSDDC +	fa01  ePMC-FPGA +12fc  Capital Equipment Corp +12fd  I2S +12fe  ESD Electronic System Design GmbH +12ff  Lexicon +1300  Harman International Industries Inc +1302  Computer Sciences Corp +1303  Innovative Integration +	0030  X3-SDF 4-channel XMC acquisition board +1304  Juniper Networks +1305  Netphone, Inc +1306  Duet Technologies +# Nee ComputerBoards +1307  Measurement Computing +	0001  PCI-DAS1602/16 +	000b  PCI-DIO48H +	000c  PCI-PDISO8 +	000d  PCI-PDISO16 +	000f  PCI-DAS1200 +	0010  PCI-DAS1602/12 +	0014  PCI-DIO24H +	0015  PCI-DIO24H/CTR3 +	0016  PCI-DIO48H/CTR15 +	0017  PCI-DIO96H +	0018  PCI-CTR05 +	0019  PCI-DAS1200/JR +	001a  PCI-DAS1001 +	001b  PCI-DAS1002 +	001c  PCI-DAS1602JR/16 +	001d  PCI-DAS6402/16 +	001e  PCI-DAS6402/12 +	001f  PCI-DAS16/M1 +	0020  PCI-DDA02/12 +	0021  PCI-DDA04/12 +	0022  PCI-DDA08/12 +	0023  PCI-DDA02/16 +	0024  PCI-DDA04/16 +	0025  PCI-DDA08/16 +	0026  PCI-DAC04/12-HS +	0027  PCI-DAC04/16-HS +	0028  PCI-DIO24 +	0029  PCI-DAS08 +	002c  PCI-INT32 +	0033  PCI-DUAL-AC5 +	0034  PCI-DAS-TC +	0035  PCI-DAS64/M1/16 +	0036  PCI-DAS64/M2/16 +	0037  PCI-DAS64/M3/16 +	004c  PCI-DAS1000 +	004d  PCI-QUAD04 +	0052  PCI-DAS4020/12 +	0053  PCIM-DDA06/16 +	0054  PCI-DIO96 +	005d  PCI-DAS6023 +	005e  PCI-DAS6025 +	005f  PCI-DAS6030 +	0060  PCI-DAS6031 +	0061  PCI-DAS6032 +	0062  PCI-DAS6033 +	0063  PCI-DAS6034 +	0064  PCI-DAS6035 +	0065  PCI-DAS6040 +	0066  PCI-DAS6052 +	0067  PCI-DAS6070 +	0068  PCI-DAS6071 +	006f  PCI-DAS6036 +	0070  PCI-DAC6702 +	0078  PCI-DAS6013 +	0079  PCI-DAS6014 +	0115  PCIe-DAS1602/16 +1308  Jato Technologies Inc. +	0001  NetCelerator Adapter +		1308 0001  NetCelerator Adapter +1309  AB Semiconductor Ltd +130a  Mitsubishi Electric Microcomputer +130b  Colorgraphic Communications Corp +130c  Ambex Technologies, Inc +130d  Accelerix Inc +130e  Yamatake-Honeywell Co. Ltd +130f  Advanet Inc +1310  Gespac +1311  Videoserver, Inc +1312  Acuity Imaging, Inc +1313  Yaskawa Electric Co. +1315  Wavesat +1316  Teradyne Inc +1317  ADMtek +	0981  21x4x DEC-Tulip compatible 10/100 Ethernet +	0985  NC100 Network Everywhere Fast Ethernet 10/100 +		1734 100c  Scenic N300 ADMtek AN983 10/100 Mbps PCI Adapter +	1985  21x4x DEC-Tulip compatible 10/100 Ethernet +		1385 511a  FA511 +		1395 2103  CB100-EZ (4-LED version) +	2850  HSP MicroModem 56 +	5120  ADM5120 OpenGate System-on-Chip +	8201  ADM8211 802.11b Wireless Interface +		10b8 2635  SMC2635W v1 802.11b Wireless Cardbus Adapter +		1317 8201  SMC2635W v2 802.11b Wireless Cardbus Adapter +	8211  ADM8211 802.11b Wireless Interface +	9511  21x4x DEC-Tulip compatible 10/100 Ethernet +1318  Packet Engines Inc. +	0911  GNIC-II PCI Gigabit Ethernet [Hamachi] +1319  Fortemedia, Inc +	0801  Xwave QS3000A [FM801] +		1319 1319  FM801 PCI Audio +	0802  Xwave QS3000A [FM801 game port] +		1319 1319  FM801 PCI Joystick +	1000  FM801 PCI Audio +	1001  FM801 PCI Joystick +131a  Finisar Corp. +131c  Nippon Electro-Sensory Devices Corp +131d  Sysmic, Inc. +131e  Xinex Networks Inc +131f  Siig Inc +	1000  CyberSerial (1-port) 16550 +	1001  CyberSerial (1-port) 16650 +	1002  CyberSerial (1-port) 16850 +	1010  Duet 1S(16550)+1P +	1011  Duet 1S(16650)+1P +	1012  Duet 1S(16850)+1P +	1020  CyberParallel (1-port) +	1021  CyberParallel (2-port) +	1030  CyberSerial (2-port) 16550 +	1031  CyberSerial (2-port) 16650 +	1032  CyberSerial (2-port) 16850 +	1034  Trio 2S(16550)+1P +	1035  Trio 2S(16650)+1P +	1036  Trio 2S(16850)+1P +	1050  CyberSerial (4-port) 16550 +	1051  CyberSerial (4-port) 16650 +	1052  CyberSerial (4-port) 16850 +	2000  CyberSerial (1-port) 16550 +	2001  CyberSerial (1-port) 16650 +	2002  CyberSerial (1-port) 16850 +	2010  Duet 1S(16550)+1P +	2011  Duet 1S(16650)+1P +	2012  Duet 1S(16850)+1P +	2020  CyberParallel (1-port) +	2021  CyberParallel (2-port) +	2030  CyberSerial (2-port) 16550 +		131f 2030  PCI Serial Card +	2031  CyberSerial (2-port) 16650 +	2032  CyberSerial (2-port) 16850 +	2040  Trio 1S(16550)+2P +	2041  Trio 1S(16650)+2P +	2042  Trio 1S(16850)+2P +	2050  CyberSerial (4-port) 16550 +	2051  CyberSerial (4-port) 16650 +	2052  CyberSerial (4-port) 16850 +	2060  Trio 2S(16550)+1P +	2061  Trio 2S(16650)+1P +	2062  Trio 2S(16850)+1P +	2081  CyberSerial (8-port) ST16654 +1320  Crypto AG +1321  Arcobel Graphics BV +1322  MTT Co., Ltd +1323  Dome Inc +1324  Sphere Communications +1325  Salix Technologies, Inc +1326  Seachange international +1327  Voss scientific +1328  quadrant international +1329  Productivity Enhancement +132a  Microcom Inc. +132b  Broadband Technologies +132c  Micrel Inc +132d  Integrated Silicon Solution, Inc. +1330  MMC Networks +1331  RadiSys Corporation +	0030  ENP-2611 +	8200  82600 Host Bridge +	8201  82600 IDE +	8202  82600 USB +	8210  82600 PCI Bridge +1332  Micro Memory +	5415  MM-5415CN PCI Memory Module with Battery Backup +	5425  MM-5425CN PCI 64/66 Memory Module with Battery Backup +	6140  MM-6140D +1334  Redcreek Communications, Inc +1335  Videomail, Inc +1337  Third Planet Publishing +1338  BT Electronics +133a  Vtel Corp +133b  Softcom Microsystems +133c  Holontech Corp +133d  SS Technologies +133e  Virtual Computer Corp +133f  SCM Microsystems +1340  Atalla Corp +1341  Kyoto Microcomputer Co +1342  Promax Systems Inc +1343  Phylon Communications Inc +# nee Crucial Technology +1344  Micron Technology Inc +	5150  RealSSD P320h +	5151  RealSSD P320m +	5152  RealSSD P320s +	5153  RealSSD P325m +	5160  RealSSD P420h +	5161  RealSSD P420m +	5163  RealSSD P425m +1345  Arescom Inc +1347  Odetics +1349  Sumitomo Electric Industries, Ltd. +134a  DTC Technology Corp. +	0001  Domex 536 +	0002  Domex DMX3194UP SCSI Adapter +134b  ARK Research Corp. +134c  Chori Joho System Co. Ltd +134d  PCTel Inc +	2189  HSP56 MicroModem +	2486  2304WT V.92 MDC Modem +	7890  HSP MicroModem 56 +		134d 0001  PCT789 adapter +	7891  HSP MicroModem 56 +		134d 0001  HSP MicroModem 56 +	7892  HSP MicroModem 56 +	7893  HSP MicroModem 56 +	7894  HSP MicroModem 56 +	7895  HSP MicroModem 56 +	7896  HSP MicroModem 56 +	7897  HSP MicroModem 56 +134e  CSTI +134f  Algo System Co Ltd +1350  Systec Co. Ltd +1351  Sonix Inc +# nee Thales Idatys +1353  Vierling Communication SAS +	0002  Proserver +	0003  PCI-FUT +	0004  PCI-S0 +	0005  PCI-FUT-S0 +1354  Dwave System Inc +1355  Kratos Analytical Ltd +1356  The Logical Co +1359  Prisa Networks +135a  Brain Boxes +	0a61  UC-324 [VELOCITY RS422/485] +135b  Giganet Inc +135c  Quatech Inc +	0010  QSC-100 +	0020  DSC-100 +	0030  DSC-200/300 +	0040  QSC-200/300 +	0050  ESC-100D +	0060  ESC-100M +	00f0  MPAC-100 Syncronous Serial Card (Zilog 85230) +	0170  QSCLP-100 +	0180  DSCLP-100 +	0190  SSCLP-100 +	01a0  QSCLP-200/300 +	01b0  DSCLP-200/300 +	01c0  SSCLP-200/300 +	0258  DSPSX-200/300 +135d  ABB Network Partner AB +135e  Sealevel Systems Inc +	5101  Route 56.PCI - Multi-Protocol Serial Interface (Zilog Z16C32) +	7101  Single Port RS-232/422/485/530 +	7201  Dual Port RS-232/422/485 Interface +	7202  Dual Port RS-232 Interface +	7401  Four Port RS-232 Interface +	7402  Four Port RS-422/485 Interface +	7801  Eight Port RS-232 Interface +	7804  Eight Port RS-232/422/485 Interface +	8001  8001 Digital I/O Adapter +135f  I-Data International A-S +1360  Meinberg Funkuhren +	0101  PCI32 DCF77 Radio Clock +	0102  PCI509 DCF77 Radio Clock +	0103  PCI510 DCF77 Radio Clock +	0104  PCI511 DCF77 Radio Clock +	0105  PEX511 DCF77 Radio Clock (PCI Express) +	0106  PZF180PEX High Precision DCF77 Radio Clock (PCI Express) +	0201  GPS167PCI GPS Receiver +	0202  GPS168PCI GPS Receiver +	0203  GPS169PCI GPS Receiver +	0204  GPS170PCI GPS Receiver +	0205  GPS170PEX GPS Receiver (PCI Express) +	0206  GPS180PEX GPS Receiver (PCI Express) +	0207  GLN180PEX GPS/GLONASS receiver (PCI Express) +	0208  GPS180AMC GPS Receiver (PCI Express / MicroTCA / AdvancedMC) +	0301  TCR510PCI IRIG Timecode Reader +	0302  TCR167PCI IRIG Timecode Reader +	0303  TCR511PCI IRIG Timecode Reader +	0304  TCR511PEX IRIG Timecode Reader (PCI Express) +	0305  TCR170PEX IRIG Timecode Reader (PCI Express) +	0306  TCR180PEX IRIG Timecode Reader (PCI Express) +	0501  PTP270PEX PTP/IEEE1588 slave card (PCI Express) +	0601  FRC511PEX Free Running Clock (PCI Express) +1361  Soliton Systems K.K. +1362  Fujifacom Corporation +1363  Phoenix Technology Ltd +1364  ATM Communications Inc +1365  Hypercope GmbH +1366  Teijin Seiki Co. Ltd +1367  Hitachi Zosen Corporation +1368  Skyware Corporation +1369  Digigram +136a  High Soft Tech +	0004  HST Saphir VII mini PCI +	0007  HST Saphir III E MultiLink 4 +	0008  HST Saphir III E MultiLink 8 +	000a  HST Saphir III E MultiLink 2 +136b  Kawasaki Steel Corporation +	ff01  KL5A72002 Motion JPEG +136c  Adtek System Science Co Ltd +136d  Gigalabs Inc +136f  Applied Magic Inc +1370  ATL Products +1371  CNet Technology Inc +	434e  GigaCard Network Adapter +		1371 434e  N-Way PCI-Bus Giga-Card 1000/100/10Mbps(L) +1373  Silicon Vision Inc +1374  Silicom Ltd. +	0024  Silicom Dual port Giga Ethernet BGE Bypass Server Adapter +	0025  Silicom Quad port Giga Ethernet BGE Bypass Server Adapter +	0026  Silicom Dual port Fiber Giga Ethernet 546 Bypass Server Adapter +	0027  Silicom Dual port Fiber LX Giga Ethernet 546 Bypass Server Adapter +	0029  Silicom Dual port Copper Giga Ethernet 546GB Bypass Server Adapter +	002a  Silicom Dual port Fiber Giga Ethernet 546 TAP/Bypass Server Adapter +	002b  Silicom Dual port Copper Fast Ethernet 546 TAP/Bypass Server Adapter (PXE2TBI) +	002c  Silicom Quad port Copper Giga Ethernet 546GB Bypass Server Adapter (PXG4BPI) +	002d  Silicom Quad port Fiber-SX Giga Ethernet 546GB Bypass Server Adapter (PXG4BPFI) +	002e  Silicom Quad port Fiber-LX Giga Ethernet 546GB Bypass Server Adapter (PXG4BPFI-LX) +	002f  Silicom Dual port Fiber-SX Giga Ethernet 546GB Low profile Bypass Server Adapter (PXG2BPFIL) +	0030  Silicom Dual port Fiber-LX Giga Ethernet 546GB Low profile Bypass Server Adapter +	0031  Silicom Quad port Copper Giga Ethernet PCI-E Bypass Server Adapter +	0032  Silicom Dual port Copper Fast Ethernet 546 TAP/Bypass Server Adapter +	0034  Silicom Dual port Copper Giga Ethernet PCI-E BGE Bypass Server Adapter +	0035  Silicom Quad port Copper Giga Ethernet PCI-E BGE Bypass Server Adapter +	0036  Silicom Dual port Fiber Giga Ethernet PCI-E BGE Bypass Server Adapter +	0037  Silicom Dual port Copper Ethernet PCI-E Intel based Bypass Server Adapter +	0038  Silicom Quad port Copper Ethernet PCI-E Intel based Bypass Server Adapter +	0039  Silicom Dual port Fiber-SX Ethernet PCI-E Intel based Bypass Server Adapter +	003a  Silicom Dual port Fiber-LX Ethernet PCI-E Intel based Bypass Server Adapter +	003b  Silicom Dual port Fiber Ethernet PMC Intel based Bypass Server Adapter (PMCX2BPFI) +	003c  Silicom Dual port Copper Ethernet PCI-X BGE based Bypass Server Adapter (PXG2BPRB) +	003d  2-port Copper GBE Bypass with Caviume 1010 PCI-X +	003e  Silicom Dual port Fiber Giga Ethernet PCI-E 571 TAP/Bypass Server Adapter (PEG2TBFI) +	003f  Silicom Dual port Copper Giga Ethernet PCI-X 546 TAP/Bypass Server Adapter (PXG2TBI) +	0040  Silicom Quad port Fiber-SX Giga Ethernet 571 Bypass Server Adapter (PEG4BPFI) +	0042  4-port Copper GBE PMC-X Bypass +	0043  Silicom Quad port Fiber-SX Giga Ethernet 546 Bypass Server Adapter (PXG4BPFID) +	0045  Silicom 6 port Copper Giga Ethernet 546 Bypass Server Adapter (PXG6BPI) +	0046  4-port bypass PCI-E w disconnect low profile +	0047  Silicom Dual port Fiber-SX Giga Ethernet 571 Bypass Disconnect Server Adapter (PEG2BPFID) +	004a  Silicom Quad port Fiber-LX Giga Ethernet 571 Bypass Server Adapter (PEG4BPFI-LX) +	004d  Dual port Copper Giga Ethernet PCI-E Bypass Server Adapter +	0401  Gigabit Ethernet ExpressModule Bypass Server Adapter +	0420  Gigabit Ethernet ExpressModule Bypass Server Adapter +	0460  Gigabit Ethernet Express Module Bypass Server Adapter +	0461  Gigabit Ethernet ExpressModule Bypass Server Adapter +	0462  Gigabit Ethernet ExpressModule Bypass Server Adapter +	0470  Octal-port Copper Gigabit Ethernet Express Module Bypass Server Adapter +	0482  Dual-port Fiber (SR) 10 Gigabit Ethernet ExpressModule Bypass Server Adapter +	0483  Dual-port Fiber (LR) 10 Gigabit Ethernet ExpressModule Bypass Server Adapter +1375  Argosystems Inc +1376  LMC +1377  Electronic Equipment Production & Distribution GmbH +1378  Telemann Co. Ltd +1379  Asahi Kasei Microsystems Co Ltd +137a  Mark of the Unicorn Inc +	0001  PCI-324 Audiowire Interface +137b  PPT Vision +137c  Iwatsu Electric Co Ltd +137d  Dynachip Corporation +137e  Patriot Scientific Corporation +137f  Japan Satellite Systems Inc +1380  Sanritz Automation Co Ltd +1381  Brains Co. Ltd +1382  Marian - Electronic & Software +	0001  ARC88 audio recording card +	2008  Prodif 96 Pro sound system +	2048  Prodif Plus sound system +	2088  Marc 8 Midi sound system +	20c8  Marc A sound system +	4008  Marc 2 sound system +	4010  Marc 2 Pro sound system +	4048  Marc 4 MIDI sound system +	4088  Marc 4 Digi sound system +	4248  Marc X sound system +	4424  TRACE D4 Sound System +1383  Controlnet Inc +1384  Reality Simulation Systems Inc +1385  Netgear +	006b  WA301 802.11b Wireless PCI Adapter +	4100  MA301 802.11b Wireless PCI Adapter +	4601  WAG511 802.11a/b/g Dual Band Wireless PC Card +	620a  GA620 Gigabit Ethernet +	630a  GA630 Gigabit Ethernet +1386  Video Domain Technologies +1387  Systran Corp +1388  Hitachi Information Technology Co Ltd +1389  Applicom International +	0001  PCI1500PFB [Intelligent fieldbus adaptor] +138a  Fusion Micromedia Corp +	003d  VFS491 Validity Sensor +138b  Tokimec Inc +138c  Silicon Reality +138d  Future Techno Designs pte Ltd +138e  Basler GmbH +138f  Patapsco Designs Inc +1390  Concept Development Inc +1391  Development Concepts Inc +1392  Medialight Inc +1393  Moxa Technologies Co Ltd +	0001  UC7000 Serial +	1020  CP102 (2-port RS-232 PCI) +	1021  CP102UL (2-port RS-232 Universal PCI) +	1022  CP102U (2-port RS-232 Universal PCI) +	1023  CP-102UF +	1024  CP-102E (2-port RS-232 Smart PCI Express Serial Board) +	1025  CP-102EL (2-port RS-232 Smart PCI Express Serial Board) +	1040  Smartio C104H/PCI +	1041  CP104U (4-port RS-232 Universal PCI) +	1042  CP104JU (4-port RS-232 Universal PCI) +	1043  CP104EL (4-port RS-232 Smart PCI Express) +	1044  POS104UL (4-port RS-232 Universal PCI) +	1045  CP-104EL-A (4-port RS-232 PCI Express Serial Board) +	1080  CB108 (8-port RS-232 PC/104-plus Module) +	1140  CT-114 series +	1141  Industrio CP-114 +	1142  CB114 (4-port RS-232/422/485 PC/104-plus Module) +	1143  CP-114UL (4-port RS-232/422/485 Smart Universal PCI Serial Board) +	1144  CP-114EL (4-port RS-232/422/485 Smart PCI Express Serial Board) +	1180  CP118U (8-port RS-232/422/485 Smart Universal PCI) +	1181  CP118EL (8-port RS-232/422/485 Smart PCI Express) +	1182  CP-118EL-A (8-port RS-232/422/485 PCI Express Serial Board) +	1320  CP132 (2-port RS-422/485 PCI) +	1321  CP132U (2-Port RS-422/485 Universal PCI) +	1322  CP-132EL (2-port RS-422/485 Smart PCI Express Serial Board) +	1340  CP134U (4-Port RS-422/485 Universal PCI) +	1341  CB134I (4-port RS-422/485 PC/104-plus Module) +	1380  CP138U (8-port RS-232/422/485 Smart Universal PCI) +	1680  Smartio C168H/PCI +	1681  CP-168U V2 Smart Serial Board (8-port RS-232) +	1682  CP168EL (8-port RS-232 Smart PCI Express) +	1683  CP-168EL-A (8-port RS-232 PCI Express Serial Board) +	2040  Intellio CP-204J +	2180  Intellio C218 Turbo PCI +	3200  Intellio C320 Turbo PCI +1394  Level One Communications +	0001  LXT1001 Gigabit Ethernet +		1186 4800  DGE-500SX +		1394 0001  NetCelerator Adapter +1395  Ambicom Inc +1396  Cipher Systems Inc +1397  Cologne Chip Designs GmbH +	08b4  ISDN network Controller [HFC-4S] +		1397 b520  HFC-4S [IOB4ST] +		1397 b540  HFC-4S [Swyx 4xS0 SX2 QuadBri] +		1397 b550  HFC-4S [Junghanns quadBRI] +		1397 b556  HFC-4S [Junghanns DuoDBRI] +		1397 e888  HFC-4S [OpenVox B200P / B400P] +	16b8  ISDN network Controller [HFC-8S] +		1397 b562  HFC-8S [IOB8ST] +	2bd0  ISDN network controller [HFC-PCI] +		0675 1704  ISDN Adapter (PCI Bus, D, C) +		0675 1708  ISDN Adapter (PCI Bus, D, C, ACPI) +		1397 2bd0  ISDN Board +		e4bf 1000  CI1-1-Harp +	30b1  ISDN network Controller [HFC-E1] +	b700  ISDN network controller PrimuX S0 [HFC-PCI] +	f001  GSM Network Controller [HFC-4GSM] +1398  Clarion co. Ltd +1399  Rios systems Co Ltd +139a  Alacritech Inc +	0001  Quad Port 10/100 Server Accelerator +	0003  Single Port 10/100 Server Accelerator +	0005  Single Port Gigabit Server Accelerator +139b  Mediasonic Multimedia Systems Ltd +139c  Quantum 3d Inc +139d  EPL limited +139e  Media4 +139f  Aethra s.r.l. +13a0  Crystal Group Inc +13a1  Kawasaki Heavy Industries Ltd +13a2  Ositech Communications Inc +13a3  Hifn Inc. +	0005  7751 Security Processor +	0006  6500 Public Key Processor +	0007  7811 Security Processor +	0012  7951 Security Processor +	0014  78XX Security Processor +	0016  8065 Security Processor +	0017  8165 Security Processor +	0018  8154 Security Processor +	001d  7956 Security Processor +	001f  7855 Security Processor +	0020  7955 Security Processor +	0026  8155 Security Processor +	002e  9630 Compression Processor +	002f  9725 Compression and Security Processor +		13a3 1600  DR1600 Acceleration Card +		13a3 1605  DR1605 Acceleration Card +		13a3 1610  DR1610 Acceleration Card +		13a3 1615  DR1615 Acceleration Card +		13a3 1620  DR1620 Acceleration Card +		13a3 1625  DR1625 Acceleration Card +	0033  8201 Acceleration Processor +		13a3 0036  DX1710 Acceleration Card +	0034  8202 Acceleration Processor +		13a3 0036  DX1720 Acceleration Card +	0035  8203 Acceleration Processor +		13a3 0036  DX1730 Acceleration Card +	0037  8204 Acceleration Processor +		13a3 0036  DX1740 Acceleration Card +13a4  Rascom Inc +13a5  Audio Digital Imaging Inc +13a6  Videonics Inc +13a7  Teles AG +13a8  Exar Corp. +	0152  XR17C/D152 Dual PCI UART +	0154  XR17C154 Quad UART +	0158  XR17C158 Octal UART +	0252  XR17V252 Dual UART PCI controller +	0254  XR17V254 Quad UART PCI controller +	0258  XR17V258 Octal UART PCI controller +13a9  Siemens Medical Systems, Ultrasound Group +13aa  Broadband Networks Inc +13ab  Arcom Control Systems Ltd +13ac  Motion Media Technology Ltd +13ad  Nexus Inc +13ae  ALD Technology Ltd +13af  T.Sqware +13b0  Maxspeed Corp +13b1  Tamura corporation +13b2  Techno Chips Co. Ltd +13b3  Lanart Corporation +13b4  Wellbean Co Inc +13b5  ARM +13b6  Dlog GmbH +13b7  Logic Devices Inc +13b8  Nokia Telecommunications oy +13b9  Elecom Co Ltd +13ba  Oxford Instruments +13bb  Sanyo Technosound Co Ltd +13bc  Bitran Corporation +13bd  Sharp corporation +13be  Miroku Jyoho Service Co. Ltd +13bf  Sharewave Inc +13c0  Microgate Corporation +	0010  SyncLink Adapter v1 +	0020  SyncLink SCC Adapter +	0030  SyncLink Multiport Adapter +	0070  SyncLink GT Adapter +	0080  SyncLink GT4 Adapter +	00a0  SyncLink GT2 Adapter +	0210  SyncLink Adapter v2 +13c1  3ware Inc +	1000  5xxx/6xxx-series PATA-RAID +	1001  7xxx/8xxx-series PATA/SATA-RAID +		13c1 1001  7xxx/8xxx-series PATA/SATA-RAID +	1002  9xxx-series SATA-RAID +	1003  9550SX SATA-II RAID PCI-X +	1004  9650SE SATA-II RAID PCIe +	1005  9690SA SAS/SATA-II RAID PCIe +	1010  9750 SAS2/SATA-II RAID PCIe +13c2  Technotrend Systemtechnik GmbH +	000e  Technotrend/Hauppauge DVB card rev2.3 +	1019  TTechnoTrend-budget DVB S2-3200 +13c3  Janz Computer AG +13c4  Phase Metrics +13c5  Alphi Technology Corp +13c6  Condor Engineering Inc +	0520  CEI-520 A429 Card +	0620  CEI-620 A429 Card +	0820  CEI-820 A429 Card +	0830  CEI-830 A429 Card +	1004  P-SER Multi-channel PMC to RS-485/422/232 adapter +13c7  Blue Chip Technology Ltd +	0adc  PCI-ADC +	0b10  PCI-PIO +	0d10  PCI-DIO +	524c  PCI-RLY +	5744  PCI-WDT +13c8  Apptech Inc +13c9  Eaton Corporation +13ca  Iomega Corporation +13cb  Yano Electric Co Ltd +13cc  Metheus Corporation +13cd  Compatible Systems Corporation +13ce  Cocom A/S +13cf  Studio Audio & Video Ltd +13d0  Techsan Electronics Co Ltd +	2103  B2C2 FlexCopII DVB chip / Technisat SkyStar2 DVB card +	2104  B2C2 FlexCopIII DVB chip / Technisat SkyStar2 DVB card (rev 01) +	2200  B2C2 FlexCopIII DVB chip / Technisat SkyStar2 DVB card +13d1  Abocom Systems Inc +	ab02  ADMtek Centaur-C rev 17 [D-Link DFE-680TX] CardBus Fast Ethernet Adapter +	ab03  21x4x DEC-Tulip compatible 10/100 Ethernet +	ab06  RTL8139 [FE2000VX] CardBus Fast Ethernet Attached Port Adapter +	ab08  21x4x DEC-Tulip compatible 10/100 Ethernet +13d2  Shark Multimedia Inc +13d4  Graphics Microsystems Inc +13d5  Media 100 Inc +13d6  K.I. Technology Co Ltd +13d7  Toshiba Engineering Corporation +13d8  Phobos corporation +13d9  Apex PC Solutions Inc +13da  Intresource Systems pte Ltd +13db  Janich & Klass Computertechnik GmbH +13dc  Netboost Corporation +13dd  Multimedia Bundle Inc +13de  ABB Robotics Products AB +13df  E-Tech Inc +	0001  PCI56RVP Modem +		13df 0001  PCI56RVP Modem +13e0  GVC Corporation +13e1  Silicom Multimedia Systems Inc +13e2  Dynamics Research Corporation +13e3  Nest Inc +13e4  Calculex Inc +13e5  Telesoft Design Ltd +13e6  Argosy research Inc +13e7  NAC Incorporated +13e8  Chip Express Corporation +13e9  Intraserver Technology Inc +13ea  Dallas Semiconductor +13eb  Hauppauge Computer Works Inc +13ec  Zydacron Inc +	000a  NPC-RC01 Remote control receiver +13ed  Raytheion E-Systems +13ee  Hayes Microcomputer Products Inc +13ef  Coppercom Inc +13f0  Sundance Technology Inc / IC Plus Corp +	0200  IC Plus IP100A Integrated 10/100 Ethernet MAC + PHY +		1043 8213  NX1001 +	0201  ST201 Sundance Ethernet +	1021  TC902x Gigabit Ethernet +	1023  IP1000 Family Gigabit Ethernet +		1043 8180  NX1101 +13f1  Oce' - Technologies B.V. +13f2  Ford Microelectronics Inc +13f3  Mcdata Corporation +13f4  Troika Networks, Inc. +	1401  Zentai Fibre Channel Adapter +13f5  Kansai Electric Co. Ltd +13f6  C-Media Electronics Inc +	0011  CMI8738 +	0100  CM8338A +		13f6 ffff  CMI8338/C3DX PCI Audio Device +	0101  CM8338B +		13f6 0101  CMI8338-031 PCI Audio Device +	0111  CMI8738/CMI8768 PCI Audio +		1019 0970  P6STP-FL motherboard +		1043 8035  CUSI-FX motherboard +		1043 8077  CMI8738 6-channel audio controller +		1043 80e2  CMI8738 6ch-MX +		13f6 0111  CMI8738/C3DX PCI Audio Device +		13f6 9761  Theatron Agrippa +		153b 1144  Aureon 5.1 +		153b 1170  Aureon 7.1 +		1681 a000  Gamesurround MUSE XL +		17ab 0604  PSC604 Dynamic Edge +		17ab 0605  PSC605 Sonic Edge +		17ab 7777  PSC605 Sonic Edge +		270f 1103  CT-7NJS Ultra motherboard +		270f f462  7NJL1 motherboard +		584d 3731  Digital X-Mystique +		584d 3741  X-Plosion 7.1 +		584d 3751  X-Raider 7.1 +		584d 3761  X-Mystique 7.1 LP +		584d 3771  X-Mystique 7.1 LP Value +		7284 8384  Striker 7.1 +	0211  CM8738 +	5011  CM8888 [Oxygen Express] +		13f6 5011  HDA Controller +	8788  CMI8788 [Oxygen HD Audio] +		1043 8269  Virtuoso 200 (Xonar D2) +		1043 8275  Virtuoso 100 (Xonar DX) +		1043 82b7  Virtuoso 200 (Xonar D2X) +		1043 8314  Virtuoso 200 (Xonar HDAV1.3) +		1043 8327  Virtuoso 100 (Xonar DX) +		1043 834f  Virtuoso 100 (Xonar D1) +		1043 835c  Virtuoso 100 (Xonar Essence STX) +		1043 835d  Virtuoso 100 (Xonar ST) +		1043 835e  Virtuoso 200 (Xonar HDAV1.3 Slim) +		1043 838e  Virtuoso 66 (Xonar DS) +		1043 8428  Virtuoso 100 (Xonar Xense) +		1043 8467  CMI8786 (Xonar DG) +		1043 85f4  Virtuoso 100 (Xonar Essence STX II) +		13f6 8782  PCI 2.0 HD Audio +		13f6 ffff  CMI8787-HG2PCI +		14c3 1710  HiFier Fantasia +		14c3 1711  HiFier Serenade +		14c3 1713  HiFier Serenade III +		1a58 0910  Barracuda AC-1 +		415a 5431  X-Meridian 7.1 +		5431 017a  X-Meridian 7.1 2G +		584d 3781  HDA X-Purity 7.1 Platinum +		7284 9761  CLARO +		7284 9781  CLARO halo +		7284 9783  eCLARO +		7284 9787  CLARO II +13f7  Wildfire Communications +13f8  Ad Lib Multimedia Inc +13f9  NTT Advanced Technology Corp. +13fa  Pentland Systems Ltd +13fb  Aydin Corp +13fc  Computer Peripherals International +13fd  Micro Science Inc +13fe  Advantech Co. Ltd +	1240  PCI-1240 4-channel stepper motor controller card +	1600  PCI-16xx series PCI multiport serial board (function 0) +# This board has two PCI functions, appears as two PCI devices +		1601 0002  PCI-1601 2-port unisolated RS-422/485 +# This board has two PCI functions, appears as two PCI devices +		1602 0002  PCI-1602 2-port isolated RS-422/485 +		1612 0004  PCI-1612 4-port RS-232/422/485 +	1603  PCI-1603 2-port isolated RS-232/current loop +	1604  PCI-1604 2-port RS-232 +	16ff  PCI-16xx series PCI multiport serial board (function 1: RX/TX steering CPLD) +		1601 0000  PCI-1601 2-port unisolated RS-422/485 PCI communications card +		1602 0000  PCI-1602 2-port isolated RS-422/485 +		1612 0000  PCI-1612 4-port RS-232/422/485 +	1711  PCI-1711 16-channel data acquisition card 12-bit, 100kS/s +	1733  PCI-1733 32-channel isolated digital input card +	1752  PCI-1752 +	1754  PCI-1754 +	1756  PCI-1756 +13ff  Silicon Spice Inc +1400  Artx Inc +	1401  9432 TX +1401  CR-Systems A/S +1402  Meilhaus Electronic GmbH +	0630  ME-630 +	0940  ME-94 +	0950  ME-95 +	0960  ME-96 +	1000  ME-1000 +	100a  ME-1000 +	100b  ME-1000 +	1400  ME-1400 +	140a  ME-1400A +	140b  ME-1400B +	140c  ME-1400C +	140d  ME-1400D +	140e  ME-1400E +	14ea  ME-1400EA +	14eb  ME-1400EB +	1604  ME-1600/4U +	1608  ME-1600/8U +	160c  ME-1600/12U +	160f  ME-1600/16U +	168f  ME-1600/16U8I +	4610  ME-4610 +	4650  ME-4650 +	4660  ME-4660 +	4661  ME-4660I +	4662  ME-4660 +	4663  ME-4660I +	4670  ME-4670 +	4671  ME-4670I +	4672  ME-4670S +	4673  ME-4670IS +	4680  ME-4680 +	4681  ME-4680I +	4682  ME-4680S +	4683  ME-4680IS +	6004  ME-6000/4 +	6008  ME-6000/8 +	600f  ME-6000/16 +	6014  ME-6000I/4 +	6018  ME-6000I/8 +	601f  ME-6000I/16 +	6034  ME-6000ISLE/4 +	6038  ME-6000ISLE/8 +	603f  ME-6000ISLE/16 +	6044  ME-6000/4/DIO +	6048  ME-6000/8/DIO +	604f  ME-6000/16/DIO +	6054  ME-6000I/4/DIO +	6058  ME-6000I/8/DIO +	605f  ME-6000I/16/DIO +	6074  ME-6000ISLE/4/DIO +	6078  ME-6000ISLE/8/DIO +	607f  ME-6000ISLE/16/DIO +	6104  ME-6100/4 +	6108  ME-6100/8 +	610f  ME-6100/16 +	6114  ME-6100I/4 +	6118  ME-6100I/8 +	611f  ME-6100I/16 +	6134  ME-6100ISLE/4 +	6138  ME-6100ISLE/8 +	613f  ME-6100ISLE/16 +	6144  ME-6100/4/DIO +	6148  ME-6100/8/DIO +	614f  ME-6100/16/DIO +	6154  ME-6100I/4/DIO +	6158  ME-6100I/8/DIO +	615f  ME-6100I/16/DIO +	6174  ME-6100ISLE/4/DIO +	6178  ME-6100ISLE/8/DIO +	617f  ME-6100ISLE/16/DIO +	6259  ME-6200I/9/DIO +	6359  ME-6300I/9/DIO +	810a  ME-8100A +	810b  ME-8100B +	820a  ME-8200A +	820b  ME-8200B +1403  Ascor Inc +1404  Fundamental Software Inc +1405  Excalibur Systems Inc +1406  Oce' Printing Systems GmbH +1407  Lava Computer mfg Inc +	0100  Lava Dual Serial +	0101  Lava Quatro A +	0102  Lava Quatro B +	0110  Lava DSerial-PCI Port A +	0111  Lava DSerial-PCI Port B +	0120  Quattro-PCI A +	0121  Quattro-PCI B +	0180  Lava Octo A +	0181  Lava Octo B +	0200  Lava Port Plus +	0201  Lava Quad A +	0202  Lava Quad B +	0220  Lava Quattro PCI Ports A/B +	0221  Lava Quattro PCI Ports C/D +	0400  Lava 8255-PIO-PCI +	0500  Lava Single Serial +	0520  Lava RS422-SS-PCI +	0600  Lava Port 650 +	8000  Lava Parallel +	8001  Dual parallel port controller A +	8002  Lava Dual Parallel port A +	8003  Lava Dual Parallel port B +	8800  BOCA Research IOPPAR +1408  Aloka Co. Ltd +1409  Timedia Technology Co Ltd +	7168  PCI2S550 (Dual 16550 UART) +		1409 0002  SER4036A3V (2x RS232 port) +		1409 4027  SER4027A (1x RS232 port) +		1409 4037  SER4037A (2x RS232 port) +# Single DC-37 connector +		1409 4056  SER4056A (4x RS232) +		1409 5027  SER4027D +		1409 5037  SER4037D (2x RS232 port) +# Single DC-62 connector +		1409 5066  SER4066R (8x RS232) +# 4x 8p8c connectors +		1409 6056  SER4056D (4x RS232 port) +	7268  SUN1888 (Dual IEEE1284 parallel port) +		1409 0103  PAR4008A +		1409 0104  PAR4018A +140a  DSP Research Inc +# Formerly RAMiX, Inc. +140b  GE Intelligent Platforms +140c  Elmic Systems Inc +140d  Matsushita Electric Works Ltd +140e  Goepel Electronic GmbH +140f  Salient Systems Corp +1410  Midas lab Inc +1411  Ikos Systems Inc +# Nee IC Ensemble Inc. +1412  VIA Technologies Inc. +	1712  ICE1712 [Envy24] PCI Multi-Channel I/O Controller +		1412 1712  Hoontech ST Audio DSP 24 +		1412 3632  M-Audio Delta Audiophile 192 +		1412 d630  M-Audio Delta 1010 +		1412 d631  M-Audio Delta DiO +		1412 d632  M-Audio Delta 66 +		1412 d633  M-Audio Delta 44 +		1412 d634  M-Audio Delta Audiophile 2496 +		1412 d635  M-Audio Delta TDIF +		1412 d637  M-Audio Delta RBUS +		1412 d638  M-Audio Delta 410 +		1412 d63b  M-Audio Delta 1010LT +		1412 d63c  Digigram VX442 +		1416 1712  Hoontech ST Audio DSP 24 Media 7.1 +		153b 1115  EWS88 MT +		153b 1125  EWS88 MT (Master) +		153b 112b  EWS88 D +		153b 112c  EWS88 D (Master) +		153b 1130  EWX 24/96 +		153b 1138  DMX 6fire 24/96 +		153b 1151  PHASE88 +		16ce 1040  Edirol DA-2496 +	1724  VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller +		10b0 0200  Hollywood@Home 7.1 +		1412 1724  Albatron PX865PE 7.1 +		1412 3630  M-Audio Revolution 7.1 +		1412 3631  M-Audio Revolution 5.1 +		153b 1145  Aureon 7.1 Space +		153b 1147  Aureon 5.1 Sky +		153b 1150  PHASE 22 +		153b 1153  Aureon 7.1 Universe +		17ab 1906  PSC 724 [Ultimate Edge] +		270f f641  ZNF3-150 +		270f f645  ZNF3-250 +		3130 4154  MAYA 44 MKII +1413  Addonics +1414  Microsoft Corporation +	0001  MN-120 (ADMtek Centaur-C based) +	0002  MN-130 (ADMtek Centaur-P based) +	5353  Hyper-V virtual VGA +	5801  XMA Decoder (Xenon) +	5802  SATA Controller - CdRom (Xenon) +	5803  SATA Controller - Disk (Xenon) +	5804  OHCI Controller 0 (Xenon) +	5805  EHCI Controller 0 (Xenon) +	5806  OHCI Controller 1 (Xenon) +	5807  EHCI Controller 1 (Xenon) +	580a  Fast Ethernet Adapter (Xenon) +	580b  Secure Flash Controller (Xenon) +	580d  System Management Controller (Xenon) +	5811  Xenos GPU (Xenon) +1415  Oxford Semiconductor Ltd +	8401  OX9162 Mode 1 (8-bit bus) +	8403  OX9162 Mode 0 (parallel port) +	9500  OX16PCI954 (Quad 16950 UART) function 0 (Disabled) +	9501  OX16PCI954 (Quad 16950 UART) function 0 (Uart) +		12c4 0201  Titan/cPCI (2 port) +		12c4 0202  Titan/cPCI (4 port) +		12c4 0203  Titan/cPCI (8 port) +		12c4 0210  Titan/104-Plus (8 port, p1-4) +		131f 2050  CyberPro (4-port) +# Model IO1085, Part No: JJ-P46012 +		131f 2051  CyberSerial 4S Plus +		15ed 2000  MCCR Serial p0-3 of 8 +		15ed 2001  MCCR Serial p0-3 of 16 +	9505  OXuPCI952 (Dual 16C950 UART) +	950a  EXSYS EX-41092 Dual 16950 Serial adapter +	950b  OXCB950 Cardbus 16950 UART +	9510  OX16PCI954 (Quad 16950 UART) function 1 (Disabled) +		12c4 0200  Titan/cPCI (Unused) +	9511  OX16PCI954 (Quad 16950 UART) function 1 (8bit bus) +		12c4 0211  Titan/104-Plus (8 port, p5-8) +		15ed 2000  MCCR Serial p4-7 of 8 +		15ed 2001  MCCR Serial p4-15 of 16 +	9512  OX16PCI954 (Quad 16950 UART) function 1 (32bit bus) +	9513  OX16PCI954 (Quad 16950 UART) function 1 (parallel port) +	9521  OX16PCI952 (Dual 16950 UART) +	9523  OX16PCI952 Integrated Parallel Port +	c158  OXPCIe952 Dual 16C950 UART +		e4bf c504  CP4-SCAT Wireless Technologies Carrier Board +		e4bf d551  DU1-MUSTANG Dual-Port RS-485 Interface +	c308  EX-44016 16-port serial +1416  Multiwave Innovation pte Ltd +1417  Convergenet Technologies Inc +1418  Kyushu electronics systems Inc +1419  Excel Switching Corp +141a  Apache Micro Peripherals Inc +141b  Zoom Telephonics Inc +141d  Digitan Systems Inc +141e  Fanuc Ltd +141f  Visiontech Ltd +1420  Psion Dacom plc +	8002  Gold Card NetGlobal 56k+10/100Mb CardBus (Ethernet part) +	8003  Gold Card NetGlobal 56k+10/100Mb CardBus (Modem part) +1421  Ads Technologies Inc +1422  Ygrec Systems Co Ltd +1423  Custom Technology Corp. +1424  Videoserver Connections +1425  Chelsio Communications Inc +	000b  T210 Protocol Engine +	000c  T204 Protocol Engine +	0022  10GbE Ethernet Adapter +	0030  T310 10GbE Single Port Adapter +		103c 705e  PCIe 10GBase-SR [AD386A] +	0031  T320 10GbE Dual Port Adapter +	0032  T302 1GbE Dual Port Adapter +	0033  T304 1GbE Quad Port Adapter +	0034  B320 10GbE Dual Port Adapter +	0035  S310-CR 10GbE Single Port Adapter +	0036  S320-LP-CR 10GbE Dual Port Adapter +	0037  N320-G2-CR 10GbE Dual Port Adapter +	4001  T420-CR Unified Wire Ethernet Controller +	4002  T422-CR Unified Wire Ethernet Controller +	4003  T440-CR Unified Wire Ethernet Controller +	4004  T420-BCH Unified Wire Ethernet Controller +	4005  T440-BCH Unified Wire Ethernet Controller +	4006  T440-CH Unified Wire Ethernet Controller +	4007  T420-SO Unified Wire Ethernet Controller +	4008  T420-CX Unified Wire Ethernet Controller +	4009  T420-BT Unified Wire Ethernet Controller +	400a  T404-BT Unified Wire Ethernet Controller +	400b  B420-SR Unified Wire Ethernet Controller +	400c  B404-BT Unified Wire Ethernet Controller +	400d  T480 Unified Wire Ethernet Controller +	400e  T440-LP-CR Unified Wire Ethernet Controller +	400f  T440 [Amsterdam] Unified Wire Ethernet Controller +	4080  T480-4080 T480 Unified Wire Ethernet Controller +	4081  T440F-4081 T440-FCoE Unified Wire Ethernet Controller +	4082  T420-4082  Unified Wire Ethernet Controller +	4083  T420X-4083 Unified Wire Ethernet Controller +	4084  T440-4084 Unified Wire Ethernet Controller +	4085  T420-4085 SFP+ Unified Wire Ethernet Controller +	4086  T440-4086 10Gbase-T Unified Wire Ethernet Controller +	4087  T440T-4087 Unified Wire Ethernet Controller +	4088  T440-4088 Unified Wire Ethernet Controller +	4401  T420-CR Unified Wire Ethernet Controller +	4402  T422-CR Unified Wire Ethernet Controller +	4403  T440-CR Unified Wire Ethernet Controller +	4404  T420-BCH Unified Wire Ethernet Controller +	4405  T440-BCH Unified Wire Ethernet Controller +	4406  T440-CH Unified Wire Ethernet Controller +	4407  T420-SO Unified Wire Ethernet Controller +	4408  T420-CX Unified Wire Ethernet Controller +	4409  T420-BT Unified Wire Ethernet Controller +	440a  T404-BT Unified Wire Ethernet Controller +	440b  B420-SR Unified Wire Ethernet Controller +	440c  B404-BT Unified Wire Ethernet Controller +	440d  T480 Unified Wire Ethernet Controller +	440e  T440-LP-CR Unified Wire Ethernet Controller +	440f  T440 [Amsterdam] Unified Wire Ethernet Controller +	4480  T480-4080 T480 Unified Wire Ethernet Controller +	4481  T440F-4081 T440-FCoE Unified Wire Ethernet Controller +	4482  T420-4082  Unified Wire Ethernet Controller +	4483  T420X-4083 Unified Wire Ethernet Controller +	4484  T440-4084 Unified Wire Ethernet Controller +	4485  T420-4085 SFP+ Unified Wire Ethernet Controller +	4486  T440-4086 10Gbase-T Unified Wire Ethernet Controller +	4487  T440T-4087 Unified Wire Ethernet Controller +	4488  T440-4088 Unified Wire Ethernet Controller +	4501  T420-CR Unified Wire Storage Controller +	4502  T422-CR Unified Wire Storage Controller +	4503  T440-CR Unified Wire Storage Controller +	4504  T420-BCH Unified Wire Storage Controller +	4505  T440-BCH Unified Wire Storage Controller +	4506  T440-CH Unified Wire Storage Controller +	4507  T420-SO Unified Wire Storage Controller +	4508  T420-CX Unified Wire Storage Controller +	4509  T420-BT Unified Wire Storage Controller +	450a  T404-BT Unified Wire Storage Controller +	450b  B420-SR Unified Wire Storage Controller +	450c  B404-BT Unified Wire Storage Controller +	450d  T480 Unified Wire Storage Controller +	450e  T440-LP-CR Unified Wire Storage Controller +	450f  T440 [Amsterdam] Unified Wire Storage Controller +	4580  T480-4080 T480 Unified Wire Storage Controller +	4581  T440F-4081 T440-FCoE Unified Wire Storage Controller +	4582  T420-4082  Unified Wire Storage Controller +	4583  T420X-4083 Unified Wire Storage Controller +	4584  T440-4084 Unified Wire Storage Controller +	4585  T420-4085 SFP+ Unified Wire Storage Controller +	4586  T440-4086 10Gbase-T Unified Wire Storage Controller +	4587  T440T-4087 Unified Wire Storage Controller +	4588  T440-4088 Unified Wire Storage Controller +	4601  T420-CR Unified Wire Storage Controller +	4602  T422-CR Unified Wire Storage Controller +	4603  T440-CR Unified Wire Storage Controller +	4604  T420-BCH Unified Wire Storage Controller +	4605  T440-BCH Unified Wire Storage Controller +	4606  T440-CH Unified Wire Storage Controller +	4607  T420-SO Unified Wire Storage Controller +	4608  T420-CX Unified Wire Storage Controller +	4609  T420-BT Unified Wire Storage Controller +	460a  T404-BT Unified Wire Storage Controller +	460b  B420-SR Unified Wire Storage Controller +	460c  B404-BT Unified Wire Storage Controller +	460d  T480 Unified Wire Storage Controller +	460e  T440-LP-CR Unified Wire Storage Controller +	460f  T440 [Amsterdam] Unified Wire Storage Controller +	4680  T480-4080 T480 Unified Wire Storage Controller +	4681  T440F-4081 T440-FCoE Unified Wire Storage Controller +	4682  T420-4082  Unified Wire Storage Controller +	4683  T420X-4083 Unified Wire Storage Controller +	4684  T440-4084 Unified Wire Storage Controller +	4685  T420-4085 SFP+ Unified Wire Storage Controller +	4686  T440-4086 10Gbase-T Unified Wire Storage Controller +	4687  T440T-4087 Unified Wire Storage Controller +	4688  T440-4088 Unified Wire Storage Controller +	4701  T420-CR Unified Wire Ethernet Controller +	4702  T422-CR Unified Wire Ethernet Controller +	4703  T440-CR Unified Wire Ethernet Controller +	4704  T420-BCH Unified Wire Ethernet Controller +	4705  T440-BCH Unified Wire Ethernet Controller +	4706  T440-CH Unified Wire Ethernet Controller +	4707  T420-SO Unified Wire Ethernet Controller +	4708  T420-CX Unified Wire Ethernet Controller +	4709  T420-BT Unified Wire Ethernet Controller +	470a  T404-BT Unified Wire Ethernet Controller +	470b  B420-SR Unified Wire Ethernet Controller +	470c  B404-BT Unified Wire Ethernet Controller +	470d  T480 Unified Wire Ethernet Controller +	470e  T440-LP-CR Unified Wire Ethernet Controller +	470f  T440 [Amsterdam] Unified Wire Ethernet Controller +	4780  T480-4080 T480 Unified Wire Ethernet Controller +	4781  T440F-4081 T440-FCoE Unified Wire Ethernet Controller +	4782  T420-4082  Unified Wire Ethernet Controller +	4783  T420X-4083 Unified Wire Ethernet Controller +	4784  T440-4084 Unified Wire Ethernet Controller +	4785  T420-4085 SFP+ Unified Wire Ethernet Controller +	4786  T440-4086 10Gbase-T Unified Wire Ethernet Controller +	4787  T440T-4087 Unified Wire Ethernet Controller +	4788  T440-4088 Unified Wire Ethernet Controller +	4801  T420-CR Unified Wire Ethernet Controller [VF] +	4802  T422-CR Unified Wire Ethernet Controller [VF] +	4803  T440-CR Unified Wire Ethernet Controller [VF] +	4804  T420-BCH Unified Wire Ethernet Controller [VF] +	4805  T440-BCH Unified Wire Ethernet Controller [VF] +	4806  T440-CH Unified Wire Ethernet Controller [VF] +	4807  T420-SO Unified Wire Ethernet Controller [VF] +	4808  T420-CX Unified Wire Ethernet Controller [VF] +	4809  T420-BT Unified Wire Ethernet Controller [VF] +	480a  T404-BT Unified Wire Ethernet Controller [VF] +	480b  B420-SR Unified Wire Ethernet Controller [VF] +	480c  B404-BT Unified Wire Ethernet Controller [VF] +	480d  T480 Unified Wire Ethernet Controller [VF] +	480e  T440-LP-CR Unified Wire Ethernet Controller [VF] +	480f  T440 [Amsterdam] Unified Wire Ethernet Controller [VF] +	4880  T480-4080 T480 Unified Wire Ethernet Controller [VF] +	4881  T440F-4081 T440-FCoE Unified Wire Ethernet Controller [VF] +	4882  T420-4082 Unified Wire Ethernet Controller [VF] +	4883  T420X-4083 Unified Wire Ethernet Controller [VF] +	4884  T440-4084 Unified Wire Ethernet Controller [VF] +	4885  T420-4085 SFP+ Unified Wire Ethernet Controller [VF] +	4886  T440-4086 10Gbase-T Unified Wire Ethernet Controller [VF] +	4887  T440T-4087 Unified Wire Ethernet Controller [VF] +	4888  T440-4088 Unified Wire Ethernet Controller [VF] +	5001  T520-CR Unified Wire Ethernet Controller +	5002  T522-CR Unified Wire Ethernet Controller +	5003  T540-CR Unified Wire Ethernet Controller +	5004  T520-BCH Unified Wire Ethernet Controller +	5005  T540-BCH Unified Wire Ethernet Controller +	5006  T540-CH Unified Wire Ethernet Controller +	5007  T520-SO Unified Wire Ethernet Controller +	5008  T520-CX Unified Wire Ethernet Controller +	5009  T520-BT Unified Wire Ethernet Controller +	500a  T504-BT Unified Wire Ethernet Controller +	500b  B520-SR Unified Wire Ethernet Controller +	500c  B504-BT Unified Wire Ethernet Controller +	500d  T580-CR Unified Wire Ethernet Controller +	500e  T540-LP-CR Unified Wire Ethernet Controller +	500f  T540 [Amsterdam] Unified Wire Ethernet Controller +	5010  T580-LP-CR Unified Wire Ethernet Controller +	5011  T520-LL-CR Unified Wire Ethernet Controller +	5012  T560-CR Unified Wire Ethernet Controller +	5013  T580-CHR Unified Wire Ethernet Controller +	5014  T580-LP-SO-CR Unified Wire Ethernet Controller +	5015  T502-BT Unified Wire Ethernet Controller +	5080  T540-5080 Unified Wire Ethernet Controller +	5081  T540-5081 Unified Wire Ethernet Controller +	5082  T504-5082 Unified Wire Ethernet Controller +	5083  T540-5083 Unified Wire Ethernet Controller +	5084  T580-5084 Unified Wire Ethernet Controller +	5085  T580-5085 Unified Wire Ethernet Controller +	5086  T580-5086 Unified Wire Ethernet Controller +	5087  T580-5087 Unified Wire Ethernet Controller +	5088  T570-5088 Unified Wire Ethernet Controller +	5089  T520-5089 Unified Wire Ethernet Controller +	5401  T520-CR Unified Wire Ethernet Controller +	5402  T522-CR Unified Wire Ethernet Controller +	5403  T540-CR Unified Wire Ethernet Controller +	5404  T520-BCH Unified Wire Ethernet Controller +	5405  T540-BCH Unified Wire Ethernet Controller +	5406  T540-CH Unified Wire Ethernet Controller +	5407  T520-SO Unified Wire Ethernet Controller +	5408  T520-CX Unified Wire Ethernet Controller +	5409  T520-BT Unified Wire Ethernet Controller +	540a  T504-BT Unified Wire Ethernet Controller +	540b  B520-SR Unified Wire Ethernet Controller +	540c  B504-BT Unified Wire Ethernet Controller +	540d  T580-CR Unified Wire Ethernet Controller +	540e  T540-LP-CR Unified Wire Ethernet Controller +	540f  T540 [Amsterdam] Unified Wire Ethernet Controller +	5410  T580-LP-CR Unified Wire Ethernet Controller +	5411  T520-LL-CR Unified Wire Ethernet Controller +	5412  T560-CR Unified Wire Ethernet Controller +	5413  T580-CHR Unified Wire Ethernet Controller +	5414  T580-LP-SO-CR Unified Wire Ethernet Controller +	5415  T502-BT Unified Wire Ethernet Controller +	5480  T540-5080 Unified Wire Ethernet Controller +	5481  T540-5081 Unified Wire Ethernet Controller +	5482  T504-5082 Unified Wire Ethernet Controller +	5483  T540-5083 Unified Wire Ethernet Controller +	5484  T580-5084 Unified Wire Ethernet Controller +	5485  T580-5085 Unified Wire Ethernet Controller +	5486  T580-5086 Unified Wire Ethernet Controller +	5487  T580-5087 Unified Wire Ethernet Controller +	5488  T570-5088 Unified Wire Ethernet Controller +	5489  T520-5089 Unified Wire Ethernet Controller +	5501  T520-CR Unified Wire Storage Controller +	5502  T522-CR Unified Wire Storage Controller +	5503  T540-CR Unified Wire Storage Controller +	5504  T520-BCH Unified Wire Storage Controller +	5505  T540-BCH Unified Wire Storage Controller +	5506  T540-CH Unified Wire Storage Controller +	5507  T520-SO Unified Wire Storage Controller +	5508  T520-CX Unified Wire Storage Controller +	5509  T520-BT Unified Wire Storage Controller +	550a  T504-BT Unified Wire Storage Controller +	550b  B520-SR Unified Wire Storage Controller +	550c  B504-BT Unified Wire Storage Controller +	550d  T580-CR Unified Wire Storage Controller +	550e  T540-LP-CR Unified Wire Storage Controller +	550f  T540 [Amsterdam] Unified Wire Storage Controller +	5510  T580-LP-CR Unified Wire Storage Controller +	5511  T520-LL-CR Unified Wire Storage Controller +	5512  T560-CR Unified Wire Storage Controller +	5513  T580-CHR Unified Wire Storage Controller +	5514  T580-LP-SO-CR Unified Wire Storage Controller +	5515  T502-BT Unified Wire Storage Controller +	5580  T540-5080 Unified Wire Storage Controller +	5581  T540-5081 Unified Wire Storage Controller +	5582  T504-5082 Unified Wire Storage Controller +	5583  T540-5083 Unified Wire Storage Controller +	5584  T580-5084 Unified Wire Storage Controller +	5585  T580-5085 Unified Wire Storage Controller +	5586  T580-5086 Unified Wire Storage Controller +	5587  T580-5087 Unified Wire Storage Controller +	5588  T570-5088 Unified Wire Storage Controller +	5589  T520-5089 Unified Wire Storage Controller +	5601  T520-CR Unified Wire Storage Controller +	5602  T522-CR Unified Wire Storage Controller +	5603  T540-CR Unified Wire Storage Controller +	5604  T520-BCH Unified Wire Storage Controller +	5605  T540-BCH Unified Wire Storage Controller +	5606  T540-CH Unified Wire Storage Controller +	5607  T520-SO Unified Wire Storage Controller +	5608  T520-CX Unified Wire Storage Controller +	5609  T520-BT Unified Wire Storage Controller +	560a  T504-BT Unified Wire Storage Controller +	560b  B520-SR Unified Wire Storage Controller +	560c  B504-BT Unified Wire Storage Controller +	560d  T580-CR Unified Wire Storage Controller +	560e  T540-LP-CR Unified Wire Storage Controller +	560f  T540 [Amsterdam] Unified Wire Storage Controller +	5610  T580-LP-CR Unified Wire Storage Controller +	5611  T520-LL-CR Unified Wire Storage Controller +	5612  T560-CR Unified Wire Storage Controller +	5613  T580-CHR Unified Wire Storage Controller +	5614  T580-LP-SO-CR Unified Wire Storage Controller +	5615  T502-BT Unified Wire Storage Controller +	5680  T540-5080 Unified Wire Storage Controller +	5681  T540-5081 Unified Wire Storage Controller +	5682  T504-5082 Unified Wire Storage Controller +	5683  T540-5083 Unified Wire Storage Controller +	5684  T580-5084 Unified Wire Storage Controller +	5685  T580-5085 Unified Wire Storage Controller +	5686  T580-5086 Unified Wire Storage Controller +	5687  T580-5087 Unified Wire Storage Controller +	5688  T570-5088 Unified Wire Storage Controller +	5689  T520-5089 Unified Wire Storage Controller +	5701  T520-CR Unified Wire Ethernet Controller +	5702  T522-CR Unified Wire Ethernet Controller +	5703  T540-CR Unified Wire Ethernet Controller +	5704  T520-BCH Unified Wire Ethernet Controller +	5705  T540-BCH Unified Wire Ethernet Controller +	5706  T540-CH Unified Wire Ethernet Controller +	5707  T520-SO Unified Wire Ethernet Controller +	5708  T520-CX Unified Wire Ethernet Controller +	5709  T520-BT Unified Wire Ethernet Controller +	570a  T504-BT Unified Wire Ethernet Controller +	570b  B520-SR Unified Wire Ethernet Controller +	570c  B504-BT Unified Wire Ethernet Controller +	570d  T580-CR Unified Wire Ethernet Controller +	570e  T540-LP-CR Unified Wire Ethernet Controller +	570f  T540 [Amsterdam] Unified Wire Ethernet Controller +	5710  T580-LP-CR Unified Wire Ethernet Controller +	5711  T520-LL-CR Unified Wire Ethernet Controller +	5712  T560-CR Unified Wire Ethernet Controller +	5713  T580-CR Unified Wire Ethernet Controller +	5714  T580-LP-SO-CR Unified Wire Ethernet Controller +	5715  T502-BT Unified Wire Ethernet Controller +	5780  T540-5080 Unified Wire Ethernet Controller +	5781  T540-5081 Unified Wire Ethernet Controller +	5782  T504-5082 Unified Wire Ethernet Controller +	5783  T540-5083 Unified Wire Ethernet Controller +	5784  T580-5084 Unified Wire Ethernet Controller +	5785  T580-5085 Unified Wire Ethernet Controller +	5786  T580-5086 Unified Wire Ethernet Controller +	5787  T580-5087 Unified Wire Ethernet Controller +	5788  T570-5088 Unified Wire Ethernet Controller +	5789  T520-5089 Unified Wire Ethernet Controller +	5801  T520-CR Unified Wire Ethernet Controller [VF] +	5802  T522-CR Unified Wire Ethernet Controller [VF] +	5803  T540-CR Unified Wire Ethernet Controller [VF] +	5804  T520-BCH Unified Wire Ethernet Controller [VF] +	5805  T540-BCH Unified Wire Ethernet Controller [VF] +	5806  T540-CH Unified Wire Ethernet Controller [VF] +	5807  T520-SO Unified Wire Ethernet Controller [VF] +	5808  T520-CX Unified Wire Ethernet Controller [VF] +	5809  T520-BT Unified Wire Ethernet Controller [VF] +	580a  T504-BT Unified Wire Ethernet Controller [VF] +	580b  B520-SR Unified Wire Ethernet Controller [VF] +	580c  B504-BT Unified Wire Ethernet Controller [VF] +	580d  T580-CR Unified Wire Ethernet Controller [VF] +	580e  T540-LP-CR Unified Wire Ethernet Controller [VF] +	580f  T540 [Amsterdam] Unified Wire Ethernet Controller [VF] +	5810  T580-LP-CR Unified Wire Ethernet Controller [VF] +	5811  T520-LL-CR Unified Wire Ethernet Controller [VF] +	5812  T560-CR Unified Wire Ethernet Controller [VF] +	5813  T580-CHR Unified Wire Ethernet Controller [VF] +	5814  T580-LP-SO-CR Unified Wire Ethernet Controller [VF] +	5815  T502-BT Unified Wire Ethernet Controller [VF] +	5880  T540-5080 Unified Wire Ethernet Controller [VF] +	5881  T540-5081 Unified Wire Ethernet Controller [VF] +	5882  T504-5082 Unified Wire Ethernet Controller [VF] +	5883  T540-5083 Unified Wire Ethernet Controller [VF] +	5884  T580-5084 Unified Wire Ethernet Controller [VF] +	5885  T580-5085 Unified Wire Ethernet Controller [VF] +	5886  T580-5086 Unified Wire Ethernet Controller [VF] +	5887  T580-5087 Unified Wire Ethernet Controller [VF] +	5888  T570-5088 Unified Wire Ethernet Controller [VF] +	5889  T520-5089 Unified Wire Ethernet Controller [VF] +	a000  PE10K Unified Wire Ethernet Controller +1426  Storage Technology Corp. +1427  Better On-Line Solutions +1428  Edec Co Ltd +1429  Unex Technology Corp. +142a  Kingmax Technology Inc +142b  Radiolan +142c  Minton Optic Industry Co Ltd +142d  Pix stream Inc +142e  Vitec Multimedia +	4020  VM2-2 [Video Maker 2] MPEG1/2 Encoder +	4337  VM2-2-C7 [Video Maker 2 rev. C7] MPEG1/2 Encoder +142f  Radicom Research Inc +1430  ITT Aerospace/Communications Division +1431  Gilat Satellite Networks +1432  Edimax Computer Co. +	9130  RTL81xx Fast Ethernet +1433  Eltec Elektronik GmbH +# Nee Real Time Devices US Inc. +1435  RTD Embedded Technologies, Inc. +	4520  PCI4520 +	6020  SPM6020 +	6030  SPM6030 +	6420  SPM186420 +	6430  SPM176430 +	6431  SPM176431 +	7520  DM7520 +	7540  SDM7540 +	7820  DM7820 +1436  CIS Technology Inc +1437  Nissin Inc Co +1438  Atmel-dream +1439  Outsource Engineering & Mfg. Inc +143a  Stargate Solutions Inc +143b  Canon Research Center, America +143c  Amlogic Inc +143d  Tamarack Microelectronics Inc +143e  Jones Futurex Inc +143f  Lightwell Co Ltd - Zax Division +1440  ALGOL Corp. +1441  AGIE Ltd +1442  Phoenix Contact GmbH & Co. +1443  Unibrain S.A. +1444  TRW +1445  Logical DO Ltd +1446  Graphin Co Ltd +1447  AIM GmBH +1448  Alesis Studio Electronics +1449  TUT Systems Inc +144a  Adlink Technology +	6208  PCI-6208V +	7250  PCI-7250 +	7296  PCI-7296 +	7432  PCI-7432 +	7433  PCI-7433 +	7434  PCI-7434 +	7841  PCI-7841 +	8133  PCI-8133 +	8164  PCI-8164 +	8554  PCI-8554 +	9111  PCI-9111 +	9113  PCI-9113 +	9114  PCI-9114 +# nee Loronix Information Systems Inc. +144b  Verint Systems Inc. +144c  Catalina Research Inc +144d  Samsung Electronics Co Ltd +	1600  Apple PCIe SSD +	a800  XP941 PCIe SSD +	a820  NVMe SSD Controller 171X +		1028 1f95  Express Flash NVMe XS1715 SSD 400GB +		1028 1f96  Express Flash NVMe XS1715 SSD 800GB +		1028 1f97  Express Flash NVMe XS1715 SSD 1600GB +144e  OLITEC +144f  Askey Computer Corp. +1450  Octave Communications Ind. +1451  SP3D Chip Design GmBH +1453  MYCOM Inc +1454  Altiga Networks +1455  Logic Plus Plus Inc +1456  Advanced Hardware Architectures +1457  Nuera Communications Inc +1458  Gigabyte Technology Co., Ltd +1459  DOOIN Electronics +145a  Escalate Networks Inc +145b  PRAIM SRL +145c  Cryptek +145d  Gallant Computer Inc +145e  Aashima Technology B.V. +145f  Baldor Electric Company +	0001  NextMove PCI +1460  DYNARC INC +1461  Avermedia Technologies Inc +	a3ce  M179 +	a3cf  M179 +	a836  M115 DVB-T, PAL/SECAM/NTSC Tuner +	e836  M115S Hybrid Analog/DVB PAL/SECAM/NTSC Tuner +	f436  AVerTV Hybrid+FM +1462  Micro-Star International Co., Ltd. [MSI] +1463  Fast Corporation +1464  Interactive Circuits & Systems Ltd +1465  GN NETTEST Telecom DIV. +1466  Designpro Inc. +1467  DIGICOM SPA +1468  AMBIT Microsystem Corp. +1469  Cleveland Motion Controls +# formerly IFR. +146a  Aeroflex +# 1.5 GHz to 3.0 GHz x 1Hz +	3010  3010 RF Synthesizer +	3a11  3011A PXI RF Synthesizer +146b  Parascan Technologies Ltd +146c  Ruby Tech Corp. +	1430  FE-1430TX Fast Ethernet PCI Adapter +146d  Tachyon, INC. +146e  Williams Electronics Games, Inc. +146f  Multi Dimensional Consulting Inc +1470  Bay Networks +1471  Integrated Telecom Express Inc +1472  DAIKIN Industries, Ltd +1473  ZAPEX Technologies Inc +1474  Doug Carson & Associates +1475  PICAZO Communications +1476  MORTARA Instrument Inc +1477  Net Insight +1478  DIATREND Corporation +1479  TORAY Industries Inc +147a  FORMOSA Industrial Computing +147b  ABIT Computer Corp. +	1084  IP35 [Dark Raider] +147c  AWARE, Inc. +147d  Interworks Computer Products +147e  Matsushita Graphic Communication Systems, Inc. +147f  NIHON UNISYS, Ltd. +1480  SCII Telecom +1481  BIOPAC Systems Inc +1482  ISYTEC - Integrierte Systemtechnik GmBH +	0001  PCI-16 Host Interface for ITC-16 +1483  LABWAY Corporation +1484  Logic Corporation +1485  ERMA - Electronic GmBH +1486  L3 Communications Telemetry & Instrumentation +1487  MARQUETTE Medical Systems +1488  KONTRON Electronik GmBH +1489  KYE Systems Corporation +148a  OPTO +148b  INNOMEDIALOGIC Inc. +148c  Tul Corporation / PowerColor +148d  DIGICOM Systems, Inc. +	1003  HCF 56k Data/Fax Modem +148e  OSI Plus Corporation +148f  Plant Equipment, Inc. +	5370  Dexlink AUWL15I1 +1490  Stone Microsystems PTY Ltd. +1491  ZEAL Corporation +1492  Time Logic Corporation +1493  MAKER Communications +1494  WINTOP Technology, Inc. +1495  TOKAI Communications Industry Co. Ltd +1496  JOYTECH Computer Co., Ltd. +1497  SMA Regelsysteme GmBH +	1497  SMA Technologie AG +1498  TEWS Technologies GmbH +	0330  TPMC816 2 Channel CAN bus controller. +	035d  TPMC861 4-Channel Isolated Serial Interface RS422/RS485 +	0385  TPMC901 Extended CAN bus with 2/4/6 CAN controller +	21cc  TCP460 CompactPCI 16 Channel Serial Interface RS232/RS422 +	21cd  TCP461 CompactPCI 8 Channel Serial Interface RS232/RS422 +	3064  TPCI100 (2 Slot IndustryPack PCI Carrier) +	30c8  TPCI200 4 Slot IndustryPack PCI Carrier +	70c8  TPCE200 4 Slot IndustryPack PCIe Carrier +1499  EMTEC CO., Ltd +149a  ANDOR Technology Ltd +149b  SEIKO Instruments Inc +149c  OVISLINK Corp. +149d  NEWTEK Inc +	0001  Video Toaster for PC +149e  Mapletree Networks Inc. +149f  LECTRON Co Ltd +14a0  SOFTING GmBH +14a1  Systembase Co Ltd +14a2  Millennium Engineering Inc +14a3  Maverick Networks +# registered as GVC/BCM Advanced Research +14a4  Broadcom Corporation (Wrong ID) +	4318  BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller +14a5  XIONICS Document Technologies Inc +14a6  INOVA Computers GmBH & Co KG +14a7  MYTHOS Systems Inc +14a8  FEATRON Technologies Corporation +14a9  HIVERTEC Inc +14aa  Advanced MOS Technology Inc +14ab  Mentor Graphics Corp. +14ac  Novaweb Technologies Inc +14ad  Time Space Radio AB +14ae  CTI, Inc +14af  Guillemot Corporation +	7102  3D Prophet II MX +14b0  BST Communication Technology Ltd +14b1  Nextcom K.K. +14b2  ENNOVATE Networks Inc +14b3  XPEED Inc +	0000  DSL NIC +14b4  PHILIPS Business Electronics B.V. +14b5  Creamware GmBH +	0200  Scope +	0300  Pulsar +	0400  PulsarSRB +	0600  Pulsar2 +	0800  DSP-Board +	0900  DSP-Board +	0a00  DSP-Board +	0b00  DSP-Board +14b6  Quantum Data Corp. +14b7  PROXIM Inc +	0001  Symphony 4110 +14b8  Techsoft Technology Co Ltd +14b9  Cisco Aironet Wireless Communications +	0001  PC4800 +	0340  PC4800 +	0350  350 series 802.11b Wireless LAN Adapter +	4500  PC4500 +	4800  Cisco Aironet 340 802.11b Wireless LAN Adapter/Aironet PC4800 +	a504  Cisco Aironet Wireless 802.11b +	a505  Cisco Aironet CB20a 802.11a Wireless LAN Adapter +	a506  Cisco Aironet Mini PCI b/g +14ba  INTERNIX Inc. +# ARCNET interface card based on SMSC COM20022 chip and manufactured for SMSC Japan +	0600  ARC-PCI/22 +14bb  SEMTECH Corporation +14bc  Globespan Semiconductor Inc. +	d002  Pulsar [PCI ADSL Card] +	d00f  Pulsar [PCI ADSL Card] +14bd  CARDIO Control N.V. +14be  L3 Communications +14bf  SPIDER Communications Inc. +14c0  COMPAL Electronics Inc +14c1  MYRICOM Inc. +	0008  Myri-10G Dual-Protocol NIC +		14c1 0008  10G-PCIE-8A +		14c1 0009  10G-PCIE-8A (MSI-X firmware) +		14c1 000a  10G-PCIE-8B +	8043  Myrinet 2000 Scalable Cluster Interconnect +		103c 1240  Myrinet M2L-PCI64/2-3.0 LANai 7.4 (HP OEM) +14c2  DTK Computer +14c3  MEDIATEK Corp. +	7630  MT7630e 802.11bgn Wireless Network Adapter +# MT7612E too? +	7662  MT7662E 802.11ac PCI Express Wireless Network Adapter +14c4  IWASAKI Information Systems Co Ltd +14c5  Automation Products AB +14c6  Data Race Inc +14c7  Modular Technology Holdings Ltd +14c8  Turbocomm Tech. Inc. +14c9  ODIN Telesystems Inc +14ca  PE Logic Corp. +14cb  Billionton Systems Inc +14cc  NAKAYO Telecommunications Inc +14cd  Universal Scientific Ind. +14ce  Whistle Communications +14cf  TEK Microsystems Inc. +14d0  Ericsson Axe R & D +14d1  Computer Hi-Tech Co Ltd +14d2  Titan Electronics Inc +	8001  VScom 010L 1 port parallel adaptor +	8002  VScom 020L 2 port parallel adaptor +	8010  VScom 100L 1 port serial adaptor +	8011  VScom 110L 1 port serial and 1 port parallel adaptor +	8020  VScom 200L 1 or 2 port serial adaptor +	8021  VScom 210L 2 port serial and 1 port parallel adaptor +	8028  VScom 200I/200I-SI 2-port serial adapter +	8040  VScom 400L 4 port serial adaptor +	8043  VScom 430L 4-port serial and 3-port parallel adapter +	8048  VScom 400I 4-port serial adapter +	8080  VScom 800L 8 port serial adaptor +	8088  VScom 800I 8-port serial adapter +	a000  VScom 010H 1 port parallel adaptor +	a001  VScom 100H 1 port serial adaptor +	a003  VScom 400H 4 port serial adaptor +	a004  VScom 400HF1 4 port serial adaptor +	a005  VScom 200H 2 port serial adaptor +	a007  VScom PCI800EH (PCIe) 8-port serial adapter Port 1-4 +	a008  VScom PCI800EH (PCIe) 8-port serial adapter Port 5-8 +	a009  VScom PCI400EH (PCIe) 4-port serial adapter +	e001  VScom 010HV2 1 port parallel adaptor +	e010  VScom 100HV2 1 port serial adaptor +	e020  VScom 200HV2 2 port serial adaptor +14d3  CIRTECH (UK) Ltd +14d4  Panacom Technology Corp +14d5  Nitsuko Corporation +14d6  Accusys Inc +	6101  ACS-61xxx, PCIe to SAS/SATA RAID HBA +	6201  ACS-62xxx, External PCIe to SAS/SATA RAID controller +14d7  Hirakawa Hewtech Corp +14d8  HOPF Elektronik GmBH +# Formerly SiPackets, Inc., formerly API NetWorks, Inc., formerly Alpha Processor, Inc. +14d9  Alliance Semiconductor Corporation +	0010  AP1011/SP1011 HyperTransport-PCI Bridge [Sturgeon] +	9000  AS90L10204/10208 HyperTransport to PCI-X Bridge +14da  National Aerospace Laboratories +14db  AFAVLAB Technology Inc +	2120  TK9902 +	2182  AFAVLAB Technology Inc. 8-port serial card +14dc  Amplicon Liveline Ltd +	0000  PCI230 +	0001  PCI242 +	0002  PCI244 +	0003  PCI247 +	0004  PCI248 +	0005  PCI249 +	0006  PCI260 +	0007  PCI224 +	0008  PCI234 +	0009  PCI236 +	000a  PCI272 +	000b  PCI215 +14dd  Boulder Design Labs Inc +14de  Applied Integration Corporation +14df  ASIC Communications Corp +14e1  INVERTEX +14e2  INFOLIBRIA +14e3  AMTELCO +14e4  Broadcom Corporation +	0576  BCM43224 802.11a/b/g/n +	0800  Sentry5 Chipcommon I/O Controller +	0804  Sentry5 PCI Bridge +	0805  Sentry5 MIPS32 CPU +	0806  Sentry5 Ethernet Controller +	080b  Sentry5 Crypto Accelerator +	080f  Sentry5 DDR/SDR RAM Controller +	0811  Sentry5 External Interface Core +	0816  BCM3302 Sentry5 MIPS32 CPU +	1570  720p FaceTime HD Camera +	1600  NetXtreme BCM5752 Gigabit Ethernet PCI Express +		1028 01c1  Precision 490 +		1028 01c2  Latitude D620 +		103c 3015  PCIe LAN on Motherboard +		107b 5048  E4500 Onboard +		1259 2705  AT-2711FX +	1601  NetXtreme BCM5752M Gigabit Ethernet PCI Express +	1612  BCM70012 Video Decoder [Crystal HD] +	1615  BCM70015 Video Decoder [Crystal HD] +	1639  NetXtreme II BCM5709 Gigabit Ethernet +		1028 0235  PowerEdge R710 BCM5709 Gigabit Ethernet +		1028 0236  PowerEdge R610 BCM5709 Gigabit Ethernet +		1028 0237  PowerEdge T610 BCM5709 Gigabit Ethernet +		103c 7055  NC382i Integrated Multi-port PCI Express Gigabit Server Adapter +		103c 7059  NC382T PCI Express Dual Port Multifunction Gigabit Server Adapter +		10a9 8027  Quad port Gigabit Ethernet Controller +	163a  NetXtreme II BCM5709S Gigabit Ethernet +		1028 027b  PowerEdge M805 Broadcom NetXtreme II BCM5709S +		1028 029c  PowerEdge M710 BCM5709S Gigabit Ethernet +		103c 171d  NC382m Dual Port 1GbE Multifunction BL-c Adapter +		103c 7056  NC382i Integrated Quad Port PCI Express Gigabit Server Adapter +		1259 2984  AT-2973SX +	163b  NetXtreme II BCM5716 Gigabit Ethernet +		1028 028c  PowerEdge R410 BCM5716 Gigabit Ethernet +		1028 028d  PowerEdge T410 BCM5716 Gigabit Ethernet +		1028 02f1  PowerEdge R510 BCM5716 Gigabit Ethernet +	163c  NetXtreme II BCM5716S Gigabit Ethernet +	163d  NetXtreme II BCM57811 10-Gigabit Ethernet +	163e  NetXtreme II BCM57811 10 Gigabit Ethernet Multi Function +	163f  NetXtreme II BCM57811 10-Gigabit Ethernet Virtual Function +	1641  NetXtreme BCM57787 Gigabit Ethernet PCIe +	1642  NetXtreme BCM57764 Gigabit Ethernet PCIe +	1643  NetXtreme BCM5725 Gigabit Ethernet PCIe +	1644  NetXtreme BCM5700 Gigabit Ethernet +		1014 0277  Broadcom Vigil B5700 1000Base-T +		1028 00d1  Broadcom BCM5700 +		1028 0106  Broadcom BCM5700 +		1028 0109  Broadcom BCM5700 1000Base-T +		1028 010a  Broadcom BCM5700 1000BaseTX +		10b7 1000  3C996-T 1000Base-T +		10b7 1001  3C996B-T 1000Base-T +		10b7 1002  3C996C-T 1000Base-T +		10b7 1003  3C997-T 1000Base-T Dual Port +		10b7 1004  3C996-SX 1000Base-SX +		10b7 1005  3C997-SX 1000Base-SX Dual Port +		10b7 1008  3C942 Gigabit LOM (31X31) +		14e4 0002  NetXtreme 1000Base-SX +		14e4 0003  NetXtreme 1000Base-SX +		14e4 0004  NetXtreme 1000Base-T +		14e4 1028  NetXtreme 1000BaseTX +		14e4 1644  BCM5700 1000Base-T +	1645  NetXtreme BCM5701 Gigabit Ethernet +		0e11 007c  NC7770 Gigabit Server Adapter (PCI-X, 10/100/1000-T) +		0e11 007d  NC6770 Gigabit Server Adapter (PCI-X, 1000-SX) +		0e11 0085  NC7780 Gigabit Server Adapter (embedded, WOL) +		0e11 0099  NC7780 Gigabit Server Adapter (embedded, WOL) +		0e11 009a  NC7770 Gigabit Server Adapter (PCI-X, 10/100/1000-T) +		0e11 00c1  NC6770 Gigabit Server Adapter (PCI-X, 1000-SX) +		1028 0121  Broadcom BCM5701 1000Base-T +		103c 128a  BCM5701 1000Base-T (HP, OEM 3COM) +		103c 128b  1000Base-SX (PCI) [A7073A] +		103c 12a4  Core Lan 1000Base-T +		103c 12c1  IOX Core Lan 1000Base-T [A7109AX] +		103c 1300  Core LAN/SCSI Combo [A6794A] +		10a9 8010  IO9/IO10 Gigabit Ethernet (Copper) +		10a9 8011  Gigabit Ethernet (Copper) +		10a9 8012  Gigabit Ethernet (Fiber) +		10b7 1004  3C996-SX 1000Base-SX +		10b7 1006  3C996B-T 1000Base-T +		10b7 1007  3C1000-T 1000Base-T +		10b7 1008  3C940-BR01 1000Base-T +		14e4 0001  BCM5701 1000Base-T +		14e4 0005  BCM5701 1000Base-T +		14e4 0006  BCM5701 1000Base-T +		14e4 0007  BCM5701 1000Base-SX +		14e4 0008  BCM5701 1000Base-T +		14e4 1645  NetXtreme BCM5701 Gigabit Ethernet +		14e4 8008  BCM5701 1000Base-T +	1646  NetXtreme BCM5702 Gigabit Ethernet +		0e11 00bb  NC7760 1000BaseTX +		1028 0126  Broadcom BCM5702 1000BaseTX +		14e4 8009  BCM5702 1000BaseTX +	1647  NetXtreme BCM5703 Gigabit Ethernet +		0e11 0099  NC7780 1000BaseTX +		0e11 009a  NC7770 1000BaseTX +		10a9 8010  SGI IO9 Gigabit Ethernet (Copper) +		14e4 0009  BCM5703 1000BaseTX +		14e4 000a  BCM5703 1000BaseSX +		14e4 000b  BCM5703 1000BaseTX +		14e4 8009  BCM5703 1000BaseTX +		14e4 800a  BCM5703 1000BaseTX +	1648  NetXtreme BCM5704 Gigabit Ethernet +		0e11 00cf  NC7772 Gigabit Server Adapter (PCI-X, 10,100,1000-T) +		0e11 00d0  NC7782 Gigabit Server Adapter (PCI-X, 10,100,1000-T) +		0e11 00d1  NC7783 Gigabit Server Adapter (PCI-X, 10,100,1000-T) +		1028 014a  PowerEdge 1750 +		1028 0170  PowerEdge 6850 Broadcom NetXtreme BCM5704 +		103c 310f  NC7782 Gigabit Server Adapter (PCI-X, 10,100,1000-T) +		10a9 8013  Dual Port Gigabit Ethernet (PCI-X,Copper) +		10a9 8018  Dual Port Gigabit Ethernet (A330) +		10a9 801a  Dual Port Gigabit Ethernet (IA-blade) +		10a9 801b  Quad Port Gigabit Ethernet (PCI-E,Copper) +		10b7 2000  3C998-T Dual Port 10/100/1000 PCI-X +		10b7 3000  3C999-T Quad Port 10/100/1000 PCI-X +		1166 1648  NetXtreme CIOB-E 1000Base-T +		1734 100b  PRIMERGY RX/TX series onboard LAN +	1649  NetXtreme BCM5704S_2 Gigabit Ethernet +	164a  NetXtreme II BCM5706 Gigabit Ethernet +		103c 1709  NC371i Integrated PCI-X Multifunction Gigabit Server Adapter +		103c 3070  NC380T PCI Express Dual Port Multifunction Gigabit Server Adapter +		103c 3101  NC370T MultifuNCtion Gigabit Server Adapter +		103c 3106  NC370i Multifunction Gigabit Server Adapter +	164c  NetXtreme II BCM5708 Gigabit Ethernet +		1028 01f0  PowerEdge R900 Broadcom NetXtreme II BCM5708 +		1028 0205  PowerEdge 2970 Broadcom NetXtreme II BCM5708 +		1028 020b  PowerEdge T605 Broadcom NetXtreme II BCM5708 +		1028 0221  PowerEdge R805 Broadcom NetXtreme II BCM5708 +		1028 0223  PowerEdge R905 Broadcom NetXtreme II BCM5708 +		1028 1f12  PowerEdge R805/R905 Broadcom NetXtreme II BCM5708 +		103c 7037  NC373T PCI Express Multifunction Gigabit Server Adapter +		103c 7038  NC373i Integrated Multifunction Gigabit Server Adapter +		103c 7045  NC374m PCI Express Dual Port Multifunction Gigabit Server Adapter +	164d  NetXtreme BCM5702FE Gigabit Ethernet +	164e  NetXtreme II BCM57710 10-Gigabit PCIe [Everest] +		103c 171c  NC532m Dual Port 10GbE Multifunction BL-C Adapter +		103c 7058  NC532i Dual Port 10GbE Multifunction BL-C Adapter +	164f  NetXtreme II BCM57711 10-Gigabit PCIe +	1650  NetXtreme II BCM57711E 10-Gigabit PCIe +		103c 171c  NC532m Dual Port 10GbE Multifunction BL-C Adapter +		103c 7058  NC532i Dual Port 10GbE Multifunction BL-C Adapter +	1653  NetXtreme BCM5705 Gigabit Ethernet +		0e11 00e3  NC7761 Gigabit Server Adapter +		1734 1073  Primergy Econel 200 D2020 mainboard +	1654  NetXtreme BCM5705_2 Gigabit Ethernet +		0e11 00e3  NC7761 Gigabit Server Adapter +		103c 3100  NC1020 ProLiant Gigabit Server Adapter 32 PCI +		103c 3226  NC150T 4-port Gigabit Combo Switch & Adapter +	1655  NetXtreme BCM5717 Gigabit Ethernet PCIe +	1656  NetXtreme BCM5718 Gigabit Ethernet PCIe +	1657  NetXtreme BCM5719 Gigabit Ethernet PCIe +		103c 169d  Ethernet 1Gb 4-port 331FLR Adapter +	1659  NetXtreme BCM5721 Gigabit Ethernet PCI Express +		1014 02c6  eServer xSeries server mainboard +		1028 01e6  PowerEdge 860 +		1028 023c  PowerEdge R200 Broadcom NetXtreme BCM5721 +		103c 170b  NC320m PCI Express Dual Port Gigabit Server Adapter +		103c 7031  NC320T PCIe Gigabit Server Adapter +		103c 7032  NC320i PCIe Gigabit Server Adapter +		1734 1061  PRIMERGY RX/TX S2 series onboard LAN +	165a  NetXtreme BCM5722 Gigabit Ethernet PCI Express +# Dual NIC server +		1014 0378  IBM System x3350 (Machine type 4192) +		1028 020f  PowerEdge R300 Broadcom NetXtreme 5722 +		1028 0210  PowerEdge T300 Broadcom NetXtreme 5722 +		1028 0225  PowerEdge T105 Broadcom NetXtreme 5722 +		103c 7051  NC105i PCIe Gigabit Server Adapter +		103c 7052  NC105T PCIe Gigabit Server Adapter +	165b  NetXtreme BCM5723 Gigabit Ethernet PCIe +		103c 705d  NC107i Integrated PCI Express Gigabit Server Adapter +	165c  NetXtreme BCM5724 Gigabit Ethernet PCIe +	165d  NetXtreme BCM5705M Gigabit Ethernet +		1028 865d  Latitude D400 +		14e4 165d  Dell Latitude D600 +	165e  NetXtreme BCM5705M_2 Gigabit Ethernet +		103c 088c  NC8000 laptop +		103c 0890  NC6000 laptop +		103c 099c  NX6110/NC6120 +		10cf 1279  LifeBook E8010D +	165f  NetXtreme BCM5720 Gigabit Ethernet PCIe +	1662  NetXtreme II BCM57712 10 Gigabit Ethernet +	1663  NetXtreme II BCM57712 10 Gigabit Ethernet Multi Function +	1665  NetXtreme BCM5717 Gigabit Ethernet PCIe +	1668  NetXtreme BCM5714 Gigabit Ethernet +		103c 7039  NC324i PCIe Dual Port Gigabit Server Adapter +	1669  NetXtreme 5714S Gigabit Ethernet +	166a  NetXtreme BCM5780 Gigabit Ethernet +		103c 7035  NC325i Integrated Dual port PCIe Express Gigabit Server Adapter +	166b  NetXtreme BCM5780S Gigabit Ethernet +	166e  570x 10/100 Integrated Controller +	166f  NetXtreme II BCM57712 10 Gigabit Ethernet Virtual Function +	1672  NetXtreme BCM5754M Gigabit Ethernet PCI Express +	1673  NetXtreme BCM5755M Gigabit Ethernet PCI Express +	1674  NetXtreme BCM5756ME Gigabit Ethernet PCI Express +	1677  NetXtreme BCM5751 Gigabit Ethernet PCI Express +		1028 0176  Dimension XPS Gen 4 +		1028 0177  Dimension 8400 +		1028 0179  Optiplex GX280 +		1028 0182  Latitude D610 +		1028 0187  Precision M70 +		1028 01a8  Precision 380 +		1028 01ad  OptiPlex GX620 +		103c 3006  DC7100 SFF(DX878AV) +		1462 028c  915P/G Neo2 +		1734 105d  Scenic W620 +	1678  NetXtreme BCM5715 Gigabit Ethernet +		103c 703e  NC326i PCIe Dual Port Gigabit Server Adapter +	1679  NetXtreme BCM5715S Gigabit Ethernet +		103c 1707  NC326m PCIe Dual Port Adapter +		103c 170c  NC325m PCIe Quad Port Adapter +		103c 703c  NC326i PCIe Dual Port Gigabit Server Adapter +	167a  NetXtreme BCM5754 Gigabit Ethernet PCI Express +		1028 01da  OptiPlex 745 +		1028 01de  Precision 390 +		1028 01df  PowerEdge SC440 +		1028 0214  Precision T3400 +		1028 021e  Precision T5400 +	167b  NetXtreme BCM5755 Gigabit Ethernet PCI Express +		103c 280a  DC5750 Microtower +	167d  NetXtreme BCM5751M Gigabit Ethernet PCI Express +		1014 0577  ThinkPad Z60t +		103c 0934  HP nx8220 +		103c 0940  HP Compaq nw8240 Mobile Workstation +		17aa 2081  ThinkPad R60e +	167e  NetXtreme BCM5751F Fast Ethernet PCI Express +	167f  NetLink BCM5787F Fast Ethernet PCI Express +	1680  NetXtreme BCM5761e Gigabit Ethernet PCIe +	1681  NetXtreme BCM5761 Gigabit Ethernet PCIe +	1682  NetXtreme BCM57762 Gigabit Ethernet PCIe +	1683  NetXtreme BCM57767 Gigabit Ethernet PCIe +	1684  NetXtreme BCM5764M Gigabit Ethernet PCIe +	1685  NetXtreme II BCM57500S Gigabit Ethernet +	1686  NetXtreme BCM57766 Gigabit Ethernet PCIe +	1687  NetXtreme BCM5762 Gigabit Ethernet PCIe +	1688  NetXtreme BCM5761 10/100/1000BASE-T Ethernet +		1259 2708  AT-2712 FX +# The Broadcom 57800 device has two 1Gig ports and two 10Gig ports. The subsystem information can be used to differentiate. +	168a  NetXtreme II BCM57800 1/10 Gigabit Ethernet +		1028 1f5c  BCM57800 10-Gigabit Ethernet +		1028 1f5d  BCM57800 10-Gigabit Ethernet +		1028 1f67  BCM57800 1-Gigabit Ethernet +		1028 1f68  BCM57800 1-Gigabit Ethernet +	168d  NetXtreme II BCM57840 10/20 Gigabit Ethernet +	168e  NetXtreme II BCM57810 10 Gigabit Ethernet +		103c 1798  Flex-10 10Gb 2-port 530FLB Adapter [Meru] +		103c 17a5  HP Flex-10 10Gb 2-port 530M Adapter +		103c 18d3  HP Ethernet 10Gb 2-port 530T Adapter +		103c 1930  HP FlexFabric 10Gb 2-port 534FLR-SFP+ Adapter +		103c 1931  HP StoreFabric CN1100R Dual Port Converged Network Adapter +		103c 1932  HP FlexFabric 10Gb 2-port 534FLB Adapter +		103c 1933  HP FlexFabric 10Gb 2-port 534M Adapter +		103c 193a  HP FlexFabric 10Gb 2-port 533FLR-T Adapter +		103c 3382  HP Ethernet 10Gb 2-port 530FLR-SFP+ Adapter +		103c 339d  HP Ethernet 10Gb 2-port 530SFP+ Adapter +	1690  NetXtreme BCM57760 Gigabit Ethernet PCIe +	1691  NetLink BCM57788 Gigabit Ethernet PCIe +		1028 04aa  XPS 8300 +	1692  NetLink BCM57780 Gigabit Ethernet PCIe +		1025 033d  Aspire 7740G +	1693  NetLink BCM5787M Gigabit Ethernet PCI Express +		1025 0121  Aspire 5920G +		103c 30c0  6710b +	1694  NetLink BCM57790 Gigabit Ethernet PCIe +	1696  NetXtreme BCM5782 Gigabit Ethernet +		103c 12bc  d530 CMT (DG746A) +		14e4 000d  NetXtreme BCM5782 1000Base-T +	1698  NetLink BCM5784M Gigabit Ethernet PCIe +	1699  NetLink BCM5785 Gigabit Ethernet +	169a  NetLink BCM5786 Gigabit Ethernet PCI Express +	169b  NetLink BCM5787 Gigabit Ethernet PCI Express +	169c  NetXtreme BCM5788 Gigabit Ethernet +		103c 308b  MX6125 +		103c 30a1  NC2400 +		144d c018  X20 +		1462 590c  KT6 Delta-FIS2R (MS-6590) +	169d  NetLink BCM5789 Gigabit Ethernet PCI Express +	16a0  NetLink BCM5785 Fast Ethernet +	16a1  BCM57840 NetXtreme II 10 Gigabit Ethernet +	16a2  BCM57840 NetXtreme II 10/20-Gigabit Ethernet +		103c 1916  HP FlexFabric 20Gb 2-port 630FLB Adapter +		103c 1917  HP FlexFabric 20Gb 2-port 630M Adapter +	16a3  NetXtreme BCM57786 Gigabit Ethernet PCIe +	16a4  BCM57840 NetXtreme II Ethernet Multi Function +		103c 1916  HP NPAR 20Gb 2-port 630FLB Adapter +		103c 1917  HP NPAR 20Gb 2-port 630M Adapter +# The Broadcom 57800 device has two 1Gig ports and two 10Gig ports. The subsystem information can be used to differentiate. +	16a5  NetXtreme II BCM57800 1/10 Gigabit Ethernet Multi Function +		1028 1f5c  NetXtreme II BCM57800 10-Gigabit Ethernet Multi Function +		1028 1f5d  NetXtreme II BCM57800 10-Gigabit Ethernet Multi Function +		1028 1f67  NetXtreme II BCM57800 1-Gigabit Ethernet Multi Function +		1028 1f68  NetXtreme II BCM57800 1-Gigabit Ethernet Multi Function +	16a6  NetXtreme BCM5702X Gigabit Ethernet +		0e11 00bb  NC7760 Gigabit Server Adapter (PCI-X, 10/100/1000-T) +		1028 0126  BCM5702 1000Base-T +		14e4 000c  BCM5702 1000Base-T +		14e4 8009  BCM5702 1000Base-T +	16a7  NetXtreme BCM5703X Gigabit Ethernet +		0e11 00ca  NC7771 Gigabit Server Adapter (PCI-X, 10,100,1000-T) +		0e11 00cb  NC7781 Gigabit Server Adapter (PCI-X, 10,100,1000-T) +		1014 026f  eServer xSeries server mainboard +		14e4 0009  NetXtreme BCM5703 1000Base-T +		14e4 000a  NetXtreme BCM5703 1000Base-SX +		14e4 000b  NetXtreme BCM5703 1000Base-T +		14e4 800a  NetXtreme BCM5703 1000Base-T +	16a8  NetXtreme BCM5704S Gigabit Ethernet +		103c 132b  PCI-X 1000Mbps Dual-port Built-in +		10a9 8014  Dual Port Gigabit Ethernet (PCI-X,Fiber) +		10a9 801c  Quad Port Gigabit Ethernet (PCI-E,Fiber) +		10b7 2001  3C998-SX Dual Port 1000-SX PCI-X +# The Broadcom 57800 device has two 1Gig ports and two 10Gig ports. The subsystem information can be used to differentiate. +	16a9  NetXtreme II BCM57800 1/10 Gigabit Ethernet Virtual Function +		1028 1f5c  NetXtreme II BCM57800 10-Gigabit Ethernet Virtual Function +		1028 1f5d  NetXtreme II BCM57800 10-Gigabit Ethernet Virtual Function +		1028 1f67  NetXtreme II BCM57800 1-Gigabit Ethernet Virtual Function +		1028 1f68  NetXtreme II BCM57800 1-Gigabit Ethernet Virtual Function +	16aa  NetXtreme II BCM5706S Gigabit Ethernet +		103c 3102  NC370F MultifuNCtion Gigabit Server Adapter +		103c 310c  NC370i Multifunction Gigabit Server Adapter +	16ab  NetXtreme II BCM57840 10/20 Gigabit Ethernet Multi Function +	16ac  NetXtreme II BCM5708S Gigabit Ethernet +		1014 0304  NetXtreme II BCM5708S Gigabit Ethernet +		1028 01bb  PowerEdge 1955 Broadcom NetXtreme II BCM5708S +		1028 020c  PowerEdge M605 Broadcom NetXtreme II BCM5708S +		103c 1706  NC373m Multifunction Gigabit Server Adapter +		103c 7038  NC373i PCI Express Multifunction Gigabit Server Adapter +		103c 703b  NC373i Integrated Multifunction Gigabit Server Adapter +		103c 703d  NC373F PCI Express Multifunction Gigabit Server Adapter +	16ad  NetXtreme II BCM57840 10/20 Gigabit Ethernet Virtual Function +		103c 1916  HP FlexFabric 20Gb 2-port 630FLB Adapter +		103c 1917  HP FlexFabric 20Gb 2-port 630M Adapter +	16ae  NetXtreme II BCM57810 10 Gigabit Ethernet Multi Function +		103c 1798  HP NPAR 10Gb 2-port 530FLB Adapter +		103c 17a5  HP NPAR 10Gb 2-port 530M Adapter +		103c 18d3  HP NPAR 10Gb 2-port 530T Adapter +		103c 1930  HP NPAR 10Gb 2-port 534FLR-SFP+ Adapter +		103c 1931  HP NPAR CN1100R Dual Port Converged Network Adapter +		103c 1932  HP NPAR 10Gb 2-port 534FLB Adapter +		103c 1933  HP NPAR 10Gb 2-port 534M Adapter +		103c 193a  HP NPAR 10Gb 2-port 533FLR-T Adapter +		103c 3382  HP NPAR 10Gb 2-port 530FLR-SFP+ Adapter +		103c 339d  HP NPAR 10Gb 2-port 530SFP+ Adapter +	16af  NetXtreme II BCM57810 10 Gigabit Ethernet Virtual Function +		103c 1798  HP Flex-10 10Gb 2-port 530FLB Adapter +		103c 17a5  HP Flex-10 10Gb 2-port 530M Adapter +		103c 18d3  HP Ethernet 10Gb 2-port 530T Adapter +		103c 1930  HP FlexFabric 10Gb 2-port 534FLR-SFP+ Adapter +		103c 1931  HP StoreFabric CN1100R Dual Port Converged Network Adapter +		103c 1932  HP FlexFabric 10Gb 2-port 534FLB Adapter +		103c 1933  HP FlexFabric 10Gb 2-port 534M Adapter +		103c 193a  HP FlexFabric 10Gb 2-port 533FLR-T Adapter +		103c 3382  HP Ethernet 10Gb 2-port 530FLR-SFP+ Adapter +		103c 339d  HP Ethernet 10Gb 2-port 530SFP+ Adapter +	16b0  NetXtreme BCM57761 Gigabit Ethernet PCIe +	16b1  NetLink BCM57781 Gigabit Ethernet PCIe +		1849 96b1  Z77 Extreme4 motherboard +	16b2  NetLink BCM57791 Gigabit Ethernet PCIe +	16b3  NetXtreme BCM57786 Gigabit Ethernet PCIe +	16b4  NetXtreme BCM57765 Gigabit Ethernet PCIe +	16b5  NetLink BCM57785 Gigabit Ethernet PCIe +	16b6  NetLink BCM57795 Gigabit Ethernet PCIe +	16b7  NetXtreme BCM57782 Gigabit Ethernet PCIe +	16bc  BCM57765/57785 SDXC/MMC Card Reader +	16be  BCM57765/57785 MS Card Reader +	16bf  BCM57765/57785 xD-Picture Card Reader +	16c6  NetXtreme BCM5702A3 Gigabit Ethernet +		10b7 1100  3C1000B-T 10/100/1000 PCI +		14e4 000c  BCM5702 1000Base-T +		14e4 8009  BCM5702 1000Base-T +	16c7  NetXtreme BCM5703 Gigabit Ethernet +		0e11 00ca  NC7771 Gigabit Server Adapter (PCI-X, 10,100,1000-T) +		0e11 00cb  NC7781 Gigabit Server Adapter (PCI-X, 10,100,1000-T) +		103c 12c3  Combo FC/GigE-SX [A9782A] +		103c 12ca  Combo FC/GigE-T [A9784A] +		103c 1321  Core I/O LAN/SCSI Combo [AB314A] +		14e4 0009  NetXtreme BCM5703 1000Base-T +		14e4 000a  NetXtreme BCM5703 1000Base-SX +	16dd  NetLink BCM5781 Gigabit Ethernet PCI Express +	16f3  NetXtreme BCM5727 Gigabit Ethernet PCIe +	16f7  NetXtreme BCM5753 Gigabit Ethernet PCI Express +	16fd  NetXtreme BCM5753M Gigabit Ethernet PCI Express +		103c 309f  Compaq nx9420 Notebook +		103c 30a3  Compaq nw8440 +	16fe  NetXtreme BCM5753F Fast Ethernet PCI Express +	170c  BCM4401-B0 100Base-TX +		1028 0188  Inspiron 6000 laptop +		1028 018d  Inspiron 700m/710m +		1028 0196  Inspiron 5160 +		1028 01af  Inspiron 6400 +		1028 01cd  Inspiron 9400 Laptop +		1028 01d7  XPS M1210 +		1028 01d8  Inspiron E1405 +		103c 099c  NX6110/NC6120 +		103c 30a2  NX7300 laptop +		14e4 170c  HP Compaq 6720t Mobile Thin Client +	170d  NetXtreme BCM5901 100Base-TX +		1014 0545  ThinkPad R40e +	170e  NetXtreme BCM5901 100Base-TX +	1712  NetLink BCM5906 Fast Ethernet PCI Express +	1713  NetLink BCM5906M Fast Ethernet PCI Express +		1028 01f3  Inspiron 1420 +		1028 0209  XPS M1330 +		103c 30c0  Compaq 6710b +		17aa 3a23  IdeaPad S10e +	3352  BCM3352 +	3360  BCM3360 +	4210  BCM4210 iLine10 HomePNA 2.0 +	4211  BCM4211 iLine10 HomePNA 2.0 + V.90 56k modem +	4212  BCM4212 v.90 56k modem +	4220  802-11b/g Wireless PCI controller, packaged as a Linksys WPC54G ver 1.2 PCMCIA card +	4222  NetXtreme BCM5753M Gigabit Ethernet PCI Express +	4301  BCM4301 802.11b Wireless LAN Controller +		1028 0407  TrueMobile 1180 Onboard WLAN +		1043 0120  WL-103b Wireless LAN PC Card +		16a5 1602  B-300 802.11b Wireless CardBus Adapter +		1737 4301  WMP11 v2.7 802.11b Wireless-B PCI Adapter +	4305  BCM4307 V.90 56k Modem +	4306  BCM4306 802.11bg Wireless LAN controller +	4307  BCM4306 802.11bg Wireless LAN Controller +	4310  BCM4310 Chipcommon I/OController +	4311  BCM4311 802.11b/g WLAN +		1028 0007  Wireless 1390 WLAN Mini-Card +		1028 0008  Wireless 1390 WLAN ExpressCard +		103c 1363  BCM4311 802.11b/g Wireless LAN Controller +		103c 1364  BCM4311 802.11b/g Wireless LAN Controller +		103c 1365  BCM4311 802.11b/g Wireless LAN Controller +		103c 1374  BCM4311 802.11b/g Wireless LAN Controller +		103c 1375  BCM4311 802.11b/g Wireless LAN Controller +		103c 1376  BCM4311 802.11b/g Wireless LAN Controller +		103c 1377  BCM4311 802.11b/g Wireless LAN Controller +		103c 137f  BCM4322 802.11a/b/g/n Wireless LAN Controller +		103c 1380  BCM4322 802.11a/b/g/n Wireless LAN Controller +		14e4 4311  BCM94311MCG +	4312  BCM4311 802.11a/b/g +		1028 0007  Wireless 1490 Dual Band WLAN Mini-Card +		1028 0008  Wireless 1490 Dual Band WLAN ExpressCard +		103c 135a  Broadcom 802.11a/b/g WLAN +		103c 135f  Broadcom 802.11a/b/g WLAN +		103c 1360  Broadcom 802.11a/b/g WLAN +		103c 1361  Broadcom 802.11a/b/g WLAN +		103c 1362  Broadcom 802.11a/b/g WLAN +		103c 1370  Broadcom 802.11a/b/g WLAN +		103c 1371  Broadcom 802.11a/b/g WLAN +		103c 1372  Broadcom 802.11a/b/g WLAN +		103c 1373  Broadcom 802.11a/b/g WLAN +		103c 30b5  Presario V3242AU +		106b 0089  AirPort Extreme +		1371 103c  Broadcom 802.11 Multiband-netwerkadapter(6715s) +	4313  BCM4311 802.11a +	4315  BCM4312 802.11b/g LP-PHY +		1028 000b  Wireless 1395 WLAN Mini-Card +		1028 000c  Wireless 1397 WLAN Mini-Card +		103c 137c  BCM4312 802.11b/g Wireless LAN Controller +		103c 137d  BCM4312 802.11b/g Wireless LAN Controller +		103c 1507  U98Z049.00 Wireless Mini PCIe Card +		105b e003  T77H030.00 Wireless Mini PCIe Card +		105b e01b  T77H106.00 Wireless Half-size Mini PCIe Card +	4318  BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller +		1028 0005  Wireless 1370 WLAN Mini-PCI Card +		1028 0006  Wireless 1370 WLAN PC Card +		103c 1355  Broadcom 802.11b/g WLAN +		103c 1356  Broadcom 802.11b/g WLAN +		103c 1357  Broadcom 802.11b/g WLAN +		1043 100f  WL-138G v2 / WL-138gE / WL-100gE +		1043 120f  A6U notebook embedded card +		1154 0355  Buffalo WLI2-PCI-G54S High Speed Mode Wireless Adapter +		1468 0311  Aspire 3022WLMi, 5024WLMi, 5020 +		1468 0312  TravelMate 2410 +		14e4 0449  Gateway 7510GX +		16ec 0119  U.S.Robotics Wireless MAXg PC Card +		1737 0042  WMP54GS v1.1 802.11g Wireless-G PCI Adapter with SpeedBooster +		1737 0048  WPC54G v3 802.11g Wireless-G Notebook Adapter +		1737 0049  WPC54GS v2 802.11g Wireless-G Notebook Adapter with SpeedBooster +		1799 7000  F5D7000 v4000 Wireless G Desktop Card +		1799 7001  F5D7001 v2000 Wireless G Plus Desktop Card +		1799 7010  F5D7010 v4000 Wireless G Notebook Card +		1799 7011  F5D7011 v2000 High-Speed Mode Wireless G Notebook Card +	4319  BCM4318 [AirForce 54g] 802.11a/b/g PCI Express Transceiver +		1028 0005  Wireless 1470 Dual Band WLAN Mini-PCI Card +		1028 0006  Wireless 1470 Dual Band WLAN PC Card +		103c 1358  Broadcom 802.11a/b/g WLAN +		103c 1359  Broadcom 802.11a/b/g WLAN +		103c 135a  Broadcom 802.11a/b/g WLAN +	4320  BCM4306 802.11b/g Wireless LAN Controller +		1028 0001  TrueMobile 1300 WLAN Mini-PCI Card +		1028 0002  TrueMobile 1300 WLAN PC Card +		1028 0003  Wireless 1350 WLAN Mini-PCI Card +		1028 0004  Wireless 1350 WLAN PC Card +		103c 12f4  Broadcom 802.11b/g WLAN +		103c 12f8  Broadcom 802.11b/g WLAN +		103c 12fa  Broadcom 802.11b/g WLAN +		103c 12fb  Broadcom 802.11b/g WLAN +		1043 100f  WL-100G +		1057 7025  WN825G +		106b 004e  AirPort Extreme +		1154 0330  Buffalo WLI2-PCI-G54S High Speed Mode Wireless Desktop Adapter +		144f 7050  eMachines M6805 802.11g Built-in Wireless +		144f 7051  Sonnet Aria Extreme PCI +		1737 0013  WMP54G v1 802.11g PCI Adapter +		1737 0014  WMP54G v2 802.11g PCI Adapter +		1737 0015  WMP54GS v1.0 802.11g Wireless-G PCI Adapter with SpeedBooster +		1737 4320  WPC54G v1 / WPC54GS v1 802.11g Wireless-G Notebook Adapter +		1799 7000  F5D7000 v1000 Wireless G Desktop Card +		1799 7001  F5D7001 v1000 Wireless G Plus Desktop Card +		1799 7010  F5D7010 v1000 Wireless G Notebook Card +		1799 7011  F5D7011 v1000 High-Speed Mode Wireless G Notebook Card +		185f 1220  TravelMate 290E WLAN Mini-PCI Card +	4321  BCM4321 802.11a Wireless Network Controller +	4322  BCM4322 802.11bgn Wireless Network Controller +	4324  BCM4309 802.11abg Wireless Network Controller +		1028 0001  Truemobile 1400 +		1028 0002  TrueMobile 1400 Dual Band WLAN PC Card +		1028 0003  Truemobile 1450 MiniPCI +		1028 0004  Wireless 1450 Dual Band WLAN PC Card +		103c 12f9  Broadcom 802.11a/b/g WLAN +		103c 12fc  Broadcom 802.11a/b/g WLAN +	4325  BCM4306 802.11bg Wireless Network Controller +		1414 0003  Wireless Notebook Adapter MN-720 +		1414 0004  Wireless PCI Adapter MN-730 +	4326  BCM4307 Chipcommon I/O Controller? +	4328  BCM4321 802.11a/b/g/n +		1028 0009  Wireless 1500 Draft 802.11n WLAN Mini-Card +		1028 000a  Wireless 1500 Draft 802.11n WLAN Mini-card +		103c 1366  BCM4321 802.11a/b/g/n Wireless LAN Controller +		103c 1367  BCM4321 802.11a/b/g/n Wireless LAN Controller +		103c 1368  BCM4321 802.11a/b/g/n Wireless LAN Controller +		103c 1369  BCM4321 802.11a/b/g/n Wireless LAN Controller +		106b 0087  AirPort Extreme +		106b 0088  AirPort Extreme +		106b 008b  AirPort Extreme +		106b 008c  AirPort Extreme +		106b 0090  AirPort Extreme +		14e4 4328  BCM4328 802.11a/b/g/n +		1737 0066  WPC600N v1 802.11a/b/g/n Wireless-N CardBus Adapter +		1737 0068  WEC600N v1 802.11a/b/g/n Wireless-N ExpressCard +	4329  BCM4321 802.11b/g/n +		1385 7b00  WN511B RangeMax NEXT Wireless Notebook Adapter +		1385 7d00  WN311B RangeMax Next 270 Mbps Wireless PCI Adapter +		1737 0058  WPC300N v1 Wireless-N Notebook Adapter +	432a  BCM4321 802.11an Wireless Network Controller +	432b  BCM4322 802.11a/b/g/n Wireless LAN Controller +		1028 000d  Wireless 1510 Wireless-N WLAN Mini-Card +		106b 008d  AirPort Extreme +		106b 008e  AirPort Extreme +	432c  BCM4322 802.11b/g/n +		1799 d311  Dynex DX-NNBX 802.11n WLAN Cardbus Card +	432d  BCM4322 802.11an Wireless Network Controller +	4331  BCM4331 802.11a/b/g/n +		106b 00d6  AirPort Extreme +		106b 00e4  AirPort Extreme +		106b 00ef  AirPort Extreme +		106b 00f4  AirPort Extreme +		106b 00f5  AirPort Extreme +		106b 010e  AirPort Extreme +		106b 010f  AirPort Extreme +	4333  Serial (EDGE/GPRS modem part of Option GT Combo Edge) +	4344  EDGE/GPRS data and 802.11b/g combo cardbus [GC89] +	4350  BCM43222 Wireless Network Adapter +	4351  BCM43222 802.11abgn Wireless Network Adapter +	4353  BCM43224 802.11a/b/g/n +		1028 000e  Wireless 1520 Half-size Mini PCIe Card +		103c 1509  WMIB-275N Half-size Mini PCIe Card +		106b 0093  AirPort Extreme +		106b 00d1  AirPort Extreme +		106b 00e9  AirPort Extreme +	4357  BCM43225 802.11b/g/n +		105b e021  T77H103.00 Wireless Half-size Mini PCIe Card +	4358  BCM43227 802.11b/g/n +	4359  BCM43228 802.11a/b/g/n +		1028 0011  Wireless 1530 Half-size Mini PCIe Card +		103c 182c  BCM943228HM4L 802.11a/b/g/n 2x2 Wi-Fi Adapter +	4360  BCM4360 802.11ac Wireless Network Adapter +	4365  BCM43142 802.11b/g/n +		1028 0016  Wireless 1704 802.11n + BT 4.0 +	43a0  BCM4360 802.11ac Wireless Network Adapter +	43a1  BCM4360 802.11ac Wireless Network Adapter +	43a2  BCM4360 802.11ac Wireless Network Adapter +	43a9  BCM43217 802.11b/g/n +	43aa  BCM43131 802.11b/g/n +	43b1  BCM4352 802.11ac Wireless Network Adapter +	43ba  BCM43602 802.11ac Wireless LAN SoC +	43bb  BCM43602 802.11ac Wireless LAN SoC +	43bc  BCM43602 802.11ac Wireless LAN SoC +	43d3  BCM43567 802.11ac Wireless Network Adapter +	43d9  BCM43570 802.11ac Wireless Network Adapter +	43df  BCM4354 802.11ac Wireless LAN SoC +	43ec  BCM4356 802.11ac Wireless Network Adapter +	4401  BCM4401 100Base-T +		1025 0035  TravelMate 660 +		103c 08b0  tc1100 tablet +		1043 80a8  A7V8X motherboard +	4402  BCM4402 Integrated 10/100BaseT +	4403  BCM4402 V.90 56k Modem +	4410  BCM4413 iLine32 HomePNA 2.0 +	4411  BCM4413 V.90 56k modem +	4412  BCM4412 10/100BaseT +	4430  BCM44xx CardBus iLine32 HomePNA 2.0 +	4432  BCM4432 CardBus 10/100BaseT +	4610  BCM4610 Sentry5 PCI to SB Bridge +	4611  BCM4610 Sentry5 iLine32 HomePNA 1.0 +	4612  BCM4610 Sentry5 V.90 56k Modem +	4613  BCM4610 Sentry5 Ethernet Controller +	4614  BCM4610 Sentry5 External Interface +	4615  BCM4610 Sentry5 USB Controller +	4704  BCM4704 PCI to SB Bridge +	4705  BCM4704 Sentry5 802.11b Wireless LAN Controller +	4706  BCM4704 Sentry5 Ethernet Controller +	4707  BCM4704 Sentry5 USB Controller +	4708  BCM4704 Crypto Accelerator +	4710  BCM4710 Sentry5 PCI to SB Bridge +	4711  BCM47xx Sentry5 iLine32 HomePNA 2.0 +	4712  BCM47xx V.92 56k modem +	4713  Sentry5 Ethernet Controller +	4714  BCM47xx Sentry5 External Interface +	4715  BCM47xx Sentry5 USB / Ethernet Controller +	4716  BCM47xx Sentry5 USB Host Controller +	4717  BCM47xx Sentry5 USB Device Controller +	4718  Sentry5 Crypto Accelerator +	4719  BCM47xx/53xx RoboSwitch Core +	4720  BCM4712 MIPS CPU +	4727  BCM4313 802.11bgn Wireless Network Adapter +		1028 0010  Inspiron M5010 / XPS 8300 +	5365  BCM5365P Sentry5 Host Bridge +	5600  BCM5600 StrataSwitch 24+2 Ethernet Switch Controller +	5605  BCM5605 StrataSwitch 24+2 Ethernet Switch Controller +	5615  BCM5615 StrataSwitch 24+2 Ethernet Switch Controller +	5625  BCM5625 StrataSwitch 24+2 Ethernet Switch Controller +	5645  BCM5645 StrataSwitch 24+2 Ethernet Switch Controller +	5670  BCM5670 8-Port 10GE Ethernet Switch Fabric +	5680  BCM5680 G-Switch 8 Port Gigabit Ethernet Switch Controller +	5690  BCM5690 12-port Multi-Layer Gigabit Ethernet Switch +	5691  BCM5691 GE/10GE 8+2 Gigabit Ethernet Switch Controller +	5692  BCM5692 12-port Multi-Layer Gigabit Ethernet Switch +	5695  BCM5695 12-port + HiGig Multi-Layer Gigabit Ethernet Switch +	5698  BCM5698 12-port Multi-Layer Gigabit Ethernet Switch +	5820  BCM5820 Crypto Accelerator +	5821  BCM5821 Crypto Accelerator +	5822  BCM5822 Crypto Accelerator +	5823  BCM5823 Crypto Accelerator +	5824  BCM5824 Crypto Accelerator +	5840  BCM5840 Crypto Accelerator +	5841  BCM5841 Crypto Accelerator +	5850  BCM5850 Crypto Accelerator +	8602  BCM7400/BCM7405 Serial ATA Controller +	a8d8  BCM43224/5 Wireless Network Adapter +	b302  BCM56302 StrataXGS 24x1GE 2x10GE Switch Controller +	b334  BCM56334 StrataXGS 24x1GE 4x10GE Switch Controller +	b800  BCM56800 StrataXGS 10GE Switch Controller +	b842  BCM56842 Trident 10GE Switch Controller +14e5  Pixelfusion Ltd +14e6  SHINING Technology Inc +14e7  3CX +14e8  RAYCER Inc +14e9  GARNETS System CO Ltd +14ea  Planex Communications, Inc +	ab06  FNW-3603-TX CardBus Fast Ethernet +	ab07  RTL81xx RealTek Ethernet +	ab08  FNW-3602-TX CardBus Fast Ethernet +14eb  SEIKO EPSON Corp +# nee ACQIRIS +14ec  Agilent Technologies +	0000  Aciris Digitizer (malformed ID) +14ed  DATAKINETICS Ltd +14ee  MASPRO KENKOH Corp +14ef  CARRY Computer ENG. CO Ltd +14f0  CANON RESEACH CENTRE FRANCE +14f1  Conexant Systems, Inc. +	1002  HCF 56k Modem +	1003  HCF 56k Modem +	1004  HCF 56k Modem +	1005  HCF 56k Modem +	1006  HCF 56k Modem +	1022  HCF 56k Modem +	1023  HCF 56k Modem +	1024  HCF 56k Modem +	1025  HCF 56k Modem +	1026  HCF 56k Modem +	1032  HCF 56k Modem +	1033  HCF 56k Data/Fax Modem +		1033 8077  NEC +		122d 4027  Dell Zeus - MDP3880-W(B) Data Fax Modem +		122d 4030  Dell Mercury - MDP3880-U(B) Data Fax Modem +		122d 4034  Dell Thor - MDP3880-W(U) Data Fax Modem +		13e0 020d  Dell Copper +		13e0 020e  Dell Silver +		13e0 0261  IBM +		13e0 0290  Compaq Goldwing +		13e0 02a0  IBM +		13e0 02b0  IBM +		13e0 02c0  Compaq Scooter +		13e0 02d0  IBM +		144f 1500  IBM P85-DF (1) +		144f 1501  IBM P85-DF (2) +		144f 150a  IBM P85-DF (3) +		144f 150b  IBM P85-DF Low Profile (1) +		144f 1510  IBM P85-DF Low Profile (2) +	1034  HCF 56k Data/Fax/Voice Modem +	1035  HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem +		10cf 1098  Fujitsu P85-DFSV +	1036  HCF 56k Data/Fax/Voice/Spkp Modem +		104d 8067  HCF 56k Modem +		122d 4029  MDP3880SP-W +		122d 4031  MDP3880SP-U +		13e0 0209  Dell Titanium +		13e0 020a  Dell Graphite +		13e0 0260  Gateway Red Owl +		13e0 0270  Gateway White Horse +	1052  HCF 56k Data/Fax Modem (Worldwide) +	1053  HCF 56k Data/Fax Modem (Worldwide) +	1054  HCF 56k Data/Fax/Voice Modem (Worldwide) +	1055  HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (Worldwide) +	1056  HCF 56k Data/Fax/Voice/Spkp Modem (Worldwide) +		122d 4035  MDP3900V-W +	1057  HCF 56k Data/Fax/Voice/Spkp Modem (Worldwide) +	1059  HCF 56k Data/Fax/Voice Modem (Worldwide) +	1063  HCF 56k Data/Fax Modem +	1064  HCF 56k Data/Fax/Voice Modem +	1065  HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem +	1066  HCF 56k Data/Fax/Voice/Spkp Modem +		122d 4033  Dell Athena - MDP3900V-U +	1085  HCF V90 56k Data/Fax/Voice/Spkp PCI Modem +	10b6  CX06834-11 HCF V.92 56k Data/Fax/Voice/Spkp Modem +	1433  HCF 56k Data/Fax Modem +	1434  HCF 56k Data/Fax/Voice Modem +	1435  HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem +	1436  HCF 56k Data/Fax Modem +	1453  HCF 56k Data/Fax Modem +		13e0 0240  IBM +		13e0 0250  IBM +		144f 1502  IBM P95-DF (1) +		144f 1503  IBM P95-DF (2) +	1454  HCF 56k Data/Fax/Voice Modem +	1455  HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem +	1456  HCF 56k Data/Fax/Voice/Spkp Modem +		122d 4035  Dell Europa - MDP3900V-W +		122d 4302  Dell MP3930V-W(C) MiniPCI +	1610  ADSL AccessRunner PCI Arbitration Device +	1611  AccessRunner PCI ADSL Interface Device +	1620  AccessRunner V2 PCI ADSL Arbitration Device +	1621  AccessRunner V2 PCI ADSL Interface Device +	1622  AccessRunner V2 PCI ADSL Yukon WAN Adapter +	1803  HCF 56k Modem +		0e11 0023  623-LAN Grizzly +		0e11 0043  623-LAN Yogi +	1811  MiniPCI Network Adapter +	1815  HCF 56k Modem +		0e11 0022  Grizzly +		0e11 0042  Yogi +# Integrated in CX86111/CX86113 processors +	1830  CX861xx Integrated Host Bridge +	2003  HSF 56k Data/Fax Modem +	2004  HSF 56k Data/Fax/Voice Modem +	2005  HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem +	2006  HSF 56k Data/Fax/Voice/Spkp Modem +	2013  HSF 56k Data/Fax Modem +		0e11 b195  Bear +		0e11 b196  Seminole 1 +		0e11 b1be  Seminole 2 +		1025 8013  Acer +		1033 809d  NEC +		1033 80bc  NEC +		155d 6793  HP +		155d 8850  E Machines +	2014  HSF 56k Data/Fax/Voice Modem +	2015  HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem +	2016  HSF 56k Data/Fax/Voice/Spkp Modem +	2043  HSF 56k Data/Fax Modem (WorldW SmartDAA) +	2044  HSF 56k Data/Fax/Voice Modem (WorldW SmartDAA) +	2045  HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (WorldW SmartDAA) +		14f1 2045  Generic SoftK56 +	2046  HSF 56k Data/Fax/Voice/Spkp Modem (WorldW SmartDAA) +	2063  HSF 56k Data/Fax Modem (SmartDAA) +	2064  HSF 56k Data/Fax/Voice Modem (SmartDAA) +	2065  HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (SmartDAA) +	2066  HSF 56k Data/Fax/Voice/Spkp Modem (SmartDAA) +	2093  HSF 56k Modem +		155d 2f07  Legend +	2143  HSF 56k Data/Fax/Cell Modem (Mob WorldW SmartDAA) +	2144  HSF 56k Data/Fax/Voice/Cell Modem (Mob WorldW SmartDAA) +	2145  HSF 56k Data/Fax/Voice/Spkp (w/HS)/Cell Modem (Mob WorldW SmartDAA) +	2146  HSF 56k Data/Fax/Voice/Spkp/Cell Modem (Mob WorldW SmartDAA) +	2163  HSF 56k Data/Fax/Cell Modem (Mob SmartDAA) +	2164  HSF 56k Data/Fax/Voice/Cell Modem (Mob SmartDAA) +	2165  HSF 56k Data/Fax/Voice/Spkp (w/HS)/Cell Modem (Mob SmartDAA) +	2166  HSF 56k Data/Fax/Voice/Spkp/Cell Modem (Mob SmartDAA) +	2343  HSF 56k Data/Fax CardBus Modem (Mob WorldW SmartDAA) +	2344  HSF 56k Data/Fax/Voice CardBus Modem (Mob WorldW SmartDAA) +	2345  HSF 56k Data/Fax/Voice/Spkp (w/HS) CardBus Modem (Mob WorldW SmartDAA) +	2346  HSF 56k Data/Fax/Voice/Spkp CardBus Modem (Mob WorldW SmartDAA) +	2363  HSF 56k Data/Fax CardBus Modem (Mob SmartDAA) +	2364  HSF 56k Data/Fax/Voice CardBus Modem (Mob SmartDAA) +	2365  HSF 56k Data/Fax/Voice/Spkp (w/HS) CardBus Modem (Mob SmartDAA) +	2366  HSF 56k Data/Fax/Voice/Spkp CardBus Modem (Mob SmartDAA) +	2443  HSF 56k Data/Fax Modem (Mob WorldW SmartDAA) +		104d 8075  Modem +		104d 8083  Modem +		104d 8097  Modem +	2444  HSF 56k Data/Fax/Voice Modem (Mob WorldW SmartDAA) +	2445  HSF 56k Data/Fax/Voice/Spkp (w/HS) Modem (Mob WorldW SmartDAA) +	2446  HSF 56k Data/Fax/Voice/Spkp Modem (Mob WorldW SmartDAA) +	2463  HSF 56k Data/Fax Modem (Mob SmartDAA) +	2464  HSF 56k Data/Fax/Voice Modem (Mob SmartDAA) +	2465  HSF 56k Data/Fax/Voice/Spkp (w/HS) Modem (Mob SmartDAA) +	2466  HSF 56k Data/Fax/Voice/Spkp Modem (Mob SmartDAA) +	2f00  HSF 56k HSFi Modem +		13e0 8d84  IBM HSFi V.90 +		13e0 8d85  Compaq Stinger +		14f1 2004  Dynalink 56PMi +	2f02  HSF 56k HSFi Data/Fax +	2f11  HSF 56k HSFi Modem +	2f20  HSF 56k Data/Fax Modem +		14f1 200c  Soft Data Fax Modem with SmartCP +		14f1 200f  Dimension 3000 +	2f30  SoftV92 SpeakerPhone SoftRing Modem with SmartSP +		14f1 2014  Devolo MikroLink 56K Modem PCI +	2f50  Conexant SoftK56 Data/Fax Modem +	5b7a  CX23418 Single-Chip MPEG-2 Encoder with Integrated Analog Video/Broadcast Audio Decoder +		0070 7444  WinTV HVR-1600 +		107d 6f34  WinFast DVR3100 H +		5854 3343  GoTView PCI DVD3 Hybrid +	8200  CX25850 +	8234  RS8234 ATM SAR Controller [ServiceSAR Plus] +	8800  CX23880/1/2/3 PCI Video and Audio Decoder +		0070 2801  Hauppauge WinTV 28xxx (Roslyn) models +		0070 3400  WinTV 34604 +		0070 3401  Hauppauge WinTV 34xxx models +		0070 6902  WinTV HVR-4000-HD +		0070 7801  WinTV HVR-1800 MCE +		0070 9001  Nova-T DVB-T +		0070 9200  Nova-SE2 DVB-S +		0070 9202  Nova-S-Plus DVB-S +		0070 9402  WinTV-HVR1100 DVB-T/Hybrid +		0070 9600  WinTV 88x Video +		0070 9802  WinTV-HVR1100 DVB-T/Hybrid (Low Profile) +		1002 00f8  ATI TV Wonder Pro +		1002 00f9  ATI TV Wonder +		1002 a101  HDTV Wonder +		1043 4823  ASUS PVR-416 +		107d 6611  Winfast TV 2000XP Expert +		107d 6613  Leadtek Winfast 2000XP Expert +		107d 6620  Leadtek Winfast DV2000 +		107d 663c  Leadtek PVR 2000 +		107d 665f  WinFast DTV1000-T +		10fc d003  IODATA GV-VCP3/PCI +		10fc d035  IODATA GV/BCTV7E +		1421 0334  Instant TV DVB-T PCI +		1461 000a  AVerTV 303 (M126) +		1461 000b  AverTV Studio 303 (M126) +		1461 8011  UltraTV Media Center PCI 550 +		1462 8606  MSI TV-@nywhere Master +		14c7 0107  GDI Black Gold +		14f1 0187  Conexant DVB-T reference design +		14f1 0342  Digital-Logic MICROSPACE Entertainment Center (MEC) +		153b 1166  Cinergy 1400 DVB-T +		1540 2580  Provideo PV259 +		1554 4811  PixelView +		1554 4813  Club 3D  ZAP1000 MCE Edition +		17de 08a1  KWorld/VStream XPert DVB-T with cx22702 +		17de 08a6  KWorld/VStream XPert DVB-T +		17de 08b2  KWorld DVB-S 100 +		17de a8a6  digitalnow DNTV Live! DVB-T +		1822 0025  digitalnow DNTV Live! DVB-T Pro +		185b e000  VideoMate X500 +		18ac d500  FusionHDTV 5 Gold +		18ac d810  FusionHDTV 3 Gold-Q +		18ac d820  FusionHDTV 3 Gold-T +		18ac db00  FusionHDTV DVB-T1 +		18ac db11  FusionHDTV DVB-T Plus +		18ac db50  FusionHDTV DVB-T Dual Digital +		5654 2388  GoTView PCI Hybrid TV Tuner Card +		7063 3000  pcHDTV HD3000 HDTV +		7063 5500  pcHDTV HD-5500 +	8801  CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port] +		0070 2801  Hauppauge WinTV 28xxx (Roslyn) models +		185b e000  VideoMate X500 +		5654 2388  GoTView PCI Hybrid Audio AVStream Device +		7063 5500  pcHDTV HD-5500 +	8802  CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port] +		0070 2801  Hauppauge WinTV 28xxx (Roslyn) models +		0070 6902  WinTV HVR-4000-HD +		0070 9002  Nova-T DVB-T Model 909 +		0070 9402  WinTV-HVR1100 DVB-T/Hybrid +		0070 9600  WinTV 88x MPEG Encoder +		1043 4823  ASUS PVR-416 +		107d 663c  Leadtek PVR 2000 +		107d 665f  WinFast DTV1000-T +		14f1 0187  Conexant DVB-T reference design +		17de 08a1  XPert DVB-T PCI BDA DVBT 23880 Transport Stream Capture +		17de 08a6  KWorld/VStream XPert DVB-T +		18ac d500  DViCO FusionHDTV5 Gold +		18ac d810  DViCO FusionHDTV3 Gold-Q +		18ac d820  DViCO FusionHDTV3 Gold-T +		18ac db00  DVICO FusionHDTV DVB-T1 +		18ac db10  DVICO FusionHDTV DVB-T Plus +		5654 2388  GoTView PCI Hybrid TS Capture Device +		7063 3000  pcHDTV HD3000 HDTV +		7063 5500  pcHDTV HD-5500 +	8804  CX23880/1/2/3 PCI Video and Audio Decoder [IR Port] +		0070 6902  WinTV HVR-4000-HD +		0070 9002  Nova-T DVB-T Model 909 +		0070 9402  WinTV-HVR1100 DVB-T/Hybrid +		7063 5500  pcHDTV HD-5500 +	8811  CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port] +		0070 3400  WinTV 34604 +		0070 3401  Hauppauge WinTV 34xxx models +		0070 6902  WinTV HVR-4000-HD +		0070 9402  WinTV-HVR1100 DVB-T/Hybrid +		0070 9600  WinTV 88x Audio +		1462 8606  MSI TV-@nywhere Master +		18ac d500  DViCO FusionHDTV5 Gold +		18ac d810  DViCO FusionHDTV3 Gold-Q +		18ac d820  DViCO FusionHDTV3 Gold-T +		18ac db00  DVICO FusionHDTV DVB-T1 +		5654 2388  GoTView PCI Hybrid Audio Capture Device +	8852  CX23885 PCI Video and Audio Decoder +		0070 8010  WinTV HVR-1400 ExpressCard +		0070 f038  WinTV HVR-5525 +		107d 6f22  WinFast PxTV1200 +		13c2 3013  TT-budget CT2-4500 CI +		1461 c039  AVerTV Hybrid Express (A577) +		153b 117e  Cinergy T PCIe Dual +		18ac db78  FusionHDTV DVB-T Dual Express +		4254 0950  S950 +		4254 0952  S952 +		4254 0982  T982 +		4254 9580  T9580 +		4254 980c  T980C +	8880  CX23887/8 PCIe Broadcast Audio and Video Decoder with 3D Comb +		0070 c108  WinTV-HVR-4400-HD model 1278 +		5654 2389  GoTView X5 DVD Hybrid PCI-E +		5654 2390  GoTView X5 3D HYBRID PCI-E +14f2  MOBILITY Electronics +	0120  EV1000 bridge +	0121  EV1000 Parallel port +	0122  EV1000 Serial port +	0123  EV1000 Keyboard controller +	0124  EV1000 Mouse controller +14f3  BroadLogic +	2030  2030 DVB-S Satellite Receiver +	2035  2035 DVB-S Satellite Receiver +	2050  2050 DVB-T Terrestrial (Cable) Receiver +	2060  2060 ATSC Terrestrial (Cable) Receiver +14f4  TOKYO Electronic Industry CO Ltd +14f5  SOPAC Ltd +14f6  COYOTE Technologies LLC +14f7  WOLF Technology Inc +14f8  AUDIOCODES Inc +	2077  TP-240 dual span E1 VoIP PCI card +14f9  AG COMMUNICATIONS +14fa  WANDEL & GOLTERMANN +14fb  TRANSAS MARINE (UK) Ltd +14fc  Quadrics Ltd +	0000  QsNet Elan3 Network Adapter +	0001  QsNetII Elan4 Network Adapter +	0002  QsNetIII Elan5 Network Adapter +14fd  JAPAN Computer Industry Inc +14fe  ARCHTEK TELECOM Corp +14ff  TWINHEAD INTERNATIONAL Corp +1500  DELTA Electronics, Inc +	1360  RTL81xx RealTek Ethernet +1501  BANKSOFT CANADA Ltd +1502  MITSUBISHI ELECTRIC LOGISTICS SUPPORT Co Ltd +1503  KAWASAKI LSI USA Inc +1504  KAISER Electronics +1505  ITA INGENIEURBURO FUR TESTAUFGABEN GmbH +1506  CHAMELEON Systems Inc +# Should be HTEC Ltd, but there are no known HTEC chips and 1507 is already used by mistake by Motorola (see vendor ID 1057). +1507  Motorola ?? / HTEC +	0001  MPC105 [Eagle] +	0002  MPC106 [Grackle] +	0003  MPC8240 [Kahlua] +	0100  MC145575 [HFC-PCI] +	0431  KTI829c 100VG +	4801  Raven +	4802  Falcon +	4803  Hawk +	4806  CPX8216 +1508  HONDA CONNECTORS/MHOTRONICS Inc +1509  FIRST INTERNATIONAL Computer Inc +150a  FORVUS RESEARCH Inc +150b  YAMASHITA Systems Corp +150c  KYOPAL CO Ltd +150d  WARPSPPED Inc +150e  C-PORT Corp +150f  INTEC GmbH +1510  BEHAVIOR TECH Computer Corp +1511  CENTILLIUM Technology Corp +1512  ROSUN Technologies Inc +1513  Raychem +1514  TFL LAN Inc +1515  Advent design +1516  MYSON Technology Inc +	0800  MTD-8xx 100/10M Ethernet PCI Adapter +	0803  SURECOM EP-320X-S 100/10M Ethernet PCI Adapter +		1320 10bd  SURECOM EP-320X-S 100/10M Ethernet PCI Adapter +	0891  MTD-8xx 100/10M Ethernet PCI Adapter +1517  ECHOTEK Corp +# nee PEP MODULAR Computers GmbH +1518  Kontron Modular Computers GmbH +1519  TELEFON AKTIEBOLAGET LM Ericsson +151a  Globetek +	1002  PCI-1002 +	1004  PCI-1004 +	1008  PCI-1008 +151b  COMBOX Ltd +151c  DIGITAL AUDIO LABS Inc +	0003  Prodif T 2496 +	4000  Prodif 88 +151d  Fujitsu Computer Products Of America +151e  MATRIX Corp +151f  TOPIC SEMICONDUCTOR Corp +	0000  TP560 Data/Fax/Voice 56k modem +1520  CHAPLET System Inc +1521  BELL Corp +1522  MainPine Ltd +	0100  PCI <-> IOBus Bridge +		1522 0200  RockForceDUO 2 Port V.92/V.44 Data/Fax/Voice Modem +		1522 0300  RockForceQUATRO 4 Port V.92/V.44 Data/Fax/Voice Modem +		1522 0400  RockForceDUO+ 2 Port V.92/V.44 Data/Fax/Voice Modem +		1522 0500  RockForceQUATRO+ 4 Port V.92/V.44 Data/Fax/Voice Modem +		1522 0600  RockForce+ 2 Port V.90 Data/Fax/Voice Modem +		1522 0700  RockForce+ 4 Port V.90 Data/Fax/Voice Modem +		1522 0800  RockForceOCTO+ 8 Port V.92/V.44 Data/Fax/Voice Modem +		1522 0c00  RockForceDUO+ 2 Port V.92/V.44 Data, V.34 Super-G3 Fax, Voice Modem +		1522 0d00  RockForceQUATRO+ 4 Port V.92/V.44 Data, V.34 Super-G3 Fax, Voice Modem +		1522 1d00  RockForceOCTO+ 8 Port V.92/V.44 Data, V.34 Super-G3 Fax, Voice Modem +		1522 2000  RockForceD1 1 Port V.90 Data Modem +		1522 2100  RockForceF1 1 Port V.34 Super-G3 Fax Modem +		1522 2200  RockForceD2 2 Port V.90 Data Modem +		1522 2300  RockForceF2 2 Port V.34 Super-G3 Fax Modem +		1522 2400  RockForceD4 4 Port V.90 Data Modem +		1522 2500  RockForceF4 4 Port V.34 Super-G3 Fax Modem +		1522 2600  RockForceD8 8 Port V.90 Data Modem +		1522 2700  RockForceF8 8 Port V.34 Super-G3 Fax Modem +		1522 3000  IQ Express D1 - 1 Port V.92 Data Modem +		1522 3100  IQ Express F1 - 1 Port V.34 Super-G3 Fax Modem +		1522 3200  IQ Express D2 - 2 Port V.92 Data Modem +		1522 3300  IQ Express F2 - 2 Port V.34 Super-G3 Fax Modem +		1522 3400  IQ Express D4 - 4 Port V.92 Data Modem +		1522 3500  IQ Express F4 - 4 Port V.34 Super-G3 Fax Modem +		1522 3c00  IQ Express D8 - 8 Port V.92 Data Modem +		1522 3d00  IQ Express F8 - 8 Port V.34 Super-G3 Fax Modem +	4000  PCI Express UART +		1522 4001  IQ Express 1-port V.34 Super-G3 Fax +		1522 4002  IQ Express 2-port V.34 Super-G3 Fax +		1522 4004  IQ Express 4-port V.34 Super-G3 Fax +		1522 4008  IQ Express 8-port V.34 Super-G3 Fax +		1522 4100  IQ Express SideBand +1523  MUSIC Semiconductors +1524  ENE Technology Inc +	0510  CB710 Memory Card Reader Controller +		103c 006a  NX9500 +	0520  FLASH memory: ENE Technology Inc: +	0530  ENE PCI Memory Stick Card Reader Controller +	0550  ENE PCI Secure Digital Card Reader Controller +	0551  SD/MMC Card Reader Controller +	0610  PCI Smart Card Reader Controller +	0720  Memory Stick Card Reader Controller +	0730  ENE PCI Memory Stick Card Reader Controller +	0750  ENE PCI SmartMedia / xD Card Reader Controller +	0751  ENE PCI Secure Digital / MMC Card Reader Controller +	1211  CB1211 Cardbus Controller +	1225  CB1225 Cardbus Controller +	1410  CB1410 Cardbus Controller +		1025 003c  CL50 motherboard +		1025 005a  TravelMate 290 +	1411  CB-710/2/4 Cardbus Controller +		103c 006a  NX9500 +	1412  CB-712/4 Cardbus Controller +	1420  CB1420 Cardbus Controller +	1421  CB-720/2/4 Cardbus Controller +	1422  CB-722/4 Cardbus Controller +1525  IMPACT Technologies +1526  ISS, Inc +1527  SOLECTRON +1528  ACKSYS +1529  AMERICAN MICROSystems Inc +152a  QUICKTURN DESIGN Systems +152b  FLYTECH Technology CO Ltd +152c  MACRAIGOR Systems LLC +152d  QUANTA Computer Inc +152e  MELEC Inc +152f  PHILIPS - CRYPTO +1530  ACQIS Technology Inc +1531  CHRYON Corp +1532  ECHELON Corp +	0020  LonWorks PCLTA-20 PCI LonTalk Adapter +1533  BALTIMORE +1534  ROAD Corp +1535  EVERGREEN Technologies Inc +1536  ACTIS Computer +1537  DATALEX COMMUNCATIONS +1538  ARALION Inc +	0303  ARS106S Ultra ATA 133/100/66 Host Controller +1539  ATELIER INFORMATIQUES et ELECTRONIQUE ETUDES S.A. +153a  ONO SOKKI +153b  TERRATEC Electronic GmbH +	1144  Aureon 5.1 +# Terratec seems to use several IDs for the same card. +	1147  Aureon 5.1 Sky +	1158  Philips Semiconductors SAA7134 (rev 01) [Terratec Cinergy 600 TV] +153c  ANTAL Electronic +153d  FILANET Corp +153e  TECHWELL Inc +153f  MIPS Technologies, Inc. +	0001  SOC-it 101 System Controller +1540  PROVIDEO MULTIMEDIA Co Ltd +1541  MACHONE Communications +1542  Concurrent Computer Corporation +	9260  RCIM-II Real-Time Clock & Interrupt Module +	9272  Pulse Width Modulator Card +	9277  5 Volt Delta Sigma Converter Card +	9278  10 Volt Delta Sigma Converter Card +	9287  Analog Output Card +1543  SILICON Laboratories +	3052  Intel 537 [Winmodem] +	4c22  Si3036 MC'97 DAA +1544  DCM DATA Systems +1545  VISIONTEK +1546  IOI Technology Corp +1547  MITUTOYO Corp +1548  JET PROPULSION Laboratory +1549  INTERCONNECT Systems Solutions +154a  MAX Technologies Inc +154b  COMPUTEX Co Ltd +154c  VISUAL Technology Inc +154d  PAN INTERNATIONAL Industrial Corp +154e  SERVOTEST Ltd +154f  STRATABEAM Technology +1550  OPEN NETWORK Co Ltd +1551  SMART Electronic DEVELOPMENT GmBH +1552  RACAL AIRTECH Ltd +1553  CHICONY Electronics Co Ltd +1554  PROLINK Microsystems Corp +1555  GESYTEC GmBH +1556  PLDA +	1100  PCI Express Core Reference Design +	110f  PCI Express Core Reference Design Virtual Function +1557  MEDIASTAR Co Ltd +1558  CLEVO/KAPOK Computer +1559  SI LOGIC Ltd +155a  INNOMEDIA Inc +155b  PROTAC INTERNATIONAL Corp +155c  Cemax-Icon Inc +155d  Mac System Co Ltd +155e  LP Elektronik GmbH +155f  Perle Systems Ltd +1560  Terayon Communications Systems +1561  Viewgraphics Inc +1562  Symbol Technologies +1563  A-Trend Technology Co Ltd +1564  Yamakatsu Electronics Industry Co Ltd +1565  Biostar Microtech Int'l Corp +1566  Ardent Technologies Inc +1567  Jungsoft +1568  DDK Electronics Inc +1569  Palit Microsystems Inc. +156a  Avtec Systems +156b  2wire Inc +156c  Vidac Electronics GmbH +156d  Alpha-Top Corp +156e  Alfa Inc +156f  M-Systems Flash Disk Pioneers Ltd +1570  Lecroy Corp +1571  Contemporary Controls +	a001  CCSI PCI20-485 ARCnet +	a002  CCSI PCI20-485D ARCnet +	a003  CCSI PCI20-485X ARCnet +	a004  CCSI PCI20-CXB ARCnet +	a005  CCSI PCI20-CXS ARCnet +	a006  CCSI PCI20-FOG-SMA ARCnet +	a007  CCSI PCI20-FOG-ST ARCnet +	a008  CCSI PCI20-TB5 ARCnet +	a009  CCSI PCI20-5-485 5Mbit ARCnet +	a00a  CCSI PCI20-5-485D 5Mbit ARCnet +	a00b  CCSI PCI20-5-485X 5Mbit ARCnet +	a00c  CCSI PCI20-5-FOG-ST 5Mbit ARCnet +	a00d  CCSI PCI20-5-FOG-SMA 5Mbit ARCnet +	a201  CCSI PCI22-485 10Mbit ARCnet +	a202  CCSI PCI22-485D 10Mbit ARCnet +	a203  CCSI PCI22-485X 10Mbit ARCnet +	a204  CCSI PCI22-CHB 10Mbit ARCnet +	a205  CCSI PCI22-FOG_ST 10Mbit ARCnet +	a206  CCSI PCI22-THB 10Mbit ARCnet +1572  Otis Elevator Company +1573  Lattice - Vantis +1574  Fairchild Semiconductor +1575  Voltaire Advanced Data Security Ltd +1576  Viewcast COM +1578  HITT +	4d34  VPMK4 [Video Processor Mk IV] +	5615  VPMK3 [Video Processor Mk III] +1579  Dual Technology Corp +157a  Japan Elecronics Ind Inc +157b  Star Multimedia Corp +157c  Eurosoft (UK) +	8001  Fix2000 PCI Y2K Compliance Card +157d  Gemflex Networks +157e  Transition Networks +157f  PX Instruments Technology Ltd +1580  Primex Aerospace Co +1581  SEH Computertechnik GmbH +1582  Cytec Corp +1583  Inet Technologies Inc +1584  Uniwill Computer Corp +1585  Logitron +1586  Lancast Inc +1587  Konica Corp +1588  Solidum Systems Corp +1589  Atlantek Microsystems Pty Ltd +	0008  Leutron Vision PicPortExpress CL +	0009  Leutron Vision PicPortExpress CL Stereo +158a  Digalog Systems Inc +158b  Allied Data Technologies +158c  Hitachi Semiconductor & Devices Sales Co Ltd +158d  Point Multimedia Systems +158e  Lara Technology Inc +158f  Ditect Coop +# nee 3PAR Inc. +1590  Hewlett-Packard Company +	0001  Eagle Cluster Manager +	0002  Osprey Cluster Manager +	0003  Harrier Cluster Manager +	a01d  FC044X Fibre Channel HBA +1591  ARN +1592  Syba Tech Ltd +	0781  Multi-IO Card +	0782  Parallel Port Card 2xEPP +	0783  Multi-IO Card +	0785  Multi-IO Card +	0786  Multi-IO Card +	0787  Multi-IO Card +	0788  Multi-IO Card +	078a  Multi-IO Card +1593  Bops Inc +1594  Netgame Ltd +1595  Diva Systems Corp +1596  Folsom Research Inc +1597  Memec Design Services +1598  Granite Microsystems +1599  Delta Electronics Inc +159a  General Instrument +159b  Faraday Technology Corp +159c  Stratus Computer Systems +159d  Ningbo Harrison Electronics Co Ltd +159e  A-Max Technology Co Ltd +159f  Galea Network Security +15a0  Compumaster SRL +15a1  Geocast Network Systems +15a2  Catalyst Enterprises Inc +	0001  TA700 PCI Bus Analyzer/Exerciser +15a3  Italtel +15a4  X-Net OY +15a5  Toyota Macs Inc +15a6  Sunlight Ultrasound Technologies Ltd +15a7  SSE Telecom Inc +15a8  Shanghai Communications Technologies Center +15aa  Moreton Bay +15ab  Bluesteel Networks Inc +15ac  North Atlantic Instruments +15ad  VMware +	0405  SVGA II Adapter +	0710  SVGA Adapter +	0720  VMXNET Ethernet Controller +	0740  Virtual Machine Communication Interface +	0770  USB2 EHCI Controller +	0774  USB1.1 UHCI Controller +	0778  USB3 xHCI 0.96 Controller +	0779  USB3 xHCI 1.0 Controller +	0790  PCI bridge +	07a0  PCI Express Root Port +	07b0  VMXNET3 Ethernet Controller +	07c0  PVSCSI SCSI Controller +	07e0  SATA AHCI controller +	0801  Virtual Machine Interface +		15ad 0800  Hypervisor ROM Interface +	1977  HD Audio Controller +15ae  Amersham Pharmacia Biotech +15b0  Zoltrix International Ltd +15b1  Source Technology Inc +15b2  Mosaid Technologies Inc +15b3  Mellanox Technologies +	0191  MT25408 [ConnectX IB Flash Recovery] +	01f6  MT27500 Family [ConnectX-3 Flash Recovery] +	01ff  MT27600 Family [Connect-IB Flash Recovery] +	0209  MT27700 Family [ConnectX-4 Flash Recovery] +	1002  MT25400 Family [ConnectX-2 Virtual Function] +	1003  MT27500 Family [ConnectX-3] +		103c 1777  InfiniBand FDR/EN 10/40Gb Dual Port 544FLR-QSFP Adapter (Rev Cx) +		103c 17c9  Infiniband QDR/Ethernet 10Gb 2-port 544i Adapter +		103c 18d6  InfiniBand FDR/EN 10/40Gb Dual Port 544QSFP Adapter +	1004  MT27500/MT27520 Family [ConnectX-3/ConnectX-3 Pro Virtual Function] +	1005  MT27510 Family +	1006  MT27511 Family +	1007  MT27520 Family [ConnectX-3 Pro] +	1009  MT27530 Family +	100a  MT27531 Family +	100b  MT27540 Family +	100c  MT27541 Family +	100d  MT27550 Family +	100e  MT27551 Family +	100f  MT27560 Family +	1010  MT27561 Family +	1011  MT27600 [Connect-IB] +	1012  MT27600 Family [Connect-IB Virtual Function] +	1013  MT27700 Family [ConnectX-4] +	1014  MT27700 Family [ConnectX-4 Virtual Function] +	1015  MT27630 Family +	1016  MT27631 Family +	1017  MT27640 Family +	1018  MT27641 Family +	5274  MT21108 InfiniBridge +	5a44  MT23108 InfiniHost +	5a45  MT23108 [Infinihost HCA Flash Recovery] +	5a46  MT23108 PCI Bridge +	5e8c  MT24204 [InfiniHost III Lx HCA] +	5e8d  MT25204 [InfiniHost III Lx HCA Flash Recovery] +	6274  MT25204 [InfiniHost III Lx HCA] +	6278  MT25208 InfiniHost III Ex (Tavor compatibility mode) +	6279  MT25208 [InfiniHost III Ex HCA Flash Recovery] +	6282  MT25208 [InfiniHost III Ex] +	6340  MT25408 [ConnectX VPI - IB SDR / 10GigE] +	634a  MT25418 [ConnectX VPI PCIe 2.0 2.5GT/s - IB DDR / 10GigE] +	6368  MT25448 [ConnectX EN 10GigE, PCIe 2.0 2.5GT/s] +	6372  MT25408 [ConnectX EN 10GigE 10GBaseT, PCIe 2.0 2.5GT/s] +	6732  MT26418 [ConnectX VPI PCIe 2.0 5GT/s - IB DDR / 10GigE] +	673c  MT26428 [ConnectX VPI PCIe 2.0 5GT/s - IB QDR / 10GigE] +	6746  MT26438 [ConnectX VPI PCIe 2.0 5GT/s - IB QDR / 10GigE Virtualization+] +		103c 1781  NC543i 1-port 4x QDR IB/Flex-10 10Gb Adapter +		103c 3349  NC543i 2-port 4xQDR IB/10Gb Adapter +	6750  MT26448 [ConnectX EN 10GigE, PCIe 2.0 5GT/s] +	675a  MT25408 [ConnectX EN 10GigE 10GBaseT, PCIe Gen2 5GT/s] +	6764  MT26468 [ConnectX EN 10GigE, PCIe 2.0 5GT/s Virtualization+] +		103c 3313  HP NC542m Dual Port Flex-10 10GbE BLc Adapter +	676e  MT26478 [ConnectX EN 40GigE, PCIe 2.0 5GT/s] +	6778  MT26488 [ConnectX VPI PCIe 2.0 5GT/s - IB DDR / 10GigE Virtualization+] +15b4  CCI/TRIAD +15b5  Cimetrics Inc +15b6  Texas Memory Systems Inc +	0001  XP15 DSP Accelerator +	0002  XP30 DSP Accelerator +	0003  XP00 Data Acquisition Device +	0004  XP35 DSP Accelerator +	0007  XP100 DSP Accelerator [XP100-T0] +	0008  XP100 DSP Accelerator [XP100-T1] +	0009  XP100 DSP Accelerator [XP100-E0] +	000a  XP100 DSP Accelerator [XP100-E1] +	000e  XP100 DSP Accelerator [XP100-0] +	000f  XP100 DSP Accelerator [XP100-1] +	0010  XP100 DSP Accelerator [XP100-P0] +	0011  XP100 DSP Accelerator [XP100-P1] +	0012  XP100 DSP Accelerator [XP100-P2] +	0013  XP100 DSP Accelerator [XP100-P3] +	0014  RamSan Flash SSD +	0015  ZBox +15b7  Sandisk Corp +15b8  ADDI-DATA GmbH +	1001  APCI1516 SP controller (16 digi outputs) +	1003  APCI1032 SP controller (32 digi inputs w/ opto coupler) +	1004  APCI2032 SP controller (32 digi outputs) +	1005  APCI2200 SP controller (8/16 digi outputs (relay)) +	1006  APCI1564 SP controller (32 digi ins, 32 digi outs) +	100a  APCI1696 SP controller (96 TTL I/Os) +	3001  APCI3501 SP controller (analog output board) +	300f  APCI3600 Noise and vibration measurement board +	7001  APCI7420 2-port Serial Controller +	7002  APCI7300 Serial Controller +15b9  Maestro Digital Communications +15ba  Impacct Technology Corp +15bb  Portwell Inc +15bc  Agilent Technologies +	0100  HPFC-5600 Tachyon DX2+ FC +	0103  QX4 PCI Express quad 4-gigabit Fibre Channel controller +	0105  Celerity FC-44XS/FC-42XS/FC-41XS/FC-44ES/FC-42ES/FC-41ES +		117c 0022  Celerity FC-42XS Fibre Channel Adapter +		117c 0025  Celerity FC-44ES Fibre Channel Adapter +		117c 0026  Celerity FC-42ES Fibre Channel Adapter +	1100  E8001-66442 PCI Express CIC +	2922  64 Bit, 133MHz PCI-X Exerciser & Protocol Checker +	2928  64 Bit, 66MHz PCI Exerciser & Analyzer +	2929  64 Bit, 133MHz PCI-X Analyzer & Exerciser +15bd  DFI Inc +15be  Sola Electronics +15bf  High Tech Computer Corp (HTC) +15c0  BVM Ltd +15c1  Quantel +15c2  Newer Technology Inc +15c3  Taiwan Mycomp Co Ltd +15c4  EVSX Inc +15c5  Procomp Informatics Ltd +	8010  1394b - 1394 Firewire 3-Port Host Adapter Card +15c6  Technical University of Budapest +15c7  Tateyama System Laboratory Co Ltd +	0349  Tateyama C-PCI PLC/NC card Rev.01A +15c8  Penta Media Co Ltd +15c9  Serome Technology Inc +15ca  Bitboys OY +15cb  AG Electronics Ltd +15cc  Hotrail Inc +15cd  Dreamtech Co Ltd +15ce  Genrad Inc +15cf  Hilscher GmbH +	0000  CIFX 50E-DP(M/S) +15d1  Infineon Technologies AG +15d2  FIC (First International Computer Inc) +15d3  NDS Technologies Israel Ltd +15d4  Iwill Corp +15d5  Tatung Co +15d6  Entridia Corp +15d7  Rockwell-Collins Inc +15d8  Cybernetics Technology Co Ltd +15d9  Super Micro Computer Inc +15da  Cyberfirm Inc +15db  Applied Computing Systems Inc +15dc  Litronic Inc +	0001  Argus 300 PCI Cryptography Module +15dd  Sigmatel Inc +15de  Malleable Technologies Inc +15df  Infinilink Corp +15e0  Cacheflow Inc +15e1  Voice Technologies Group Inc +15e2  Quicknet Technologies Inc +	0500  PhoneJack-PCI +15e3  Networth Technologies Inc +15e4  VSN Systemen BV +15e5  Valley technologies Inc +15e6  Agere Inc +15e7  Get Engineering Corp +15e8  National Datacomm Corp +	0130  Wireless PCI Card +	0131  NCP130A2 Wireless NIC +15e9  Pacific Digital Corp +	1841  ADMA-100 DiscStaQ ATA Controller +15ea  Tokyo Denshi Sekei K.K. +15eb  DResearch Digital Media Systems GmbH +15ec  Beckhoff GmbH +	3101  FC3101 Profibus DP 1 Channel PCI +	5102  FC5102 +15ed  Macrolink Inc +15ee  In Win Development Inc +15ef  Intelligent Paradigm Inc +15f0  B-Tree Systems Inc +15f1  Times N Systems Inc +15f2  Diagnostic Instruments Inc +15f3  Digitmedia Corp +15f4  Valuesoft +15f5  Power Micro Research +15f6  Extreme Packet Device Inc +15f7  Banctec +15f8  Koga Electronics Co +15f9  Zenith Electronics Corp +15fa  J.P. Axzam Corp +15fb  Zilog Inc +15fc  Techsan Electronics Co Ltd +15fd  N-CUBED.NET +15fe  Kinpo Electronics Inc +15ff  Fastpoint Technologies Inc +1600  Northrop Grumman - Canada Ltd +1601  Tenta Technology +1602  Prosys-tec Inc +1603  Nokia Wireless Communications +1604  Central System Research Co Ltd +1605  Pairgain Technologies +1606  Europop AG +1607  Lava Semiconductor Manufacturing Inc +1608  Automated Wagering International +1609  Scimetric Instruments Inc +1612  Telesynergy Research Inc. +1618  Stone Ridge Technology +	0001  RDX 11 +	0002  HFT-01 +	0400  FarSync T2P (2 port X.21/V.35/V.24) +	0440  FarSync T4P (4 port X.21/V.35/V.24) +	0610  FarSync T1U (1 port X.21/V.35/V.24) +	0620  FarSync T2U (2 port X.21/V.35/V.24) +	0640  FarSync T4U (4 port X.21/V.35/V.24) +	1610  FarSync TE1 (T1,E1) +	2610  FarSync DSL-S1 (SHDSL) +	3640  FarSync T4E (4-port X.21/V.35/V.24) +	4620  FarSync T2Ue PCI Express (2-port X.21/V.35/V.24) +	4640  FarSync T4Ue PCI Express (4-port X.21/V.35/V.24) +1619  FarSite Communications Ltd +	0400  FarSync T2P (2 port X.21/V.35/V.24) +	0440  FarSync T4P (4 port X.21/V.35/V.24) +	0610  FarSync T1U (1 port X.21/V.35/V.24) +	0620  FarSync T2U (2 port X.21/V.35/V.24) +	0640  FarSync T4U (4 port X.21/V.35/V.24) +	1610  FarSync TE1 (T1,E1) +	1612  FarSync TE1 PCI Express (T1,E1) +	2610  FarSync DSL-S1 (SHDSL) +	3640  FarSync T4E (4-port X.21/V.35/V.24) +	4620  FarSync T2Ue PCI Express (2-port X.21/V.35/V.24) +	4640  FarSync T4Ue PCI Express (4-port X.21/V.35/V.24) +	5621  FarSync T2Ee PCI Express (2 port X.21/V.35/V.24) +	5641  FarSync T4Ee PCI Express (4 port X.21/V.35/V.24) +	6620  FarSync T2U-PMC PCI Express (2 port X.21/V.35/V.24) +161f  Rioworks +1626  TDK Semiconductor Corp. +	8410  RTL81xx Fast Ethernet +1629  Kongsberg Spacetec AS +	1003  Format synchronizer v3.0 +	1006  Format synchronizer, model 10500 +	1007  Format synchronizer, model 21000 +	2002  Fast Universal Data Output +1631  Packard Bell B.V. +1638  Standard Microsystems Corp [SMC] +	1100  SMC2602W EZConnect / Addtron AWA-100 / Eumitcom PCI WL11000 +163c  Smart Link Ltd. +	3052  SmartLink SmartPCI562 56K Modem +	5449  SmartPCI561 Modem +1641  MKNet Corp. +1642  Bitland(ShenZhen) Information Technology Co., Ltd. +1657  Brocade Communications Systems, Inc. +	0013  425/825/42B/82B 4Gbps/8Gbps PCIe dual port FC HBA +		103c 1742  HP 82B 8Gbps dual port FC HBA +		103c 1744  HP 42B 4Gbps dual port FC HBA +		1657 0014  425/825 4Gbps/8Gbps PCIe dual port FC HBA +	0014  1010/1020/1007/1741 10Gbps CNA +		1657 0014  1010/1020/1007/1741 10Gbps CNA - FCOE +		1657 0015  1010/1020/1007/1741 10Gbps CNA - LL +	0017  415/815/41B/81B 4Gbps/8Gbps PCIe single port FC HBA +		103c 1741  HP 41B 4Gbps single port FC HBA +		103c 1743  HP 81B 8Gbps single port FC HBA +		1657 0014  415/815 4Gbps/8Gbps single port PCIe FC HBA +	0021  804 8Gbps FC HBA for HP Bladesystem c-class +# AnyIO Adapter +	0022  1860 16Gbps/10Gbps Fabric Adapter +		1657 0022  10Gbps CNA - FCOE +		1657 0023  10Gbps CNA - LL +		1657 0024  16Gbps FC HBA +# Mezz card for IBM +	0023  1867/1869 16Gbps FC HBA +# Same Device_ID used for 410 (1port) and 420 (2 port) HBAs. +	0646  400 4Gbps PCIe FC HBA +165a  Epix Inc +	c100  PIXCI(R) CL1 Camera Link Video Capture Board [custom QL5232] +	d200  PIXCI(R) D2X Digital Video Capture Board [custom QL5232] +	d300  PIXCI(R) D3X Digital Video Capture Board [custom QL5232] +	eb01  PIXCI(R) EB1 PCI Camera Link Video Capture Board +165d  Hsing Tech. Enterprise Co., Ltd. +165f  Linux Media Labs, LLC +	1020  LMLM4 MPEG-4 encoder +1661  Worldspace Corp. +1668  Actiontec Electronics Inc +	0100  Mini-PCI bridge +# Formerly SiByte, Inc. +166d  Broadcom Corporation +	0001  SiByte BCM1125/1125H/1250 System-on-a-Chip PCI +	0002  SiByte BCM1125H/1250 System-on-a-Chip HyperTransport +	0012  SiByte BCM1280/BCM1480 System-on-a-Chip PCI-X +	0014  Sibyte BCM1280/BCM1480 System-on-a-Chip HyperTransport +1677  Bernecker + Rainer +	104e  5LS172.6 B&R Dual CAN Interface Card +	12d7  5LS172.61 B&R Dual CAN Interface Card +	20ad  5ACPCI.MFIO-K01 Profibus DP / K-Feldbus / COM +1678  NetEffect +	0100  NE020 10Gb Accelerated Ethernet Adapter (iWARP RNIC) +1679  Tokyo Electron Device Ltd. +	3000  SD Standard host controller [Ellen] +167b  ZyDAS Technology Corp. +	2102  ZyDAS ZD1202 +		187e 3406  ZyAIR B-122 CardBus 11Mbs Wireless LAN Card +		187e 3407  ZyAIR B-320 802.11b Wireless PCI Adapter +	2116  ZD1212B Wireless Adapter +167d  Samsung Electro-Mechanics Co., Ltd. +	a000  MagicLAN SWL-2210P 802.11b [Intersil ISL3874] +167e  ONNTO Corp. +1681  Hercules +1682  XFX Pine Group Inc. +1688  CastleNet Technology Inc. +	1170  WLAN 802.11b card +# nee Atheros Communications, Inc. +168c  Qualcomm Atheros +	0007  AR5210 Wireless Network Adapter [AR5000 802.11a] +		1737 0007  WPC54A Wireless PC Card +		1b47 0100  Harmony 8450CN Wireless CardBus Module +		1b47 0110  Skyline 4030 / Harmony 8450 802.11a Wireless CardBus Adapter +		8086 2501  PRO/Wireless 5000 LAN PCI Adapter Module +	0011  AR5211 Wireless Network Adapter [AR5001A 802.11a] +	0012  AR5211 Wireless Network Adapter [AR5001X 802.11ab] +		1186 3a03  AirPro DWL-A650 Wireless Cardbus Adapter (rev.B) +		1186 3a04  AirPro DWL-AB650 Multimode Wireless Cardbus Adapter +		1186 3a05  AirPro DWL-AB520 Multimode Wireless PCI Adapter +		126c 8031  2201 Mobile Adapter +		1385 4400  WAB501 802.11ab Wireless CardBus Card +		1b47 aa00  8460 802.11ab Wireless CardBus Adapter +# AR5001G, AR5001X+, AR5002G, AR5002X, AR5004G, AR5004X chipsets +	0013  AR5212/AR5213 Wireless Network Adapter +		0308 3402  AG-100 802.11ag Wireless Cardbus Adapter +		0308 3405  G-102 v2 802.11g Wireless Cardbus Adapter +		0308 3408  G-170S 802.11g Wireless CardBus Adapter +		0e11 00e5  NC6000/NC8000 laptop +		10b7 6002  3CRWE154A72 802.11abg Cardbus Adapter +		1113 d301  Philips CPWNA100 Wireless CardBus adapter +		1113 ee23  SMCWPCIT-G 108Mbps Wireless PCI adapter +		1154 033b  Buffalo WLI-CB-AMG54 +		1154 034e  Buffalo WLI-CB-AG108HP 802.11abg Cardbus Adapter +		1186 3202  DWL-G650 (Rev B3,B5) Wireless cardbus adapter +		1186 3203  AirPlus DWL-G520 Wireless PCI Adapter (rev. A) +		1186 3a07  AirXpert DWL-AG650 Wireless Cardbus Adapter +		1186 3a08  AirXpert DWL-AG520 Wireless PCI Adapter +		1186 3a12  D-Link AirPlus DWL-G650 Wireless Cardbus Adapter(rev.C) +		1186 3a13  AirPlus DWL-G520 Wireless PCI Adapter (rev. B) +		1186 3a14  AirPremier AG DWL-AG530 Wireless PCI Adapter (rev.A) +		1186 3a17  D-Link AirPremier DWL-G680 Wireless Cardbus Adapter +		1186 3a18  D-Link AirPremier DWL-G550 Wireless PCI Adapter +		1186 3a1a  WNA-2330 802.11bg Wireless CardBus Adapter +		1186 3a63  D-Link AirPremier DWL-AG660 Wireless Cardbus Adapter +		1186 3a93  Conceptronic C54I Wireless 801.11g PCI card +		1186 3a94  Conceptronic C54C 802.11g Wireless Cardbus Adapter +		1186 3ab0  Allnet ALL0281 Wireless PCI Card +		1385 4600  WAG511 802.11a/b/g Dual Band Wireless PC Card +		1385 4610  WAG511 802.11a/b/g Dual Band Wireless PC Card +		1385 4900  WG311v1 802.11g Wireless PCI Adapter +		1385 4a00  WAG311 802.11a/g Wireless PCI Adapter +		1385 4b00  WG511T 108 Mbps Wireless PC Card (rev.A/B) +		1385 4d00  WG311T 108 Mbps Wireless PCI Adapter (rev.A2) +		1385 4f00  WG511U Double 108 Mbps Wireless PC Card +		1385 5a00  WG311T 108 Mbps Wireless PCI Adapter (rev.A3) +		1385 5b00  WG511T 108 Mbps Wireless PC Card (rev.C) +		1385 5d00  WPN511 RangeMax Wireless PC Card +		1458 e911  GN-WIAG02 +		1468 0403  U10H014 802.11g Cardbus Adapter +		1468 0408  ThinkPad 11b/g Wireless LAN Mini PCI Adapter +		14b7 0a10  8480-WD 802.11abg Cardbus Adapter +		14b7 0a60  8482-WD ORiNOCO 11a/b/g Wireless PCI Adapter +		14b7 aa30  8800-FC 802.11bg Cardbus Adapter +		14b7 aa40  8470-WD 802.11bg Cardbus Adapter +		14b9 cb21  CB21 802.11a/b/g Cardbus Adapter +		1668 1026  IBM HighRate 11 a/b/g Wireless CardBus Adapter +		168c 0013  AirPlus XtremeG DWL-G650 Wireless PCMCIA Adapter +		168c 1025  DWL-G650B2 Wireless CardBus Adapter +		168c 1027  Engenius NL-3054CB ARIES b/g CardBus Adapter +		168c 1042  Ubiquiti Networks SuperRange a/b/g Cardbus Adapter +		168c 1051  EZ Connect g 802.11g 108Mbps Wireless PCI Adapter +		168c 2026  Netgate 5354MP ARIES a(108Mb turbo)/b/g MiniPCI Adapter +		168c 2027  D-Link AirPlus DWL-G520 Wireless PCI Adapter (rev. A) +		168c 2041  Engenius 5354MP Plus ARIES2 b/g MiniPCI Adapter +		168c 2042  Engenius 5354MP Plus ARIES2 a/b/g MiniPCI Adapter +		168c 2051  TRENDnet TEW-443PI Wireless PCI Adapter +		16a5 160a  BWP712 802.11bg Wireless CardBus Adapter +		16ab 7302  Trust Speedshare Turbo Pro Wireless PCI Adapter +		1737 0017  WPC55AG +		1737 0026  WMP55AG v1.1 +		1737 0035  WPC55AG v1.2 802.11abg Cardbus Adapter +		1737 0036  WMP55AG v1.2 802.11abg PCI Adapter +		1799 3000  F6D3000 Dual-Band Wireless A+G Desktop Card +		1799 3010  F6D3010 Dual-Band Wireless A+G Notebook Card +		17cf 0042  Z-COMAX Highpower XG-622H (400mw) 802.11b/g mini-PCI Adapter +		185f 1012  CM9 Wireless a/b/g MiniPCI Adapter +		185f 2012  Wistron NeWeb WLAN a+b+g model CB9 +		a727 6801  3CRXJK10075 OfficeConnect Wireless 108Mbps 11g XJACK PC Card +	001a  AR2413/AR2414 Wireless Network Adapter [AR5005G(S) 802.11bg] +		1052 168c  Sweex Wireless Lan PC Card 54Mbps +		1113 ee20  SMC Wireless CardBus Adapter 802.11g (SMCWCB-G EU) +		1113 ee24  SMC Wireless PCI Card WPCI-G +		1186 3a15  AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.D1) +		1186 3a16  AirPlus G DWL-G510 Wireless PCI Adapter(rev.B) +		1186 3a1c  WNA-1330 Notebook Adapter +		1186 3a1d  WDA-1320 Desktop Adapter +		1186 3a23  AirPlus G DWL-G520+A Wireless PCI Adapter +		1186 3a24  AirPlus G DWL-G650+A Wireless Cardbus Adapter +		1186 3b08  AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.C1) +		168c 001a  Belkin FD7000 +		168c 1052  TP-Link TL-WN510G Wireless CardBus Adapter +		168c 2052  Compex Wireless 802.11 b/g  MiniPCI Adapter, Rev A1 [WLM54G] +		16ec 0122  Wireless PCI Adapter Model 5418 +		1737 0053  WPC54G v7 802.11g Wireless-G Notebook Adapter +		1799 700c  F5D7000 v5000 Wireless G Desktop Card +		1799 701d  F5D7010 v5000 Wireless G Notebook Card +		17f9 0008  DX-WGNBC 802.11bg Wireless CardBus Adapter +		17f9 0018  DX-WGDTC 802.11bg Wireless PCI Adapter +	001b  AR5413/AR5414 Wireless Network Adapter [AR5006X(S) 802.11abg] +# Atheros AR5414 32-bit mini-PCI type IIIB +		0777 1107  UB5 802.11a Wireless Mini PCI Adapter +		0777 3002  XR2 802.11g Wireless Mini PCI Adapter +		0777 3005  XR5 802.11a Wireless Mini PCI Adapter +		0777 3009  XR9 900MHz Wireless Mini PCI Adapter +		1154 034e  WLI-CB-AG108HP 802.11abg Wireless CardBus Adapter +		1186 3a19  D-Link AirPremier AG DWL-AG660 Wireless Cardbus Adapter +		1186 3a22  AirPremier AG DWL-AG530 Wireless PCI Adapter (rev.B) +		11ad 5001  WN5301A 802.11bg Wireless PCI Adapter +		1458 e901  GN-WI01HT Wireless a/b/g MiniPCI Adapter +		168c 001b  Wireless LAN PCI LiteOn +		168c 1062  IPN-W100CB 802.11abg Wireless CardBus Adapter +		168c 2062  EnGenius EMP-8602 (400mw) or Compex WLM54AG (SuperAG) +		168c 2063  EnGenius EMP-8602 (400mw) or Compex WLM54AG +		17f9 000b  WL-711A 802.11abg Wireless CardBus Adapter +		17f9 000c  WPIA-112AG 802.11abg Wireless PCI Adapter +		17f9 000d  PC-686X 802.11abg Wireless Mini PCI Adapter +		185f 1600  DCMA-82 High Power WLAN 802.11a/b/g mini-PCI Module (Super A/G, eXtended Range, 400mW) +		1948 3aba  RBTBJ-AW 802.11abg Wireless Cardbus Adapter +		a727 6804  Wireless 11a/b/g PC Card with XJACK(r) Antenna +	001c  AR242x / AR542x Wireless Network Adapter (PCI-Express) +		0777 3006  SRX 802.11abg Wireless ExpressCard Adapter +		103c 137a  AR5BXB63 (Foxconn) 802.11bg Mini PCIe NIC +		106b 0086  AirPort Extreme +		144f 7106  WLL3140 (Toshiba PA3501U-1MPC) 802.11bg Wireless Mini PCIe Card +		144f 7128  WLL3141 (Toshiba PA3613U-1MPC) 802.11bg Wireless Mini PCIe Card +		1468 0428  AR5BXB63 802.11bg NIC +		1468 042a  AR5007EG 802.11bg NIC +		147b 1033  AirPace Wi-Fi +		168c 001c  AR242x 802.11abg NIC (PCI Express) +		168c 3061  AR5006EGS 802.11bg NIC (2.4GHz, PCI Express) +		168c 3062  AR5006EXS 802.11abg NIC (2.4/5.0GHz, PCI Express) +		168c 3063  AR5006EX 802.11abg NIC (2.4/5.0GHz, PCI Express) +		168c 3065  AR5006EG 802.11bg NIC (2.4GHz, PCI Express) +		168c 3067  AR242x 802.11abg Wireless PCI Express Adapter (rev 01) +		1a3b 1026  AW-GE780 802.11bg Wireless Mini PCIe Card +	001d  AR2417 Wireless Network Adapter [AR5007G 802.11bg] +		1799 720b  F5D7000 v8000 Wireless G Desktop Card +		1799 721b  F5D7010 v8000 Wireless G Notebook Card +# the name AR5005VL is used for some AR5513 based designs +	0020  AR5513 802.11abg Wireless NIC +		0308 3407  M-102 802.11g Wireless Cardbus Adapter +		1186 3a67  DWL-G650M Super G MIMO Wireless Notebook Adapter +		1186 3a68  DWL-G520M Wireless 108G MIMO Desktop Adapter +		187e 340e  M-302 802.11g Wireless PCI Adapter +		1976 2003  TEW-601PC 802.11g Wireless CardBus Adapter +	0023  AR5416 Wireless Network Adapter [AR5008 802.11(a)bgn] +		0308 340b  NWD-170N 802.11bgn Wireless CardBus Adapter +		1154 0365  Buffalo WLP-CB-AG300 802.11abgn Cardbus Adapter +		1154 0367  WLI-CB-AG301N 802.11abgn Wireless CardBus Adapter +		1186 3a6a  DWA-642 802.11n RangeBooster N CardBus Adapter +		1186 3a6b  DWA-547 802.11n RangeBooster N 650 DeskTop Adapter +		1186 3a6d  DWA-552 802.11n Xtreme N Desktop Adapter (rev A1) +		1186 3a76  DWA-645 802.11n RangeBooster N 650 Notebook Adapter (rev A1) +		1737 0059  WPC300N v2 Wireless-N Notebook Adapter +		1737 0069  WPC100 v1 802.11n RangePlus Wireless Notebook Adapter +		1737 0072  WMP110 v1 802.11n RangePlus Wireless PCI Adapter +		1799 8011  F5D8011 v1 802.11n N1 Wireless Notebook Card +		187e 3411  NWD-370N 802.11n Wireless PCI Adapter +		1976 2008  TEW-621PC 802.11bgn Wireless CardBus Adapter +	0024  AR5418 Wireless Network Adapter [AR5008E 802.11(a)bgn] (PCI-Express) +		106b 0087  AirPort Extreme +		1186 3a70  DWA-556 Xtreme N PCI Express Desktop Adapter +	0027  AR9160 Wireless Network Adapter [AR9001 802.11(a)bgn] +		0777 4082  SR71-A 802.11abgn Wireless Mini PCI Adapter +	0029  AR922X Wireless Network Adapter +		0777 4005  SR71-15 802.11an Mini PCI Adapter +		1186 3a7a  DWA-552 802.11n Xtreme N Desktop Adapter (rev A2) +		1186 3a7d  DWA-552 802.11n Xtreme N Desktop Adapter (rev A3) +	002a  AR928X Wireless Network Adapter (PCI-Express) +		0777 4f05  SR71-X 802.11abgn Wireless ExpressCard Adapter [AR9280] +		103c 3041  AR5BHB92-H 802.11abgn Wireless Half-size Mini PCIe Card [AR9280] +		105b e006  T77H053.00 802.11bgn Wireless Mini PCIe Card [AR9281] +		105b e01f  T77H047.31 802.11bgn Wireless Half-size Mini PCIe Card [AR9283] +		106b 008f  AirPort Extreme +		11ad 6600  WN6600A 802.11bgn Wireless Mini PCIe Card [AR9281] +		144f 7141  WLL6080 802.11bgn Wireless Mini PCIe Card [AR9281] +		168c 0203  DW1525 802.11abgn WLAN PCIe Card [AR9280] +		1a32 0303  EM303 802.11bgn Wireless Mini PCIe Card [AR9281] +		1a32 0306  EM306 802.11bgn Wireless Half-size Mini PCIe Card [AR9283] +		1a3b 1067  AW-NE771 802.11bgn Wireless Mini PCIe Card [AR9281] +		1a3b 1081  AW-NE773 802.11abgn Wireless Half-size Mini PCIe Card [AR9280] +	002b  AR9285 Wireless Network Adapter (PCI-Express) +		1028 0204  Wireless 1502 802.11bgn Half-size Mini PCIe Card +		1028 0205  Wireless 1702 802.11bgn Half-size Mini PCIe Card [AR9002WB-1NGCD] +		103c 303f  U98Z062.10 802.11bgn Wireless Half-size Mini PCIe Card +		103c 3040  U98Z062.12 802.11bgn Wireless Half-size Mini PCIe Card +		105b e017  T77H126.00 802.11bgn Wireless Half-size Mini PCIe Card +		105b e023  T77H121.04 802.11bgn Wireless Half-size Mini PCIe Card +		105b e025  T77H121.05 802.11bgn Wireless Half-size Mini PCIe Card +		1113 e811  WN7811A (Toshiba PA3722U-1MPC) 802.11bgn Wireless Half-size Mini PCIe Card +		185f 30af  DNXA-95 802.11bgn Wireless Half-size Mini PCIe Card +		1931 0023  Option GTM67x PCIe WiFi Adapter +		1a3b 1089  AW-NE785 / AW-NE785H 802.11bgn Wireless Full or Half-size Mini PCIe Card +		1a3b 2c37  AW-NB037H 802.11bgn Wireless Half-size Mini PCIe Card [AR9002WB-1NGCD] +		1b9a 0401  XW204E 802.11bgn Wireless Half-size Mini PCIe Card +		1b9a 0c03  WB214E 802.11bgn Wireless Half-size Mini PCIe Card [AR9002WB-1NGCD] +	002c  AR2427 802.11bg Wireless Network Adapter (PCI-Express) +	002d  AR9227 Wireless Network Adapter +	002e  AR9287 Wireless Network Adapter (PCI-Express) +		105b e034  T77H167.00 +	0030  AR93xx Wireless Network Adapter +		103c 1627  AR9380/HB112 802.11abgn 3×3 Wi-Fi Adapter +		106b 009a  AirPort Extreme +		1186 3a7e  DWA-566 Wireless N 300 Dual Band PCIe Desktop Adapter +		1a56 2000  Killer Wireless-N 1102 Half-size Mini PCIe Card [AR9382] +		1a56 2001  Killer Wireless-N 1103 Half-size Mini PCIe Card [AR9380] +	0032  AR9485 Wireless Network Adapter +		103c 1838  AR9485/HB125 802.11bgn 1×1 Wi-Fi Adapter +		105b e044  Unex DHXA-225 +	0033  AR9580 Wireless Network Adapter +	0034  AR9462 Wireless Network Adapter +		1a56 2003  Killer Wireless-N 1202 Half-size Mini PCIe Card +	0036  QCA9565 / AR9565 Wireless Network Adapter +	0037  AR9485 Wireless Network Adapter +# Also used as Gigabyte GC-WB150 on a PCIe-to-mini-PCIe converter +		1a3b 2100  AW-NB100H 802.11n Wireless Mini PCIe Card +	003c  QCA988x 802.11ac Wireless Network Adapter +# all QCA6174 devices? +	003e  Killer N1525 Wireless-AC +	0207  AR5210 Wireless Network Adapter [AR5000 802.11a] +	1014  AR5212 802.11abg NIC +		1014 058a  ThinkPad 11a/b/g Wireless LAN Mini Express Adapter (AR5BXB6) +	9013  AR5002X Wireless Network Adapter +	ff19  AR5006X Wireless Network Adapter +	ff1b  AR2425 Wireless Network Adapter [AR5007EG 802.11bg] +	ff1c  AR5008 Wireless Network Adapter +	ff1d  AR922x Wireless Network Adapter +# Found in "AVM Fritz!Box FON WLAN 7270v3" +		168c ee1c  AR9220-AC1A [AVM Fritz!Box FON WLAN 7270 v3] +1695  EPoX Computer Co., Ltd. +169c  Netcell Corporation +	0044  Revolution Storage Processing Card +# The right ID is 196d, but they got it nibble-swapped in 2202. +169d  Club-3D VB (Wrong ID) +16a5  Tekram Technology Co.,Ltd. +16ab  Global Sun Technology Inc +	1100  GL24110P +	1101  PLX9052 PCMCIA-to-PCI Wireless LAN +	1102  PCMCIA-to-PCI Wireless Network Bridge +	8501  WL-8305 Wireless LAN PCI Adapter +16ae  SafeNet Inc +	0001  SafeXcel 1140 +	000a  SafeXcel 1841 +	1141  SafeXcel 1141 +	1841  SafeXcel 1842 +16af  SparkLAN Communications, Inc. +16b4  Aspex Semiconductor Ltd +16b8  Sonnet Technologies, Inc. +16be  Creatix Polymedia GmbH +16c3  Synopsys, Inc. +16c6  Micrel-Kendin +	8695  Centaur KS8695 ARM processor +	8842  KSZ8842-PMQL 2-Port Ethernet Switch +16c8  Octasic Inc. +16c9  EONIC B.V. The Netherlands +16ca  CENATEK Inc +	0001  Rocket Drive DL +# nee Innocore Gaming Ltd., nee Densitron Gaming Ltd., a division of Densitron Technologies +16cd  Advantech Co. Ltd +	0101  DirectPCI SRAM for DPX-11x series +	0102  DirectPCI SRAM for DPX-S/C/E-series +	0103  DirectPCI ROM for DPX-11x series +	0104  DirectPCI ROM for DPX-S/C/E-series +	0105  DirectPCI I/O for DPX-114/DPX-115 +	0106  DirectPCI I/O for DPX-116 +	0107  DirectPCI I/O for DPX-116U +	0108  DirectPCI I/O for DPX-117 +	0109  DirectPCI I/O for DPX-112 +	010a  DirectPCI I/O for DPX-C/E-series +	010b  DirectPCI I/O for DPX-S series +16ce  Roland Corp. +16d5  Acromag, Inc. +	0504  PMC-DX504 Reconfigurable FPGA with LVDS I/O +	0520  PMC520 Serial Communication, 232 Octal +	0521  PMC521 Serial Communication, 422/485 Octal +	1020  PMC-AX1020 Reconfigurable FPGA with A/D & D/A +	1065  PMC-AX1065 Reconfigurable FPGA with A/D & D/A +	2004  PMC-DX2004 Reconfigurable FPGA with LVDS I/O +	2020  PMC-AX2020 Reconfigurable FPGA with A/D & D/A +	2065  PMC-AX2065 Reconfigurable FPGA with A/D & D/A +	3020  PMC-AX3020 Reconfigurable FPGA with A/D & D/A +	3065  PMC-AX3065 Reconfigurable FPGA with A/D & D/A +	4243  PMC424, APC424, AcPC424 Digital I/O and Counter Timer Module +	4248  PMC464, APC464, AcPC464 Digital I/O and Counter Timer Module +	424b  PMC-DX2002 Reconfigurable FPGA with Differential I/O +	4253  PMC-DX503 Reconfigurable FPGA with TTL and Differential I/O +	4312  PMC-CX1002 Reconfigurable Conduction-Cooled FPGA Virtex-II with Differential I/O +	4313  PMC-CX1003 Reconfigurable Conduction-Cooled FPGA Virtex-II with CMOS and Differential I/O +	4322  PMC-CX2002 Reconfigurable Conduction-Cooled FPGA Virtex-II with Differential I/O +	4323  PMC-CX2003 Reconfigurable Conduction-Cooled FPGA Virtex-II with CMOS and Differential I/O +	4350  PMC-DX501 Reconfigurable Digital I/O Module +	4353  PMC-DX2003 Reconfigurable FPGA with TTL and Differential I/O +	4357  PMC-DX502 Reconfigurable Differential I/O Module +	4457  PMC730, APC730, AcPC730 Multifunction Module +	464d  PMC408 32-Channel Digital Input/Output Module +	4850  PMC220-16 12-Bit Analog Output Module +	4a42  PMC483, APC483, AcPC483 Counter Timer Module +	4a50  PMC484, APC484, AcPC484 Counter Timer Module +	4a56  PMC230 16-Bit Analog Output Module +	4b47  PMC330, APC330, AcPC330 Analog Input Module, 16-bit A/D +	4c40  PMC-LX40 Reconfigurable Virtex-4 FPGA with plug-in I/O +	4c60  PMC-LX60 Reconfigurable Virtex-4 FPGA with plug-in I/O +	4d4d  PMC341, APC341, AcPC341 Analog Input Module, Simultaneous Sample & Hold +	4d4e  PMC482, APC482, AcPC482 Counter Timer Board +	524d  PMC-DX2001 Reconfigurable FPGA with TTL I/O +	5335  PMC-SX35 Reconfigurable Virtex-4 FPGA with plug-in I/O +	5456  PMC470 48-Channel Digital Input/Output Module +	5601  PMC-VLX85 Reconfigurable Virtex-5 FPGA with plug-in I/O +	5602  PMC-VLX110 Reconfigurable Virtex-5 FPGA with plug-in I/O +	5603  PMC-VSX95 Reconfigurable Virtex-5 FPGA with plug-in I/O +	5604  PMC-VLX155 Reconfigurable Virtex-5 FPGA with plug-in I/O +	5605  PMC-VFX70 Reconfigurable Virtex-5 FPGA with plug-in I/O +	5606  PMC-VLX155-1M Reconfigurable Virtex-5 FPGA with plug-in I/O +	5701  PMC-SLX150: Reconfigurable Spartan-6 FPGA with plug-in I/O +	5702  PMC-SLX150-1M: Reconfigurable Spartan-6 FPGA with plug-in I/O +	5801  XMC-VLX85 Reconfigurable Virtex-5 FPGA with plug-in I/O +	5802  XMC-VLX110 Reconfigurable Virtex-5 FPGA with plug-in I/O +	5803  XMC-VSX95 Reconfigurable Virtex-5 FPGA with plug-in I/O +	5804  XMC-VLX155 Reconfigurable Virtex-5 FPGA with plug-in I/O +	5807  XMC-SLX150: Reconfigurable Spartan-6 FPGA with plug-in I/O +	5808  XMC-SLX150-1M: Reconfigurable Spartan-6 FPGA with plug-in I/O +	5901  APCe8650 PCI Express IndustryPack Carrier Card +	6301  XMC Module with user-configurable Virtex-6 FPGA, 240k logic cells, SFP front I/O +	6302  XMC Module with user-configurable Virtex-6 FPGA, 365k logic cells, SFP front I/O +	6303  XMC Module with user-configurable Virtex-6 FPGA, 240k logic cells, no front I/O +	6304  XMC Module with user-configurable Virtex-6 FPGA, 365k logic cells, no front I/O +16da  Advantech Co., Ltd. +	0011  INES GPIB-PCI +16df  PIKA Technologies Inc. +16e2  Geotest-MTS +16e3  European Space Agency +	1e0f  LEON2FT Processor +16e5  Intellon Corp. +	6000  INT6000 Ethernet-to-Powerline Bridge [HomePlug AV] +	6300  INT6300 Ethernet-to-Powerline Bridge [HomePlug AV] +16ec  U.S. Robotics +	00ed  USR997900 +	0116  USR997902 10/100/1000 Mbps PCI Network Card +	2f00  USR5660A (USR265660A, USR5660A-BP) 56K PCI Faxmodem +	3685  Wireless Access PCI Adapter Model 022415 +	4320  USR997904 10/100/1000 64-bit NIC (Marvell Yukon) +	ab06  USR997901A 10/100 Cardbus NIC +16ed  Sycron N. V. +	1001  UMIO communication card +16f2  ETAS GmbH +	0200  I/O board +		16f2 0010  ES53xx I/O board +16f3  Jetway Information Co., Ltd. +16f4  Vweb Corp +	8000  VW2010 +16f6  VideoTele.com, Inc. +1702  Internet Machines Corporation (IMC) +1705  Digital First, Inc. +170b  NetOctave +	0100  NSP2000-SSL crypto accelerator +170c  YottaYotta Inc. +1719  EZChip Technologies +	1000  NPA Access Network Processor Family +# Seems to be a 2nd ID for Vitesse Semiconductor +1725  Vitesse Semiconductor +	7174  VSC7174 PCI/PCI-X Serial ATA Host Bus Controller +172a  Accelerated Encryption +	13c8  AEP SureWare Runner 1000V3 +# nee Fujitsu Siemens Computers GmbH +1734  Fujitsu Technology Solutions +1735  Aten International Co. Ltd. +1737  Linksys +	0029  WPG54G ver. 4 PCI Card +	1032  Gigabit Network Adapter +		1737 0015  EG1032 v2 Instant Gigabit Network Adapter +		1737 0024  EG1032 v3 Instant Gigabit Network Adapter +	1064  Gigabit Network Adapter +		1737 0016  EG1064 v2 Instant Gigabit Network Adapter +	ab08  21x4x DEC-Tulip compatible 10/100 Ethernet +	ab09  21x4x DEC-Tulip compatible 10/100 Ethernet +173b  Altima (nee Broadcom) +	03e8  AC1000 Gigabit Ethernet +	03e9  AC1001 Gigabit Ethernet +	03ea  AC9100 Gigabit Ethernet +		173b 0001  AC1002 +	03eb  AC1003 Gigabit Ethernet +1743  Peppercon AG +	8139  ROL/F-100 Fast Ethernet Adapter with ROL +1745  ViXS Systems, Inc. +	2020  XCode II Series +	2100  XCode 2100 Series +1749  RLX Technologies +174b  PC Partner Limited / Sapphire Technology +174d  WellX Telecom SA +175c  AudioScience Inc +175e  Sanera Systems, Inc. +1760  TEDIA spol. s r. o. +	0101  PCD-7004 Digital Bi-Directional Ports PCI Card +	0102  PCD-7104 Digital Input & Output PCI Card +	0303  PCD-7006C Digital Input & Output PCI Card +1771  InnoVISION Multimedia Ltd. +# nee SBS Technologies +1775  GE Intelligent Platforms +177d  Cavium, Inc. +	0001  Nitrox XL N1 +	0003  Nitrox XL N1 Lite +	0004  Octeon (and older) FIPS +	0005  Octeon CN38XX Network Processor Pass 3.x +	0006  RoHS +	0010  Nitrox XL NPX +	0020  Octeon CN31XX Network Processor +	0030  Octeon CN30XX Network Processor +	0040  Octeon CN58XX Network Processor +	0050  Octeon CN57XX Network Processor (CN54XX/CN55XX/CN56XX) +	0070  Octeon CN50XX Network Processor +	0080  Octeon CN52XX Network Processor +	0090  Octeon II CN63XX Network Processor +	0091  Octeon II CN68XX Network Processor +	0092  Octeon II CN65XX Network Processor +	0093  Octeon II CN61XX Network Processor +	0094  Octeon Fusion CNF71XX Cell processor +	0095  Octeon III CN78XX Network Processor +	0096  Octeon III CN70XX Network Processor +	a001  THUNDERX MRML Bridge +	a002  THUNDERX PCC Bridge +		177d a102  CN88XX PCC Bridge +	a008  THUNDERX SMMU +		177d a108  CN88XX SMMU +	a009  THUNDERX Generic Interrupt Controller +	a00a  THUNDERX GPIO Controller +	a00b  THUNDERX MPI / SPI Controller +	a00c  THUNDERX MIO-PTP Controller +	a00d  THUNDERX MIX Network Controller +	a00e  THUNDERX Reset Controller +	a00f  THUNDERX UART Controller +	a010  THUNDERX eMMC/SD Controller +	a011  THUNDERX MIO-BOOT Controller +	a012  THUNDERX TWSI / I2C Controller +	a013  THUNDERX CCPI (Multi-node connect) +	a014  THUNDERX Voltage Regulator Module +	a015  THUNDERX PCIe Switch Logic Interface +	a016  THUNDERX Key Memory +	a017  THUNDERX GTI (Global System Timers) +	a018  THUNDERX Random Number Generator +	a019  THUNDERX DFA +	a01a  THUNDERX Zip Coprocessor +	a01b  THUNDERX xHCI USB Controller +	a01c  THUNDERX AHCI SATA Controller +		177d a11c  CN88XX AHCI SATA Controller +	a01d  THUNDERX RAID Coprocessor +	a01e  THUNDERX Network Interface Controller +	a01f  THUNDERX Traffic Network Switch +	a020  THUNDERX PEM (PCI Express Interface) +	a021  THUNDERX L2C (Level-2 Cache Controller) +	a022  THUNDERX LMC (DRAM Controller) +	a023  THUNDERX OCLA (On-Chip Logic Analyzer) +	a024  THUNDERX OSM +	a025  THUNDERX GSER (General Serializer/Deserializer) +	a026  THUNDERX BGX (Common Ethernet Interface) +	a027  THUNDERX IOBN +	a029  THUNDERX NCSI (Network Controller Sideband Interface) +	a02a  THUNDERX SGP +	a02b  THUNDERX SMI / MDIO Controller +	a02c  THUNDERX DAP (Debug Access Port) +	a02d  THUNDERX PCIERC (PCIe Root Complex) +	a02e  THUNDERX L2C-TAD +	a02f  THUNDERX L2C-CBC +	a030  THUNDERX L2C-MCI +	a031  THUNDERX MIO-FUS (Fuse Access Controller) +	a032  THUNDERX FUSF (Fuse Controller) +1787  Hightech Information System Ltd. +1789  Ennyah Technologies Corp. +# also used by Struck Innovative Systeme for joint developments +1796  Research Centre Juelich +	0001  SIS1100 [Gigabit link] +	0002  HOTlink +	0003  Counter Timer +	0004  CAMAC Controller +	0005  PROFIBUS +	0006  AMCC HOTlink +	000d  Synchronisation Slave +	000e  SIS1100-eCMC +	000f  TDC (GPX) +	0010  PCIe Counter Timer +	0011  SIS1100-e single link +	0012  SIS1100-e quad link +	0015  SIS8100 [Gigabit link, MicroTCA] +1797  Techwell Inc. +	6801  TW6802 multimedia video card +	6802  TW6802 multimedia other device +	6810  TW6816 multimedia video controller +	6811  TW6816 multimedia video controller +	6812  TW6816 multimedia video controller +	6813  TW6816 multimedia video controller +# port 5 of 8 +	6814  TW6816 multimedia video controller +# port 6 of 8 +	6815  TW6816 multimedia video controller +# port 7 of 8 +	6816  TW6816 multimedia video controller +# channel 8 of 8 +	6817  TW6816 multimedia video controller +1799  Belkin +	6001  F5D6001 Wireless PCI Card [Realtek RTL8180] +	6020  F5D6020 v3000 Wireless PCMCIA Card [Realtek RTL8180] +	6060  F5D6060 Wireless PDA Card +	700f  F5D7000 v7000 Wireless G Desktop Card [Realtek RTL8185] +	701f  F5D7010 v7000 Wireless G Notebook Card [Realtek RTL8185] +179a  id Quantique +	0001  Quantis PCI 16Mbps +179c  Data Patterns +	0557  DP-PCI-557 [PCI 1553B] +	0566  DP-PCI-566 [Intelligent PCI 1553B] +	1152  DP-cPCI-1152 (8-channel Isolated ADC Module) +	5031  DP-CPCI-5031-Synchro Module +# cPCI Carrier for Mezzanine Modules +	5112  DP-cPCI-5112 [MM-Carrier] +	5121  DP-CPCI-5121-IP Carrier +	5211  DP-CPCI-5211-IP Carrier +	5679  AGE Display Module +17a0  Genesys Logic, Inc +	7163  GL9701 PCIe to PCI Bridge +	8083  GL880 USB 1.1 UHCI controller +	8084  GL880 USB 2.0 EHCI controller +17aa  Lenovo +17ab  Phillips Components +17af  Hightech Information System Ltd. +17b3  Hawking Technologies +	ab08  PN672TX 10/100 Ethernet +17b4  Indra Networks, Inc. +	0011  WebEnhance 100 GZIP Compression Card +	0012  WebEnhance 200 GZIP Compression Card +	0015  WebEnhance 300 GZIP Compression Card +	0016  StorCompress 300 GZIP Compression Card +	0017  StorSecure 300 GZIP Compression and AES Encryption Card +17c0  Wistron Corp. +17c2  Newisys, Inc. +17cb  Airgo Networks, Inc. +	0001  AGN100 802.11 a/b/g True MIMO Wireless Card +		1385 5c00  WGM511 Pre-N 802.11g Wireless CardBus Adapter +		1737 0045  WMP54GX v1 802.11g Wireless-G PCI Adapter with SRX +	0002  AGN300 802.11 a/b/g True MIMO Wireless Card +		1385 6d00  WPNT511 RangeMax 240 Mbps Wireless CardBus Adapter +		1737 0054  WPC54GX4 v1 802.11g Wireless-G Notebook Adapter with SRX400 +17cc  NetChip Technology, Inc +	2280  USB 2.0 +17cf  Z-Com, Inc. +17d3  Areca Technology Corp. +	1110  ARC-1110 4-Port PCI-X to SATA RAID Controller +	1120  ARC-1120 8-Port PCI-X to SATA RAID Controller +	1130  ARC-1130 12-Port PCI-X to SATA RAID Controller +	1160  ARC-1160 16-Port PCI-X to SATA RAID Controller +	1170  ARC-1170 24-Port PCI-X to SATA RAID Controller +	1201  ARC-1200 2-Port PCI-Express to SATA II RAID Controller +	1210  ARC-1210 4-Port PCI-Express to SATA RAID Controller +	1220  ARC-1220 8-Port PCI-Express to SATA RAID Controller +	1222  ARC-1222 8-Port PCI-Express to SAS/SATA II RAID Controller +	1230  ARC-1230 12-Port PCI-Express to SATA RAID Controller +	1260  ARC-1260 16-Port PCI-Express to SATA RAID Controller +	1280  ARC-1280/1280ML 24-Port PCI-Express to SATA II RAID Controller +		17d3 1221  ARC-1221 8-Port PCI-Express to SATA RAID Controller +	1300  ARC-1300ix-16 16-Port PCI-Express to SAS Non-RAID Host Adapter +	1680  ARC-1680 8 port PCIe/PCI-X to SAS/SATA II RAID Controller +		17d3 1212  ARC-1212 4-Port PCIe to SAS/SATA II RAID Controller +	1880  ARC-1880 8/12 port PCIe/PCI-X to SAS/SATA II RAID Controller +# nee Neterion Inc., previously S2io Inc. +17d5  Exar Corp. +	5731  Xframe 10-Gigabit Ethernet PCI-X +	5732  Xframe II 10-Gigabit Ethernet PCI-X 2.0 +	5831  Xframe 10-Gigabit Ethernet PCI-X +		103c 12d5  PCI-X 133MHz 10GbE SR Fiber +		10a9 8020  Single Port 10-Gigabit Ethernet (PCI-X, Fiber) +		10a9 8024  Single Port 10-Gigabit Ethernet (PCI-X, Fiber) +	5832  Xframe II 10-Gigabit Ethernet PCI-X 2.0 +		103c 1337  PCI-X 266MHz 10GigE SR [AD385A] +		10a9 8021  Single Port 10-Gigabit Ethernet II (PCI-X, Fiber) +		17d5 6020  Xframe II SR +		17d5 6021  Xframe II SR, Low Profile +		17d5 6022  Xframe E SR +		17d5 6420  Xframe II LR +		17d5 6421  Xframe II LR, Low Profile +		17d5 6422  Xframe E LR +		17d5 6c20  Xframe II CX4 +		17d5 6c21  Xframe II CX4, Low Profile +		17d5 6c22  Xframe E CX4 +	5833  X3100 Series 10 Gigabit Ethernet PCIe +		17d5 6030  X3110 Single Port SR +		17d5 6031  X3120 Dual Port SR +		17d5 6430  X3110 Single Port LR +		17d5 6431  X3120 Dual Port LR +		17d5 7030  X3110 Single Port LRM +		17d5 7031  X3120 Dual Port LRM +		17d5 7430  X3110 Single Port 10GBase-T +		17d5 7431  X3120 Dual Port 10GBase-T +		17d5 7830  X3110 Single Port 10GBase-CR +		17d5 7831  X3120 Dual Port 10GBase-CR +17db  Cray Inc +	0101  XT Series [Seastar] 3D Toroidal Router +17de  KWorld Computer Co. Ltd. +17e4  Sectra AB +	0001  KK671 Cardbus encryption board +	0002  KK672 Cardbus encryption board +17e6  Entropic Communications Inc. +	0010  EN2010 [c.Link] MoCA Network Controller (Coax, PCI interface) +	0011  EN2010 [c.Link] MoCA Network Controller (Coax, MPEG interface) +	0021  EN2210 [c.Link] MoCA Network Controller (Coax) +	0025  EN2510 [c.Link] MoCA Network Controller (Coax, PCIe interface) +	0027  EN2710 [c.Link] MoCA 2.0 Network Controller (Coax, PCIe interface) +17ee  Connect Components Ltd +17f2  Albatron Corp. +17f3  RDC Semiconductor, Inc. +	1010  R1010 IDE Controller +	6020  R6020 North Bridge +	6021  R6021 Host Bridge +	6030  R6030 ISA Bridge +	6031  R6031 ISA Bridge +	6040  R6040 MAC Controller +	6060  R6060 USB 1.1 Controller +	6061  R6061 USB 2.0 Controller +17f7  Topdek Semiconductor Inc. +17f9  Gemtek Technology Co., Ltd +17fc  IOGEAR, Inc. +17fe  InProComm Inc. +	2120  IPN 2120 802.11b +		1737 0020  WMP11 v4 802.11b Wireless-B PCI Adapter +	2220  IPN 2220 802.11g +		1468 0305  T60N871 802.11g Mini PCI Wireless Adapter +		1737 0029  WPC54G v4 802.11g Wireless-G Notebook Adapter +17ff  Benq Corporation +1800  Qualcore Logic Inc. +	1100  Nanospeed Trading Gateway +1803  ProdaSafe GmbH +1805  Euresys S.A. +1809  Lumanate, Inc. +1813  Ambient Technologies Inc +	4000  HaM controllerless modem +		16be 0001  V9x HAM Data Fax Modem +	4100  HaM plus Data Fax Modem +		16be 0002  V9x HAM 1394 +1814  Ralink corp. +	0101  Wireless PCI Adapter RT2400 / RT2460 +		1043 0127  WiFi-b add-on Card +		1371 0010  Minitar MNW2BPCI Wireless PCI Card +		1462 6828  PC11B2 (MS-6828) Wireless 11b PCI Card +	0200  RT2500 802.11g PCI [PC54G2] +	0201  RT2500 Wireless 802.11bg +		1043 130f  WL-130g +		1186 3c00  DWL-G650X Wireless 11g CardBus Adapter +		1371 001e  CWC-854 Wireless-G CardBus Adapter +		1371 001f  CWM-854 Wireless-G Mini PCI Adapter +		1371 0020  CWP-854 Wireless-G PCI Adapter +		1458 e381  GN-WMKG 802.11b/g Wireless CardBus Adapter +		1458 e931  GN-WIKG 802.11b/g mini-PCI Adapter +		1462 6833  Unknown 802.11g mini-PCI Adapter +		1462 6835  Wireless 11G CardBus CB54G2 +		1737 0032  WMP54G v4.0 PCI Adapter +		1799 700a  F5D7000 v2000/v3000 Wireless G Desktop Card +		1799 701a  F5D7010 v2000/v3000 Wireless G Notebook Card +		1814 2560  RT2500 Wireless 802.11bg +		182d 9073  WL-115 Wireless Network PCI Adapter +		185f 22a0  CN-WF513 Wireless Cardbus Adapter +		18eb 5312  WL531P IEEE 802.11g PCI Card-EU +		1948 3c00  C54RC v1 Wireless 11g CardBus Adapter +		1948 3c01  C54Ri v1 Wireless 11g PCI Adapter +	0300  Wireless Adapter Canyon CN-WF511 +	0301  RT2561/RT61 802.11g PCI +		1186 3c08  AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.E1) +		1186 3c09  DWL-G510 Rev C +		13d1 abe3  miniPCI Pluscom 802.11 a/b/g +		1458 e933  GN-WI01GS +		1458 e934  GN-WP01GS +		1737 0055  WMP54G v4.1 +		1799 700e  F5D7000 v6000 Wireless G Desktop Card +		1799 701e  F5D7010 v6000 Wireless G Notebook Card +		17f9 0012  AWLC3026T 802.11g Wireless CardBus Adapter +		1814 2561  EW-7108PCg/EW-7128g +	0302  RT2561/RT61 rev B 802.11g +		1186 3a71  DWA-510 Wireless G Desktop Adapter +		1186 3c08  AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.E2) +		1186 3c09  AirPlus G DWL-G510 Wireless Network Adapter (Rev.C) +		1462 b834  PC54G3 Wireless 11g PCI Card +		1948 3c23  C54RC v2 Wireless 11g CardBus Adapter +		1948 3c24  C54Ri v2 Wireless 11g PCI Adapter +	0401  RT2600 802.11 MIMO +		1737 0052  WPC54GR v1 802.11g Wireless-G Notebook Adapter with RangeBooster +		17f9 0011  WPCR-137G 802.11bg Wireless CardBus Adapter +		17f9 0016  WPIR-119GH 802.11bg Wireless Desktop Adapter +	0601  RT2800 802.11n PCI +		1799 801c  F5D8011 v3 802.11n N1 Wireless Notebook Card +		187e 3412  NWD-310N 802.11n Wireless PCI Adapter +	0681  RT2890 Wireless 802.11n PCIe +		1458 e939  GN-WS30N-RH 802.11bgn Mini PCIe Card +	0701  RT2760 Wireless 802.11n 1T/2R +		1737 0074  WMP110 v2 802.11n RangePlus Wireless PCI Adapter +	0781  RT2790 Wireless 802.11n 1T/2R PCIe +		1814 2790  RT2790 Wireless 802.11n 1T/2R PCIe +	3060  RT3060 Wireless 802.11n 1T/1R +		1186 3c04  DWA-525 Wireless N 150 Desktop Adapter (rev.A1) +	3062  RT3062 Wireless 802.11n 2T/2R +	3090  RT3090 Wireless 802.11n 1T/1R PCIe +		13bd 1057  GN-WS32L-RH Half-size Mini PCIe Card +	3091  RT3091 Wireless 802.11n 1T/2R PCIe +	3092  RT3092 Wireless 802.11n 2T/2R PCIe +	3290  RT3290 Wireless 802.11n 1T/1R PCIe +		103c 18ec  Ralink RT3290LE 802.11bgn 1x1 Wi-Fi and Bluetooth 4.0 Combo Adapter +	3298  RT3290 Bluetooth +		103c 18ec  Ralink RT3290LE 802.11bgn 1x1 Wi-Fi and Bluetooth 4.0 Combo Adapter +	3592  RT3592 Wireless 802.11abgn 2T/2R PCIe +	359f  RT3592 PCIe Wireless Network Adapter +	5360  RT5360 Wireless 802.11n 1T/1R +		1186 3c05  DWA-525 Wireless N 150 Desktop Adapter (rev.A2) +		20f4 703a  TEW-703PI N150 Wireless PCI Adapter +	5390  RT5390 Wireless 802.11n 1T/1R PCIe +		103c 1636  U98Z077.00 Half-size Mini PCIe Card +	5392  RT5392 PCIe Wireless Network Adapter +	539f  RT5390 [802.11 b/g/n 1T1R G-band PCI Express Single Chip] +		103c 1637  Pavilion DM1Z-3000 PCIe wireless card +	5592  RT5592 PCIe Wireless Network Adapter +	e932  RT2560F 802.11 b/g PCI +1815  Devolo AG +1820  InfiniCon Systems Inc. +1822  Twinhan Technology Co. Ltd +	4e35  Mantis DTV PCI Bridge Controller [Ver 1.0] +182d  SiteCom Europe BV +# HFC-based ISDN card +	3069  ISDN PCI DC-105V2 +	9790  WL-121 Wireless Network Adapter 100g+ [Ver.3] +182e  Raza Microelectronics, Inc. +	0008  XLR516 Processor +# Strange vendor ID used by BCM5785 when in RAID mode +182f  Broadcom +# HT1000 uses 3 IDs 1166:024a (Native SATA Mode), 1166:024b (PATA/IDE Mode), 182f:000b (RAID Mode) depends on SATA BIOS setting +	000b  BCM5785 [HT1000] SATA (RAID Mode) +1830  Credence Systems Corporation +183b  MikroM GmbH +	08a7  MVC100 DVI +	08a8  MVC101 SDI +	08a9  MVC102 DVI+Audio +	08b0  MVC200-DC +1846  Alcatel-Lucent +1849  ASRock Incorporation +184a  Thales Computers +	1100  MAX II cPLD +1851  Microtune, Inc. +1852  Anritsu Corp. +1853  SMSC Automotive Infotainment System Group +1854  LG Electronics, Inc. +185b  Compro Technology, Inc. +	1489  VideoMate Vista T100 +185f  Wistron NeWeb Corp. +1864  SilverBack +	2110  ISNAP 2110 +1867  Topspin Communications +	5a44  MT23108 InfiniHost HCA +	5a45  MT23108 InfiniHost HCA flash recovery +	5a46  MT23108 InfiniHost HCA bridge +	6278  MT25208 InfiniHost III Ex (Tavor compatibility mode) +	6282  MT25208 InfiniHost III Ex +186c  Humusoft, s.r.o. +	0612  AD612 Data Acquisition Device +	0614  MF614 Multifunction I/O Card +	0622  AD622 Data Acquisition Device +	0624  MF624 Multifunction I/O PCI Card +	0625  MF625 3-phase Motor Driver +	0634  MF634 Multifunction I/O PCIe Card +186f  WiNRADiO Communications +1876  L-3 Communications +	a101  VigraWATCH PCI +	a102  VigraWATCH PMC +	a103  Vigra I/O +187e  ZyXEL Communications Corporation +	3403  ZyAir G-110 802.11g +	340e  M-302 802.11g XtremeMIMO +1885  Avvida Systems Inc. +1888  Varisys Ltd +	0301  VMFX1 FPGA PMC module +	0601  VSM2 dual PMC carrier +	0710  VS14x series PowerPC PCI board +	0720  VS24x series PowerPC PCI board +188a  Ample Communications, Inc +1890  Egenera, Inc. +1894  KNC One +1896  B&B Electronics Manufacturing Company, Inc. +	4202  MIport 3PCIU2 2-port Serial +	4204  MIport 3PCIU4 4-port Serial +	4208  MIport 3PCIU8 8-port Serial +	4211  MIport 3PCIOU1 1-port Isolated Serial +	4212  MIport 3PCIOU2 2-port Isolated Serial +	4214  MIport 3PCIOU4 4-port Isolated Serial +	bb10  3PCI2 2-Port Serial +	bb11  3PCIO1 1-Port Isolated Serial +1897  AMtek +18a1  Astute Networks Inc. +18a2  Stretch Inc. +	0002  VRC6016 16-Channel PCIe DVR Card +18a3  AT&T +18ac  DViCO Corporation +	d500  FusionHDTV 5 +	d800  FusionHDTV 3 Gold +	d810  FusionHDTV 3 Gold-Q +	d820  FusionHDTV 3 Gold-T +	db30  FusionHDTV DVB-T Pro +	db40  FusionHDTV DVB-T Hybrid +	db78  FusionHDTV DVB-T Dual Express +18b8  Ammasso +	b001  AMSO 1100 iWARP/RDMA Gigabit Ethernet Coprocessor +# formally Info-Tek Corp. +18bc  GeCube Technologies, Inc. +18c3  Micronas Semiconductor Holding AG +	0720  nGene PCI-Express Multimedia Controller +		07ca 032e  Hybrid M779 PCI-E +# Nee Octigabay System +18c8  Cray Inc +18c9  ARVOO Engineering BV +18ca  XGI Technology Inc. (eXtreme Graphics Innovation) +	0020  Z7/Z9 (XG20 core) +	0021  Z9s/Z9m (XG21 core) +	0027  Z11/Z11M +	0040  Volari V3XT/V5/V8 +	0047  Volari 8300 (chip: XP10, codename: XG47) +# should be 182d +18d2  Sitecom Europe BV (Wrong ID) +# Sitecom HFC-S based ISDN controller card DC-105v2 +	3069  DC-105v2 ISDN controller +18d8  Dialogue Technology Corp. +18dd  Artimi Inc +	4c6f  Artimi RTMI-100 UWB adapter +18df  LeWiz Communications +18e6  MPL AG +	0001  OSCI [Octal Serial Communication Interface] +18eb  Advance Multimedia Internet Technology, Inc. +18ec  Cesnet, z.s.p.o. +	6d05  ML555 +		18ec 0100  NIC (ethernet interfaces) +		18ec 0200  NIC (szedata2) 4x1G +		18ec 0201  NIC (szedata2) 2x10G +		18ec 0300  NIFIC (szedata2) 4x1G +		18ec 0302  NIFIC (szedata2) 2x10G +		18ec 4200  Flexible FlowMon (szedata2) 1x10G +		18ec ff00  Testing design +		18ec ff01  Boot design +	c006  COMBO6 +		18ec d001  COMBO-4MTX +		18ec d002  COMBO-4SFP +		18ec d003  COMBO-4SFPRO +		18ec d004  COMBO-2XFP +	c032  COMBO-LXT110 +		18ec 0100  NIC (ethernet interfaces) +		18ec 0200  NIC (szedata2) 4x1G +		18ec 0201  NIC (szedata2) 2x10G +		18ec 0300  NIFIC (szedata2) 4x1G +		18ec 0302  NIFIC (szedata2) 2x10G +		18ec 4200  Flexible FlowMon (szedata2) 1x10G +		18ec ff00  Testing design +		18ec ff01  Boot design +	c045  COMBO6E +	c050  COMBO-PTM +	c058  COMBO6X +		18ec d001  COMBO-4MTX +		18ec d002  COMBO-4SFP +		18ec d003  COMBO-4SFPRO +		18ec d004  COMBO-2XFP +	c132  COMBO-LXT155 +		18ec 0100  NIC (ethernet interfaces) +		18ec 0200  NIC (szedata2) 4x1G +		18ec 0201  NIC (szedata2) 2x10G +		18ec 0300  NIFIC (szedata2) 4x1G +		18ec 0302  NIFIC (szedata2) 2x10G +		18ec 4200  Flexible FlowMon (szedata2) 1x10G +		18ec ff00  Testing design +		18ec ff01  Boot design +	c232  COMBO-FXT100 +		18ec 0100  NIC (ethernet interfaces) +		18ec 0200  NIC (szedata2) 4x1G +		18ec 0201  NIC (szedata2) 2x10G +		18ec 0300  NIFIC (szedata2) 4x1G +		18ec 0302  NIFIC (szedata2) 2x10G +		18ec 4200  Flexible FlowMon (szedata2) 1x10G +		18ec ff00  Testing design +		18ec ff01  Boot design +18ee  Chenming Mold Ind. Corp. +18f1  Spectrum GmbH +18f4  Napatech A/S +	0031  NT20X Network Adapter +	0051  NT20X Capture Card +	0061  NT20E Capture Card +	0064  NT20E Inline Card +	0071  NT4E Capture Card +	0074  NT4E Inline Card +	0081  NT4E 4-port Expansion Card +	0091  NT20X Capture Card [New Rev] +	00a1  NT4E-STD Capture Card +	00a4  NT4E-STD Inline Card +# 8 x 1 Gbps / 10 Gbps PCIe Optical Bypass Adapter +	00b1  NTBPE Optical Bypass Adapter +	00c5  NT20E2 Network Adapter 2x10Gb +	00d5  NT40E2-4 Network Adapter 4x10Gb +	00e5  NT40E2-1 Network Adapter 1x40Gb +# 4-Port Adapter for 1 GbE In-Line Bypass Applications +	00f5  NT4E2-4T-BP Network Adapter 4x1Gb with Electrical Bypass +	0105  NT4E2-4-PTP Network Adapter 4x1Gb +	0115  NT20E2-PTP Network Adapter 2x10Gb +	0125  NT4E2-4-PTP Network Adapter 4x1Gb +	0135  NT20E2-PTP Network Adapter 2x10Gb +	0145  NT40E3-4-PTP Network Adapter 4x10Gb +	0155  NT100E3-1-PTP Network Adapter 1x100Gb +18f6  NextIO +	1000  [Nexsis] Switch Virtual P2P PCIe Bridge +	1001  [Texsis] Switch Virtual P2P PCIe Bridge +	1050  [Nexsis] Switch Virtual P2P PCI Bridge +	1051  [Texsis] Switch Virtual P2P PCI Bridge +	2000  [Nexsis] Switch Integrated Mgmt. Endpoint +	2001  [Texsis] Switch Integrated Mgmt. Endpoint +18f7  Commtech, Inc. +	0001  ESCC-PCI-335 Serial PCI Adapter [Fastcom] +	0002  422/4-PCI-335 Serial PCI Adapter [Fastcom] +	0003  232/4-1M-PCI Serial PCI Adapter [Fastcom] +	0004  422/2-PCI-335 Serial PCI Adapter [Fastcom] +	0005  IGESCC-PCI-ISO/1 Serial PCI Adapter [Fastcom] +	000a  232/4-PCI-335 Serial PCI Adapter [Fastcom] +	000b  232/8-PCI-335 Serial PCI Adapter [Fastcom] +	000f  FSCC Serial PCI Adapter [Fastcom] +	0010  GSCC Serial PCI Adapter [Fastcom] +	0011  QSSB Serial PCI Adapter [Fastcom] +	0014  SuperFSCC Serial PCI Adapter [Fastcom] +	0015  SuperFSCC-104-LVDS Serial PC/104+ Adapter [Fastcom] +	0016  FSCC-232 RS-232 Serial PCI Adapter [Fastcom] +# Software UARTs +	0017  SuperFSCC-104 Serial PC/104+ Adapter [Fastcom] +# Software UARTs +	0018  SuperFSCC/4 Serial PCI Adapter [Fastcom] +# Software UARTs +	0019  SuperFSCC Serial PCI Adapter [Fastcom] +	001a  SuperFSCC-LVDS Serial PCI Adapter [Fastcom] +# Software UARTs +	001b  FSCC/4 Serial PCI Adapter [Fastcom] +# RS-644 Only +	001c  SuperFSCC/4-LVDS Serial PCI Adapter [Fastcom] +# Software UARTs +	001d  FSCC Serial PCI Adapter [Fastcom] +	001e  SuperFSCC/4 Serial PCIe Adapter [Fastcom] +	001f  SuperFSCC/4 Serial cPCI Adapter [Fastcom] +	0020  422/4-PCIe Serial PCIe Adapter [Fastcom] +	0021  422/8-PCIe Serial PCIe Adapter [Fastcom] +# RS-644 Only +	0022  SuperFSCC/4-LVDS Serial PCIe Adapter [Fastcom] +# Software UARTs +	0023  SuperFSCC/4 Serial cPCI Adapter [Fastcom] +# RS-644 Only, Software UARTs +	0025  SuperFSCC/4-LVDS Serial PCI Adapter [Fastcom] +# RS-644 Only, Software UARTs +	0026  SuperFSCC-LVDS Serial PCI Adapter [Fastcom] +# Software UARTs +	0027  FSCC/4 Serial PCIe Adapter [Fastcom] +18fb  Resilience Corporation +1904  Hangzhou Silan Microelectronics Co., Ltd. +	2031  SC92031 PCI Fast Ethernet Adapter +	8139  RTL8139D [Realtek] PCI 10/100BaseTX ethernet adaptor +1905  Micronas USA, Inc. +1912  Renesas Technology Corp. +	0002  SH7780 PCI Controller (PCIC) +	0011  SH7757 PCIe End-Point [PBI] +	0012  SH7757 PCIe-PCI Bridge [PPB] +	0013  SH7757 PCIe Switch [PS] +	0014  uPD720201 USB 3.0 Host Controller +	0015  uPD720202 USB 3.0 Host Controller +1919  Soltek Computer Inc. +1923  Sangoma Technologies Corp. +	0040  A200/Remora FXO/FXS Analog AFT card +	0100  A104d QUAD T1/E1 AFT card +	0300  A101 single-port T1/E1 +	0400  A104u Quad T1/E1 AFT +1924  Solarflare Communications +	0703  SFC4000 rev A net [Solarstorm] +		10b8 0102  SMC10GPCIe-10BT (A2) [TigerCard] +		10b8 0103  SMC10GPCIe-10BT (A3) [TigerCard] +		10b8 0201  SMC10GPCIe-XFP (A1) [TigerCard] +		1924 0101  SFE4001-A1 +		1924 0102  SFE4001-A2 +		1924 0103  SFE4001-A3 +		1924 0201  SFE4002-A1 +		1924 0301  SFE4003-A1 +		1924 0302  SFE4003-A2 +		1924 0303  SFE4003-A3 +		1924 0304  SFE4003-A4 +		1924 0500  SFE4005-A0 +	0710  SFC4000 rev B [Solarstorm] +		10b8 0103  SMC10GPCIe-10BT (A3) [TigerCard] +		10b8 0201  SMC10GPCIe-XFP (A1) [TigerCard] +		1924 0102  SFE4001-A2 +		1924 0103  SFE4001-A3 +		1924 0201  SFE4002-A1 +		1924 0302  SFE4003-A2 +		1924 0303  SFE4003-A3 +		1924 0304  SFE4003-A4 +		1924 0500  SFE4005-A0 +		1924 5102  SFN4111T-A2 +		1924 5103  SFN4111T-R3 +		1924 5104  SFN4111T-R4 +		1924 5105  SFN4111T-R5 +		1924 5201  SFN4112F-R1 +		1924 5202  SFN4112F-R2 +	0803  SFC9020 [Solarstorm] +		1014 0478  2-port 10GbE Low-Latency (R7) +		1014 0479  2-port 10GbE OpenOnload (R7) +		1014 04a7  Solarflare 10Gb Low-latency Dual-port HBA (R7) +		1014 04a8  Solarflare 10Gb Dual-port HBA (R7) +		103c 2132  Ethernet 10Gb 2-port 570FLR-SFP+ Adapter (R1) +		103c 2136  Ethernet 10Gb 2-port 570SFP+ Adapter (R7) +		1924 1201  SFA6902F-R1 SFP+ AOE Adapter +		1924 6200  SFN5122F-R0 SFP+ Server Adapter +		1924 6201  SFN5122F-R1 SFP+ Server Adapter +		1924 6202  SFN5122F-R2 SFP+ Server Adapter +		1924 6204  SFN5122F-R4 SFP+ Server Adapter +		1924 6205  SFN5122F-R5 SFP+ Server Adapter +		1924 6206  SFN5122F-R6 SFP+ Server Adapter +		1924 6207  SFN5122F-R7 SFP+ Server Adapter +		1924 6210  SFN5322F-R0 SFP+ Precision Time Synchronization Server Adapter +		1924 6211  SFN5322F-R1 SFP+ Precision Time Synchronization Server Adapter +		1924 6217  SFN5322F-R7 SFP+ Precision Time Synchronization Server Adapter +		1924 6227  SFN6122F-R7 SFP+ Server Adapter +		1924 6237  SFN6322F-R7 SFP+ Precision Time Synchronization Server Adapter +		1924 6501  SFN5802K-R1 Mezzanine Adapter +		1924 6511  SFN5814H-R1 Mezzanine Adapter +		1924 6521  SFN5812H-R1 Mezzanine Adapter +		1924 6562  SFN6832F-R2 SFP+ Mezzanine Adapter +		1924 6a05  SFN5112F-R5 SFP+ Server Adapter +		1924 6a06  SFN5112F-R6 SFP+ Server Adapter +		1924 7206  SFN5162F-R6 SFP+ Server Adapter +		1924 7207  SFN5162F-R7 SFP+ Server Adapter +		1924 7a06  SFN5152F-R6 SFP+ Server Adapter +		1924 7a07  SFN5152F-R7 SFP+ Server Adapter +	0813  SFL9021 [Solarstorm] +		1924 6100  SFN5121T-R0 10GBASE-T Server Adapter +		1924 6102  SFN5121T-R2 10GBASE-T Server Adapter +		1924 6103  SFN5121T-R3 10GBASE-T Server Adapter +		1924 6104  SFN5121T-R4 10GBASE-T Server Adapter +		1924 6902  SFN5111T-R2 10GBASE-T Server Adapter +		1924 6904  SFN5111T-R4 10GBASE-T Server Adapter +		1924 7104  SFN5161T-R4 10GBASE-T Server Adapter +		1924 7904  SFN5151T-R4 10GBASE-T Server Adapter +	0903  SFC9120 +		1014 04cc  SFN7122F-R2 2x10GbE SFP+ Flareon Ultra +		1924 8002  SFN7122F-R1 SFP+ Server Adapter +		1924 8003  SFN7x41Q-R1 Flareon Ultra 7000 Series 10/40G Adapter +		1924 8006  SFN7022F-R1 SFP+ Server Adapter +		1924 8007  SFN7322F-R2 Precision Time SFP+ Server Adapter +		1924 8009  SFN7x22F-R2 Flareon Ultra 7000 Series 10G Adapter +		1924 800a  SFN7x02F-R2 Flareon 7000 Series 10G Adapter +	0923  SFC9140 +		1924 800b  SFN7x42Q-R1 Flareon Ultra 7000 Series 10/40G Adapter +	1803  SFC9020 Virtual Function [Solarstorm] +	1813  SFL9021 Virtual Function [Solarstorm] +	1903  SFC9120 Virtual Function +	1923  SFC9140 Virtual Function +	6703  SFC4000 rev A iSCSI/Onload [Solarstorm] +		10b8 0102  SMC10GPCIe-10BT (A2) [TigerCard] +		10b8 0103  SMC10GPCIe-10BT (A3) [TigerCard] +		10b8 0201  SMC10GPCIe-XFP (A1) [TigerCard] +		1924 0101  SFE4001-A1 +		1924 0102  SFE4001-A2 +		1924 0103  SFE4001-A3 +		1924 0201  SFE4002-A1 +		1924 0301  SFE4003-A1 +		1924 0302  SFE4003-A2 +		1924 0303  SFE4003-A3 +		1924 0304  SFE4003-A4 +		1924 0500  SFE4005-A0 +	c101  EF1-21022T [EtherFabric] +192a  BiTMICRO Networks Inc. +192e  TransDimension +1931  Option N.V. +	000c  Qualcomm MSM6275 UMTS chip +1932  DiBcom +193c  MAXIM Integrated Products +193f  Comtech AHA Corp. +	0001  AHA36x-PCIX +	0360  AHA360-PCIe +	0363  AHA363-PCIe +	0364  AHA364-PCIe +	0367  AHA367-PCIe +	0370  AHA370-PCIe +	3641  AHA3641 +	3642  AHA3642 +1942  ClearSpeed Technology plc +	e511  Advance X620 accelerator card +	e521  Advance e620 accelerator card +1947  C-guys, Inc. +	4743  CG200 Dual SD/SDIO Host controller device +1948  Alpha Networks Inc. +194a  DapTechnology B.V. +	1111  FireSpy3850 +	1112  FireSpy450b +	1113  FireSpy450bT +	1114  FireSpy850 +	1115  FireSpy850bT +	1200  FireTrac 3460bT +	1201  FireTrac 3460bT (fallback firmware) +	1202  FireTrac 3460bT +	1203  FireTrac 3460bT (fallback firmware) +# nee Curtis, Inc. +1954  One Stop Systems, Inc. +1957  Freescale Semiconductor Inc +	0012  MPC8548E +	0013  MPC8548 +	0014  MPC8543E +	0015  MPC8543 +	0018  MPC8547E +	0019  MPC8545E +	001a  MPC8545 +	0020  MPC8568E +	0021  MPC8568 +	0022  MPC8567E +	0023  MPC8567 +	0030  MPC8533E +	0031  MPC8533 +	0032  MPC8544E +	0033  MPC8544 +	0040  MPC8572E +	0041  MPC8572 +	0050  MPC8536E +	0051  MPC8536 +	0052  MPC8535E +	0053  MPC8535 +	0060  MPC8569 +	0061  MPC8569E +	0070  P2020E +	0071  P2020 +	0078  P2010E +	0079  P2010 +	0080  MPC8349E +	0081  MPC8349 +	0082  MPC8347E TBGA +	0083  MPC8347 TBGA +	0084  MPC8347E PBGA +		110a 4074  SIMATIC NET CP 1628 +	0085  MPC8347 PBGA +		110a 4046  SIMATIC NET CP 1623 +	0086  MPC8343E +	0087  MPC8343 +	00b4  MPC8315E +	00b6  MPC8314E +		1a56 1101  Killer Xeno Pro Gigabit Ethernet Controller +	00c2  MPC8379E +	00c3  MPC8379 +	00c4  MPC8378E +	00c5  MPC8378 +	00c6  MPC8377E +	00c7  MPC8377 +	0100  P1020E +	0101  P1020 +	0102  P1021E +	0103  P1021 +	0108  P1011E +	0109  P1011 +	010a  P1012E +	010b  P1012 +	0110  P1022E +	0111  P1022 +		1c7f 5200  EB5200 +	0118  P1013E +	0119  P1013 +	0128  P1010 +	0400  P4080E +	0401  P4080 +	0408  P4040E +	0409  P4040 +	0440  T4240 with security +	0441  T4240 without security +	0446  T4160 with security +	0447  T4160 without security +	0830  T2080 with security +	0831  T2080 without security +	0838  T2081 with security +	0839  T2081 without security +	580c  MPC5121e +	7010  MPC8641 PCI Host Bridge +	7011  MPC8641D PCI Host Bridge +	7018  MPC8610 +	c006  MPC8308 +		1a56 1201  Killer E2100 Gigabit Ethernet Controller +1958  Faster Technology, LLC. +1959  PA Semi, Inc +	a000  PA6T Core +	a001  PWRficient Host Bridge +	a002  PWRficient PCI-Express Port +	a003  PWRficient SMBus Controller +	a004  PWRficient 16550 UART +	a005  PWRficient Gigabit Ethernet +	a006  PWRficient 10-Gigabit Ethernet +	a007  PWRficient DMA Controller +	a008  PWRficient LPC/Localbus Interface +	a009  PWRficient L2 Cache +	a00a  PWRficient DDR2 Memory Controller +	a00b  PWRficient SERDES +	a00c  PWRficient System/Debug Controller +	a00d  PWRficient PCI-Express Internal Endpoint +1966  Orad Hi-Tec Systems +	1975  DVG64 family +	1977  DVG128 family +# nee Atheros Communications, Inc. nee Attansic Technology Corp. +1969  Qualcomm Atheros +	1026  AR8121/AR8113/AR8114 Gigabit or Fast Ethernet +		1043 8304  P5KPL-CM Motherboard +	1048  Attansic L1 Gigabit Ethernet +		1043 8226  P5KPL-VM Motherboard +	1062  AR8132 Fast Ethernet +	1063  AR8131 Gigabit Ethernet +		1458 e000  GA-G31M-ES2L Motherboard +		17c0 10d2  Medion Akoya E7214 Notebook PC [MD98410] +	1066  Attansic L2c Gigabit Ethernet +	1067  Attansic L1c Gigabit Ethernet +	1073  AR8151 v1.0 Gigabit Ethernet +	1083  AR8151 v2.0 Gigabit Ethernet +	1090  AR8162 Fast Ethernet +	1091  AR8161 Gigabit Ethernet +		1043 1477  N56VZ +	10a0  QCA8172 Fast Ethernet +	10a1  QCA8171 Gigabit Ethernet +	2048  Attansic L2 Fast Ethernet +	2060  AR8152 v1.1 Fast Ethernet +	2062  AR8152 v2.0 Fast Ethernet +# E2200, E2201, E2205 +	e091  Killer E220x Gigabit Ethernet Controller +196a  Sensory Networks Inc. +	0101  NodalCore C-1000 Content Classification Accelerator +	0102  NodalCore C-2000 Content Classification Accelerator +	0105  NodalCore C-3000 Content Classification Accelerator +196d  Club-3D BV +1971  AGEIA Technologies, Inc. +	1011  Physics Processing Unit [PhysX] +		1043 0001  PhysX P1 +1974  Eberspaecher Electronics +1976  TRENDnet +1977  Parsec +197b  JMicron Technology Corp. +	0250  JMC250 PCI Express Gigabit Ethernet Controller +	0260  JMC260 PCI Express Fast Ethernet Controller +	0368  JMB368 IDE controller +	2360  JMB360 AHCI Controller +	2361  JMB361 AHCI/IDE +		1462 7235  P965 Neo MS-7235 mainboard +	2362  JMB362 SATA Controller +		1043 8460  P8P67 Deluxe Motherboard +	2363  JMB363 SATA/IDE Controller +		1043 81e4  P5B [JMB363] +		1458 b000  Motherboard +		1849 2363  Motherboard (one of many) +	2364  JMB364 AHCI Controller +	2365  JMB365 AHCI/IDE +	2366  JMB366 AHCI/IDE +	2368  JMB368 IDE controller +	2369  JMB369 Serial ATA Controller +	2380  IEEE 1394 Host Controller +	2381  Standard SD Host Controller +	2382  SD/MMC Host Controller +	2383  MS Host Controller +	2384  xD Host Controller +	2386  Standard SD Host Controller +	2387  SD/MMC Host Controller +	2388  MS Host Controller +	2389  xD Host Controller +	2391  Standard SD Host Controller +	2392  SD/MMC Host Controller +	2393  MS Host Controller +	2394  xD Host Controller +1982  Distant Early Warning Communications Inc +	1600  OX16C954 HOST-A +	16ff  OX16C954 HOST-B +1989  Montilio Inc. +	0001  RapidFile Bridge +	8001  RapidFile +198a  Nallatech Ltd. +1993  Innominate Security Technologies AG +1999  A-Logics +	a900  AM-7209 Video Processor +199a  Pulse-LINK, Inc. +199d  Xsigo Systems +	8209  Virtual NIC Device +	890a  Virtual HBA Device +199f  Auvitek +	8501  AU85X1 PCI REV1.1 +	8521  AU8521 TV card +# nee ServerEngines Corp. +19a2  Emulex Corporation +	0200  BladeEngine 10Gb PCI-E iSCSI adapter +	0201  BladeEngine 10Gb PCIe Network Adapter +	0211  BladeEngine2 10Gb Gen2 PCIe Network Adapter +	0212  BladeEngine2 10Gb Gen2 PCIe iSCSI Adapter +	0221  BladeEngine3 10Gb Gen2 PCIe Network Adapter +	0222  BladeEngine3 10Gb Gen2 PCIe iSCSI Adapter +	0700  OneConnect 10Gb NIC +		103c 1747  NC550SFP DualPort 10GbE Server Adapter +		103c 1749  NC550SFP Dual Port Server Adapter +		103c 174a  NC551m Dual Port FlexFabric 10Gb Adapter +		103c 174b  StorageWorks NC550 DualPort Converged Network Adapter +		103c 3314  NC551i Dual Port FlexFabric 10Gb Adapter +	0702  OneConnect 10Gb iSCSI Initiator +	0704  OneConnect 10Gb FCoE Initiator +	0710  OneConnect 10Gb NIC (be3) +		103c 3315  NC553i 10Gb 2-port FlexFabric Converged Network Adapter +		103c 3340  NC552SFP 2-port 10Gb Server Adapter +		103c 3341  NC552m 10Gb 2-port FlexFabric Converged Network Adapter +		103c 3345  NC553m 10Gb 2-port FlexFabric Converged Network Adapter +		103c 337b  NC554FLB 10Gb 2-port FlexFabric Converged Network Adapter +	0712  OneConnect 10Gb iSCSI Initiator (be3) +	0714  OneConnect 10Gb FCoE Initiator (be3) +		103c 3315  NC553i 10Gb 2-port FlexFabric Converged Network Adapter +		103c 337b  NC554FLB 10Gb 2-port FlexFabric Converged Network Adapter +19a8  DAQDATA GmbH +19ac  Kasten Chase Applied Research +	0001  ACA2400 Crypto Accelerator +19ae  Progeny Systems Corporation +	0520  4135 HFT Interface Controller +	0521  Decimator +19c1  Exegy Inc. +# nee NextNet Wireless +19d1  Motorola Expedience +19d4  Quixant Limited +19da  ZOTAC International (MCO) Ltd. +19de  Pico Computing +19e2  Vector Informatik GmbH +19e3  DDRdrive LLC +	5801  DDRdrive X1 +	5808  DDRdrive X8 +	dd52  DDRdrive X1-30 +19e7  NET (Network Equipment Technologies) +	1001  STIX DSP Card +	1002  STIX - 1 Port T1/E1 Card +	1003  STIX - 2 Port T1/E1 Card +	1004  STIX - 4 Port T1/E1 Card +	1005  STIX - 4 Port FXS Card +19ee  Netronome Systems, Inc. +19f1  BFG Tech +19ff  Eclipse Electronic Systems, Inc. +1a03  ASPEED Technology, Inc. +	1150  AST1150 PCI-to-PCI Bridge +	2000  ASPEED Graphics Family +1a07  Kvaser AB +	0006  CAN interface PC104+ HS/HS +	0007  CAN interface PCIcanx II HS or HS/HS +	0008  CAN interface PCIEcan HS or HS/HS +	0009  CAN interface PCI104 HS/HS +1a08  Sierra semiconductor +	0000  SC15064 +1a0e  DekTec Digital Video B.V. +	083f  DTA-2111 VHF/UHF Modulator +1a17  Force10 Networks, Inc. +	8002  PB-10GE-2P 10GbE Security Card +1a1d  GFaI e.V. +	1a17  Meta Networks MTP-1G IDPS NIC +1a1e  3Leaf Systems, Inc. +1a22  Ambric Inc. +1a29  Fortinet, Inc. +	4338  CP8 Content Processor ASIC +	4e36  NP6 Network Processor +1a2b  Ascom AG +	0000  GESP v1.2 +	0001  GESP v1.3 +	0002  ECOMP v1.3 +	0005  ETP v1.4 +	000a  ETP-104 v1.1 +	000e  DSLP-104 v1.1 +# nee Metalink Ltd. +1a30  Lantiq +	0680  MtW8171 [Hyperion II] +	0700  Wave300 PSB8224 [Hyperion III] +	0710  Wave300 PSB8231 [Hyperion III] +1a32  Quanta Microsystems, Inc +1a3b  AzureWave +	1112  AR9285 Wireless Network Adapter (PCI-Express) +1a41  Tilera Corp. +	0001  TILE64 processor +	0002  TILEPro processor +	0200  TILE-Gx processor +	0201  TILE-Gx Processor Virtual Function +	2000  TILE-Gx PCI Express Root Port +1a4a  SLAC National Accelerator Lab PPA-REG +	1000  MCOR Power Supply Controller +	1010  AMC EVR - Stockholm Timing Board +	2000  PGPCard - 4 Lane +	2001  PGPCard - 8 Lane Plus EVR +	2010  PCI-Express EVR +1a51  Hectronic AB +1a55  Rohde & Schwarz DVS GmbH +	0010  SDStationOEM +	0011  SDStationOEM II +	0020  Centaurus +	0021  Centaurus II +	0022  Centaurus II LT +	0030  CLIPSTER-VPU 1.x (Hugo) +	0040  Hydra Cinema (JPEG) +	0050  CLIPSTER-VPU 2.x (DigiLab) +	0060  CLIPSTER-DCI 2.x (HydraX) +	0061  Atomix +	0062  Atomix LT +	0063  Atomix HDMI +	0064  Atomix STAN +	0065  Atomix HDMI STAN +	0070  RED Rocket +	0090  CinePlay +1a56  Bigfoot Networks, Inc. +1a57  Highly Reliable Systems +1a58  Razer USA Ltd. +1a5d  Celoxica +1a5e  Aprius Inc. +1a5f  System TALKS Inc. +1a68  VirtenSys Limited +1a71  XenSource, Inc. +1a73  Violin Memory, Inc +	0001  Mozart [Memory Appliance 1010] +1a76  Wavesat +1a77  Lightfleet Corporation +1a78  Virident Systems Inc. +	0031  FlashMAX Drive +		1a78 0034  FlashMAX PCIe SSD [rev 3] +		1a78 0037  FlashMAX PCIe SSD [rev 3D] +		1a78 0038  FlashMAX PCIe SSD [rev 4] +		1a78 0039  FlashMAX PCIe SSD [rev 4D] +	0040  FlashMAX II +	0041  FlashMAX II +	0042  FlashMAX II +	0050  FlashMAX III +1a84  Commex Technologies +	0001  Vulcan SP HT6210 10-Gigabit Ethernet (rev 02) +1a88  MEN Mikro Elektronik +	4d45  Multifunction IP core +1a8c  Verigy Pte. Ltd. +	1100  E8001-66443 PCI Express CIC +1a8e  DRS Technologies +	2090  Model 2090 PCI Express +1aa8  Ciprico, Inc. +	0009  RAIDCore Controller +	000a  RAIDCore Controller +1aae  Global Velocity, Inc. +1ab6  CalDigit, Inc. +	6201  RAID Card +# Parallels VM virtual devices +1ab8  Parallels, Inc. +	4000  Virtual Machine Communication Interface +	4005  Accelerated Virtual Video Adapter +	4006  Memory Ballooning Controller +1ab9  Espia Srl +1ac8  Aeroflex Gaisler +1acc  Point of View BV +1ad7  Spectracom Corporation +	8000  TSync-PCIe Time Code Processor +	9100  TPRO-PCI-66U Timecode Reader/Generator +1ade  Spin Master Ltd. +	1501  Swipetech barcode scanner +1ae0  Google, Inc. +1ae7  First Wise Media GmbH +	0520  HFC-S PCI A [X-TENSIONS XC-520] +1ae8  Silicon Software GmbH +	0a40  microEnable IV-BASE x1 +	0a41  microEnable IV-FULL x1 +	0a44  microEnable IV-FULL x4 +	0e44  microEnable IV-GigE x4 +1ae9  Wilocity Ltd. +	0101  Wil6200 PCI Express Root Port +	0200  Wil6200 PCI Express Port +	0201  Wil6200 Wireless PCI Express Port +	0301  Wil6200 802.11ad Wireless Network Adapter +	0302  Wil6200 802.11ad Wireless Network Adapter +	0310  Wil6200 802.11ad Wireless Network Adapter +1aec  Wolfson Microelectronics +# nee Fusion-io +1aed  SanDisk +	1003  ioDimm3 (v1.2) +	1005  ioDimm3 +		1014 03c3  High IOPS SSD PCIe Adapter +		103c 176f  1.28TB MLC PCIe ioDrive Duo +		103c 1770  5.2TB MLC PCIe ioDrive Octal +		103c 178b  160GB SLC PCIe ioDrive +		103c 178c  320GB MLC PCIe ioDrive +		103c 178d  320GB SLC PCIe ioDrive Duo +		103c 178e  640GB MLC PCIe ioDrive Duo +	1006  ioXtreme +	1007  ioXtreme Pro +	1008  ioXtreme-2 +	2001  ioDrive2 +	3001  ioMemory FHHL +	3002  ioMemory HHHL +	3003  ioMemory Mezzanine +1aee  Caustic Graphics Inc. +# nee Qumranet, Inc. +1af4  Red Hat, Inc +	1000  Virtio network device +	1001  Virtio block device +	1002  Virtio memory balloon +	1003  Virtio console +	1004  Virtio SCSI +	1005  Virtio RNG +	1009  Virtio filesystem +	1010  Virtio GPU +	1012  Virtio input device +	1110  Inter-VM shared memory +		1af4 1100  QEMU Virtual Machine +1af5  Netezza Corp. +1afa  J & W Electronics Co., Ltd. +1b03  Magnum Semiconductor, Inc, +	6100  DXT/DXTPro Multiformat Broadcast HD/SD Encoder/Decoder/Transcoder +1b08  MSC Vertriebs GmbH +1b0a  Pegatron +1b13  Jaton Corp +1b1a  K&F Computing Research Co. +	0e70  GRAPE +1b21  ASMedia Technology Inc. +	0611  ASM1061 SATA IDE Controller +	0612  ASM1062 Serial ATA Controller +		1849 0612  Motherboard +	1042  ASM1042 SuperSpeed USB Host Controller +		1043 8488  P8B WS Motherboard +		1849 1042  Motherboard +	1080  ASM1083/1085 PCIe to PCI Bridge +		1849 1080  Motherboard +	1142  ASM1042A USB 3.0 Host Controller +1b2c  Opal-RT Technologies Inc. +1b36  Red Hat, Inc. +	0001  QEMU PCI-PCI bridge +	0002  QEMU PCI 16550A Adapter +		1af4 1100  QEMU Virtual Machine +	0003  QEMU PCI Dual-port 16550A Adapter +		1af4 1100  QEMU Virtual Machine +	0004  QEMU PCI Quad-port 16550A Adapter +		1af4 1100  QEMU Virtual Machine +	0005  QEMU PCI Test Device +		1af4 1100  QEMU Virtual Machine +	0100  QXL paravirtual graphic card +		1af4 1100  QEMU Virtual Machine +1b37  Signal Processing Devices Sweden AB +	0014  ADQ412 +# now owned by HGST (a Western Digital subsidiary) +1b39  sTec, Inc. +	0001  S1120 PCIe Accelerator SSD +1b3a  Westar Display Technologies +	7589  HRED J2000 - JPEG 2000 Video Codec Device +1b3e  Teradata Corp. +	1fa8  BYNET BIC2SE/X +		1b3e 00a3  BYNET BIC2SX +		1b3e 00c3  BYNET BIC2SE +1b40  Schooner Information Technology, Inc. +# also used by some PROXIM (14b7) devices erroneously +1b47  Numascale AS +	0601  NumaChip N601 +	0602  NumaChip N602 +1b4b  Marvell Technology Group Ltd. +	0640  88SE9128 SATA III 6Gb/s RAID Controller +	9120  88SE9120 SATA 6Gb/s Controller +	9123  88SE9123 PCIe SATA 6.0 Gb/s controller +	9125  88SE9125 PCIe SATA 6.0 Gb/s controller +	9128  88SE9128 PCIe SATA 6 Gb/s RAID controller +	9130  88SE9128 PCIe SATA 6 Gb/s RAID controller with HyperDuo +		1043 8438  P8P67 Deluxe Motherboard +	9172  88SE9172 SATA 6Gb/s Controller +	9178  88SE9170 PCIe SATA 6Gb/s Controller +	917a  88SE9172 SATA III 6Gb/s RAID Controller +	9183  88SS9183 PCIe SSD Controller +	9192  88SE9172 SATA III 6Gb/s RAID Controller +	91a0  88SE912x SATA 6Gb/s Controller [IDE mode] +	91a4  88SE912x IDE Controller +	9220  88SE9220 PCIe 2.0 x2 2-port SATA 6 Gb/s RAID Controller +	9230  88SE9230 PCIe SATA 6Gb/s Controller +	9235  88SE9235 PCIe 2.0 x2 4-port SATA 6 Gb/s Controller +	9445  88SE9445 PCIe 2.0 x4 4-Port SAS/SATA 6 Gbps RAID Controller +	9480  88SE9480 SAS/SATA 6Gb/s RAID controller +	9485  88SE9485 SAS/SATA 6Gb/s controller +1b55  NetUP Inc. +	18f6  Dual DVB Universal CI card +	2a2c  Dual DVB-S2-CI card +	e2e4  Dual DVB-T/C-CI RF card +# 2xHDMI and 2xHD-SDI inputs +	e5f4  MPEG2 and H264 Encoder-Transcoder +	f1c4  Dual ASI-RX/TX-CI card +1b66  Deltacast +	0007  Delta-3G-elp-11 SDI I/O Board +1b6f  Etron Technology, Inc. +	7023  EJ168 USB 3.0 Host Controller +	7052  EJ188/EJ198 USB 3.0 Host Controller +1b73  Fresco Logic +	1000  FL1000G USB 3.0 Host Controller +		1d5c 1000  Anker USB 3.0 Express Card +	1009  FL1009 USB 3.0 Host Controller +1b74  OpenVox Communication Co. Ltd. +	0115  D115P/D115E Single-port E1/T1 card +	d130  D130P/D130E Single-port E1/T1 card (3rd GEN) +	d210  D210P/D210E Dual-port E1/T1 card(2nd generation) +	d230  D230 Dual-port E1/T1 card (2nd generation) +	d410  D410/430 Quad-port E1/T1 card +	d430  D410/430 Quad-port E1/T1 card +1b85  OCZ Technology Group, Inc. +	1041  RevoDrive 3 X2 PCI-Express SSD 240 GB (Marvell Controller) +	8788  RevoDrive Hybrid +1b96  Western Digital +1b9a  XAVi Technologies Corp. +1bad  ReFLEX CES +1bb0  SimpliVity Corporation +	0002  OmniCube Accelerator OA-3000 +	0010  OmniCube Accelerator OA-3000-2 +1bb3  Bluecherry +	4304  BC-04120A MPEG4 4 port video encoder / decoder +	4309  BC-08240A MPEG4 4 port video encoder / decoder +	4310  BC-16480A MPEG4 16 port video encoder / decoder +	4e04  BC-04120A 4 port MPEG4 video encoder / decoder +	4e09  BC-08240A 8 port MPEG4 video encoder / decoder +	4e10  BC-16480A 16 port MPEG4 video encoder / decoder +	5304  BC-H04120A 4 port H.264 video and audio encoder / decoder +	5308  BC-H08240A 8 port H.264 video and audio encoder / decoder +	5310  BC-H16480A 16 port H.264 video and audio encoder / decoder +1bb5  Quantenna Communications, Inc. +1bbf  Maxeler Technologies Ltd. +	0003  MAX3 +	0004  MAX4 +1bee  IXXAT Automation GmbH +	0003  CAN-IB200/PCIe +1bf4  VTI Instruments Corporation +	0001  SentinelEX +1bfd  EeeTOP +1c1c  Symphony +	0001  82C101 +1c28  Lite-On IT Corp. / Plextor +	0122  M6e PCI Express SSD [Marvell 88SS9183] +1c2c  Fiberblaze +	000a  Capture +	000f  SmartNIC +	00a0  FBC4G Capture 4x1Gb +	00a1  FBC4XG Capture 4x10Gb +	00a2  FBC8XG Capture 8x10Gb +	00a3  FBC2XG Capture 2x10Gb +	00a4  FBC4XGG3 Capture 4x10Gb +	00a5  FBC2XLG Capture 2x40Gb +	00a6  FBC1CG Capture 1x100Gb +# Used on V120 VME Crate Controller +1c32  Highland Technology, Inc. +1c33  Daktronics, Inc +1c3b  Accensus, LLC +	0200  Telas2 +# http://www.accensusllc.com/accensustelas2.html +	0300  Telas 2.V +1c44  Enmotus Inc +	8000  8000 Storage IO Controller +1c7e  TTTech Computertechnik AG +	0200  zFAS Debug Port +1c7f  Elektrobit Austria GmbH +	5100  EB5100 +1c8a  TSF5 Corporation +	0001  Hunter PCI Express +1cb1  Collion UG & Co.KG +1cc5  Embedded Intelligence, Inc. +	0100  CAN-PCIe-02 +1cd2  SesKion GmbH +	0301  Simulyzer-RT CompactPCI Serial DIO-1 card +1ce4  Exablaze +	0001  ExaNIC X4 +	0002  ExaNIC X2 +1cf7  Subspace Dynamics +# CEM Solutions Pvt. Ltd. +1d21  Allo +1d44  DPT +	a400  PM2x24/PM3224 +1d5c  Fantasia Trading LLC +1de1  Tekram Technology Co.,Ltd. +	0391  TRM-S1040 +	2020  DC-390 +	690c  690c +	dc29  DC290 +# nee Tumsan Oy +1fc0  Ascom (Finland) Oy +	0300  E2200 Dual E1/Rawpipe Card +	0301  C5400 SHDSL/E1 Card +# nee PathScale, Inc +1fc1  QLogic, Corp. +	000d  IBA6110 InfiniBand HCA +	0010  IBA6120 InfiniBand HCA +1fc9  Tehuti Networks Ltd. +	3009  10-Giga TOE SmartNIC +	3010  10-Giga TOE SmartNIC +		0000 3002  10-Giga TOE Single Port XFP SmartNIC +		0000 3004  10-Giga TOE Single Port SFP+ SmartNIC +		0000 3008  10-Giga TOE Single Port CX4 SmartNIC +	3014  10-Giga TOE SmartNIC 2-Port +		0000 3003  10-Giga TOE Dual Port XFP Low Profile SmartNIC +		0000 3005  10-Giga TOE Dual Port SFP+ Low Profile SmartNIC +		0000 3014  10-Giga TOE Dual Port CX4 Low Profile SmartNIC +	3110  10-Giga TOE Single Port SmartNIC +		0000 3004  10-Giga TOE Single Port SFP+ SmartNIC +	3114  10-Giga TOE Dual Port Low Profile SmartNIC +		0000 3005  10-Giga TOE Dual Port SFP+ Low Profile SmartNIC +		0000 3011  10-Giga TOE Dual Port SFP+/CX4 Low Profile SmartNIC +		0000 3012  10-Giga TOE Dual Port CX4/SFP+ Low Profile SmartNIC +		0000 3014  10-Giga TOE Dual Port CX4 Low Profile SmartNIC +	3310  10-Giga TOE SFP+ Single Port SmartNIC +		0000 3004  10-Giga TOE Single Port SFP+ SmartNIC +	3314  10-Giga TOE Dual Port Low Profile SmartNIC +		0000 3005  10-Giga TOE Dual Port SFP+ Low Profile SmartNIC +		0000 3011  10-Giga TOE Dual Port SFP+/CX4 Low Profile SmartNIC +		0000 3012  10-Giga TOE Dual Port CX4/SFP+ Low Profile SmartNIC +		0000 3014  10-Giga TOE Dual Port CX4 Low Profile SmartNIC +1fce  Cognio Inc. +	0001  Spectrum Analyzer PC Card (SAgE) +1fd4  SUNIX Co., Ltd. +	0001  Matrix multiport serial adapter +	1999  Multiport serial controller +2000  Smart Link Ltd. +	2800  SmartPCI2800 V.92 PCI Soft DFT +2001  Temporal Research Ltd +2003  Smart Link Ltd. +	8800  LM-I56N +2004  Smart Link Ltd. +20f4  TRENDnet +2116  ZyDAS Technology Corp. +21c3  21st Century Computer Corp. +2304  Colorgraphic Communications Corp. +2348  Racore +	2010  8142 100VG/AnyLAN +2646  Kingston Technologies +270b  Xantel Corporation +270f  Chaintech Computer Co. Ltd +2711  AVID Technology Inc. +2955  Connectix Virtual PC +	6e61  OHCI USB 1.1 controller +2a15  3D Vision(???) +3000  Hansol Electronics Inc. +3142  Post Impression Systems. +31ab  Zonet +	1faa  ZEW1602 802.11b/g Wireless Adapter +3388  Hint Corp +	0013  HiNT HC4 PCI to ISDN bridge, Multimedia audio controller +	0014  HiNT HC4 PCI to ISDN bridge, Network controller +	0020  HB6 Universal PCI-PCI bridge (transparent mode) +	0021  HB6 Universal PCI-PCI bridge (non-transparent mode) +		1775 c200  C2K CompactPCI interface bridge +		1775 ce90  CE9 +		4c53 1050  CT7 mainboard +		4c53 1080  CT8 mainboard +		4c53 1090  Cx9 mainboard +		4c53 10a0  CA3/CR3 mainboard +		4c53 3010  PPCI mezzanine (32-bit PMC) +		4c53 3011  PPCI mezzanine (64-bit PMC) +		4c53 4000  PMCCARR1 carrier board +	0022  HiNT HB4 PCI-PCI Bridge (PCI6150) +	0026  HB2 PCI-PCI Bridge +	1018  Audiotrak INCA88 +	1019  Miditrak 2120 +	101a  E.Band [AudioTrak Inca88] +	101b  E.Band [AudioTrak Inca88] +	8011  VXPro II Chipset +		3388 8011  VXPro II Chipset CPU to PCI Bridge +	8012  VXPro II Chipset +		3388 8012  VXPro II Chipset PCI to ISA Bridge +	8013  VXPro II IDE +		3388 8013  VXPro II Chipset EIDE Controller +	a103  Blackmagic Design DeckLink HD Pro +3411  Quantum Designs (H.K.) Inc +3442  Bihl+Wiedemann GmbH +	1783  AS-i 3.0 cPCI Master +	1922  AS-i 3.0 PCI Master +3475  Arastra Inc. +3513  ARCOM Control Systems Ltd +37d9  ITD Firm ltd. +	1138  SCHD-PH-8 Phase detector +3842  eVga.com. Corp. +38ef  4Links +3d3d  3DLabs +	0001  GLINT 300SX +	0002  GLINT 500TX +		0000 0000  GLoria L +	0003  GLINT Delta +		0000 0000  GLoria XL +	0004  Permedia +	0005  Permedia +	0006  GLINT MX +		0000 0000  GLoria XL +		1048 0a42  GLoria XXL +	0007  3D Extreme +	0008  GLINT Gamma G1 +		1048 0a42  GLoria XXL +	0009  Permedia II 2D+3D +		1040 0011  AccelStar II +		1048 0a42  GLoria XXL +		13e9 1000  6221L-4U +		3d3d 0100  AccelStar II 3D Accelerator +		3d3d 0111  Permedia 3:16 +		3d3d 0114  Santa Ana +		3d3d 0116  Oxygen GVX1 +		3d3d 0119  Scirocco +		3d3d 0120  Santa Ana PCL +		3d3d 0125  Oxygen VX1 +		3d3d 0127  Permedia3 Create! +	000a  GLINT R3 +		3d3d 0121  Oxygen VX1 +	000c  GLINT R3 [Oxygen VX1] +		3d3d 0144  Oxygen VX1-4X AGP [Permedia 4] +	000d  GLint R4 rev A +	000e  GLINT Gamma G2 +	0011  GLint R4 rev B +	0012  GLint R5 rev A +	0013  GLint R5 rev B +	0020  VP10 visual processor +	0022  VP10 visual processor +	0024  VP9 visual processor +	002c  Wildcat Realizm 100/200 +	0030  Wildcat Realizm 800 +	0032  Wildcat Realizm 500 +	0100  Permedia II 2D+3D +	07a1  Wildcat III 6210 +	07a2  Sun XVR-500 Graphics Accelerator +	07a3  Wildcat IV 7210 +	1004  Permedia +	3d04  Permedia +	ffff  Glint VGA +4005  Avance Logic Inc. +	0300  ALS300 PCI Audio Device +	0308  ALS300+ PCI Audio Device +	0309  PCI Input Controller +	1064  ALG-2064 +	2064  ALG-2064i +	2128  ALG-2364A GUI Accelerator +	2301  ALG-2301 +	2302  ALG-2302 +	2303  AVG-2302 GUI Accelerator +	2364  ALG-2364A +	2464  ALG-2464 +	2501  ALG-2564A/25128A +	4000  ALS4000 Audio Chipset +		4005 4000  ALS4000 Audio Chipset +	4710  ALC200/200P +4033  Addtron Technology Co, Inc. +	1360  RTL8139 Ethernet +4040  NetXen Incorporated +	0001  NXB-10GXSR 10-Gigabit Ethernet PCIe Adapter with SR-XFP optical interface +		103c 7047  NC510F PCIe 10-Gigabit Server Adapter +	0002  NXB-10GCX4 10-Gigabit Ethernet PCIe Adapter with CX4 copper interface +		103c 7048  NC510c PCIe 10-Gigabit Server Adapter +	0003  NXB-4GCU Quad Gigabit Ethernet PCIe Adapter with 1000-BASE-T interface +	0004  BladeCenter-H 10-Gigabit Ethernet High Speed Daughter Card +	0005  NetXen Dual Port 10GbE Multifunction Adapter for c-Class +		103c 170e  NC512m Dual Port 10GbE Multifunction BL-C Adapter +	0024  XG Mgmt +	0025  XG Mgmt +	0100  NX3031 Multifunction 1/10-Gigabit Server Adapter +		103c 171b  NC522m Dual Port 10GbE Multifunction BL-c Adapter +		103c 1740  NC375T PCI Express Quad Port Gigabit Server Adapter +		103c 3251  NC375i 1G w/NC524SFP 10G Module +		103c 705a  NC375i Integrated Quad Port Multifunction Gigabit Server Adapter +		103c 705b  NC522SFP Dual Port 10GbE Server Adapter +		152d 896b  TG20 Dual Port 10GbE Server/Storage Adapter +		4040 0124  NX3031 Quad Port Gigabit Server Adapter +		4040 0126  Dual Port SFP+ 10GbE Server Adapter +4143  Digital Equipment Corp +4144  Alpha Data +	0044  ADM-XRCIIPro +4150  ONA Electroerosion +	0001  PCI32TLITE FILSTRUP1 PCI to VME Bridge Controller +	0006  PCI32TLITE UART 16550 Opencores +	0007  PCI32TLITE CAN Controller Opencores +415a  Auzentech, Inc. +416c  Aladdin Knowledge Systems +	0100  AladdinCARD +	0200  CPC +4254  DVBSky +4321  Tata Power Strategic Electronics Division +434e  CAST Navigation LLC +4444  Internext Compression Inc +	0016  iTVC16 (CX23416) Video Decoder +		0070 0003  WinTV PVR 250 +		0070 0009  WinTV PVR 150 +		0070 0801  WinTV PVR 150 +		0070 0807  WinTV PVR 150 +		0070 4001  WinTV PVR 250 +		0070 4009  WinTV PVR 250 +		0070 4801  WinTV PVR 250 +		0070 4803  WinTV PVR 250 +		0070 8003  WinTV PVR 150 +		0070 8801  WinTV PVR 150 +		0070 c801  WinTV PVR 150 +		0070 e807  WinTV PVR 500 (1st unit) +		0070 e817  WinTV PVR 500 (2nd unit) +		0070 ff92  WiNTV PVR-550 +		0270 0801  WinTV PVR 150 +		104d 013d  ENX-26 TV Encoder +		10fc d038  GV-MVP/RX2W (1st unit) +		10fc d039  GV-MVP/RX2W (2nd unit) +		12ab fff3  MPG600 +		12ab ffff  MPG600 +		1461 c00a  M113 PCI Analog TV (PAL/SECAM, Philips FQ1216MK3 tuner) +		1461 c00b  M113 PCI Analog TV (PAL/SECAM+FM, Philips FM1216MK3 tuner) +		1461 c00c  M113 PCI Analog TV (NTSC, JAPAN version, Philips FI1286MK2 tuner) +		1461 c010  M113 PCI Analog TV (NTSC, Philips FI1236MK3 tuner) +		1461 c011  M113 PCI Analog TV (NTSC+FM, Philips FM1236MK3 tuner) +		1461 c018  M113 PCI Analog TV (NTSC, Philips FQ1236MK5 tuner) +		1461 c019  UltraTV 1500 MCE, a.k.a. M113 PCI Analog TV (NTSC+FM, Philips FQ1236MK5 tuner) +		1461 c01a  M113 PCI Analog TV (PAL/SECAM, Philips FQ1216MK5 tuner) +		1461 c01b  M113 PCI Analog TV (PAL/SECAM+FM, Philips FM1216MK5 tuner) +		1461 c030  M113 PCI Analog TV (NTSC-J, Partsnic tuner) +		1461 c031  M113 PCI Analog TV (NTSC-J+FM, Partsnic tuner) +		1461 c032  M113 PCI Analog TV (PAL/SECAM, Partsnic tuner) +		1461 c033  M113 PCI Analog TV (PAL/SECAM+FM, Partsnic tuner) +		1461 c034  M113 PCI Analog TV (NTSC, Partsnic tuner) +		1461 c035  M113 PCI Analog TV (NTSC+FM, Partsnic tuner) +		1461 c03f  C115 PCI video capture card (no tuner) +		1461 c136  M104 mini-PCI Analog TV +		1461 c20a  M755 AVerTV Video Capture (PAL/SECAM, Philips FQ1216MK3 tuner) +		1461 c218  M755 AVerTV Video Capture (NTSC, Philips FQ1236MK5 tuner) +		1461 c219  M755 AVerTV Video Capture (NTSC+FM, Philips FQ1236MK5 tuner) +		1461 c21a  M755 AVerTV Video Capture (PAL/SECAM, Philips FQ1216MK5 tuner) +		1461 c21b  M755 AVerTV Video Capture (PAL/SECAM+FM, Philips FM1216MK5 tuner) +		1461 c230  M755 AVerTV Video Capture (NTSC-J, Partsnic tuner) +		1461 c231  M755 AVerTV Video Capture (NTSC-J+FM, Partsnic tuner) +		1461 c232  M755 AVerTV Video Capture (PAL/SECAM, Partsnic tuner) +		1461 c233  M755 AVerTV Video Capture (PAL/SECAM+FM, Partsnic tuner) +		1461 c234  M755 AVerTV Video Capture (NTSC, Partsnic tuner) +		1461 c235  M755 AVerTV Video Capture (NTSC+FM, Partsnic tuner) +		1461 c337  E106 AVerMedia AVerTV Video Capture +		1461 c439  M116 AVerMedia AVerTV MCE 116 Plus (NTSC/PAL/SECAM+FM+REMOTE, Xceive 2028 tuner) +		1461 c5ff  C755 AVerTV Video Capture card (no tuner) +		1461 c6ff  C115 PCI video capture card (no tuner) +		1461 c739  M785 AVerMedia PCI Analog TV (NTSC/PAL/SECAM+FM, Xceive 2028 tuner) +		9005 0092  VideOh! AVC-2010 +		9005 0093  VideOh! AVC-2410 +	0803  iTVC15 (CX23415) Video Decoder +		0070 4000  WinTV PVR-350 +		0070 4001  WinTV PVR-250 +		0070 4800  WinTV PVR-350 (V1) +		12ab 0000  MPG160 +		1461 a3ce  M179 +		1461 a3cf  M179 +4468  Bridgeport machines +4594  Cogetec Informatique Inc +45fb  Baldor Electric Company +4624  Budker Institute of Nuclear Physics +	adc1  ADC200ME High speed ADC +	de01  DL200ME High resolution delay line PCI based card +	de02  DL200ME Middle resolution delay line PCI based card +4680  Umax Computer Corp +4843  Hercules Computer Technology Inc +4916  RedCreek Communications Inc +	1960  RedCreek PCI adapter +4943  Growth Networks +494f  ACCES I/O Products, Inc. +	0520  PCI-IDO-48 +	0920  PCI-IDI-48 +	0c50  PCI-DIO-24H +	0c51  PCI-DIO-24D +	0c60  PCI-DIO-48(H) +	0c68  PCI-DIO-72 +	0c70  PCI-DIO-96 +	0c78  PCI-DIO-120 +	0dc8  PCI-IDIO-16 +	0e50  PCI-DIO-24S +	0e51  PCI-DIO-24H(C) +	0e52  PCI-DIO-24D(C) +	0e60  PCI-DIO-48S(H) +	0e61  P104-DIO-24S +	0f00  PCI-IIRO-8 +	0f01  LPCI-IIRO-8 +	0f08  PCI-IIRO-16 +	1050  PCI-422/485-2 +	1058  PCI-COM422/4 +	1059  PCI-COM485/4 +	1068  PCI-COM422/8 +	1069  PCI-COM485/8 +	1088  PCI-COM232/1 +	1090  PCI-COM232/2 +	10a8  P104-COM232-8 +	10c9  PCI-COM-1S +	10d0  PCI-COM2S +	10e8  PCI-COM-8SM +	1148  PCI-ICM-1S +	1150  PCI-ICM-2S +	1158  PCI-ICM422/4 +	1159  PCI-ICM485/4 +	1250  PCI-WDG-2S +	12d0  PCI-WDG-IMPAC +	22c0  PCI-WDG-CSM +	2c50  PCI-DIO-96CT +	2c58  PCI-DIO-96C3 +	5ed0  PCI-DAC +	6c90  PCI-DA12-2 +	6c98  PCI-DA12-4 +	6ca0  PCI-DA12-6 +	6ca8  PCI-DA12-8 +	6ca9  PCI-DA12-8V +	6cb0  PCI-DA12-16 +	6cb1  PCI-DA12-16V +	8ef0  P104-FAS16-16 +	aca8  PCI-AI12-16 +	aca9  PCI-AI12-16A +	eca8  PCI-AIO12-16 +	eca9  PCI-A12-16 +	ecaa  PCI-A12-16A +	ece8  PCI-A16-16 +4978  Axil Computer Inc +4a14  NetVin +	5000  NV5000SC +		4a14 5000  RT8029-Based Ethernet Adapter +4b10  Buslogic Inc. +4c48  LUNG HWA Electronics +4c53  SBS Technologies +	0000  PLUSTEST device +		4c53 3000  PLUSTEST card (PC104+) +		4c53 3001  PLUSTEST card (PMC) +	0001  PLUSTEST-MM device +		4c53 3002  PLUSTEST-MM card (PMC) +4ca1  Seanix Technology Inc +4d51  MediaQ Inc. +	0200  MQ-200 +4d54  Microtechnica Co Ltd +4d56  MATRIX VISION GmbH +	0000  [mvHYPERION-CLe/CLb] CameraLink PCI Express x1 Frame Grabber +	0001  [mvHYPERION-CLf/CLm] CameraLink PCI Express x4 Frame Grabber +	0010  [mvHYPERION-16R16/-32R16] 16 Video Channel PCI Express x4 Frame Grabber +	0020  [mvHYPERION-HD-SDI] HD-SDI PCI Express x4 Frame Grabber +	0030  [mvHYPERION-HD-SDI-Merger] HD-SDI PCI Express x4 Frame Grabber +4ddc  ILC Data Device Corp +	0100  DD-42924I5-300 (ARINC 429 Data Bus) +	0801  BU-65570I1 MIL-STD-1553 Test and Simulation +	0802  BU-65570I2 MIL-STD-1553 Test and Simulation +	0811  BU-65572I1 MIL-STD-1553 Test and Simulation +	0812  BU-65572I2 MIL-STD-1553 Test and Simulation +	0881  BU-65570T1 MIL-STD-1553 Test and Simulation +	0882  BU-65570T2 MIL-STD-1553 Test and Simulation +	0891  BU-65572T1 MIL-STD-1553 Test and Simulation +	0892  BU-65572T2 MIL-STD-1553 Test and Simulation +	0901  BU-65565C1 MIL-STD-1553 Data Bus +	0902  BU-65565C2 MIL-STD-1553 Data Bus +	0903  BU-65565C3 MIL-STD-1553 Data Bus +	0904  BU-65565C4 MIL-STD-1553 Data Bus +	0b01  BU-65569I1 MIL-STD-1553 Data Bus +	0b02  BU-65569I2 MIL-STD-1553 Data Bus +	0b03  BU-65569I3 MIL-STD-1553 Data Bus +	0b04  BU-65569I4 MIL-STD-1553 Data Bus +5045  University of Toronto +	4243  BLASTbus PCI Interface Card v1 +5046  GemTek Technology Corporation +	1001  PCI Radio +5053  Voyetra Technologies +	2010  Daytona Audio Adapter +50b2  TerraTec Electronic GmbH +5136  S S Technologies +5143  Qualcomm Inc +5145  Ensoniq (Old) +	3031  Concert AudioPCI +5168  Animation Technologies Inc. +	0300  FlyDVB-S +	0301  FlyDVB-T +5301  Alliance Semiconductor Corp. +	0001  ProMotion aT3D +5333  S3 Graphics Ltd. +	0551  Plato/PX (system) +	5631  86c325 [ViRGE] +	8800  86c866 [Vision 866] +	8801  86c964 [Vision 964] +	8810  86c764_0 [Trio 32 vers 0] +	8811  86c764/765 [Trio32/64/64V+] +	8812  86cM65 [Aurora64V+] +	8813  86c764_3 [Trio 32/64 vers 3] +	8814  86c767 [Trio 64UV+] +	8815  86cM65 [Aurora 128] +	883d  86c988 [ViRGE/VX] +	8870  FireGL +	8880  86c868 [Vision 868 VRAM] vers 0 +	8881  86c868 [Vision 868 VRAM] vers 1 +	8882  86c868 [Vision 868 VRAM] vers 2 +	8883  86c868 [Vision 868 VRAM] vers 3 +	88b0  86c928 [Vision 928 VRAM] vers 0 +	88b1  86c928 [Vision 928 VRAM] vers 1 +	88b2  86c928 [Vision 928 VRAM] vers 2 +	88b3  86c928 [Vision 928 VRAM] vers 3 +	88c0  86c864 [Vision 864 DRAM] vers 0 +	88c1  86c864 [Vision 864 DRAM] vers 1 +	88c2  86c864 [Vision 864-P DRAM] vers 2 +	88c3  86c864 [Vision 864-P DRAM] vers 3 +	88d0  86c964 [Vision 964 VRAM] vers 0 +	88d1  86c964 [Vision 964 VRAM] vers 1 +	88d2  86c964 [Vision 964-P VRAM] vers 2 +	88d3  86c964 [Vision 964-P VRAM] vers 3 +	88f0  86c968 [Vision 968 VRAM] rev 0 +	88f1  86c968 [Vision 968 VRAM] rev 1 +	88f2  86c968 [Vision 968 VRAM] rev 2 +	88f3  86c968 [Vision 968 VRAM] rev 3 +	8900  86c755 [Trio 64V2/DX] +		5333 8900  86C775 Trio64V2/DX +	8901  86c775/86c785 [Trio 64V2/DX or /GX] +		5333 8901  86C775 Trio64V2/DX, 86C785 Trio64V2/GX +	8902  Plato/PX +	8903  Trio 3D business multimedia +	8904  86c365, 86c366 [Trio 3D] +		1014 00db  Integrated Trio3D +		4843 314a  Terminator 128/3D GLH +		5333 8904  86C365 Trio3D AGP +	8905  Trio 64V+ family +	8906  Trio 64V+ family +	8907  Trio 64V+ family +	8908  Trio 64V+ family +	8909  Trio 64V+ family +	890a  Trio 64V+ family +	890b  Trio 64V+ family +	890c  Trio 64V+ family +	890d  Trio 64V+ family +	890e  Trio 64V+ family +	890f  Trio 64V+ family +	8a01  86c375 [ViRGE/DX] or 86c385 [ViRGE/GX] +		0e11 b032  ViRGE/GX +		10b4 1617  Nitro 3D +		10b4 1717  Nitro 3D +		5333 8a01  ViRGE/DX +	8a10  ViRGE/GX2 +		1092 8a10  Stealth 3D 4000 +	8a13  86c360 [Trio 3D/1X], 86c362, 86c368 [Trio 3D/2X] +		5333 8a13  Trio3D/2X +	8a20  86c794 [Savage 3D] +		5333 8a20  86C391 Savage3D +	8a21  86c390 [Savage 3D/MV] +		5333 8a21  86C390 Savage3D/MV +	8a22  Savage 4 +		1033 8068  Savage 4 +		1033 8069  Savage 4 +		1033 8110  Savage 4 LT +		105d 0018  SR9 8Mb SDRAM +		105d 002a  SR9 Pro 16Mb SDRAM +		105d 003a  SR9 Pro 32Mb SDRAM +		105d 092f  SR9 Pro+ 16Mb SGRAM +		1092 4207  Stealth III S540 +		1092 4800  Stealth III S540 +		1092 4807  SpeedStar A90 +		1092 4808  Stealth III S540 +		1092 4809  Stealth III S540 +		1092 480e  Stealth III S540 +		1092 4904  Stealth III S520 +		1092 4905  SpeedStar A200 +		1092 4a09  Stealth III S540 +		1092 4a0b  Stealth III S540 Xtreme +		1092 4a0f  Stealth III S540 +		1092 4e01  Stealth III S540 +		1102 101d  3d Blaster Savage 4 +		1102 101e  3d Blaster Savage 4 +		5333 8100  86C394-397 Savage4 SDRAM 100 +		5333 8110  86C394-397 Savage4 SDRAM 110 +		5333 8125  86C394-397 Savage4 SDRAM 125 +		5333 8143  86C394-397 Savage4 SDRAM 143 +		5333 8a22  86C394-397 Savage4 +		5333 8a2e  86C394-397 Savage4 32bit +		5333 9125  86C394-397 Savage4 SGRAM 125 +		5333 9143  86C394-397 Savage4 SGRAM 143 +	8a23  Savage 4 +	8a25  ProSavage PM133 +		0303 0303  D9840-60001 [Brio BA410 Motherboard] +	8a26  ProSavage KM133 +	8c00  ViRGE/M3 +	8c01  ViRGE/MX +		1179 0001  ViRGE/MX +	8c02  ViRGE/MX+ +	8c03  ViRGE/MX+MV +	8c10  86C270-294 [SavageMX-MV] +	8c11  82C270-294 [SavageMX] +	8c12  86C270-294 [SavageIX-MV] +		1014 017f  ThinkPad T20/T22 +		1179 0001  86C584 SuperSavage/IXC Toshiba +	8c13  86C270-294 [SavageIX] +		1179 0001  Magnia Z310 +	8c22  SuperSavage MX/128 +	8c24  SuperSavage MX/64 +	8c26  SuperSavage MX/64C +	8c2a  SuperSavage IX/128 SDR +	8c2b  SuperSavage IX/128 DDR +	8c2c  SuperSavage IX/64 SDR +	8c2d  SuperSavage IX/64 DDR +	8c2e  SuperSavage IX/C SDR +		1014 01fc  ThinkPad T23 +	8c2f  SuperSavage IX/C DDR +	8d01  86C380 [ProSavageDDR K4M266] +	8d02  VT8636A [ProSavage KN133] AGP4X VGA Controller (TwisterK) +	8d03  VT8751 [ProSavageDDR P4M266] +	8d04  VT8375 [ProSavage8 KM266/KL266] +	8e00  DeltaChrome +	8e26  ProSavage +	8e40  2300E Graphics Processor +	8e48  Matrix [Chrome S25 / S27] +		5333 0130  Chrome S27 256M DDR2 +	9043  Chrome 430 GT +	9045  Chrome 430 ULP / 435 ULP / 440 GTX +	9060  Chrome 530 GT +	9102  86C410 [Savage 2000] +		1092 5932  Viper II Z200 +		1092 5934  Viper II Z200 +		1092 5952  Viper II Z200 +		1092 5954  Viper II Z200 +		1092 5a35  Viper II Z200 +		1092 5a37  Viper II Z200 +		1092 5a55  Viper II Z200 +		1092 5a57  Viper II Z200 +	ca00  SonicVibes +5431  AuzenTech, Inc. +544c  Teralogic Inc +	0350  TL880-based HDTV/ATSC tuner +5452  SCANLAB AG +	3443  RTC4 +5455  Technische University Berlin +	4458  S5933 +5456  GoTView +5519  Cnet Technologies, Inc. +5544  Dunord Technologies +	0001  I-30xx Scanner Interface +5555  Genroco, Inc +	0003  TURBOstor HFP-832 [HiPPI NIC] +5646  Vector Fabrics BV +5654  VoiceTronix Pty Ltd +5700  Netpower +584d  AuzenTech Co., Ltd. +5851  Exacq Technologies +	8008  tDVR8008 8-port video capture card +	8016  tDVR8016 16-chan video capture card +	8032  tDVR8032 32-chan video capture card +5853  XenSource, Inc. +	0001  Xen Platform Device +# Virtual device surfaced in guests to provide HID events. +	c110  Virtualized HID +# Device surfaced in guests to provide 2d graphics capabilities +	c147  Virtualized Graphics Device +5854  GoTView +5ace  Beholder International Ltd. +631c  SmartInfra Ltd +	1652  PXI-1652 Signal Generator +	2504  PXI-2504 Signal Interrogator +6356  UltraStor +6374  c't Magazin fuer Computertechnik +	6773  GPPCI +6409  Logitec Corp. +6549  Teradici Corp. +	1200  TERA1200 PC-over-IP Host +6666  Decision Computer International Co. +	0001  PCCOM4 +	0002  PCCOM8 +	0004  PCCOM2 +	0101  PCI 8255/8254 I/O Card +	0200  12-bit AD/DA Card +	0201  14-bit AD/DA Card +	1011  Industrial Card +	1021  8 photo couple 8 relay Card +	1022  4 photo couple 4 relay Card +	1025  16 photo couple 16 relay Card +	4000  WatchDog Card +6688  Zycoo Co., Ltd +	1200  CooVox TDM Analog Module +	1400  CooVOX TDM GSM Module +	1600  CooVOX TDM E1/T1 Module +	1800  CooVOX TDM BRI Module +# nee Qumranet +6900  Red Hat, Inc. +7063  pcHDTV +	2000  HD-2000 +	3000  HD-3000 +	5500  HD5500 HDTV +7284  HT OMEGA Inc. +7401  EndRun Technologies +	e100  PTP3100 PCIe PTP Slave Clock +7604  O.N. Electronic Co Ltd. +7bde  MIDAC Corporation +7fed  PowerTV +8008  Quancom Electronic GmbH +	0010  WDOG1 [PCI-Watchdog 1] +	0011  PWDOG2 [PCI-Watchdog 2] +	0015  Clock77/PCI & Clock77/PCIe (DCF-77 receiver) +# Wrong ID used in subsystem ID of AsusTek PCI-USB2 PCI card. +807d  Asustek Computer, Inc. +8086  Intel Corporation +	0007  82379AB +	0008  Extended Express System Support Controller +	0039  21145 Fast Ethernet +	0040  Core Processor DRAM Controller +	0041  Core Processor PCI Express x16 Root Port +	0042  Core Processor Integrated Graphics Controller +	0043  Core Processor Secondary PCI Express Root Port +	0044  Core Processor DRAM Controller +		1025 0347  Aspire 7740G +		1025 0487  TravelMate 5742 +		144d c06a  R730 Laptop +		17c0 10d2  Medion Akoya E7214 Notebook PC [MD98410] +		e4bf 50c1  PC1-GROOVE +	0045  Core Processor PCI Express x16 Root Port +		17c0 10d2  Medion Akoya E7214 Notebook PC [MD98410] +	0046  Core Processor Integrated Graphics Controller +		144d c06a  R730 Laptop +		17c0 10d9  Medion Akoya E7214 Notebook PC [MD98410] +		e4bf 50c1  PC1-GROOVE +	0047  Core Processor Secondary PCI Express Root Port +	0048  Core Processor DRAM Controller +	0049  Core Processor PCI Express x16 Root Port +	004a  Core Processor Integrated Graphics Controller +	004b  Core Processor Secondary PCI Express Root Port +	0050  Core Processor Thermal Management Controller +	0069  Core Processor DRAM Controller +	0082  Centrino Advanced-N 6205 [Taylor Peak] +		8086 1301  Centrino Advanced-N 6205 AGN +		8086 1306  Centrino Advanced-N 6205 ABG +		8086 1307  Centrino Advanced-N 6205 BG +		8086 1321  Centrino Advanced-N 6205 AGN +		8086 1326  Centrino Advanced-N 6205 ABG +	0083  Centrino Wireless-N 1000 [Condor Peak] +		8086 1205  Centrino Wireless-N 1000 BGN +		8086 1206  Centrino Wireless-N 1000 BG +		8086 1225  Centrino Wireless-N 1000 BGN +		8086 1226  Centrino Wireless-N 1000 BG +		8086 1305  Centrino Wireless-N 1000 BGN +		8086 1306  Centrino Wireless-N 1000 BG +		8086 1325  Centrino Wireless-N 1000 BGN +		8086 1326  Centrino Wireless-N 1000 BG +	0084  Centrino Wireless-N 1000 [Condor Peak] +		8086 1215  Centrino Wireless-N 1000 BGN +		8086 1216  Centrino Wireless-N 1000 BG +		8086 1315  Centrino Wireless-N 1000 BGN +		8086 1316  Centrino Wireless-N 1000 BG +	0085  Centrino Advanced-N 6205 [Taylor Peak] +		8086 1311  Centrino Advanced-N 6205 AGN +		8086 1316  Centrino Advanced-N 6205 ABG +	0087  Centrino Advanced-N + WiMAX 6250 [Kilmer Peak] +		8086 1301  Centrino Advanced-N + WiMAX 6250 2x2 AGN +		8086 1306  Centrino Advanced-N + WiMAX 6250 2x2 ABG +		8086 1321  Centrino Advanced-N + WiMAX 6250 2x2 AGN +		8086 1326  Centrino Advanced-N + WiMAX 6250 2x2 ABG +	0089  Centrino Advanced-N + WiMAX 6250 [Kilmer Peak] +		8086 1311  Centrino Advanced-N + WiMAX 6250 2x2 AGN +		8086 1316  Centrino Advanced-N + WiMAX 6250 2x2 ABG +	008a  Centrino Wireless-N 1030 [Rainbow Peak] +		8086 5305  Centrino Wireless-N 1030 BGN +		8086 5307  Centrino Wireless-N 1030 BG +		8086 5325  Centrino Wireless-N 1030 BGN +		8086 5327  Centrino Wireless-N 1030 BG +	008b  Centrino Wireless-N 1030 [Rainbow Peak] +		8086 5315  Centrino Wireless-N 1030 BGN +		8086 5317  Centrino Wireless-N 1030 BG +	0090  Centrino Advanced-N 6230 [Rainbow Peak] +		8086 5211  Centrino Advanced-N 6230 AGN +		8086 5215  Centrino Advanced-N 6230 BGN +		8086 5216  Centrino Advanced-N 6230 ABG +	0091  Centrino Advanced-N 6230 [Rainbow Peak] +		8086 5201  Centrino Advanced-N 6230 AGN +		8086 5205  Centrino Advanced-N 6230 BGN +		8086 5206  Centrino Advanced-N 6230 ABG +		8086 5207  Centrino Advanced-N 6230 BG +		8086 5221  Centrino Advanced-N 6230 AGN +		8086 5225  Centrino Advanced-N 6230 BGN +		8086 5226  Centrino Advanced-N 6230 ABG +	0100  2nd Generation Core Processor Family DRAM Controller +		1028 04aa  XPS 8300 +		1043 844d  P8P67/P8H67 Series Motherboard +	0101  Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port +		1028 04b2  Vostro 3350 +		106b 00dc  MacBookPro8,2 [Core i7, 15", 2011] +	0102  2nd Generation Core Processor Family Integrated Graphics Controller +		1028 04aa  XPS 8300 +		1043 0102  P8H67 Series Motherboard +	0104  2nd Generation Core Processor Family DRAM Controller +		1028 04a3  Precision M4600 +		1028 04b2  Vostro 3350 +		1028 04da  Vostro 3750 +		106b 00dc  MacBookPro8,2 [Core i7, 15", 2011] +	0105  Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port +		106b 00dc  MacBookPro8,2 [Core i7, 15", 2011] +	0106  2nd Generation Core Processor Family Integrated Graphics Controller +	0108  Xeon E3-1200 Processor Family DRAM Controller +	0109  Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port +	010a  Xeon E3-1200 Processor Family Integrated Graphics Controller +	010b  Xeon E3-1200/2nd Generation Core Processor Family Integrated Graphics Controller +	010c  Xeon E3-1200/2nd Generation Core Processor Family DRAM Controller +	010d  Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port +	010e  Xeon E3-1200/2nd Generation Core Processor Family Integrated Graphics Controller +	0112  2nd Generation Core Processor Family Integrated Graphics Controller +	0116  2nd Generation Core Processor Family Integrated Graphics Controller +		1028 04da  Vostro 3750 +	0122  2nd Generation Core Processor Family Integrated Graphics Controller +	0126  2nd Generation Core Processor Family Integrated Graphics Controller +		1028 04cc  Vostro 3350 +	0150  Xeon E3-1200 v2/3rd Gen Core processor DRAM Controller +		1043 84ca  P8 series motherboard +		15d9 0624  X9SCM-F Motherboard +		1849 0150  Motherboard +	0151  Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port +		1043 1477  N56VZ +		1043 844d  P8 series motherboard +		1043 84ca  P8H77-I Motherboard +		8086 2010  Server Board S1200BTS +	0152  Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller +		1043 84ca  P8H77-I Motherboard +	0153  3rd Gen Core Processor Thermal Subsystem +		1043 1517  Zenbook Prime UX31A +	0154  3rd Gen Core processor DRAM Controller +		1025 0813  Aspire R7-571 +		103c 17f6  ProBook 4540s +		1043 1477  N56VZ +		1043 1517  Zenbook Prime UX31A +	0155  Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port +		8086 2010  Server Board S1200BTS +	0156  3rd Gen Core processor Graphics Controller +	0158  Xeon E3-1200 v2/Ivy Bridge DRAM Controller +		1043 844d  P8 series motherboard +		8086 2010  Server Board S1200BTS +	0159  Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port +	015a  Xeon E3-1200 v2/Ivy Bridge Graphics Controller +	015c  Xeon E3-1200 v2/3rd Gen Core processor DRAM Controller +	015d  Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port +		1043 844d  P8 series motherboard +	015e  Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller +	0162  Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller +		1043 84ca  P8 series motherboard +		1849 0162  Motherboard +	0166  3rd Gen Core processor Graphics Controller +		1043 1517  Zenbook Prime UX31A +		1043 2103  N56VZ +	016a  Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller +		1043 844d  P8B WS Motherboard +	0172  Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller +	0176  3rd Gen Core processor Graphics Controller +	0309  80303 I/O Processor PCI-to-PCI Bridge +	030d  80312 I/O Companion Chip PCI-to-PCI Bridge +	0326  6700/6702PXH I/OxAPIC Interrupt Controller A +		103c 3208  ProLiant DL140 G2 +		1775 1100  CR11/VR11 Single Board Computer +	0327  6700PXH I/OxAPIC Interrupt Controller B +		103c 3208  ProLiant DL140 G2 +		1775 1100  CR11/VR11 Single Board Computer +	0329  6700PXH PCI Express-to-PCI Bridge A +	032a  6700PXH PCI Express-to-PCI Bridge B +	032c  6702PXH PCI Express-to-PCI Bridge A +	0330  80332 [Dobson] I/O processor (A-Segment Bridge) +	0331  80332 [Dobson] I/O processor (A-Segment IOAPIC) +	0332  80332 [Dobson] I/O processor (B-Segment Bridge) +	0333  80332 [Dobson] I/O processor (B-Segment IOAPIC) +	0334  80332 [Dobson] I/O processor (ATU) +	0335  80331 [Lindsay] I/O processor (PCI-X Bridge) +	0336  80331 [Lindsay] I/O processor (ATU) +	0340  41210 [Lanai] Serial to Parallel PCI Bridge (A-Segment Bridge) +	0341  41210 [Lanai] Serial to Parallel PCI Bridge (B-Segment Bridge) +	0370  80333 Segment-A PCI Express-to-PCI Express Bridge +	0371  80333 A-Bus IOAPIC +	0372  80333 Segment-B PCI Express-to-PCI Express Bridge +	0373  80333 B-Bus IOAPIC +	0374  80333 Address Translation Unit +	0402  Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller +	0406  4th Gen Core Processor Integrated Graphics Controller +	040a  Xeon E3-1200 v3 Processor Integrated Graphics Controller +	0412  Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller +	0416  4th Gen Core Processor Integrated Graphics Controller +		17aa 220e  ThinkPad T440p +	041a  Xeon E3-1200 v3 Processor Integrated Graphics Controller +	041e  4th Generation Core Processor Family Integrated Graphics Controller +	0433  Coleto Creek ACC - ME/CPM interface +	0435  Coleto Creek PCIe Endpoint +	0436  DH8900CC Null Device +	0438  DH8900CC Series Gigabit Network Connection +	043a  DH8900CC Series Gigabit Fiber Network Connection +	043c  DH8900CC Series Gigabit Backplane Network Connection +	0440  DH8900CC Series Gigabit SFP Network Connection +	0482  82375EB/SB PCI to EISA Bridge +	0483  82424TX/ZX [Saturn] CPU to PCI bridge +	0484  82378ZB/IB, 82379AB (SIO, SIO.A) PCI to ISA Bridge +	0486  82425EX/ZX [Aries] PCIset with ISA bridge +	04a3  82434LX/NX [Mercury/Neptune] Processor to PCI bridge +	04d0  82437FX [Triton FX] +	0500  E8870 Processor bus control +	0501  E8870 Memory controller +# and registers common to both SPs +	0502  E8870 Scalability Port 0 +# and global performance monitoring +	0503  E8870 Scalability Port 1 +	0510  E8870IO Hub Interface Port 0 registers (8-bit compatibility port) +	0511  E8870IO Hub Interface Port 1 registers +	0512  E8870IO Hub Interface Port 2 registers +	0513  E8870IO Hub Interface Port 3 registers +	0514  E8870IO Hub Interface Port 4 registers +	0515  E8870IO General SIOH registers +	0516  E8870IO RAS registers +	0530  E8870SP Scalability Port 0 registers +	0531  E8870SP Scalability Port 1 registers +	0532  E8870SP Scalability Port 2 registers +	0533  E8870SP Scalability Port 3 registers +	0534  E8870SP Scalability Port 4 registers +	0535  E8870SP Scalability Port 5 registers +# (bi-interleave 0) and global registers that are neither per-port nor per-interleave +	0536  E8870SP Interleave registers 0 and 1 +# (bi-interleave 1) +	0537  E8870SP Interleave registers 2 and 3 +	0600  RAID Controller +		8086 0136  SRCU31L +		8086 01af  SRCZCR +		8086 01c1  ICP Vortex GDT8546RZ +		8086 01f7  SCRU32 +# uninitialized SRCU32 RAID Controller +	061f  80303 I/O Processor +	0700  CE Media Processor A/V Bridge +	0701  CE Media Processor NAND Flash Controller +	0703  CE Media Processor Media Control Unit 1 +	0704  CE Media Processor Video Capture Interface +	0707  CE Media Processor SPI Slave +	0708  CE Media Processor 4100 +	0800  Moorestown SPI Ctrl 0 +	0801  Moorestown SPI Ctrl 1 +	0802  Moorestown I2C 0 +	0803  Moorestown I2C 1 +	0804  Moorestown I2C 2 +	0805  Moorestown Keyboard Ctrl +	0806  Moorestown USB Ctrl +	0807  Moorestown SD Host Ctrl 0 +	0808  Moorestown SD Host Ctrl 1 +	0809  Moorestown NAND Ctrl +	080a  Moorestown Audio Ctrl +	080b  Moorestown ISP +	080c  Moorestown Security Controller +	080d  Moorestown External Displays +	080e  Moorestown SCU IPC +	080f  Moorestown GPIO Controller +	0810  Moorestown Power Management Unit +	0811  Moorestown OTG Ctrl +	0812  Moorestown SPI Ctrl 2 +	0813  Moorestown SC DMA +	0814  Moorestown LPE DMA +	0815  Moorestown SSP0 +	0885  Centrino Wireless-N + WiMAX 6150 +		8086 1305  Centrino Wireless-N + WiMAX 6150 BGN +		8086 1307  Centrino Wireless-N + WiMAX 6150 BG +		8086 1325  Centrino Wireless-N + WiMAX 6150 BGN +		8086 1327  Centrino Wireless-N + WiMAX 6150 BG +	0886  Centrino Wireless-N + WiMAX 6150 +		8086 1315  Centrino Wireless-N + WiMAX 6150 BGN +		8086 1317  Centrino Wireless-N + WiMAX 6150 BG +	0887  Centrino Wireless-N 2230 +		8086 4062  Centrino Wireless-N 2230 BGN +		8086 4462  Centrino Wireless-N 2230 BGN +	0888  Centrino Wireless-N 2230 +		8086 4262  Centrino Wireless-N 2230 BGN +	088e  Centrino Advanced-N 6235 +		8086 4060  Centrino Advanced-N 6235 AGN +		8086 4460  Centrino Advanced-N 6235 AGN +	088f  Centrino Advanced-N 6235 +		8086 4260  Centrino Advanced-N 6235 AGN +	0890  Centrino Wireless-N 2200 +		8086 4022  Centrino Wireless-N 2200 BGN +		8086 4422  Centrino Wireless-N 2200 BGN +		8086 4822  Centrino Wireless-N 2200 BGN +	0891  Centrino Wireless-N 2200 +		8086 4222  Centrino Wireless-N 2200 BGN +	0892  Centrino Wireless-N 135 +		8086 0062  Centrino Wireless-N 135 BGN +		8086 0462  Centrino Wireless-N 135 BGN +	0893  Centrino Wireless-N 135 +		8086 0262  Centrino Wireless-N 135 BGN +	0894  Centrino Wireless-N 105 +		8086 0022  Centrino Wireless-N 105 BGN +		8086 0422  Centrino Wireless-N 105 BGN +		8086 0822  Centrino Wireless-N 105 BGN +	0895  Centrino Wireless-N 105 +		8086 0222  Centrino Wireless-N 105 BGN +	0896  Centrino Wireless-N 130 +		8086 5005  Centrino Wireless-N 130 BGN +		8086 5007  Centrino Wireless-N 130 BG +		8086 5025  Centrino Wireless-N 130 BGN +		8086 5027  Centrino Wireless-N 130 BG +	0897  Centrino Wireless-N 130 +		8086 5015  Centrino Wireless-N 130 BGN +		8086 5017  Centrino Wireless-N 130 BG +	08ae  Centrino Wireless-N 100 +		8086 1005  Centrino Wireless-N 100 BGN +		8086 1007  Centrino Wireless-N 100 BG +		8086 1025  Centrino Wireless-N 100 BGN +		8086 1027  Centrino Wireless-N 100 BG +	08af  Centrino Wireless-N 100 +		8086 1015  Centrino Wireless-N 100 BGN +		8086 1017  Centrino Wireless-N 100 BG +	08b1  Wireless 7260 +# Wilkins Peak 2 +		8086 4020  Dual Band Wireless-N 7260 +# Wilkins Peak 2 +		8086 402a  Dual Band Wireless-N 7260 +# Wilkins Peak 2 +		8086 4060  Dual Band Wireless-N 7260 +# Wilkins Peak 2 +		8086 4062  Wireless-N 7260 +# Wilkins Peak 2 +		8086 406a  Dual Band Wireless-N 7260 +# Wilkins Peak 2 +		8086 4070  Dual Band Wireless-AC 7260 +# Wilkins Peak 2 +		8086 4072  Dual Band Wireless-AC 7260 +# Wilkins Peak 2 +		8086 4160  Dual Band Wireless-N 7260 +# Wilkins Peak 2 +		8086 4162  Wireless-N 7260 +# Wilkins Peak 2 +		8086 4170  Dual Band Wireless-AC 7260 +# Wilkins Peak 2 +		8086 4420  Dual Band Wireless-N 7260 +# Wilkins Peak 2 +		8086 4460  Dual Band Wireless-N 7260 +# Wilkins Peak 2 +		8086 4462  Wireless-N 7260 +# Wilkins Peak 2 +		8086 446a  Dual Band Wireless-N 7260 +# Wilkins Peak 2 +		8086 4470  Dual Band Wireless-AC 7260 +# Wilkins Peak 2 +		8086 4472  Dual Band Wireless-AC 7260 +# Wilkins Peak 2 +		8086 4560  Dual Band Wireless-N 7260 +# Wilkins Peak 2 +		8086 4570  Dual Band Wireless-AC 7260 +# Wilkins Peak 2 +		8086 486e  Dual Band Wireless-AC 7260 +# Wilkins Peak 2 +		8086 4870  Dual Band Wireless-AC 7260 +# Wilkins Peak 2 +		8086 4a6c  Dual Band Wireless-AC 7260 +# Wilkins Peak 2 +		8086 4a6e  Dual Band Wireless-AC 7260 +# Wilkins Peak 2 +		8086 4a70  Dual Band Wireless-AC 7260 +# Wilkins Peak 2 +		8086 4c60  Dual Band Wireless-AC 7260 +# Wilkins Peak 2 +		8086 4c70  Dual Band Wireless-AC 7260 +# Wilkins Peak 2 +		8086 5070  Dual Band Wireless-AC 7260 +# Wilkins Peak 2 +		8086 5072  Dual Band Wireless-AC 7260 +# Wilkins Peak 2 +		8086 5170  Dual Band Wireless-AC 7260 +# Wilkins Peak 2 +		8086 5770  Dual Band Wireless-AC 7260 +# Wilkins Peak 2 +		8086 c020  Dual Band Wireless-N 7260 +# Wilkins Peak 2 +		8086 c02a  Dual Band Wireless-N 7260 +# Wilkins Peak 2 +		8086 c060  Dual Band Wireless-N 7260 +# Wilkins Peak 2 +		8086 c062  Wireless-N 7260 +# Wilkins Peak 2 +		8086 c06a  Dual Band Wireless-N 7260 +# Wilkins Peak 2 +		8086 c070  Dual Band Wireless-AC 7260 +# Wilkins Peak 2 +		8086 c072  Dual Band Wireless-AC 7260 +# Wilkins Peak 2 +		8086 c160  Dual Band Wireless-N 7260 +# Wilkins Peak 2 +		8086 c162  Wireless-N 7260 +# Wilkins Peak 2 +		8086 c170  Dual Band Wireless-AC 7260 +# Wilkins Peak 2 +		8086 c360  Dual Band Wireless-N 7260 +# Wilkins Peak 2 +		8086 c420  Dual Band Wireless-N 7260 +# Wilkins Peak 2 +		8086 c460  Dual Band Wireless-N 7260 +# Wilkins Peak 2 +		8086 c462  Wireless-N 7260 +# Wilkins Peak 2 +		8086 c470  Dual Band Wireless-AC 7260 +# Wilkins Peak 2 +		8086 c472  Dual Band Wireless-AC 7260 +# Wilkins Peak 2 +		8086 c560  Dual Band Wireless-N 7260 +# Wilkins Peak 2 +		8086 c570  Dual Band Wireless-AC 7260 +# Wilkins Peak 2 +		8086 c760  Dual Band Wireless-N 7260 +# Wilkins Peak 2 +		8086 c770  Dual Band Wireless-AC 7260 +# Wilkins Peak 2 +		8086 cc60  Dual Band Wireless-AC 7260 +# Wilkins Peak 2 +		8086 cc70  Dual Band Wireless-AC 7260 +	08b2  Wireless 7260 +# Wilkins Peak 2 +		8086 4220  Dual Band Wireless-N 7260 +# Wilkins Peak 2 +		8086 4260  Dual Band Wireless-N 7260 +# Wilkins Peak 2 +		8086 4262  Wireless-N 7260 +# Wilkins Peak 2 +		8086 426a  Dual Band Wireless-N 7260 +# Wilkins Peak 2 +		8086 4270  Wireless-N 7260 +# Wilkins Peak 2 +		8086 4272  Dual Band Wireless-AC 7260 +# Wilkins Peak 2 +		8086 4360  Dual Band Wireless-N 7260 +# Wilkins Peak 2 +		8086 4370  Dual Band Wireless-AC 7260 +# Wilkins Peak 2 +		8086 c220  Dual Band Wireless-N 7260 +# Wilkins Peak 2 +		8086 c260  Dual Band Wireless-N 7260 +# Wilkins Peak 2 +		8086 c262  Wireless-N 7260 +# Wilkins Peak 2 +		8086 c26a  Dual Band Wireless-N 7260 +# Wilkins Peak 2 +		8086 c270  Dual Band Wireless-AC 7260 +# Wilkins Peak 2 +		8086 c272  Dual Band Wireless-AC 7260 +# Wilkins Peak 2 +		8086 c370  Dual Band Wireless-AC 7260 +	08b3  Wireless 3160 +# Wilkins Peak 1 +		8086 0060  Dual Band Wireless-N 3160 +# Wilkins Peak 1 +		8086 0062  Wireless-N 3160 +# Wilkins Peak 1 +		8086 0070  Dual Band Wireless-AC 3160 +# Wilkins Peak 1 +		8086 0072  Dual Band Wireless-AC 3160 +# Wilkins Peak 1 +		8086 0170  Dual Band Wireless-AC 3160 +# Wilkins Peak 1 +		8086 0172  Dual Band Wireless-AC 3160 +# Wilkins Peak 1 +		8086 0260  Dual Band Wireless-N 3160 +# Wilkins Peak 1 +		8086 0470  Dual Band Wireless-AC 3160 +# Wilkins Peak 1 +		8086 0472  Dual Band Wireless-AC 3160 +# Wilkins Peak 1 +		8086 1070  Dual Band Wireless-AC 3160 +# Wilkins Peak 1 +		8086 1170  Dual Band Wireless-AC 3160 +# Wilkins Peak 1 +		8086 8060  Dual Band Wireless N-3160 +# Wilkins Peak 1 +		8086 8062  Wireless N-3160 +# Wilkins Peak 1 +		8086 8070  Dual Band Wireless AC 3160 +# Wilkins Peak 1 +		8086 8072  Dual Band Wireless AC 3160 +# Wilkins Peak 1 +		8086 8170  Dual Band Wireless AC 3160 +# Wilkins Peak 1 +		8086 8172  Dual Band Wireless AC 3160 +# Wilkins Peak 1 +		8086 8470  Dual Band Wireless AC 3160 +# Wilkins Peak 1 +		8086 8570  Dual Band Wireless AC 3160 +	08b4  Wireless 3160 +# Wilkins Peak 1 +		8086 0270  Dual Band Wireless-AC 3160 +# Wilkins Peak 1 +		8086 0272  Dual Band Wireless-AC 3160 +# Wilkins Peak 1 +		8086 0370  Dual Band Wireless-AC 3160 +# Wilkins Peak 1 +		8086 8260  Dual Band Wireless AC 3160 +# Wilkins Peak 1 +		8086 8270  Dual Band Wireless AC 3160 +# Wilkins Peak 1 +		8086 8272  Dual Band Wireless AC 3160 +# Wilkins Peak 1 +		8086 8370  Dual Band Wireless AC 3160 +# PowerVR SGX 545 +	08cf  Atom Processor Z2760 Integrated Graphics Controller +	0953  PCIe Data Center SSD +		8086 3702  DC P3700 SSD +		8086 3703  DC P3700 SSD [2.5" SFF] +		8086 3704  DC P3500 SSD [Add-in Card] +		8086 3705  DC P3500 SSD [2.5" SFF] +		8086 3709  DC P3600 SSD [Add-in Card] +		8086 370a  DC P3600 SSD [2.5" SFF] +	095a  Wireless 7265 +# Stone Peak 2 AC +		8086 1010  Dual Band Wireless-AC 7265 +# Stone Peak 2 AGN +		8086 5000  Dual Band Wireless-N 7265 +# Stone Peak 2 BGN +		8086 5002  Wireless-N 7265 +# Stone Peak 2 AGN +		8086 500a  Dual Band Wireless-N 7265 +# Stone Peak 2 AC +		8086 5010  Dual Band Wireless-AC 7265 +# Stone Peak 2 AC +		8086 5012  Dual Band Wireless-AC 7265 +# Stone Peak 2 AGN +		8086 5020  Dual Band Wireless-N 7265 +# Stone Peak 2 AGN +		8086 502a  Dual Band Wireless-N 7265 +# Maple Peak AC +		8086 5090  Dual Band Wireless-AC 7265 +# Stone Peak 2 AGN +		8086 5100  Dual Band Wireless-AC 7265 +# Stone Peak 2 BGN +		8086 5102  Wireless-N 7265 +# Stone Peak 2 AGN +		8086 510a  Dual Band Wireless-AC 7265 +# Stone Peak 2 AC +		8086 5110  Dual Band Wireless-AC 7265 +# Stone Peak 2 AC +		8086 5112  Dual Band Wireless-AC 7265 +# Maple Peak AC +		8086 5190  Dual Band Wireless-AC 7265 +# Stone Peak 2 AGN +		8086 5400  Dual Band Wireless-AC 7265 +# Stone Peak 2 AC +		8086 5410  Dual Band Wireless-AC 7265 +# Stone Peak 2 AC +		8086 5412  Dual Band Wireless-AC 7265 +# Stone Peak 2 AGN +		8086 5420  Dual Band Wireless-N 7265 +# Maple Peak AC +		8086 5490  Dual Band Wireless-AC 7265 +# Stone Peak 2 AC +		8086 5510  Dual Band Wireless-AC 7265 +# Maple Peak AC +		8086 5590  Dual Band Wireless-AC 7265 +# Stone Peak 2 AGN +		8086 9000  Dual Band Wireless-AC 7265 +# Stone Peak 2 AGN +		8086 900a  Dual Band Wireless-AC 7265 +# Stone Peak 2 AC +		8086 9010  Dual Band Wireless-AC 7265 +# Stone Peak 2 AC +		8086 9012  Dual Band Wireless-AC 7265 +# Stone Peak 2 AC +		8086 9110  Dual Band Wireless-AC 7265 +# Stone Peak 2 AC +		8086 9112  Dual Band Wireless-AC 7265 +# Stone Peak 2 AC +		8086 9210  Dual Band Wireless-AC 7265 +# Stone Peak 2 AC +		8086 9310  Dual Band Wireless-AC 7265 +# Stone Peak 2 AGN +		8086 9400  Dual Band Wireless-AC 7265 +# Stone Peak 2 AC +		8086 9410  Dual Band Wireless-AC 7265 +# Stone Peak 2 AC +		8086 9510  Dual Band Wireless-AC 7265 +	095b  Wireless 7265 +# Stone Peak 2 AGN +		8086 5200  Dual Band Wireless-N 7265 +# Stone Peak 2 BGN +		8086 5202  Wireless-N 7265 +# Stone Peak 2 AGN +		8086 520a  Dual Band Wireless-N 7265 +# Stone Peak 2 AC +		8086 5210  Dual Band Wireless-AC 7265 +# Stone Peak 2 AC +		8086 5212  Dual Band Wireless-AC 7265 +# Maple Peak AC +		8086 5290  Dual Band Wireless-AC 7265 +# Stone Peak 2 BGN +		8086 5302  Wireless-N 7265 +# Stone Peak 2 AC +		8086 5310  Dual Band Wireless-AC 7265 +# Stone Peak 2 AGN +		8086 9200  Dual Band Wireless-AC 7265 +	0960  80960RP (i960RP) Microprocessor/Bridge +	0962  80960RM (i960RM) Bridge +	0964  80960RP (i960RP) Microprocessor/Bridge +	0a04  Haswell-ULT DRAM Controller +		17aa 2214  ThinkPad X240 +	0a06  Haswell-ULT Integrated Graphics Controller +	0a0c  Haswell-ULT HD Audio Controller +		17aa 2214  ThinkPad X240 +	0a16  Haswell-ULT Integrated Graphics Controller +		17aa 2214  ThinkPad X240 +	0a22  Haswell-ULT Integrated Graphics Controller +	0a26  Haswell-ULT Integrated Graphics Controller +	0a2a  Haswell-ULT Integrated Graphics Controller +	0be0  Atom Processor D2xxx/N2xxx Integrated Graphics Controller +	0be1  Atom Processor D2xxx/N2xxx Integrated Graphics Controller +		105b 0d7c  D270S/D250S Motherboard +	0be2  Atom Processor D2xxx/N2xxx Integrated Graphics Controller +	0be3  Atom Processor D2xxx/N2xxx Integrated Graphics Controller +	0be4  Atom Processor D2xxx/N2xxx Integrated Graphics Controller +	0be5  Atom Processor D2xxx/N2xxx Integrated Graphics Controller +	0be6  Atom Processor D2xxx/N2xxx Integrated Graphics Controller +	0be7  Atom Processor D2xxx/N2xxx Integrated Graphics Controller +	0be8  Atom Processor D2xxx/N2xxx Integrated Graphics Controller +	0be9  Atom Processor D2xxx/N2xxx Integrated Graphics Controller +	0bea  Atom Processor D2xxx/N2xxx Integrated Graphics Controller +	0beb  Atom Processor D2xxx/N2xxx Integrated Graphics Controller +	0bec  Atom Processor D2xxx/N2xxx Integrated Graphics Controller +	0bed  Atom Processor D2xxx/N2xxx Integrated Graphics Controller +	0bee  Atom Processor D2xxx/N2xxx Integrated Graphics Controller +	0bef  Atom Processor D2xxx/N2xxx Integrated Graphics Controller +	0bf0  Atom Processor D2xxx/N2xxx DRAM Controller +	0bf1  Atom Processor D2xxx/N2xxx DRAM Controller +	0bf2  Atom Processor D2xxx/N2xxx DRAM Controller +	0bf3  Atom Processor D2xxx/N2xxx DRAM Controller +	0bf4  Atom Processor D2xxx/N2xxx DRAM Controller +	0bf5  Atom Processor D2xxx/N2xxx DRAM Controller +		105b 0d7c  D270S/D250S Motherboard +	0bf6  Atom Processor D2xxx/N2xxx DRAM Controller +	0bf7  Atom Processor D2xxx/N2xxx DRAM Controller +	0c00  4th Gen Core Processor DRAM Controller +	0c01  Xeon E3-1200 v3/4th Gen Core Processor PCI Express x16 Controller +	0c04  Xeon E3-1200 v3/4th Gen Core Processor DRAM Controller +		103c 1909  ZBook 15 +		17aa 220e  ThinkPad T440p +	0c05  Xeon E3-1200 v3/4th Gen Core Processor PCI Express x8 Controller +	0c08  Xeon E3-1200 v3 Processor DRAM Controller +	0c09  Xeon E3-1200 v3/4th Gen Core Processor PCI Express x4 Controller +	0c0c  Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller +		17aa 220e  ThinkPad T440p +	0c46  Atom Processor S1200 PCI Express Root Port 1 +	0c47  Atom Processor S1200 PCI Express Root Port 2 +	0c48  Atom Processor S1200 PCI Express Root Port 3 +	0c49  Atom Processor S1200 PCI Express Root Port 4 +	0c4e  Atom Processor S1200 NTB Primary +	0c54  Atom Processor S1200 Internal +	0c55  Atom Processor S1200 DFX 1 +	0c56  Atom Processor S1200 DFX 2 +	0c59  Atom Processor S1200 SMBus 2.0 Controller 0 +	0c5a  Atom Processor S1200 SMBus 2.0 Controller 1 +	0c5b  Atom Processor S1200 SMBus Controller 2 +	0c5c  Atom Processor S1200 SMBus Controller 3 +	0c5d  Atom Processor S1200 SMBus Controller 4 +	0c5e  Atom Processor S1200 SMBus Controller 5 +	0c5f  Atom Processor S1200 UART +	0c60  Atom Processor S1200 Integrated Legacy Bus +	0c70  Atom Processor S1200 Internal +	0c71  Atom Processor S1200 Internal +	0c72  Atom Processor S1200 Internal +	0c73  Atom Processor S1200 Internal +	0c74  Atom Processor S1200 Internal +	0c75  Atom Processor S1200 Internal +	0c76  Atom Processor S1200 Internal +	0c77  Atom Processor S1200 Internal +	0c78  Atom Processor S1200 Internal +	0c79  Atom Processor S1200 Internal +	0c7a  Atom Processor S1200 Internal +	0c7b  Atom Processor S1200 Internal +	0c7c  Atom Processor S1200 Internal +	0c7d  Atom Processor S1200 Internal +	0c7e  Atom Processor S1200 Internal +	0c7f  Atom Processor S1200 Internal +	0d00  Crystal Well DRAM Controller +	0d01  Crystal Well PCI Express x16 Controller +	0d04  Crystal Well DRAM Controller +	0d05  Crystal Well PCI Express x8 Controller +	0d09  Crystal Well PCI Express x4 Controller +	0d0c  Crystal Well HD Audio Controller +	0d16  Crystal Well Integrated Graphics Controller +	0d26  Crystal Well Integrated Graphics Controller +	0d36  Crystal Well Integrated Graphics Controller +	0e00  Xeon E7 v2/Xeon E5 v2/Core i7 DMI2 +	0e01  Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port in DMI2 Mode +	0e02  Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 1a +	0e03  Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 1b +	0e04  Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 2a +	0e05  Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 2b +	0e06  Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 2c +	0e07  Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 2d +	0e08  Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 3a +	0e09  Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 3b +	0e0a  Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 3c +	0e0b  Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 3d +	0e10  Xeon E7 v2/Xeon E5 v2/Core i7 IIO Configuration Registers +	0e13  Xeon E7 v2/Xeon E5 v2/Core i7 IIO Configuration Registers +	0e17  Xeon E7 v2/Xeon E5 v2/Core i7 IIO Configuration Registers +	0e18  Xeon E7 v2/Xeon E5 v2/Core i7 IIO Configuration Registers +	0e1c  Xeon E7 v2/Xeon E5 v2/Core i7 IIO Configuration Registers +	0e1d  Xeon E7 v2/Xeon E5 v2/Core i7 R2PCIe +	0e1e  Xeon E7 v2/Xeon E5 v2/Core i7 UBOX Registers +	0e1f  Xeon E7 v2/Xeon E5 v2/Core i7 UBOX Registers +	0e20  Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 0 +	0e21  Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 1 +	0e22  Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 2 +	0e23  Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 3 +	0e24  Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 4 +	0e25  Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 5 +	0e26  Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 6 +	0e27  Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 7 +	0e28  Xeon E7 v2/Xeon E5 v2/Core i7 VTd/Memory Map/Misc +	0e29  Xeon E7 v2/Xeon E5 v2/Core i7 Memory Hotplug +	0e2a  Xeon E7 v2/Xeon E5 v2/Core i7 IIO RAS +	0e2c  Xeon E7 v2/Xeon E5 v2/Core i7 IOAPIC +	0e2e  Xeon E7 v2/Xeon E5 v2/Core i7 CBDMA +	0e2f  Xeon E7 v2/Xeon E5 v2/Core i7 CBDMA +	0e30  Xeon E7 v2/Xeon E5 v2/Core i7 Home Agent 0 +	0e32  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 0 +	0e33  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 1 +	0e34  Xeon E7 v2/Xeon E5 v2/Core i7 R2PCIe +	0e36  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Performance Ring Monitoring +	0e37  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Performance Ring Monitoring +	0e38  Xeon E7 v2/Xeon E5 v2/Core i7 Home Agent 1 +	0e3a  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 2 +	0e3e  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Performance Ring Monitoring +	0e3f  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Performance Ring Monitoring +	0e40  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 2 +	0e41  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Registers +	0e43  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Reut 2 +	0e44  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Reut 2 +	0e45  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Agent Register +	0e47  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Agent Register +	0e60  Xeon E7 v2/Xeon E5 v2/Core i7 Home Agent 1 +	0e68  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Target Address/Thermal Registers +	0e6a  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder Registers +	0e6b  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder Registers +	0e6c  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder Registers +	0e6d  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder Registers +	0e71  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 RAS Registers +	0e74  Xeon E7 v2/Xeon E5 v2/Core i7 R2PCIe +	0e75  Xeon E7 v2/Xeon E5 v2/Core i7 R2PCIe +	0e77  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Registers +	0e79  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 RAS Registers +	0e7d  Xeon E7 v2/Xeon E5 v2/Core i7 UBOX Registers +	0e7f  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Registers +	0e80  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 0 +	0e81  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Registers +	0e83  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Reut 0 +	0e84  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Reut 0 +	0e85  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Agent Register +	0e87  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Registers +	0e90  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 1 +	0e93  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 1 +	0e94  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Reut 1 +	0e95  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Agent Register +	0ea0  Xeon E7 v2/Xeon E5 v2/Core i7 Home Agent 0 +	0ea8  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Target Address/Thermal Registers +	0eaa  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder Registers +	0eab  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder Registers +	0eac  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder Registers +	0ead  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder Registers +	0eae  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO Registers +	0eaf  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO Registers +	0eb0  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 Thermal Control 0 +	0eb1  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 Thermal Control 1 +	0eb2  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 ERROR Registers 0 +	0eb3  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 ERROR Registers 1 +	0eb4  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 Thermal Control 2 +	0eb5  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 Thermal Control 3 +	0eb6  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 ERROR Registers 2 +	0eb7  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 ERROR Registers 3 +	0ebc  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO Registers +	0ebe  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO Registers +	0ebf  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO Registers +	0ec0  Xeon E7 v2/Xeon E5 v2/Core i7 Power Control Unit 0 +	0ec1  Xeon E7 v2/Xeon E5 v2/Core i7 Power Control Unit 1 +	0ec2  Xeon E7 v2/Xeon E5 v2/Core i7 Power Control Unit 2 +	0ec3  Xeon E7 v2/Xeon E5 v2/Core i7 Power Control Unit 3 +	0ec4  Xeon E7 v2/Xeon E5 v2/Core i7 Power Control Unit 4 +	0ec8  Xeon E7 v2/Xeon E5 v2/Core i7 System Address Decoder +	0ec9  Xeon E7 v2/Xeon E5 v2/Core i7 Broadcast Registers +	0eca  Xeon E7 v2/Xeon E5 v2/Core i7 Broadcast Registers +	0ed8  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO +	0ed9  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO +	0edc  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO +	0edd  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO +	0ede  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO +	0edf  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO +	0ee0  Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers +	0ee1  Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers +	0ee2  Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers +	0ee3  Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers +	0ee4  Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers +	0ee5  Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers +	0ee6  Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers +	0ee7  Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers +	0ee8  Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers +	0ee9  Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers +	0eea  Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers +	0eeb  Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers +	0eec  Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers +	0eed  Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers +	0eee  Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers +	0ef0  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 Thermal Control 0 +	0ef1  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 Thermal Control 1 +	0ef2  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 ERROR Registers 0 +	0ef3  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 ERROR Registers 1 +	0ef4  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 Thermal Control 2 +	0ef5  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 Thermal Control 3 +	0ef6  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 ERROR Registers 2 +	0ef7  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 ERROR Registers 3 +	0ef8  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO +	0ef9  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO +	0efa  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO +	0efb  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO +	0efc  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO +	0efd  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO +	0f00  Atom Processor Z36xxx/Z37xxx Series SoC Transaction Register +	0f04  Atom Processor Z36xxx/Z37xxx Series High Definition Audio Controller +	0f06  Atom Processor Z36xxx/Z37xxx Series LPIO1 DMA Controller +	0f08  Atom Processor Z36xxx/Z37xxx Series LPIO1 PWM Controller +	0f09  Atom Processor Z36xxx/Z37xxx Series LPIO1 PWM Controller +	0f0a  Atom Processor Z36xxx/Z37xxx Series LPIO1 HSUART Controller #1 +	0f0c  Atom Processor Z36xxx/Z37xxx Series LPIO1 HSUART Controller #2 +	0f0e  Atom Processor Z36xxx/Z37xxx Series LPIO1 SPI Controller +	0f14  Atom Processor Z36xxx/Z37xxx Series SDIO Controller +	0f15  Atom Processor Z36xxx/Z37xxx Series SDIO Controller +	0f16  Atom Processor Z36xxx/Z37xxx Series SDIO Controller +	0f18  Atom Processor Z36xxx/Z37xxx Series Trusted Execution Engine +	0f1c  Atom Processor Z36xxx/Z37xxx Series Power Control Unit +	0f28  Atom Processor Z36xxx/Z37xxx Series LPE Audio Controller +	0f31  Atom Processor Z36xxx/Z37xxx Series Graphics & Display +	0f34  Atom Processor Z36xxx/Z37xxx Series USB EHCI +	0f35  Atom Processor Z36xxx/Z37xxx Series USB xHCI +	0f37  Atom Processor Z36xxx/Z37xxx Series OTG USB Device +	0f38  Atom Processor Z36xxx/Z37xxx Series Camera ISP +	0f40  Atom Processor Z36xxx/Z37xxx Series LPIO2 DMA Controller +	0f41  Atom Processor Z36xxx/Z37xxx Series LPIO2 I2C Controller #1 +	0f42  Atom Processor Z36xxx/Z37xxx Series LPIO2 I2C Controller #2 +	0f43  Atom Processor Z36xxx/Z37xxx Series LPIO2 I2C Controller #3 +	0f44  Atom Processor Z36xxx/Z37xxx Series LPIO2 I2C Controller #4 +	0f45  Atom Processor Z36xxx/Z37xxx Series LPIO2 I2C Controller #5 +	0f46  Atom Processor Z36xxx/Z37xxx Series LPIO2 I2C Controller #6 +	0f47  Atom Processor Z36xxx/Z37xxx Series LPIO2 I2C Controller #7 +	1000  82542 Gigabit Ethernet Controller (Fiber) +		0e11 b0df  NC6132 Gigabit Ethernet Adapter (1000-SX) +		0e11 b0e0  NC6133 Gigabit Ethernet Adapter (1000-LX) +		0e11 b123  NC6134 Gigabit Ethernet Adapter (1000-LX) +		1014 0119  Netfinity Gigabit Ethernet SX Adapter +		8086 1000  PRO/1000 Gigabit Server Adapter +	1001  82543GC Gigabit Ethernet Controller (Fiber) +		0e11 004a  NC6136 Gigabit Server Adapter +		1014 01ea  Netfinity Gigabit Ethernet SX Adapter +		8086 1002  PRO/1000 F Server Adapter +		8086 1003  PRO/1000 F Server Adapter +	1002  Pro 100 LAN+Modem 56 Cardbus II +		8086 200e  Pro 100 LAN+Modem 56 Cardbus II +		8086 2013  Pro 100 SR Mobile Combo Adapter +		8086 2017  Pro 100 S Combo Mobile Adapter +	1004  82543GC Gigabit Ethernet Controller (Copper) +		0e11 0049  NC7132 Gigabit Upgrade Module +		0e11 b1a4  NC7131 Gigabit Server Adapter +		1014 10f2  Gigabit Ethernet Server Adapter +		8086 1004  PRO/1000 T Server Adapter +		8086 2004  PRO/1000 T Server Adapter +	1008  82544EI Gigabit Ethernet Controller (Copper) +		1014 0269  iSeries 1000/100/10 Ethernet Adapter +		1028 011b  PowerEdge 1650/2550 +		1028 011c  PRO/1000 XT Network Connection +		8086 1107  PRO/1000 XT Server Adapter +		8086 2107  PRO/1000 XT Server Adapter +		8086 2110  PRO/1000 XT Desktop Adapter +		8086 3108  PRO/1000 XT Network Connection +	1009  82544EI Gigabit Ethernet Controller (Fiber) +		1014 0268  iSeries Gigabit Ethernet Adapter +		8086 1109  PRO/1000 XF Server Adapter +		8086 2109  PRO/1000 XF Server Adapter +	100a  82540EM Gigabit Ethernet Controller +	100c  82544GC Gigabit Ethernet Controller (Copper) +		8086 1112  PRO/1000 T Desktop Adapter +		8086 2112  PRO/1000 T Desktop Adapter +	100d  82544GC Gigabit Ethernet Controller (LOM) +		1028 0123  PRO/1000 XT Network Connection +		1079 891f  82544GC Based Network Connection +		4c53 1080  CT8 mainboard +		8086 110d  82544GC Based Network Connection +	100e  82540EM Gigabit Ethernet Controller +		1014 0265  PRO/1000 MT Network Connection +		1014 0267  PRO/1000 MT Network Connection +		1014 026a  PRO/1000 MT Network Connection +		1028 002e  Optiplex GX260 +		1028 0134  PowerEdge 600SC +		1028 0151  Optiplex GX270 +		107b 8920  PRO/1000 MT Desktop Adapter +		1af4 1100  QEMU Virtual Machine +		8086 001e  PRO/1000 MT Desktop Adapter +		8086 002e  PRO/1000 MT Desktop Adapter +		8086 1376  PRO/1000 GT Desktop Adapter +		8086 1476  PRO/1000 GT Desktop Adapter +	100f  82545EM Gigabit Ethernet Controller (Copper) +		1014 0269  iSeries 1000/100/10 Ethernet Adapter +		1014 028e  PRO/1000 MT Network Connection +		15ad 0750  PRO/1000 MT Single Port Adapter +		8086 1000  PRO/1000 MT Network Connection +		8086 1001  PRO/1000 MT Server Adapter +	1010  82546EB Gigabit Ethernet Controller (Copper) +		0e11 00db  NC7170 Gigabit Server Adapter +		1014 027c  PRO/1000 MT Dual Port Network Adapter +		15ad 0760  PRO/1000 MT Dual Port Adapter +		18fb 7872  RESlink-X +		1fc1 0026  Niagara 2260 Bypass Card +		4c53 1080  CT8 mainboard +		4c53 10a0  CA3/CR3 mainboard +		8086 1011  PRO/1000 MT Dual Port Server Adapter +		8086 1012  PRO/1000 MT Dual Port Server Adapter +		8086 101a  PRO/1000 MT Dual Port Network Connection +		8086 3424  SE7501HG2 Mainboard +	1011  82545EM Gigabit Ethernet Controller (Fiber) +		1014 0268  iSeries Gigabit Ethernet Adapter +		8086 1002  PRO/1000 MF Server Adapter +		8086 1003  PRO/1000 MF Server Adapter (LX) +	1012  82546EB Gigabit Ethernet Controller (Fiber) +		0e11 00dc  NC6170 Gigabit Server Adapter +		8086 1012  PRO/1000 MF Dual Port Server Adapter +	1013  82541EI Gigabit Ethernet Controller +		8086 0013  PRO/1000 MT Network Connection +		8086 1013  PRO/1000 MT Network Connection +		8086 1113  PRO/1000 MT Desktop Adapter +	1014  82541ER Gigabit Ethernet Controller +		8086 0014  PRO/1000 MT Desktop Connection +		8086 1014  PRO/1000 MT Network Connection +	1015  82540EM Gigabit Ethernet Controller (LOM) +		8086 1015  PRO/1000 MT Mobile Connection +	1016  82540EP Gigabit Ethernet Controller (Mobile) +		1014 052c  PRO/1000 MT Mobile Connection +		1179 0001  PRO/1000 MT Mobile Connection +		8086 1016  PRO/1000 MT Mobile Connection +	1017  82540EP Gigabit Ethernet Controller +		8086 1017  PR0/1000 MT Desktop Connection +	1018  82541EI Gigabit Ethernet Controller +		8086 1018  PRO/1000 MT Mobile Connection +	1019  82547EI Gigabit Ethernet Controller +		1458 1019  GA-8IPE1000 Pro2 motherboard (865PE) +		1458 e000  Intel Gigabit Ethernet (Kenai II) +		8086 1019  PRO/1000 CT Desktop Connection +		8086 301f  D865PERL mainboard +		8086 3025  D875PBZ motherboard +		8086 302c  Intel 82865G Mainboard (D865GBF) +		8086 3427  S875WP1-E mainboard +	101a  82547EI Gigabit Ethernet Controller (Mobile) +		8086 101a  PRO/1000 CT Mobile Connection +	101d  82546EB Gigabit Ethernet Controller +		8086 1000  PRO/1000 MT Quad Port Server Adapter +	101e  82540EP Gigabit Ethernet Controller (Mobile) +		1014 0549  Thinkpad +		1179 0001  PRO/1000 MT Mobile Connection +		8086 101e  PRO/1000 MT Mobile Connection +	1026  82545GM Gigabit Ethernet Controller +		1028 0168  Precision Workstation 670 Mainboard +		1028 0169  Precision 470 +		8086 1000  PRO/1000 MT Server Connection +		8086 1001  PRO/1000 MT Server Adapter +		8086 1002  PRO/1000 MT Server Adapter +		8086 1003  PRO/1000 GT Server Adapter +		8086 1026  PRO/1000 MT Server Connection +	1027  82545GM Gigabit Ethernet Controller +		103c 3103  NC310F PCI-X Gigabit Server Adapter +		8086 1001  PRO/1000 MF Server Adapter(LX) +		8086 1002  PRO/1000 MF Server Adapter(LX) +		8086 1003  PRO/1000 MF Server Adapter(LX) +		8086 1027  PRO/1000 MF Server Adapter +	1028  82545GM Gigabit Ethernet Controller +		8086 1028  PRO/1000 MB Server Connection +	1029  82559 Ethernet Controller +	1030  82559 InBusiness 10/100 +	1031  82801CAM (ICH3) PRO/100 VE (LOM) Ethernet Controller +		1014 0209  ThinkPad A/T/X Series +		104d 80e7  Vaio PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP +		104d 813c  Vaio PCG-GRV616G +		107b 5350  EtherExpress PRO/100 VE +		1179 0001  EtherExpress PRO/100 VE +		144d c000  EtherExpress PRO/100 VE +		144d c001  EtherExpress PRO/100 VE +		144d c003  EtherExpress PRO/100 VE +		144d c006  vpr Matrix 170B4 +	1032  82801CAM (ICH3) PRO/100 VE Ethernet Controller +	1033  82801CAM (ICH3) PRO/100 VM (LOM) Ethernet Controller +	1034  82801CAM (ICH3) PRO/100 VM Ethernet Controller +	1035  82801CAM (ICH3)/82562EH (LOM) Ethernet Controller +	1036  82801CAM (ICH3) 82562EH Ethernet Controller +	1037  82801CAM (ICH3) Chipset Ethernet Controller +	1038  82801CAM (ICH3) PRO/100 VM (KM) Ethernet Controller +		0e11 0098  Evo N600c +	1039  82801DB PRO/100 VE (LOM) Ethernet Controller +		1014 0267  NetVista A30p +		114a 0582  PC8 onboard ethernet ETH1 +	103a  82801DB PRO/100 VE (CNR) Ethernet Controller +	103b  82801DB PRO/100 VM (LOM) Ethernet Controller +	103c  82801DB PRO/100 VM (CNR) Ethernet Controller +	103d  82801DB PRO/100 VE (MOB) Ethernet Controller +		1014 0522  ThinkPad R40 +		1028 2002  Latitude D500 +		8086 103d  82562EZ 10/100 Ethernet Controller +	103e  82801DB PRO/100 VM (MOB) Ethernet Controller +	1040  536EP Data Fax Modem +		16be 1040  V.9X DSP Data Fax Modem +	1043  PRO/Wireless LAN 2100 3B Mini PCI Adapter +		103c 08b0  tc1100 tablet +		8086 2522  Samsung X10/P30 integrated WLAN +		8086 2527  MIM2000/Centrino +		8086 2561  Dell Latitude D800 +		8086 2581  Toshiba Satellite M10 +	1048  82597EX 10GbE Ethernet Controller +		8086 a01f  PRO/10GbE LR Server Adapter +		8086 a11f  PRO/10GbE LR Server Adapter +	1049  82566MM Gigabit Network Connection +		103c 30c1  Compaq 6910p +		17aa 20b9  ThinkPad T61/R61 +	104a  82566DM Gigabit Network Connection +	104b  82566DC Gigabit Network Connection +	104c  82562V 10/100 Network Connection +	104d  82566MC Gigabit Network Connection +	1050  82562EZ 10/100 Ethernet Controller +		1028 019d  Dimension 3000 +		1462 728c  865PE Neo2 (MS-6728) +		1462 758c  MS-6758 (875P Neo) +		8086 3020  D865PERL mainboard +		8086 302f  Desktop Board D865GBF +		8086 3427  S875WP1-E mainboard +	1051  82801EB/ER (ICH5/ICH5R) integrated LAN Controller +	1052  PRO/100 VM Network Connection +	1053  PRO/100 VM Network Connection +	1054  PRO/100 VE Network Connection +	1055  PRO/100 VM Network Connection +	1056  PRO/100 VE Network Connection +	1057  PRO/100 VE Network Connection +	1059  82551QM Ethernet Controller +	105b  82546GB Gigabit Ethernet Controller (Copper) +	105e  82571EB Gigabit Ethernet Controller +		103c 7044  NC360T PCI Express Dual Port Gigabit Server Adapter +		103c 704e  Dual Port 1000Base-T (PCIe) [AD337A] +		1775 1100  CR11/VR11 Single Board Computer +		1775 6003  Telum GE-QT +		18df 1214  2x 1GbE, PCIe x1, dual Intel 82571EB chips +		8086 005e  PRO/1000 PT Dual Port Server Connection +		8086 105e  PRO/1000 PT Dual Port Network Connection +		8086 10d5  82571PT Gigabit PT Quad Port Server ExpressModule +		8086 115e  PRO/1000 PT Dual Port Server Adapter +		8086 125e  PRO/1000 PT Dual Port Server Adapter +		8086 135e  PRO/1000 PT Dual Port Server Adapter +	105f  82571EB Gigabit Ethernet Controller +		103c 704f  Dual Port 1000Base-SX (PCIe) [AD338A] +		8086 005a  PRO/1000 PF Dual Port Server Adapter +		8086 115f  PRO/1000 PF Dual Port Server Adapter +		8086 125f  PRO/1000 PF Dual Port Server Adapter +		8086 135f  PRO/1000 PF Dual Port Server Adapter +	1060  82571EB Gigabit Ethernet Controller +		8086 0060  PRO/1000 PB Dual Port Server Connection +		8086 1060  PRO/1000 PB Dual Port Server Connection +	1064  82562ET/EZ/GT/GZ - PRO/100 VE (LOM) Ethernet Controller +		1043 80f8  P5GD1-VW Mainboard +	1065  82562ET/EZ/GT/GZ - PRO/100 VE Ethernet Controller +	1066  82562 EM/EX/GX - PRO/100 VM (LOM) Ethernet Controller +	1067  82562 EM/EX/GX - PRO/100 VM Ethernet Controller +	1068  82562ET/EZ/GT/GZ - PRO/100 VE (LOM) Ethernet Controller Mobile +	1069  82562EM/EX/GX - PRO/100 VM (LOM) Ethernet Controller Mobile +	106a  82562G - PRO/100 VE (LOM) Ethernet Controller +	106b  82562G - PRO/100 VE Ethernet Controller Mobile +	1075  82547GI Gigabit Ethernet Controller +		1028 0165  PowerEdge 750 +		8086 0075  PRO/1000 CT Network Connection +		8086 1075  PRO/1000 CT Network Connection +	1076  82541GI Gigabit Ethernet Controller +		1028 0165  PRO/1000 MT Network Connection +		1028 016d  PRO/1000 MT Network Connection +		1028 019a  PRO/1000 MT Network Connection +		1028 106d  PRO/1000 MT Network Connection +		8086 0076  PRO/1000 MT Network Connection +		8086 1076  PRO/1000 MT Network Connection +		8086 1176  PRO/1000 MT Desktop Adapter +		8086 1276  PRO/1000 MT Network Adapter +	1077  82541GI Gigabit Ethernet Controller +		1179 0001  PRO/1000 MT Mobile Connection +		8086 0077  PRO/1000 MT Mobile Connection +		8086 1077  PRO/1000 MT Mobile Connection +	1078  82541ER Gigabit Ethernet Controller +		8086 1078  82541ER-based Network Connection +	1079  82546GB Gigabit Ethernet Controller +		103c 12a6  Dual Port 1000Base-T [A9900A] +		103c 12cf  Core Dual Port 1000Base-T [AB352A] +		1775 10d0  V5D Single Board Computer Gigabit Ethernet +		1775 ce90  CE9 +		1fc1 0027  Niagara 2261 Failover NIC +		4c53 1090  Cx9 / Vx9 mainboard +		4c53 10b0  CL9 mainboard +		8086 0079  PRO/1000 MT Dual Port Network Connection +		8086 1079  PRO/1000 MT Dual Port Network Connection +		8086 1179  PRO/1000 MT Dual Port Server Adapter +		8086 117a  PRO/1000 MT Dual Port Server Adapter +	107a  82546GB Gigabit Ethernet Controller +		103c 12a8  Dual Port 1000base-SX [A9899A] +		8086 107a  PRO/1000 MF Dual Port Server Adapter +		8086 127a  PRO/1000 MF Dual Port Server Adapter +	107b  82546GB Gigabit Ethernet Controller +		8086 007b  PRO/1000 MB Dual Port Server Connection +		8086 107b  PRO/1000 MB Dual Port Server Connection +	107c  82541PI Gigabit Ethernet Controller +		8086 1376  PRO/1000 GT Desktop Adapter +		8086 1476  PRO/1000 GT Desktop Adapter +	107d  82572EI Gigabit Ethernet Controller (Copper) +		8086 1082  PRO/1000 PT Server Adapter +		8086 1084  PRO/1000 PT Server Adapter +		8086 1092  PRO/1000 PT Server Adapter +	107e  82572EI Gigabit Ethernet Controller (Fiber) +		8086 1084  PRO/1000 PF Server Adapter +		8086 1085  PRO/1000 PF Server Adapter +		8086 1094  PRO/1000 PF Server Adapter +	107f  82572EI Gigabit Ethernet Controller +	1080  FA82537EP 56K V.92 Data/Fax Modem PCI +	1081  631xESB/632xESB LAN Controller Copper +	1082  631xESB/632xESB LAN Controller fiber +	1083  631xESB/632xESB LAN Controller SERDES +	1084  631xESB/632xESB IDE Redirection +	1085  631xESB/632xESB Serial Port Redirection +	1086  631xESB/632xESB IPMI/KCS0 +	1087  631xESB/632xESB UHCI Redirection +	1089  631xESB/632xESB BT +	108a  82546GB Gigabit Ethernet Controller +		8086 108a  PRO/1000 P Dual Port Server Adapter +		8086 118a  PRO/1000 P Dual Port Server Adapter +	108b  82573V Gigabit Ethernet Controller (Copper) +		1462 176c  on board on MSI 945P - NEO (MS-7176) +	108c  82573E Gigabit Ethernet Controller (Copper) +	108e  82573E KCS (Active Management) +	108f  Active Management Technology - SOL +	1091  PRO/100 VM Network Connection +	1092  PRO/100 VE Network Connection +		1071 8209  Medion MIM 2240 Notebook PC [MD98100] +	1093  PRO/100 VM Network Connection +	1094  PRO/100 VE Network Connection +	1095  PRO/100 VE Network Connection +	1096  80003ES2LAN Gigabit Ethernet Controller (Copper) +		15d9 1096  Motherboard +		15d9 8680  X7DVL-E-O motherboard +		8086 3476  Intel S5000PSLSATA Server Board +	1097  631xESB/632xESB DPT LAN Controller (Fiber) +	1098  80003ES2LAN Gigabit Ethernet Controller (Serdes) +	1099  82546GB Gigabit Ethernet Controller (Copper) +		8086 1099  PRO/1000 GT Quad Port Server Adapter +	109a  82573L Gigabit Ethernet Controller +		1179 ff10  PRO/1000 PL +		17aa 2001  ThinkPad T60 +		17aa 207e  ThinkPad X60/X60s +		8086 109a  PRO/1000 PL Network Connection +		8086 309c  Desktop Board D945GTP +		8086 30a5  Desktop Board D975XBX +	109b  82546GB PRO/1000 GF Quad Port Server Adapter +	109e  82597EX 10GbE Ethernet Controller +		8086 a01f  PRO/10GbE CX4 Server Adapter +		8086 a11f  PRO/10GbE CX4 Server Adapter +	10a0  82571EB PRO/1000 AT Quad Port Bypass Adapter +	10a1  82571EB PRO/1000 AF Quad Port Bypass Adapter +	10a4  82571EB Gigabit Ethernet Controller +		8086 10a4  PRO/1000 PT Quad Port Server Adapter +		8086 11a4  PRO/1000 PT Quad Port Server Adapter +	10a5  82571EB Gigabit Ethernet Controller (Fiber) +		8086 10a5  PRO/1000 PF Quad Port Server Adapter +		8086 10a6  PRO/1000 PF Quad Port Server Adapter +	10a6  82599EB 10-Gigabit Dummy Function +	10a7  82575EB Gigabit Network Connection +		8086 10a8  82575EB Gigabit Riser Card +	10a9  82575EB Gigabit Backplane Connection +	10b0  82573L PRO/1000 PL Network Connection +	10b2  82573V PRO/1000 PM Network Connection +	10b3  82573E PRO/1000 PM Network Connection +	10b4  82573L PRO/1000 PL Network Connection +	10b5  82546GB Gigabit Ethernet Controller (Copper) +		103c 3109  NC340T PCI-X Quad-port Gigabit Server Adapter +		8086 1099  PRO/1000 GT Quad Port Server Adapter +		8086 1199  PRO/1000 GT Quad Port Server Adapter +	10b6  82598 10GbE PCI-Express Ethernet Controller +	10b9  82572EI Gigabit Ethernet Controller (Copper) +		103c 704a  HP 110T PCIe Gigabit Server Adapter +		8086 1083  PRO/1000 PT Desktop Adapter +		8086 1093  PRO/1000 PT Desktop Adapter +	10ba  80003ES2LAN Gigabit Ethernet Controller (Copper) +	10bb  80003ES2LAN Gigabit Ethernet Controller (Serdes) +	10bc  82571EB Gigabit Ethernet Controller (Copper) +		103c 704b  NC364T PCI Express Quad Port Gigabit Server Adapter +		108e 11bc  x4 PCI-Express Quad Gigabit Ethernet UTP Low Profile Adapter +		8086 10bc  PRO/1000 PT Quad Port LP Server Adapter +		8086 11bc  PRO/1000 PT Quad Port LP Server Adapter +	10bd  82566DM-2 Gigabit Network Connection +		1028 0211  OptiPlex 755 +	10bf  82567LF Gigabit Network Connection +	10c0  82562V-2 10/100 Network Connection +		1028 020d  Inspiron 530 +	10c2  82562G-2 10/100 Network Connection +	10c3  82562GT-2 10/100 Network Connection +	10c4  82562GT 10/100 Network Connection +	10c5  82562G 10/100 Network Connection +	10c6  82598EB 10-Gigabit AF Dual Port Network Connection +		8086 a05f  10-Gigabit XF SR Dual Port Server Adapter +		8086 a15f  10-Gigabit XF SR Dual Port Server Adapter +	10c7  82598EB 10-Gigabit AF Network Connection +		1014 037f  10-Gigabit XF SR Server Adapter +		1014 0380  10-Gigabit XF LR Server Adapter +		8086 a05f  10-Gigabit XF SR Server Adapter +		8086 a15f  10-Gigabit XF SR Server Adapter +		8086 a16f  10-Gigabit XF SR Server Adapter +	10c8  82598EB 10-Gigabit AT Network Connection +		8086 a10c  10-Gigabit AT Server Adapter +		8086 a11c  10-Gigabit AT Server Adapter +		8086 a12c  10-Gigabit AT Server Adapter +	10c9  82576 Gigabit Network Connection +		103c 31ef  NC362i Integrated Dual port Gigabit Server Adapter +		103c 323f  NC362i Integrated Dual port Gigabit Server Adapter +		10a9 8028  UV-BaseIO dual-port GbE +		13a3 0037  DS4100 Secure Multi-Gigabit Server Adapter with Compression +		15d9 a811  H8DGU +		8086 a01c  Gigabit ET Dual Port Server Adapter +		8086 a03c  Gigabit ET Dual Port Server Adapter +		8086 a04c  Gigabit ET Dual Port Server Adapter +	10ca  82576 Virtual Function +	10cb  82567V Gigabit Network Connection +	10cc  82567LM-2 Gigabit Network Connection +	10cd  82567LF-2 Gigabit Network Connection +	10ce  82567V-2 Gigabit Network Connection +	10d3  82574L Gigabit Network Connection +		103c 1785  NC112i 1-port Ethernet Server Adapter +		103c 3250  NC112T PCI Express single Port Gigabit Server Adapter +		1043 8369  Motherboard +		1093 76e9  PCIe-8233 Ethernet Adapter +		10a9 8029  Prism XL Single Port Gigabit Ethernet +		15d9 060a  X7SPA-H/X7SPA-HF Motherboard +		15d9 060d  C7SIM-Q Motherboard +		8086 0001  Gigabit CT2 Desktop Adapter +		8086 357a  Server Board S1200BTS +		8086 a01f  Gigabit CT Desktop Adapter +		e4bf 50c1  PC1-GROOVE +		e4bf 50c2  PC2-LIMBO +	10d4  Matrox Concord GE (customized Intel 82574) +	10d5  82571PT Gigabit PT Quad Port Server ExpressModule +	10d6  82575GB Gigabit Network Connection +		8086 10d6  Gigabit VT Quad Port Server Adapter +		8086 145a  Gigabit VT Quad Port Server Adapter +		8086 147a  Gigabit VT Quad Port Server Adapter +	10d8  82599EB 10 Gigabit Unprogrammed +	10d9  82571EB Dual Port Gigabit Mezzanine Adapter +		103c 1716  NC360m Dual Port 1GbE BL-c Adapter +	10da  82571EB Quad Port Gigabit Mezzanine Adapter +		103c 1717  NC364m Quad Port 1GbE BL-c Adapter +	10db  82598EB 10-Gigabit Dual Port Network Connection +	10dd  82598EB 10-Gigabit AT CX4 Network Connection +	10de  82567LM-3 Gigabit Network Connection +	10df  82567LF-3 Gigabit Network Connection +	10e1  82598EB 10-Gigabit AF Dual Port Network Connection +		8086 a15f  10-Gigabit SR Dual Port Express Module +	10e2  82575GB Gigabit Network Connection +		8086 10e2  Gigabit VT Quad Port Server Adapter +	10e5  82567LM-4 Gigabit Network Connection +	10e6  82576 Gigabit Network Connection +		8086 a01f  Gigabit EF Dual Port Server Adapter +		8086 a02f  Gigabit EF Dual Port Server Adapter +	10e7  82576 Gigabit Network Connection +		103c 31ff  NC362i Integrated Dual Port BL-c Gigabit Server Adapter +	10e8  82576 Gigabit Network Connection +		8086 a02b  Gigabit ET Quad Port Server Adapter +		8086 a02c  Gigabit ET Quad Port Server Adapter +	10ea  82577LM Gigabit Network Connection +		1028 040a  Latitude E6410 +		1028 040b  Latitude E6510 +		e4bf 50c1  PC1-GROOVE +	10eb  82577LC Gigabit Network Connection +	10ec  82598EB 10-Gigabit AT CX4 Network Connection +		8086 a01f  10-Gigabit CX4 Dual Port Server Adapter +		8086 a11f  10-Gigabit CX4 Dual Port Server Adapter +	10ed  82599 Ethernet Controller Virtual Function +	10ef  82578DM Gigabit Network Connection +		1028 02da  OptiPlex 980 +		15d9 060d  C7SIM-Q Motherboard +	10f0  82578DC Gigabit Network Connection +	10f1  82598EB 10-Gigabit AF Dual Port Network Connection +		8086 a20f  10-Gigabit AF DA Dual Port Server Adapter +		8086 a21f  10-Gigabit AF DA Dual Port Server Adapter +	10f4  82598EB 10-Gigabit AF Network Connection +		8086 106f  10-Gigabit XF LR Server Adapter +		8086 a06f  10-Gigabit XF LR Server Adapter +	10f5  82567LM Gigabit Network Connection +	10f6  82574L Gigabit Network Connection +	10f7  10 Gigabit BR KX4 Dual Port Network Connection +		108e 7b12  Sun Dual 10GbE PCIe 2.0 FEM +		8086 000d  Ethernet Mezzanine Adapter X520-KX4-2 +	10f8  82599 10 Gigabit Dual Port Backplane Connection +		1028 1f63  10GbE 2P X520k bNDC +		103c 17d2  Ethernet 10Gb 2-port 560M Adapter +		103c 18d0  Ethernet 10Gb 2-port 560FLB Adapter +		8086 000c  Ethernet X520 10GbE Dual Port KX4-KR Mezz +	10f9  82599 10 Gigabit Dual Port Network Connection +	10fb  82599ES 10-Gigabit SFI/SFP+ Network Connection +		1028 1f72  Ethernet 10G 4P X520/I350 rNDC +		103c 17d0  Ethernet 10Gb 2-port 560FLR-SFP+ Adapter +		103c 17d2  Ethernet 10Gb 2-port 560M Adapter +		103c 17d3  Ethernet 10Gb 2-port 560SFP+ Adapter +		103c 211b  Ethernet 10Gb 1-port P560FLR-SFP+ Adapter +		103c 2147  Ethernet 10Gb 1-port 561i Adapter +		103c 2159  Ethernet 10Gb 2-port 562i Adapter +		108e 7b11  Ethernet Server Adapter X520-2 +		1734 11a9  10 Gigabit Dual Port Network Connection +		17aa 1071  ThinkServer X520-2 AnyFabric +		8086 0002  Ethernet Server Adapter X520-DA2 +		8086 0003  Ethernet Server Adapter X520-2 +		8086 0006  Ethernet Server Adapter X520-1 +		8086 0008  Ethernet OCP Server Adapter X520-2 +		8086 000a  Ethernet Server Adapter X520-1 +		8086 000c  Ethernet Server Adapter X520-2 +		8086 7a11  Ethernet Server Adapter X520-2 +		8086 7a12  Ethernet Server Adapter X520-2 +	10fc  82599 10 Gigabit Dual Port Network Connection +	10fe  82552 10/100 Network Connection +	1107  PRO/1000 MF Server Adapter (LX) +	1130  82815 815 Chipset Host Bridge and Memory Controller Hub +		1025 1016  Travelmate 612 TX +		1043 8027  TUSL2-C Mainboard +		104d 80df  Vaio PCG-FX403 +		8086 4532  D815EEA2 mainboard +		8086 4557  D815EGEW Mainboard +	1131  82815 815 Chipset AGP Bridge +	1132  82815 Chipset Graphics Controller (CGC) +		1025 1016  Travelmate 612 TX +		103c 2001  e-pc 40 +		104d 80df  Vaio PCG-FX403 +		8086 4532  D815EEA2 Mainboard +		8086 4541  D815EEA Motherboard +		8086 4557  D815EGEW Mainboard +	1161  82806AA PCI64 Hub Advanced Programmable Interrupt Controller +		8086 1161  82806AA PCI64 Hub APIC +	1162  Xscale 80200 Big Endian Companion Chip +	1200  IXP1200 Network Processor +		172a 0000  AEP SSL Accelerator +	1209  8255xER/82551IT Fast Ethernet Controller +		140b 0610  PMC610 quad Ethernet board +		1af4 1100  QEMU Virtual Machine +		4c53 1050  CT7 mainboard +		4c53 1051  CE7 mainboard +		4c53 1070  PC6 mainboard +	1221  82092AA PCI to PCMCIA Bridge +	1222  82092AA IDE Controller +	1223  SAA7116 +	1225  82452KX/GX [Orion] +	1226  82596 PRO/10 PCI +	1227  82865 EtherExpress PRO/100A +	1228  82556 EtherExpress PRO/100 Smart +	1229  82557/8/9/0/1 Ethernet Pro 100 +		0e11 3001  82559 Fast Ethernet LOM with Alert on LAN* +		0e11 3002  82559 Fast Ethernet LOM with Alert on LAN* +		0e11 3003  82559 Fast Ethernet LOM with Alert on LAN* +		0e11 3004  82559 Fast Ethernet LOM with Alert on LAN* +		0e11 3005  82559 Fast Ethernet LOM with Alert on LAN* +		0e11 3006  82559 Fast Ethernet LOM with Alert on LAN* +		0e11 3007  82559 Fast Ethernet LOM with Alert on LAN* +		0e11 b01e  NC3120 Fast Ethernet NIC +		0e11 b01f  NC3122 Fast Ethernet NIC (dual port) +		0e11 b02f  NC1120 Ethernet NIC +		0e11 b04a  Netelligent 10/100TX NIC with Wake on LAN +		0e11 b0c6  NC3161 Fast Ethernet NIC (embedded, WOL) +		0e11 b0c7  NC3160 Fast Ethernet NIC (embedded) +		0e11 b0d7  NC3121 Fast Ethernet NIC (WOL) +		0e11 b0dd  NC3131 Fast Ethernet NIC (dual port) +		0e11 b0de  NC3132 Fast Ethernet Module (dual port) +		0e11 b0e1  NC3133 Fast Ethernet Module (100-FX) +		0e11 b134  NC3163 Fast Ethernet NIC (embedded, WOL) +		0e11 b13c  NC3162 Fast Ethernet NIC (embedded) +		0e11 b144  NC3123 Fast Ethernet NIC (WOL) +		0e11 b163  NC3134 Fast Ethernet NIC (dual port) +		0e11 b164  NC3135 Fast Ethernet Upgrade Module (dual port) +		0e11 b1a4  NC7131 Gigabit Server Adapter +		1014 005c  82558B Ethernet Pro 10/100 +		1014 01bc  82559 Fast Ethernet LAN On Motherboard +		1014 01f1  10/100 Ethernet Server Adapter +		1014 01f2  10/100 Ethernet Server Adapter +		1014 0207  Ethernet Pro/100 S +		1014 0232  10/100 Dual Port Server Adapter +		1014 023a  ThinkPad R30 +		1014 105c  Netfinity 10/100 +		1014 2205  ThinkPad A22p +		1014 305c  10/100 EtherJet Management Adapter +		1014 405c  10/100 EtherJet Adapter with Alert on LAN +		1014 505c  10/100 EtherJet Secure Management Adapter +		1014 605c  10/100 EtherJet Secure Management Adapter +		1014 705c  10/100 Netfinity 10/100 Ethernet Security Adapter +		1014 805c  10/100 Netfinity 10/100 Ethernet Security Adapter +		1028 009b  10/100 Ethernet Server Adapter +		1028 00ce  10/100 Ethernet Server Adapter +		1033 8000  PC-9821X-B06 +		1033 8016  PK-UG-X006 +		1033 801f  PK-UG-X006 +		1033 8026  PK-UG-X006 +		1033 8063  82559-based Fast Ethernet Adapter +		1033 8064  82559-based Fast Ethernet Adapter +		103c 10c0  NetServer 10/100TX +		103c 10c3  NetServer 10/100TX +		103c 10ca  NetServer 10/100TX +		103c 10cb  NetServer 10/100TX +		103c 10e3  NetServer 10/100TX +		103c 10e4  NetServer 10/100TX +		103c 1200  NetServer 10/100TX +		108e 10cf  EtherExpress PRO/100(B) +		10c3 1100  SmartEther100 SC1100 +		10cf 1115  8255x-based Ethernet Adapter (10/100) +		10cf 1143  8255x-based Ethernet Adapter (10/100) +		110a 008b  82551QM Fast Ethernet Multifuction PCI/CardBus Controller +		114a 0582  PC8 onboard ethernet ETH2 +		1179 0001  8255x-based Ethernet Adapter (10/100) +		1179 0002  PCI FastEther LAN on Docker +		1179 0003  8255x-based Fast Ethernet +		1259 2560  AT-2560 100 +		1259 2561  AT-2560 100 FX Ethernet Adapter +		1266 0001  NE10/100 Adapter +		13e9 1000  6221L-4U +		144d 2501  SEM-2000 MiniPCI LAN Adapter +		144d 2502  SEM-2100IL MiniPCI LAN Adapter +		1668 1100  EtherExpress PRO/100B (TX) (MiniPCI Ethernet+Modem) +		1775 1100  CR11/VR11 Single Board Computer +		1775 ce90  CE9 +		1af4 1100  QEMU Virtual Machine +		4c53 1080  CT8 mainboard +		4c53 10e0  PSL09 PrPMC +		8086 0001  EtherExpress PRO/100B (TX) +		8086 0002  EtherExpress PRO/100B (T4) +		8086 0003  EtherExpress PRO/10+ +		8086 0004  EtherExpress PRO/100 WfM +		8086 0005  82557 10/100 +		8086 0006  82557 10/100 with Wake on LAN +		8086 0007  82558 10/100 Adapter +		8086 0008  82558 10/100 with Wake on LAN +		8086 0009  82558B PRO/100+ PCI (TP) +		8086 000a  EtherExpress PRO/100+ Management Adapter +		8086 000b  EtherExpress PRO/100+ +		8086 000c  EtherExpress PRO/100+ Management Adapter +		8086 000d  EtherExpress PRO/100+ Alert On LAN II* Adapter +		8086 000e  EtherExpress PRO/100+ Management Adapter with Alert On LAN* +		8086 000f  EtherExpress PRO/100 Desktop Adapter +		8086 0010  EtherExpress PRO/100 S Management Adapter +		8086 0011  EtherExpress PRO/100 S Management Adapter +		8086 0012  EtherExpress PRO/100 S Advanced Management Adapter (D) +		8086 0013  EtherExpress PRO/100 S Advanced Management Adapter (E) +		8086 0030  EtherExpress PRO/100  Management Adapter with Alert On LAN* GC +		8086 0031  EtherExpress PRO/100 Desktop Adapter +		8086 0040  EtherExpress PRO/100 S Desktop Adapter +		8086 0041  EtherExpress PRO/100 S Desktop Adapter +		8086 0042  EtherExpress PRO/100 Desktop Adapter +		8086 0050  EtherExpress PRO/100 S Desktop Adapter +		8086 1009  EtherExpress PRO/100+ Server Adapter +		8086 100c  EtherExpress PRO/100+ Server Adapter (PILA8470B) +		8086 1012  EtherExpress PRO/100 S Server Adapter (D) +		8086 1013  EtherExpress PRO/100 S Server Adapter (E) +		8086 1015  EtherExpress PRO/100 S Dual Port Server Adapter +		8086 1017  EtherExpress PRO/100+ Dual Port Server Adapter +		8086 1030  EtherExpress PRO/100+ Management Adapter with Alert On LAN* G Server +		8086 1040  EtherExpress PRO/100 S Server Adapter +		8086 1041  EtherExpress PRO/100 S Server Adapter +		8086 1042  EtherExpress PRO/100 Server Adapter +		8086 1050  EtherExpress PRO/100 S Server Adapter +		8086 1051  EtherExpress PRO/100 Server Adapter +		8086 1052  EtherExpress PRO/100 Server Adapter +		8086 10f0  EtherExpress PRO/100+ Dual Port Adapter +		8086 1229  82557/8/9 [Ethernet Pro 100] +		8086 2009  EtherExpress PRO/100 S Mobile Adapter +		8086 200d  EtherExpress PRO/100 Cardbus +		8086 200e  EtherExpress PRO/100 LAN+V90 Cardbus Modem +		8086 200f  EtherExpress PRO/100 SR Mobile Adapter +		8086 2010  EtherExpress PRO/100 S Mobile Combo Adapter +		8086 2013  EtherExpress PRO/100 SR Mobile Combo Adapter +		8086 2016  EtherExpress PRO/100 S Mobile Adapter +		8086 2017  EtherExpress PRO/100 S Combo Mobile Adapter +		8086 2018  EtherExpress PRO/100 SR Mobile Adapter +		8086 2019  EtherExpress PRO/100 SR Combo Mobile Adapter +		8086 2101  EtherExpress PRO/100 P Mobile Adapter +		8086 2102  EtherExpress PRO/100 SP Mobile Adapter +		8086 2103  EtherExpress PRO/100 SP Mobile Adapter +		8086 2104  EtherExpress PRO/100 SP Mobile Adapter +		8086 2105  EtherExpress PRO/100 SP Mobile Adapter +		8086 2106  EtherExpress PRO/100 P Mobile Adapter +		8086 2107  EtherExpress PRO/100 Network Connection +		8086 2108  EtherExpress PRO/100 Network Connection +		8086 2200  EtherExpress PRO/100 P Mobile Combo Adapter +		8086 2201  EtherExpress PRO/100 P Mobile Combo Adapter +		8086 2202  EtherExpress PRO/100 SP Mobile Combo Adapter +		8086 2203  EtherExpress PRO/100+ MiniPCI +		8086 2204  EtherExpress PRO/100+ MiniPCI +		8086 2205  EtherExpress PRO/100 SP Mobile Combo Adapter +		8086 2206  EtherExpress PRO/100 SP Mobile Combo Adapter +		8086 2207  EtherExpress PRO/100 SP Mobile Combo Adapter +		8086 2208  EtherExpress PRO/100 P Mobile Combo Adapter +		8086 2402  EtherExpress PRO/100+ MiniPCI +		8086 2407  EtherExpress PRO/100+ MiniPCI +		8086 2408  EtherExpress PRO/100+ MiniPCI +		8086 2409  EtherExpress PRO/100+ MiniPCI +		8086 240f  EtherExpress PRO/100+ MiniPCI +		8086 2410  EtherExpress PRO/100+ MiniPCI +		8086 2411  EtherExpress PRO/100+ MiniPCI +		8086 2412  EtherExpress PRO/100+ MiniPCI +		8086 2413  EtherExpress PRO/100+ MiniPCI +		8086 3000  82559 Fast Ethernet LAN on Motherboard +		8086 3001  82559 Fast Ethernet LOM with Basic Alert on LAN* +		8086 3002  82559 Fast Ethernet LOM with Alert on LAN II* +		8086 3006  EtherExpress PRO/100 S Network Connection +		8086 3007  EtherExpress PRO/100 S Network Connection +		8086 3008  EtherExpress PRO/100 Network Connection +		8086 3010  EtherExpress PRO/100 S Network Connection +		8086 3011  EtherExpress PRO/100 S Network Connection +		8086 3012  EtherExpress PRO/100 Network Connection +		8086 301a  S845WD1-E mainboard +		8086 3411  SDS2 Mainboard +	122d  430FX - 82437FX TSC [Triton I] +	122e  82371FB PIIX ISA [Triton I] +	1230  82371FB PIIX IDE [Triton I] +	1231  DSVD Modem +	1234  430MX - 82371MX Mobile PCI I/O IDE Xcelerator (MPIIX) +	1235  430MX - 82437MX Mob. System Ctrlr (MTSC) & 82438MX Data Path (MTDP) +	1237  440FX - 82441FX PMC [Natoma] +		1af4 1100  Qemu virtual machine +	1239  82371FB PIIX IDE Interface +	123b  82380PB PCI to PCI Docking Bridge +	123c  82380AB (MISA) Mobile PCI-to-ISA Bridge +	123d  683053 Programmable Interrupt Device +	123e  82466GX (IHPC) Integrated Hot-Plug Controller (hidden mode) +	123f  82466GX Integrated Hot-Plug Controller (IHPC) +	1240  82752 (752) AGP Graphics Accelerator +	124b  82380FB (MPCI2) Mobile Docking Controller +	1250  430HX - 82439HX TXC [Triton II] +	1360  82806AA PCI64 Hub PCI Bridge +	1361  82806AA PCI64 Hub Controller (HRes) +		8086 1361  82806AA PCI64 Hub Controller (HRes) +		8086 8000  82806AA PCI64 Hub Controller (HRes) +	1460  82870P2 P64H2 Hub PCI Bridge +	1461  82870P2 P64H2 I/OxAPIC +		15d9 3480  P4DP6 +		4c53 1090  Cx9/Vx9 mainboard +	1462  82870P2 P64H2 Hot Plug Controller +	1501  82567V-3 Gigabit Network Connection +	1502  82579LM Gigabit Network Connection +		1028 04a3  Precision M4600 +		8086 357a  Server Board S1200BTS +	1503  82579V Gigabit Network Connection +		1043 849c  P8P67 Deluxe Motherboard +	1507  Ethernet Express Module X520-P2 +	1508  82598EB Gigabit BX Network Connection +	150a  82576NS Gigabit Network Connection +	150b  82598EB 10-Gigabit AT2 Server Adapter +		8086 a10c  82598EB 10-Gigabit AT2 Server Adapter +		8086 a11c  82598EB 10-Gigabit AT2 Server Adapter +		8086 a12c  82598EB 10-Gigabit AT2 Server Adapter +	150c  82583V Gigabit Network Connection +	150d  82576 Gigabit Backplane Connection +		8086 a10c  Gigabit ET Quad Port Mezzanine Card +	150e  82580 Gigabit Network Connection +		103c 1780  NC365T 4-port Ethernet Server Adapter +		8086 12a1  Ethernet Server Adapter I340-T4 +		8086 12a2  Ethernet Server Adapter I340-T4 +	150f  82580 Gigabit Fiber Network Connection +	1510  82580 Gigabit Backplane Connection +	1511  82580 Gigabit SFP Connection +	1514  Ethernet X520 10GbE Dual Port KX4 Mezz +		8086 000b  Ethernet X520 10GbE Dual Port KX4 Mezz +	1515  X540 Ethernet Controller Virtual Function +	1516  82580 Gigabit Network Connection +		8086 12b1  Ethernet Server Adapter I340-T2 +		8086 12b2  Ethernet Server Adapter I340-T2 +	1517  82599ES 10 Gigabit Network Connection +		1137 006a  UCS CNA M61KR-I Intel Converged Network Adapter +	1518  82576NS SerDes Gigabit Network Connection +	151c  82599 10 Gigabit TN Network Connection +		108e 7b13  Dual 10GBASE-T LP +	1520  I350 Ethernet Controller Virtual Function +	1521  I350 Gigabit Network Connection +		1028 0602  Gigabit 2P I350-t LOM +		1028 1f60  Gigabit 4P I350-t rNDC +		1028 1f62  Gigabit 4P X540/I350 rNDC +		1028 ff9a  Gigabit 4P X710/I350 rNDC +		103c 17d1  Ethernet 1Gb 4-port 366FLR Adapter +		103c 2003  Ethernet 1Gb 2-port 367i Adapter +		103c 2226  Ethernet 1Gb 1-port 364i Adapter +		103c 337f  Ethernet 1Gb 2-port 361i Adapter +		103c 3380  Ethernet 1Gb 4-port 366i Adapter +		103c 339e  Ethernet 1Gb 2-port 361T Adapter +		108e 7b16  Quad Port GbE PCIe 2.0 ExpressModule, UTP +		108e 7b18  Quad Port GbE PCIe 2.0 Low Profile Adapter, UTP +		1093 7648  PCIe-8237R Ethernet Adapter +		1093 7649  PCIe-8236 Ethernet Adapter +		1093 76b1  PCIe-8237R-S Ethernet Adapter +		1093 775b  PCIe-8237 Ethernet Adapter +		10a9 802a  UV2-BaseIO dual-port GbE +		17aa 1074  ThinkServer I350-T4 AnyFabric +		8086 0001  Ethernet Server Adapter I350-T4 +		8086 0002  Ethernet Server Adapter I350-T2 +		8086 00a1  Ethernet Server Adapter I350-T4 +		8086 00a2  Ethernet Server Adapter I350-T2 +		8086 5001  Ethernet Server Adapter I350-T4 +		8086 5002  Ethernet Server Adapter I350-T2 +	1522  I350 Gigabit Fiber Network Connection +		108e 7b17  Quad Port GbE PCIe 2.0 ExpressModule, MMF +		108e 7b19  Dual Port GbE PCIe 2.0 Low Profile Adapter, MMF +		8086 0002  Ethernet Server Adapter I350-T2 +		8086 0003  Ethernet Server Adapter I350-F4 +		8086 0004  Ethernet Server Adapter I350-F2 +		8086 0005  Ethernet Server Adapter I350-F1 +		8086 00a2  Ethernet Server Adapter I350-T2 +		8086 00a3  Ethernet Server Adapter I350-F4 +		8086 00a4  Ethernet Server Adapter I350-F2 +	1523  I350 Gigabit Backplane Connection +		1028 0060  Gigabit 2P I350 LOM +		1028 1f9b  Gigabit 4P I350-t bNDC +		103c 1784  Ethernet 1Gb 2-port 361FLB Adapter +		103c 18d1  Ethernet 1Gb 2-port 361FLB Adapter +		103c 1989  Ethernet 1Gb 2-port 363i Adapter +		103c 339f  Ethernet 1Gb 4-port 366M Adapter +		8086 1f52  1GbE 4P I350 Mezz +	1524  I350 Gigabit Connection +	1525  82567V-4 Gigabit Network Connection +	1526  82576 Gigabit Network Connection +		8086 a05c  Gigabit ET2 Quad Port Server Adapter +		8086 a06c  Gigabit ET2 Quad Port Server Adapter +	1527  82580 Gigabit Fiber Network Connection +		8086 0001  Ethernet Server Adapter I340-F4 +		8086 0002  Ethernet Server Adapter I340-F4 +	1528  Ethernet Controller 10-Gigabit X540-AT2 +		1028 1f61  Ethernet 10G 4P X540/I350 rNDC +		103c 192d  561FLR-T 2-port 10Gb Ethernet Adapter +		103c 2004  Ethernet 10Gb 2-port 561i Adapter +		103c 211a  Ethernet 10Gb 2-port 561T Adapter +		108e 7b14  Sun Dual Port 10 GbE PCIe 2.0 ExpressModule, Base-T +		108e 7b15  Sun Dual Port 10 GbE PCIe 2.0 Low Profile Adapter, Base-T +		1137 00bf  Ethernet Converged Network Adapter X540-T2 +		17aa 1073  ThinkServer X540-T2 AnyFabric +		8086 0001  Ethernet Converged Network Adapter X540-T2 +		8086 0002  Ethernet Converged Network Adapter X540-T1 +		8086 001a  Ethernet Converged Network Adapter X540-T2 +		8086 00a2  Ethernet Converged Network Adapter X540-T1 +		8086 1f61  Ethernet 10G 4P X540/I350 rNDC +		8086 5003  Ethernet 10G 2P X540-t Adapter +	1529  82599 10 Gigabit Dual Port Network Connection with FCoE +	152a  82599 10 Gigabit Dual Port Backplane Connection with FCoE +	1533  I210 Gigabit Network Connection +		103c 0003  Ethernet I210-T1 GbE NIC +		1093 7706  Compact Vision System Ethernet Adapter +		10a9 802c  UV300 BaseIO single-port GbE +		10a9 802d  UV3000 BaseIO GbE Network +		17aa 1100  ThinkServer Ethernet Server Adapter +		8086 0001  Ethernet Server Adapter I210-T1 +		8086 0002  Ethernet Server Adapter I210-T1 +	1536  I210 Gigabit Fiber Network Connection +	1537  I210 Gigabit Backplane Connection +	1538  I210 Gigabit Network Connection +	1539  I211 Gigabit Network Connection +	153a  Ethernet Connection I217-LM +		103c 1909  ZBook 15 +		17aa 220e  ThinkPad T440p +	153b  Ethernet Connection I217-V +	1547  DSL3510 Thunderbolt Port [Cactus Ridge] +	1549  DSL3510 Thunderbolt Controller [Cactus Ridge] +	154a  Ethernet Server Adapter X520-4 +		8086 011a  Ethernet Converged Network Adapter X520-4 +		8086 011b  Ethernet Converged Network Adapter X520-4 +		8086 011c  Ethernet Converged Network Adapter X520-4 +	154c  XL710/X710 Virtual Function +	154d  Ethernet 10G 2P X520 Adapter +		8086 7b11  10GbE 2P X520 Adapter +	1557  82599 10 Gigabit Network Connection +		8086 0001  Ethernet OCP Server Adapter X520-1 +	1558  Ethernet Converged Network Adapter X520-Q1 +		8086 011a  Ethernet Converged Network Adapter X520-Q1 +		8086 011b  Ethernet Converged Network Adapter X520-Q1 +	1559  Ethernet Connection I218-V +	155a  Ethernet Connection I218-LM +		17aa 2214  ThinkPad X240 +	155c  Ethernet Server Bypass Adapter +		8086 0001  Ethernet Server Bypass Adapter X540-T2 +	155d  Ethernet Server Bypass Adapter +		8086 0001  Ethernet Server Bypass Adapter X520-SR2 +		8086 0002  Ethernet Server Bypass Adapter X520-LR2 +	1560  Ethernet Controller X540 +	156f  Ethernet Connection I219-LM +	1570  Ethernet Connection I219-V +	1571  XL710/X710 Virtual Function +	1572  Ethernet Controller X710 for 10GbE SFP+ +		1028 1f99  Ethernet 10G 4P X710/I350 rNDC +		17aa 0000  ThinkServer XL710 AnyFabric +		17aa 4001  ThinkServer XL710-4 AnyFabric +		8086 0000  Ethernet Converged Network Adapter X710 +		8086 0001  Ethernet Converged Network Adapter X710-4 +		8086 0002  Ethernet Converged Network Adapter X710-4 +		8086 0004  Ethernet Converged Network Adapter X710-4 +		8086 0005  Ethernet 10G 4P X710 Adapter +		8086 0006  Ethernet 10G 2P X710 Adapter +		8086 0007  Ethernet Converged Network Adapter X710-2 +		8086 0008  Ethernet Converged Network Adapter X710-2 +	157b  I210 Gigabit Network Connection +	157c  I210 Gigabit Backplane Connection +	1580  Ethernet Controller XL710 for 40GbE backplane +	1581  Ethernet Controller X710 for 10GbE backplane +		1028 1f98  Ethernet 10G 4P X710-k bNDC +	1583  Ethernet Controller XL710 for 40GbE QSFP+ +		8086 0000  Ethernet Converged Network Adapter XL710-Q2 +		8086 0001  Ethernet Converged Network Adapter XL710-Q2 +		8086 0002  Ethernet Converged Network Adapter XL710-Q2 +		8086 0003  Ethernet I/O Module XL710-Q2 +	1584  Ethernet Controller XL710 for 40GbE QSFP+ +		8086 0000  Ethernet Converged Network Adapter XL710-Q1 +		8086 0001  Ethernet Converged Network Adapter XL710-Q1 +		8086 0002  Ethernet Converged Network Adapter XL710-Q1 +		8086 0003  Ethernet I/O Module XL710-Q1 +	1585  Ethernet Controller XL710 for 10GbE QSFP+ +	15a0  Ethernet Connection (2) I218-LM +	15a1  Ethernet Connection (2) I218-V +	15a2  Ethernet Connection (3) I218-LM +	15a3  Ethernet Connection (3) I218-V +	15a8  Ethernet Connection X552 Virtual Function +	15aa  Ethernet Connection X552 10 GbE Backplane +	15ab  Ethernet Connection X552 10 GbE Backplane +	15ac  Ethernet Connection X552 10 GbE SFP+ +	15ad  Ethernet Connection X552/X557-AT 10GBASE-T +	15b7  Ethernet Connection (2) I219-LM +	15b8  Ethernet Connection (2) I219-V +	1600  Broadwell-U Host Bridge -OPI +	1601  Broadwell-U PCI Express x16 Controller +	1602  Broadwell-U Integrated Graphics +	1603  Broadwell-U Camarillo Device +	1604  Broadwell-U Host Bridge -OPI +	1605  Broadwell-U PCI Express x8 Controller +	1606  Broadwell-U Integrated Graphics +	1607  Broadwell-U CHAPS Device +	1608  Broadwell-U Host Bridge -OPI +	1609  Broadwell-U x4 PCIe +	160a  Broadwell-U Integrated Graphics +	160b  Broadwell-U Integrated Graphics +	160c  Broadwell-U Audio Controller +	160d  Broadwell-U Integrated Graphics +	160e  Broadwell-U Integrated Graphics +	160f  Broadwell-U SoftSKU +	1610  Broadwell-U Host Bridge - DMI +	1612  Broadwell-U Integrated Graphics +	1614  Broadwell-U Host Bridge - DMI +	1616  Broadwell-U Integrated Graphics +	1618  Broadwell-U Host Bridge - DMI +	161a  Broadwell-U Integrated Graphics +	161b  Broadwell-U Integrated Graphics +	161d  Broadwell-U Integrated Graphics +	161e  Broadwell-U Integrated Graphics +	1622  Broadwell-U Integrated Graphics +	1626  Broadwell-U Integrated Graphics +	162a  Broadwell-U Integrated Graphics +	162b  Broadwell-U Integrated Graphics +	162d  Broadwell-U Integrated Graphics +	162e  Broadwell-U Integrated Graphics +	1632  Broadwell-U Integrated Graphics +	1636  Broadwell-U Integrated Graphics +	163a  Broadwell-U Integrated Graphics +	163b  Broadwell-U Integrated Graphics +	163d  Broadwell-U Integrated Graphics +	163e  Broadwell-U Integrated Graphics +	1900  Sky Lake Host Bridge/DRAM Registers +	1901  Sky Lake PCIe Controller (x16) +	1904  Sky Lake Host Bridge/DRAM Registers +	1905  Sky Lake PCIe Controller (x8) +	1908  Sky Lake Host Bridge/DRAM Registers +	1909  Sky Lake PCIe Controller (x4) +	190c  Sky Lake Host Bridge/DRAM Registers +	190f  Sky Lake Host Bridge/DRAM Registers +	1910  Sky Lake Host Bridge/DRAM Registers +	1911  Sky Lake Gaussian Mixture Model +	1912  Sky Lake Integrated Graphics +	1916  Sky Lake Integrated Graphics +	1918  Sky Lake Host Bridge/DRAM Registers +	1919  Sky Lake Imaging Unit +	191e  Sky Lake Integrated Graphics +	191f  Sky Lake Host Bridge/DRAM Registers +	1926  Sky Lake Integrated Graphics +	1932  Sky Lake Integrated Graphics +	193b  Sky Lake Integrated Graphics +	1960  80960RP (i960RP) Microprocessor +		101e 0431  MegaRAID 431 RAID Controller +		101e 0438  MegaRAID 438 Ultra2 LVD RAID Controller +		101e 0466  MegaRAID 466 Express Plus RAID Controller +		101e 0467  MegaRAID 467 Enterprise 1500 RAID Controller +		101e 0490  MegaRAID 490 Express 300 RAID Controller +		101e 0762  MegaRAID 762 Express RAID Controller +		101e 09a0  PowerEdge Expandable RAID Controller 2/SC +		1028 0467  PowerEdge Expandable RAID Controller 2/DC +		1028 1111  PowerEdge Expandable RAID Controller 2/SC +		103c 03a2  MegaRAID +		103c 10c6  MegaRAID 438, NetRAID-3Si +		103c 10c7  MegaRAID T5, Integrated NetRAID +		103c 10cc  MegaRAID, Integrated NetRAID +		103c 10cd  NetRAID-1Si +		105a 0000  SuperTrak +		105a 2168  SuperTrak Pro +		105a 5168  SuperTrak66/100 +		1111 1111  MegaRAID 466, PowerEdge Expandable RAID Controller 2/SC +		1111 1112  PowerEdge Expandable RAID Controller 2/SC +		113c 03a2  MegaRAID +		e4bf 1010  CG1-RADIO +		e4bf 1020  CU2-QUARTET +		e4bf 1040  CU1-CHORUS +		e4bf 3100  CX1-BAND +	1962  80960RM (i960RM) Microprocessor +		105a 0000  SuperTrak SX6000 I2O CPU +	1a21  82840 840 [Carmel] Chipset Host Bridge (Hub A) +	1a23  82840 840 [Carmel] Chipset AGP Bridge +	1a24  82840 840 [Carmel] Chipset PCI Bridge (Hub B) +	1a30  82845 845 [Brookdale] Chipset Host Bridge +		1028 010e  Optiplex GX240 +		15d9 3280  Supermicro P4SBE Mainboard +	1a31  82845 845 [Brookdale] Chipset AGP Bridge +	1a38  5000 Series Chipset DMA Engine +		15d9 8680  X7DVL-E-O motherboard +		8086 3476  Intel S5000PSLSATA Server Board +	1a48  82597EX 10GbE Ethernet Controller +		8086 a01f  PRO/10GbE SR Server Adapter +		8086 a11f  PRO/10GbE SR Server Adapter +	1b48  82597EX 10GbE Ethernet Controller +		8086 a01f  PRO/10GbE LR Server Adapter +		8086 a11f  PRO/10GbE LR Server Adapter +	1c00  6 Series/C200 Series Chipset Family 4 port SATA IDE Controller +	1c01  6 Series/C200 Series Chipset Family 4 port SATA IDE Controller +	1c02  6 Series/C200 Series Chipset Family SATA AHCI Controller +		1028 04aa  XPS 8300 +		1043 844d  P8 series motherboard +		8086 7270  Server Board S1200BTS +	1c03  6 Series/C200 Series Chipset Family 6 port SATA AHCI Controller +		1028 04a3  Precision M4600 +		1028 04b2  Vostro 3350 +		1028 04da  Vostro 3750 +		8086 7270  Apple MacBookPro8,2 [Core i7, 15", 2011] +	1c04  6 Series/C200 Series Chipset Family SATA RAID Controller +		103c 3118  Smart Array B110i SATA RAID Controller +	1c05  6 Series/C200 Series Chipset Family SATA RAID Controller +	1c08  6 Series/C200 Series Chipset Family 2 port SATA IDE Controller +	1c09  6 Series/C200 Series Chipset Family 2 port SATA IDE Controller +	1c10  6 Series/C200 Series Chipset Family PCI Express Root Port 1 +		1028 04aa  XPS 8300 +		1028 04da  Vostro 3750 +		1043 844d  P8 series motherboard +		8086 7270  Server Board S1200BTS / Apple MacBook Pro 8,1/8,2 +	1c12  6 Series/C200 Series Chipset Family PCI Express Root Port 2 +		1028 04aa  XPS 8300 +		8086 7270  Apple MacBookPro8,2 [Core i7, 15", 2011] +	1c14  6 Series/C200 Series Chipset Family PCI Express Root Port 3 +		1028 04da  Vostro 3750 +		8086 7270  Apple MacBookPro8,2 [Core i7, 15", 2011] +	1c16  6 Series/C200 Series Chipset Family PCI Express Root Port 4 +		1028 04aa  XPS 8300 +	1c18  6 Series/C200 Series Chipset Family PCI Express Root Port 5 +		1028 04da  Vostro 3750 +		8086 7270  Server Board S1200BTS +	1c1a  6 Series/C200 Series Chipset Family PCI Express Root Port 6 +		1028 04da  Vostro 3750 +		1043 844d  P8 series motherboard +	1c1c  6 Series/C200 Series Chipset Family PCI Express Root Port 7 +	1c1e  6 Series/C200 Series Chipset Family PCI Express Root Port 8 +		1043 844d  P8 series motherboard +	1c20  6 Series/C200 Series Chipset Family High Definition Audio Controller +		1028 0490  Alienware M17x R3 +		1028 04a3  Precision M4600 +		1028 04aa  XPS 8300 +		1028 04b2  Vostro 3350 +		1028 04da  Vostro 3750 +		1043 8418  P8P67 Deluxe Motherboard +		1043 841b  P8H67 Series Motherboard +# Realtek ALC888 audio codec +		8086 2008  DQ67SW board +		8086 7270  Apple MacBookPro8,2 [Core i7, 15", 2011] +	1c22  6 Series/C200 Series Chipset Family SMBus Controller +		1028 04a3  Precision M4600 +		1028 04aa  XPS 8300 +		1028 04b2  Vostro 3350 +		1028 04da  Vostro 3750 +		1043 844d  P8 series motherboard +		8086 7270  Server Board S1200BTS / Apple MacBook Pro 8,1/8,2 +	1c24  6 Series/C200 Series Chipset Family Thermal Management Controller +	1c25  6 Series/C200 Series Chipset Family DMI to PCI Bridge +	1c26  6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 +		1028 04a3  Precision M4600 +		1028 04aa  XPS 8300 +		1028 04b2  Vostro 3350 +		1028 04da  Vostro 3750 +		1043 844d  P8 series motherboard +		8086 7270  Server Board S1200BTS / Apple MacBook Pro 8,1/8,2 +	1c27  6 Series/C200 Series Chipset Family USB Universal Host Controller #1 +		8086 7270  Apple MacBookPro8,2 [Core i7, 15", 2011] +	1c2c  6 Series/C200 Series Chipset Family USB Universal Host Controller #5 +		8086 7270  Apple MacBookPro8,2 [Core i7, 15", 2011] +	1c2d  6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2 +		1028 04a3  Precision M4600 +		1028 04aa  XPS 8300 +		1028 04b2  Vostro 3350 +		1028 04da  Vostro 3750 +		1043 844d  P8 series motherboard +		8086 7270  Server Board S1200BTS / Apple MacBook Pro 8,1/8,2 +	1c33  6 Series/C200 Series Chipset Family LAN Controller +	1c35  6 Series/C200 Series Chipset Family VECI Controller +	1c3a  6 Series/C200 Series Chipset Family MEI Controller #1 +		1028 04a3  Precision M4600 +		1028 04aa  XPS 8300 +		1028 04b2  Vostro 3350 +		1028 04da  Vostro 3750 +		1043 844d  P8 series motherboard +		8086 7270  Apple MacBookPro8,2 [Core i7, 15", 2011] +	1c3b  6 Series/C200 Series Chipset Family MEI Controller #2 +	1c3c  6 Series/C200 Series Chipset Family IDE-r Controller +	1c3d  6 Series/C200 Series Chipset Family KT Controller +	1c40  6 Series/C200 Series Chipset Family LPC Controller +	1c41  Mobile SFF 6 Series Chipset Family LPC Controller +	1c42  6 Series/C200 Series Chipset Family LPC Controller +	1c43  Mobile 6 Series Chipset Family LPC Controller +	1c44  Z68 Express Chipset Family LPC Controller +	1c45  6 Series/C200 Series Chipset Family LPC Controller +	1c46  P67 Express Chipset Family LPC Controller +		1043 844d  P8P67 Deluxe Motherboard +	1c47  UM67 Express Chipset Family LPC Controller +	1c48  6 Series/C200 Series Chipset Family LPC Controller +	1c49  HM65 Express Chipset Family LPC Controller +		8086 7270  Apple MacBookPro8,2 [Core i7, 15", 2011] +	1c4a  H67 Express Chipset Family LPC Controller +		1028 04aa  XPS 8300 +		1043 844d  P8H67 Series Motherboard +	1c4b  HM67 Express Chipset Family LPC Controller +		1028 04b2  Vostro 3350 +		1028 04da  Vostro 3750 +	1c4c  Q65 Express Chipset Family LPC Controller +	1c4d  QS67 Express Chipset Family LPC Controller +	1c4e  Q67 Express Chipset Family LPC Controller +	1c4f  QM67 Express Chipset Family LPC Controller +		1028 04a3  Precision M4600 +	1c50  B65 Express Chipset Family LPC Controller +	1c51  6 Series/C200 Series Chipset Family LPC Controller +	1c52  C202 Chipset Family LPC Controller +		8086 7270  Server Board S1200BTS +	1c53  6 Series/C200 Series Chipset Family LPC Controller +	1c54  C204 Chipset Family LPC Controller +	1c55  6 Series/C200 Series Chipset Family LPC Controller +	1c56  C206 Chipset Family LPC Controller +		1043 844d  P8B WS Motherboard +	1c57  6 Series/C200 Series Chipset Family LPC Controller +	1c58  Upgraded B65 Express Chipset Family LPC Controller +	1c59  Upgraded HM67 Express Chipset Family LPC Controller +	1c5a  Upgraded Q67 Express Chipset Family LPC Controller +	1c5b  6 Series/C200 Series Chipset Family LPC Controller +	1c5c  H61 Express Chipset Family LPC Controller +	1c5d  6 Series/C200 Series Chipset Family LPC Controller +	1c5e  6 Series/C200 Series Chipset Family LPC Controller +	1c5f  6 Series/C200 Series Chipset Family LPC Controller +	1d00  C600/X79 series chipset 4-Port SATA IDE Controller +	1d02  C600/X79 series chipset 6-Port SATA AHCI Controller +	1d04  C600/X79 series chipset SATA RAID Controller +	1d06  C600/X79 series chipset SATA Premium RAID Controller +	1d08  C600/X79 series chipset 2-Port SATA IDE Controller +	1d10  C600/X79 series chipset PCI Express Root Port 1 +	1d11  C600/X79 series chipset PCI Express Root Port 1 +	1d12  C600/X79 series chipset PCI Express Root Port 2 +	1d13  C600/X79 series chipset PCI Express Root Port 2 +	1d14  C600/X79 series chipset PCI Express Root Port 3 +	1d15  C600/X79 series chipset PCI Express Root Port 3 +	1d16  C600/X79 series chipset PCI Express Root Port 4 +	1d17  C600/X79 series chipset PCI Express Root Port 4 +	1d18  C600/X79 series chipset PCI Express Root Port 5 +	1d19  C600/X79 series chipset PCI Express Root Port 5 +	1d1a  C600/X79 series chipset PCI Express Root Port 6 +	1d1b  C600/X79 series chipset PCI Express Root Port 6 +	1d1c  C600/X79 series chipset PCI Express Root Port 7 +	1d1d  C600/X79 series chipset PCI Express Root Port 7 +	1d1e  C600/X79 series chipset PCI Express Root Port 8 +	1d1f  C600/X79 series chipset PCI Express Root Port 8 +	1d20  C600/X79 series chipset High Definition Audio Controller +	1d22  C600/X79 series chipset SMBus Host Controller +	1d24  C600/X79 series chipset Thermal Management Controller +	1d25  C600/X79 series chipset DMI to PCI Bridge +	1d26  C600/X79 series chipset USB2 Enhanced Host Controller #1 +	1d2d  C600/X79 series chipset USB2 Enhanced Host Controller #2 +	1d33  C600/X79 series chipset LAN Controller +	1d35  C600/X79 series chipset VECI Controller +	1d3a  C600/X79 series chipset MEI Controller #1 +	1d3b  C600/X79 series chipset MEI Controller #2 +	1d3c  C600/X79 series chipset IDE-r Controller +	1d3d  C600/X79 series chipset KT Controller +	1d3e  C600/X79 series chipset PCI Express Virtual Root Port +	1d3f  C608/C606/X79 series chipset PCI Express Virtual Switch Port +	1d40  C600/X79 series chipset LPC Controller +	1d41  C600/X79 series chipset LPC Controller +	1d50  C608 chipset Dual 4-Port SATA/SAS Storage Control Unit +	1d54  C600/X79 series chipset Dual 4-Port SATA/SAS Storage Control Unit +	1d55  C600/X79 series chipset 4-Port SATA/SAS Storage Control Unit +	1d58  C606 chipset Dual 4-Port SATA/SAS Storage Control Unit +	1d59  C604/X79 series chipset 4-Port SATA/SAS Storage Control Unit +	1d5a  C600/X79 series chipset Dual 4-Port SATA Storage Control Unit +	1d5b  C602 chipset 4-Port SATA Storage Control Unit +	1d5c  C600/X79 series chipset Dual 4-Port SATA/SAS Storage Control Unit +	1d5d  C600/X79 series chipset 4-Port SATA/SAS Storage Control Unit +	1d5e  C600/X79 series chipset Dual 4-Port SATA Storage Control Unit +	1d5f  C600/X79 series chipset 4-Port SATA Storage Control Unit +	1d60  C608 chipset Dual 4-Port SATA/SAS Storage Control Unit +	1d64  C600/X79 series chipset Dual 4-Port SATA/SAS Storage Control Unit +	1d65  C600/X79 series chipset 4-Port SATA/SAS Storage Control Unit +	1d68  C606 chipset Dual 4-Port SATA/SAS Storage Control Unit +	1d69  C604/X79 series chipset 4-Port SATA/SAS Storage Control Unit +	1d6a  C600/X79 series chipset Dual 4-Port SATA Storage Control Unit +	1d6b  C602 chipset 4-Port SATA Storage Control Unit +	1d6c  C600/X79 series chipset Dual 4-Port SATA/SAS Storage Control Unit +	1d6d  C600/X79 series chipset 4-Port SATA/SAS Storage Control Unit +	1d6e  C600/X79 series chipset Dual 4-Port SATA Storage Control Unit +	1d6f  C600/X79 series chipset 4-Port SATA Storage Control Unit +	1d70  C600/X79 series chipset SMBus Controller 0 +	1d71  C608/C606/X79 series chipset SMBus Controller 1 +	1d72  C608 chipset SMBus Controller 2 +	1d74  C608/C606/X79 series chipset PCI Express Upstream Port +	1d76  C600/X79 series chipset Multi-Function Glue +	1e00  7 Series/C210 Series Chipset Family 4-port SATA Controller [IDE mode] +	1e01  7 Series Chipset Family 4-port SATA Controller [IDE mode] +	1e02  7 Series/C210 Series Chipset Family 6-port SATA Controller [AHCI mode] +		1043 84ca  P8 series motherboard +		1849 1e02  Motherboard +	1e03  7 Series Chipset Family 6-port SATA Controller [AHCI mode] +		1043 1477  N56VZ +		1043 1517  Zenbook Prime UX31A +	1e04  7 Series/C210 Series Chipset Family SATA Controller [RAID mode] +	1e05  7 Series Chipset SATA Controller [RAID mode] +	1e06  7 Series/C210 Series Chipset Family SATA Controller [RAID mode] +	1e07  7 Series Chipset Family SATA Controller [RAID mode] +	1e08  7 Series/C210 Series Chipset Family 2-port SATA Controller [IDE mode] +	1e09  7 Series Chipset Family 2-port SATA Controller [IDE mode] +	1e0e  7 Series/C210 Series Chipset Family SATA Controller [RAID mode] +	1e10  7 Series/C210 Series Chipset Family PCI Express Root Port 1 +		1043 1477  N56VZ +		1043 1517  Zenbook Prime UX31A +		1043 84ca  P8H77-I Motherboard +		1849 1e10  Motherboard +	1e12  7 Series/C210 Series Chipset Family PCI Express Root Port 2 +		1043 1477  N56VZ +		1043 1517  Zenbook Prime UX31A +	1e14  7 Series/C210 Series Chipset Family PCI Express Root Port 3 +	1e16  7 Series/C210 Series Chipset Family PCI Express Root Port 4 +		1043 1477  N56VZ +		1849 1618  Z77 Extreme4 motherboard +	1e18  7 Series/C210 Series Chipset Family PCI Express Root Port 5 +		1043 84ca  P8H77-I Motherboard +		1849 1e18  Motherboard +	1e1a  7 Series/C210 Series Chipset Family PCI Express Root Port 6 +		1849 1e1a  Motherboard +	1e1c  7 Series/C210 Series Chipset Family PCI Express Root Port 7 +	1e1e  7 Series/C210 Series Chipset Family PCI Express Root Port 8 +		1849 1e1e  Motherboard +	1e20  7 Series/C210 Series Chipset Family High Definition Audio Controller +		1043 1477  N56VZ +		1043 1517  Zenbook Prime UX31A +		1043 8415  P8H77-I Motherboard +		1043 8445  ASUS P8Z77-V LX Motherboard +		1849 1898  Z77 Extreme4 motherboard +	1e22  7 Series/C210 Series Chipset Family SMBus Controller +		1043 1477  N56VZ +		1043 1517  Zenbook Prime UX31A +		1043 84ca  P8 series motherboard +		1849 1e22  Motherboard +	1e24  7 Series/C210 Series Chipset Family Thermal Management Controller +		1043 1517  Zenbook Prime UX31A +	1e25  7 Series/C210 Series Chipset Family DMI to PCI Bridge +	1e26  7 Series/C210 Series Chipset Family USB Enhanced Host Controller #1 +		1043 1477  N56VZ +		1043 1517  Zenbook Prime UX31A +		1043 84ca  P8 series motherboard +		1849 1e26  Motherboard +	1e2d  7 Series/C210 Series Chipset Family USB Enhanced Host Controller #2 +		1043 1477  N56VZ +		1043 1517  Zenbook Prime UX31A +		1043 84ca  P8 series motherboard +		1849 1e2d  Motherboard +	1e31  7 Series/C210 Series Chipset Family USB xHCI Host Controller +		103c 17ab  ProBook 6570b +		1043 1477  N56VZ +		1043 1517  Zenbook Prime UX31A +		1043 84ca  P8 series motherboard +		1849 1e31  Motherboard +	1e33  7 Series/C210 Series Chipset Family LAN Controller +	1e3a  7 Series/C210 Series Chipset Family MEI Controller #1 +		1043 1477  N56VZ +		1043 1517  Zenbook Prime UX31A +		1043 84ca  P8 series motherboard +		1849 1e3a  Motherboard +	1e3b  7 Series/C210 Series Chipset Family MEI Controller #2 +	1e3c  7 Series/C210 Series Chipset Family IDE-r Controller +	1e3d  7 Series/C210 Series Chipset Family KT Controller +	1e41  7 Series Chipset Family LPC Controller +	1e42  7 Series Chipset Family LPC Controller +	1e43  7 Series Chipset Family LPC Controller +	1e44  Z77 Express Chipset LPC Controller +		1043 84ca  P8 series motherboard +		1849 1e44  Motherboard +	1e45  7 Series Chipset Family LPC Controller +	1e46  Z75 Express Chipset LPC Controller +	1e47  Q77 Express Chipset LPC Controller +	1e48  Q75 Express Chipset LPC Controller +	1e49  B75 Express Chipset LPC Controller +	1e4a  H77 Express Chipset LPC Controller +		1043 84ca  P8H77-I Motherboard +	1e4b  7 Series Chipset Family LPC Controller +	1e4c  7 Series Chipset Family LPC Controller +	1e4d  7 Series Chipset Family LPC Controller +	1e4e  7 Series Chipset Family LPC Controller +	1e4f  7 Series Chipset Family LPC Controller +	1e50  7 Series Chipset Family LPC Controller +	1e51  7 Series Chipset Family LPC Controller +	1e52  7 Series Chipset Family LPC Controller +	1e53  C216 Series Chipset LPC Controller +	1e54  7 Series Chipset Family LPC Controller +	1e55  QM77 Express Chipset LPC Controller +	1e56  QS77 Express Chipset LPC Controller +	1e57  HM77 Express Chipset LPC Controller +	1e58  UM77 Express Chipset LPC Controller +	1e59  HM76 Express Chipset LPC Controller +		1043 1477  N56VZ +		1043 1517  Zenbook Prime UX31A +	1e5a  7 Series Chipset Family LPC Controller +	1e5b  UM77 Express Chipset LPC Controller +	1e5c  7 Series Chipset Family LPC Controller +	1e5d  HM75 Express Chipset LPC Controller +	1e5e  7 Series Chipset Family LPC Controller +	1e5f  7 Series Chipset Family LPC Controller +	1f00  Atom processor C2000 SoC Transaction Router +	1f01  Atom processor C2000 SoC Transaction Router +	1f02  Atom processor C2000 SoC Transaction Router +	1f03  Atom processor C2000 SoC Transaction Router +	1f04  Atom processor C2000 SoC Transaction Router +	1f05  Atom processor C2000 SoC Transaction Router +	1f06  Atom processor C2000 SoC Transaction Router +	1f07  Atom processor C2000 SoC Transaction Router +	1f08  Atom processor C2000 SoC Transaction Router +	1f09  Atom processor C2000 SoC Transaction Router +	1f0a  Atom processor C2000 SoC Transaction Router +	1f0b  Atom processor C2000 SoC Transaction Router +	1f0c  Atom processor C2000 SoC Transaction Router +	1f0d  Atom processor C2000 SoC Transaction Router +	1f0e  Atom processor C2000 SoC Transaction Router +	1f0f  Atom processor C2000 SoC Transaction Router +	1f10  Atom processor C2000 PCIe Root Port 1 +	1f11  Atom processor C2000 PCIe Root Port 2 +	1f12  Atom processor C2000 PCIe Root Port 3 +	1f13  Atom processor C2000 PCIe Root Port 4 +	1f14  Atom processor C2000 RAS +	1f15  Atom processor C2000 SMBus 2.0 +	1f16  Atom processor C2000 RCEC +	1f18  Atom processor C2000 nCPM +	1f19  Atom processor C2000 nCPM +	1f20  Atom processor C2000 4-Port IDE SATA2 Controller +	1f21  Atom processor C2000 4-Port IDE SATA2 Controller +	1f22  Atom processor C2000 AHCI SATA2 Controller +	1f23  Atom processor C2000 AHCI SATA2 Controller +	1f24  Atom processor C2000 RAID SATA2 Controller +	1f25  Atom processor C2000 RAID SATA2 Controller +	1f26  Atom processor C2000 RAID SATA2 Controller +	1f27  Atom processor C2000 RAID SATA2 Controller +	1f2c  Atom processor C2000 USB Enhanced Host Controller +	1f2e  Atom processor C2000 RAID SATA2 Controller +	1f2f  Atom processor C2000 RAID SATA2 Controller +	1f30  Atom processor C2000 2-Port IDE SATA3 Controller +	1f31  Atom processor C2000 2-Port IDE SATA3 Controller +	1f32  Atom processor C2000 AHCI SATA3 Controller +	1f33  Atom processor C2000 AHCI SATA3 Controller +	1f34  Atom processor C2000 RAID SATA3 Controller +	1f35  Atom processor C2000 RAID SATA3 Controller +	1f36  Atom processor C2000 RAID SATA3 Controller +	1f37  Atom processor C2000 RAID SATA3 Controller +	1f38  Atom processor C2000 PCU +	1f39  Atom processor C2000 PCU +	1f3a  Atom processor C2000 PCU +	1f3b  Atom processor C2000 PCU +	1f3c  Atom processor C2000 PCU SMBus +	1f3e  Atom processor C2000 RAID SATA3 Controller +	1f3f  Atom processor C2000 RAID SATA3 Controller +	1f40  Ethernet Connection I354 1.0 GbE Backplane +		1028 05f1  Ethernet Connection I354 1.0 GbE Backplane +	1f41  Ethernet Connection I354 +	1f42  Atom processor C2000 GbE +	1f44  Atom processor C2000 GbE Virtual Function +	1f45  Ethernet Connection I354 2.5 GbE Backplane +	2014  Sky Lake-E Ubox Registers +	2015  Sky Lake-E Ubox Registers +	2016  Sky Lake-E Ubox Registers +	2018  Sky Lake-E M2PCI Registers +	201a  Sky Lake-E Non-Transparent Bridge Registers +	201c  Sky Lake-E Non-Transparent Bridge Registers +	2021  Sky Lake-E CBDMA Registers +	2024  Sky Lake-E MM/Vt-d Configuration Registers +	2030  Sky Lake-E PCI Express Root Port 1A +	2031  Sky Lake-E PCI Express Root Port 1B +	2032  Sky Lake-E PCI Express Root Port 1C +	2033  Sky Lake-E PCI Express Root Port 1D +	2035  Sky Lake-E RAS Configuration Registers +	204c  Sky Lake-E M3KTI Registers +	204d  Sky Lake-E M3KTI Registers +	204e  Sky Lake-E M3KTI Registers +	2054  Sky Lake-E CHA Registers +	2055  Sky Lake-E CHA Registers +	2056  Sky Lake-E CHA Registers +	2057  Sky Lake-E CHA Registers +	2068  Sky Lake-E DDRIO Registers +	2069  Sky Lake-E DDRIO Registers +	206a  Sky Lake-E IOxAPIC Configuration Registers +	206e  Sky Lake-E DDRIO Registers +	206f  Sky Lake-E DDRIO Registers +	2078  Sky Lake-E PCU Registers +	207a  Sky Lake-E PCU Registers +	2080  Sky Lake-E PCU Registers +	2081  Sky Lake-E PCU Registers +	2082  Sky Lake-E PCU Registers +	2083  Sky Lake-E PCU Registers +	2084  Sky Lake-E PCU Registers +	2085  Sky Lake-E PCU Registers +	2086  Sky Lake-E PCU Registers +	208d  Sky Lake-E CHA Registers +	208e  Sky Lake-E CHA Registers +	2250  Xeon Phi coprocessor 5100 series +	225c  Xeon Phi coprocessor SE10/7120 series +	225d  Xeon Phi coprocessor 3120 series  +	225e  Xeon Phi coprocessor 31S1 +	2310  DH89xxCC LPC Controller +	2323  DH89xxCC 4 Port SATA AHCI Controller +	2330  DH89xxCC SMBus Controller +	2331  DH89xxCC Chap Counter +	2332  DH89xxCC Thermal Subsystem +	2334  DH89xxCC USB2 Enhanced Host Controller #1 +	2335  DH89xxCC USB2 Enhanced Host Controller #1 +	2342  DH89xxCC PCI Express Root Port #1 +	2343  DH89xxCC PCI Express Root Port #1 +	2344  DH89xxCC PCI Express Root Port #2 +	2345  DH89xxCC PCI Express Root Port #2 +	2346  DH89xxCC PCI Express Root Port #3 +	2347  DH89xxCC PCI Express Root Port #3 +	2348  DH89xxCC PCI Express Root Port #4 +	2349  DH89xxCC PCI Express Root Port #4 +	2360  DH89xxCC Watchdog Timer +	2364  DH89xxCC MEI 0 +	2365  DH89xxCC MEI 1 +	2390  Coleto Creek LPC Controller +	23a1  Coleto Creek 2-Port SATA Controller [IDE Mode] +	23a3  Coleto Creek 4-Port SATA Controller [AHCI Mode] +	23a6  Coleto Creek 2-Port SATA Controller [IDE Mode] +	23b0  Coleto Creek SMBus Controller +	23b1  Coleto Creek CHAP Counter +	23b2  Coleto Creek Thermal Management Controller +	23b4  Coleto Creek USB2 Enhanced Host Controller #1 +	23b5  Coleto Creek USB2 Enhanced Host Controller #1 +	23c2  Coleto Creek PCI Express Root Port #1 +	23c3  Coleto Creek PCI Express Root Port #1 +	23c4  Coleto Creek PCI Express Root Port #2 +	23c5  Coleto Creek PCI Express Root Port #2 +	23c6  Coleto Creek PCI Express Root Port #3 +	23c7  Coleto Creek PCI Express Root Port #3 +	23c8  Coleto Creek PCI Express Root Port #4 +	23c9  Coleto Creek PCI Express Root Port #4 +	23e0  Coleto Creek Watchdog Timer +	23e4  Coleto Creek MEI Controller #1 +	23e5  Coleto Creek MEI Controller #2 +	2410  82801AA ISA Bridge (LPC) +	2411  82801AA IDE Controller +	2412  82801AA USB Controller +	2413  82801AA SMBus Controller +	2415  82801AA AC'97 Audio Controller +		1028 0095  Precision Workstation 220 Integrated Digital Audio +		1028 00b4  OptiPlex GX110 +		110a 0051  Activy 2xx +		11d4 0040  SoundMAX Integrated Digital Audio +		11d4 0048  SoundMAX Integrated Digital Audio +		11d4 5340  SoundMAX Integrated Digital Audio +		1734 1025  Activy 3xx +		1af4 1100  QEMU Virtual Machine +	2416  82801AA AC'97 Modem Controller +	2418  82801AA PCI Bridge +	2420  82801AB ISA Bridge (LPC) +	2421  82801AB IDE Controller +	2422  82801AB USB Controller +	2423  82801AB SMBus Controller +	2425  82801AB AC'97 Audio Controller +		11d4 0040  SoundMAX Integrated Digital Audio +		11d4 0048  SoundMAX Integrated Digital Audio +	2426  82801AB AC'97 Modem Controller +	2428  82801AB PCI Bridge +	2440  82801BA ISA Bridge (LPC) +		8086 5744  S845WD1-E +	2442  82801BA/BAM USB Controller #1 +		1014 01c6  Netvista A40/A40p +		1025 1016  Travelmate 612 TX +		1028 00c7  Dimension 8100 +		1028 00d8  Precision 530 +		1028 010e  Optiplex GX240 +		103c 126f  e-pc 40 +		1043 8027  TUSL2-C Mainboard +		104d 80df  Vaio PCG-FX403 +		147b 0507  TH7II-RAID +		8086 4532  D815EEA2 mainboard +		8086 4557  D815EGEW Mainboard +		8086 5744  S845WD1-E mainboard +	2443  82801BA/BAM SMBus Controller +		1014 01c6  Netvista A40/A40p +		1025 1016  Travelmate 612 TX +		1028 00c7  Dimension 8100 +		1028 00d8  Precision 530 +		1028 010e  Optiplex GX240 +		103c 126f  e-pc 40 +		1043 8027  TUSL2-C Mainboard +		104d 80df  Vaio PCG-FX403 +		147b 0507  TH7II-RAID +		15d9 3280  Supermicro P4SBE Mainboard +		8086 4532  D815EEA2 mainboard +		8086 4557  D815EGEW Mainboard +		8086 5744  S845WD1-E mainboard +	2444  82801BA/BAM USB Controller #1 +		1025 1016  Travelmate 612 TX +		1028 00c7  Dimension 8100 +		1028 00d8  Precision 530 +		1028 010e  Optiplex GX240 +		103c 126f  e-pc 40 +		1043 8027  TUSL2-C Mainboard +		104d 80df  Vaio PCG-FX403 +		147b 0507  TH7II-RAID +		8086 4532  D815EEA2 mainboard +		8086 5744  S845WD1-E mainboard +	2445  82801BA/BAM AC'97 Audio Controller +		0e11 000b  Compaq Deskpro EN Audio +		0e11 0088  Evo D500 +		1014 01c6  Netvista A40/A40p +		1025 1016  Travelmate 612 TX +		1028 00d8  Precision 530 +		103c 126f  e-pc 40 +		104d 80df  Vaio PCG-FX403 +		1462 3370  STAC9721 AC +		147b 0507  TH7II-RAID +		8086 4557  D815EGEW Mainboard +	2446  82801BA/BAM AC'97 Modem Controller +		1025 1016  Travelmate 612 TX +		104d 80df  Vaio PCG-FX403 +	2448  82801 Mobile PCI Bridge +		1028 040b  Latitude E6510 +		103c 0934  HP Compaq nw8240 Mobile Workstation +		103c 099c  NX6110/NC6120 +		103c 309f  Compaq nx9420 Notebook +		103c 30a3  Compaq nw8440 +		103c 30c1  Compaq 6910p +		104d 902d  VAIO VGN-NR120E +		105b 0d7c  D270S/D250S Motherboard +		1071 8209  Medion MIM 2240 Notebook PC [MD98100] +		144d c00c  P30 notebook +		144d c06a  R730 Laptop +		144d c072  Notebook N150P +		1458 5000  GA-D525TUD +		1734 1055  Amilo M1420 +		17aa 20ae  ThinkPad T61/R61 +		17c0 10d2  Medion Akoya E7214 Notebook PC [MD98410] +		17c0 4083  Medion WIM 2210 Notebook PC [MD96850] +		8086 544b  Desktop Board D425KT +		e4bf cc47  CCG-RUMBA +	2449  82801BA/BAM/CA/CAM Ethernet Controller +		0e11 0012  EtherExpress PRO/100 VM +		0e11 0091  EtherExpress PRO/100 VE +		1014 01ce  EtherExpress PRO/100 VE +		1014 01dc  EtherExpress PRO/100 VE +		1014 01eb  EtherExpress PRO/100 VE +		1014 01ec  EtherExpress PRO/100 VE +		1014 0202  EtherExpress PRO/100 VE +		1014 0205  EtherExpress PRO/100 VE +		1014 0217  EtherExpress PRO/100 VE +		1014 0234  EtherExpress PRO/100 VE +		1014 023d  EtherExpress PRO/100 VE +		1014 0244  EtherExpress PRO/100 VE +		1014 0245  EtherExpress PRO/100 VE +		1014 0265  PRO/100 VE Desktop Connection +		1014 0267  PRO/100 VE Desktop Connection +		1014 026a  PRO/100 VE Desktop Connection +		109f 315d  EtherExpress PRO/100 VE +		109f 3181  EtherExpress PRO/100 VE +		1179 ff01  PRO/100 VE Network Connection +		1186 7801  EtherExpress PRO/100 VE +		144d 2602  HomePNA 1M CNR +		1af4 1100  QEMU Virtual Machine +		8086 3010  EtherExpress PRO/100 VE +		8086 3011  EtherExpress PRO/100 VM +		8086 3012  82562EH based Phoneline +		8086 3013  EtherExpress PRO/100 VE +		8086 3014  EtherExpress PRO/100 VM +		8086 3015  82562EH based Phoneline +		8086 3016  EtherExpress PRO/100 P Mobile Combo +		8086 3017  EtherExpress PRO/100 P Mobile +		8086 3018  EtherExpress PRO/100 +	244a  82801BAM IDE U100 Controller +		1025 1016  Travelmate 612TX +		104d 80df  Vaio PCG-FX403 +	244b  82801BA IDE U100 Controller +		1014 01c6  Netvista A40/A40p +		1028 00c7  Dimension 8100 +		1028 00d8  Precision 530 +		1028 010e  Optiplex GX240 +		103c 126f  e-pc 40 +		1043 8027  TUSL2-C Mainboard +		147b 0507  TH7II-RAID +		15d9 3280  Supermicro P4SBE Mainboard +		8086 4532  D815EEA2 mainboard +		8086 4557  D815EGEW Mainboard +		8086 5744  S845WD1-E mainboard +	244c  82801BAM ISA Bridge (LPC) +	244e  82801 PCI Bridge +		1014 0267  NetVista A30p +		1028 020d  Inspiron 530 +		1028 0211  Optiplex 755 +		1028 02da  OptiPlex 980 +		103c 2a3b  Pavilion A1512X +		103c 2a6f  Asus IPIBL-LB Motherboard +		103c 31fe  ProLiant DL140 G3 +		103c 330b  ProLiant ML150 G6 Server +# same ID possibly also on other ASUS boards +		1043 8277  P5K PRO Motherboard +		1043 844d  P8 series motherboard +		1458 5000  Motherboard +		1462 7418  Wind PC MS-7418 +		15d9 060d  C7SIM-Q Motherboard +		15d9 9680  X7DBN Motherboard +		1775 11cc  CC11/CL11 +		8086 7270  Server Board S1200BTS +	2450  82801E ISA Bridge (LPC) +	2452  82801E USB Controller +	2453  82801E SMBus Controller +	2459  82801E Ethernet Controller 0 +	245b  82801E IDE U100 Controller +	245d  82801E Ethernet Controller 1 +	245e  82801E PCI Bridge +	2480  82801CA LPC Interface Controller +	2482  82801CA/CAM USB Controller #1 +		0e11 0030  Evo N600c +		1014 0220  ThinkPad A/T/X Series +		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP +		15d9 3480  P4DP6 +		8086 1958  vpr Matrix 170B4 +		8086 3424  SE7501HG2 Mainboard +		8086 4541  Latitude C640 +	2483  82801CA/CAM SMBus Controller +		1014 0220  ThinkPad A/T/X Series +		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP +		15d9 3480  P4DP6 +		8086 1958  vpr Matrix 170B4 +	2484  82801CA/CAM USB Controller #2 +		0e11 0030  Evo N600c +		1014 0220  ThinkPad A/T/X Series +		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP +		15d9 3480  P4DP6 +		8086 1958  vpr Matrix 170B4 +	2485  82801CA/CAM AC'97 Audio Controller +		1013 5959  Crystal WMD Audio Codec +		1014 0222  ThinkPad A30/A30p/T23 +		1014 0508  ThinkPad T30 +		1014 051c  ThinkPad A/T/X Series +		1043 1583  L3C (SPDIF) +		1043 1623  L2B (no SPDIF) +		1043 1643  L3F +		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP +		144d c006  vpr Matrix 170B4 +	2486  82801CA/CAM AC'97 Modem Controller +		1014 0223  ThinkPad A/T/X Series +		1014 0503  ThinkPad R31 +		1014 051a  ThinkPad A/T/X Series +		101f 1025  620 Series +		1043 1496  PCtel HSP56 MR +		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP +		134d 4c21  Dell Inspiron 2100 internal modem +		144d 2115  vpr Matrix 170B4 internal modem +		14f1 5421  MD56ORD V.92 MDC Modem +	2487  82801CA/CAM USB Controller #3 +		0e11 0030  Evo N600c +		1014 0220  ThinkPad A/T/X Series +		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP +		15d9 3480  P4DP6 +		8086 1958  vpr Matrix 170B4 +	248a  82801CAM IDE U100 Controller +		0e11 0030  Evo N600c +		1014 0220  ThinkPad A/T/X Series +		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP +		8086 1958  vpr Matrix 170B4 +		8086 4541  Latitude C640 +	248b  82801CA Ultra ATA Storage Controller +		15d9 3480  P4DP6 +	248c  82801CAM ISA Bridge (LPC) +	24c0  82801DB/DBL (ICH4/ICH4-L) LPC Interface Bridge +		1014 0267  NetVista A30p +		1462 5800  845PE Max (MS-6580) +	24c1  82801DBL (ICH4-L) IDE Controller +	24c2  82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 +		1014 0267  NetVista A30p +		1014 052d  ThinkPad +		1025 005a  TravelMate 290 +		1028 0126  Optiplex GX260 +		1028 0163  Latitude D505 +		1028 018d  Inspiron 700m/710m +		1028 0196  Inspiron 5160 +		103c 088c  NC8000 laptop +		103c 0890  NC6000 laptop +		103c 08b0  tc1100 tablet +		1043 8089  P4B533 +		1071 8160  MIM2000 +		114a 0582  PC8 onboard USB 1.x +		144d c005  X10 Laptop +		144d c00c  P30/P35 notebook +		1462 5800  845PE Max (MS-6580) +		1509 2990  Averatec 5110H laptop +		1734 1004  D1451 Mainboard (SCENIC N300, i845GV) +		1734 1055  Amilo M1420 +		4c53 1090  Cx9 / Vx9 mainboard +		8086 24c2  Latitude X300 +		8086 4541  Latitude D400/D500 +		e4bf 0cc9  CC9-SAMBA +		e4bf 0cd2  CD2-BEBOP +	24c3  82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller +		1014 0267  NetVista A30p +		1014 052d  ThinkPad +		1025 005a  TravelMate 290 +		1028 0126  Optiplex GX260 +		1028 014f  Latitude X300 +		1028 018d  Inspiron 700m/710m +		103c 088c  NC8000 laptop +		103c 0890  NC6000 laptop +		103c 08b0  tc1100 tablet +		1071 8160  MIM2000 +		114a 0582  PC8 onboard SMbus +		144d c005  X10 Laptop +		144d c00c  P30/P35 notebook +		1458 24c2  GA-8PE667 Ultra +		1462 5800  845PE Max (MS-6580) +		1734 1004  D1451 Mainboard (SCENIC N300, i845GV) +		1734 1055  Amilo M1420 +		4c53 1090  Cx9 / Vx9 mainboard +		e4bf 0cc9  CC9-SAMBA +		e4bf 0cd2  CD2-BEBOP +	24c4  82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 +		1014 0267  NetVista A30p +		1014 052d  ThinkPad +		1025 005a  TravelMate 290 +		1028 0126  Optiplex GX260 +		1028 0163  Latitude D505 +		1028 018d  Inspiron 700m/710m +		1028 0196  Inspiron 5160 +		103c 088c  NC8000 laptop +		103c 0890  NC6000 laptop +		103c 08b0  tc1100 tablet +		1043 8089  P4B533 +		1071 8160  MIM2000 +		144d c00c  P30/P35 notebook +		1462 5800  845PE Max (MS-6580) +		1509 2990  Averatec 5110H +		1734 1004  D1451 Mainboard (SCENIC N300, i845GV) +		4c53 1090  Cx9 / Vx9 mainboard +		8086 24c2  Latitude X300 +		8086 4541  Latitude D400/D500 +		e4bf 0cc9  CC9-SAMBA +		e4bf 0cd2  CD2-BEBOP +	24c5  82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller +		0e11 00b8  Analog Devices Inc. codec [SoundMAX] +		1014 0267  NetVista A30p +		1014 0537  ThinkPad T4x Series +		1014 055f  Thinkpad R50e model 1634 +		1025 005a  TravelMate 290 +		1028 0139  Latitude D400 +		1028 014f  Latitude X300 +		1028 0152  Latitude D500 +		1028 0163  Latitude D505 +		1028 018d  Inspiron 700m/710m [SigmaTel STAC9750,51] +		1028 0196  Inspiron 5160 +		103c 088c  NC8000 laptop +		103c 0890  NC6000 laptop +		103c 08b0  tc1100 tablet +		1043 1713  M2400N/M6800N laptop +		1043 80b0  P4B533 +		1071 8160  MIM2000 +		1179 0201  Toshiba Tecra M1 +		144d c005  X10 Laptop +		144d c00c  P30/P35 notebook +		1458 a002  GA-8PE667 Ultra +		1462 5800  845PE Max (MS-6580) +		1734 1005  D1451 (SCENIC N300, i845GV) Sigmatel STAC9750T +		1734 1055  Amilo M1420 +		8086 24c5  Dell Dimension 2400 +	24c6  82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller +		1014 0524  ThinkPad T4x Series +		1014 0525  ThinkPad +		1014 0559  ThinkPad R50e +		1025 003c  Aspire 2001WLCi (Compal CL50 motherboard) implementation +		1025 005a  TravelMate 290 +		1028 0196  Inspiron 5160 +		103c 088c  NC8000 laptop +		103c 0890  NC6000 laptop +		103c 08b0  tc1100 tablet +		1043 1716  M2400N laptop +		1043 1826  M6800N +		1071 8160  MIM2000 +		134d 4c21  Latitude D500 +		144d 2115  X10 Laptop +		144d c00c  P30/P35 notebook +# Conexant HSF Softmodem (CXT22) +		14f1 5422  D480 MDC V.9x Modem +	24c7  82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 +		1014 0267  NetVista A30p +		1014 052d  ThinkPad +		1025 005a  TravelMate 290 +		1028 0126  Optiplex GX260 +		1028 0163  Latitude D505 +		1028 018d  Inspiron 700m/710m +		1028 0196  Inspiron 5160 +		103c 088c  NC8000 laptop +		103c 0890  NC6000 laptop +		103c 08b0  tc1100 tablet +		1043 8089  P4B533 +		1071 8160  MIM2000 +		144d c00c  P30/P35 notebook +		1462 5800  845PE Max (MS-6580) +		1509 2990  Averatec 5110H +		1734 1004  D1451 Mainboard (SCENIC N300, i845GV) +		4c53 1090  Cx9 / Vx9 mainboard +		8086 24c2  Latitude X300 +		8086 4541  Latitude D400/D500 +		e4bf 0cc9  CC9-SAMBA +		e4bf 0cd2  CD2-BEBOP +	24ca  82801DBM (ICH4-M) IDE Controller +		1014 052d  ThinkPad +		1025 005a  TravelMate 290 +		1028 014f  Latitude X300 +		1028 0163  Latitude D505 +		1028 018d  Inspiron 700m/710m +		1028 0196  Inspiron 5160 +		103c 088c  NC8000 laptop +		103c 0890  NC6000 laptop +		103c 08b0  tc1100 tablet +		1071 8160  MIM2000 +		144d c005  X10 Laptop +		144d c00c  P30/P35 notebook +		1734 1055  Amilo M1420 +		8086 4541  Latitude D400/D500 +	24cb  82801DB (ICH4) IDE Controller +		1014 0267  NetVista A30p +		1028 0126  Optiplex GX260 +		1043 8089  P4B533 +		114a 0582  PC8 onboard IDE +		1458 24c2  GA-8PE667 Ultra +		1462 5800  845PE Max (MS-6580) +		1734 1004  D1451 Mainboard (SCENIC N300, i845GV) +		4c53 1090  Cx9 / Vx9 mainboard +		e4bf 0cc9  CC9-SAMBA +		e4bf 0cd2  CD2-BEBOP +	24cc  82801DBM (ICH4-M) LPC Interface Bridge +		144d c00c  P30 notebook +		1734 1055  Amilo M1420 +	24cd  82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller +		1014 0267  NetVista A30p +		1014 052e  ThinkPad +		1025 005a  TravelMate 290 +		1028 011d  Latitude D600 +		1028 0126  Optiplex GX260 +		1028 0139  Latitude D400 +		1028 0152  Latitude D500 +		1028 0163  Latitude D505 +		1028 018d  Inspiron 700m/710m +		1028 0196  Inspiron 5160 +		103c 088c  NC8000 laptop +		103c 0890  NC6000 laptop +		103c 08b0  tc1100 tablet +		1043 8089  P4B533 +		1071 8160  MIM2000 +		114a 0582  PC8 onboard USB 2.0 +		1179 ff00  Satellite 2430 +		144d c005  X10 Laptop +		144d c00c  P30/P35 notebook +		1462 3981  845PE Max (MS-6580) +		1509 1968  Averatec 5110H +		1734 1004  D1451 Mainboard (SCENIC N300, i845GV) +		1734 1055  Amilo M1420 +		1af4 1100  QEMU Virtual Machine +		4c53 1090  Cx9 / Vx9 mainboard +		8086 24c2  Latitude X300 +		e4bf 0cc9  CC9-SAMBA +		e4bf 0cd2  CD2-BEBOP +	24d0  82801EB/ER (ICH5/ICH5R) LPC Interface Bridge +	24d1  82801EB (ICH5) SATA Controller +		1028 0168  Precision Workstation 670 Mainboard +		1028 0169  Precision 470 +		1028 019a  PowerEdge SC1425 +		103c 12bc  d530 CMT (DG746A) +		103c 3208  ProLiant DL140 G2 +		1043 80a6  P4P800 series motherboard +		1458 24d1  GA-8IPE1000 Pro2 motherboard (865PE) +		1462 7280  865PE Neo2 (MS-6728) +		1462 7650  Hetis 865GV-E (MS-7065) +		1565 5200  P4TSV Motherboard (865G) +		15d9 4580  P4SCE Mainboard +		8086 3427  S875WP1-E mainboard +		8086 4246  Desktop Board D865GBF +		8086 4c43  Desktop Board D865GLC +		8086 524c  D865PERL mainboard +	24d2  82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1 +		1014 02dd  eServer xSeries server mainboard +		1014 02ed  eServer xSeries server mainboard +		1028 0168  Precision Workstation 670 Mainboard +		1028 0169  Precision 470 +		1028 016c  PowerEdge 1850 onboard UHCI +		1028 016d  PowerEdge 2850 onboard UHCI +		1028 0170  PowerEdge 6850 onboard UHCI +		1028 0183  PowerEdge 1800 +		1028 019a  PowerEdge SC1425 +		103c 006a  NX9500 +		103c 12bc  d530 CMT (DG746A) +		103c 3208  ProLiant DL140 G2 +		1043 80a6  P4P800/P5P800 series motherboard +		1458 24d2  GA-8IPE1000/8KNXP motherboard +		1462 7280  865PE Neo2 (MS-6728) +		1565 3101  P4TSV Motherboard (865G) +		15d9 4580  P4SCE Mainboard +		1734 101c  PRIMERGY RX/TX series onboard UHCI +		8086 3427  S875WP1-E mainboard +		8086 4246  Desktop Board D865GBF +		8086 4c43  Desktop Board D865GLC +		8086 524c  D865PERL mainboard +	24d3  82801EB/ER (ICH5/ICH5R) SMBus Controller +		1014 02dd  eServer xSeries server mainboard +		1014 02ed  eServer xSeries server mainboard +		1028 0156  Precision 360 +		1028 0168  Precision Workstation 670 Mainboard +		1028 0169  Precision 470 +		103c 12bc  d330 uT +		103c 3208  ProLiant DL140 G2 +		1043 80a6  P4P800/P5P800 series motherboard +		1458 24d2  GA-8IPE1000 Pro2 motherboard (865PE) +		1462 7280  865PE Neo2 (MS-6728) +		1462 7650  Hetis 865GV-E (MS-7065) +		1565 3101  P4TSV Motherboard (865G) +		15d9 4580  P4SCE Mainboard +		1734 101c  PRIMERGY RX/TX S2 series SMBus +		8086 3427  S875WP1-E mainboard +		8086 4246  Desktop Board D865GBF +		8086 4c43  Desktop Board D865GLC +		8086 524c  D865PERL mainboard +	24d4  82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2 +		1014 02dd  eServer xSeries server mainboard +		1014 02ed  eServer xSeries server mainboard +		1028 0168  Precision Workstation 670 Mainboard +		1028 0169  Precision 470 +		1028 016c  PowerEdge 1850 onboard UHCI +		1028 016d  PowerEdge 2850 onboard UHCI +		1028 0170  PowerEdge 6850 onboard UHCI +		1028 0183  PowerEdge 1800 +		1028 019a  PowerEdge SC1425 +		103c 006a  NX9500 +		103c 12bc  d530 CMT (DG746A) +		103c 3208  ProLiant DL140 G2 +		1043 80a6  P4P800/P5P800 series motherboard +		1458 24d2  GA-8IPE1000 Pro2 motherboard (865PE) +		1462 7280  865PE Neo2 (MS-6728) +		1462 7650  Hetis 865GV-E (MS-7065) +		1565 3101  P4TSV Motherboard (865G) +		15d9 4580  P4SCE Mainboard +		1734 101c  PRIMERGY RX/TX S2 series onboard UHCI +		8086 3427  S875WP1-E mainboard +		8086 4246  Desktop Board D865GBF +		8086 4c43  Desktop Board D865GLC +		8086 524c  D865PERL mainboard +	24d5  82801EB/ER (ICH5/ICH5R) AC'97 Audio Controller +		100a 147b  Abit IS7-E motherboard +		1028 0168  Precision Workstation 670 Mainboard +		1028 0169  Precision 470 +		103c 006a  NX9500 +		103c 12bc  d330 uT +		1043 80f3  P4P800 series motherboard +		1043 810f  P5P800-MX Mainboard +		1458 a002  GA-8IPE1000/8KNXP motherboard +		1462 0080  865PE Neo2-V (MS-6788) Mainboard +		1462 7280  865PE Neo2 (MS-6728) +		1462 7650  Hetis 865GV-E (MS-7065) +		8086 a000  D865PERL mainboard +		8086 e000  D865PERL mainboard +		8086 e001  Desktop Board D865GBF +		8086 e002  SoundMax Intergrated Digital Audio +	24d6  82801EB/ER (ICH5/ICH5R) AC'97 Modem Controller +		103c 006a  NX9500 +	24d7  82801EB/ER (ICH5/ICH5R) USB UHCI Controller #3 +		1014 02ed  xSeries server mainboard +		1028 0168  Precision Workstation 670 Mainboard +		1028 0169  Precision 470 +		1028 016c  PowerEdge 1850 onboard UHCI +		1028 016d  PowerEdge 2850 onboard UHCI +		1028 0170  PowerEdge 6850 onboard UHCI +		1028 0183  PowerEdge 1800 +		103c 006a  NX9500 +		103c 12bc  d530 CMT (DG746A) +		1043 80a6  P4P800/P5P800 series motherboard +		1458 24d2  GA-8IPE1000 Pro2 motherboard (865PE) +		1462 7280  865PE Neo2 (MS-6728) +		1462 7650  Hetis 865GV-E (MS-7065) +		1565 3101  P4TSV Motherboard (865G) +		15d9 4580  P4SCE Mainboard +		1734 101c  PRIMERGY RX/TX S2 series onboard UHCI +		8086 3427  S875WP1-E mainboard +		8086 4246  Desktop Board D865GBF +		8086 4c43  Desktop Board D865GLC +		8086 524c  D865PERL mainboard +	24db  82801EB/ER (ICH5/ICH5R) IDE Controller +		1014 02dd  eServer xSeries server mainboard +		1014 02ed  eServer xSeries server mainboard +		1028 0168  Precision Workstation 670 Mainboard +		1028 0169  Precision 470 +		1028 016c  PowerEdge 1850 IDE Controller +		1028 016d  PowerEdge 2850 IDE Controller +		1028 0170  PowerEdge 6850 IDE Controller +		1028 019a  PowerEdge SC1425 +		103c 006a  NX9500 +		103c 12bc  d530 CMT (DG746A) +		1043 80a6  P4P800/P5P800 series motherboard +		1458 24d2  GA-8IPE1000 Pro2 motherboard (865PE) +		1462 7280  865PE Neo2 (MS-6728) +		1462 7580  MSI 875P +		1462 7650  Hetis 865GV-E (MS-7065) +		1565 3101  P4TSV Motherboard (865G) +		15d9 4580  P4SCE Mainboard +		1734 101c  PRIMERGY RX/TX S2 series onboard IDE +		8086 24db  P4C800 Mainboard +		8086 3427  S875WP1-E mainboard +		8086 4246  Desktop Board D865GBF +		8086 4c43  Desktop Board D865GLC +		8086 524c  D865PERL mainboard +	24dc  82801EB (ICH5) LPC Interface Bridge +	24dd  82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller +		1014 02dd  eServer xSeries server mainboard +		1014 02ed  eServer xSeries server mainboard +		1028 0168  Precision Workstation 670 Mainboard +		1028 0169  Precision 470 +		1028 016c  PowerEdge 1850 onboard EHCI +		1028 016d  PowerEdge 2850 onboard EHCI +		1028 0170  PowerEdge 6850 onboard EHCI +		1028 0183  PowerEdge 1800 +		1028 019a  PowerEdge SC1425 +		103c 006a  NX9500 +		103c 12bc  d530 CMT (DG746A) +		103c 3208  ProLiant DL140 G2 +		1043 80a6  P4P800/P5P800 series motherboard +		1458 5006  GA-8IPE1000 Pro2 motherboard (865PE) +		1462 7280  865PE Neo2 (MS-6728) +		1462 7650  Hetis 865GV-E (MS-7065) +		8086 3427  S875WP1-E mainboard +		8086 4246  Desktop Board D865GBF +		8086 4c43  Desktop Board D865GLC +		8086 524c  D865PERL mainboard +	24de  82801EB/ER (ICH5/ICH5R) USB UHCI Controller #4 +		1014 02ed  xSeries server mainboard +		1028 0168  Precision Workstation 670 Mainboard +		1028 0169  Precision 470 +		1043 80a6  P4P800/P5P800 series motherboard +		1458 24d2  GA-8IPE1000 Pro2 motherboard (865PE) +		1462 7280  865PE Neo2 (MS-6728) +		1462 7650  Hetis 865GV-E (MS-7065) +		1565 3101  P4TSV Motherboard (865G) +		15d9 4580  P4SCE Mainboard +		1734 101c  PRIMERGY RX/TX S2 series onboard UHCI +		8086 3427  S875WP1-E mainboard +		8086 4246  Desktop Board D865GBF +		8086 4c43  Desktop Board D865GLC +		8086 524c  D865PERL mainboard +	24df  82801ER (ICH5R) SATA Controller +		1028 0168  Precision Workstation 670 Mainboard +	24f3  Wireless 8260 +# Snow Field Peak AC +		8086 0010  Dual Band Wireless-AC 8260 +	24f4  Wireless 8260 +# Snow Field Peak AC +		8086 0030  Dual Band Wireless-AC 8260 +	2500  82820 820 (Camino) Chipset Host Bridge (MCH) +		1028 0095  Precision Workstation 220 Chipset +		1043 801c  P3C-2000 system chipset +	2501  82820 820 (Camino) Chipset Host Bridge (MCH) +		1043 801c  P3C-2000 system chipset +	250b  82820 820 (Camino) Chipset Host Bridge +	250f  82820 820 (Camino) Chipset AGP Bridge +	2520  82805AA MTH Memory Translator Hub +	2521  82804AA MRH-S Memory Repeater Hub for SDRAM +	2530  82850 850 (Tehama) Chipset Host Bridge (MCH) +		1028 00c7  Dimension 8100 +		147b 0507  TH7II-RAID +	2531  82860 860 (Wombat) Chipset Host Bridge (MCH) +		1028 00d8  Precision 530 +	2532  82850 850 (Tehama) Chipset AGP Bridge +	2533  82860 860 (Wombat) Chipset AGP Bridge +	2534  82860 860 (Wombat) Chipset PCI Bridge +	2540  E7500 Memory Controller Hub +		15d9 3480  P4DP6 +	2541  E7500/E7501 Host RASUM Controller +		15d9 3480  P4DP6 +		4c53 1090  Cx9 / Vx9 mainboard +		8086 3424  SE7501HG2 Mainboard +	2543  E7500/E7501 Hub Interface B PCI-to-PCI Bridge +	2544  E7500/E7501 Hub Interface B RASUM Controller +		4c53 1090  Cx9 / Vx9 mainboard +	2545  E7500/E7501 Hub Interface C PCI-to-PCI Bridge +	2546  E7500/E7501 Hub Interface C RASUM Controller +	2547  E7500/E7501 Hub Interface D PCI-to-PCI Bridge +	2548  E7500/E7501 Hub Interface D RASUM Controller +	254c  E7501 Memory Controller Hub +		4c53 1090  Cx9 / Vx9 mainboard +		8086 3424  SE7501HG2 Mainboard +	2550  E7505 Memory Controller Hub +	2551  E7505/E7205 Series RAS Controller +	2552  E7505/E7205 PCI-to-AGP Bridge +	2553  E7505 Hub Interface B PCI-to-PCI Bridge +	2554  E7505 Hub Interface B PCI-to-PCI Bridge RAS Controller +	255d  E7205 Memory Controller Hub +	2560  82845G/GL[Brookdale-G]/GE/PE DRAM Controller/Host-Hub Interface +		1028 0126  Optiplex GX260 +		1458 2560  GA-8PE667 Ultra +		1462 5800  845PE Max (MS-6580) +	2561  82845G/GL[Brookdale-G]/GE/PE Host-to-AGP Bridge +	2562  82845G/GL[Brookdale-G]/GE Chipset Integrated Graphics Device +		0e11 00b9  Evo D510 SFF +		1014 0267  NetVista A30p +		1734 1003  D1521 Mainboard (Fujitsu-Siemens) +		1734 1004  D1451 Mainboard (SCENIC N300, i845GV) +	2570  82865G/PE/P DRAM Controller/Host-Hub Interface +		103c 006a  NX9500 +		103c 12bc  d330 uT +		1043 80f2  P4P800/P5P800 series motherboard +		1458 2570  GA-8IPE1000 Pro2 motherboard (865PE) +	2571  82865G/PE/P AGP Bridge +	2572  82865G Integrated Graphics Controller +		1028 019d  Dimension 3000 +		103c 12bc  D530 sff(dc578av) +		1043 80a5  P5P800-MX Mainboard +		1462 7650  Hetis 865GV-E (MS-7065) +		1734 101b  Fujitsu-Siemens Scenic E300 i865GV +		8086 4246  Desktop Board D865GBF +		8086 4c43  Desktop Board D865GLC +	2573  82865G/PE/P PCI to CSA Bridge +	2576  82865G/PE/P Processor to I/O Memory Interface +	2578  82875P/E7210 Memory Controller Hub +		1458 2578  GA-8KNXP motherboard (875P) +		1462 7580  MS-6758 (875P Neo) +		15d9 4580  P4SCE Motherboard +	2579  82875P Processor to AGP Controller +	257b  82875P/E7210 Processor to PCI to CSA Bridge +	257e  82875P/E7210 Processor to I/O Memory Interface +	2580  82915G/P/GV/GL/PL/910GL Memory Controller Hub +		1458 2580  GA-8I915ME-G Mainboard +		1462 7028  915P/G Neo2 +		1734 105b  Scenic W620 +	2581  82915G/P/GV/GL/PL/910GL PCI Express Root Port +	2582  82915G/GV/910GL Integrated Graphics Controller +		1028 1079  Optiplex GX280 +		103c 3006  DC7100 SFF(DX878AV) +		1043 2582  P5GD1-VW Mainboard +		1458 2582  GA-8I915ME-G Mainboard +		1734 105b  Scenic W620 +		1849 2582  ASRock P4Dual-915GL +	2584  82925X/XE Memory Controller Hub +		1028 0177  Dimension 8400 +	2585  82925X/XE PCI Express Root Port +	2588  E7220/E7221 Memory Controller Hub +	2589  E7220/E7221 PCI Express Root Port +	258a  E7221 Integrated Graphics Controller +	2590  Mobile 915GM/PM/GMS/910GML Express Processor to DRAM Controller +		1014 0575  ThinkPad Z60t +		1028 0182  Dell Latitude C610 +		103c 0934  Compaq nw8240/nx8220 +		103c 099c  NX6110/NC6120 +		104d 81b7  Vaio VGN-S3XP +		a304 81b7  Vaio VGN-S3XP +		e4bf 0ccd  CCD-CALYPSO +		e4bf 0cd3  CD3-JIVE +		e4bf 58b1  XB1 +	2591  Mobile 915GM/PM Express PCI Express Root Port +		103c 0934  HP Compaq nw8240 Mobile Workstation +	2592  Mobile 915GM/GMS/910GML Express Graphics Controller +		103c 099c  NX6110/NC6120 +		103c 308a  NC6220 +		1043 1881  GMA 900 915GM Integrated Graphics +		e4bf 0ccd  CCD-CALYPSO +		e4bf 0cd3  CD3-JIVE +		e4bf 58b1  XB1 +	25a1  6300ESB LPC Interface Controller +	25a2  6300ESB PATA Storage Controller +		1734 1073  Primergy Econel 200 D2020 mainboard +		1775 10d0  V5D Single Board Computer IDE +		1775 1100  CR11/VR11 Single Board Computer +		1775 ce90  CE9 +		4c53 10b0  CL9 mainboard +		4c53 10e0  PSL09 PrPMC +	25a3  6300ESB SATA Storage Controller +		1734 1073  Primergy Econel 200 D2020 mainboard +		1775 1100  CR11/VR11 Single Board Computer +		1775 ce90  CE9 +		4c53 10b0  CL9 mainboard +		4c53 10d0  Telum ASLP10 Processor AMC +		4c53 10e0  PSL09 PrPMC +	25a4  6300ESB SMBus Controller +		1734 1073  Primergy Econel 200 D2020 mainboard +		1775 10d0  V5D Single Board Computer +		1775 1100  CR11/VR11 Single Board Computer +		1775 ce90  CE9 +		4c53 10b0  CL9 mainboard +		4c53 10d0  Telum ASLP10 Processor AMC +		4c53 10e0  PSL09 PrPMC +	25a6  6300ESB AC'97 Audio Controller +		1775 1100  CR11/VR11 Single Board Computer +		1775 ce90  CE9 +		4c53 10b0  CL9 mainboard +	25a7  6300ESB AC'97 Modem Controller +	25a9  6300ESB USB Universal Host Controller +		1734 1073  Primergy Econel 200 D2020 mainboard +		1775 10d0  V5D Single Board Computer USB +		1775 1100  CR11/VR11 Single Board Computer +		1775 ce90  CE9 +		4c53 10b0  CL9 mainboard +		4c53 10d0  Telum ASLP10 Processor AMC +		4c53 10e0  PSL09 PrPMC +	25aa  6300ESB USB Universal Host Controller +		1734 1073  Primergy Econel 200 D2020 mainboard +		1775 1100  CR11/VR11 Single Board Computer +		1775 ce90  CE9 +		4c53 10b0  CL9 mainboard +		4c53 10d0  Telum ASLP10 Processor AMC +		4c53 10e0  PSL09 PrPMC +	25ab  6300ESB Watchdog Timer +		1734 1073  Primergy Econel 200 D2020 mainboard +		1775 10d0  V5D Single Board Computer +		1775 1100  CR11/VR11 Single Board Computer +		1775 ce90  CE9 +		1af4 1100  QEMU Virtual Machine +		4c53 10b0  CL9 mainboard +		4c53 10d0  Telum ASLP10 Processor AMC +		4c53 10e0  PSL09 PrPMC +	25ac  6300ESB I/O Advanced Programmable Interrupt Controller +		1734 1073  Primergy Econel 200 D2020 mainboard +		1775 10d0  V5D Single Board Computer +		1775 1100  CR11/VR11 Single Board Computer +		1775 ce90  CE9 +		4c53 10b0  CL9 mainboard +		4c53 10d0  Telum ASLP10 Processor AMC +		4c53 10e0  PSL09 PrPMC +	25ad  6300ESB USB2 Enhanced Host Controller +		1734 1073  Primergy Econel 200 D2020 mainboard +		1775 10d0  V5D Single Board Computer USB 2.0 +		1775 1100  CR11/VR11 Single Board Computer +		1775 ce90  CE9 +		4c53 10b0  CL9 mainboard +		4c53 10d0  Telum ASLP10 Processor AMC +		4c53 10e0  PSL09 PrPMC +	25ae  6300ESB 64-bit PCI-X Bridge +	25b0  6300ESB SATA RAID Controller +		1775 1100  CR11/VR11 Single Board Computer +		4c53 10d0  Telum ASLP10 Processor AMC +		4c53 10e0  PSL09 PrPMC +	25c0  5000X Chipset Memory Controller Hub +	25d0  5000Z Chipset Memory Controller Hub +	25d4  5000V Chipset Memory Controller Hub +		15d9 8680  X7DVL-E-O motherboard +	25d8  5000P Chipset Memory Controller Hub +		15d9 9680  X7DBN Motherboard +		8086 3476  S5000PSLSATA Server Board +	25e2  5000 Series Chipset PCI Express x4 Port 2 +	25e3  5000 Series Chipset PCI Express x4 Port 3 +	25e4  5000 Series Chipset PCI Express x4 Port 4 +	25e5  5000 Series Chipset PCI Express x4 Port 5 +	25e6  5000 Series Chipset PCI Express x4 Port 6 +	25e7  5000 Series Chipset PCI Express x4 Port 7 +	25f0  5000 Series Chipset FSB Registers +		1028 01bb  PowerEdge 1955 FSB Registers +		103c 31fd  ProLiant DL140 G3 +		15d9 8680  X7DVL-E-O motherboard +		15d9 9680  X7DBN Motherboard +		8086 3476  S5000PSLSATA Server Board +	25f1  5000 Series Chipset Reserved Registers +		103c 31fd  ProLiant DL140 G3 +		15d9 8680  X7DVL-E-O motherboard +		15d9 9680  X7DBN Motherboard +		8086 3476  S5000PSLSATA Server Board +	25f3  5000 Series Chipset Reserved Registers +		103c 31fd  ProLiant DL140 G3 +		15d9 8680  X7DVL-E-O motherboard +		15d9 9680  X7DBN Motherboard +		8086 3476  S5000PSLSATA Server Board +	25f5  5000 Series Chipset FBD Registers +		103c 31fd  ProLiant DL140 G3 +		15d9 8680  X7DVL-E-O motherboard +		15d9 9680  X7DBN Motherboard +		8086 3476  S5000PSLSATA Server Board +	25f6  5000 Series Chipset FBD Registers +		103c 31fd  ProLiant DL140 G3 +		15d9 8680  X7DVL-E-O motherboard +		15d9 9680  X7DBN Motherboard +		8086 3476  S5000PSLSATA Server Board +	25f7  5000 Series Chipset PCI Express x8 Port 2-3 +	25f8  5000 Series Chipset PCI Express x8 Port 4-5 +	25f9  5000 Series Chipset PCI Express x8 Port 6-7 +	25fa  5000X Chipset PCI Express x16 Port 4-7 +	2600  E8500/E8501 Hub Interface 1.5 +		1028 0170  PowerEdge 6850 Hub Interface +	2601  E8500/E8501 PCI Express x4 Port D +	2602  E8500/E8501 PCI Express x4 Port C0 +	2603  E8500/E8501 PCI Express x4 Port C1 +	2604  E8500/E8501 PCI Express x4 Port B0 +	2605  E8500/E8501 PCI Express x4 Port B1 +	2606  E8500/E8501 PCI Express x4 Port A0 +	2607  E8500/E8501 PCI Express x4 Port A1 +	2608  E8500/E8501 PCI Express x8 Port C +	2609  E8500/E8501 PCI Express x8 Port B +	260a  E8500/E8501 PCI Express x8 Port A +	260c  E8500/E8501 IMI Registers +	2610  E8500/E8501 FSB Registers +	2611  E8500/E8501 Address Mapping Registers +	2612  E8500/E8501 RAS Registers +	2613  E8500/E8501 Reserved Registers +	2614  E8500/E8501 Reserved Registers +	2615  E8500/E8501 Miscellaneous Registers +	2617  E8500/E8501 Reserved Registers +	2618  E8500/E8501 Reserved Registers +	2619  E8500/E8501 Reserved Registers +	261a  E8500/E8501 Reserved Registers +	261b  E8500/E8501 Reserved Registers +	261c  E8500/E8501 Reserved Registers +	261d  E8500/E8501 Reserved Registers +	261e  E8500/E8501 Reserved Registers +	2620  E8500/E8501 eXternal Memory Bridge +		1028 0170  PowerEdge 6850 Memory Bridge +	2621  E8500/E8501 XMB Miscellaneous Registers +		1028 0170  PowerEdge 6850 XMB Registers +	2622  E8500/E8501 XMB Memory Interleaving Registers +		1028 0170  PowerEdge 6850 Memory Interleaving Registers +	2623  E8500/E8501 XMB DDR Initialization and Calibration +		1028 0170  PowerEdge 6850 DDR Initialization and Calibration +	2624  E8500/E8501 XMB Reserved Registers +		1028 0170  PowerEdge 6850 Reserved Registers +	2625  E8500/E8501 XMB Reserved Registers +		1028 0170  PowerEdge 6850 Reserved Registers +	2626  E8500/E8501 XMB Reserved Registers +		1028 0170  PowerEdge 6850 Reserved Registers +	2627  E8500/E8501 XMB Reserved Registers +		1028 0170  PowerEdge 6850 Reserved Registers +	2640  82801FB/FR (ICH6/ICH6R) LPC Interface Bridge +		1462 7028  915P/G Neo2 +		1734 105c  Scenic W620 +		e4bf 0ccd  CCD-CALYPSO +		e4bf 0cd3  CD3-JIVE +		e4bf 58b1  XB1 +	2641  82801FBM (ICH6M) LPC Interface Bridge +		103c 0934  Compaq nw8240/nx8220 +		103c 099c  NX6110/NC6120 +	2642  82801FW/FRW (ICH6W/ICH6RW) LPC Interface Bridge +	2651  82801FB/FW (ICH6/ICH6W) SATA Controller +		1028 0179  Optiplex GX280 +		1043 2601  P5GD1-VW Mainboard +		1734 105c  Scenic W620 +		8086 4147  D915GAG Motherboard +		e4bf 0ccd  CCD-CALYPSO +		e4bf 0cd3  CD3-JIVE +		e4bf 58b1  XB1 +	2652  82801FR/FRW (ICH6R/ICH6RW) SATA Controller +		1028 0177  Dimension 8400 +		1462 7028  915P/G Neo2 +	2653  82801FBM (ICH6M) SATA Controller +	2658  82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1 +		1028 0177  Dimension 8400 +		1028 0179  Optiplex GX280 +		103c 0934  Compaq nw8240/nx8220 +		103c 099c  NX6110/NC6120 +		1043 80a6  P5GD1-VW Mainboard +		1458 2558  GA-8I915ME-G Mainboard +		1462 7028  915P/G Neo2 +		1734 105c  Scenic W620 +		e4bf 0ccd  CCD-CALYPSO +		e4bf 0cd3  CD3-JIVE +		e4bf 58b1  XB1 +	2659  82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #2 +		1028 0177  Dimension 8400 +		1028 0179  Optiplex GX280 +		103c 0934  Compaq nw8240/nx8220 +		103c 099c  NX6110/NC6120 +		1043 80a6  P5GD1-VW Mainboard +		1458 2659  GA-8I915ME-G Mainboard +		1462 7028  915P/G Neo2 +		1734 105c  Scenic W620 +		e4bf 0ccd  CCD-CALYPSO +		e4bf 0cd3  CD3-JIVE +		e4bf 58b1  XB1 +	265a  82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #3 +		1028 0177  Dimension 8400 +		1028 0179  Optiplex GX280 +		103c 0934  Compaq nw8240/nx8220 +		103c 099c  NX6110/NC6120 +		1043 80a6  P5GD1-VW Mainboard +		1458 265a  GA-8I915ME-G Mainboard +		1462 7028  915P/G Neo2 +		1734 105c  Scenic W620 +		e4bf 0ccd  CCD-CALYPSO +		e4bf 0cd3  CD3-JIVE +		e4bf 58b1  XB1 +	265b  82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #4 +		1028 0177  Dimension 8400 +		1028 0179  Optiplex GX280 +		103c 099c  NX6110/NC6120 +		1043 80a6  P5GD1-VW Mainboard +		1458 265a  GA-8I915ME-G Mainboard +		1462 7028  915P/G Neo2 +		1734 105c  Scenic W620 +		e4bf 0ccd  CCD-CALYPSO +		e4bf 0cd3  CD3-JIVE +		e4bf 58b1  XB1 +	265c  82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller +		1028 0177  Dimension 8400 +		1028 0179  Optiplex GX280 +		103c 0934  Compaq nw8240/nx8220 +		103c 099c  NX6110/NC6120 +		1043 80a6  P5GD1-VW Mainboard +		1458 5006  GA-8I915ME-G Mainboard +		1462 7028  915P/G Neo2 +		1734 105c  Scenic W620 +		8086 265c  Dimension 3100 +		e4bf 0ccd  CCD-CALYPSO +		e4bf 0cd3  CD3-JIVE +		e4bf 58b1  XB1 +	2660  82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 1 +		103c 0934  HP Compaq nw8240 Mobile Workstation +		103c 099c  NX6110/NC6120 +		e4bf 0ccd  CCD-CALYPSO +		e4bf 0cd3  CD3-JIVE +		e4bf 58b1  XB1 +	2662  82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 2 +		103c 0934  HP Compaq nw8240 Mobile Workstation +		e4bf 0ccd  CCD-CALYPSO +		e4bf 0cd3  CD3-JIVE +		e4bf 58b1  XB1 +	2664  82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 3 +		e4bf 0ccd  CCD-CALYPSO +		e4bf 0cd3  CD3-JIVE +		e4bf 58b1  XB1 +	2666  82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 4 +		e4bf 0ccd  CCD-CALYPSO +		e4bf 0cd3  CD3-JIVE +		e4bf 58b1  XB1 +	2668  82801FB/FBM/FR/FW/FRW (ICH6 Family) High Definition Audio Controller +		1014 05b7  ThinkPad Z60t +# based on the PTGD1-LA motherboard +		103c 2a09  PufferM-UL8E +		1043 1173  Asus A6VC +		1043 814e  P5GD1-VW Mainboard +		1462 7028  915P/G Neo2 +		1af4 1100  QEMU Virtual Machine +	266a  82801FB/FBM/FR/FW/FRW (ICH6 Family) SMBus Controller +		1028 0177  Dimension 8400 +		1028 0179  Optiplex GX280 +		1043 80a6  P5GD1-VW Mainboard +		1458 266a  GA-8I915ME-G Mainboard +		1462 7028  915P/G Neo2 +		1734 105c  Scenic W620 +		e4bf 0ccd  CCD-CALYPSO +		e4bf 0cd3  CD3-JIVE +		e4bf 58b1  XB1 +	266c  82801FB/FBM/FR/FW/FRW (ICH6 Family) LAN Controller +	266d  82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Modem Controller +		1025 006a  Conexant AC'97 CoDec (in Acer TravelMate 2410 serie laptop) +		103c 0934  Compaq nw8240/nx8220 +		103c 099c  NX6110/NC6120 +	266e  82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller +		1025 006a  Realtek ALC 655 codec (in Acer TravelMate 2410 serie laptop) +		1028 0177  Dimension 8400 +		1028 0179  Optiplex GX280 +		1028 0182  Latitude D610 Laptop +		1028 0187  Dell Precision M70 Laptop +		1028 0188  Inspiron 6000 laptop +		103c 0934  Compaq nw8240/nx8220 +		103c 0944  Compaq NC6220 +		103c 099c  NX6110/NC6120 +		103c 3006  DC7100 SFF(DX878AV) +		1458 a002  GA-8I915ME-G Mainboard +		152d 0745  Packard Bell A8550 Laptop +		1734 105a  Scenic W620 +	266f  82801FB/FBM/FR/FW/FRW (ICH6 Family) IDE Controller +		1028 0177  Dimension 8400 +		103c 0934  Compaq nw8240/nx8220 +		103c 099c  NX6110/NC6120 +		1043 80a6  P5GD1-VW Mainboard +		1458 266f  GA-8I915ME-G Mainboard +		1462 7028  915P/G Neo2 +		1734 105c  Scenic W620 +		e4bf 0ccd  CCD-CALYPSO +		e4bf 0cd3  CD3-JIVE +		e4bf 58b1  XB1 +	2670  631xESB/632xESB/3100 Chipset LPC Interface Controller +		103c 31fe  ProLiant DL140 G3 +		15d9 8680  X7DVL-E-O motherboard +		15d9 9680  X7DBN Motherboard +		8086 3476  Intel S5000PSLSATA Server Board +	2680  631xESB/632xESB/3100 Chipset SATA IDE Controller +	2681  631xESB/632xESB SATA AHCI Controller +		103c 31fe  ProLiant DL140 G3 +		15d9 8680  X7DVL-E-O motherboard +		15d9 9680  X7DBN Motherboard +		8086 3476  Intel S5000PSLSATA Server Board +	2682  631xESB/632xESB SATA RAID Controller +		103c 31fe  Adaptec Serial ATA HostRAID +	2683  631xESB/632xESB SATA RAID Controller +	2688  631xESB/632xESB/3100 Chipset UHCI USB Controller #1 +		1028 01bb  PowerEdge 1955 onboard USB +		1028 01f0  PowerEdge R900 onboard USB +		103c 31fe  ProLiant DL140 G3 +		15d9 8680  X7DVL-E-O motherboard +		15d9 9680  X7DBN Motherboard +		8086 3476  Intel S5000PSLSATA Server Board +	2689  631xESB/632xESB/3100 Chipset UHCI USB Controller #2 +		1028 01bb  PowerEdge 1955 onboard USB +		1028 01f0  PowerEdge R900 onboard USB +		103c 31fe  ProLiant DL140 G3 +		15d9 8680  X7DVL-E-O motherboard +		15d9 9680  X7DBN Motherboard +		8086 3476  Intel S5000PSLSATA Server Board +	268a  631xESB/632xESB/3100 Chipset UHCI USB Controller #3 +		1028 01f0  PowerEdge R900 onboard USB +		103c 31fe  ProLiant DL140 G3 +		15d9 8680  X7DVL-E-O motherboard +		15d9 9680  X7DBN Motherboard +		8086 3476  Intel S5000PSLSATA Server Board +	268b  631xESB/632xESB/3100 Chipset UHCI USB Controller #4 +		1028 01f0  PowerEdge R900 onboard USB +		15d9 8680  X7DVL-E-O motherboard +		8086 3476  Intel S5000PSLSATA Server Board +	268c  631xESB/632xESB/3100 Chipset EHCI USB2 Controller +		1028 01bb  PowerEdge 1955 onboard USB +		1028 01f0  PowerEdge R900 onboard USB +		103c 31fe  ProLiant DL140 G3 +		15d9 8680  X7DVL-E-O motherboard +		15d9 9680  X7DBN Motherboard +		8086 3476  Intel S5000PSLSATA Server Board +	2690  631xESB/632xESB/3100 Chipset PCI Express Root Port 1 +		103c 31fe  ProLiant DL140 G3 +		15d9 9680  X7DBN Motherboard +	2692  631xESB/632xESB/3100 Chipset PCI Express Root Port 2 +		103c 31fe  ProLiant DL140 G3 +	2694  631xESB/632xESB/3100 Chipset PCI Express Root Port 3 +	2696  631xESB/632xESB/3100 Chipset PCI Express Root Port 4 +	2698  631xESB/632xESB AC '97 Audio Controller +	2699  631xESB/632xESB AC '97 Modem Controller +	269a  631xESB/632xESB High Definition Audio Controller +	269b  631xESB/632xESB/3100 Chipset SMBus Controller +		103c 31fe  ProLiant DL140 G3 +		15d9 8680  X7DVL-E-O motherboard +		15d9 9680  X7DBN Motherboard +		8086 3476  Intel S5000PSLSATA Server Board +	269e  631xESB/632xESB IDE Controller +		103c 31fe  ProLiant DL140 G3 +		15d9 8680  X7DVL-E-O motherboard +		15d9 9680  X7DBN Motherboard +	2770  82945G/GZ/P/PL Memory Controller Hub +		1028 01ad  OptiPlex GX620 +		103c 2a3b  Pavilion A1512X +		1043 817a  P5LD2-VM Mainboard +		107b 5048  E4500 +		1462 7418  Wind PC MS-7418 +		8086 544e  DeskTop Board D945GTP +	2771  82945G/GZ/P/PL PCI Express Root Port +	2772  82945G/GZ Integrated Graphics Controller +		103c 2a3b  Pavilion A1512X +		1462 7418  Wind PC MS-7418 +		8086 544e  DeskTop Board D945GTP +		8086 d605  Intel Desktop Board D945GCCR +	2774  82955X Memory Controller Hub +	2775  82955X PCI Express Root Port +	2776  82945G/GZ Integrated Graphics Controller +	2778  E7230/3000/3010 Memory Controller Hub +		1028 01df  PowerEdge SC440 +		1028 01e6  PowerEdge 860 +	2779  E7230/3000/3010 PCI Express Root Port +	277a  82975X/3010 PCI Express Root Port +	277c  82975X Memory Controller Hub +		1043 8178  P5WDG2 WS Professional motherboard +	277d  82975X PCI Express Root Port +	2782  82915G Integrated Graphics Controller +		1043 2582  P5GD1-VW Mainboard +		1734 105b  Scenic W620 +	2792  Mobile 915GM/GMS/910GML Express Graphics Controller +		103c 099c  NX6110/NC6120 +		1043 1881  GMA 900 915GM Integrated Graphics +		e4bf 0ccd  CCD-CALYPSO +		e4bf 0cd3  CD3-JIVE +		e4bf 58b1  XB1 +	27a0  Mobile 945GM/PM/GMS, 943/940GML and 945GT Express Memory Controller Hub +		1025 006c  9814 WKMI +		1028 01d7  XPS M1210 +		103c 309f  Compaq nx9420 Notebook +		103c 30a1  NC2400 +		103c 30a3  Compaq nw8440 +		1043 1237  A6J-Q008 +		1071 8209  Medion MIM 2240 Notebook PC [MD98100] +		17aa 2015  ThinkPad T60 +		17aa 2017  ThinkPad R60/T60/X60 series +	27a1  Mobile 945GM/PM/GMS, 943/940GML and 945GT Express PCI Express Root Port +		103c 309f  Compaq nx9420 Notebook +		103c 30a3  Compaq nw8440 +		1071 8209  Medion MIM 2240 Notebook PC [MD98100] +	27a2  Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller +		103c 30a1  NC2400 +		17aa 201a  ThinkPad R60/T60/X60 series +		9902 1584  CCE MPL-D10H120F +	27a6  Mobile 945GM/GMS/GME, 943/940GML Express Integrated Graphics Controller +		103c 30a1  NC2400 +		1775 11cc  CC11/CL11 integrated graphics (secondary) +		17aa 201a  ThinkPad R60/T60/X60 series +	27ac  Mobile 945GSE Express Memory Controller Hub +		1775 11cc  CC11/CL11 +	27ad  Mobile 945GSE Express PCI Express Root Port +	27ae  Mobile 945GSE Express Integrated Graphics Controller +		1775 11cc  CC11/CL11 integrated graphics (primary) +	27b0  82801GH (ICH7DH) LPC Interface Bridge +		103c 2a3b  Pavilion A1512X +		8086 544e  DeskTop Board D945GTP +	27b8  82801GB/GR (ICH7 Family) LPC Interface Bridge +		1028 01e6  PowerEdge 860 +		1043 8179  P5KPL-VM Motherboard +		107b 5048  E4500 +		1462 7418  Wind PC MS-7418 +		1775 11cc  CC11/CL11 +		8086 544e  DeskTop Board D945GTP +	27b9  82801GBM (ICH7-M) LPC Interface Bridge +		1028 01d7  XPS M1210 +		103c 309f  Compaq nx9420 Notebook +		103c 30a1  NC2400 +		103c 30a3  Compaq nw8440 +		1071 8209  Medion MIM 2240 Notebook PC [MD98100] +		10f7 8338  Panasonic CF-Y5 laptop +		17aa 2009  ThinkPad R60/T60/X60 series +	27bc  NM10 Family LPC Controller +		105b 0d7c  D270S/D250S Motherboard +		144d c072  Notebook N150P +		1458 5001  GA-D525TUD +		8086 4f4d  DeskTop Board D510MO +		8086 544b  Desktop Board D425KT +	27bd  82801GHM (ICH7-M DH) LPC Interface Bridge +		1025 006c  9814 WKMI +	27c0  NM10/ICH7 Family SATA Controller [IDE mode] +		1028 01ad  OptiPlex GX620 +		1028 01df  PowerEdge SC440 +		1028 01e6  PowerEdge 860 +		1043 8179  P5KPL-VM Motherboard +		107b 5048  E4500 +		1462 2310  MSI Hetis 945 +		1462 7236  945P Neo3-F Rev. 2.2 motherboard +		1462 7418  Wind PC MS-7418 +		1775 11cc  CC11/CL11 +		8086 544b  Desktop Board D425KT +		8086 544e  DeskTop Board D945GTP +	27c1  NM10/ICH7 Family SATA Controller [AHCI mode] +		1028 01df  PowerEdge SC440 +		103c 2a3b  Pavilion A1512X +		105b 0d7c  D270S/D250S Motherboard +		144d c072  Notebook N150P +		1458 b005  GA-D525TUD +		1775 11cc  CC11/CL11 +		8086 4f4d  DeskTop Board D510MO +		8086 5842  DeskTop Board D975XBX +	27c3  82801GR/GDH (ICH7R/ICH7DH) SATA Controller [RAID mode] +		1775 11cc  CC11/CL11 +		8086 544e  DeskTop Board D945GTP +	27c4  82801GBM/GHM (ICH7-M Family) SATA Controller [IDE mode] +		1025 006c  9814 WKMI +		1028 01d7  XPS M1210 +		1071 8209  Medion MIM 2240 Notebook PC [MD98100] +		17aa 200e  ThinkPad T60 +	27c5  82801GBM/GHM (ICH7-M Family) SATA Controller [AHCI mode] +		103c 309f  Compaq nx9420 Notebook +		103c 30a3  Compaq nw8440 +		17aa 200d  ThinkPad R60/T60/X60 series +	27c6  82801GHM (ICH7-M DH) SATA Controller [RAID mode] +	27c8  NM10/ICH7 Family USB UHCI Controller #1 +		1025 006c  9814 WKMI +		1028 01ad  OptiPlex GX620 +		1028 01d7  XPS M1210 +		1028 01df  PowerEdge SC440 +		1028 01e6  PowerEdge 860 +		103c 2a3b  Pavilion A1512X +		103c 309f  Compaq nx9420 Notebook +		103c 30a1  NC2400 +		103c 30a3  Compaq nw8440 +		1043 1237  A6J-Q008 +		1043 8179  P5KPL-VM,P5LD2-VM Mainboard +		105b 0d7c  D270S/D250S Motherboard +		1071 8209  Medion MIM 2240 Notebook PC [MD98100] +		107b 5048  E4500 +		144d c072  Notebook N150P +		1458 5004  GA-D525TUD +		1462 7418  Wind PC MS-7418 +		1775 11cc  CC11/CL11 +		17aa 200a  ThinkPad R60/T60/X60 series +		8086 4f4d  DeskTop Board D510MO +		8086 544b  Desktop Board D425KT +		8086 544e  DeskTop Board D945GTP +	27c9  NM10/ICH7 Family USB UHCI Controller #2 +		1025 006c  9814 WKMI +		1028 01ad  OptiPlex GX620 +		1028 01d7  XPS M1210 +		1028 01df  PowerEdge SC440 +		1028 01e6  PowerEdge 860 +		103c 2a3b  Pavilion A1512X +		103c 309f  Compaq nx9420 Notebook +		103c 30a1  NC2400 +		103c 30a3  Compaq nw8440 +		1043 1237  A6J-Q008 +		1043 8179  P5KPL-VM,P5LD2-VM Mainboard +		105b 0d7c  D270S/D250S Motherboard +		1071 8209  Medion MIM 2240 Notebook PC [MD98100] +		107b 5048  E4500 +		144d c072  Notebook N150P +		1458 5004  GA-D525TUD +		1462 7418  Wind PC MS-7418 +		1775 11cc  CC11/CL11 +		17aa 200a  ThinkPad R60/T60/X60 series +		8086 4f4d  DeskTop Board D510MO +		8086 544b  Desktop Board D425KT +		8086 544e  DeskTop Board D945GTP +	27ca  NM10/ICH7 Family USB UHCI Controller #3 +		1025 006c  9814 WKMI +		1028 01ad  OptiPlex GX620 +		1028 01d7  XPS M1210 +		1028 01df  PowerEdge SC440 +		1028 01e6  PowerEdge 860 +		103c 2a3b  Pavilion A1512X +		103c 309f  Compaq nx9420 Notebook +		103c 30a1  NC2400 +		103c 30a3  Compaq nw8440 +		1043 1237  A6J-Q008 +		1043 8179  P5KPL-VM,P5LD2-VM Mainboard +		105b 0d7c  D270S/D250S Motherboard +		1071 8209  Medion MIM 2240 Notebook PC [MD98100] +		107b 5048  E4500 +		144d c072  Notebook N150P +		1458 5004  GA-D525TUD +		1462 7418  Wind PC MS-7418 +		1775 11cc  CC11/CL11 +		17aa 200a  ThinkPad R60/T60/X60 series +		8086 4f4d  DeskTop Board D510MO +		8086 544e  DeskTop Board D945GTP +	27cb  NM10/ICH7 Family USB UHCI Controller #4 +		1025 006c  9814 WKMI +		1028 01ad  OptiPlex GX620 +		1028 01d7  XPS M1210 +		1028 01df  PowerEdge SC440 +		103c 2a3b  Pavilion A1512X +		103c 309f  Compaq nx9420 Notebook +		103c 30a1  NC2400 +		103c 30a3  Compaq nw8440 +		1043 1237  A6J-Q008 +		1043 8179  P5KPL-VM,P5LD2-VM Mainboard +		105b 0d7c  D270S/D250S Motherboard +		1071 8209  Medion MIM 2240 Notebook PC [MD98100] +		107b 5048  E4500 +		144d c072  Notebook N150P +		1458 5004  GA-D525TUD +		1462 7418  Wind PC MS-7418 +		1775 11cc  CC11/CL11 +		17aa 200a  ThinkPad R60/T60/X60 series +		8086 4f4d  DeskTop Board D510MO +		8086 544e  DeskTop Board D945GTP +	27cc  NM10/ICH7 Family USB2 EHCI Controller +		1025 006c  9814 WKMI +		1028 01ad  OptiPlex GX620 +		1028 01d7  XPS M1210 +		1028 01df  PowerEdge SC440 +		1028 01e6  PowerEdge 860 +		103c 2a3b  Pavilion A1512X +		103c 309f  Compaq nx9420 Notebook +		103c 30a1  NC2400 +		103c 30a3  Compaq nw8440 +		1043 1237  A6J-Q008 +		1043 8179  P5KPL-VM,P5LD2-VM Mainboard +		105b 0d7c  D270S/D250S Motherboard +		1071 8209  Medion MIM 2240 Notebook PC [MD98100] +		144d c072  Notebook N150P +		1458 5006  GA-D525TUD +		1462 7418  Wind PC MS-7418 +		1775 11cc  CC11/CL11 +		17aa 200b  ThinkPad R60/T60/X60 series +		8086 4f4d  DeskTop Board D510MO +		8086 544b  Desktop Board D425KT +		8086 544e  DeskTop Board D945GTP +	27d0  NM10/ICH7 Family PCI Express Port 1 +		103c 309f  Compaq nx9420 Notebook +		103c 30a3  Compaq nw8440 +		1071 8209  Medion MIM 2240 Notebook PC [MD98100] +		144d c072  Notebook N150P +		1458 5001  GA-D525TUD +		1462 7418  Wind PC MS-7418 +		1775 11cc  CC11/CL11 +		8086 544b  Desktop Board D425KT +	27d2  NM10/ICH7 Family PCI Express Port 2 +		103c 309f  Compaq nx9420 Notebook +		103c 30a3  Compaq nw8440 +		1071 8209  Medion MIM 2240 Notebook PC [MD98100] +		144d c072  Notebook N150P +		1462 7418  Wind PC MS-7418 +		1775 11cc  CC11/CL11 +		8086 544b  Desktop Board D425KT +	27d4  NM10/ICH7 Family PCI Express Port 3 +		1071 8209  Medion MIM 2240 Notebook PC [MD98100] +		144d c072  Notebook N150P +		1462 7418  Wind PC MS-7418 +		1775 11cc  CC11/CL11 +		8086 544b  Desktop Board D425KT +	27d6  NM10/ICH7 Family PCI Express Port 4 +		103c 30a3  Compaq nw8440 +		1071 8209  Medion MIM 2240 Notebook PC [MD98100] +		144d c072  Notebook N150P +		1462 7418  Wind PC MS-7418 +		1775 11cc  CC11/CL11 +		8086 544b  Desktop Board D425KT +	27d8  NM10/ICH7 Family High Definition Audio Controller +		1025 006c  9814 WKMI +		1028 01d7  XPS M1210 +		103c 2a3b  Pavilion A1512X +		103c 309f  Compaq nx9420 Notebook +		103c 30a1  NC2400 +		103c 30a3  Compaq nw8440 +		1043 1123  A6J-Q008 +		1043 13c4  Asus G2P +		1043 817f  P5LD2-VM Mainboard (Realtek ALC 882 codec) +		1043 8290  P5KPL-VM Motherboard +		1043 82ea  P5KPL-CM Motherboard +		105b 0d7c  D270S/D250S Motherboard +		1071 8207  Medion MIM 2240 Notebook PC [MD98100] +		107b 5048  E4500 +		10f7 8338  Panasonic CF-Y5 laptop +		1179 ff10  Toshiba Satellite A100-796 audio (Realtek ALC861) +		1179 ff31  AC97 Data Fax SoftModem with SmartCP +		1447 1043  Asus A8JP (Analog Devices AD1986A) +		144d c072  Notebook N150P +		1458 a002  GA-D525TUD (Realtek ALC887) +		1458 a102  GA-8I945PG-RH Mainboard +		1462 7418  Wind PC MS-7418 +		152d 0753  Softmodem +		1734 10ad  Conexant softmodem SmartCP +		17aa 2010  ThinkPad R60/T60/X60 series +		17aa 3802  Lenovo 3000 C200 audio [Realtek ALC861VD] +		8086 1112  DeskTop Board D945GTP +		8086 27d8  DeskTop Board D945GTP +		8086 d618  DeskTop Board D510MO +		8384 7680  STAC9221 HD Audio Codec +	27da  NM10/ICH7 Family SMBus Controller +		1025 006c  9814 WKMI +		1028 01ad  OptiPlex GX620 +		1028 01d7  XPS M1210 +		1028 01df  PowerEdge SC440 +		1028 01e6  PowerEdge 860 +		103c 2a3b  Pavilion A1512X +		1043 8179  P5KPL-VM Motherboard +		105b 0d7c  D270S/D250S Motherboard +		1071 8209  Medion MIM 2240 Notebook PC [MD98100] +		10f7 8338  Panasonic CF-Y5 laptop +		144d c072  Notebook N150P +		1458 5001  GA-8I945PG-RH/GA-D525TUD Mainboard +		1462 7418  Wind PC MS-7418 +		1775 11cc  CC11/CL11 +		17aa 200f  ThinkPad R60/T60/X60 series +		8086 4f4d  DeskTop Board D510MO +		8086 544b  Desktop Board D425KT +		8086 544e  DeskTop Board D945GTP +		8086 5842  DeskTop Board D975XBX +	27dc  NM10/ICH7 Family LAN Controller +		103c 2a3b  Pavilion A1512X +		8086 308d  DeskTop Board D945GTP +	27dd  82801G (ICH7 Family) AC'97 Modem Controller +	27de  82801G (ICH7 Family) AC'97 Audio Controller +		1028 01ad  OptiPlex GX620 +		1462 7267  Realtek ALC883 Audio Controller +		1775 11cc  CC11 integrated audio (AD1981BL codec) +	27df  82801G (ICH7 Family) IDE Controller +		1028 01df  PowerEdge SC440 +		1028 01e6  PowerEdge 860 +		103c 2a3b  Pavilion A1512X +		103c 309f  Compaq nx9420 Notebook +		103c 30a1  NC2400 +		103c 30a3  Compaq nw8440 +		1043 1237  A6J-Q008 +		1043 8179  P5KPL-VM Motherboard +		107b 5048  E4500 +		10f7 8338  Panasonic CF-Y5 laptop +		1462 7418  Wind PC MS-7418 +		1775 11cc  CC11/CL11 +		17aa 200c  ThinkPad R60/T60/X60 series +		8086 544e  DeskTop Board D945GTP +	27e0  82801GR/GH/GHM (ICH7 Family) PCI Express Port 5 +		1775 11cc  CC11/CL11 +	27e2  82801GR/GH/GHM (ICH7 Family) PCI Express Port 6 +		1775 11cc  CC11/CL11 +	2810  82801HB/HR (ICH8/R) LPC Interface Controller +		1043 81ec  P5B +	2811  82801HEM (ICH8M-E) LPC Interface Controller +		103c 30c1  Compaq 6910p +		17aa 20b6  ThinkPad T61/R61 +		e4bf cc47  CCG-RUMBA +	2812  82801HH (ICH8DH) LPC Interface Controller +	2814  82801HO (ICH8DO) LPC Interface Controller +	2815  82801HM (ICH8M) LPC Interface Controller +		1025 0121  Aspire 5920G +		1028 01f3  Inspiron 1420 +		103c 30c0  Compaq 6710b +		103c 30cc  Pavilion dv6700 +		103c 30d9  Presario C700 +		104d 9005  Vaio VGN-FZ260E +		104d 902d  VAIO VGN-NR120E +		17c0 4083  Medion WIM 2210 Notebook PC [MD96850] +	2820  82801H (ICH8 Family) 4 port SATA Controller [IDE mode] +		1028 01da  OptiPlex 745 +		1462 7235  P965 Neo MS-7235 mainboard +	2821  82801HR/HO/HH (ICH8R/DO/DH) 6 port SATA Controller [AHCI mode] +	2822  SATA Controller [RAID mode] +		1028 020d  Inspiron 530 +		103c 2a6f  Asus IPIBL-LB Motherboard +	2823  C610/X99 series chipset sSATA Controller [RAID mode] +	2824  82801HB (ICH8) 4 port SATA Controller [AHCI mode] +		1043 81ec  P5B +	2825  82801HR/HO/HH (ICH8R/DO/DH) 2 port SATA Controller [IDE mode] +		1028 01da  OptiPlex 745 +		1462 7235  P965 Neo MS-7235 mainboard +	2826  C600/X79 series chipset SATA RAID Controller +	2827  C610/X99 series chipset sSATA Controller [RAID mode] +	2828  82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [IDE mode] +		1028 01f3  Inspiron 1420 +		103c 30c0  Compaq 6710b +		e4bf cc47  CCG-RUMBA +	2829  82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [AHCI mode] +		1025 0121  Aspire 5920G +		103c 30c0  Compaq 6710b +		103c 30c1  Compaq 6910p +		103c 30cc  Pavilion dv6700 +		103c 30d9  Presario C700 +		104d 9005  Vaio VGN-FZ260E +		104d 902d  VAIO VGN-NR120E +		17aa 20a7  ThinkPad T61/R61 +		17c0 4083  Medion WIM 2210 Notebook PC [MD96850] +		e4bf cc47  CCG-RUMBA +	282a  82801 Mobile SATA Controller [RAID mode] +		1028 040b  Latitude E6510 +		e4bf 50c1  PC1-GROOVE +	2830  82801H (ICH8 Family) USB UHCI Controller #1 +		1025 0121  Acer Aspire 5920G +		1028 01da  OptiPlex 745 +		1028 01f3  Inspiron 1420 +		103c 30c0  Compaq 6710b +		103c 30c1  Compaq 6910p +		103c 30cc  Pavilion dv6700 +		103c 30d9  Presario C700 +		1043 81ec  P5B +		104d 9005  Vaio VGN-FZ260E +		104d 902d  VAIO VGN-NR120E +		1462 7235  P965 Neo MS-7235 mainboard +		17aa 20aa  ThinkPad T61/R61 +		17c0 4083  Medion WIM 2210 Notebook PC [MD96850] +		e4bf cc47  CCG-RUMBA +	2831  82801H (ICH8 Family) USB UHCI Controller #2 +		1025 0121  Aspire 5920G +		1028 01da  OptiPlex 745 +		1028 01f3  Inspiron 1420 +		103c 30c0  Compaq 6710b +		103c 30c1  Compaq 6910p +		103c 30cc  Pavilion dv6700 +		103c 30d9  Presario C700 +		1043 81ec  P5B +		104d 9005  Vaio VGN-FZ260E +		104d 902d  VAIO VGN-NR120E +		1462 7235  P965 Neo MS-7235 mainboard +		17aa 20aa  ThinkPad T61/R61 +		17c0 4083  Medion WIM 2210 Notebook PC [MD96850] +		e4bf cc47  CCG-RUMBA +	2832  82801H (ICH8 Family) USB UHCI Controller #3 +		1025 0121  Aspire 5920G +		1028 01da  OptiPlex 745 +		1028 01f3  Inspiron 1420 +		103c 30c0  Compaq 6710b +		103c 30c1  Compaq 6910p +		103c 30cc  Pavilion dv6700 +		103c 30d9  Presario C700 +		1043 81ec  P5B +		104d 9005  Vaio VGN-FZ260E +		104d 902d  VAIO VGN-NR120E +		17aa 20aa  ThinkPad T61/R61 +		17c0 4083  Medion WIM 2210 Notebook PC [MD96850] +		e4bf cc47  CCG-RUMBA +	2833  82801H (ICH8 Family) USB UHCI Controller #4 +		1043 81ec  P5B +	2834  82801H (ICH8 Family) USB UHCI Controller #4 +		1025 0121  Aspire 5920G +		1028 01da  OptiPlex 745 +		1028 01f3  Inspiron 1420 +		103c 30c0  Compaq 6710b +		103c 30c1  Compaq 6910p +		103c 30cc  Pavilion dv6700 +		1043 81ec  P5B +		104d 9005  Vaio VGN-FZ260E +		104d 902d  VAIO VGN-NR120E +		1462 7235  P965 Neo MS-7235 mainboard +		17aa 20aa  ThinkPad T61/R61 +		17c0 4083  Medion WIM 2210 Notebook PC [MD96850] +		e4bf cc47  CCG-RUMBA +	2835  82801H (ICH8 Family) USB UHCI Controller #5 +		1025 0121  Acer Aspire 5920G +		1028 01da  OptiPlex 745 +		1028 01f3  Inspiron 1420 +		103c 30c0  Compaq 6710b +		103c 30c1  Compaq 6910p +		103c 30cc  Pavilion dv6700 +		1043 81ec  P5B +		104d 9005  Vaio VGN-FZ260E +		104d 902d  VAIO VGN-NR120E +		17aa 20aa  Thinkpad T61/R61 +		17c0 4083  Medion WIM 2210 Notebook PC [MD96850] +		e4bf cc47  CCG-RUMBA +	2836  82801H (ICH8 Family) USB2 EHCI Controller #1 +		1025 0121  Aspire 5920G +		1028 01da  OptiPlex 745 +		1028 01f3  Inspiron 1420 +		103c 30c0  Compaq 6710b +		103c 30c1  Compaq 6910p +		103c 30cc  Pavilion dv6700 +		103c 30d9  Presario C700 +		1043 81ec  P5B +		104d 9005  Vaio VGN-FZ260E +		104d 902d  VAIO VGN-NR120E +		1462 7235  P965 Neo MS-7235 mainboard +		17aa 20ab  ThinkPad T61/R61 +		17c0 4083  Medion WIM 2210 Notebook PC [MD96850] +		e4bf cc47  CCG-RUMBA +	283a  82801H (ICH8 Family) USB2 EHCI Controller #2 +		1025 0121  Acer Aspire 5920G +		1028 01da  OptiPlex 745 +		1028 01f3  Inspiron 1420 +		103c 30c0  Compaq 6710b +		103c 30c1  Compaq 6910p +		103c 30cc  Pavilion dv6700 +		1043 81ec  P5B +		104d 9005  Vaio VGN-FZ260E +		104d 902d  VAIO VGN-NR120E +		17aa 20ab  ThinkPad T61/R61 +		17c0 4083  Medion WIM 2210 Notebook PC [MD96850] +		e4bf cc47  CCG-RUMBA +	283e  82801H (ICH8 Family) SMBus Controller +		1025 0121  Aspire 5920G +		1028 01da  OptiPlex 745 +		1028 01f3  Inspiron 1420 +		103c 30d9  Presario C700 +		1043 81ec  P5B +		104d 9005  Vaio VGN-FZ260E +		104d 9008  Vaio VGN-SZ79SN_C +		104d 902d  VAIO VGN-NR120E +		1462 7235  P965 Neo MS-7235 mainboard +		17aa 20a9  ThinkPad T61/R61 +		17c0 4083  Medion WIM 2210 Notebook PC [MD96850] +		e4bf cc47  CCG-RUMBA +	283f  82801H (ICH8 Family) PCI Express Port 1 +		1028 01da  OptiPlex 745 +		103c 30c1  Compaq 6910p +		104d 902d  VAIO VGN-NR120E +		17aa 20ad  ThinkPad T61/R61 +		17c0 4083  Medion WIM 2210 Notebook PC [MD96850] +	2841  82801H (ICH8 Family) PCI Express Port 2 +		103c 30c1  Compaq 6910p +		104d 902d  VAIO VGN-NR120E +		17aa 20ad  ThinkPad T61/R61 +		17c0 4083  Medion WIM 2210 Notebook PC [MD96850] +	2843  82801H (ICH8 Family) PCI Express Port 3 +		104d 902d  VAIO VGN-NR120E +		17aa 20ad  ThinkPad T61/R61 +		17c0 4083  Medion WIM 2210 Notebook PC [MD96850] +	2845  82801H (ICH8 Family) PCI Express Port 4 +		17aa 20ad  ThinkPad T61/R61 +		17c0 4083  Medion WIM 2210 Notebook PC [MD96850] +	2847  82801H (ICH8 Family) PCI Express Port 5 +		1028 01da  OptiPlex 745 +		103c 30c1  Compaq 6910p +		17aa 20ad  ThinkPad T61/R61 +		17c0 4083  Medion WIM 2210 Notebook PC [MD96850] +	2849  82801H (ICH8 Family) PCI Express Port 6 +	284b  82801H (ICH8 Family) HD Audio Controller +		1025 011f  Realtek ALC268 audio codec +		1025 0121  Aspire 5920G +		1025 0145  Realtek ALC889 (Aspire 8920G w. Dolby Theather) +		1028 01da  OptiPlex 745 +		1028 01f3  Inspiron 1420 +		1028 01f9  Dell Latitude D630 +		1028 01ff  Dell Precision M4300 +		1028 0256  Studio 1735 +		103c 2802  HP Compaq dc7700p +		103c 30c0  Compaq 6710b +		103c 30c1  Compaq 6910p +		103c 30cc  Pavilion dv6700 +		1043 1339  Asus M51S series +		1043 81ec  P5B +		104d 9005  Vaio VGN-FZ260E +		104d 9008  Vaio VGN-SZ79SN_C +		104d 9016  Sony VAIO VGN-AR51M +		104d 902d  VAIO VGN-NR120E +		14f1 5051  Presario C700 +		17aa 20ac  ThinkPad T61/R61 +		17c0 4088  Medion WIM 2210 Notebook PC [MD96850] +		8384 7616  Dell Vostro 1400 +		e4bf cc47  CCG-RUMBA +	284f  82801H (ICH8 Family) Thermal Reporting Device +	2850  82801HM/HEM (ICH8M/ICH8M-E) IDE Controller +		1025 0121  Aspire 5920G +		1028 01f3  Inspiron 1420 +		103c 30c0  Compaq 6710b +		103c 30c1  Compaq 6910p +		103c 30cc  Pavilion dv6700 +		103c 30d9  Presario C700 +		104d 9005  Vaio VGN-FZ260E +		104d 902d  VAIO VGN-NR120E +		17aa 20a6  ThinkPad T61/R61 +		17c0 4083  Medion WIM 2210 Notebook PC [MD96850] +		e4bf cc47  CCG-RUMBA +	2912  82801IH (ICH9DH) LPC Interface Controller +	2914  82801IO (ICH9DO) LPC Interface Controller +		1028 0211  Optiplex 755 +	2916  82801IR (ICH9R) LPC Interface Controller +		1028 020d  Inspiron 530 +		103c 2a6f  Asus IPIBL-LB Motherboard +		1043 8277  P5K PRO Motherboard +		8086 5044  Desktop Board DP35DP +	2917  ICH9M-E LPC Interface Controller +		e4bf cc4d  CCM-BOOGIE +	2918  82801IB (ICH9) LPC Interface Controller +		1028 0236  PowerEdge R610 82801IB (ICH9) LPC Interface Controller +		1462 7360  G33/P35 Neo +		1af4 1100  QEMU Virtual Machine +	2919  ICH9M LPC Interface Controller +	2920  82801IR/IO/IH (ICH9R/DO/DH) 4 port SATA Controller [IDE mode] +		1028 020d  Inspiron 530 +		1028 020f  PowerEdge R300 onboard SATA Controller +		1028 0210  PowerEdge T300 onboard SATA Controller +		1028 0211  Optiplex 755 +		1028 023c  PowerEdge R200 onboard SATA Controller +		1043 8277  P5K PRO Motherboard +	2921  82801IB (ICH9) 2 port SATA Controller [IDE mode] +		1028 0235  PowerEdge R710 SATA IDE Controller +		1028 0236  PowerEdge R610 SATA IDE Controller +		1028 0237  PowerEdge T610 SATA IDE Controller +		1462 7360  G33/P35 Neo +	2922  82801IR/IO/IH (ICH9R/DO/DH) 6 port SATA Controller [AHCI mode] +		1af4 1100  QEMU Virtual Machine +		8086 5044  Desktop Board DP35DP +	2923  82801IB (ICH9) 4 port SATA Controller [AHCI mode] +	2925  82801IR/IO (ICH9R/DO) SATA Controller [RAID mode] +		1734 10e0  System Board D2542 +		8086 2925  System Board D2542 +	2926  82801I (ICH9 Family) 2 port SATA Controller [IDE mode] +		1028 020d  Inspiron 530 +		1028 020f  PowerEdge R300 onboard SATA Controller +		1028 0210  PowerEdge T300 onboard SATA Controller +		1028 0211  Optiplex 755 +		1043 8277  P5K PRO Motherboard +		1462 7360  G33/P35 Neo +	2928  82801IBM/IEM (ICH9M/ICH9M-E) 2 port SATA Controller [IDE mode] +	2929  82801IBM/IEM (ICH9M/ICH9M-E) 4 port SATA Controller [AHCI mode] +		103c 3628  dv6-1190en +		e4bf cc4d  CCM-BOOGIE +	292c  82801IEM (ICH9M-E) SATA Controller [RAID mode] +	292d  82801IBM/IEM (ICH9M/ICH9M-E) 2 port SATA Controller [IDE mode] +		e4bf cc4d  CCM-BOOGIE +	2930  82801I (ICH9 Family) SMBus Controller +		1028 020d  Inspiron 530 +		1028 0211  Optiplex 755 +		103c 2a6f  Asus IPIBL-LB Motherboard +		103c 3628  dv6-1190en +		1043 8277  P5K PRO Motherboard +		1462 7360  G33/P35 Neo +		1af4 1100  QEMU Virtual Machine +		8086 5044  Desktop Board DP35DP +		e4bf cc4d  CCM-BOOGIE +	2932  82801I (ICH9 Family) Thermal Subsystem +		103c 3628  dv6-1190en +	2934  82801I (ICH9 Family) USB UHCI Controller #1 +		1028 020d  Inspiron 530 +		1028 020f  PowerEdge R300 onboard UHCI +		1028 0210  PowerEdge T300 onboard UHCI +		1028 0211  Optiplex 755 +		1028 0235  PowerEdge R710 USB UHCI Controller +		1028 0236  PowerEdge R610 USB UHCI Controller +		1028 0237  PowerEdge T610 USB UHCI Controller +		1028 023c  PowerEdge R200 onboard UHCI +		1028 0287  PowerEdge M610 onboard UHCI +		1028 029c  PowerEdge M710 USB UHCI Controller +		1028 2011  Optiplex 755 +		103c 2a6f  Asus IPIBL-LB Motherboard +		1043 8277  P5K PRO Motherboard +		1462 7360  G33/P35 Neo +		1af4 1100  QEMU Virtual Machine +		8086 5044  Desktop Board DP35DP +		e4bf cc4d  CCM-BOOGIE +	2935  82801I (ICH9 Family) USB UHCI Controller #2 +		1028 020d  Inspiron 530 +		1028 020f  PowerEdge R300 onboard UHCI +		1028 0210  PowerEdge T300 onboard UHCI +		1028 0211  Optiplex 755 +		1028 0235  PowerEdge R710 USB UHCI Controller +		1028 0236  PowerEdge R610 USB UHCI Controller +		1028 0237  PowerEdge T610 USB UHCI Controller +		1028 023c  PowerEdge R200 onboard UHCI +		1028 0287  PowerEdge M610 onboard UHCI +		1028 029c  PowerEdge M710 USB UHCI Controller +		103c 2a6f  Asus IPIBL-LB Motherboard +		1043 8277  P5K PRO Motherboard +		1462 7360  G33/P35 Neo +		1af4 1100  QEMU Virtual Machine +		8086 5044  Desktop Board DP35DP +		e4bf cc4d  CCM-BOOGIE +	2936  82801I (ICH9 Family) USB UHCI Controller #3 +		1028 020d  Inspiron 530 +		1028 020f  PowerEdge R300 onboard UHCI +		1028 0210  PowerEdge T300 onboard UHCI +		1028 0211  Optiplex 755 +		1028 0237  PowerEdge T610 USB UHCI Controller +		1028 023c  PowerEdge R200 onboard UHCI +		1028 0287  PowerEdge M610 onboard UHCI +		1028 029c  PowerEdge M710 USB UHCI Controller +		103c 2a6f  Asus IPIBL-LB Motherboard +		1043 8277  P5K PRO Motherboard +		1462 7360  G33/P35 Neo +		1af4 1100  QEMU Virtual Machine +		8086 5044  Desktop Board DP35DP +		e4bf cc4d  CCM-BOOGIE +	2937  82801I (ICH9 Family) USB UHCI Controller #4 +		1028 020d  Inspiron 530 +		1028 0211  Optiplex 755 +		1028 0235  PowerEdge R710 USB UHCI Controller +		1028 0236  PowerEdge R610 USB UHCI Controller +		1028 0237  PowerEdge T610 USB UHCI Controller +		1028 0287  PowerEdge M610 onboard UHCI +		1028 029c  PowerEdge M710 USB UHCI Controller +		1028 2011  Optiplex 755 +		103c 2a6f  Asus IPIBL-LB Motherboard +		1043 8277  P5K PRO Motherboard +		1462 7360  G33/P35 Neo +		1af4 1100  QEMU Virtual Machine +		8086 2937  Optiplex 755 +		8086 2942  828011 (ICH9 Family ) USB UHCI Controller +		8086 5044  Desktop Board DP35DP +		e4bf cc4d  CCM-BOOGIE +	2938  82801I (ICH9 Family) USB UHCI Controller #5 +		1028 020d  Inspiron 530 +		1028 0211  Optiplex 755 +		1028 0235  PowerEdge R710 USB UHCI Controller +		1028 0236  PowerEdge R610 USB UHCI Controller +		1028 0237  PowerEdge T610 USB UHCI Controller +		1028 0287  PowerEdge M610 onboard UHCI +		1028 029c  PowerEdge M710 USB UHCI Controller +		103c 2a6f  Asus IPIBL-LB Motherboard +		1043 8277  P5K PRO Motherboard +		1462 7360  G33/P35 Neo +		1af4 1100  QEMU Virtual Machine +		8086 2938  Optiplex 755 +		8086 5044  Desktop Board DP35DP +		e4bf cc4d  CCM-BOOGIE +	2939  82801I (ICH9 Family) USB UHCI Controller #6 +		1028 020d  Inspiron 530 +		1028 0210  PowerEdge T300 onboard UHCI +		1028 0237  PowerEdge T610 USB UHCI Controller +		103c 2a6f  Asus IPIBL-LB Motherboard +		1043 8277  P5K PRO Motherboard +		1462 7360  G33/P35 Neo +		1af4 1100  QEMU Virtual Machine +		8086 5044  Desktop Board DP35DP +		e4bf cc4d  CCM-BOOGIE +	293a  82801I (ICH9 Family) USB2 EHCI Controller #1 +		1028 020d  Inspiron 530 +		1028 020f  PowerEdge R300 onboard EHCI +		1028 0210  PowerEdge T300 onboard EHCI +		1028 0211  Optiplex 755 +		1028 0235  PowerEdge R710 USB EHCI Controller +		1028 0236  PowerEdge R610 USB EHCI Controller +		1028 0237  PowerEdge T610 USB EHCI Controller +		1028 023c  PowerEdge R200 onboard EHCI +		1028 0287  PowerEdge M610 onboard EHCI +		1028 029c  PowerEdge M710 USB EHCI Controller +		103c 2a6f  Asus IPIBL-LB Motherboard +		1043 8277  P5K PRO Motherboard +		1462 7360  G33/P35 Neo +		1af4 1100  QEMU Virtual Machine +		8086 5044  Desktop Board DP35DP +		e4bf cc4d  CCM-BOOGIE +	293c  82801I (ICH9 Family) USB2 EHCI Controller #2 +		1028 020d  Inspiron 530 +		1028 0211  Optiplex 755 +		1028 0235  PowerEdge R710 USB EHCI Controller +		1028 0236  PowerEdge R610 USB EHCI Controller +		1028 0237  PowerEdge T610 USB EHCI Controller +		1028 0287  PowerEdge M610 onboard EHCI +		1028 029c  PowerEdge M710 USB EHCI Controller +		103c 2a6f  Asus IPIBL-LB Motherboard +		1043 8277  P5K PRO Motherboard +		1462 7360  G33/P35 Neo +		1af4 1100  QEMU Virtual Machine +		8086 293c  Optiplex 755 +		8086 5044  Desktop Board DP35DP +		e4bf cc4d  CCM-BOOGIE +	293e  82801I (ICH9 Family) HD Audio Controller +		1028 020d  Inspiron 530 +		1028 0211  Optiplex 755 +		103c 2a6f  Asus IPIBL-LB Motherboard +		103c 3628  dv6-1190en +		1043 829f  P5K PRO Motherboard +		1462 7360  G33/P35 Neo +		1af4 1100  QEMU Virtual Machine +		8086 293e  Optiplex 755 +		8086 2940  Optiplex 755 +		e4bf cc4d  CCM-BOOGIE +	2940  82801I (ICH9 Family) PCI Express Port 1 +		1028 020d  Inspiron 530 +		1028 0211  Optiplex 755 +		103c 2a6f  Asus IPIBL-LB Motherboard +# same ID possibly also on other ASUS boards +		1043 8277  P5K PRO Motherboard +		8086 2940  Optiplex 755 +	2942  82801I (ICH9 Family) PCI Express Port 2 +		1028 020d  Inspiron 530 +	2944  82801I (ICH9 Family) PCI Express Port 3 +		1028 020d  Inspiron 530 +		103c 2a6f  Asus IPIBL-LB Motherboard +	2946  82801I (ICH9 Family) PCI Express Port 4 +		1028 020d  Inspiron 530 +	2948  82801I (ICH9 Family) PCI Express Port 5 +		1028 020d  Inspiron 530 +# same ID possibly also on other ASUS boards +		1043 8277  P5K PRO Motherboard +	294a  82801I (ICH9 Family) PCI Express Port 6 +		1028 020d  Inspiron 530 +# same ID possibly also on other ASUS boards +		1043 8277  P5K PRO Motherboard +	294c  82566DC-2 Gigabit Network Connection +		17aa 302e  82566DM-2 Gigabit Network Connection +	2970  82946GZ/PL/GL Memory Controller Hub +	2971  82946GZ/PL/GL PCI Express Root Port +	2972  82946GZ/GL Integrated Graphics Controller +	2973  82946GZ/GL Integrated Graphics Controller +	2974  82946GZ/GL HECI Controller +	2975  82946GZ/GL HECI Controller +	2976  82946GZ/GL PT IDER Controller +	2977  82946GZ/GL KT Controller +	2980  82G35 Express DRAM Controller +	2981  82G35 Express PCI Express Root Port +	2982  82G35 Express Integrated Graphics Controller +	2983  82G35 Express Integrated Graphics Controller +	2984  82G35 Express HECI Controller +	2990  82Q963/Q965 Memory Controller Hub +		1028 01da  OptiPlex 745 +	2991  82Q963/Q965 PCI Express Root Port +	2992  82Q963/Q965 Integrated Graphics Controller +	2993  82Q963/Q965 Integrated Graphics Controller +	2994  82Q963/Q965 HECI Controller +	2995  82Q963/Q965 HECI Controller +	2996  82Q963/Q965 PT IDER Controller +	2997  82Q963/Q965 KT Controller +	29a0  82P965/G965 Memory Controller Hub +		1043 81ea  P5B +		1462 7276  MS-7276 [G965MDH] +	29a1  82P965/G965 PCI Express Root Port +	29a2  82G965 Integrated Graphics Controller +		1462 7276  MS-7276 [G965MDH] +	29a3  82G965 Integrated Graphics Controller +	29a4  82P965/G965 HECI Controller +	29a5  82P965/G965 HECI Controller +	29a6  82P965/G965 PT IDER Controller +	29a7  82P965/G965 KT Controller +	29b0  82Q35 Express DRAM Controller +		1028 0211  OptiPlex 755 +	29b1  82Q35 Express PCI Express Root Port +		1028 0211  OptiPlex 755 +	29b2  82Q35 Express Integrated Graphics Controller +		1028 0211  OptiPlex 755 +	29b3  82Q35 Express Integrated Graphics Controller +		1028 0211  OptiPlex 755 +	29b4  82Q35 Express MEI Controller +		1028 0211  OptiPlex 755 +	29b5  82Q35 Express MEI Controller +	29b6  82Q35 Express PT IDER Controller +		1028 0211  OptiPlex 755 +	29b7  82Q35 Express Serial KT Controller +		1028 0211  OptiPlex 755 +	29c0  82G33/G31/P35/P31 Express DRAM Controller +		1028 020d  Inspiron 530 +		103c 2a6f  Asus IPIBL-LB Motherboard +# same ID possibly also on other ASUS boards +		1043 8276  P5K PRO Motherboard +		1043 82b0  P5KPL-VM Motherboard +		1462 7360  G33/P35 Neo +		1af4 1100  QEMU Virtual Machine +		8086 5044  Desktop Board DP35DP +	29c1  82G33/G31/P35/P31 Express PCI Express Root Port +		1028 020d  Inspiron 530 +# same ID possibly also on other ASUS boards +		1043 8276  P5K PRO Motherboard +	29c2  82G33/G31 Express Integrated Graphics Controller +		1028 020d  Inspiron 530 +		1043 82b0  P5KPL-VM Motherboard +	29c3  82G33/G31 Express Integrated Graphics Controller +		1028 020d  Inspiron 530 +		1043 82b0  P5KPL-VM Motherboard +	29c4  82G33/G31/P35/P31 Express MEI Controller +		8086 5044  Desktop Board DP35DP +	29c5  82G33/G31/P35/P31 Express MEI Controller +	29c6  82G33/G31/P35/P31 Express PT IDER Controller +	29c7  82G33/G31/P35/P31 Express Serial KT Controller +	29cf  Virtual HECI Controller +	29d0  82Q33 Express DRAM Controller +	29d1  82Q33 Express PCI Express Root Port +	29d2  82Q33 Express Integrated Graphics Controller +	29d3  82Q33 Express Integrated Graphics Controller +	29d4  82Q33 Express MEI Controller +	29d5  82Q33 Express MEI Controller +	29d6  82Q33 Express PT IDER Controller +	29d7  82Q33 Express Serial KT Controller +	29e0  82X38/X48 Express DRAM Controller +	29e1  82X38/X48 Express Host-Primary PCI Express Bridge +	29e4  82X38/X48 Express MEI Controller +	29e5  82X38/X48 Express MEI Controller +	29e6  82X38/X48 Express PT IDER Controller +	29e7  82X38/X48 Express Serial KT Controller +	29e9  82X38/X48 Express Host-Secondary PCI Express Bridge +	29f0  3200/3210 Chipset DRAM Controller +	29f1  3200/3210 Chipset Host-Primary PCI Express Bridge +	29f4  3200/3210 Chipset MEI Controller +	29f5  3200/3210 Chipset MEI Controller +	29f6  3200/3210 Chipset PT IDER Controller +	29f7  3200/3210 Chipset Serial KT Controller +	29f9  3210 Chipset Host-Secondary PCI Express Bridge +	2a00  Mobile PM965/GM965/GL960 Memory Controller Hub +		1025 0121  Acer Aspire 5920G +		1028 01f3  Inspiron 1420 +		103c 30c0  Compaq 6710b +		103c 30c1  Compaq 6910p +		103c 30cc  Pavilion dv6700 +		103c 30d9  Presario C700 +		104d 9005  Vaio VGN-FZ260E +		104d 902d  VAIO VGN-NR120E +		17aa 20b1  ThinkPad T61 +		17aa 20b3  ThinkPad T61/R61 +		17c0 4082  Medion WIM 2210 Notebook PC [MD96850] +		e4bf cc47  CCG-RUMBA +	2a01  Mobile PM965/GM965/GL960 PCI Express Root Port +	2a02  Mobile GM965/GL960 Integrated Graphics Controller (primary) +		1028 01f3  Inspiron 1420 +		1028 01f9  Latitude D630 +		103c 30c0  Compaq 6710b +		103c 30d9  Presario C700 +		104d 902d  VAIO VGN-NR120E +		17aa 20b5  ThinkPad T61/R61 +		17c0 4082  Medion WIM 2210 Notebook PC [MD96850] +		e4bf cc47  CCG-RUMBA +	2a03  Mobile GM965/GL960 Integrated Graphics Controller (secondary) +		1028 01f3  Inspiron 1420 +		103c 30c0  Compaq 6710b +		103c 30d9  Presario C700 +		104d 902d  VAIO VGN-NR120E +		17aa 20b5  ThinkPad T61/R61 +		17c0 4082  Medion WIM 2210 Notebook PC [MD96850] +		e4bf cc47  CCG-RUMBA +	2a04  Mobile PM965/GM965 MEI Controller +		103c 30c1  Compaq 6910p +	2a05  Mobile PM965/GM965 MEI Controller +	2a06  Mobile PM965/GM965 PT IDER Controller +		103c 30c1  Compaq 6910p +	2a07  Mobile PM965/GM965 KT Controller +		103c 30c1  Compaq 6910p +	2a10  Mobile GME965/GLE960 Memory Controller Hub +		e4bf cc47  CCG-RUMBA +	2a11  Mobile GME965/GLE960 PCI Express Root Port +	2a12  Mobile GME965/GLE960 Integrated Graphics Controller +		e4bf cc47  CCG-RUMBA +	2a13  Mobile GME965/GLE960 Integrated Graphics Controller +		e4bf cc47  CCG-RUMBA +	2a14  Mobile GME965/GLE960 MEI Controller +	2a15  Mobile GME965/GLE960 MEI Controller +	2a16  Mobile GME965/GLE960 PT IDER Controller +	2a17  Mobile GME965/GLE960 KT Controller +	2a40  Mobile 4 Series Chipset Memory Controller Hub +		e4bf cc4d  CCM-BOOGIE +	2a41  Mobile 4 Series Chipset PCI Express Graphics Port +		e4bf cc4d  CCM-BOOGIE +	2a42  Mobile 4 Series Chipset Integrated Graphics Controller +		e4bf cc4d  CCM-BOOGIE +	2a43  Mobile 4 Series Chipset Integrated Graphics Controller +		e4bf cc4d  CCM-BOOGIE +	2a44  Mobile 4 Series Chipset MEI Controller +	2a45  Mobile 4 Series Chipset MEI Controller +	2a46  Mobile 4 Series Chipset PT IDER Controller +	2a47  Mobile 4 Series Chipset AMT SOL Redirection +	2a50  Cantiga MEI Controller +	2a51  Cantiga MEI Controller +	2a52  Cantiga PT IDER Controller +	2a53  Cantiga AMT SOL Redirection +	2b00  Xeon Processor E7 Product Family System Configuration Controller 1 +	2b02  Xeon Processor E7 Product Family System Configuration Controller 2 +	2b04  Xeon Processor E7 Product Family Power Controller +	2b08  Xeon Processor E7 Product Family Caching Agent 0 +	2b0c  Xeon Processor E7 Product Family Caching Agent 1 +	2b10  Xeon Processor E7 Product Family QPI Home Agent 0 +	2b13  Xeon Processor E7 Product Family Memory Controller 0c +	2b14  Xeon Processor E7 Product Family Memory Controller 0a +	2b16  Xeon Processor E7 Product Family Memory Controller 0b +	2b18  Xeon Processor E7 Product Family QPI Home Agent 1 +	2b1b  Xeon Processor E7 Product Family Memory Controller 1c +	2b1c  Xeon Processor E7 Product Family Memory Controller 1a +	2b1e  Xeon Processor E7 Product Family Memory Controller 1b +	2b20  Xeon Processor E7 Product Family Last Level Cache Coherence Engine 0 +	2b22  Xeon Processor E7 Product Family System Configuration Controller 3 +	2b24  Xeon Processor E7 Product Family Last Level Cache Coherence Engine 1 +	2b28  Xeon Processor E7 Product Family Last Level Cache Coherence Engine 2 +	2b2a  Xeon Processor E7 Product Family System Configuration Controller 4 +	2b2c  Xeon Processor E7 Product Family Last Level Cache Coherence Engine 3 +	2b30  Xeon Processor E7 Product Family Last Level Cache Coherence Engine 4 +	2b34  Xeon Processor E7 Product Family Last Level Cache Coherence Engine 5 +	2b38  Xeon Processor E7 Product Family Last Level Cache Coherence Engine 6 +	2b3c  Xeon Processor E7 Product Family Last Level Cache Coherence Engine 7 +	2b40  Xeon Processor E7 Product Family QPI Router Port 0-1 +	2b42  Xeon Processor E7 Product Family QPI Router Port 2-3 +	2b44  Xeon Processor E7 Product Family QPI Router Port 4-5 +	2b46  Xeon Processor E7 Product Family QPI Router Port 6-7 +	2b48  Xeon Processor E7 Product Family Test and Debug 0 +	2b4c  Xeon Processor E7 Product Family Test and Debug 1 +	2b50  Xeon Processor E7 Product Family QPI Physical Port 0: REUT control/status +	2b52  Xeon Processor E7 Product Family QPI Physical Port 0: Misc. control/status +	2b54  Xeon Processor E7 Product Family QPI Physical Port 1: REUT control/status +	2b56  Xeon Processor E7 Product Family QPI Physical Port 1: Misc. control/status +	2b58  Xeon Processor E7 Product Family QPI Physical Port 2: REUT control/status +	2b5a  Xeon Processor E7 Product Family QPI Physical Port 2: Misc. control/status +	2b5c  Xeon Processor E7 Product Family QPI Physical Port 3: REUT control/status +	2b5e  Xeon Processor E7 Product Family QPI Physical Port 3: Misc. control/status +	2b60  Xeon Processor E7 Product Family SMI Physical Port 0: REUT control/status +	2b62  Xeon Processor E7 Product Family SMI Physical Port 0: Misc control/status +	2b64  Xeon Processor E7 Product Family SMI Physical Port 1: REUT control/status +	2b66  Xeon Processor E7 Product Family SMI Physical Port 1: Misc control/status +	2b68  Xeon Processor E7 Product Family Last Level Cache Coherence Engine 8 +	2b6c  Xeon Processor E7 Product Family Last Level Cache Coherence Engine 9 +	2c01  Xeon 5500/Core i7 QuickPath Architecture System Address Decoder +	2c10  Xeon 5500/Core i7 QPI Link 0 +	2c11  Xeon 5500/Core i7 QPI Physical 0 +	2c14  Xeon 5500/Core i7 QPI Link 1 +	2c15  Xeon 5500/Core i7 QPI Physical 1 +	2c18  Xeon 5500/Core i7 Integrated Memory Controller +	2c19  Xeon 5500/Core i7 Integrated Memory Controller Target Address Decoder +	2c1a  Xeon 5500/Core i7 Integrated Memory Controller RAS Registers +	2c1c  Xeon 5500/Core i7 Integrated Memory Controller Test Registers +	2c20  Xeon 5500/Core i7 Integrated Memory Controller Channel 0 Control Registers +	2c21  Xeon 5500/Core i7 Integrated Memory Controller Channel 0 Address Registers +	2c22  Xeon 5500/Core i7 Integrated Memory Controller Channel 0 Rank Registers +	2c23  Xeon 5500/Core i7 Integrated Memory Controller Channel 0 Thermal Control Registers +	2c28  Xeon 5500/Core i7 Integrated Memory Controller Channel 1 Control Registers +	2c29  Xeon 5500/Core i7 Integrated Memory Controller Channel 1 Address Registers +	2c2a  Xeon 5500/Core i7 Integrated Memory Controller Channel 1 Rank Registers +	2c2b  Xeon 5500/Core i7 Integrated Memory Controller Channel 1 Thermal Control Registers +	2c30  Xeon 5500/Core i7 Integrated Memory Controller Channel 2 Control Registers +	2c31  Xeon 5500/Core i7 Integrated Memory Controller Channel 2 Address Registers +	2c32  Xeon 5500/Core i7 Integrated Memory Controller Channel 2 Rank Registers +	2c33  Xeon 5500/Core i7 Integrated Memory Controller Channel 2 Thermal Control Registers +	2c40  Xeon 5500/Core i7 QuickPath Architecture Generic Non-Core Registers +	2c41  Xeon 5500/Core i7 QuickPath Architecture Generic Non-Core Registers +	2c50  Core Processor QuickPath Architecture Generic Non-Core Registers +	2c51  Core Processor QuickPath Architecture Generic Non-Core Registers +	2c52  Core Processor QuickPath Architecture Generic Non-Core Registers +	2c53  Core Processor QuickPath Architecture Generic Non-Core Registers +	2c54  Core Processor QuickPath Architecture Generic Non-Core Registers +	2c55  Core Processor QuickPath Architecture Generic Non-Core Registers +	2c56  Core Processor QuickPath Architecture Generic Non-Core Registers +	2c57  Core Processor QuickPath Architecture Generic Non-Core Registers +	2c58  Xeon C5500/C3500 QPI Generic Non-core Registers +	2c59  Xeon C5500/C3500 QPI Generic Non-core Registers +	2c5a  Xeon C5500/C3500 QPI Generic Non-core Registers +	2c5b  Xeon C5500/C3500 QPI Generic Non-core Registers +	2c5c  Xeon C5500/C3500 QPI Generic Non-core Registers +	2c5d  Xeon C5500/C3500 QPI Generic Non-core Registers +	2c5e  Xeon C5500/C3500 QPI Generic Non-core Registers +	2c5f  Xeon C5500/C3500 QPI Generic Non-core Registers +	2c61  Core Processor QuickPath Architecture Generic Non-core Registers +	2c62  Core Processor QuickPath Architecture Generic Non-core Registers +	2c70  Xeon 5600 Series QuickPath Architecture Generic Non-core Registers +	2c81  Core Processor QuickPath Architecture System Address Decoder +	2c90  Core Processor QPI Link 0 +	2c91  Core Processor QPI Physical 0 +	2c98  Core Processor Integrated Memory Controller +	2c99  Core Processor Integrated Memory Controller Target Address Decoder +	2c9a  Core Processor Integrated Memory Controller Test Registers +	2c9c  Core Processor Integrated Memory Controller Test Registers +	2ca0  Core Processor Integrated Memory Controller Channel 0 Control Registers +	2ca1  Core Processor Integrated Memory Controller Channel 0 Address Registers +	2ca2  Core Processor Integrated Memory Controller Channel 0 Rank Registers +	2ca3  Core Processor Integrated Memory Controller Channel 0 Thermal Control Registers +	2ca8  Core Processor Integrated Memory Controller Channel 1 Control Registers +	2ca9  Core Processor Integrated Memory Controller Channel 1 Address Registers +	2caa  Core Processor Integrated Memory Controller Channel 1 Rank Registers +	2cab  Core Processor Integrated Memory Controller Channel 1 Thermal Control Registers +	2cc1  Xeon C5500/C3500 QPI System Address Decoder +	2cd0  Xeon C5500/C3500 QPI Link 0 +	2cd1  Xeon C5500/C3500 QPI Physical 0 +	2cd4  Xeon C5500/C3500 QPI Link 1 +	2cd5  Xeon C5500/C3500 QPI Physical 1 +	2cd8  Xeon C5500/C3500 Integrated Memory Controller Registers +	2cd9  Xeon C5500/C3500 Integrated Memory Controller Target Address Decoder +	2cda  Xeon C5500/C3500 Integrated Memory Controller RAS Registers +	2cdc  Xeon C5500/C3500 Integrated Memory Controller Test Registers +	2ce0  Xeon C5500/C3500 Integrated Memory Controller Channel 0 Control +	2ce1  Xeon C5500/C3500 Integrated Memory Controller Channel 0 Address +	2ce2  Xeon C5500/C3500 Integrated Memory Controller Channel 0 Rank +	2ce3  Xeon C5500/C3500 Integrated Memory Controller Channel 0 Thermal Control +	2ce8  Xeon C5500/C3500 Integrated Memory Controller Channel 1 Control +	2ce9  Xeon C5500/C3500 Integrated Memory Controller Channel 1 Address +	2cea  Xeon C5500/C3500 Integrated Memory Controller Channel 1 Rank +	2ceb  Xeon C5500/C3500 Integrated Memory Controller Channel 1 Thermal Control +	2cf0  Xeon C5500/C3500 Integrated Memory Controller Channel 2 Control +	2cf1  Xeon C5500/C3500 Integrated Memory Controller Channel 2 Address +	2cf2  Xeon C5500/C3500 Integrated Memory Controller Channel 2 Rank +	2cf3  Xeon C5500/C3500 Integrated Memory Controller Channel 2 Thermal Control +	2d01  Core Processor QuickPath Architecture System Address Decoder +	2d10  Core Processor QPI Link 0 +	2d11  1st Generation Core Processor QPI Physical 0 +	2d12  1st Generation Core Processor Reserved +	2d13  1st Generation Core Processor Reserved +	2d81  Xeon 5600 Series QuickPath Architecture System Address Decoder +	2d90  Xeon 5600 Series QPI Link 0 +	2d91  Xeon 5600 Series QPI Physical 0 +	2d92  Xeon 5600 Series Mirror Port Link 0 +	2d93  Xeon 5600 Series Mirror Port Link 1 +	2d94  Xeon 5600 Series QPI Link 1 +	2d95  Xeon 5600 Series QPI Physical 1 +	2d98  Xeon 5600 Series Integrated Memory Controller Registers +	2d99  Xeon 5600 Series Integrated Memory Controller Target Address Decoder +	2d9a  Xeon 5600 Series Integrated Memory Controller RAS Registers +	2d9c  Xeon 5600 Series Integrated Memory Controller Test Registers +	2da0  Xeon 5600 Series Integrated Memory Controller Channel 0 Control +	2da1  Xeon 5600 Series Integrated Memory Controller Channel 0 Address +	2da2  Xeon 5600 Series Integrated Memory Controller Channel 0 Rank +	2da3  Xeon 5600 Series Integrated Memory Controller Channel 0 Thermal Control +	2da8  Xeon 5600 Series Integrated Memory Controller Channel 1 Control +	2da9  Xeon 5600 Series Integrated Memory Controller Channel 1 Address +	2daa  Xeon 5600 Series Integrated Memory Controller Channel 1 Rank +	2dab  Xeon 5600 Series Integrated Memory Controller Channel 1 Thermal Control +	2db0  Xeon 5600 Series Integrated Memory Controller Channel 2 Control +	2db1  Xeon 5600 Series Integrated Memory Controller Channel 2 Address +	2db2  Xeon 5600 Series Integrated Memory Controller Channel 2 Rank +	2db3  Xeon 5600 Series Integrated Memory Controller Channel 2 Thermal Control +	2e00  4 Series Chipset DRAM Controller +	2e01  4 Series Chipset PCI Express Root Port +	2e02  4 Series Chipset Integrated Graphics Controller +	2e03  4 Series Chipset Integrated Graphics Controller +	2e04  4 Series Chipset HECI Controller +	2e05  4 Series Chipset HECI Controller +	2e06  4 Series Chipset PT IDER Controller +	2e07  4 Series Chipset Serial KT Controller +	2e10  4 Series Chipset DRAM Controller +	2e11  4 Series Chipset PCI Express Root Port +	2e12  4 Series Chipset Integrated Graphics Controller +		17aa 3048  ThinkCentre M6258 +	2e13  4 Series Chipset Integrated Graphics Controller +	2e14  4 Series Chipset HECI Controller +	2e15  4 Series Chipset HECI Controller +	2e16  4 Series Chipset PT IDER Controller +	2e17  4 Series Chipset Serial KT Controller +	2e20  4 Series Chipset DRAM Controller +		1028 0283  Dell Vostro 220 +		1043 82d3  P5Q Deluxe Motherboard +		1458 5000  GA-EP45-DS5/GA-EG45M-DS2H Motherboard +	2e21  4 Series Chipset PCI Express Root Port +		1043 82d3  P5Q Deluxe Motherboard +		1458 5000  GA-EP45-DS5 Motherboard +	2e22  4 Series Chipset Integrated Graphics Controller +		1458 d000  GA-EG45M-DS2H Mainboard +	2e23  4 Series Chipset Integrated Graphics Controller +		1458 d000  GA-EG45M-DS2H Mainboard +	2e24  4 Series Chipset HECI Controller +	2e25  4 Series Chipset HECI Controller +	2e26  4 Series Chipset PT IDER Controller +	2e27  4 Series Chipset Serial KT Controller +	2e29  4 Series Chipset PCI Express Root Port +	2e30  4 Series Chipset DRAM Controller +	2e31  4 Series Chipset PCI Express Root Port +	2e32  4 Series Chipset Integrated Graphics Controller +	2e33  4 Series Chipset Integrated Graphics Controller +	2e34  4 Series Chipset HECI Controller +	2e35  4 Series Chipset HECI Controller +	2e36  4 Series Chipset PT IDER Controller +	2e37  4 Series Chipset Serial KT Controller +	2e40  4 Series Chipset DRAM Controller +	2e41  4 Series Chipset PCI Express Root Port +	2e42  4 Series Chipset Integrated Graphics Controller +	2e43  4 Series Chipset Integrated Graphics Controller +	2e44  4 Series Chipset HECI Controller +	2e45  4 Series Chipset HECI Controller +	2e46  4 Series Chipset PT IDER Controller +	2e47  4 Series Chipset Serial KT Controller +	2e50  CE Media Processor CE3100 +	2e52  CE Media Processor Clock and Reset Controller +	2e58  CE Media Processor Interrupt Controller +	2e5a  CE Media Processor CE3100 A/V Bridge +	2e5b  Graphics Media Accelerator 500 Graphics +	2e5c  CE Media Processor Video Decoder +	2e5d  CE Media Processor Transport Stream Interface +	2e5e  CE Media Processor Transport Stream Processor 0 +	2e5f  CE Media Processor Audio DSP +	2e60  CE Media Processor Audio Interfaces +	2e61  CE Media Processor Video Display Controller +	2e62  CE Media Processor Video Processing Unit +	2e63  CE Media Processor HDMI Tx Interface +	2e65  CE Media Processor Expansion Bus Interface +	2e66  CE Media Processor UART +	2e67  CE Media Processor General Purpose I/Os +	2e68  CE Media Processor I2C Interface +	2e69  CE Media Processor Smart Card Interface +	2e6a  CE Media Processor SPI Master Interface +	2e6e  CE Media Processor Gigabit Ethernet Controller +	2e6f  CE Media Processor Media Timing Unit +	2e70  CE Media Processor USB +	2e71  CE Media Processor SATA +	2e73  CE Media Processor CE3100 PCI Express +	2e90  4 Series Chipset DRAM Controller +	2e91  4 Series Chipset PCI Express Root Port +	2e92  4 Series Chipset Integrated Graphics Controller +	2e93  4 Series Chipset Integrated Graphics Controller +	2e94  4 Series Chipset HECI Controller +	2e95  4 Series Chipset HECI Controller +	2e96  4 Series Chipset PT IDER Controller +	2f00  Xeon E5 v3/Core i7 DMI2 +	2f01  Xeon E5 v3/Core i7 PCI Express Root Port 0 +	2f02  Xeon E5 v3/Core i7 PCI Express Root Port 1 +	2f03  Xeon E5 v3/Core i7 PCI Express Root Port 1 +	2f04  Xeon E5 v3/Core i7 PCI Express Root Port 2 +	2f05  Xeon E5 v3/Core i7 PCI Express Root Port 2 +	2f06  Xeon E5 v3/Core i7 PCI Express Root Port 2 +	2f07  Xeon E5 v3/Core i7 PCI Express Root Port 2 +	2f08  Xeon E5 v3/Core i7 PCI Express Root Port 3 +	2f09  Xeon E5 v3/Core i7 PCI Express Root Port 3 +	2f0a  Xeon E5 v3/Core i7 PCI Express Root Port 3 +	2f0b  Xeon E5 v3/Core i7 PCI Express Root Port 3 +	2f10  Xeon E5 v3/Core i7 IIO Debug +	2f11  Xeon E5 v3/Core i7 IIO Debug +	2f12  Xeon E5 v3/Core i7 IIO Debug +	2f13  Xeon E5 v3/Core i7 IIO Debug +	2f14  Xeon E5 v3/Core i7 IIO Debug +	2f15  Xeon E5 v3/Core i7 IIO Debug +	2f16  Xeon E5 v3/Core i7 IIO Debug +	2f17  Xeon E5 v3/Core i7 IIO Debug +	2f18  Xeon E5 v3/Core i7 IIO Debug +	2f19  Xeon E5 v3/Core i7 IIO Debug +	2f1a  Xeon E5 v3/Core i7 IIO Debug +	2f1b  Xeon E5 v3/Core i7 IIO Debug +	2f1c  Xeon E5 v3/Core i7 IIO Debug +	2f1d  Xeon E5 v3/Core i7 PCIe Ring Interface +	2f1e  Xeon E5 v3/Core i7 Scratchpad & Semaphore Registers +	2f1f  Xeon E5 v3/Core i7 Scratchpad & Semaphore Registers +	2f20  Xeon E5 v3/Core i7 DMA Channel 0 +	2f21  Xeon E5 v3/Core i7 DMA Channel 1 +	2f22  Xeon E5 v3/Core i7 DMA Channel 2 +	2f23  Xeon E5 v3/Core i7 DMA Channel 3 +	2f24  Xeon E5 v3/Core i7 DMA Channel 4 +	2f25  Xeon E5 v3/Core i7 DMA Channel 5 +	2f26  Xeon E5 v3/Core i7 DMA Channel 6 +	2f27  Xeon E5 v3/Core i7 DMA Channel 7 +	2f28  Xeon E5 v3/Core i7 Address Map, VTd_Misc, System Management +	2f29  Xeon E5 v3/Core i7 Hot Plug +	2f2a  Xeon E5 v3/Core i7 RAS, Control Status and Global Errors +	2f2c  Xeon E5 v3/Core i7 I/O APIC +	2f2e  Xeon E5 v3/Core i7 RAID 5/6 +	2f2f  Xeon E5 v3/Core i7 RAID 5/6 +	2f30  Xeon E5 v3/Core i7 Home Agent 0 +	2f32  Xeon E5 v3/Core i7 QPI Link 0 +	2f33  Xeon E5 v3/Core i7 QPI Link 1 +	2f34  Xeon E5 v3/Core i7 PCIe Ring Interface +	2f36  Xeon E5 v3/Core i7 R3 QPI Link 0 & 1 Monitoring +	2f37  Xeon E5 v3/Core i7 R3 QPI Link 0 & 1 Monitoring +	2f38  Xeon E5 v3/Core i7 Home Agent 1 +	2f39  Xeon E5 v3/Core i7 I/O Performance Monitoring +	2f3a  Xeon E5 v3/Core i7 QPI Link 2 +	2f3e  Xeon E5 v3/Core i7 R3 QPI Link 2 Monitoring +	2f3f  Xeon E5 v3/Core i7 R3 QPI Link 2 Monitoring +	2f40  Xeon E5 v3/Core i7 QPI Link 2 +	2f41  Xeon E5 v3/Core i7 R3 QPI Link 2 Monitoring +	2f43  Xeon E5 v3/Core i7 QPI Link 2 +	2f45  Xeon E5 v3/Core i7 QPI Link 2 Debug +	2f46  Xeon E5 v3/Core i7 QPI Link 2 Debug +	2f47  Xeon E5 v3/Core i7 QPI Link 2 Debug +	2f60  Xeon E5 v3/Core i7 Home Agent 1 +	2f68  Xeon E5 v3/Core i7 Integrated Memory Controller 1 Target Address, Thermal & RAS Registers +	2f6a  Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder +	2f6b  Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder +	2f6c  Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder +	2f6d  Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder +	2f6e  Xeon E5 v3/Core i7 DDRIO Channel 2/3 Broadcast +	2f6f  Xeon E5 v3/Core i7 DDRIO Global Broadcast +	2f70  Xeon E5 v3/Core i7 Home Agent 0 Debug +	2f71  Xeon E5 v3/Core i7 Integrated Memory Controller 0 Target Address, Thermal & RAS Registers +	2f76  Xeon E5 v3/Core i7 E3 QPI Link Debug +	2f78  Xeon E5 v3/Core i7 Home Agent 1 Debug +	2f79  Xeon E5 v3/Core i7 Integrated Memory Controller 1 Target Address, Thermal & RAS Registers +	2f7d  Xeon E5 v3/Core i7 Scratchpad & Semaphore Registers +	2f7e  Xeon E5 v3/Core i7 E3 QPI Link Debug +	2f80  Xeon E5 v3/Core i7 QPI Link 0 +	2f81  Xeon E5 v3/Core i7 R3 QPI Link 0 & 1 Monitoring +	2f83  Xeon E5 v3/Core i7 QPI Link 0 +	2f85  Xeon E5 v3/Core i7 QPI Link 0 Debug +	2f86  Xeon E5 v3/Core i7 QPI Link 0 Debug +	2f87  Xeon E5 v3/Core i7 QPI Link 0 Debug +	2f88  Xeon E5 v3/Core i7 VCU +	2f8a  Xeon E5 v3/Core i7 VCU +	2f90  Xeon E5 v3/Core i7 QPI Link 1 +	2f93  Xeon E5 v3/Core i7 QPI Link 1 +	2f95  Xeon E5 v3/Core i7 QPI Link 1 Debug +	2f96  Xeon E5 v3/Core i7 QPI Link 1 Debug +	2f98  Xeon E5 v3/Core i7 Power Control Unit +	2f99  Xeon E5 v3/Core i7 Power Control Unit +	2f9a  Xeon E5 v3/Core i7 Power Control Unit +	2f9c  Xeon E5 v3/Core i7 Power Control Unit +	2fa0  Xeon E5 v3/Core i7 Home Agent 0 +	2fa8  Xeon E5 v3/Core i7 Integrated Memory Controller 0 Target Address, Thermal & RAS Registers +	2faa  Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder +	2fab  Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder +	2fac  Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder +	2fad  Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder +	2fae  Xeon E5 v3/Core i7 DDRIO Channel 0/1 Broadcast +	2faf  Xeon E5 v3/Core i7 DDRIO Global Broadcast +	2fb0  Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 0 Thermal Control +	2fb1  Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 1 Thermal Control +	2fb2  Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 0 ERROR Registers +	2fb3  Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 1 ERROR Registers +	2fb4  Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 2 Thermal Control +	2fb5  Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 3 Thermal Control +	2fb6  Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 2 ERROR Registers +	2fb7  Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 3 ERROR Registers +	2fb8  Xeon E5 v3/Core i7 DDRIO (VMSE) 2 & 3 +	2fb9  Xeon E5 v3/Core i7 DDRIO (VMSE) 2 & 3 +	2fba  Xeon E5 v3/Core i7 DDRIO (VMSE) 2 & 3 +	2fbb  Xeon E5 v3/Core i7 DDRIO (VMSE) 2 & 3 +	2fbc  Xeon E5 v3/Core i7 DDRIO (VMSE) 0 & 1 +	2fbd  Xeon E5 v3/Core i7 DDRIO (VMSE) 0 & 1 +	2fbe  Xeon E5 v3/Core i7 DDRIO (VMSE) 0 & 1 +	2fbf  Xeon E5 v3/Core i7 DDRIO (VMSE) 0 & 1 +	2fc0  Xeon E5 v3/Core i7 Power Control Unit +	2fc1  Xeon E5 v3/Core i7 Power Control Unit +	2fc2  Xeon E5 v3/Core i7 Power Control Unit +	2fc3  Xeon E5 v3/Core i7 Power Control Unit +	2fc4  Xeon E5 v3/Core i7 Power Control Unit +	2fc5  Xeon E5 v3/Core i7 Power Control Unit +	2fd0  Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 0 Thermal Control +	2fd1  Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 1 Thermal Control +	2fd2  Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 0 ERROR Registers +	2fd3  Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 1 ERROR Registers +	2fd4  Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 2 Thermal Control +	2fd5  Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 3 Thermal Control +	2fd6  Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 2 ERROR Registers +	2fd7  Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 3 ERROR Registers +	2fe0  Xeon E5 v3/Core i7 Unicast Registers +	2fe1  Xeon E5 v3/Core i7 Unicast Registers +	2fe2  Xeon E5 v3/Core i7 Unicast Registers +	2fe3  Xeon E5 v3/Core i7 Unicast Registers +	2fe4  Xeon E5 v3/Core i7 Unicast Registers +	2fe5  Xeon E5 v3/Core i7 Unicast Registers +	2fe6  Xeon E5 v3/Core i7 Unicast Registers +	2fe7  Xeon E5 v3/Core i7 Unicast Registers +	2fe8  Xeon E5 v3/Core i7 Unicast Registers +	2fe9  Xeon E5 v3/Core i7 Unicast Registers +	2fea  Xeon E5 v3/Core i7 Unicast Registers +	2feb  Xeon E5 v3/Core i7 Unicast Registers +	2fec  Xeon E5 v3/Core i7 Unicast Registers +	2fed  Xeon E5 v3/Core i7 Unicast Registers +	2fee  Xeon E5 v3/Core i7 Unicast Registers +	2fef  Xeon E5 v3/Core i7 Unicast Registers +	2ff0  Xeon E5 v3/Core i7 Unicast Registers +	2ff1  Xeon E5 v3/Core i7 Unicast Registers +	2ff2  Xeon E5 v3/Core i7 Unicast Registers +	2ff3  Xeon E5 v3/Core i7 Unicast Registers +	2ff4  Xeon E5 v3/Core i7 Unicast Registers +	2ff5  Xeon E5 v3/Core i7 Unicast Registers +	2ff6  Xeon E5 v3/Core i7 Unicast Registers +	2ff7  Xeon E5 v3/Core i7 Unicast Registers +	2ff8  Xeon E5 v3/Core i7 Buffered Ring Agent +	2ff9  Xeon E5 v3/Core i7 Buffered Ring Agent +	2ffa  Xeon E5 v3/Core i7 Buffered Ring Agent +	2ffb  Xeon E5 v3/Core i7 Buffered Ring Agent +	2ffc  Xeon E5 v3/Core i7 System Address Decoder & Broadcast Registers +	2ffd  Xeon E5 v3/Core i7 System Address Decoder & Broadcast Registers +	2ffe  Xeon E5 v3/Core i7 System Address Decoder & Broadcast Registers +	3165  Wireless 3165 +# Stone Peak 1x1 +		8086 4010  Dual Band Wireless AC 3165 +# Stone Peak 1x1 +		8086 4210  Dual Band Wireless AC 3165 +	3200  GD31244 PCI-X SATA HBA +		1775 c200  C2K onboard SATA host bus adapter +	3310  IOP348 I/O Processor +		1054 3030  HRA380 Hitachi RAID Adapter to PCIe +		1054 3034  HRA381 Hitachi RAID Adapter to PCIe +	3313  IOP348 I/O Processor (SL8e) in IOC Mode SAS/SATA +	331b  IOP348 I/O Processor (SL8x) in IOC Mode SAS/SATA +	3331  IOC340 I/O Controller (VV8e) SAS/SATA +	3339  IOC340 I/O Controller (VV8x) SAS/SATA +	3340  82855PM Processor to I/O Controller +		1014 0529  Thinkpad T40 series +		1025 005a  TravelMate 290 +		103c 088c  NC8000 laptop +		103c 0890  NC6000 laptop +		103c 08b0  tc1100 tablet +		144d c005  X10 Laptop +		144d c00c  P30/P35 notebook +	3341  82855PM Processor to AGP Controller +		144d c00c  P30 notebook +	3363  IOC340 I/O Controller in IOC Mode SAS/SATA +	3382  81342 [Chevelon] I/O Processor (ATUe) +	33c3  IOP348 I/O Processor (SL8De) in IOC Mode SAS/SATA +	33cb  IOP348 I/O Processor (SL8Dx) in IOC Mode SAS/SATA +	3400  5520/5500/X58 I/O Hub to ESI Port +	3401  5520/5500/X58 I/O Hub to ESI Port +	3402  5520/5500/X58 I/O Hub to ESI Port +	3403  5500 I/O Hub to ESI Port +		1028 0236  PowerEdge R610 I/O Hub to ESI Port +		1028 0287  PowerEdge M610 I/O Hub to ESI Port +		1028 028c  PowerEdge R410 I/O Hub to ESI Port +		1028 028d  PowerEdge T410 I/O Hub to ESI Port +		103c 330b  ProLiant ML150 G6 Server +	3404  5520/5500/X58 I/O Hub to ESI Port +	3405  5520/5500/X58 I/O Hub to ESI Port +	3406  5520 I/O Hub to ESI Port +		103c 330b  ProLiant G6 series +	3407  5520/5500/X58 I/O Hub to ESI Port +	3408  5520/5500/X58 I/O Hub PCI Express Root Port 1 +		103c 330b  ProLiant G6 series +	3409  5520/5500/X58 I/O Hub PCI Express Root Port 2 +	340a  5520/5500/X58 I/O Hub PCI Express Root Port 3 +		103c 330b  ProLiant ML150 G6 Server +	340b  5520/X58 I/O Hub PCI Express Root Port 4 +	340c  5520/X58 I/O Hub PCI Express Root Port 5 +	340d  5520/X58 I/O Hub PCI Express Root Port 6 +	340e  5520/5500/X58 I/O Hub PCI Express Root Port 7 +		103c 330b  ProLiant ML150 G6 Server +	340f  5520/5500/X58 I/O Hub PCI Express Root Port 8 +	3410  7500/5520/5500/X58 I/O Hub PCI Express Root Port 9 +	3411  7500/5520/5500/X58 I/O Hub PCI Express Root Port 10 +	3418  7500/5520/5500/X58 Physical Layer Port 0 +	3419  7500/5520/5500 Physical Layer Port 1 +	3420  7500/5520/5500/X58 I/O Hub PCI Express Root Port 0 +	3421  7500/5520/5500/X58 I/O Hub PCI Express Root Port 0 +	3422  7500/5520/5500/X58 I/O Hub GPIO and Scratch Pad Registers +		103c 330b  ProLiant G6 series +	3423  7500/5520/5500/X58 I/O Hub Control Status and RAS Registers +		103c 330b  ProLiant G6 series +	3425  7500/5520/5500/X58 Physical and Link Layer Registers Port 0 +	3426  7500/5520/5500/X58 Routing and Protocol Layer Registers Port 0 +	3427  7500/5520/5500 Physical and Link Layer Registers Port 1 +	3428  7500/5520/5500 Routing & Protocol Layer Register Port 1 +	3429  5520/5500/X58 Chipset QuickData Technology Device +	342a  5520/5500/X58 Chipset QuickData Technology Device +	342b  5520/5500/X58 Chipset QuickData Technology Device +	342c  5520/5500/X58 Chipset QuickData Technology Device +	342d  7500/5520/5500/X58 I/O Hub I/OxAPIC Interrupt Controller +	342e  7500/5520/5500/X58 I/O Hub System Management Registers +		103c 330b  ProLiant G6 series +	342f  7500/5520/5500/X58 Trusted Execution Technology Registers +	3430  5520/5500/X58 Chipset QuickData Technology Device +	3431  5520/5500/X58 Chipset QuickData Technology Device +	3432  5520/5500/X58 Chipset QuickData Technology Device +	3433  5520/5500/X58 Chipset QuickData Technology Device +	3438  7500/5520/5500/X58 I/O Hub Throttle Registers +	3500  6311ESB/6321ESB PCI Express Upstream Port +		103c 31fe  ProLiant DL140 G3 +		15d9 9680  X7DBN Motherboard +	3501  6310ESB PCI Express Upstream Port +	3504  6311ESB/6321ESB I/OxAPIC Interrupt Controller +	3505  6310ESB I/OxAPIC Interrupt Controller +	350c  6311ESB/6321ESB PCI Express to PCI-X Bridge +		103c 31fe  ProLiant DL140 G3 +		15d9 9680  X7DBN Motherboard +	350d  6310ESB PCI Express to PCI-X Bridge +	3510  6311ESB/6321ESB PCI Express Downstream Port E1 +		103c 31fe  ProLiant DL140 G3 +		15d9 9680  X7DBN Motherboard +	3511  6310ESB PCI Express Downstream Port E1 +	3514  6311ESB/6321ESB PCI Express Downstream Port E2 +	3515  6310ESB PCI Express Downstream Port E2 +	3518  6311ESB/6321ESB PCI Express Downstream Port E3 +		15d9 9680  X7DBN Motherboard +	3519  6310ESB PCI Express Downstream Port E3 +	3575  82830M/MG/MP Host Bridge +		0e11 0030  Evo N600c +		1014 021d  ThinkPad A/T/X Series +		104d 80e7  VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP +	3576  82830M/MP AGP Bridge +	3577  82830M/MG Integrated Graphics Controller +		1014 0513  ThinkPad A/T/X Series +	3578  82830M/MG/MP Host Bridge +	3580  82852/82855 GM/GME/PM/GMV Processor to I/O Controller +		1014 055c  ThinkPad R50e +		1028 0139  Latitude D400 +		1028 014f  Latitude X300 +		1028 0152  Latitude D500 +		1028 0163  Latitude D505 +		1028 018d  Inspiron 700m/710m +		1028 0196  Inspiron 5160 +		114a 0582  PC8 +		1734 1055  Amilo M1420 +		1775 10d0  V5D Single Board Computer +		1775 ce90  CE9 +		4c53 10b0  CL9 mainboard +		4c53 10e0  PSL09 PrPMC +		e4bf 0cc9  CC9-SAMBA +		e4bf 0cd2  CD2-BEBOP +	3581  82852/82855 GM/GME/PM/GMV Processor to AGP Controller +		1734 1055  Amilo M1420 +	3582  82852/855GM Integrated Graphics Device +		1014 0562  ThinkPad R50e +		1028 0139  Latitude D400 +		1028 014f  Latitude X300 +		1028 0152  Latitude D500 +		1028 0163  Latitude D505 +		1028 018d  Inspiron 700m/710m +		114a 0582  PC8 integrated graphics +		1775 10d0  V5D Single Board Computer VGA +		1775 ce90  CE9 +		4c53 10b0  CL9 mainboard +		4c53 10e0  PSL09 PrPMC +		e4bf 0cc9  CC9-SAMBA +		e4bf 0cd2  CD2-BEBOP +	3584  82852/82855 GM/GME/PM/GMV Processor to I/O Controller +		1014 055d  ThinkPad R50e +		1028 0139  Latitude D400 +		1028 014f  Latitude X300 +		1028 0152  Latitude D500 +		1028 0163  Latitude D505 +		1028 018d  Inspiron 700m/710m +		1028 0196  Inspiron 5160 +		114a 0582  PC8 +		1734 1055  Amilo M1420 +		1775 10d0  V5D Single Board Computer +		1775 ce90  CE9 +		4c53 10b0  CL9 mainboard +		4c53 10e0  PSL09 PrPMC +	3585  82852/82855 GM/GME/PM/GMV Processor to I/O Controller +		1014 055e  ThinkPad R50e +		1028 0139  Latitude D400 +		1028 014f  Latitude X300 +		1028 0152  Latitude D500 +		1028 0163  Latitude D505 +		1028 018d  Inspiron 700m/710m +		1028 0196  Inspiron 5160 +		114a 0582  PC8 +		1734 1055  Amilo M1420 +		1775 10d0  V5D Single Board Computer +		1775 ce90  CE9 +		4c53 10b0  CL9 mainboard +		4c53 10e0  PSL09 PrPMC +	358c  82854 GMCH +	358e  82854 GMCH Integrated Graphics Device +	3590  E7520 Memory Controller Hub +		1014 02dd  eServer xSeries server mainboard +		1028 016c  PowerEdge 1850 Memory Controller Hub +		1028 016d  PowerEdge 2850 Memory Controller Hub +		1028 019a  PowerEdge SC1425 +		1734 103e  PRIMERGY RX/TX S2 series +		1775 1100  CR11/VR11 Single Board Computer +		4c53 10d0  Telum ASLP10 Processor AMC +	3591  E7525/E7520 Error Reporting Registers +		1014 02dd  eServer xSeries server mainboard +		1028 0168  Precision Workstation 670 Mainboard +		1028 0169  Precision 470 +		103c 3208  ProLiant DL140 G2 +		4c53 10d0  Telum ASLP10 Processor AMC +	3592  E7320 Memory Controller Hub +		1734 1073  Primergy Econel 200 D2020 mainboard +	3593  E7320 Error Reporting Registers +		1734 1073  Primergy Econel 200 D2020 mainboard +	3594  E7520 DMA Controller +		1775 1100  CR11/VR11 Single Board Computer +		4c53 10d0  Telum ASLP10 Processor AMC +	3595  E7525/E7520/E7320 PCI Express Port A +		1775 1100  CR11/VR11 Single Board Computer +	3596  E7525/E7520/E7320 PCI Express Port A1 +	3597  E7525/E7520 PCI Express Port B +		1775 1100  CR11/VR11 Single Board Computer +	3598  E7520 PCI Express Port B1 +		1775 1100  CR11/VR11 Single Board Computer +	3599  E7520 PCI Express Port C +		1775 1100  CR11/VR11 Single Board Computer +	359a  E7520 PCI Express Port C1 +	359b  E7525/E7520/E7320 Extended Configuration Registers +		1014 02dd  eServer xSeries server mainboard +	359e  E7525 Memory Controller Hub +		1028 0168  Precision Workstation 670 Mainboard +		1028 0169  Precision 470 +	35b0  3100 Chipset Memory I/O Controller Hub +	35b1  3100 DRAM Controller Error Reporting Registers +	35b5  3100 Chipset Enhanced DMA Controller +	35b6  3100 Chipset PCI Express Port A +	35b7  3100 Chipset PCI Express Port A1 +	35c8  3100 Extended Configuration Test Overflow Registers +	3600  7300 Chipset Memory Controller Hub +	3604  7300 Chipset PCI Express Port 1 +	3605  7300 Chipset PCI Express Port 2 +	3606  7300 Chipset PCI Express Port 3 +	3607  7300 Chipset PCI Express Port 4 +	3608  7300 Chipset PCI Express Port 5 +	3609  7300 Chipset PCI Express Port 6 +	360a  7300 Chipset PCI Express Port 7 +	360b  7300 Chipset QuickData Technology Device +	360c  7300 Chipset FSB Registers +		1028 01f0  PowerEdge R900 7300 Chipset FSB Registers +	360d  7300 Chipset Snoop Filter Registers +	360e  7300 Chipset Debug and Miscellaneous Registers +	360f  7300 Chipset FBD Branch 0 Registers +	3610  7300 Chipset FBD Branch 1 Registers +	3700  Xeon C5500/C3500 DMI +	3701  Xeon C5500/C3500 DMI +	3702  Xeon C5500/C3500 DMI +	3703  Xeon C5500/C3500 DMI +	3704  Xeon C5500/C3500 DMI +	3705  Xeon C5500/C3500 DMI +	3706  Xeon C5500/C3500 DMI +	3707  Xeon C5500/C3500 DMI +	3708  Xeon C5500/C3500 DMI +	3709  Xeon C5500/C3500 DMI +	370a  Xeon C5500/C3500 DMI +	370b  Xeon C5500/C3500 DMI +	370c  Xeon C5500/C3500 DMI +	370d  Xeon C5500/C3500 DMI +	370e  Xeon C5500/C3500 DMI +	370f  Xeon C5500/C3500 DMI +	3710  Xeon C5500/C3500 CB3 DMA +	3711  Xeon C5500/C3500 CB3 DMA +	3712  Xeon C5500/C3500 CB3 DMA +	3713  Xeon C5500/C3500 CB3 DMA +	3714  Xeon C5500/C3500 CB3 DMA +	3715  Xeon C5500/C3500 CB3 DMA +	3716  Xeon C5500/C3500 CB3 DMA +	3717  Xeon C5500/C3500 CB3 DMA +	3718  Xeon C5500/C3500 CB3 DMA +	3719  Xeon C5500/C3500 CB3 DMA +	371a  Xeon C5500/C3500 QPI Link +	371b  Xeon C5500/C3500 QPI Routing and Protocol +	371d  Xeon C5500/C3500 QPI Routing and Protocol +	3720  Xeon C5500/C3500 PCI Express Root Port 0 +	3721  Xeon C5500/C3500 PCI Express Root Port 1 +	3722  Xeon C5500/C3500 PCI Express Root Port 2 +	3723  Xeon C5500/C3500 PCI Express Root Port 3 +	3724  Xeon C5500/C3500 PCI Express Root Port 4 +	3725  Xeon C5500/C3500 NTB Primary +	3726  Xeon C5500/C3500 NTB Primary +	3727  Xeon C5500/C3500 NTB Secondary +	3728  Xeon C5500/C3500 Core +	3729  Xeon C5500/C3500 Core +	372a  Xeon C5500/C3500 Core +	372b  Xeon C5500/C3500 Core +	372c  Xeon C5500/C3500 Reserved +	373f  Xeon C5500/C3500 IOxAPIC +	3a00  82801JD/DO (ICH10 Family) 4-port SATA IDE Controller +	3a02  82801JD/DO (ICH10 Family) SATA AHCI Controller +	3a05  82801JD/DO (ICH10 Family) SATA RAID Controller +	3a06  82801JD/DO (ICH10 Family) 2-port SATA IDE Controller +	3a14  82801JDO (ICH10DO) LPC Interface Controller +	3a16  82801JIR (ICH10R) LPC Interface Controller +		1028 028c  PowerEdge R410 LPC Interface Controller +		1028 028d  PowerEdge T410 LPC Interface Controller +		103c 330b  ProLiant G6 series +		1043 82d4  P5Q Deluxe Motherboard +		1458 5001  GA-EP45-DS5 Motherboard +	3a18  82801JIB (ICH10) LPC Interface Controller +	3a1a  82801JD (ICH10D) LPC Interface Controller +	3a20  82801JI (ICH10 Family) 4 port SATA IDE Controller #1 +		1028 028c  PowerEdge R410 SATA IDE Controller +		1028 028d  PowerEdge T410 SATA IDE Controller +	3a22  82801JI (ICH10 Family) SATA AHCI Controller +		103c 330b  ProLiant G6 series +		1043 82d4  P5Q Deluxe Motherboard +		1458 b005  GA-EP45-DS5/GA-EG45M-DS2H Motherboard +	3a25  82801JIR (ICH10R) SATA RAID Controller +		1028 028c  PERC S100 Controller (PE R410) +		1028 028d  PERC S100 Controller (PE T410) +		1028 02f1  PERC S100 Controller (PE R510) +	3a26  82801JI (ICH10 Family) 2 port SATA IDE Controller #2 +		1028 028c  PowerEdge R410 SATA IDE Controller +		1028 028d  PowerEdge T410 SATA IDE Controller +	3a30  82801JI (ICH10 Family) SMBus Controller +		1043 82d4  P5Q Deluxe Motherboard +		1458 5001  GA-EP45-DS5/GA-EG45M-DS2H Motherboard +	3a32  82801JI (ICH10 Family) Thermal Subsystem +	3a34  82801JI (ICH10 Family) USB UHCI Controller #1 +		1028 028c  PowerEdge R410 USB UHCI Controller +		1028 028d  PowerEdge T410 USB UHCI Controller +		103c 330b  ProLiant G6 series +		1043 82d4  P5Q Deluxe Motherboard +		1458 5004  GA-EP45-DS5 Motherboard +	3a35  82801JI (ICH10 Family) USB UHCI Controller #2 +		1028 028c  PowerEdge R410 USB UHCI Controller +		1028 028d  PowerEdge T410 USB UHCI Controller +		103c 330b  ProLiant G6 series +		1043 82d4  P5Q Deluxe Motherboard +		1458 5004  GA-EP45-DS5 Motherboard +	3a36  82801JI (ICH10 Family) USB UHCI Controller #3 +		1028 028c  PowerEdge R410 USB UHCI Controller +		1028 028d  PowerEdge T410 USB UHCI Controller +		103c 330b  ProLiant G6 series +		1043 82d4  P5Q Deluxe Motherboard +		1458 5004  GA-EP45-DS5 Motherboard +	3a37  82801JI (ICH10 Family) USB UHCI Controller #4 +		1028 028c  PowerEdge R410 USB UHCI Controller +		1028 028d  PowerEdge T410 USB UHCI Controller +		103c 330b  ProLiant G6 series +		1043 82d4  P5Q Deluxe Motherboard +		1458 5004  Motherboard +	3a38  82801JI (ICH10 Family) USB UHCI Controller #5 +		1028 028c  PowerEdge R410 USB UHCI Controller +		1028 028d  PowerEdge T410 USB UHCI Controller +		103c 330b  ProLiant ML150 G6 Server +		1043 82d4  P5Q Deluxe Motherboard +		1458 5004  Motherboard +	3a39  82801JI (ICH10 Family) USB UHCI Controller #6 +		1028 028c  PowerEdge R410 USB UHCI Controller +		1028 028d  PowerEdge T410 USB UHCI Controller +		103c 330b  ProLiant ML150 G6 Server +		1043 82d4  P5Q Deluxe Motherboard +		1458 5004  Motherboard +	3a3a  82801JI (ICH10 Family) USB2 EHCI Controller #1 +		1028 028c  PowerEdge R410 USB EHCI Controller +		1028 028d  PowerEdge T410 USB EHCI Controller +		103c 330b  ProLiant G6 series +		1043 82d4  P5Q Deluxe Motherboard +		1458 5006  GA-EP45-DS5 Motherboard +	3a3c  82801JI (ICH10 Family) USB2 EHCI Controller #2 +		1028 028c  PowerEdge R410 USB EHCI Controller +		1028 028d  PowerEdge T410 USB EHCI Controller +		103c 330b  ProLiant G6 series +		1043 82d4  P5Q Deluxe Motherboard +		1458 5006  Motherboard +	3a3e  82801JI (ICH10 Family) HD Audio Controller +		1043 8311  P5Q Deluxe Motherboard +		1458 a002  GA-EP45-UD3R Motherboard +		1458 a102  GA-EP45-DS5/GA-EG45M-DS2H Motherboard +	3a40  82801JI (ICH10 Family) PCI Express Root Port 1 +		1028 028c  PowerEdge R410 PCI Express Port 1 +		1028 028d  PowerEdge T410 PCI Express Port 1 +		103c 330b  ProLiant ML150 G6 Server +		1043 82d4  P5Q Deluxe Motherboard +		1043 82ea  P6T DeLuxe Motherboard +		1458 5001  GA-EP45-DS5/GA-EG45M-DS2H Motherboard +	3a42  82801JI (ICH10 Family) PCI Express Port 2 +	3a44  82801JI (ICH10 Family) PCI Express Root Port 3 +		1043 82ea  P6T DeLuxe Motherboard +	3a46  82801JI (ICH10 Family) PCI Express Root Port 4 +		1043 82ea  P6T DeLuxe Motherboard +		1458 5001  GA-EP45-DS5 Motherboard +	3a48  82801JI (ICH10 Family) PCI Express Root Port 5 +		103c 330b  ProLiant ML150 G6 Server +		1043 82ea  P6T Deluxe Motherboard +		1458 5001  GA-EP45-DS5 Motherboard +	3a4a  82801JI (ICH10 Family) PCI Express Root Port 6 +		103c 330b  ProLiant ML150 G6 Server +		1043 82d4  P5Q Deluxe Motherboard +		1043 82ea  P6T DeLuxe Motherboard +		1458 5001  GA-EP45-DS5/GA-EG45M-DS2H Motherboard +	3a4c  82801JI (ICH10 Family) Gigabit Ethernet Controller +	3a51  82801JDO (ICH10DO) VECI Controller +	3a55  82801JD/DO (ICH10 Family) Virtual SATA Controller +	3a60  82801JD/DO (ICH10 Family) SMBus Controller +	3a62  82801JD/DO (ICH10 Family) Thermal Subsystem +	3a64  82801JD/DO (ICH10 Family) USB UHCI Controller #1 +	3a65  82801JD/DO (ICH10 Family) USB UHCI Controller #2 +	3a66  82801JD/DO (ICH10 Family) USB UHCI Controller #3 +	3a67  82801JD/DO (ICH10 Family) USB UHCI Controller #4 +	3a68  82801JD/DO (ICH10 Family) USB UHCI Controller #5 +	3a69  82801JD/DO (ICH10 Family) USB UHCI Controller #6 +	3a6a  82801JD/DO (ICH10 Family) USB2 EHCI Controller #1 +	3a6c  82801JD/DO (ICH10 Family) USB2 EHCI Controller #2 +	3a6e  82801JD/DO (ICH10 Family) HD Audio Controller +	3a70  82801JD/DO (ICH10 Family) PCI Express Port 1 +	3a72  82801JD/DO (ICH10 Family) PCI Express Port 2 +	3a74  82801JD/DO (ICH10 Family) PCI Express Port 3 +	3a76  82801JD/DO (ICH10 Family) PCI Express Port 4 +	3a78  82801JD/DO (ICH10 Family) PCI Express Port 5 +	3a7a  82801JD/DO (ICH10 Family) PCI Express Port 6 +	3a7c  82801JD/DO (ICH10 Family) Gigabit Ethernet Controller +	3b00  5 Series/3400 Series Chipset LPC Interface Controller +	3b01  Mobile 5 Series Chipset LPC Interface Controller +	3b02  5 Series Chipset LPC Interface Controller +	3b03  Mobile 5 Series Chipset LPC Interface Controller +	3b04  5 Series Chipset LPC Interface Controller +	3b05  Mobile 5 Series Chipset LPC Interface Controller +	3b06  5 Series Chipset LPC Interface Controller +	3b07  Mobile 5 Series Chipset LPC Interface Controller +		1028 040b  Latitude E6510 +		e4bf 50c1  PC1-GROOVE +	3b08  5 Series Chipset LPC Interface Controller +	3b09  Mobile 5 Series Chipset LPC Interface Controller +		1025 0347  Aspire 7740G +		144d c06a  R730 Laptop +		17c0 10d2  Medion Akoya E7214 Notebook PC [MD98410] +	3b0a  5 Series Chipset LPC Interface Controller +		1028 02da  OptiPlex 980 +		15d9 060d  C7SIM-Q Motherboard +	3b0b  Mobile 5 Series Chipset LPC Interface Controller +	3b0c  5 Series Chipset LPC Interface Controller +	3b0d  5 Series/3400 Series Chipset LPC Interface Controller +	3b0e  5 Series/3400 Series Chipset LPC Interface Controller +	3b0f  5 Series/3400 Series Chipset LPC Interface Controller +	3b10  5 Series/3400 Series Chipset LPC Interface Controller +	3b11  5 Series/3400 Series Chipset LPC Interface Controller +	3b12  3400 Series Chipset LPC Interface Controller +	3b13  5 Series/3400 Series Chipset LPC Interface Controller +	3b14  3400 Series Chipset LPC Interface Controller +	3b15  5 Series/3400 Series Chipset LPC Interface Controller +	3b16  3400 Series Chipset LPC Interface Controller +	3b17  5 Series/3400 Series Chipset LPC Interface Controller +	3b18  5 Series/3400 Series Chipset LPC Interface Controller +	3b19  5 Series/3400 Series Chipset LPC Interface Controller +	3b1a  5 Series/3400 Series Chipset LPC Interface Controller +	3b1b  5 Series/3400 Series Chipset LPC Interface Controller +	3b1c  5 Series/3400 Series Chipset LPC Interface Controller +	3b1d  5 Series/3400 Series Chipset LPC Interface Controller +	3b1e  5 Series/3400 Series Chipset LPC Interface Controller +	3b1f  5 Series/3400 Series Chipset LPC Interface Controller +	3b20  5 Series/3400 Series Chipset 4 port SATA IDE Controller +	3b21  5 Series/3400 Series Chipset 2 port SATA IDE Controller +	3b22  5 Series/3400 Series Chipset 6 port SATA AHCI Controller +		1028 02da  OptiPlex 980 +		15d9 060d  C7SIM-Q Motherboard +	3b23  5 Series/3400 Series Chipset 4 port SATA AHCI Controller +	3b25  5 Series/3400 Series Chipset SATA RAID Controller +		103c 3118  HP Smart Array B110i SATA RAID Controller +	3b26  5 Series/3400 Series Chipset 2 port SATA IDE Controller +	3b28  5 Series/3400 Series Chipset 4 port SATA IDE Controller +		144d c06a  R730 Laptop +		17c0 10d2  Medion Akoya E7214 Notebook PC [MD98410] +	3b29  5 Series/3400 Series Chipset 4 port SATA AHCI Controller +		1025 0347  Aspire 7740G +		144d c06a  R730 Laptop +		17c0 10d2  Medion Akoya E7214 Notebook PC [MD98410] +	3b2c  5 Series/3400 Series Chipset SATA RAID Controller +	3b2d  5 Series/3400 Series Chipset 2 port SATA IDE Controller +		144d c06a  R730 Laptop +		17c0 10d2  Medion Akoya E7214 Notebook PC [MD98410] +		e4bf 50c1  PC1-GROOVE +	3b2e  5 Series/3400 Series Chipset 4 port SATA IDE Controller +		e4bf 50c1  PC1-GROOVE +	3b2f  5 Series/3400 Series Chipset 6 port SATA AHCI Controller +		1028 040b  Latitude E6510 +		e4bf 50c1  PC1-GROOVE +	3b30  5 Series/3400 Series Chipset SMBus Controller +		1025 0347  Aspire 7740G +		1028 02da  OptiPlex 980 +		1028 040b  Latitude E6510 +		144d c06a  R730 Laptop +		15d9 060d  C7SIM-Q Motherboard +		17c0 10d2  Medion Akoya E7214 Notebook PC [MD98410] +		e4bf 50c1  PC1-GROOVE +	3b32  5 Series/3400 Series Chipset Thermal Subsystem +		1025 0347  Aspire 7740G +		144d c06a  R730 Laptop +		17c0 10d2  Medion Akoya E7214 Notebook PC [MD98410] +	3b34  5 Series/3400 Series Chipset USB2 Enhanced Host Controller +		1025 0347  Aspire 7740G +		1028 02da  OptiPlex 980 +		1028 040b  Latitude E6510 +		144d c06a  R730 Laptop +		15d9 060d  C7SIM-Q Motherboard +		17c0 10d2  Medion Akoya E7214 Notebook PC [MD98410] +		e4bf 50c1  PC1-GROOVE +	3b36  5 Series/3400 Series Chipset USB Universal Host Controller +	3b37  5 Series/3400 Series Chipset USB Universal Host Controller +	3b38  5 Series/3400 Series Chipset USB Universal Host Controller +	3b39  5 Series/3400 Series Chipset USB Universal Host Controller +	3b3a  5 Series/3400 Series Chipset USB Universal Host Controller +	3b3b  5 Series/3400 Series Chipset USB Universal Host Controller +	3b3c  5 Series/3400 Series Chipset USB2 Enhanced Host Controller +		1025 0347  Aspire 7740G +		1028 02da  OptiPlex 980 +		1028 040b  Latitude E6510 +		144d c06a  R730 Laptop +		15d9 060d  C7SIM-Q Motherboard +		17c0 10d2  Medion Akoya E7214 Notebook PC [MD98410] +		e4bf 50c1  PC1-GROOVE +	3b3e  5 Series/3400 Series Chipset USB Universal Host Controller +	3b3f  5 Series/3400 Series Chipset USB Universal Host Controller +	3b40  5 Series/3400 Series Chipset USB Universal Host Controller +	3b41  5 Series/3400 Series Chipset LAN Controller +	3b42  5 Series/3400 Series Chipset PCI Express Root Port 1 +		1028 02da  OptiPlex 980 +		1028 040b  Latitude E6510 +		144d c06a  R730 Laptop +		15d9 060d  C7SIM-Q Motherboard +		17c0 10d2  Medion Akoya E7214 Notebook PC [MD98410] +	3b44  5 Series/3400 Series Chipset PCI Express Root Port 2 +		1028 040b  Latitude E6510 +		15d9 060d  C7SIM-Q Motherboard +		17c0 10d2  Medion Akoya E7214 Notebook PC [MD98410] +	3b46  5 Series/3400 Series Chipset PCI Express Root Port 3 +		1028 040b  Latitude E6510 +		144d c06a  R730 Laptop +		17c0 10d2  Medion Akoya E7214 Notebook PC [MD98410] +	3b48  5 Series/3400 Series Chipset PCI Express Root Port 4 +		1028 040b  Latitude E6510 +		144d c06a  R730 Laptop +	3b4a  5 Series/3400 Series Chipset PCI Express Root Port 5 +		1028 02da  OptiPlex 980 +		17c0 10d2  Medion Akoya E7214 Notebook PC [MD98410] +	3b4c  5 Series/3400 Series Chipset PCI Express Root Port 6 +	3b4e  5 Series/3400 Series Chipset PCI Express Root Port 7 +	3b50  5 Series/3400 Series Chipset PCI Express Root Port 8 +	3b53  5 Series/3400 Series Chipset VECI Controller +	3b56  5 Series/3400 Series Chipset High Definition Audio +		1025 0347  Aspire 7740G +		1028 02da  OptiPlex 980 +		1028 040b  Latitude E6510 +		144d c06a  R730 Laptop +		15d9 060d  C7SIM-Q Motherboard +		17c0 10d2  Medion Akoya E7214 Notebook PC [MD98410] +		e4bf 50c1  PC1-GROOVE +	3b57  5 Series/3400 Series Chipset High Definition Audio +	3b64  5 Series/3400 Series Chipset HECI Controller +		1025 0347  Aspire 7740G +		15d9 060d  C7SIM-Q Motherboard +		17c0 10d2  Medion Akoya E7214 Notebook PC [MD98410] +		e4bf 50c1  PC1-GROOVE +	3b65  5 Series/3400 Series Chipset HECI Controller +	3b66  5 Series/3400 Series Chipset PT IDER Controller +	3b67  5 Series/3400 Series Chipset KT Controller +		e4bf 50c1  PC1-GROOVE +	3c00  Xeon E5/Core i7 DMI2 +	3c01  Xeon E5/Core i7 DMI2 in PCI Express Mode +	3c02  Xeon E5/Core i7 IIO PCI Express Root Port 1a +	3c03  Xeon E5/Core i7 IIO PCI Express Root Port 1b +	3c04  Xeon E5/Core i7 IIO PCI Express Root Port 2a +	3c05  Xeon E5/Core i7 IIO PCI Express Root Port 2b +	3c06  Xeon E5/Core i7 IIO PCI Express Root Port 2c +	3c07  Xeon E5/Core i7 IIO PCI Express Root Port 2d +	3c08  Xeon E5/Core i7 IIO PCI Express Root Port 3a in PCI Express Mode +	3c09  Xeon E5/Core i7 IIO PCI Express Root Port 3b +	3c0a  Xeon E5/Core i7 IIO PCI Express Root Port 3c +	3c0b  Xeon E5/Core i7 IIO PCI Express Root Port 3d +	3c0d  Xeon E5/Core i7 Non-Transparent Bridge +	3c0e  Xeon E5/Core i7 Non-Transparent Bridge +	3c0f  Xeon E5/Core i7 Non-Transparent Bridge +	3c20  Xeon E5/Core i7 DMA Channel 0 +	3c21  Xeon E5/Core i7 DMA Channel 1 +	3c22  Xeon E5/Core i7 DMA Channel 2 +	3c23  Xeon E5/Core i7 DMA Channel 3 +	3c24  Xeon E5/Core i7 DMA Channel 4 +	3c25  Xeon E5/Core i7 DMA Channel 5 +	3c26  Xeon E5/Core i7 DMA Channel 6 +	3c27  Xeon E5/Core i7 DMA Channel 7 +	3c28  Xeon E5/Core i7 Address Map, VTd_Misc, System Management +	3c2a  Xeon E5/Core i7 Control Status and Global Errors +	3c2c  Xeon E5/Core i7 I/O APIC +	3c2e  Xeon E5/Core i7 DMA +	3c2f  Xeon E5/Core i7 DMA +	3c40  Xeon E5/Core i7 IIO Switch and IRP Performance Monitor +	3c43  Xeon E5/Core i7 Ring to PCI Express Performance Monitor +	3c44  Xeon E5/Core i7 Ring to QuickPath Interconnect Link 0 Performance Monitor +	3c45  Xeon E5/Core i7 Ring to QuickPath Interconnect Link 1 Performance Monitor +	3c46  Xeon E5/Core i7 Processor Home Agent Performance Monitoring +	3c71  Xeon E5/Core i7 Integrated Memory Controller RAS Registers +	3c80  Xeon E5/Core i7 QPI Link 0 +	3c83  Xeon E5/Core i7 QPI Link Reut 0 +	3c84  Xeon E5/Core i7 QPI Link Reut 0 +	3c90  Xeon E5/Core i7 QPI Link 1 +	3c93  Xeon E5/Core i7 QPI Link Reut 1 +	3c94  Xeon E5/Core i7 QPI Link Reut 1 +	3ca0  Xeon E5/Core i7 Processor Home Agent +	3ca8  Xeon E5/Core i7 Integrated Memory Controller Registers +	3caa  Xeon E5/Core i7 Integrated Memory Controller Target Address Decoder 0 +	3cab  Xeon E5/Core i7 Integrated Memory Controller Target Address Decoder 1 +	3cac  Xeon E5/Core i7 Integrated Memory Controller Target Address Decoder 2 +	3cad  Xeon E5/Core i7 Integrated Memory Controller Target Address Decoder 3 +	3cae  Xeon E5/Core i7 Integrated Memory Controller Target Address Decoder 4 +	3cb0  Xeon E5/Core i7 Integrated Memory Controller Channel 0-3 Thermal Control 0 +	3cb1  Xeon E5/Core i7 Integrated Memory Controller Channel 0-3 Thermal Control 1 +	3cb2  Xeon E5/Core i7 Integrated Memory Controller ERROR Registers 0 +	3cb3  Xeon E5/Core i7 Integrated Memory Controller ERROR Registers 1 +	3cb4  Xeon E5/Core i7 Integrated Memory Controller Channel 0-3 Thermal Control 2 +	3cb5  Xeon E5/Core i7 Integrated Memory Controller Channel 0-3 Thermal Control 3 +	3cb6  Xeon E5/Core i7 Integrated Memory Controller ERROR Registers 2 +	3cb7  Xeon E5/Core i7 Integrated Memory Controller ERROR Registers 3 +	3cb8  Xeon E5/Core i7 DDRIO +	3cc0  Xeon E5/Core i7 Power Control Unit 0 +	3cc1  Xeon E5/Core i7 Power Control Unit 1 +	3cc2  Xeon E5/Core i7 Power Control Unit 2 +	3cd0  Xeon E5/Core i7 Power Control Unit 3 +	3ce0  Xeon E5/Core i7 Interrupt Control Registers +	3ce3  Xeon E5/Core i7 Semaphore and Scratchpad Configuration Registers +	3ce4  Xeon E5/Core i7 R2PCIe +	3ce6  Xeon E5/Core i7 QuickPath Interconnect Agent Ring Registers +	3ce8  Xeon E5/Core i7 Unicast Register 0 +	3ce9  Xeon E5/Core i7 Unicast Register 5 +	3cea  Xeon E5/Core i7 Unicast Register 1 +	3ceb  Xeon E5/Core i7 Unicast Register 6 +	3cec  Xeon E5/Core i7 Unicast Register 3 +	3ced  Xeon E5/Core i7 Unicast Register 7 +	3cee  Xeon E5/Core i7 Unicast Register 4 +	3cef  Xeon E5/Core i7 Unicast Register 8 +	3cf4  Xeon E5/Core i7 Integrated Memory Controller System Address Decoder 0 +	3cf5  Xeon E5/Core i7 Integrated Memory Controller System Address Decoder 1 +	3cf6  Xeon E5/Core i7 System Address Decoder +	4000  5400 Chipset Memory Controller Hub +	4001  5400 Chipset Memory Controller Hub +	4003  5400 Chipset Memory Controller Hub +	4021  5400 Chipset PCI Express Port 1 +	4022  5400 Chipset PCI Express Port 2 +	4023  5400 Chipset PCI Express Port 3 +	4024  5400 Chipset PCI Express Port 4 +	4025  5400 Chipset PCI Express Port 5 +	4026  5400 Chipset PCI Express Port 6 +	4027  5400 Chipset PCI Express Port 7 +	4028  5400 Chipset PCI Express Port 8 +	4029  5400 Chipset PCI Express Port 9 +	402d  5400 Chipset IBIST Registers +	402e  5400 Chipset IBIST Registers +	402f  5400 Chipset QuickData Technology Device +	4030  5400 Chipset FSB Registers +	4031  5400 Chipset CE/SF Registers +	4032  5400 Chipset IOxAPIC +	4035  5400 Chipset FBD Registers +	4036  5400 Chipset FBD Registers +	4100  Moorestown Graphics and Video +	4108  Atom Processor E6xx Integrated Graphics Controller +	4109  Atom Processor E6xx Integrated Graphics Controller +	410a  Atom Processor E6xx Integrated Graphics Controller +	410b  Atom Processor E6xx Integrated Graphics Controller +	410c  Atom Processor E6xx Integrated Graphics Controller +	410d  Atom Processor E6xx Integrated Graphics Controller +	410e  Atom Processor E6xx Integrated Graphics Controller +	410f  Atom Processor E6xx Integrated Graphics Controller +	4114  Atom Processor E6xx PCI Host Bridge #1 +	4115  Atom Processor E6xx PCI Host Bridge #2 +	4116  Atom Processor E6xx PCI Host Bridge #3 +	4117  Atom Processor E6xx PCI Host Bridge #4 +	4220  PRO/Wireless 2200BG [Calexico2] Network Connection +		103c 0934  Compaq nw8240/nx8220 +		103c 12f6  nc6120/nx8220/nw8240 +		8086 2701  WM3B2300BG Mini-PCI Card +		8086 2712  IBM ThinkPad R50e +		8086 2721  Dell B130 laptop integrated WLAN +		8086 2722  Dell Latitude D600 +		8086 2731  Samsung P35 integrated WLAN +	4222  PRO/Wireless 3945ABG [Golan] Network Connection +		103c 135c  PRO/Wireless 3945ABG [Golan] Network Connection +		8086 1000  PRO/Wireless 3945ABG Network Connection +		8086 1001  WM3945ABG MOW2 +		8086 1005  PRO/Wireless 3945BG Network Connection +		8086 1034  PRO/Wireless 3945BG Network Connection +		8086 1044  PRO/Wireless 3945BG Network Connection +		8086 1c00  PRO/Wireless 3945ABG Network Connection +	4223  PRO/Wireless 2915ABG [Calexico2] Network Connection +		1000 8086  mPCI 3B Americas/Europe ZZA +		1001 8086  mPCI 3B Europe ZZE +		1002 8086  mPCI 3B Japan ZZJ +		1003 8086  mPCI 3B High-Band ZZH +		1351 103c  Compaq NC6220 +	4224  PRO/Wireless 2915ABG [Calexico2] Network Connection +	4227  PRO/Wireless 3945ABG [Golan] Network Connection +		8086 1011  ThinkPad T60/R60e/X60s +		8086 1014  PRO/Wireless 3945BG Network Connection +	4229  PRO/Wireless 4965 AG or AGN [Kedron] Network Connection +		8086 1100  Vaio VGN-SZ79SN_C +		8086 1101  PRO/Wireless 4965 AG or AGN +	422b  Centrino Ultimate-N 6300 +		8086 1101  Centrino Ultimate-N 6300 3x3 AGN +		8086 1121  Centrino Ultimate-N 6300 3x3 AGN +	422c  Centrino Advanced-N 6200 +		8086 1301  Centrino Advanced-N 6200 2x2 AGN +		8086 1306  Centrino Advanced-N 6200 2x2 ABG +		8086 1307  Centrino Advanced-N 6200 2x2 BG +		8086 1321  Centrino Advanced-N 6200 2x2 AGN +		8086 1326  Centrino Advanced-N 6200 2x2 ABG +	4230  PRO/Wireless 4965 AG or AGN [Kedron] Network Connection +		8086 1110  Lenovo ThinkPad T51 +		8086 1111  Lenovo ThinkPad T61 +	4232  WiFi Link 5100 +		8086 1201  WiFi Link 5100 AGN +		8086 1204  WiFi Link 5100 AGN +		8086 1205  WiFi Link 5100 BGN +		8086 1206  WiFi Link 5100 ABG +		8086 1221  WiFi Link 5100 AGN +		8086 1224  WiFi Link 5100 AGN +		8086 1225  WiFi Link 5100 BGN +		8086 1226  WiFi Link 5100 ABG +		8086 1301  WiFi Link 5100 AGN +		8086 1304  WiFi Link 5100 AGN +		8086 1305  WiFi Link 5100 BGN +		8086 1306  WiFi Link 5100 ABG +		8086 1321  WiFi Link 5100 AGN +		8086 1324  WiFi Link 5100 AGN +		8086 1325  WiFi Link 5100 BGN +		8086 1326  WiFi Link 5100 ABG +	4235  Ultimate N WiFi Link 5300 +	4236  Ultimate N WiFi Link 5300 +	4237  PRO/Wireless 5100 AGN [Shiloh] Network Connection +		8086 1211  WiFi Link 5100 AGN +		8086 1214  WiFi Link 5100 AGN +		8086 1215  WiFi Link 5100 BGN +		8086 1216  WiFi Link 5100 ABG +		8086 1311  WiFi Link 5100 AGN +		8086 1314  WiFi Link 5100 AGN +		8086 1315  WiFi Link 5100 BGN +		8086 1316  WiFi Link 5100 ABG +	4238  Centrino Ultimate-N 6300 +		8086 1111  Centrino Ultimate-N 6300 3x3 AGN +	4239  Centrino Advanced-N 6200 +		8086 1311  Centrino Advanced-N 6200 2x2 AGN +		8086 1316  Centrino Advanced-N 6200 2x2 ABG +	423a  PRO/Wireless 5350 AGN [Echo Peak] Network Connection +	423b  PRO/Wireless 5350 AGN [Echo Peak] Network Connection +	423c  WiMAX/WiFi Link 5150 +		8086 1201  WiMAX/WiFi Link 5150 AGN +		8086 1206  WiMAX/WiFi Link 5150 ABG +		8086 1221  WiMAX/WiFi Link 5150 AGN +		8086 1301  WiMAX/WiFi Link 5150 AGN +		8086 1306  WiMAX/WiFi Link 5150 ABG +		8086 1321  WiMAX/WiFi Link 5150 AGN +	423d  WiMAX/WiFi Link 5150 +		8086 1211  WiMAX/WiFi Link 5150 AGN +		8086 1216  WiMAX/WiFi Link 5150 ABG +		8086 1311  WiMAX/WiFi Link 5150 AGN +		8086 1316  WiMAX/WiFi Link 5150 ABG +	444e  Turbo Memory Controller +	5001  LE80578 +	5002  LE80578 Graphics Processor Unit +	5009  LE80578 Video Display Controller +	500d  LE80578 Expansion Bus +	500e  LE80578 UART Controller +	500f  LE80578 General Purpose IO +	5010  LE80578 I2C Controller +	5012  LE80578 Serial Peripheral Interface Bus +	5020  EP80579 Memory Controller Hub +	5021  EP80579 DRAM Error Reporting Registers +	5023  EP80579 EDMA Controller +	5024  EP80579 PCI Express Port PEA0 +	5025  EP80579 PCI Express Port PEA1 +	5028  EP80579 S-ATA IDE +	5029  EP80579 S-ATA AHCI +	502a  EP80579 S-ATA Reserved +	502b  EP80579 S-ATA Reserved +	502c  EP80579 Integrated Processor ASU +	502d  EP80579 Integrated Processor with QuickAssist ASU +	502e  EP80579 Reserved +	502f  EP80579 Reserved +	5030  EP80579 Reserved +	5031  EP80579 LPC Bus +	5032  EP80579 SMBus Controller +	5033  EP80579 USB 1.1 Controller +	5035  EP80579 USB 2.0 Controller +	5037  EP80579 PCI-PCI Bridge (transparent mode) +	5039  EP80579 Controller Area Network (CAN) interface #1 +	503a  EP80579 Controller Area Network (CAN) interface #2 +	503b  EP80579 Synchronous Serial Port (SPP) +	503c  EP80579 IEEE 1588 Hardware Assist +	503d  EP80579 Local Expansion Bus +	503e  EP80579 Global Control Unit (GCU) +	503f  EP80579 Reserved +	5040  EP80579 Integrated Processor Gigabit Ethernet MAC +	5041  EP80579 Integrated Processor with QuickAssist Gigabit Ethernet MAC +	5042  EP80579 Reserved +	5043  EP80579 Reserved +	5044  EP80579 Integrated Processor Gigabit Ethernet MAC +	5045  EP80579 Integrated Processor with QuickAssist Gigabit Ethernet MAC +	5046  EP80579 Reserved +	5047  EP80579 Reserved +	5048  EP80579 Integrated Processor Gigabit Ethernet MAC +	5049  EP80579 Integrated Processor with QuickAssist Gigabit Ethernet MAC +	504a  EP80579 Reserved +	504b  EP80579 Reserved +	504c  EP80579 Integrated Processor with QuickAssist TDM +	5200  EtherExpress PRO/100 Intelligent Server PCI Bridge +	5201  EtherExpress PRO/100 Intelligent Server Fast Ethernet Controller +		8086 0001  EtherExpress PRO/100 Server Ethernet Adapter +	530d  80310 (IOP) IO Processor +	5845  QEMU NVM Express Controller +		1af4 1100  QEMU Virtual Machine +	65c0  5100 Chipset Memory Controller Hub +	65e2  5100 Chipset PCI Express x4 Port 2 +	65e3  5100 Chipset PCI Express x4 Port 3 +	65e4  5100 Chipset PCI Express x4 Port 4 +	65e5  5100 Chipset PCI Express x4 Port 5 +	65e6  5100 Chipset PCI Express x4 Port 6 +	65e7  5100 Chipset PCI Express x4 Port 7 +	65f0  5100 Chipset FSB Registers +		1028 020f  PowerEdge R300 +		1028 0210  PowerEdge T300 +	65f1  5100 Chipset Reserved Registers +		1028 0210  PowerEdge T300 +	65f3  5100 Chipset Reserved Registers +	65f5  5100 Chipset DDR Channel 0 Registers +	65f6  5100 Chipset DDR Channel 1 Registers +	65f7  5100 Chipset PCI Express x8 Port 2-3 +	65f8  5100 Chipset PCI Express x8 Port 4-5 +	65f9  5100 Chipset PCI Express x8 Port 6-7 +	65fa  5100 Chipset PCI Express x16 Port 4-7 +	65ff  5100 Chipset DMA Engine +	6f00  Broadwell DMI2 +	6f01  Broadwell PCI Express Root Port 0 +	6f02  Broadwell PCI Express Root Port 1 +	6f03  Broadwell PCI Express Root Port 1 +	6f04  Broadwell PCI Express Root Port 2 +	6f05  Broadwell PCI Express Root Port 2 +	6f06  Broadwell PCI Express Root Port 2 +	6f07  Broadwell PCI Express Root Port 2 +	6f08  Broadwell PCI Express Root Port 3 +	6f09  Broadwell PCI Express Root Port 3 +	6f0a  Broadwell PCI Express Root Port 3 +	6f0b  Broadwell PCI Express Root Port 3 +	6f10  Broadwell IIO Debug +	6f11  Broadwell IIO Debug +	6f12  Broadwell IIO Debug +	6f13  Broadwell IIO Debug +	6f14  Broadwell IIO Debug +	6f15  Broadwell IIO Debug +	6f16  Broadwell IIO Debug +	6f17  Broadwell IIO Debug +	6f18  Broadwell IIO Debug +	6f19  Broadwell IIO Debug +	6f1a  Broadwell IIO Debug +	6f1b  Broadwell IIO Debug +	6f1c  Broadwell IIO Debug +	6f1d  Broadwell R2PCIe Agent +	6f1e  Broadwell Ubox +	6f1f  Broadwell Ubox +	6f20  Broadwell-DE Crystal Beach DMA Channel 0 +	6f21  Broadwell-DE Crystal Beach DMA Channel 1 +	6f22  Broadwell-DE Crystal Beach DMA Channel 2 +	6f23  Broadwell-DE Crystal Beach DMA Channel 3 +	6f24  Broadwell-DE Crystal Beach DMA Channel 4 +	6f25  Broadwell-DE Crystal Beach DMA Channel 5 +	6f26  Broadwell-DE Crystal Beach DMA Channel 6 +	6f27  Broadwell-DE Crystal Beach DMA Channel 7 +	6f28  Broadwell Adress Map/VTd_Misc/System Management +	6f29  Broadwell IIO Hot Plug +	6f2a  Broadwell IIO RAS/Control Status/Global Errors +	6f2c  Broadwell I/O APIC +	6f30  Broadwell Home Agent 0 +	6f32  Broadwell QPI Link 0 +	6f33  Broadwell QPI Link 1 +	6f34  Broadwell R2PCIe Agent +	6f36  Broadwell R3 QPI Link 0/1 +	6f37  Broadwell R3 QPI Link 0/1 +	6f38  Broadwell Home Agent 1 +	6f39  Broadwell IO Performance Monitoring +	6f3a  Broadwell QPI Link 2 +	6f3e  Broadwell R3 QPI Link 2 +	6f3f  Broadwell R3 QPI Link 2 +	6f40  Broadwell QPI Link 2 +	6f41  Broadwell R3 QPI Link 2 +	6f43  Broadwell QPI Link 2 +	6f45  Broadwell QPI Link 2 Debug +	6f46  Broadwell QPI Link 2 Debug +	6f47  Broadwell QPI Link 2 Debug +	6f60  Broadwell Home Agent 1 +	6f68  Broadwell Target Address/Thermal/RAS +	6f6a  Broadwell Channel Target Address Decoder +	6f6b  Broadwell Channel Target Address Decoder +	6f6c  Broadwell Channel Target Address Decoder +	6f6d  Broadwell Channel Target Address Decoder +	6f6e  Broadwell DDRIO Channel 2/3 Broadcast +	6f6f  Broadwell DDRIO Global Broadcast +	6f70  Broadwell Home Agent 0 Debug +	6f71  Broadwell Memory Controller 0 - Target Address/Thermal/RAS +	6f76  Broadwell R3 QPI Link Debug +	6f78  Broadwell Home Agent 1 Debug +	6f79  Broadwell Target Address/Thermal/RAS +	6f7d  Broadwell Ubox +	6f7e  Broadwell R3 QPI Link Debug +	6f80  Broadwell QPI Link 0 +	6f81  Broadwell R3 QPI Link 0/1 +	6f83  Broadwell QPI Link 0 +	6f85  Broadwell QPI Link 0 Debug +	6f86  Broadwell QPI Link 0 Debug +	6f87  Broadwell QPI Link 0 Debug +	6f88  Broadwell Power Control Unit +	6f8a  Broadwell Power Control Unit +	6f90  Broadwell QPI Link 1 +	6f93  Broadwell QPI Link 1 +	6f95  Broadwell QPI Link 1 Debug +	6f96  Broadwell QPI Link 1 Debug +	6f98  Broadwell Power Control Unit +	6f99  Broadwell Power Control Unit +	6f9a  Broadwell Power Control Unit +	6f9c  Broadwell Power Control Unit +	6fa0  Broadwell Home Agent 0 +	6fa8  Broadwell Memory Controller 0 - Target Address/Thermal/RAS +	6faa  Broadwell Memory Controller 0 - Channel Target Address Decoder +	6fab  Broadwell Memory Controller 0 - Channel Target Address Decoder +	6fac  Broadwell Memory Controller 0 - Channel Target Address Decoder +	6fad  Broadwell Memory Controller 0 - Channel Target Address Decoder +	6fae  Broadwell DDRIO Channel 0/1 Broadcast +	6faf  Broadwell DDRIO Global Broadcast +	6fb0  Broadwell Memory Controller 0 - Channel 0 Thermal Control +	6fb1  Broadwell Memory Controller 0 - Channel 1 Thermal Control +	6fb2  Broadwell Memory Controller 0 - Channel 0 Error +	6fb3  Broadwell Memory Controller 0 - Channel 1 Error +	6fb4  Broadwell Memory Controller 0 - Channel 2 Thermal Control +	6fb5  Broadwell Memory Controller 0 - Channel 3 Thermal Control +	6fb6  Broadwell Memory Controller 0 - Channel 2 Error +	6fb7  Broadwell Memory Controller 0 - Channel 3 Error +	6fb8  Broadwell DDRIO Channel 2/3 Interface +	6fb9  Broadwell DDRIO Channel 2/3 Interface +	6fba  Broadwell DDRIO Channel 2/3 Interface +	6fbb  Broadwell DDRIO Channel 2/3 Interface +	6fbc  Broadwell DDRIO Channel 0/1 Interface +	6fbd  Broadwell DDRIO Channel 0/1 Interface +	6fbe  Broadwell DDRIO Channel 0/1 Interface +	6fbf  Broadwell DDRIO Channel 0/1 Interface +	6fc0  Broadwell Power Control Unit +	6fc1  Broadwell Power Control Unit +	6fc2  Broadwell Power Control Unit +	6fc3  Broadwell Power Control Unit +	6fc4  Broadwell Power Control Unit +	6fc5  Broadwell Power Control Unit +	6fc6  Broadwell Power Control Unit +	6fc7  Broadwell Power Control Unit +	6fc8  Broadwell Power Control Unit +	6fc9  Broadwell Power Control Unit +	6fca  Broadwell Power Control Unit +	6fcb  Broadwell Power Control Unit +	6fcc  Broadwell Power Control Unit +	6fcd  Broadwell Power Control Unit +	6fce  Broadwell Power Control Unit +	6fcf  Broadwell Power Control Unit +	6fd0  Broadwell Memory Controller 1 - Channel 0 Thermal Control +	6fd1  Broadwell Memory Controller 1 - Channel 1 Thermal Control +	6fd2  Broadwell Memory Controller 1 - Channel 0 Error +	6fd3  Broadwell Memory Controller 1 - Channel 1 Error +	6fd4  Broadwell Memory Controller 1 - Channel 2 Thermal Control +	6fd5  Broadwell Memory Controller 1 - Channel 3 Thermal Control +	6fd6  Broadwell Memory Controller 1 - Channel 2 Error +	6fd7  Broadwell Memory Controller 1 - Channel 3 Error +	6fe0  Broadwell Caching Agent +	6fe1  Broadwell Caching Agent +	6fe2  Broadwell Caching Agent +	6fe3  Broadwell Caching Agent +	6fe4  Broadwell Caching Agent +	6fe5  Broadwell Caching Agent +	6fe6  Broadwell Caching Agent +	6fe7  Broadwell Caching Agent +	6fe8  Broadwell Caching Agent +	6fe9  Broadwell Caching Agent +	6fea  Broadwell Caching Agent +	6feb  Broadwell Caching Agent +	6fec  Broadwell Caching Agent +	6fed  Broadwell Caching Agent +	6fee  Broadwell Caching Agent +	6fef  Broadwell Caching Agent +	6ff0  Broadwell Caching Agent +	6ff1  Broadwell Caching Agent +	6ff8  Broadwell Caching Agent +	6ff9  Broadwell Caching Agent +	6ffa  Broadwell Caching Agent +	6ffb  Broadwell Caching Agent +	6ffc  Broadwell Caching Agent +	6ffd  Broadwell Caching Agent +	6ffe  Broadwell Caching Agent +	7000  82371SB PIIX3 ISA [Natoma/Triton II] +		1af4 1100  Qemu virtual machine +	7010  82371SB PIIX3 IDE [Natoma/Triton II] +		1af4 1100  Qemu virtual machine +	7020  82371SB PIIX3 USB [Natoma/Triton II] +		1af4 1100  QEMU Virtual Machine +	7030  430VX - 82437VX TVX [Triton VX] +	7050  Intercast Video Capture Card +	7051  PB 642365-003 (Business Video Conferencing Card) +	7100  430TX - 82439TX MTXC +	7110  82371AB/EB/MB PIIX4 ISA +		15ad 1976  Virtual Machine Chipset +	7111  82371AB/EB/MB PIIX4 IDE +		15ad 1976  Virtual Machine Chipset +	7112  82371AB/EB/MB PIIX4 USB +		15ad 1976  Virtual Machine Chipset +		1af4 1100  QEMU Virtual Machine +	7113  82371AB/EB/MB PIIX4 ACPI +		15ad 1976  Virtual Machine Chipset +		1af4 1100  Qemu virtual machine +	7120  82810 GMCH (Graphics Memory Controller Hub) +		4c53 1040  CL7 mainboard +		4c53 1060  PC7 mainboard +	7121  82810 (CGC) Chipset Graphics Controller +		4c53 1040  CL7 mainboard +		4c53 1060  PC7 mainboard +		8086 4341  Cayman (CA810) Mainboard +	7122  82810 DC-100 (GMCH) Graphics Memory Controller Hub +	7123  82810 DC-100 (CGC) Chipset Graphics Controller +	7124  82810E DC-133 (GMCH) Graphics Memory Controller Hub +		1028 00b4  OptiPlex GX110 +	7125  82810E DC-133 (CGC) Chipset Graphics Controller +		1028 00b4  OptiPlex GX110 +	7126  82810 DC-133 System and Graphics Controller +	7128  82810-M DC-100 System and Graphics Controller +	712a  82810-M DC-133 System and Graphics Controller +	7180  440LX/EX - 82443LX/EX Host bridge +	7181  440LX/EX - 82443LX/EX AGP bridge +	7190  440BX/ZX/DX - 82443BX/ZX/DX Host bridge +		0e11 0500  Armada 1750 Laptop System Chipset +		0e11 b110  Armada M700/E500 +		1028 008e  PowerEdge 1300 mainboard +		1043 803b  CUBX-L/E Mainboard +		1179 0001  Toshiba Tecra 8100 Laptop System Chipset +		15ad 1976  Virtual Machine Chipset +		4c53 1050  CT7 mainboard +		4c53 1051  CE7 mainboard +	7191  440BX/ZX/DX - 82443BX/ZX/DX AGP bridge +		1028 008e  PowerEdge 1300 mainboard +	7192  440BX/ZX/DX - 82443BX/ZX/DX Host bridge (AGP disabled) +		0e11 0460  Armada 1700 Laptop System Chipset +		1179 0001  Satellite 4010 +		4c53 1000  CC7/CR7/CP7/VC7/VP7/VR7 mainboard +		8086 7190  Dell PowerEdge 350 +	7194  82440MX Host Bridge +		1033 0000  Versa Note Vxi +		4c53 10a0  CA3/CR3 mainboard +	7195  82440MX AC'97 Audio Controller +		1033 80cc  Versa Note VXi +		10cf 1099  QSound_SigmaTel Stac97 PCI Audio +		11d4 0040  SoundMAX Integrated Digital Audio +		11d4 0048  SoundMAX Integrated Digital Audio +	7196  82440MX AC'97 Modem Controller +	7198  82440MX ISA Bridge +	7199  82440MX EIDE Controller +	719a  82440MX USB Universal Host Controller +	719b  82440MX Power Management Controller +	71a0  440GX - 82443GX Host bridge +		4c53 1050  CT7 mainboard +		4c53 1051  CE7 mainboard +	71a1  440GX - 82443GX AGP bridge +	71a2  440GX - 82443GX Host bridge (AGP disabled) +		4c53 1000  CC7/CR7/CP7/VC7/VP7/VR7 mainboard +	7600  82372FB PIIX5 ISA +	7601  82372FB PIIX5 IDE +	7602  82372FB PIIX5 USB +	7603  82372FB PIIX5 SMBus +	7800  82740 (i740) AGP Graphics Accelerator +		003d 0008  Starfighter AGP +		003d 000b  Starfighter AGP +		1092 0100  Stealth II G460 +		10b4 201a  Lightspeed 740 +		10b4 202f  Lightspeed 740 +		8086 0000  Terminator 2x/i +		8086 0100  Intel740 Graphics Accelerator +	8002  Trusted Execution Technology Registers +	8003  Trusted Execution Technology Registers +	8100  System Controller Hub (SCH Poulsbo) +	8108  System Controller Hub (SCH Poulsbo) Graphics Controller +	8110  System Controller Hub (SCH Poulsbo) PCI Express Port 1 +	8112  System Controller Hub (SCH Poulsbo) PCI Express Port 2 +	8114  System Controller Hub (SCH Poulsbo) USB UHCI #1 +	8115  System Controller Hub (SCH Poulsbo) USB UHCI #2 +	8116  System Controller Hub (SCH Poulsbo) USB UHCI #3 +	8117  System Controller Hub (SCH Poulsbo) USB EHCI #1 +	8118  System Controller Hub (SCH Poulsbo) USB Client Controller +	8119  System Controller Hub (SCH Poulsbo) LPC Bridge +	811a  System Controller Hub (SCH Poulsbo) IDE Controller +	811b  System Controller Hub (SCH Poulsbo) HD Audio Controller +	811c  System Controller Hub (SCH Poulsbo) SDIO Controller #1 +	811d  System Controller Hub (SCH Poulsbo) SDIO Controller #2 +	811e  System Controller Hub (SCH Poulsbo) SDIO Controller #3 +	8180  Atom Processor E6xx PCI Express Port 3 +	8181  Atom Processor E6xx PCI Express Port 4 +	8182  Atom Processor E6xx Integrated Graphics Controller +	8183  Atom Processor E6xx Configuration Unit +	8184  Atom Processor E6xx PCI Express Port 1 +	8185  Atom Processor E6xx PCI Express Port 2 +	8186  Atom Processor E6xx LPC Bridge +	84c4  450KX/GX [Orion] - 82454KX/GX PCI bridge +	84c5  450KX/GX [Orion] - 82453KX/GX Memory controller +	84ca  450NX - 82451NX Memory & I/O Controller +	84cb  450NX - 82454NX/84460GX PCI Expander Bridge +	84e0  460GX - 84460GX System Address Controller (SAC) +	84e1  460GX - 84460GX System Data Controller (SDC) +	84e2  460GX - 84460GX AGP Bridge (GXB function 2) +	84e3  460GX - 84460GX Memory Address Controller (MAC) +	84e4  460GX - 84460GX Memory Data Controller (MDC) +	84e6  460GX - 82466GX Wide and fast PCI eXpander Bridge (WXB) +	84ea  460GX - 84460GX AGP Bridge (GXB function 1) +	8500  IXP4XX Network Processor (IXP420/421/422/425/IXC1100) +		1993 0ded  mGuard-PCI AV#2 +		1993 0dee  mGuard-PCI AV#1 +		1993 0def  mGuard-PCI AV#0 +	8800  Platform Controller Hub EG20T PCI Express Port +	8801  Platform Controller Hub EG20T Packet Hub +	8802  Platform Controller Hub EG20T Gigabit Ethernet Controller +	8803  Platform Controller Hub EG20T General Purpose IO Controller +	8804  Platform Controller Hub EG20T USB OHCI Controller #4 +	8805  Platform Controller Hub EG20T USB OHCI Controller #5 +	8806  Platform Controller Hub EG20T USB OHCI Controller #6 +	8807  Platform Controller Hub EG20T USB2 EHCI Controller #2 +	8808  Platform Controller Hub EG20T USB Client Controller +	8809  Platform Controller Hub EG20T SDIO Controller #1 +	880a  Platform Controller Hub EG20T SDIO Controller #2 +	880b  Platform Controller Hub EG20T SATA AHCI Controller +	880c  Platform Controller Hub EG20T USB OHCI Controller #1 +	880d  Platform Controller Hub EG20T USB OHCI Controller #2 +	880e  Platform Controller Hub EG20T USB OHCI Controller #3 +	880f  Platform Controller Hub EG20T USB2 EHCI Controller #1 +	8810  Platform Controller Hub EG20T DMA Controller #1 +	8811  Platform Controller Hub EG20T UART Controller 0 +	8812  Platform Controller Hub EG20T UART Controller 1 +	8813  Platform Controller Hub EG20T UART Controller 2 +	8814  Platform Controller Hub EG20T UART Controller 3 +	8815  Platform Controller Hub EG20T DMA Controller #2 +	8816  Platform Controller Hub EG20T Serial Peripheral Interface Bus +	8817  Platform Controller Hub EG20T I2C Controller +	8818  Platform Controller Hub EG20T Controller Area Network (CAN) Controller +	8819  Platform Controller Hub EG20T IEEE 1588 Hardware Assist +	8c00  8 Series/C220 Series Chipset Family 4-port SATA Controller 1 [IDE mode] +	8c01  8 Series Chipset Family 4-port SATA Controller 1 [IDE mode] - Mobile +	8c02  8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode] +	8c03  8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode] +		103c 1909  ZBook 15 +		17aa 220e  ThinkPad T440p +	8c04  8 Series/C220 Series Chipset Family SATA Controller 1 [RAID mode] +	8c05  8 Series/C220 Series Chipset Family SATA Controller 1 [RAID mode] +	8c06  8 Series/C220 Series Chipset Family SATA Controller 1 [RAID mode] +	8c07  8 Series/C220 Series Chipset Family SATA Controller 1 [RAID mode] +	8c08  8 Series/C220 Series Chipset Family 2-port SATA Controller 2 [IDE mode] +	8c09  8 Series/C220 Series Chipset Family 2-port SATA Controller 2 [IDE mode] +	8c0e  8 Series/C220 Series Chipset Family SATA Controller 1 [RAID mode] +	8c0f  8 Series/C220 Series Chipset Family SATA Controller 1 [RAID mode] +	8c10  8 Series/C220 Series Chipset Family PCI Express Root Port #1 +		17aa 220e  ThinkPad T440p +	8c11  8 Series/C220 Series Chipset Family PCI Express Root Port #1 +	8c12  8 Series/C220 Series Chipset Family PCI Express Root Port #2 +		17aa 220e  ThinkPad T440p +	8c13  8 Series/C220 Series Chipset Family PCI Express Root Port #2 +	8c14  8 Series/C220 Series Chipset Family PCI Express Root Port #3 +	8c15  8 Series/C220 Series Chipset Family PCI Express Root Port #3 +	8c16  8 Series/C220 Series Chipset Family PCI Express Root Port #4 +	8c17  8 Series/C220 Series Chipset Family PCI Express Root Port #4 +	8c18  8 Series/C220 Series Chipset Family PCI Express Root Port #5 +	8c19  8 Series/C220 Series Chipset Family PCI Express Root Port #5 +	8c1a  8 Series/C220 Series Chipset Family PCI Express Root Port #6 +	8c1b  8 Series/C220 Series Chipset Family PCI Express Root Port #6 +	8c1c  8 Series/C220 Series Chipset Family PCI Express Root Port #7 +	8c1d  8 Series/C220 Series Chipset Family PCI Express Root Port #7 +	8c1e  8 Series/C220 Series Chipset Family PCI Express Root Port #8 +	8c1f  8 Series/C220 Series Chipset Family PCI Express Root Port #8 +	8c20  8 Series/C220 Series Chipset High Definition Audio Controller +		103c 1909  ZBook 15 +		17aa 220e  ThinkPad T440p +	8c21  8 Series/C220 Series Chipset High Definition Audio Controller +	8c22  8 Series/C220 Series Chipset Family SMBus Controller +		103c 1909  ZBook 15 +		17aa 220e  ThinkPad T440p +	8c23  8 Series Chipset Family CHAP Counters +	8c24  8 Series Chipset Family Thermal Management Controller +	8c26  8 Series/C220 Series Chipset Family USB EHCI #1 +		103c 1909  ZBook 15 +		17aa 220e  ThinkPad T440p +	8c2d  8 Series/C220 Series Chipset Family USB EHCI #2 +		103c 1909  ZBook 15 +		17aa 220e  ThinkPad T440p +	8c31  8 Series/C220 Series Chipset Family USB xHCI +		103c 1909  ZBook 15 +		17aa 220e  ThinkPad T440p +	8c33  8 Series/C220 Series Chipset Family LAN Controller +	8c34  8 Series/C220 Series Chipset Family NAND Controller +	8c3a  8 Series/C220 Series Chipset Family MEI Controller #1 +		103c 1909  ZBook 15 +		17aa 220e  ThinkPad T440p +	8c3b  8 Series/C220 Series Chipset Family MEI Controller #2 +	8c3c  8 Series/C220 Series Chipset Family IDE-r Controller +	8c3d  8 Series/C220 Series Chipset Family KT Controller +	8c40  8 Series/C220 Series Chipset Family LPC Controller +	8c41  8 Series Chipset Family Mobile Super SKU LPC Controller +	8c42  8 Series/C220 Series Chipset Family Desktop Super SKU LPC Controller +	8c43  8 Series/C220 Series Chipset Family LPC Controller +	8c44  Z87 Express LPC Controller +	8c45  8 Series/C220 Series Chipset Family LPC Controller +	8c46  Z85 Express LPC Controller +	8c47  8 Series/C220 Series Chipset Family LPC Controller +	8c48  8 Series/C220 Series Chipset Family LPC Controller +	8c49  HM86 Express LPC Controller +	8c4a  H87 Express LPC Controller +	8c4b  HM87 Express LPC Controller +	8c4c  Q85 Express LPC Controller +	8c4d  8 Series/C220 Series Chipset Family LPC Controller +	8c4e  Q87 Express LPC Controller +	8c4f  QM87 Express LPC Controller +		103c 1909  ZBook 15 +		17aa 220e  ThinkPad T440p +	8c50  B85 Express LPC Controller +	8c51  8 Series/C220 Series Chipset Family LPC Controller +	8c52  C222 Series Chipset Family Server Essential SKU LPC Controller +	8c53  8 Series/C220 Series Chipset Family LPC Controller +	8c54  C224 Series Chipset Family Server Standard SKU LPC Controller +	8c55  8 Series/C220 Series Chipset Family LPC Controller +	8c56  C226 Series Chipset Family Server Advanced SKU LPC Controller +	8c57  8 Series/C220 Series Chipset Family LPC Controller +	8c58  8 Series/C220 Series Chipset Family WS SKU LPC Controller +	8c59  8 Series/C220 Series Chipset Family LPC Controller +	8c5a  8 Series/C220 Series Chipset Family LPC Controller +	8c5b  8 Series/C220 Series Chipset Family LPC Controller +	8c5c  C220 Series Chipset Family H81 Express LPC Controller +	8c5d  8 Series/C220 Series Chipset Family LPC Controller +	8c5e  8 Series/C220 Series Chipset Family LPC Controller +	8c5f  8 Series/C220 Series Chipset Family LPC Controller +	8c80  9 Series Chipset Family SATA Controller [IDE Mode] +	8c81  9 Series Chipset Family SATA Controller [IDE Mode] +	8c82  9 Series Chipset Family SATA Controller [AHCI Mode] +	8c83  9 Series Chipset Family SATA Controller [AHCI Mode] +	8c84  9 Series Chipset Family SATA Controller [RAID Mode] +	8c85  9 Series Chipset Family SATA Controller [RAID Mode] +	8c86  9 Series Chipset Family SATA Controller [RAID Mode] +	8c87  9 Series Chipset Family SATA Controller [RAID Mode] +	8c88  9 Series Chipset Family SATA Controller [IDE Mode] +	8c89  9 Series Chipset Family SATA Controller [IDE Mode] +	8c8e  9 Series Chipset Family SATA Controller [RAID Mode] +	8c8f  9 Series Chipset Family SATA Controller [RAID Mode] +	8c90  9 Series Chipset Family PCI Express Root Port 1 +	8c92  9 Series Chipset Family PCI Express Root Port 2 +	8c94  9 Series Chipset Family PCI Express Root Port 3 +	8c96  9 Series Chipset Family PCI Express Root Port 4 +	8c98  9 Series Chipset Family PCI Express Root Port 5 +	8c9a  9 Series Chipset Family PCI Express Root Port 6 +	8c9c  9 Series Chipset Family PCI Express Root Port 7 +	8c9e  9 Series Chipset Family PCI Express Root Port 8 +	8ca0  9 Series Chipset Family HD Audio Controller +	8ca2  9 Series Chipset Family SMBus Controller +	8ca4  9 Series Chipset Family Thermal Controller +	8ca6  9 Series Chipset Family USB EHCI Controller #1 +	8cad  9 Series Chipset Family USB EHCI Controller #2 +	8cb1  9 Series Chipset Family USB xHCI Controller +	8cb3  9 Series Chipset Family LAN Controller +	8cba  9 Series Chipset Family ME Interface #1 +	8cbb  9 Series Chipset Family ME Interface #2 +	8cbc  9 Series Chipset Family IDE-R Controller +	8cbd  9 Series Chipset Family KT Controller +	8cc1  9 Series Chipset Family LPC Controller +	8cc2  9 Series Chipset Family LPC Controller +	8cc3  9 Series Chipset Family HM97 LPC Controller +	8cc4  9 Series Chipset Family Z97 LPC Controller +	8cc6  9 Series Chipset Family H97 Controller +	8d00  C610/X99 series chipset 4-port SATA Controller [IDE mode] +	8d02  C610/X99 series chipset 6-Port SATA Controller [AHCI mode] +	8d04  C610/X99 series chipset SATA Controller [RAID mode] +	8d06  C610/X99 series chipset SATA Controller [RAID mode] +		17aa 1031  ThinkServer RAID 110i +	8d08  C610/X99 series chipset 2-port SATA Controller [IDE mode] +	8d0e  C610/X99 series chipset SATA Controller [RAID mode] +	8d10  C610/X99 series chipset PCI Express Root Port #1 +	8d11  C610/X99 series chipset PCI Express Root Port #1 +	8d12  C610/X99 series chipset PCI Express Root Port #2 +	8d13  C610/X99 series chipset PCI Express Root Port #2 +	8d14  C610/X99 series chipset PCI Express Root Port #3 +	8d15  C610/X99 series chipset PCI Express Root Port #3 +	8d16  C610/X99 series chipset PCI Express Root Port #4 +	8d17  C610/X99 series chipset PCI Express Root Port #4 +	8d18  C610/X99 series chipset PCI Express Root Port #5 +	8d19  C610/X99 series chipset PCI Express Root Port #5 +	8d1a  C610/X99 series chipset PCI Express Root Port #6 +	8d1b  C610/X99 series chipset PCI Express Root Port #6 +	8d1c  C610/X99 series chipset PCI Express Root Port #7 +	8d1d  C610/X99 series chipset PCI Express Root Port #7 +	8d1e  C610/X99 series chipset PCI Express Root Port #8 +	8d1f  C610/X99 series chipset PCI Express Root Port #8 +	8d20  C610/X99 series chipset HD Audio Controller +	8d21  C610/X99 series chipset HD Audio Controller +	8d22  C610/X99 series chipset SMBus Controller +	8d24  C610/X99 series chipset Thermal Subsystem +	8d26  C610/X99 series chipset USB Enhanced Host Controller #1 +	8d2d  C610/X99 series chipset USB Enhanced Host Controller #2 +	8d31  C610/X99 series chipset USB xHCI Host Controller +	8d33  C610/X99 series chipset LAN Controller +	8d34  C610/X99 series chipset NAND Controller +	8d3a  C610/X99 series chipset MEI Controller #1 +	8d3b  C610/X99 series chipset MEI Controller #2 +	8d3c  C610/X99 series chipset IDE-r Controller +	8d3d  C610/X99 series chipset KT Controller +	8d40  C610/X99 series chipset LPC Controller +	8d41  C610/X99 series chipset LPC Controller +	8d42  C610/X99 series chipset LPC Controller +	8d43  C610/X99 series chipset LPC Controller +	8d44  C610/X99 series chipset LPC Controller +	8d45  C610/X99 series chipset LPC Controller +	8d46  C610/X99 series chipset LPC Controller +	8d47  C610/X99 series chipset LPC Controller +	8d48  C610/X99 series chipset LPC Controller +	8d49  C610/X99 series chipset LPC Controller +	8d4a  C610/X99 series chipset LPC Controller +	8d4b  C610/X99 series chipset LPC Controller +	8d4c  C610/X99 series chipset LPC Controller +	8d4d  C610/X99 series chipset LPC Controller +	8d4e  C610/X99 series chipset LPC Controller +	8d4f  C610/X99 series chipset LPC Controller +	8d60  C610/X99 series chipset sSATA Controller [IDE mode] +	8d62  C610/X99 series chipset sSATA Controller [AHCI mode] +	8d64  C610/X99 series chipset sSATA Controller [RAID mode] +	8d66  C610/X99 series chipset sSATA Controller [RAID mode] +	8d68  C610/X99 series chipset sSATA Controller [IDE mode] +	8d6e  C610/X99 series chipset sSATA Controller [RAID mode] +	8d7c  C610/X99 series chipset SPSR +	8d7d  C610/X99 series chipset MS SMBus 0 +	8d7e  C610/X99 series chipset MS SMBus 1 +	8d7f  C610/X99 series chipset MS SMBus 2 +	9000  IXP2000 Family Network Processor +	9001  IXP2400 Network Processor +	9002  IXP2300 Network Processor +	9004  IXP2800 Network Processor +	9621  Integrated RAID +	9622  Integrated RAID +	9641  Integrated RAID +	96a1  Integrated RAID +	9c00  8 Series SATA Controller 1 [IDE mode] +	9c01  8 Series SATA Controller 1 [IDE mode] +	9c02  8 Series SATA Controller 1 [AHCI mode] +	9c03  8 Series SATA Controller 1 [AHCI mode] +		17aa 2214  ThinkPad X240 +	9c04  8 Series SATA Controller 1 [RAID mode] +	9c05  8 Series SATA Controller 1 [RAID mode] +	9c06  8 Series SATA Controller 1 [RAID mode] +	9c07  8 Series SATA Controller 1 [RAID mode] +	9c08  8 Series SATA Controller 2 [IDE mode] +	9c09  8 Series SATA Controller 2 [IDE mode] +	9c0a  8 Series SATA Controller [Reserved] +	9c0b  8 Series SATA Controller [Reserved] +	9c0c  8 Series SATA Controller [Reserved] +	9c0d  8 Series SATA Controller [Reserved] +	9c0e  8 Series SATA Controller 1 [RAID mode] +	9c0f  8 Series SATA Controller 1 [RAID mode] +	9c10  8 Series PCI Express Root Port 1 +	9c11  8 Series PCI Express Root Port 1 +	9c12  8 Series PCI Express Root Port 2 +	9c13  8 Series PCI Express Root Port 2 +	9c14  8 Series PCI Express Root Port 3 +	9c15  8 Series PCI Express Root Port 3 +	9c16  8 Series PCI Express Root Port 4 +	9c17  8 Series PCI Express Root Port 4 +	9c18  8 Series PCI Express Root Port 5 +	9c19  8 Series PCI Express Root Port 5 +	9c1a  8 Series PCI Express Root Port 6 +	9c1b  8 Series PCI Express Root Port 6 +	9c1c  8 Series PCI Express Root Port 7 +	9c1d  8 Series PCI Express Root Port 7 +	9c1e  8 Series PCI Express Root Port 8 +	9c1f  8 Series PCI Express Root Port 8 +	9c20  8 Series HD Audio Controller +		17aa 2214  ThinkPad X240 +	9c21  8 Series HD Audio Controller +	9c22  8 Series SMBus Controller +		17aa 2214  ThinkPad X240 +	9c23  8 Series CHAP Counters +	9c24  8 Series Thermal +	9c26  8 Series USB EHCI #1 +		17aa 2214  ThinkPad X240 +	9c2d  8 Series USB EHCI #2 +	9c31  8 Series USB xHCI HC +		17aa 2214  ThinkPad X240 +	9c35  8 Series SDIO Controller +	9c36  8 Series Audio DSP Controller +	9c3a  8 Series HECI #0 +		17aa 2214  ThinkPad X240 +	9c3b  8 Series HECI #1 +	9c3c  8 Series HECI IDER +	9c3d  8 Series HECI KT +	9c40  8 Series LPC Controller +	9c41  8 Series LPC Controller +	9c42  8 Series LPC Controller +	9c43  8 Series LPC Controller +		17aa 2214  ThinkPad X240 +	9c44  8 Series LPC Controller +	9c45  8 Series LPC Controller +	9c46  8 Series LPC Controller +	9c47  8 Series LPC Controller +	9c60  8 Series Low Power Sub-System DMA +	9c61  8 Series I2C Controller #0 +	9c62  8 Series I2C Controller #1 +	9c63  8 Series UART Controller #0 +	9c64  8 Series UART Controller #1 +	9c65  8 Series SPI Controller #0 +	9c66  8 Series SPI Controller #1 +	9c83  Wildcat Point-LP SATA Controller [AHCI Mode] +	9c85  Wildcat Point-LP SATA Controller [RAID Mode] +	9c87  Wildcat Point-LP SATA Controller [RAID Mode] +	9c8f  Wildcat Point-LP SATA Controller [RAID Mode] +	9c90  Wildcat Point-LP PCI Express Root Port #1 +	9c92  Wildcat Point-LP PCI Express Root Port #2 +	9c94  Wildcat Point-LP PCI Express Root Port #3 +	9c96  Wildcat Point-LP PCI Express Root Port #4 +	9c98  Wildcat Point-LP PCI Express Root Port #5 +	9c9a  Wildcat Point-LP PCI Express Root Port #6 +	9ca0  Wildcat Point-LP High Definition Audio Controller +	9ca2  Wildcat Point-LP SMBus Controller +	9ca4  Wildcat Point-LP Thermal Management Controller +	9ca6  Wildcat Point-LP USB EHCI Controller +	9cb1  Wildcat Point-LP USB xHCI Controller +	9cb5  Wildcat Point-LP Secure Digital IO Controller +	9cb6  Wildcat Point-LP Smart Sound Technology Controller +	9cba  Wildcat Point-LP MEI Controller #1 +	9cbb  Wildcat Point-LP MEI Controller #2 +	9cbc  Wildcat Point-LP IDE-r Controller +	9cbd  Wildcat Point-LP KT Controller +	9cc1  Wildcat Point-LP LPC Controller +	9cc2  Wildcat Point-LP LPC Controller +	9cc3  Wildcat Point-LP LPC Controller +	9cc5  Wildcat Point-LP LPC Controller +	9cc6  Wildcat Point-LP LPC Controller +	9cc7  Wildcat Point-LP LPC Controller +	9cc9  Wildcat Point-LP LPC Controller +	9ce0  Wildcat Point-LP Serial IO DMA Controller +	9ce1  Wildcat Point-LP Serial IO I2C Controller #0 +	9ce2  Wildcat Point-LP Serial IO I2C Controller #1 +	9ce3  Wildcat Point-LP Serial IO UART Controller #0 +	9ce4  Wildcat Point-LP Serial IO UART Controller #1 +	9ce5  Wildcat Point-LP Serial IO GSPI Controller #0 +	9ce6  Wildcat Point-LP Serial IO GSPI Controller #1 +	a000  Atom Processor D4xx/D5xx/N4xx/N5xx DMI Bridge +		1458 5000  GA-D525TUD +		8086 4f4d  DeskTop Board D510MO +		8086 544b  Desktop Board D425KT +	a001  Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller +		1458 d000  GA-D525TUD +		8086 4f4d  DeskTop Board D510MO +		8086 544b  Desktop Board D425KT +	a002  Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller +	a003  Atom Processor D4xx/D5xx/N4xx/N5xx CHAPS counter +	a010  Atom Processor D4xx/D5xx/N4xx/N5xx DMI Bridge +		144d c072  Notebook N150P +	a011  Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller +		144d c072  Notebook N150P +	a012  Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller +		144d c072  Notebook N150P +	a013  Atom Processor D4xx/D5xx/N4xx/N5xx CHAPS counter +	a103  Sunrise Point-H SATA Controller [AHCI mode] +	a105  Sunrise Point-H SATA Controller [RAID mode] +	a107  Sunrise Point-H SATA Controller [RAID mode] +	a10f  Sunrise Point-H SATA Controller [RAID mode] +	a110  Sunrise Point-H PCI Express Root Port #1 +	a111  Sunrise Point-H PCI Express Root Port #2 +	a112  Sunrise Point-H PCI Express Root Port #3 +	a113  Sunrise Point-H PCI Express Root Port #4 +	a114  Sunrise Point-H PCI Express Root Port #5 +	a115  Sunrise Point-H PCI Express Root Port #6 +	a116  Sunrise Point-H PCI Express Root Port #7 +	a117  Sunrise Point-H PCI Express Root Port #8 +	a118  Sunrise Point-H PCI Express Root Port #9 +	a119  Sunrise Point-H PCI Express Root Port #10 +	a11a  Sunrise Point-H PCI Express Root Port #11 +	a11b  Sunrise Point-H PCI Express Root Port #12 +	a11c  Sunrise Point-H PCI Express Root Port #13 +	a11d  Sunrise Point-H PCI Express Root Port #14 +	a11e  Sunrise Point-H PCI Express Root Port #15 +	a11f  Sunrise Point-H PCI Express Root Port #16 +	a120  Sunrise Point-H P2SB +	a121  Sunrise Point-H PMC +	a122  Sunrise Point-H cAVS +	a123  Sunrise Point-H SMBus +	a124  Sunrise Point-H SPI Controller +	a125  Sunrise Point-H Gigabit Ethernet Controller +	a126  Sunrise Point-H Northpeak +	a127  Sunrise Point-H LPSS UART #0 +	a128  Sunrise Point-H LPSS UART #1 +	a129  Sunrise Point-H LPSS SPI #0 +	a12a  Sunrise Point-H LPSS SPI #1 +	a12f  Sunrise Point-H USB 3.0 xHCI Controller +	a130  Sunrise Point-H USB Device Controller (OTG) +	a131  Sunrise Point-H Thermal subsystem +	a133  Sunrise Point-H Northpeak ACPI Function +	a135  Sunrise Point-H Integrated Sensor Hub +	a13a  Sunrise Point-H CSME HECI #1 +	a13b  Sunrise Point-H CSME HECI #2 +	a13c  Sunrise Point-H CSME IDE Redirection +	a13d  Sunrise Point-H KT Redirection +	a13e  Sunrise Point-H CSME HECI #3 +	a140  Sunrise Point-H LPC Controller +	a141  Sunrise Point-H LPC Controller +	a142  Sunrise Point-H LPC Controller +	a143  Sunrise Point-H LPC Controller +	a144  Sunrise Point-H LPC Controller +	a145  Sunrise Point-H LPC Controller +	a146  Sunrise Point-H LPC Controller +	a147  Sunrise Point-H LPC Controller +	a148  Sunrise Point-H LPC Controller +	a149  Sunrise Point-H LPC Controller +	a14a  Sunrise Point-H LPC Controller +	a14b  Sunrise Point-H LPC Controller +	a14c  Sunrise Point-H LPC Controller +	a14d  Sunrise Point-H LPC Controller +	a14e  Sunrise Point-H LPC Controller +	a14f  Sunrise Point-H LPC Controller +	a150  Sunrise Point-H LPC Controller +	a151  Sunrise Point-H LPC Controller +	a152  Sunrise Point-H LPC Controller +	a153  Sunrise Point-H LPC Controller +	a154  Sunrise Point-H LPC Controller +	a155  Sunrise Point-H LPC Controller +	a156  Sunrise Point-H LPC Controller +	a157  Sunrise Point-H LPC Controller +	a158  Sunrise Point-H LPC Controller +	a159  Sunrise Point-H LPC Controller +	a15a  Sunrise Point-H LPC Controller +	a15b  Sunrise Point-H LPC Controller +	a15c  Sunrise Point-H LPC Controller +	a15d  Sunrise Point-H LPC Controller +	a15e  Sunrise Point-H LPC Controller +	a15f  Sunrise Point-H LPC Controller +	a160  Sunrise Point-H LPSS I2C Controller #0 +	a161  Sunrise Point-H LPSS I2C Controller #1 +	a166  Sunrise Point-H LPSS UART Controller #2 +	a167  Sunrise Point-H PCI Root Port #17 +	a168  Sunrise Point-H PCI Root Port #18 +	a169  Sunrise Point-H PCI Root Port #19 +	a16a  Sunrise Point-H PCI Root Port #20 +	a170  Sunrise Point-H HD Audio +	a620  6400/6402 Advanced Memory Buffer (AMB) +	b152  21152 PCI-to-PCI Bridge +		8086 b152  21152 PCI-to-PCI Bridge +# observed, and documented in Intel revision note; new mask of 1011:0026 +	b154  21154 PCI-to-PCI Bridge +	b555  21555 Non transparent PCI-to-PCI Bridge +		12c7 5005  SS7HD PCI Adaptor Card +		12c7 5006  SS7HDC cPCI Adaptor Card +		12d9 000a  PCI VoIP Gateway +		4c53 1050  CT7 mainboard +		4c53 1051  CE7 mainboard +		e4bf 1000  CC8-1-BLUES +	d130  Core Processor DMI +	d131  Core Processor DMI +		1028 02da  OptiPlex 980 +		15d9 060d  C7SIM-Q Motherboard +	d132  Core Processor DMI +		1028 040b  Latitude E6510 +	d133  Core Processor DMI +	d134  Core Processor DMI +	d135  Core Processor DMI +	d136  Core Processor DMI +	d137  Core Processor DMI +	d138  Core Processor PCI Express Root Port 1 +		1028 02da  OptiPlex 980 +		1028 040b  Latitude E6510 +		15d9 060d  C7SIM-Q Motherboard +	d139  Core Processor PCI Express Root Port 2 +	d13a  Core Processor PCI Express Root Port 3 +	d13b  Core Processor PCI Express Root Port 4 +	d150  Core Processor QPI Link +	d151  Core Processor QPI Routing and Protocol Registers +	d155  Core Processor System Management Registers +	d156  Core Processor Semaphore and Scratchpad Registers +	d157  Core Processor System Control and Status Registers +	d158  Core Processor Miscellaneous Registers +80ee  InnoTek Systemberatung GmbH +	beef  VirtualBox Graphics Adapter +	cafe  VirtualBox Guest Service +8322  Sodick America Corp. +8384  SigmaTel +8401  TRENDware International Inc. +8686  ScaleMP +	1010  vSMPowered system controller [vSMP CTL] +8800  Trigem Computer Inc. +	2008  Video assistent component +8866  T-Square Design Inc. +8888  Silicon Magic +8912  TRX +# 8c4a is not Winbond but there is a board misprogrammed +8c4a  Winbond +	1980  W89C940 misprogrammed [ne2k] +8e0e  Computone Corporation +8e2e  KTI +	3000  ET32P2 +9004  Adaptec +	0078  AHA-2940U_CN +	1078  AIC-7810 +	1160  AIC-1160 [Family Fibre Channel Adapter] +	2178  AIC-7821 +	3860  AHA-2930CU +	3b78  AHA-4844W/4844UW +	5075  AIC-755x +	5078  AIC-7850 +		9004 7850  AHA-2904/Integrated AIC-7850 +	5175  AIC-755x +	5178  AIC-7851 +	5275  AIC-755x +	5278  AIC-7852 +	5375  AIC-755x +	5378  AIC-7850 +	5475  AIC-755x +	5478  AIC-7850 +	5575  AVA-2930 +	5578  AIC-7855 +	5647  ANA-7711 TCP Offload Engine +		9004 7710  ANA-7711F TCP Offload Engine - Optical +		9004 7711  ANA-7711LP TCP Offload Engine - Copper +	5675  AIC-755x +	5678  AIC-7856 +	5775  AIC-755x +	5778  AIC-7850 +	5800  AIC-5800 +	5900  ANA-5910/5930/5940 ATM155 & 25 LAN Adapter +	5905  ANA-5910A/5930A/5940A ATM Adapter +	6038  AIC-3860 +	6075  AIC-1480 / APA-1480 +		9004 7560  AIC-1480 / APA-1480 Cardbus +	6078  AIC-7860 +	6178  AIC-7861 +		9004 7861  AHA-2940AU Single +	6278  AIC-7860 +	6378  AIC-7860 +	6478  AIC-786x +	6578  AIC-786x +	6678  AIC-786x +	6778  AIC-786x +	6915  ANA620xx/ANA69011A +		9004 0008  ANA69011A/TX 10/100 +		9004 0009  ANA69011A/TX 10/100 +		9004 0010  ANA62022 2-port 10/100 +		9004 0018  ANA62044 4-port 10/100 +		9004 0019  ANA62044 4-port 10/100 +		9004 0020  ANA62022 2-port 10/100 +		9004 0028  ANA69011A/TX 10/100 +		9004 8008  ANA69011A/TX 64 bit 10/100 +		9004 8009  ANA69011A/TX 64 bit 10/100 +		9004 8010  ANA62022 2-port 64 bit 10/100 +		9004 8018  ANA62044 4-port 64 bit 10/100 +		9004 8019  ANA62044 4-port 64 bit 10/100 +		9004 8020  ANA62022 2-port 64 bit 10/100 +		9004 8028  ANA69011A/TX 64 bit 10/100 +	7078  AHA-294x / AIC-7870 +	7178  AHA-2940/2940W / AIC-7871 +	7278  AHA-3940/3940W / AIC-7872 +	7378  AHA-3985 / AIC-7873 +	7478  AHA-2944/2944W / AIC-7874 +	7578  AHA-3944/3944W / AIC-7875 +	7678  AHA-4944W/UW / AIC-7876 +	7710  ANA-7711F Network Accelerator Card (NAC) - Optical +	7711  ANA-7711C Network Accelerator Card (NAC) - Copper +	7778  AIC-787x +	7810  AIC-7810 +	7815  AIC-7815 RAID+Memory Controller IC +		9004 7815  ARO-1130U2 RAID Controller +		9004 7840  AIC-7815 RAID+Memory Controller IC +	7850  AIC-7850 +	7855  AHA-2930 +	7860  AIC-7860 +	7870  AIC-7870 +	7871  AHA-2940 +	7872  AHA-3940 +	7873  AHA-3980 +	7874  AHA-2944 +	7880  AIC-7880P +	7890  AIC-7890 +	7891  AIC-789x +	7892  AIC-789x +	7893  AIC-789x +	7894  AIC-789x +	7895  AHA-2940U/UW / AHA-39xx / AIC-7895 +		9004 7890  AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B +		9004 7891  AHA-2940U/2940UW Dual +		9004 7892  AHA-3940AU/AUW/AUWD/UWD +		9004 7894  AHA-3944AUWD +		9004 7895  AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B +		9004 7896  AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B +		9004 7897  AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B +	7896  AIC-789x +	7897  AIC-789x +	8078  AIC-7880U +		9004 7880  AIC-7880P Ultra/Ultra Wide SCSI Chipset +	8178  AHA-2940U/UW/D / AIC-7881U +		9004 7881  AHA-2940UW SCSI Host Adapter +	8278  AHA-3940U/UW/UWD / AIC-7882U +	8378  AHA-3940U/UW / AIC-7883U +	8478  AHA-2944UW / AIC-7884U +	8578  AHA-3944U/UWD / AIC-7885 +	8678  AHA-4944UW / AIC-7886 +	8778  AHA-2940UW Pro / AIC-788x +		9004 7887  2940UW Pro Ultra-Wide SCSI Controller +	8878  AHA-2930UW / AIC-7888 +		9004 7888  AHA-2930UW SCSI Controller +	8b78  ABA-1030 +	ec78  AHA-4944W/UW +# acquired by PMC-Sierra +9005  Adaptec +	0010  AHA-2940U2/U2W +		9005 2180  AHA-2940U2 SCSI Controller +		9005 8100  AHA-2940U2B SCSI Controller +		9005 a100  AHA-2940U2B SCSI Controller +		9005 a180  AHA-2940U2W SCSI Controller +		9005 e100  AHA-2950U2B SCSI Controller +	0011  AHA-2930U2 +	0013  78902 +		9005 0003  AAA-131U2 Array1000 1 Channel RAID Controller +		9005 000f  AIC7890_ARO +	001f  AHA-2940U2/U2W / 7890/7891 +		9005 000f  2940U2W SCSI Controller +		9005 a180  2940U2W SCSI Controller +	0020  AIC-7890 +	002f  AIC-7890 +	0030  AIC-7890 +	003f  AIC-7890 +	0050  AHA-3940U2x/395U2x +		9005 f500  AHA-3950U2B +		9005 ffff  AHA-3950U2B +	0051  AHA-3950U2D +		9005 b500  AHA-3950U2D +	0053  AIC-7896 SCSI Controller +		9005 ffff  AIC-7896 SCSI Controller mainboard implementation +	005f  AIC-7896U2/7897U2 +	0080  AIC-7892A U160/m +		0e11 e2a0  Compaq 64-Bit/66MHz Wide Ultra3 SCSI Adapter +		9005 6220  AHA-29160C +		9005 62a0  29160N Ultra160 SCSI Controller +		9005 e220  29160LP Low Profile Ultra160 SCSI Controller +		9005 e2a0  29160 Ultra160 SCSI Controller +	0081  AIC-7892B U160/m +		9005 62a1  19160 Ultra160 SCSI Controller +	0083  AIC-7892D U160/m +	008f  AIC-7892P U160/m +		1179 0001  Magnia Z310 +		15d9 9005  Onboard SCSI Host Adapter +	0092  AVC-2010 [VideoH!] +	0093  AVC-2410 [VideoH!] +	00c0  AHA-3960D / AIC-7899A U160/m +		0e11 f620  Compaq 64-Bit/66MHz Dual Channel Wide Ultra3 SCSI Adapter +		9005 f620  AHA-3960D U160/m +	00c1  AIC-7899B U160/m +	00c3  AIC-7899D U160/m +	00c5  RAID subsystem HBA +		1028 00c5  PowerEdge 2400,2500,2550,4400 +	00cf  AIC-7899P U160/m +		1028 00ce  PowerEdge 1400 +		1028 00d1  PowerEdge 2550 +		1028 00d9  PowerEdge 2500 +		10f1 2462  Thunder K7 S2462 +		15d9 9005  Onboard SCSI Host Adapter +		8086 3411  SDS2 Mainboard +	0241  Serial ATA II RAID 1420SA +	0242  Serial ATA II RAID 1220SA +	0243  Serial ATA II RAID 1430SA +	0244  eSATA II RAID 1225SA +	0250  ServeRAID Controller +		1014 0279  ServeRAID 6M +		1014 028c  ServeRAID 6i/6i+ +		1014 028e  ServeRAID 7k +	0279  ServeRAID 6M +	0283  AAC-RAID +		9005 0283  Catapult +	0284  AAC-RAID +		9005 0284  Tomcat +	0285  AAC-RAID +		0e11 0295  SATA 6Ch (Bearcat) +		1014 02f2  ServeRAID 8i +		1028 0287  PowerEdge Expandable RAID Controller 320/DC +		1028 0291  CERC SATA RAID 2 PCI SATA 6ch (DellCorsair) +		103c 3227  AAR-2610SA +		108e 0286  Sun StorageTek SAS RAID HBA, Internal +		108e 0287  STK RAID EXT +		108e 7aac  STK RAID REM +		108e 7aae  STK RAID EX +		15d9 02b5  SMC AOC-USAS-S4i +		15d9 02b6  SMC AOC-USAS-S8i +		15d9 02c9  SMC AOC-USAS-S4iR +		15d9 02ca  SMC AOC-USAS-S8iR +		15d9 02d2  SMC AOC-USAS-S8i-LP +		15d9 02d3  SMC AOC-USAS-S8iR-LP +		17aa 0286  Legend S220 (Legend Crusader) +		17aa 0287  Legend S230 (Legend Vulcan) +		9005 0285  2200S (Vulcan) +		9005 0286  2120S (Crusader) +		9005 0287  2200S (Vulcan-2m) +		9005 0288  3230S (Harrier) +		9005 0289  3240S (Tornado) +# Some early versions reported 2020S +		9005 028a  ASR-2020ZCR +# Some early versions reported 2025S +		9005 028b  ASR-2025ZCR (Terminator) +		9005 028e  ASR-2020SA (Skyhawk) +		9005 028f  ASR-2025SA +		9005 0290  AAR-2410SA PCI SATA 4ch (Jaguar II) +		9005 0292  AAR-2810SA PCI SATA 8ch (Corsair-8) +		9005 0293  AAR-21610SA PCI SATA 16ch (Corsair-16) +		9005 0294  ESD SO-DIMM PCI-X SATA ZCR (Prowler) +		9005 0296  ASR-2240S +		9005 0297  ASR-4005SAS +		9005 0298  ASR-4000 +		9005 0299  ASR-4800SAS +		9005 029a  4805SAS +		9005 02a4  ICP ICP9085LI +		9005 02a5  ICP ICP5085BR +		9005 02b5  ASR5800 +		9005 02b6  ASR5805 +		9005 02b7  ASR5808 +		9005 02b8  ICP5445SL +		9005 02b9  ICP5085SL +		9005 02ba  ICP5805SL +		9005 02bb  3405 +		9005 02bc  3805 +		9005 02bd  31205 +		9005 02be  31605 +		9005 02bf  ICP ICP5045BL +		9005 02c0  ICP ICP5085BL +		9005 02c1  ICP ICP5125BR +		9005 02c2  ICP ICP5165BR +		9005 02c3  51205 +		9005 02c4  51605 +		9005 02c5  ICP ICP5125SL +		9005 02c6  ICP ICP5165SL +		9005 02c7  3085 +		9005 02c8  ICP5805BL +		9005 02ce  51245 +		9005 02cf  51645 +		9005 02d0  52445 +		9005 02d1  5405 +		9005 02d4  ASR-2045 +		9005 02d5  ASR-2405 +		9005 02d6  ASR-2445 +		9005 02d7  ASR-2805 +		9005 02d8  5405G +		9005 02d9  5445G +		9005 02da  5805G +		9005 02db  5085G +		9005 02dc  51245G +		9005 02dd  51645G +		9005 02de  52445G +		9005 02df  ASR-2045G +		9005 02e0  ASR-2405G +		9005 02e1  ASR-2445G +		9005 02e2  ASR-2805G +	0286  AAC-RAID (Rocket) +		1014 034d  8s +		1014 9540  ServeRAID 8k/8k-l4 +		1014 9580  ServeRAID 8k/8k-l8 +		9005 028c  ASR-2230S + ASR-2230SLP PCI-X (Lancer) +		9005 028d  ASR-2130S +		9005 029b  ASR-2820SA +		9005 029c  ASR-2620SA +		9005 029d  ASR-2420SA +		9005 029e  ICP ICP9024R0 +		9005 029f  ICP ICP9014R0 +		9005 02a0  ICP ICP9047MA +		9005 02a1  ICP ICP9087MA +		9005 02a2  3800 +		9005 02a3  ICP ICP5445AU +		9005 02a4  ICP ICP9085LI +		9005 02a5  ICP ICP5085BR +		9005 02a6  ICP9067MA +		9005 02a7  3805 +		9005 02a8  3400 +		9005 02a9  ICP ICP5085AU +		9005 02aa  ICP ICP5045AU +		9005 02ac  1800 +		9005 02b3  2400 +		9005 02b4  ICP ICP5045AL +		9005 0800  Callisto +	028b  Series 6 - 6G SAS/PCIe 2 +		9005 0200  Series 6 Entry Level - ASR-6405E - 4 internal 6G SAS ports +		9005 0201  Series 6 Entry Level - ASR-6805E - 8 internal 6G SAS ports +		9005 0300  Series 6 - ASR-6405 - 4 internal 6G SAS ports +		9005 0301  Series 6 - ASR-6805 - 8 internal 6G SAS ports +		9005 0302  Series 6 - ASR-6445 - 4 internal and 4 external 6G SAS ports +		9005 0310  Series 6 Connectors on Top - ASR-6405T - 4 internal 6G SAS ports +		9005 0311  Series 6 Connectors on Top - ASR-6805T - 8 internal 6G SAS +		9005 0400  Series 6 - ASR-61205 - 12 internal 6G SAS ports +		9005 0401  Series 6 - ASR-61605 - 16 internal 6G SAS ports +		9005 0403  Series 6 - ASR-62405 - 24 internal 6G SAS ports +	028c  Series 7 6G SAS/PCIe 3 +		9005 0500  Series 7 - ASR-7805 - 8 internal 6G SAS Port/PCIe 3.0 +		9005 0501  Series 7 - ASR-71605 - 16 internal 6G SAS Port/PCIe 3.0 +		9005 0502  Series 7 - ASR-71685 - 16 internal 8 external 6G SAS Port/PCIe 3.0 +		9005 0503  Series 7 - ASR-72405 - 24 internal 0 external 6G SAS Port/PCIe 3.0 +		9005 0504  Series 7 - ASR-7885 - 8 internal 8 external 6G SAS Port/PCIe 3.0 +		9005 0505  Series 7 Entry Level - ASR-71685E - 16 internal 8 external 6G SAS Port/PCIe 3.0 +		9005 0506  Series 7 Entry Level - ASR-72405E - 24 internal 0 external 6G SAS Port/PCIe 3.0 +	028d  Series 8 12G SAS/PCIe 3 +		9005 0550  Series 8 - ASR-82405 - 24 internal 0 external 12G SAS Port/PCIe 3.0 +		9005 0551  Series 8 - ASR-81605 - 16 internal 0 external 12G SAS Port/PCIe 3.0 +		9005 0552  Series 8 - ASR-8805 - 8 internal 0 external 12G SAS Port/PCIe 3.0 +		9005 0553  Series 8 - ASR-8085 - 0 internal 8 external 12G SAS Port/PCIe 3.0 +		9005 0554  Series 8 - ASR-8885 - 8 internal 8 external 12G SAS Port/PCIe 3.0 +	0410  AIC-9410W SAS (Razor HBA RAID) +		9005 0410  ASC-48300(Spirit RAID) +		9005 0411  ASC-58300 (Oakmont RAID) +	0412  AIC-9410W SAS (Razor HBA non-RAID) +		9005 0412  ASC-48300 (Spirit non-RAID) +		9005 0413  ASC-58300 (Oakmont non-RAID) +	0415  ASC-58300 SAS (Razor-External HBA RAID) +	0416  ASC-58300 SAS (Razor-External HBA non-RAID) +	041e  AIC-9410W SAS (Razor ASIC non-RAID) +	041f  AIC-9410W SAS (Razor ASIC RAID) +		9005 041f  AIC-9410W SAS (Razor ASIC RAID) +	042f  VSC7250/7251 SAS (Aurora ASIC non-RAID) +	0430  AIC-9405W SAS (Razor-Lite HBA RAID) +		9005 0430  ASC-44300 (Spirit-Lite RAID) +	0432  AIC-9405W SAS (Razor-Lite HBA non-RAID) +		9005 0432  ASC-44300 (Spirit-Lite non-RAID) +	043e  AIC-9405W SAS (Razor-Lite ASIC non-RAID) +	043f  AIC-9405W SAS (Razor-Lite ASIC RAID) +	0450  ASC-1405 Unified Serial HBA +	0500  Obsidian chipset SCSI controller +		1014 02c1  PCI-X DDR 3Gb SAS Adapter (572A/572C) +		1014 02c2  PCI-X DDR 3Gb SAS RAID Adapter (572B/572D) +	0503  Scamp chipset SCSI controller +		1014 02bf  Quad Channel PCI-X DDR U320 SCSI RAID Adapter (571E) +		1014 02c3  PCI-X DDR 3Gb SAS RAID Adapter (572F) +		1014 02d5  Quad Channel PCI-X DDR U320 SCSI RAID Adapter (571F) +	0910  AUA-3100B +	091e  AUA-3100B +	8000  ASC-29320A U320 +	800f  AIC-7901 U320 +	8010  ASC-39320 U320 +	8011  ASC-39320D +		0e11 00ac  ASC-39320D U320 +		9005 0041  ASC-39320D U320 +	8012  ASC-29320 U320 +	8013  ASC-29320B U320 +	8014  ASC-29320LP U320 +	8015  ASC-39320B U320 +	8016  ASC-39320A U320 +	8017  ASC-29320ALP U320 +		9005 0044  ASC-29320ALP PCIx U320 +		9005 0045  ASC-29320LPE PCIe U320 +	801c  ASC-39320D U320 +	801d  AIC-7902B U320 +		1014 02cc  ServeRAID 7e +	801e  AIC-7901A U320 +	801f  AIC-7902 U320 +		1734 1011  PRIMERGY RX300 onboard SCSI +	8080  ASC-29320A U320 w/HostRAID +	8081  PMC-Sierra PM8001 SAS HBA [Series 6H] +	8088  PMC-Sierra PM8018 SAS HBA [Series 7H] +	8089  PMC-Sierra PM8019 SAS encryption HBA [Series 7He] +	808f  AIC-7901 U320 w/HostRAID +		1028 0168  Precision Workstation 670 Mainboard +	8090  ASC-39320 U320 w/HostRAID +	8091  ASC-39320D U320 w/HostRAID +	8092  ASC-29320 U320 w/HostRAID +	8093  ASC-29320B U320 w/HostRAID +	8094  ASC-29320LP U320 w/HostRAID +	8095  ASC-39320(B) U320 w/HostRAID +	8096  ASC-39320A U320 w/HostRAID +	8097  ASC-29320ALP U320 w/HostRAID +	809c  ASC-39320D(B) U320 w/HostRAID +	809d  AIC-7902(B) U320 w/HostRAID +		1014 02cc  ServeRAID 7e +	809e  AIC-7901A U320 w/HostRAID +	809f  AIC-7902 U320 w/HostRAID +907f  Atronics +	2015  IDE-2015PL +919a  Gigapixel Corp +9412  Holtek +	6565  6565 +9618  JusonTech Corporation +	0001  JusonTech Gigabit Ethernet Controller +9699  Omni Media Technology Inc +	6565  6565 +# nee Netmos Technology +9710  MosChip Semiconductor Technology Ltd. +	9250  PCI-to-PCI bridge [MCS9250] +	9805  PCI 1 port parallel adapter +	9815  PCI 9815 Multi-I/O Controller +		1000 0020  2P0S (2 port parallel adaptor) +	9820  PCI 9820 Multi-I/O Controller +	9835  PCI 9835 Multi-I/O Controller +		1000 0002  2S (16C550 UART) +		1000 0012  1P2S +	9845  PCI 9845 Multi-I/O Controller +# Serial ports at BAR0-3 +		1000 0004  0P4S (4 port 16550A serial card) +		1000 0006  0P6S (6 port 16550a serial card) +# Serial ports at BAR0-3, Parallel port at BAR4 +		1000 0014  1P4S (1 Parallel / 4 16550A Serial Port Adapter) +	9855  PCI 9855 Multi-I/O Controller +# Parallel port at BAR0. Serial ports at BAR2-5 +		1000 0014  1P4S +# Parallel ports at BAR0,BAR2. Serial ports at BAR4-5 +		1000 0022  2P2S (2 Parallel / 2 16550A Serial Port Adapter) +	9865  PCI 9865 Multi-I/O Controller +	9901  PCIe 9901 Multi-I/O Controller +	9904  4-Port PCIe Serial Adapter +# 2-port Serial 1-port Parallel Adaptor +	9912  PCIe 9912 Multi-I/O Controller +	9922  MCS9922 PCIe Multi-I/O Controller +	9990  MCS9990 PCIe to 4‐Port USB 2.0 Host Controller +# Subsystem ID on a 3c985B-SX network card +9850  3Com (wrong ID) +9902  Stargen Inc. +	0001  SG2010 PCI over Starfabric Bridge +	0002  SG2010 PCI to Starfabric Gateway +	0003  SG1010 Starfabric Switch and PCI Bridge +a0a0  AOPEN Inc. +a0f1  UNISYS Corporation +a200  NEC Corporation +a259  Hewlett Packard +a25b  Hewlett Packard GmbH PL24-MKT +a304  Sony +a727  3Com Corporation +	0013  3CRPAG175 Wireless PC Card +	6803  3CRDAG675B Wireless 11a/b/g Adapter +aa00  iTuner +aa01  iTuner +aa02  iTuner +aa03  iTuner +aa04  iTuner +aa05  iTuner +aa06  iTuner +aa07  iTuner +aa08  iTuner +aa09  iTuner +aa0a  iTuner +aa0b  iTuner +aa0c  iTuner +aa0d  iTuner +aa0e  iTuner +aa0f  iTuner +aa42  Scitex Digital Video +aa55  Ncomputing X300 PCI-Engine +aaaa  Adnaco Technology Inc. +	0001  H1 PCIe over fiber optic host controller +	0002  R1BP1 PCIe over fiber optic expansion chassis +abcd  Vadatech Inc. +ac1e  Digital Receiver Technology Inc +ac3d  Actuality Systems +ad00  Alta Data Technologies LLC +aecb  Adrienne Electronics Corporation +	6250  VITC/LTC Timecode Reader card [PCI-VLTC/RDR] +affe  Sirrix AG security technologies +	01e1  PCI1E1 1-port ISDN E1 interface +	02e1  PCI2E1 2-port ISDN E1 interface +	450e  PCI4S0EC 4-port ISDN S0 interface +	dead  Sirrix.PCI4S0 4-port ISDN S0 interface +b100  OpenVox Communication Co. Ltd. +# Not registered officially +b10b  Uakron PCI Project +b1b3  Shiva Europe Limited +b1d9  ATCOM Technology co., LTD. +# Pinnacle should be 11bd, but they got it wrong several times --mj +bd11  Pinnacle Systems, Inc. (Wrong ID) +bdbd  Blackmagic Design +	a106  Multibridge Extreme +	a117  Intensity Pro +	a11a  DeckLink HD Extreme 2 +	a11b  DeckLink SDI/Duo/Quad +	a11c  DeckLink HD Extreme 3 +	a11d  DeckLink Studio +	a11e  DeckLink Optical Fibre +	a120  Decklink Studio 2 +	a121  DeckLink HD Extreme 3D/3D+ +	a124  Intensity Extreme +	a126  Intensity Shuttle +	a127  UltraStudio Express +	a129  UltraStudio Mini Monitor +	a12a  UltraStudio Mini Recorder +	a12d  UltraStudio 4K +	a12e  DeckLink 4K Extreme +	a12f  DeckLink Mini Monitor +	a130  DeckLink Mini Recorder +	a132  UltraStudio 4K +	a138  Decklink SDI 4K +c001  TSI Telsys +c0a9  Micron/Crucial Technology +c0de  Motorola +c0fe  Motion Engineering, Inc. +ca50  Varian Australia Pty Ltd +cace  CACE Technologies, Inc. +	0001  TurboCap Port A +	0002  TurboCap Port B +	0023  AirPcap N +caed  Canny Edge +cafe  Chrysalis-ITS +	0003  Luna K3 Hardware Security Module +	0006  Luna PCI-e 3000 Hardware Security Module +cccc  Catapult Communications +ccec  Curtiss-Wright Controls Embedded Computing +cddd  Tyzx, Inc. +	0101  DeepSea 1 High Speed Stereo Vision Frame Grabber +	0200  DeepSea 2 High Speed Stereo Vision Frame Grabber +ceba  KEBA AG +d161  Digium, Inc. +	0120  Wildcard TE120P single-span T1/E1/J1 card +	0205  Wildcard TE205P/TE207P dual-span T1/E1/J1 card 5.0V +	0210  Wildcard TE210P/TE212P dual-span T1/E1/J1 card 3.3V +	0220  Wildcard TE220 dual-span T1/E1/J1 card 3.3V (PCI-Express) +	0405  Wildcard TE405P/TE407P quad-span T1/E1/J1 card 5.0V +	0410  Wildcard TE410P/TE412P quad-span T1/E1/J1 card 3.3V +	0420  Wildcard TE420P quad-span T1/E1/J1 card 3.3V (PCI-Express) +	0800  Wildcard TDM800P 8-port analog card +	1205  Wildcard TE205P/TE207P dual-span T1/E1/J1 card 5.0V (u1) +	1220  Wildcard TE220 dual-span T1/E1/J1 card 3.3V (PCI-Express) (5th gen) +	1405  Wildcard TE405P/TE407P quad-span T1/E1/J1 card 5.0V (u1) +	1410  Wildcard TE410P quad-span T1/E1/J1 card 3.3V (5th Gen) +	1420  Wildcard TE420 quad-span T1/E1/J1 card 3.3V (PCI-Express) (5th gen) +	1820  Wildcard TE820 octal-span T1/E1/J1 card 3.3V (PCI-Express) +	2400  Wildcard TDM2400P 24-port analog card +	3400  Wildcard TC400P transcoder base card +	8000  Wildcard TE121 single-span T1/E1/J1 card (PCI-Express) +	8001  Wildcard TE122 single-span T1/E1/J1 card +	8002  Wildcard AEX800 8-port analog card (PCI-Express) +	8003  Wildcard AEX2400 24-port analog card (PCI-Express) +	8004  Wildcard TCE400P transcoder base card +	8005  Wildcard TDM410 4-port analog card +	8006  Wildcard AEX410 4-port analog card (PCI-Express) +	8007  Hx8 Series 8-port Base Card +	8008  Hx8 Series 8-port Base Card (PCI-Express) +	800a  Wildcard TE133 single-span T1/E1/J1 card (PCI Express) +	800b  Wildcard TE134 single-span T1/E1/J1 card +	800c  Wildcard A8A 8-port analog card +	800d  Wildcard A8B 8-port analog card (PCI-Express) +	800e  Wildcard TE235/TE435 quad-span T1/E1/J1 card (PCI-Express) +	800f  Wildcard A4A 4-port analog card +	8010  Wildcard A4B 4-port analog card (PCI-Express) +	8013  Wildcard TE236/TE436 quad-span T1/E1/J1 card +	b410  Wildcard B410 quad-BRI card +d4d4  Dy4 Systems Inc +	0601  PCI Mezzanine Card +d531  I+ME ACTIA GmbH +d84d  Exsys +dada  Datapath Limited +	0133  VisionRGB-X2 +	0139  VisionRGB-E1 +	0144  VisionSD8 +	0150  VisionRGB-E2 +	0151  VisionSD4+1 +	0159  VisionAV +	0161  DGC161 +	0165  DGC165 +	0167  DGC167 +	0168  DGC168 +	1139  VisionRGB-E1S +	1150  VisionRGB-E2S +	1151  VisionSD4+1S +	1153  VisionDVI-DL +	1154  VisionSDI2 +db10  Diablo Technologies +dcba  Dynamic Engineering +	0046  PCIe Altera Cyclone IV +# VPX format Receiver Controller Board +	0047  VPX-RCB +# PMC Format FPGA design with 8 high speed UART channels +	0048  PMC-Biserial-III-BAE9 +	004e  PC104p-Biserial-III-NVY5 +	004f  PC104p-Biserial-III-NVY6 +	0052  PCIeBiSerialDb37 BA22 LVDS IO +dd01  Digital Devices GmbH +	0003  Octopus DVB Adapter +		dd01 0001  Octopus DVB adapter +		dd01 0002  Octopus LE DVB adapter +		dd01 0003  Octopus OEM +		dd01 0004  Octopus V3 DVB adapter +		dd01 0010  Octopus Mini +		dd01 0020  Cine S2 V6 DVB adapter +		dd01 0021  Cine S2 V6.5 DVB adapter +		dd01 0030  Cine CT V6.1 DVB adapter +		dd01 db03  Mystique SaTiX-S2 V3 DVB adapter +	0011  Octopus CI DVB Adapter +		dd01 0040  Octopus CI +		dd01 0041  Octopus CI Single +dead  Indigita Corporation +deaf  Middle Digital Inc. +	9050  PC Weasel Virtual VGA +	9051  PC Weasel Serial Port +	9052  PC Weasel Watchdog Timer +deda  SoftHard Technology Ltd. +e000  Winbond +	e000  W89C940 +e159  Tiger Jet Network Inc. +	0001  Tiger3XX Modem/ISDN interface +		0059 0001  128k ISDN-S/T Adapter +		0059 0003  128k ISDN-U Adapter +		00a7 0001  TELES.S0/PCI 2.x ISDN Adapter +		8086 0003  Digium X100P/X101P analogue PSTN FXO interface +		b100 0003  OpenVox A400P 4-port analog card +		b1d9 0003  AX400P 4-port analog card +	0002  Tiger100APC ISDN chipset +e1c5  Elcus +e4bf  EKF Elektronik GmbH +	0ccd  CCD-CALYPSO +	0cd1  CD1-OPERA +	0cd2  CD2-BEBOP +	0cd3  CD3-JIVE +	50c1  PC1-GROOVE +	50c2  PC2-LIMBO +	53c1  SC1-ALLEGRO +	cc47  CCG-RUMBA +	cc4d  CCM-BOOGIE +e4e4  Xorcom +e55e  Essence Technology, Inc. +ea01  Eagle Technology +	000a  PCI-773 Temperature Card +	0032  PCI-730 & PC104P-30 Card +	003e  PCI-762 Opto-Isolator Card +	0041  PCI-763 Reed Relay Card +	0043  PCI-769 Opto-Isolator Reed Relay Combo Card +	0046  PCI-766 Analog Output Card +	0052  PCI-703 Analog I/O Card +	0800  PCI-800 Digital I/O Card +# The main chip of all these devices is by Xilinx -> It could also be a Xilinx ID. +ea60  RME +	9896  Digi32 +	9897  Digi32 Pro +	9898  Digi32/8 +eabb  Aashima Technology B.V. +eace  Endace Measurement Systems, Ltd +	3100  DAG 3.10 OC-3/OC-12 +	3200  DAG 3.2x OC-3/OC-12 +	320e  DAG 3.2E Fast Ethernet +	340e  DAG 3.4E Fast Ethernet +	341e  DAG 3.41E Fast Ethernet +	3500  DAG 3.5 OC-3/OC-12 +	351c  DAG 3.5ECM Fast Ethernet +	360d  DAG 3.6D DS3 +	360e  DAG 3.6E Fast Ethernet +	368e  DAG 3.6E Gig Ethernet +	3707  DAG 3.7T T1/E1/J1 +	370d  DAG 3.7D DS3/E3 +	378e  DAG 3.7G Gig Ethernet +	3800  DAG 3.8S OC-3/OC-12 +	4100  DAG 4.10 OC-48 +	4110  DAG 4.11 OC-48 +	4220  DAG 4.2 OC-48 +	422e  DAG 4.2GE Gig Ethernet +	4230  DAG 4.2S OC-48 +	423e  DAG 4.2GE Gig Ethernet +	4300  DAG 4.3S OC-48 +	430e  DAG 4.3GE Gig Ethernet +	452e  DAG 4.5G2 Gig Ethernet +	454e  DAG 4.5G4 Gig Ethernet +	45b8  DAG 4.5Z8 Gig Ethernet +	45be  DAG 4.5Z2 Gig Ethernet +	520e  DAG 5.2X 10G Ethernet +	521a  DAG 5.2SXA 10G Ethernet/OC-192 +	5400  DAG 5.4S-12 OC-3/OC-12 +	5401  DAG 5.4SG-48 Gig Ethernet/OC-3/OC-12/OC-48 +	540a  DAG 5.4GA Gig Ethernet +	541a  DAG 5.4SA-12 OC-3/OC-12 +	542a  DAG 5.4SGA-48 Gig Ethernet/OC-3/OC-12/OC-48 +	6000  DAG 6.0SE 10G Ethernet/OC-192 +	6100  DAG 6.1SE 10G Ethernet/OC-192 +	6200  DAG 6.2SE 10G Ethernet/OC-192 +	7100  DAG 7.1S OC-3/OC-12 +	7400  DAG 7.4S OC-3/OC-12 +	7401  DAG 7.4S48 OC-48 +	752e  DAG 7.5G2 Gig Ethernet +	754e  DAG 7.5G4 Gig Ethernet +	8100  DAG 8.1X 10G Ethernet +	8101  DAG 8.1SX 10G Ethernet/OC-192 +	8102  DAG 8.1X 10G Ethernet +	820e  DAG 8.2X 10G Ethernet +	820f  DAG 8.2X 10G Ethernet (2nd bus) +	8400  DAG 8.4I Infiniband x4 SDR +	8500  DAG 8.5I Infiniband x4 DDR +	9200  DAG 9.2SX2 10G Ethernet +	920e  DAG 9.2X2 10G Ethernet +	a120  DAG 10X2-P 10G Ethernet +	a12e  DAG 10X2-S 10G Ethernet +	a140  DAG 10X4-P 10G Ethernet +ec80  Belkin Corporation +	ec00  F5D6000 +ecc0  Echo Digital Audio Corporation +edd8  ARK Logic Inc +	a091  1000PV [Stingray] +	a099  2000PV [Stingray] +	a0a1  2000MT +	a0a9  2000MI +# Found on M2N68-AM Motherboard +f043  ASUSTeK Computer Inc. (Wrong ID) +f05b  Foxconn International, Inc. (Wrong ID) +f1d0  AJA Video +	c0fe  Xena HS/HD-R +	c0ff  Kona/Xena 2 +	cafe  Kona SD +	cfee  Xena LS/SD-22-DA/SD-DA +	daff  KONA LHi +	dcaf  Kona HD +	dfee  Xena HD-DA +	efac  Xena SD-MM/SD-22-MM +	facd  Xena HD-MM +f5f5  F5 Networks, Inc. +# Subsystem ID for PATA controller on nForce motherboard +f849  ASRock Incorporation (Wrong ID) +fa57  Interagon AS +	0001  PMC [Pattern Matching Chip] +fab7  Fabric7 Systems, Inc. +febd  Ultraview Corp. +# Nee Epigram +feda  Broadcom Inc +	a0fa  BCM4210 iLine10 HomePNA 2.0 +	a10e  BCM4230 iLine10 HomePNA 2.0 +fede  Fedetec Inc. +	0003  TABIC PCI v3 +fffd  XenSource, Inc. +	0101  PCI Event Channel Controller +# Used in some old VMWare products before they got a real ID assigned +fffe  VMWare Inc (temporary ID) +	0710  Virtual SVGA +ffff  Illegal Vendor ID + + +# List of known device classes, subclasses and programming interfaces + +# Syntax: +# C class	class_name +#	subclass	subclass_name  		<-- single tab +#		prog-if  prog-if_name  	<-- two tabs + +C 00  Unclassified device +	00  Non-VGA unclassified device +	01  VGA compatible unclassified device +C 01  Mass storage controller +	00  SCSI storage controller +	01  IDE interface +	02  Floppy disk controller +	03  IPI bus controller +	04  RAID bus controller +	05  ATA controller +		20  ADMA single stepping +		30  ADMA continuous operation +	06  SATA controller +		00  Vendor specific +		01  AHCI 1.0 +		02  Serial Storage Bus +	07  Serial Attached SCSI controller +		01  Serial Storage Bus +	08  Non-Volatile memory controller +		01  NVMHCI +		02  NVM Express +	80  Mass storage controller +C 02  Network controller +	00  Ethernet controller +	01  Token ring network controller +	02  FDDI network controller +	03  ATM network controller +	04  ISDN controller +	05  WorldFip controller +	06  PICMG controller +	07  Infiniband controller +	80  Network controller +C 03  Display controller +	00  VGA compatible controller +		00  VGA controller +		01  8514 controller +	01  XGA compatible controller +	02  3D controller +	80  Display controller +C 04  Multimedia controller +	00  Multimedia video controller +	01  Multimedia audio controller +	02  Computer telephony device +	03  Audio device +	80  Multimedia controller +C 05  Memory controller +	00  RAM memory +	01  FLASH memory +	80  Memory controller +C 06  Bridge +	00  Host bridge +	01  ISA bridge +	02  EISA bridge +	03  MicroChannel bridge +	04  PCI bridge +		00  Normal decode +		01  Subtractive decode +	05  PCMCIA bridge +	06  NuBus bridge +	07  CardBus bridge +	08  RACEway bridge +		00  Transparent mode +		01  Endpoint mode +	09  Semi-transparent PCI-to-PCI bridge +		40  Primary bus towards host CPU +		80  Secondary bus towards host CPU +	0a  InfiniBand to PCI host bridge +	80  Bridge +C 07  Communication controller +	00  Serial controller +		00  8250 +		01  16450 +		02  16550 +		03  16650 +		04  16750 +		05  16850 +		06  16950 +	01  Parallel controller +		00  SPP +		01  BiDir +		02  ECP +		03  IEEE1284 +		fe  IEEE1284 Target +	02  Multiport serial controller +	03  Modem +		00  Generic +		01  Hayes/16450 +		02  Hayes/16550 +		03  Hayes/16650 +		04  Hayes/16750 +	04  GPIB controller +	05  Smard Card controller +	80  Communication controller +C 08  Generic system peripheral +	00  PIC +		00  8259 +		01  ISA PIC +		02  EISA PIC +		10  IO-APIC +		20  IO(X)-APIC +	01  DMA controller +		00  8237 +		01  ISA DMA +		02  EISA DMA +	02  Timer +		00  8254 +		01  ISA Timer +		02  EISA Timers +		03  HPET +	03  RTC +		00  Generic +		01  ISA RTC +	04  PCI Hot-plug controller +	05  SD Host controller +	06  IOMMU +	80  System peripheral +C 09  Input device controller +	00  Keyboard controller +	01  Digitizer Pen +	02  Mouse controller +	03  Scanner controller +	04  Gameport controller +		00  Generic +		10  Extended +	80  Input device controller +C 0a  Docking station +	00  Generic Docking Station +	80  Docking Station +C 0b  Processor +	00  386 +	01  486 +	02  Pentium +	10  Alpha +	20  Power PC +	30  MIPS +	40  Co-processor +C 0c  Serial bus controller +	00  FireWire (IEEE 1394) +		00  Generic +		10  OHCI +	01  ACCESS Bus +	02  SSA +	03  USB controller +		00  UHCI +		10  OHCI +		20  EHCI +		30  XHCI +		80  Unspecified +		fe  USB Device +	04  Fibre Channel +	05  SMBus +	06  InfiniBand +	07  IPMI SMIC interface +	08  SERCOS interface +	09  CANBUS +C 0d  Wireless controller +	00  IRDA controller +	01  Consumer IR controller +	10  RF controller +	11  Bluetooth +	12  Broadband +	20  802.1a controller +	21  802.1b controller +	80  Wireless controller +C 0e  Intelligent controller +	00  I2O +C 0f  Satellite communications controller +	01  Satellite TV controller +	02  Satellite audio communication controller +	03  Satellite voice communication controller +	04  Satellite data communication controller +C 10  Encryption controller +	00  Network and computing encryption device +	10  Entertainment encryption device +	80  Encryption controller +C 11  Signal processing controller +	00  DPIO module +	01  Performance counters +	10  Communication synchronizer +	20  Signal processing management +	80  Signal processing controller +C 12  Processing accelerators +	00  Processing accelerators +C 13  Non-Essential Instrumentation +C ff  Unassigned class diff --git a/examples/tg16/pxe/version.info b/examples/tg16/pxe/version.info new file mode 100644 index 0000000..8a4a704 --- /dev/null +++ b/examples/tg16/pxe/version.info @@ -0,0 +1,2 @@ +Debian version:  6.0 (squeeze) +Installer build: 20110106+squeeze4+b3 diff --git a/examples/tg16/pxe/vesamenu.c32 b/examples/tg16/pxe/vesamenu.c32 Binary files differnew file mode 100644 index 0000000..8dca92f --- /dev/null +++ b/examples/tg16/pxe/vesamenu.c32 diff --git a/examples/tg16/streams/anakin/encode.sh b/examples/tg16/streams/anakin/encode.sh new file mode 100644 index 0000000..4994b76 --- /dev/null +++ b/examples/tg16/streams/anakin/encode.sh @@ -0,0 +1,7 @@ +#!/bin/bash +cvlc -I dummy -vvvv --decklink-audio-connection embedded --live-caching 3000 --decklink-aspect-ratio 16:9 --decklink-video-connection sdi \ + --sout-x264-preset slow --sout-x264-tune film --sout-transcode-threads 15 --no-sout-x264-interlaced --sout-mux-caching 3000 \ + --sout-x264-keyint 50 --sout-x264-lookahead 100 --sout-x264-vbv-maxrate 4000 --sout-x264-vbv-bufsize 4000 --ttl 60 \ + -v decklink:// vlc://quit \ + --sout \ +'#transcode{vcodec=h264,vb=5500,acodec=mp4a,ab=256,channels=2}:duplicate{dst=std{access=http{metacube},mux=ts,dst=:5004/anakin.ts},dst=std{access=http{metacube},mux=ffmpeg{mux=flv},dst=:5004/anakin.flv}' diff --git a/examples/tg16/streams/cubemap/finn-cubemap.config b/examples/tg16/streams/cubemap/finn-cubemap.config new file mode 100644 index 0000000..7faa9a6 --- /dev/null +++ b/examples/tg16/streams/cubemap/finn-cubemap.config @@ -0,0 +1,150 @@ +# Uncomment to run in the background. Note that in daemonized mode, all filenames +# are relative to an undefined directory, so you should use absolute paths for +# error_log, stats_file, etc. + +#daemonize + +# For low-traffic servers (less than a gigabit or two), num_servers 1 is fine. +# For best performance in high-traffic situations, you want one for each CPU. +num_servers 1 + +# +# All input ports are treated exactly the same, but you may use multiple ones nevertheless. +# +port 80 +# listen 127.0.0.1:9095 +# listen [::1]:9095 + +stats_file /var/lib/cubemap/cubemap.stats +stats_interval 60 + +input_stats_file /var/lib/cubemap/cubemap-input.stats +input_stats_interval 60 + +# Logging of clients as they disconnect (and as such as no longer visible in the stats file). +# You can only have zero or one of these. +access_log /var/log/cubemap/access.log + +# Logging of various informational and error messages. You can have as many of these as you want. +error_log type=file filename=/var/log/cubemap/cubemap.log +error_log type=syslog +error_log type=console + +# +# Now the streams! There are two types of streams; stream (HTTP output) +# and udpstream (UDP output). Let's take stream first. +# + +# A basic form of stream, with HTTP input. Often, you will need no more than this. +# The input must be Metacube framed (VLC can produce this with an option). +#stream /test.flv src=http://gruessi.zrh.sesse.net:4013/test.flv + +# Streams can share the same input (the same is reused, no extra bandwidth needed). +# force_prebuffer=<number of bytes> is a parameter where we don't start sending +# any data to a newly connected client before we can do that many bytes at once. +# This is useful for clients that don't properly buffer themselves before starting +# playing, e.g., most web browsers and some Flash players when playing from HTTP +# (e.g., JW Player). +#stream /test-jwplayer.flv src=http://gruessi.zrh.sesse.net:4013/test.flv force_prebuffer=1500000 + +# encoding=metacube means the _output_ will be Metacube framed. This is useful +# for sending on to another Cubemap instance. +#stream /test.flv.metacube src=http://gruessi.zrh.sesse.net:4013/test.flv encoding=metacube + +# UDP input. TS is the most common container to use over UDP (you cannot +# take any arbitrary container and expect it to work). +# backlog_size=<number of bytes> overrides the backlog, which is normally 10 MB. +# If clients fall more behind than the backlog (plus the socket buffer), +# they will drop data, so if you have extremely high-bitrate streams, you may want +# to increase this. Or conversely, if you have little RAM and many streams +# (or many servers) you can decrease it. +#stream /udp.ts src=udp://@:1234 backlog_size=1048576 + +# An example of IPv4 multicast input. Cubemap will subscribe to the given group +# and wait for data sent by any sender to the given port. +# pacing_rate_kbit=<number of kilobit/sec> will ask the kernel to hard-limit +# the TCP transfer rate, including retransmits, to the given speed. (This is a +# no-op if you do not use the sch_fq packet scheduler, which is not the default +# but can be set in Linux 3.13 and newer using tc.) This is extremely +# useful for reducing packet loss and thus including throughput, since it means +# that packets arrive smoothly instead of in tight bursts, which will often +# overload underbuffered routers and cause drops (imagine receiving a 100 kB +# keyframe at 10gig speeds, and then having to meter it out over 5 Mbit ADSL). +# The rate should be a bit higher than your stream bitrate to allow for retransmits. +#stream /udp-multicast.ts src=udp://@233.252.0.2:1234 pacing_rate_kbit=2000 + +# IPv6 SSM (Single Source Multicast) input. Subscribes to the given group and +# waits for packets from the given sender only. SSM is nicer than ASM in that +# it does not require a Rendezvous Point (RP) and other complexity, but is +# often poorly supported in various network equipment. +#stream /udp-multicast-ssmv6.ts src=udp://[2001:67c:29f4::32]@[ff3e::1000:0]:1234 pacing_rate_kbit=20000 + +# udpstream takes src= inputs just like stream does, but instead of waiting +# for TCP connections on ports, it immediately sends the packets out over UDP. +# (As with UDP input, this probably only works well for TS mux.) +#udpstream [2001:67c:29f4::50]:5000 src=http://pannekake.samfundet.no:9094/frikanalen.ts.metacube + +# udpstream takes pacing_rate_kbit= just like stream. None of the other options +# make sense. +#udpstream 193.35.52.50:5001 src=http://pannekake.samfundet.no:9094/frikanalen.ts.metacube pacing_rate_kbit=2000 + +# IPv4 multicast output, to the given group. You can explicitly set the TTL +# and/or multicast output interface, if the defaults do not suit you. +#udpstream 233.252.0.1:5002 src=http://pannekake.samfundet.no:9094/frikanalen.ts.metacube ttl=32 multicast_output_interface=eth1 + +# A type of HTTP resource that is not a stream, but rather just a very simple +# document that a HTTP 204 response and nothing else. allow_origin= is optional; +# if it is set, the response will contain an Access-Control-Allow-Origin header +# with the given value, allowing the ping response to be read (and +# differentiated from an error) from a remote domain using XHR. +# +# If you have a stream and a gen204 endpoint with the same URL, the stream takes +# precedence and the ping endpoint is silently ignored. +gen204 /ping allow_origin=* + +# TG16 + +# For viewers -- production feeds +stream /event.ts src=http://anakin.tg16.gathering.org:5004/anakin.ts backlog_size=104857600 +stream /event.flv src=http://anakin.tg16.gathering.org:5004/anakin.flv backlog_size=104857600 + +stream /eventsd.ts src=http://han.tg16.gathering.org:5009/eventsd.ts backlog_size=104857600 +stream /eventsd.flv src=http://han.tg16.gathering.org:5009/eventsd.flv backlog_size=104857600 + +stream /game.ts src=http://padme.tg16.gathering.org:5004/padme.ts backlog_size=104857600 +stream /game.flv src=http://padme.tg16.gathering.org:5004/padme.flv backlog_size=104857600 + +stream /creativia.ts src=http://leia.tg16.gathering.org:5004/leia.ts backlog_size=104857600 +stream /creativia.flv src=http://leia.tg16.gathering.org:5004/leia.flv backlog_size=104857600 + + +# Servers - direct feed +stream /anakin.ts src=http://anakin.tg16.gathering.org:5004/anakin.ts backlog_size=104857600 +stream /anakin.flv src=http://anakin.tg16.gathering.org:5004/anakin.flv backlog_size=104857600 + +stream /padme.ts src=http://padme.tg16.gathering.org:5004/padme.ts backlog_size=104857600 +stream /padme.flv src=http://padme.tg16.gathering.org:5004/padme.flv backlog_size=104857600 + +stream /luke.ts src=http://luke.tg16.gathering.org:5004/luke.ts backlog_size=104857600 +stream /luke.flv src=http://luke.tg16.gathering.org:5004/luke.flv backlog_size=104857600 + +stream /leia.ts src=http://leia.tg16.gathering.org:5004/leia.ts backlog_size=104857600 +stream /leia.flv src=http://leia.tg16.gathering.org:5004/leia.flv backlog_size=104857600 + +#stream /han.ts src=http://han.tg16.gathering.org:5004/han.ts backlog_size=104857600 +#stream /han.flv src=http://han.tg16.gathering.org:5004/han.flv backlog_size=104857600 + +# Webcams +stream /southcam.ts src=http://han.tg16.gathering.org:5004/southcam.ts backlog_size=104857600 +stream /southcam.flv src=http://han.tg16.gathering.org:5004/southcam.flv backlog_size=104857600 +stream /southcamlb.ts src=http://han.tg16.gathering.org:5006/southcamlb.ts backlog_size=104857600 +stream /southcamlb.flv src=http://han.tg16.gathering.org:5006/southcamlb.flv backlog_size=104857600 +stream /noccam.ts src=http://han.tg16.gathering.org:5005/noccam.ts backlog_size=104857600 +stream /noccam.flv src=http://han.tg16.gathering.org:5005/noccam.flv backlog_size=104857600 + +# Test +#stream /test.ts src=udp://@:1234 backlog_size=1048576 +stream /event.mp4 src=http://han.tg16.gathering.org:1994/event.mp4 backlog_size=104857600 force_prebuffer=750000 + +stream /udp.ts src=udp://@:1234 backlog_size=1048576 + diff --git a/examples/tg16/streams/cubemap/rey-cubemap.config b/examples/tg16/streams/cubemap/rey-cubemap.config new file mode 100644 index 0000000..7faa9a6 --- /dev/null +++ b/examples/tg16/streams/cubemap/rey-cubemap.config @@ -0,0 +1,150 @@ +# Uncomment to run in the background. Note that in daemonized mode, all filenames +# are relative to an undefined directory, so you should use absolute paths for +# error_log, stats_file, etc. + +#daemonize + +# For low-traffic servers (less than a gigabit or two), num_servers 1 is fine. +# For best performance in high-traffic situations, you want one for each CPU. +num_servers 1 + +# +# All input ports are treated exactly the same, but you may use multiple ones nevertheless. +# +port 80 +# listen 127.0.0.1:9095 +# listen [::1]:9095 + +stats_file /var/lib/cubemap/cubemap.stats +stats_interval 60 + +input_stats_file /var/lib/cubemap/cubemap-input.stats +input_stats_interval 60 + +# Logging of clients as they disconnect (and as such as no longer visible in the stats file). +# You can only have zero or one of these. +access_log /var/log/cubemap/access.log + +# Logging of various informational and error messages. You can have as many of these as you want. +error_log type=file filename=/var/log/cubemap/cubemap.log +error_log type=syslog +error_log type=console + +# +# Now the streams! There are two types of streams; stream (HTTP output) +# and udpstream (UDP output). Let's take stream first. +# + +# A basic form of stream, with HTTP input. Often, you will need no more than this. +# The input must be Metacube framed (VLC can produce this with an option). +#stream /test.flv src=http://gruessi.zrh.sesse.net:4013/test.flv + +# Streams can share the same input (the same is reused, no extra bandwidth needed). +# force_prebuffer=<number of bytes> is a parameter where we don't start sending +# any data to a newly connected client before we can do that many bytes at once. +# This is useful for clients that don't properly buffer themselves before starting +# playing, e.g., most web browsers and some Flash players when playing from HTTP +# (e.g., JW Player). +#stream /test-jwplayer.flv src=http://gruessi.zrh.sesse.net:4013/test.flv force_prebuffer=1500000 + +# encoding=metacube means the _output_ will be Metacube framed. This is useful +# for sending on to another Cubemap instance. +#stream /test.flv.metacube src=http://gruessi.zrh.sesse.net:4013/test.flv encoding=metacube + +# UDP input. TS is the most common container to use over UDP (you cannot +# take any arbitrary container and expect it to work). +# backlog_size=<number of bytes> overrides the backlog, which is normally 10 MB. +# If clients fall more behind than the backlog (plus the socket buffer), +# they will drop data, so if you have extremely high-bitrate streams, you may want +# to increase this. Or conversely, if you have little RAM and many streams +# (or many servers) you can decrease it. +#stream /udp.ts src=udp://@:1234 backlog_size=1048576 + +# An example of IPv4 multicast input. Cubemap will subscribe to the given group +# and wait for data sent by any sender to the given port. +# pacing_rate_kbit=<number of kilobit/sec> will ask the kernel to hard-limit +# the TCP transfer rate, including retransmits, to the given speed. (This is a +# no-op if you do not use the sch_fq packet scheduler, which is not the default +# but can be set in Linux 3.13 and newer using tc.) This is extremely +# useful for reducing packet loss and thus including throughput, since it means +# that packets arrive smoothly instead of in tight bursts, which will often +# overload underbuffered routers and cause drops (imagine receiving a 100 kB +# keyframe at 10gig speeds, and then having to meter it out over 5 Mbit ADSL). +# The rate should be a bit higher than your stream bitrate to allow for retransmits. +#stream /udp-multicast.ts src=udp://@233.252.0.2:1234 pacing_rate_kbit=2000 + +# IPv6 SSM (Single Source Multicast) input. Subscribes to the given group and +# waits for packets from the given sender only. SSM is nicer than ASM in that +# it does not require a Rendezvous Point (RP) and other complexity, but is +# often poorly supported in various network equipment. +#stream /udp-multicast-ssmv6.ts src=udp://[2001:67c:29f4::32]@[ff3e::1000:0]:1234 pacing_rate_kbit=20000 + +# udpstream takes src= inputs just like stream does, but instead of waiting +# for TCP connections on ports, it immediately sends the packets out over UDP. +# (As with UDP input, this probably only works well for TS mux.) +#udpstream [2001:67c:29f4::50]:5000 src=http://pannekake.samfundet.no:9094/frikanalen.ts.metacube + +# udpstream takes pacing_rate_kbit= just like stream. None of the other options +# make sense. +#udpstream 193.35.52.50:5001 src=http://pannekake.samfundet.no:9094/frikanalen.ts.metacube pacing_rate_kbit=2000 + +# IPv4 multicast output, to the given group. You can explicitly set the TTL +# and/or multicast output interface, if the defaults do not suit you. +#udpstream 233.252.0.1:5002 src=http://pannekake.samfundet.no:9094/frikanalen.ts.metacube ttl=32 multicast_output_interface=eth1 + +# A type of HTTP resource that is not a stream, but rather just a very simple +# document that a HTTP 204 response and nothing else. allow_origin= is optional; +# if it is set, the response will contain an Access-Control-Allow-Origin header +# with the given value, allowing the ping response to be read (and +# differentiated from an error) from a remote domain using XHR. +# +# If you have a stream and a gen204 endpoint with the same URL, the stream takes +# precedence and the ping endpoint is silently ignored. +gen204 /ping allow_origin=* + +# TG16 + +# For viewers -- production feeds +stream /event.ts src=http://anakin.tg16.gathering.org:5004/anakin.ts backlog_size=104857600 +stream /event.flv src=http://anakin.tg16.gathering.org:5004/anakin.flv backlog_size=104857600 + +stream /eventsd.ts src=http://han.tg16.gathering.org:5009/eventsd.ts backlog_size=104857600 +stream /eventsd.flv src=http://han.tg16.gathering.org:5009/eventsd.flv backlog_size=104857600 + +stream /game.ts src=http://padme.tg16.gathering.org:5004/padme.ts backlog_size=104857600 +stream /game.flv src=http://padme.tg16.gathering.org:5004/padme.flv backlog_size=104857600 + +stream /creativia.ts src=http://leia.tg16.gathering.org:5004/leia.ts backlog_size=104857600 +stream /creativia.flv src=http://leia.tg16.gathering.org:5004/leia.flv backlog_size=104857600 + + +# Servers - direct feed +stream /anakin.ts src=http://anakin.tg16.gathering.org:5004/anakin.ts backlog_size=104857600 +stream /anakin.flv src=http://anakin.tg16.gathering.org:5004/anakin.flv backlog_size=104857600 + +stream /padme.ts src=http://padme.tg16.gathering.org:5004/padme.ts backlog_size=104857600 +stream /padme.flv src=http://padme.tg16.gathering.org:5004/padme.flv backlog_size=104857600 + +stream /luke.ts src=http://luke.tg16.gathering.org:5004/luke.ts backlog_size=104857600 +stream /luke.flv src=http://luke.tg16.gathering.org:5004/luke.flv backlog_size=104857600 + +stream /leia.ts src=http://leia.tg16.gathering.org:5004/leia.ts backlog_size=104857600 +stream /leia.flv src=http://leia.tg16.gathering.org:5004/leia.flv backlog_size=104857600 + +#stream /han.ts src=http://han.tg16.gathering.org:5004/han.ts backlog_size=104857600 +#stream /han.flv src=http://han.tg16.gathering.org:5004/han.flv backlog_size=104857600 + +# Webcams +stream /southcam.ts src=http://han.tg16.gathering.org:5004/southcam.ts backlog_size=104857600 +stream /southcam.flv src=http://han.tg16.gathering.org:5004/southcam.flv backlog_size=104857600 +stream /southcamlb.ts src=http://han.tg16.gathering.org:5006/southcamlb.ts backlog_size=104857600 +stream /southcamlb.flv src=http://han.tg16.gathering.org:5006/southcamlb.flv backlog_size=104857600 +stream /noccam.ts src=http://han.tg16.gathering.org:5005/noccam.ts backlog_size=104857600 +stream /noccam.flv src=http://han.tg16.gathering.org:5005/noccam.flv backlog_size=104857600 + +# Test +#stream /test.ts src=udp://@:1234 backlog_size=1048576 +stream /event.mp4 src=http://han.tg16.gathering.org:1994/event.mp4 backlog_size=104857600 force_prebuffer=750000 + +stream /udp.ts src=udp://@:1234 backlog_size=1048576 + diff --git a/examples/tg16/streams/encoder-install.sh b/examples/tg16/streams/encoder-install.sh new file mode 100644 index 0000000..87da90f --- /dev/null +++ b/examples/tg16/streams/encoder-install.sh @@ -0,0 +1,42 @@ +#!/bin/bash +apt-get -y install build-essential git-core pkg-config libfaad-dev libdvbpsi-dev liblivemedia-dev libraw1394-dev libdc1394-22-dev libavc1394-dev libtool libtwolame-dev automake dkms libfontconfig1 libice6 libjpeg62 libmng1 libsm6 libtiff5 libxi6 libxrandr2 libxrender1 fontconfig libgl1-mesa-glx dh-autoreconf linux-headers-amd64 zlib1g-dev unzip libgcrypt-dev libvorbis-dev yasm sudo +dpkg -i desktopvideo_10.6.2a3_amd64.deb + +cd libvpx +./configure --enable-shared +make -j20 +sudo make install +sudo ldconfig +cd .. + +cd x264 +./configure --enable-shared +make -j20 +sudo make install +sudo ldconfig +cd .. + +cd fdk-aac +libtoolize +aclocal +automake --add-missing +autoconf +./configure +make -j20 +sudo make install +sudo ldconfig +cd .. + +cd ffmpeg +./configure --enable-shared --enable-libx264 --disable-stripping --enable-gpl --enable-nonfree --enable-libvpx --enable-libvorbis --enable-libfdk-aac +make -j20 +sudo make install +sudo ldconfig +cd .. + +cd vlc +./bootstrap +./configure --disable-dbus --disable-mad --disable-postproc --disable-a52 --disable-glx --disable-fribidi --disable-qt --disable-skins2 --enable-dvbpsi --enable-faad --disable-nls --disable-xcb --disable-sdl --disable-libgcrypt --disable-lua --disable-alsa --disable-v4l2 --enable-libgcrypt --enable-fdkaac --with-decklink-sdk=/root/decklink-sdk/Linux +make -j20 +sudo make install +sudo ldconfig diff --git a/examples/tg16/streams/han/encode.sh b/examples/tg16/streams/han/encode.sh new file mode 100644 index 0000000..34cda9f --- /dev/null +++ b/examples/tg16/streams/han/encode.sh @@ -0,0 +1,7 @@ +#!/bin/bash +cvlc -I dummy -vvvv --decklink-audio-connection embedded --live-caching 3000 --decklink-aspect-ratio 16:9 --decklink-mode hp60 --decklink-video-connection sdi --no-sub-autodetect-file --sub-source marq --marq-marquee 'Hello world! %t' \ + --sout-x264-preset medium --sout-x264-tune film --sout-transcode-threads 15 --no-sout-x264-interlaced --sout-mux-caching 3000 \ + --sout-x264-keyint 50 --sout-x264-lookahead 100 --sout-x264-vbv-maxrate 6000 --sout-x264-vbv-bufsize 6000 --ttl 60 \ + -v decklink:// vlc://quit \ + --sout \ +'#transcode{sfilter=logo{file="/home/tech/test.gif",position=10},vcodec=h264,vb=5500,acodec=mp4a,ab=256,channels=2}:duplicate{dst=std{access=http{metacube},mux=ts,dst=:5004/han.ts},dst=std{access=http{metacube},mux=ffmpeg{mux=flv},dst=:5004/han.flv}' diff --git a/examples/tg16/streams/han/event-encode-mp4.sh b/examples/tg16/streams/han/event-encode-mp4.sh new file mode 100644 index 0000000..7cb202f --- /dev/null +++ b/examples/tg16/streams/han/event-encode-mp4.sh @@ -0,0 +1,5 @@ +#!/bin/bash +cvlc -I dummy --network-caching 5000 --live-caching 5000 -vvvv http://cubemap.tg16.gathering.org/event.ts vlc://quit \ +--sout-x264-preset medium --sout-x264-tune film --sout-mux-caching 5000 --sout-transcode-threads 8 --sout-x264-vbv-maxrate 5000 --sout-x264-vbv-bufsize 5000 --sout-avformat-options '{movflags=empty_moov+frag_keyframe+default_base_moof}' --no-avcodec-dr --sout-x264-keyint 50 \ +--sout \ +'#transcode{vcodec=h264,vb=3500,acodec=mp4a,ab=128,channels=2}:std{mux=ffmpeg{mux=mp4},access=http{mime=video/mp4,metacube},dst=:1994/event.mp4}' diff --git a/examples/tg16/streams/han/event-sd.sh b/examples/tg16/streams/han/event-sd.sh new file mode 100644 index 0000000..9b927b3 --- /dev/null +++ b/examples/tg16/streams/han/event-sd.sh @@ -0,0 +1,6 @@ +#!/bin/bash +cvlc -I dummy -vvvv --sout-x264-preset medium --sout-x264-tune film --sout-transcode-threads 5 --no-sout-x264-interlaced --sout-mux-caching 5000 \ + --sout-x264-keyint 50 --sout-x264-lookahead 100 --sout-x264-vbv-maxrate 2000 --sout-x264-vbv-bufsize 2000 --ttl 60 --live-caching 10000 --network-caching 10000 \ + -v http://cubemap.tg16.gathering.org/anakin.ts vlc://quit \ + --sout \ +'#transcode{vcodec=h264,vb=2000,acodec=mp4a,ab=128,channels=2,height=576}:duplicate{dst=std{access=http{metacube},mux=ts,dst=:5009/eventsd.ts},dst=std{access=http{metacube},mux=ffmpeg{mux=flv},dst=:5009/eventsd.flv}' diff --git a/examples/tg16/streams/han/hls-creativia.sh b/examples/tg16/streams/han/hls-creativia.sh new file mode 100644 index 0000000..d07cbf7 --- /dev/null +++ b/examples/tg16/streams/han/hls-creativia.sh @@ -0,0 +1,6 @@ +#!/bin/bash +while :; do +ffmpeg -i http://cubemap.tg16.gathering.org/creativia.ts -vcodec copy -c:a libfdk_aac -ar 44100 -ac 2 -f flv rtmp://185.110.148.11/live/creativia; +sleep 1 +done + diff --git a/examples/tg16/streams/han/hls-event.sh b/examples/tg16/streams/han/hls-event.sh new file mode 100644 index 0000000..8050305 --- /dev/null +++ b/examples/tg16/streams/han/hls-event.sh @@ -0,0 +1,6 @@ +#!/bin/bash +while :; do +ffmpeg -i http://cubemap.tg16.gathering.org/event.ts -vcodec copy -c:a libfdk_aac -ar 44100 -ac 2 -f flv rtmp://185.110.148.11/live/event; +sleep 1 +done + diff --git a/examples/tg16/streams/han/hls-game.sh b/examples/tg16/streams/han/hls-game.sh new file mode 100644 index 0000000..3d2fef9 --- /dev/null +++ b/examples/tg16/streams/han/hls-game.sh @@ -0,0 +1,6 @@ +#!/bin/bash +while :; do +ffmpeg -i http://cubemap.tg16.gathering.org/game.ts -vcodec copy -c:a libfdk_aac -ar 44100 -ac 2 -f flv rtmp://185.110.148.11/live/game; +sleep 1 +done + diff --git a/examples/tg16/streams/han/hls-noc.sh b/examples/tg16/streams/han/hls-noc.sh new file mode 100644 index 0000000..f467fc4 --- /dev/null +++ b/examples/tg16/streams/han/hls-noc.sh @@ -0,0 +1,6 @@ +#!/bin/bash +while :; do +ffmpeg -thread_queue_size 16 -i http://cubemap.tg16.gathering.org/noccam.ts -f lavfi -i anullsrc -vcodec copy -c:a libfdk_aac -ar 44100 -ac 2 -f flv rtmp://185.110.148.11/live/noccam; +sleep 1 +done + diff --git a/examples/tg16/streams/han/hls-south.sh b/examples/tg16/streams/han/hls-south.sh new file mode 100644 index 0000000..6966b59 --- /dev/null +++ b/examples/tg16/streams/han/hls-south.sh @@ -0,0 +1,6 @@ +#!/bin/bash +while :; do +ffmpeg -thread_queue_size 16 -i http://cubemap.tg16.gathering.org/southcam.ts -f lavfi -i anullsrc -vcodec copy -c:a libfdk_aac -ar 44100 -ac 2 -f flv rtmp://185.110.148.11/live/southcam; +sleep 1 +done + diff --git a/examples/tg16/streams/han/noc-reflect.sh b/examples/tg16/streams/han/noc-reflect.sh new file mode 100644 index 0000000..a33c4e0 --- /dev/null +++ b/examples/tg16/streams/han/noc-reflect.sh @@ -0,0 +1,9 @@ +#!/bin/bash +# reflecting purposes +source="rtsp://185.110.150.85/live.sdp" + +while :; do +vlc -I dummy -vv --network-caching 500 $source vlc://quit --sout '#duplicate{dst=std{access=http{metacube},mux=ts,dst=:5005/noccam.ts},dst=std{access=http{metacube},mux=ffmpeg{mux=flv},dst=:5005/noccam.flv}' +sleep 1 +done + diff --git a/examples/tg16/streams/han/south-encode-mp4.sh b/examples/tg16/streams/han/south-encode-mp4.sh new file mode 100644 index 0000000..0face57 --- /dev/null +++ b/examples/tg16/streams/han/south-encode-mp4.sh @@ -0,0 +1,5 @@ +#!/bin/bash +cvlc -I dummy -vvvv rtsp://88.92.61.10/live.sdp vlc://quit \ +--live-caching 5000 --network-caching 5000 --sout-x264-preset medium --sout-x264-tune film --sout-mux-caching 5000 --sout-transcode-threads 6 --sout-x264-vbv-maxrate 5000 --sout-x264-vbv-bufsize 5000 --sout-avformat-options '{movflags=empty_moov+frag_keyframe+default_base_moof}' --no-avcodec-dr --sout-x264-keyint 50 \ +--sout \ +'#transcode{vcodec=h264,vb=3500,acodec=mp4a,ab=128,channels=2}:duplicate{dst=std{access=http{mime=video/mp4,metacube},mux=ffmpeg{mux=mp4},dst=:5006/southcamlb.mp4},dst=std{access=http{metacube},mux=ts,dst=:5006/southcamlb.ts}}' \ diff --git a/examples/tg16/streams/han/south-encode.sh b/examples/tg16/streams/han/south-encode.sh new file mode 100644 index 0000000..9138736 --- /dev/null +++ b/examples/tg16/streams/han/south-encode.sh @@ -0,0 +1,10 @@ +#!/bin/bash +while :; do +cvlc -I dummy -vvvv \ + --sout-x264-preset medium --sout-x264-tune film --sout-transcode-threads 10 --no-sout-x264-interlaced --sout-mux-caching 5000 --network-caching 3000 \ + --sout-x264-keyint 50 --sout-x264-lookahead 100 --sout-x264-vbv-maxrate 3000 --sout-x264-vbv-bufsize 3000 --ttl 60 \ + -v rtsp://88.92.61.10/live.sdp  vlc://quit \ + --sout \ +'#transcode{vcodec=h264,vb=4500,acodec=null}:duplicate{dst=std{access=http{metacube},mux=ts,dst=:5006/southcamlb.ts},dst=std{access=http{metacube},mux=ffmpeg{mux=flv},dst=:5006/southcamlb.flv}' +sleep 1 +done diff --git a/examples/tg16/streams/han/south-reflect.sh b/examples/tg16/streams/han/south-reflect.sh new file mode 100644 index 0000000..cfeaeab --- /dev/null +++ b/examples/tg16/streams/han/south-reflect.sh @@ -0,0 +1,9 @@ +#!/bin/bash +# reflecting purposes +source="rtsp://88.92.61.10/live.sdp" + +while :; do +vlc -I dummy -vv --network-caching 500 $source vlc://quit --sout '#duplicate{dst=std{access=http{metacube},mux=ts,dst=:5004/southcam.ts},dst=std{access=http{metacube},mux=ffmpeg{mux=flv},dst=:5004/southcam.flv}' +sleep 1 +done + diff --git a/examples/tg16/streams/leia/encode.sh b/examples/tg16/streams/leia/encode.sh new file mode 100644 index 0000000..239f411 --- /dev/null +++ b/examples/tg16/streams/leia/encode.sh @@ -0,0 +1,7 @@ +#!/bin/bash +cvlc -I dummy -vvvv --decklink-audio-connection embedded --live-caching 3000 --decklink-aspect-ratio 16:9 --decklink-mode hp50 --decklink-video-connection sdi \ + --sout-x264-preset medium --sout-x264-tune film --sout-transcode-threads 15 --no-sout-x264-interlaced --sout-mux-caching 3000 \ + --sout-x264-keyint 50 --sout-x264-lookahead 100 --sout-x264-vbv-maxrate 6000 --sout-x264-vbv-bufsize 6000 --ttl 60 \ + -v decklink:// vlc://quit \ + --sout \ +'#transcode{vcodec=h264,vb=5500,acodec=mp4a,ab=256,channels=2}:duplicate{dst=std{access=http{metacube},mux=ts,dst=:5004/leia.ts},dst=std{access=http{metacube},mux=ffmpeg{mux=flv},dst=:5004/leia.flv}' diff --git a/examples/tg16/streams/luke/encode.sh b/examples/tg16/streams/luke/encode.sh new file mode 100644 index 0000000..70ea222 --- /dev/null +++ b/examples/tg16/streams/luke/encode.sh @@ -0,0 +1,7 @@ +#!/bin/bash +cvlc -I dummy -vvvv --decklink-audio-connection embedded --live-caching 3000 --decklink-mode Hp50 --decklink-aspect-ratio 16:9 --decklink-video-connection sdi \ + --sout-x264-preset medium --sout-x264-tune film --sout-transcode-threads 15 --no-sout-x264-interlaced --sout-mux-caching 10000 \ + --sout-x264-keyint 50 --sout-x264-lookahead 100 --sout-x264-vbv-maxrate 25000 --sout-x264-vbv-bufsize 25000 --ttl 60 \ + -v decklink:// vlc://quit \ + --sout \ +'#transcode{vcodec=h264,vb=25000,acodec=mp4a,ab=256,channels=2}:duplicate{dst=std{access=http{metacube},mux=ts,dst=:5004/luke.ts},dst=std{access=http{metacube},mux=ffmpeg{mux=flv},dst=:5004/luke.flv}' diff --git a/examples/tg16/streams/luke/ffmpeg-deinterlace.sh b/examples/tg16/streams/luke/ffmpeg-deinterlace.sh new file mode 100644 index 0000000..898cae4 --- /dev/null +++ b/examples/tg16/streams/luke/ffmpeg-deinterlace.sh @@ -0,0 +1,6 @@ +#!/bin/bash +ffmpeg -y -f decklink -i 'DeckLink SDI 4K@8' -v verbose \ +-c:v libx264 -tune film -preset medium -x264opts keyint=50:rc-lookahead=70:vbv-maxrate=6500:vbv-bufsize=6500:bitrate=6500 \ +-c:a libfdk_aac -ac 2 -b:a 192k -threads 16 -f mpegts \ +-vf yadif=1 - | cvlc - --sout "#std{access=http{metacube},mux=ts,dst=:5004/luke.ts}" --live-caching 3000 --file-caching 3000 +#"udp://185.110.148.8:1234?pkt_size=1316&buffer_size=10485760&fifo_size=10485760&ttl=60" diff --git a/examples/tg16/streams/luke/ffmpeg.sh b/examples/tg16/streams/luke/ffmpeg.sh new file mode 100644 index 0000000..77cc18d --- /dev/null +++ b/examples/tg16/streams/luke/ffmpeg.sh @@ -0,0 +1,5 @@ +#!/bin/bash +ffmpeg -y -f decklink -i 'DeckLink SDI 4K@11' -v verbose \ +-c:v libx264 -tune film -preset medium -x264opts keyint=50:rc-lookahead=70:vbv-maxrate=15000:vbv-bufsize=15000:bitrate=15000 \ +-c:a libfdk_aac -ac 2 -b:a 192k -threads 16 -f mpegts  - | cvlc - --sout "#std{access=http{metacube},mux=ts,dst=:5004/luke.ts}" --live-caching 3000 --file-caching 3000 +#"udp://185.110.148.8:1234?pkt_size=1316&buffer_size=10485760&fifo_size=10485760&ttl=60" diff --git a/examples/tg16/streams/padme/encode-mp4.sh b/examples/tg16/streams/padme/encode-mp4.sh new file mode 100644 index 0000000..8be1bbd --- /dev/null +++ b/examples/tg16/streams/padme/encode-mp4.sh @@ -0,0 +1,8 @@ +#!/bin/bash +#'#transcode{vcodec=h264,vb=5500,acodec=mp4a,ab=256,channels=2}:duplicate{dst=std{access=http{metacube},mux=ts,dst=:5004/padme.ts},dst=std{access=http{metacube},mux=ffmpeg{mux=flv},dst=:5004/padme.flv,dst=std{access=http{mime=video/mp4},mux=ffmpeg{mux=mp4},dst=:5004/stream.mp4}}' + +cvlc -I dummy -vvvv --decklink-audio-connection embedded --live-caching 3000 --decklink-aspect-ratio 16:9 --decklink-mode hp50 --decklink-video-connection sdi \ +-v decklink:// vlc://quit --sout \ +'#transcode{vcodec=h264,vb=5500,acodec=mp4a,ab=256,channels=2}:duplicate{dst=std{access=http{mime=video/mp4,metacube},mux=ffmpeg{mux=mp4},dst=:5004/padme.mp4},dst=std{access=http{metacube},mux=ts,dst=:5004/padme.ts}}' \ +--sout-x264-preset slow --live-caching 3000 --sout-x264-tune film --sout-mux-caching 8000 --sout-x264-vbv-maxrate 5000 --sout-x264-vbv-bufsize 5000 --sout-avformat-options '{movflags=empty_moov+frag_keyframe+default_base_moof,frag_interleave=5}' --no-avcodec-dr --sout-x264-keyint 50 + diff --git a/examples/tg16/streams/padme/encode-webm.sh b/examples/tg16/streams/padme/encode-webm.sh new file mode 100644 index 0000000..eaac329 --- /dev/null +++ b/examples/tg16/streams/padme/encode-webm.sh @@ -0,0 +1,5 @@ +#!/bin/bash +cvlc -I dummy -vvvv --decklink-audio-connection embedded --live-caching 3000 --decklink-aspect-ratio 16:9 --decklink-mode hp60 --decklink-video-connection sdi \ +-v decklink:// vlc://quit --sout \ +'#transcode{vcodec=VP80,vb=3000,channels=2,samplerate=44100}:std{access=http{mime=video/webm},mux=webm,dst=:8080/stream.webm}' \ +--sout-mux-caching 5000 diff --git a/examples/tg16/streams/padme/encode.sh b/examples/tg16/streams/padme/encode.sh new file mode 100644 index 0000000..b8f7204 --- /dev/null +++ b/examples/tg16/streams/padme/encode.sh @@ -0,0 +1,8 @@ +#!/bin/bash +cvlc -I dummy -vvvv --decklink-audio-connection embedded --live-caching 3000 --decklink-aspect-ratio 16:9 --decklink-mode hp50 --decklink-video-connection sdi \ + --sout-x264-preset medium --sout-x264-tune film --sout-transcode-threads 15 --no-sout-x264-interlaced --sout-mux-caching 3000 \ + --sout-x264-keyint 50 --sout-x264-lookahead 100 --sout-x264-vbv-maxrate 6000 --sout-x264-vbv-bufsize 6000 --ttl 60 \ + -v decklink:// vlc://quit \ + --sout \ +'#transcode{vcodec=h264,vb=5500,acodec=mp4a,ab=256,channels=2}:duplicate{dst=std{access=http{metacube},mux=ts,dst=:5004/padme.ts},dst=std{access=http{metacube},mux=ffmpeg{mux=flv},dst=:5004/padme.flv}' + diff --git a/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160322-0600.png b/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160322-0600.png Binary files differnew file mode 100644 index 0000000..791beab --- /dev/null +++ b/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160322-0600.png diff --git a/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160323-0600.png b/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160323-0600.png Binary files differnew file mode 100644 index 0000000..da7c967 --- /dev/null +++ b/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160323-0600.png diff --git a/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160324-0600.png b/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160324-0600.png Binary files differnew file mode 100644 index 0000000..39484c9 --- /dev/null +++ b/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160324-0600.png diff --git a/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160325-0600.png b/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160325-0600.png Binary files differnew file mode 100644 index 0000000..e6c8c16 --- /dev/null +++ b/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160325-0600.png diff --git a/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160326-0600.png b/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160326-0600.png Binary files differnew file mode 100644 index 0000000..b2ce587 --- /dev/null +++ b/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160326-0600.png diff --git a/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160327-0600.png b/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160327-0600.png Binary files differnew file mode 100644 index 0000000..8a91859 --- /dev/null +++ b/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160327-0600.png diff --git a/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160327-0900.png b/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160327-0900.png Binary files differnew file mode 100644 index 0000000..2a86ba5 --- /dev/null +++ b/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160327-0900.png diff --git a/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160327-1308.png b/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160327-1308.png Binary files differnew file mode 100644 index 0000000..c20128d --- /dev/null +++ b/examples/tg16/streams/streamstats/cubemap_finn_detailed-20160327-1308.png diff --git a/examples/tg16/streams/streamstats/cubemap_rey_detailed-20160322-0600.png b/examples/tg16/streams/streamstats/cubemap_rey_detailed-20160322-0600.png Binary files differnew file mode 100644 index 0000000..6566c09 --- /dev/null +++ b/examples/tg16/streams/streamstats/cubemap_rey_detailed-20160322-0600.png diff --git a/examples/tg16/streams/streamstats/cubemap_rey_detailed-20160323-0600.png b/examples/tg16/streams/streamstats/cubemap_rey_detailed-20160323-0600.png Binary files differnew file mode 100644 index 0000000..204912c --- /dev/null +++ b/examples/tg16/streams/streamstats/cubemap_rey_detailed-20160323-0600.png diff --git a/examples/tg16/streams/streamstats/cubemap_rey_detailed-20160324-0600.png b/examples/tg16/streams/streamstats/cubemap_rey_detailed-20160324-0600.png Binary files differnew file mode 100644 index 0000000..6368652 --- /dev/null +++ b/examples/tg16/streams/streamstats/cubemap_rey_detailed-20160324-0600.png diff --git a/examples/tg16/streams/streamstats/cubemap_rey_detailed-20160325-0600.png b/examples/tg16/streams/streamstats/cubemap_rey_detailed-20160325-0600.png Binary files differnew file mode 100644 index 0000000..41cef7a --- /dev/null +++ b/examples/tg16/streams/streamstats/cubemap_rey_detailed-20160325-0600.png diff --git a/examples/tg16/streams/streamstats/cubemap_rey_detailed-20160326-0600.png b/examples/tg16/streams/streamstats/cubemap_rey_detailed-20160326-0600.png Binary files differnew file mode 100644 index 0000000..ddd5e35 --- /dev/null +++ b/examples/tg16/streams/streamstats/cubemap_rey_detailed-20160326-0600.png diff --git a/examples/tg16/switches.txt b/examples/tg16/switches.txt new file mode 100644 index 0000000..67b49f4 --- /dev/null +++ b/examples/tg16/switches.txt @@ -0,0 +1,131 @@ +e1-3 88.92.0.0/26 2a06:5840:0a::/64 88.92.54.2/26 2a06:5840:54a::2/64 1013 distro0 +e1-4 88.92.0.64/26 2a06:5840:0b::/64 88.92.54.3/26 2a06:5840:54a::3/64 1014 distro0 +e3-3 88.92.0.128/26 2a06:5840:0c::/64 88.92.54.4/26 2a06:5840:54a::4/64 1033 distro0 +e3-4 88.92.0.192/26 2a06:5840:0d::/64 88.92.54.5/26 2a06:5840:54a::5/64 1034 distro0 +e5-2 88.92.1.0/26 2a06:5840:1a::/64 88.92.54.66/26 2a06:5840:54b::66/64 1052 distro1 +e5-3 88.92.1.64/26 2a06:5840:1b::/64 88.92.54.6/26 2a06:5840:54a::6/64 1053 distro0 +e5-4 88.92.1.128/26 2a06:5840:1c::/64 88.92.54.7/26 2a06:5840:54a::7/64 1054 distro0 +e7-1 88.92.1.192/26 2a06:5840:1d::/64 88.92.54.67/26 2a06:5840:54b::67/64 1071 distro1 +e7-2 88.92.2.0/26 2a06:5840:2a::/64 88.92.54.68/26 2a06:5840:54b::68/64 1072 distro1 +e7-3 88.92.2.64/26 2a06:5840:2b::/64 88.92.54.8/26 2a06:5840:54a::8/64 1073 distro0 +e7-4 88.92.2.128/26 2a06:5840:2c::/64 88.92.54.9/26 2a06:5840:54a::9/64 1074 distro0 +e9-1 88.92.2.192/26 2a06:5840:2d::/64 88.92.54.69/26 2a06:5840:54b::69/64 1091 distro1 +e9-2 88.92.3.0/26 2a06:5840:3a::/64 88.92.54.70/26 2a06:5840:54b::70/64 1092 distro1 +e9-3 88.92.3.64/26 2a06:5840:3b::/64 88.92.54.10/26 2a06:5840:54a::10/64 1093 distro0 +e9-4 88.92.3.128/26 2a06:5840:3c::/64 88.92.54.11/26 2a06:5840:54a::11/64 1094 distro0 +e11-1 88.92.3.192/26 2a06:5840:3d::/64 88.92.54.71/26 2a06:5840:54b::71/64 1111 distro1 +e11-2 88.92.4.0/26 2a06:5840:4a::/64 88.92.54.72/26 2a06:5840:54b::72/64 1112 distro1 +e11-3 88.92.4.64/26 2a06:5840:4b::/64 88.92.54.12/26 2a06:5840:54a::12/64 1113 distro0 +e11-4 88.92.4.128/26 2a06:5840:4c::/64 88.92.54.13/26 2a06:5840:54a::13/64 1114 distro0 +e13-1 88.92.4.192/26 2a06:5840:4d::/64 88.92.54.73/26 2a06:5840:54b::73/64 1131 distro1 +e13-2 88.92.5.0/26 2a06:5840:5a::/64 88.92.54.74/26 2a06:5840:54b::74/64 1132 distro1 +e13-3 88.92.5.64/26 2a06:5840:5b::/64 88.92.54.130/26 2a06:5840:54c::130/64 1133 distro2 +e13-4 88.92.5.128/26 2a06:5840:5c::/64 88.92.54.131/26 2a06:5840:54c::131/64 1134 distro2 +e15-1 88.92.5.192/26 2a06:5840:5d::/64 88.92.54.75/26 2a06:5840:54b::75/64 1151 distro1 +e15-2 88.92.6.0/26 2a06:5840:6a::/64 88.92.54.76/26 2a06:5840:54b::76/64 1152 distro1 +e15-3 88.92.6.64/26 2a06:5840:6b::/64 88.92.54.132/26 2a06:5840:54c::132/64 1153 distro2 +e15-4 88.92.6.128/26 2a06:5840:6c::/64 88.92.54.133/26 2a06:5840:54c::133/64 1154 distro2 +e17-1 88.92.6.192/26 2a06:5840:6d::/64 88.92.54.77/26 2a06:5840:54b::77/64 1171 distro1 +e17-2 88.92.7.0/26 2a06:5840:7a::/64 88.92.54.78/26 2a06:5840:54b::78/64 1172 distro1 +e17-3 88.92.7.64/26 2a06:5840:7b::/64 88.92.54.134/26 2a06:5840:54c::134/64 1173 distro2 +e17-4 88.92.7.128/26 2a06:5840:7c::/64 88.92.54.135/26 2a06:5840:54c::135/64 1174 distro2 +e19-1 88.92.7.192/26 2a06:5840:7d::/64 88.92.54.79/26 2a06:5840:54b::79/64 1191 distro1 +e19-2 88.92.8.0/26 2a06:5840:8a::/64 88.92.54.80/26 2a06:5840:54b::80/64 1192 distro1 +e19-3 88.92.8.64/26 2a06:5840:8b::/64 88.92.54.136/26 2a06:5840:54c::136/64 1193 distro2 +e19-4 88.92.8.128/26 2a06:5840:8c::/64 88.92.54.137/26 2a06:5840:54c::137/64 1194 distro2 +e21-1 88.92.8.192/26 2a06:5840:8d::/64 88.92.54.81/26 2a06:5840:54b::81/64 1211 distro1 +e21-2 88.92.9.0/26 2a06:5840:9a::/64 88.92.54.82/26 2a06:5840:54b::82/64 1212 distro1 +e21-3 88.92.9.64/26 2a06:5840:9b::/64 88.92.54.138/26 2a06:5840:54c::138/64 1213 distro2 +e21-4 88.92.9.128/26 2a06:5840:9c::/64 88.92.54.139/26 2a06:5840:54c::139/64 1214 distro2 +e23-1 88.92.9.192/26 2a06:5840:9d::/64 88.92.54.83/26 2a06:5840:54b::83/64 1231 distro1 +e23-2 88.92.10.0/26 2a06:5840:10a::/64 88.92.54.84/26 2a06:5840:54b::84/64 1232 distro1 +e23-3 88.92.10.64/26 2a06:5840:10b::/64 88.92.54.140/26 2a06:5840:54c::140/64 1233 distro2 +e23-4 88.92.10.128/26 2a06:5840:10c::/64 88.92.54.141/26 2a06:5840:54c::141/64 1234 distro2 +e25-1 88.92.10.192/26 2a06:5840:10d::/64 88.92.54.194/26 2a06:5840:54d::194/64 1251 distro3 +e25-2 88.92.11.0/26 2a06:5840:11a::/64 88.92.54.195/26 2a06:5840:54d::195/64 1252 distro3 +e27-1 88.92.11.64/26 2a06:5840:11b::/64 88.92.54.196/26 2a06:5840:54d::196/64 1271 distro3 +e27-2 88.92.11.128/26 2a06:5840:11c::/64 88.92.54.197/26 2a06:5840:54d::197/64 1272 distro3 +e29-1 88.92.11.192/26 2a06:5840:11d::/64 88.92.54.198/26 2a06:5840:54d::198/64 1291 distro3 +e29-2 88.92.12.0/26 2a06:5840:12a::/64 88.92.54.199/26 2a06:5840:54d::199/64 1292 distro3 +e31-1 88.92.12.64/26 2a06:5840:12b::/64 88.92.54.200/26 2a06:5840:54d::200/64 1311 distro3 +e31-2 88.92.12.128/26 2a06:5840:12c::/64 88.92.54.201/26 2a06:5840:54d::201/64 1312 distro3 +e33-1 88.92.12.192/26 2a06:5840:12d::/64 88.92.54.202/26 2a06:5840:54d::202/64 1331 distro3 +e33-2 88.92.13.0/26 2a06:5840:13a::/64 88.92.54.203/26 2a06:5840:54d::203/64 1332 distro3 +e35-1 88.92.13.64/26 2a06:5840:13b::/64 88.92.54.204/26 2a06:5840:54d::204/64 1351 distro3 +e35-2 88.92.13.128/26 2a06:5840:13c::/64 88.92.54.205/26 2a06:5840:54d::205/64 1352 distro3 +e37-1 88.92.13.192/26 2a06:5840:13d::/64 88.92.54.206/26 2a06:5840:54d::206/64 1371 distro3 +e37-2 88.92.14.0/26 2a06:5840:14a::/64 88.92.54.207/26 2a06:5840:54d::207/64 1372 distro3 +e39-1 88.92.14.64/26 2a06:5840:14b::/64 88.92.54.208/26 2a06:5840:54d::208/64 1391 distro3 +e39-2 88.92.14.128/26 2a06:5840:14c::/64 88.92.54.209/26 2a06:5840:54d::209/64 1392 distro3 +e41-1 88.92.14.192/26 2a06:5840:14d::/64 88.92.55.2/26 2a06:5840:55a::2/64 1411 distro4 +e41-2 88.92.15.0/26 2a06:5840:15a::/64 88.92.55.3/26 2a06:5840:55a::3/64 1412 distro4 +e41-3 88.92.15.64/26 2a06:5840:15b::/64 88.92.55.66/26 2a06:5840:55b::66/64 1413 distro5 +e41-4 88.92.15.128/26 2a06:5840:15c::/64 88.92.55.67/26 2a06:5840:55b::67/64 1414 distro5 +e43-1 88.92.15.192/26 2a06:5840:15d::/64 88.92.55.4/26 2a06:5840:55a::4/64 1431 distro4 +e43-2 88.92.16.0/26 2a06:5840:16a::/64 88.92.55.5/26 2a06:5840:55a::5/64 1432 distro4 +e43-3 88.92.16.64/26 2a06:5840:16b::/64 88.92.55.68/26 2a06:5840:55b::68/64 1433 distro5 +e43-4 88.92.16.128/26 2a06:5840:16c::/64 88.92.55.69/26 2a06:5840:55b::69/64 1434 distro5 +e45-1 88.92.16.192/26 2a06:5840:16d::/64 88.92.55.6/26 2a06:5840:55a::6/64 1451 distro4 +e45-2 88.92.17.0/26 2a06:5840:17a::/64 88.92.55.7/26 2a06:5840:55a::7/64 1452 distro4 +e45-3 88.92.17.64/26 2a06:5840:17b::/64 88.92.55.70/26 2a06:5840:55b::70/64 1453 distro5 +e45-4 88.92.17.128/26 2a06:5840:17c::/64 88.92.55.71/26 2a06:5840:55b::71/64 1454 distro5 +e47-1 88.92.17.192/26 2a06:5840:17d::/64 88.92.55.8/26 2a06:5840:55a::8/64 1471 distro4 +e47-2 88.92.18.0/26 2a06:5840:18a::/64 88.92.55.9/26 2a06:5840:55a::9/64 1472 distro4 +e47-3 88.92.18.64/26 2a06:5840:18b::/64 88.92.55.72/26 2a06:5840:55b::72/64 1473 distro5 +e47-4 88.92.18.128/26 2a06:5840:18c::/64 88.92.55.73/26 2a06:5840:55b::73/64 1474 distro5 +e49-1 88.92.18.192/26 2a06:5840:18d::/64 88.92.55.10/26 2a06:5840:55a::10/64 1491 distro4 +e49-2 88.92.19.0/26 2a06:5840:19a::/64 88.92.55.11/26 2a06:5840:55a::11/64 1492 distro4 +e49-3 88.92.19.64/26 2a06:5840:19b::/64 88.92.55.74/26 2a06:5840:55b::74/64 1493 distro5 +e49-4 88.92.19.128/26 2a06:5840:19c::/64 88.92.55.75/26 2a06:5840:55b::75/64 1494 distro5 +e51-1 88.92.19.192/26 2a06:5840:19d::/64 88.92.55.12/26 2a06:5840:55a::12/64 1511 distro4 +e51-2 88.92.20.0/26 2a06:5840:20a::/64 88.92.55.13/26 2a06:5840:55a::13/64 1512 distro4 +e51-3 88.92.20.64/26 2a06:5840:20b::/64 88.92.55.76/26 2a06:5840:55b::76/64 1513 distro5 +e51-4 88.92.20.128/26 2a06:5840:20c::/64 88.92.55.77/26 2a06:5840:55b::77/64 1514 distro5 +e53-1 88.92.20.192/26 2a06:5840:20d::/64 88.92.55.14/26 2a06:5840:55a::14/64 1531 distro4 +e53-2 88.92.21.0/26 2a06:5840:21a::/64 88.92.55.15/26 2a06:5840:55a::15/64 1532 distro4 +e53-3 88.92.21.64/26 2a06:5840:21b::/64 88.92.55.78/26 2a06:5840:55b::78/64 1533 distro5 +e53-4 88.92.21.128/26 2a06:5840:21c::/64 88.92.55.79/26 2a06:5840:55b::79/64 1534 distro5 +e55-1 88.92.21.192/26 2a06:5840:21d::/64 88.92.55.16/26 2a06:5840:55a::16/64 1551 distro4 +e55-2 88.92.22.0/26 2a06:5840:22a::/64 88.92.55.17/26 2a06:5840:55a::17/64 1552 distro4 +e55-3 88.92.22.64/26 2a06:5840:22b::/64 88.92.55.80/26 2a06:5840:55b::80/64 1553 distro5 +e55-4 88.92.22.128/26 2a06:5840:22c::/64 88.92.55.81/26 2a06:5840:55b::81/64 1554 distro5 +e57-1 88.92.22.192/26 2a06:5840:22d::/64 88.92.55.18/26 2a06:5840:55a::18/64 1571 distro4 +e57-2 88.92.23.0/26 2a06:5840:23a::/64 88.92.55.19/26 2a06:5840:55a::19/64 1572 distro4 +e57-3 88.92.23.64/26 2a06:5840:23b::/64 88.92.55.82/26 2a06:5840:55b::82/64 1573 distro5 +e57-4 88.92.23.128/26 2a06:5840:23c::/64 88.92.55.83/26 2a06:5840:55b::83/64 1574 distro5 +e59-1 88.92.23.192/26 2a06:5840:23d::/64 88.92.55.194/26 2a06:5840:55d::194/64 1591 distro7 +e59-2 88.92.24.0/26 2a06:5840:24a::/64 88.92.55.195/26 2a06:5840:55d::195/64 1592 distro7 +e59-3 88.92.24.64/26 2a06:5840:24b::/64 88.92.55.130/26 2a06:5840:55c::130/64 1593 distro6 +e59-4 88.92.24.128/26 2a06:5840:24c::/64 88.92.55.131/26 2a06:5840:55c::131/64 1594 distro6 +e61-1 88.92.24.192/26 2a06:5840:24d::/64 88.92.55.196/26 2a06:5840:55d::196/64 1611 distro7 +e61-2 88.92.25.0/26 2a06:5840:25a::/64 88.92.55.197/26 2a06:5840:55d::197/64 1612 distro7 +e61-3 88.92.25.64/26 2a06:5840:25b::/64 88.92.55.132/26 2a06:5840:55c::132/64 1613 distro6 +e61-4 88.92.25.128/26 2a06:5840:25c::/64 88.92.55.133/26 2a06:5840:55c::133/64 1614 distro6 +e63-1 88.92.25.192/26 2a06:5840:25d::/64 88.92.55.198/26 2a06:5840:55d::198/64 1631 distro7 +e63-2 88.92.26.0/26 2a06:5840:26a::/64 88.92.55.199/26 2a06:5840:55d::199/64 1632 distro7 +e63-3 88.92.26.64/26 2a06:5840:26b::/64 88.92.55.134/26 2a06:5840:55c::134/64 1633 distro6 +e63-4 88.92.26.128/26 2a06:5840:26c::/64 88.92.55.135/26 2a06:5840:55c::135/64 1634 distro6 +e65-1 88.92.26.192/26 2a06:5840:26d::/64 88.92.55.200/26 2a06:5840:55d::200/64 1651 distro7 +e65-2 88.92.27.0/26 2a06:5840:27a::/64 88.92.55.201/26 2a06:5840:55d::201/64 1652 distro7 +e65-3 88.92.27.64/26 2a06:5840:27b::/64 88.92.55.136/26 2a06:5840:55c::136/64 1653 distro6 +e65-4 88.92.27.128/26 2a06:5840:27c::/64 88.92.55.137/26 2a06:5840:55c::137/64 1654 distro6 +e67-1 88.92.27.192/26 2a06:5840:27d::/64 88.92.55.202/26 2a06:5840:55d::202/64 1671 distro7 +e67-2 88.92.28.0/26 2a06:5840:28a::/64 88.92.55.203/26 2a06:5840:55d::203/64 1672 distro7 +e67-3 88.92.28.64/26 2a06:5840:28b::/64 88.92.55.138/26 2a06:5840:55c::138/64 1673 distro6 +e67-4 88.92.28.128/26 2a06:5840:28c::/64 88.92.55.139/26 2a06:5840:55c::139/64 1674 distro6 +e69-1 88.92.28.192/26 2a06:5840:28d::/64 88.92.55.204/26 2a06:5840:55d::204/64 1691 distro7 +e69-2 88.92.29.0/26 2a06:5840:29a::/64 88.92.55.205/26 2a06:5840:55d::205/64 1692 distro7 +e71-1 88.92.29.64/26 2a06:5840:29b::/64 88.92.55.206/26 2a06:5840:55d::206/64 1711 distro7 +e71-2 88.92.29.128/26 2a06:5840:29c::/64 88.92.55.207/26 2a06:5840:55d::207/64 1712 distro7 +e73-1 88.92.29.192/26 2a06:5840:29d::/64 88.92.55.208/26 2a06:5840:55d::208/64 1731 distro7 +e73-2 88.92.30.0/26 2a06:5840:30a::/64 88.92.55.209/26 2a06:5840:55d::209/64 1732 distro7 +e75-1 88.92.30.64/26 2a06:5840:30b::/64 88.92.55.210/26 2a06:5840:55d::210/64 1751 distro7 +e75-2 88.92.30.128/26 2a06:5840:30c::/64 88.92.55.211/26 2a06:5840:55d::211/64 1752 distro7 +e77-1 88.92.30.192/26 2a06:5840:30d::/64 88.92.55.212/26 2a06:5840:55d::212/64 1771 distro7 +e77-2 88.92.31.0/26 2a06:5840:31a::/64 88.92.55.213/26 2a06:5840:55d::213/64 1772 distro7 +e79-1 88.92.31.64/26 2a06:5840:31b::/64 88.92.55.214/26 2a06:5840:55d::214/64 1791 distro7 +e79-2 88.92.31.128/26 2a06:5840:31c::/64 88.92.55.215/26 2a06:5840:55d::215/64 1792 distro7 +e81-1 88.92.31.192/26 2a06:5840:31d::/64 88.92.55.216/26 2a06:5840:55d::216/64 1811 distro7 +e81-2 88.92.32.0/26 2a06:5840:32a::/64 88.92.55.217/26 2a06:5840:55d::217/64 1812 distro7 +e83-2 88.92.32.64/26 2a06:5840:32b::/64 88.92.55.218/26 2a06:5840:55d::218/64 1832 distro7 +e85-2 88.92.32.128/26 2a06:5840:32c::/64 88.92.55.219/26 2a06:5840:55d::219/64 1852 distro7 diff --git a/examples/tg16/web/stream.gathering.org/index.html b/examples/tg16/web/stream.gathering.org/index.html new file mode 100644 index 0000000..9a3670c --- /dev/null +++ b/examples/tg16/web/stream.gathering.org/index.html @@ -0,0 +1,187 @@ +<!DOCTYPE html> +<html lang="en"> +<head> +	<meta charset="utf-8"> +	<title>The Gathering 2016 Streams</title> + +	<!-- Mobile specific +	----------------------> +	<meta name="viewport" content="width=device-width, initial-scale=0.35"> + +	<!-- CSS specifics +	--------------------> +	<link rel="stylesheet" href="./resources/css/normalize.css"> +	<link rel="stylesheet" href="./resources/css/skeleton.css"> +	<link rel="stylesheet" href="./resources/css/core.css"> +	<link rel="stylesheet" href="./resources/css/button-styles.css"> + +	<style type="text/css"> +		.vjs-big-play-button { +			top:0; +			left:0; +			right:0; +			bottom:0; +			margin:auto; +		} +	</style> + +	<!-- JavaScript specifics +	----------------------------> +	<script src="//code.jquery.com/jquery-1.11.2.min.js"></script> +	<link href="//vjs.zencdn.net/5.8/video-js.min.css" rel="stylesheet"> +	<script type="text/javascript" src="//www.gstatic.com/cv/js/sender/v1/cast_sender.js"></script> +	 +	<script type="text/javascript"> +		function swapVideo (url) { +			window.location = '/?url=' + encodeURIComponent(url);//window.btoa(url); +		} + +		var _float = true; + +		function animateFloat() { +			if(_float) { +				$("#floater").animate({top: '-=20px'}, "slow"); +				$("#floater").animate({top: '+=20px'}, "slow", animateFloat); +			} +		} + +		function toggleAnimation() { +			$('#bubble').stop().fadeOut( 400 ); +			if(_float) { +				_float = false; +				$("#floater").delay(800).animate({top: '172px'}, "slow"); +			} else { +				_float = true; +				animateFloat(); +			} +		} + +		$(document).ready(function() { +			$("#floater").click(function() { +				toggleAnimation(); +			}); +			$("#bubble").click(function() { +				toggleAnimation(); +			}); +			 +			//animateFloat(); +			//$( "#bubble" ).delay( 5000 ).fadeOut( 400 ); +		}); +	</script> + +	<style type="text/css"> +		#floater { +			position: absolute; +			top: 172px; +			right: 0px; +			width: 531px; +			height: 396px; +			//background-image: url('/resources/images/floater.svg'); +			background-size: cover; +		} + +		#bubble { +			position: absolute; +			visibility: hidden; +			top: 62px; +			right: 170px; +			width: 200px; +			height: 25px; +			color: #000000; +			cursor: pointer; +		} +	</style> + +<!-- creative, event och game --> +</head> +<body> +	<div id="header"> +		<img src="resources/images/thegathering.png" width="400"> +	</div> +	<div class="section"> +		<div class="container"> +			<div class="row"> +				<div class="twelve columns" style="margin-top: 85px;"> +				<h1>Takk for i år!</h1> +				<h3 style="color: grey;"><3 Streamteam</h3> +				</div> +			</div> +		</div> +	</div> + + +<script src="//vjs.zencdn.net/5.8/video.js"></script> +<script src="./resources/js/videojs-contrib-hls.js"></script> +<script> + +// GOOGLE CAST + +var current_media; +var session; + +function show_castposter() { +	stop_loader(); +	castposter.style.display = 'block'; +	loader.style.display = 'none'; +	video.style.display = 'none'; +} + +function hide_castposter() { +	castposter.style.display = 'none'; +	loader.style.display = 'none'; +	video.style.display = 'inline'; +} + +function stop_casting() { +	hide_castposter(); +	if (current_media) { +		var media = current_media; +		current_media = null; +		media.stop(); +	} +	if (session) { +		session.stop(); +		session = null; +	} +} + +function cast_current_video() { +	if (session === undefined || selected_stream === undefined) { +		return; +	} +	var title = streams[selected_stream].name; +	var url = streams[selected_stream].url; +	document.getElementById('casttarget').textContent = session.receiver.friendlyName; +	show_castposter(); +	video.pause(); +	// If we are already casting this, do nothing. +	if (current_media && current_media.media.contentId === url) { +		console.log("Already casting " + url + " to " + session.receiver.friendlyName + " (" + current_media.playerState + ")"); +		return; +	} +	if (current_media) { +		current_media = null;  // Signal to on_media_status_update. +	} +	var media_info = new chrome.cast.media.MediaInfo(url, "video/mp4"); +	media_info.metadata = new chrome.cast.media.GenericMediaMetadata(); +	media_info.metadata.title = global_title;  //  + ': ' + title; +	var request = new chrome.cast.media.LoadRequest(media_info); +	session.loadMedia(request, +		on_media_discovered.bind(this, 'loadMedia'), +		on_media_error); +} + +var techOrder = ["html5", "flash"]; +if (navigator.userAgent.match(/Trident|Edge|OPR/)) { +	console.log("hit!"); +        techOrder = ["flash", "html5"]; +	//var video = document.getElementById('video'); +	//video.src = "http://bleh"; +} +var player = videojs('stream', { +  techOrder: techOrder +}); +player.play(); +</script> +</body> +</html> diff --git a/examples/tg16/web/stream.gathering.org/js-version/config.json b/examples/tg16/web/stream.gathering.org/js-version/config.json new file mode 100644 index 0000000..0400835 --- /dev/null +++ b/examples/tg16/web/stream.gathering.org/js-version/config.json @@ -0,0 +1,28 @@ +{
 +	"TG" : "16",
 +	"TG_FULL" : "2016",
 +	"VIDEO_AUTO_PLAY" : "false",
 +	"DEFAULT_VIDEO" : "mainstage",
 +	"STREAMS" : {
 +		"mainstage" : {"TYPE" : "event",
 +					   "SOURCES" : [{"src" : "http://cubemap.tg16.gathering.org/event.flv", "type": "video/flv"}, {"src": "http://stream.tg16.gathering.org/hls/event.m3u8", "type" : "application/x-mpegURL"}],
 +					   "TITLE" : "Event/Stage (1080p)",
 +					   "QUALITY" : "hd",
 +					   "VLC_LINK" : "http://cubemap.tg16.gathering.org/southcam.ts"
 +					  },
 +
 +		"south-raw" : {"TYPE" : "camera",
 +					   "SOURCES" : [{"src" : "http://cubemap.tg16.gathering.org/southcam.flv", "type": "video/flv"}, {"src": "http://stream.tg16.gathering.org/hls/southcamlb.m3u8", "type" : "application/x-mpegURL"}],
 +					   "TITLE" : "Webcam South (720p)",
 +					   "QUALITY" : "hd",
 +					   "VLC_LINK" : "http://cubemap.tg16.gathering.org/southcam.ts"
 +					  },
 +
 +		"noccam" : {"TYPE" : "camera",
 +					"SOURCES" : [{"src" : "http://cubemap.tg16.gathering.org/noccam.flv", "type": "video/flv"}, {"src": "http://stream.tg16.gathering.org/hls/noccam.m3u8", "type" : "application/x-mpegURL"}],
 +					"TITLE" : "Webcam NOC (720p)",
 +					"QUALITY" : "hd",
 +					"VLC_LINK" : "http://cubemap.tg16.gathering.org/noccam.ts"
 +				   }
 +		}
 +}
\ No newline at end of file diff --git a/examples/tg16/web/stream.gathering.org/js-version/index.html b/examples/tg16/web/stream.gathering.org/js-version/index.html new file mode 100644 index 0000000..cc8e8c9 --- /dev/null +++ b/examples/tg16/web/stream.gathering.org/js-version/index.html @@ -0,0 +1,168 @@ +<!--
 +	Resource links:
 +	 * http://docs.videojs.com/docs/api/player.html#src
 +	 * http://foundation.zurb.com/sites/docs/grid.html
 +	 * http://stackoverflow.com/a/18197341/929999
 +-->
 +<html>
 +	<head>
 +		<!-- Style Sheets -->
 +		<link rel="stylesheet" href="//dhbhdrzi4tiry.cloudfront.net/cdn/sites/foundation.min.css">
 +		<link href="//vjs.zencdn.net/5.8/video-js.min.css" rel="stylesheet">
 +
 +		<!-- Load dependencies for video-js -->
 +		<script src="//code.jquery.com/jquery-1.11.2.min.js"></script>
 +
 +		<!-- Emedded styles instead of a .css simply because
 +			we're not using that much CSS anyway (speeds up the page-load)
 +		-->
 +		<style type="text/css">
 +			body {
 +				background-color: #C2C2C2;
 +			}
 +
 +			footer.fixed .callout {
 +				position: absolute;
 +				bottom: 0px;
 +				width: 100%;
 +				margin: 0px;
 +
 +				text-align: center;
 +			}
 +
 +			.stream-icon.download:hover {
 +				cursor: pointer;
 +			}
 +
 +			.vjs-big-play-button {
 +				position: absolute;
 +				left: 50% !important;
 +				top: 50% !important;
 +				margin-left: -45px;
 +				margin-top: 60px;
 +			}
 +
 +			.link_block {
 +				background-color: #CACACA;
 +			}
 +		</style>
 +
 +		<!-- Same for JavaScript, embedding it will speed
 +			up load-times on the page. And since there's not much
 +			JavaScript to talk about we'd might as well embed it.
 +		-->
 +		<script type="text/javascript">
 +
 +			function generate_vlc(resource, title) {
 +				var element = document.createElement('a');
 +				element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent("#EXTM3U\n#EXTINF:-1,"+ title+"\n" + resource));
 +				element.setAttribute('download', title+".vlc");
 +
 +				element.style.display = 'none';
 +				document.body.appendChild(element);
 +
 +				element.click();
 +
 +				document.body.removeChild(element);
 +			}
 +
 +			function swapVideo(title) {
 +				/** -- Because updating a global scope variable in JavaScript is a PITA,
 +				 we'll just go ahead and grab another copy of the config. It should be
 +				 cached anyway in the browser and the server should respond with a 302.
 +				**/
 +				$.getJSON("config.json", function( config ) {
 +					var player = videojs('stream', {techOrder: ["flash", "html5"]});
 +					player.pause();
 +					player.src(config['STREAMS'][title]['SOURCES']);
 +					player.play();
 +
 +				});
 +			}
 +
 +			$(document).ready(function() {
 +				$.getJSON("config.json", function( config ) {
 +					/** -- config.json
 +					 Perform any tasks that utelize the config here.
 +					 Mainly because updating global scope variables
 +					 ina nested javascript functions is a nightmare.
 +					 Especially when using asyncronous ajax calls
 +					 (code using config might run before it's retrieved)
 +					**/
 +
 +					/** -- Initialize the player (using DEFAULT_VIDEO index)
 +					**/
 +					var player = videojs('stream', {techOrder: ["flash", "html5"]});
 +					player.src(config['STREAMS'][config['DEFAULT_VIDEO']]['SOURCES']);
 +
 +					/** -- If auto-play is true, press play
 +					**/
 +					if (config["VIDEO_AUTO_PLAY"] === true)
 +						player.play();
 +
 +					/** -- Loop over the event streams
 +					 now, we'll store them in two string containers
 +					 during the loop, because we want to separate them
 +					 into different <div>'s later.
 +					**/
 +					var event_streams = '';
 +					var camera_streams = '';
 +
 +					$.each(config['STREAMS'], function(key, stream_conf) {
 +						var template = '<div class="stream-item"> \
 +											<img class="stream-icon" src="/img/icon_' + stream_conf['QUALITY'] + '.png"> \
 +											<img class="stream-icon download" src="/resources/images/vlc.png" onClick="generate_vlc(\'' + stream_conf['VLC_LINK'] + '\', \'' + stream_conf['TITLE'] + '\');"> \
 +											<img class="stream-icon" src="/img/icon_' + stream_conf['TYPE'] + '.png"> \
 +											<a class="stream-link-content" href="#" onclick="swapVideo(\'' + key + '\');">' + stream_conf['TITLE'] + '</a> \
 +										</div>';
 +
 +						if (stream_conf['TYPE'] == 'event')
 +							event_streams += template;
 +						else
 +							camera_streams += template;
 +					});
 +
 +					$('#event_links').append(event_streams);
 +					$('#camera_links').append(camera_streams);
 +				});
 +
 +			});
 +
 +		</script>
 +	</head>
 +<body>
 +	<header>
 +		<div class="row">
 +			<div class="medium-12 columns">
 +				<img src="http://stream.tg16.gathering.org/resources/images/thegathering.png" alt="company logo">
 +			</div>
 +		</div>
 +	</header>
 +	<div class="row">
 +		<div class="medium-8 columns">
 +			<video id=stream width=780 height=439 class="video-js vjs-default-skin" poster="/resources/images/loading.png" controls>
 +				
 +			</video>
 +		</div>
 +		<div class="medium-4 columns">
 +			<div id="event_links" class="link_block" style="width: 100%; padding: 10px;">
 +			</div>
 +			<br>
 +			<div id="camera_links" class="link_block" style="width: 100%; padding: 10px;">
 +			</div>
 +		</div>
 +	</div>
 +
 +	<footer class="fixed">
 +		<div class="row expanded callout secondary">
 +			Problems with the non game streams? The easiest way to get a hold of us is to message <a href="irc://efnet.xs4all.nl:6667/#tg">ViD or DoXiD @EFNet (IRC)</a>.
 +		</div>
 +	</footer>	
 +
 +	<script src="//vjs.zencdn.net/5.8/video.js"></script>
 +	<script type="text/javascript" src="./js/videojs-contrib-hls.js"></script>
 +	<script type="text/javascript" src="./js/videojs-contrib-media-sources.js"></script>
 +
 +</body>
 +</html>
 +
 diff --git a/examples/tg16/web/stream.gathering.org/js-version/js/videojs-contrib-hls.js b/examples/tg16/web/stream.gathering.org/js-version/js/videojs-contrib-hls.js new file mode 100644 index 0000000..d36bd99 --- /dev/null +++ b/examples/tg16/web/stream.gathering.org/js-version/js/videojs-contrib-hls.js @@ -0,0 +1,11691 @@ +/** + * videojs-contrib-hls + * @version 2.0.1 + * @copyright 2016 Brightcove, Inc + * @license Apache-2.0 + */ +(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.videojsContribHls = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, '__esModule', { +  value: true +}); +var textRange = function textRange(range, i) { +  return range.start(i) + '-' + range.end(i); +}; + +var formatHexString = function formatHexString(e, i) { +  var value = e.toString(16); + +  return '00'.substring(0, 2 - value.length) + value + (i % 2 ? ' ' : ''); +}; +var formatAsciiString = function formatAsciiString(e) { +  if (e >= 0x20 && e < 0x7e) { +    return String.fromCharCode(e); +  } +  return '.'; +}; + +var utils = { +  hexDump: function hexDump(data) { +    var bytes = Array.prototype.slice.call(data); +    var step = 16; +    var result = ''; +    var hex = undefined; +    var ascii = undefined; + +    for (var j = 0; j < bytes.length / step; j++) { +      hex = bytes.slice(j * step, j * step + step).map(formatHexString).join(''); +      ascii = bytes.slice(j * step, j * step + step).map(formatAsciiString).join(''); +      result += hex + ' ' + ascii + '\n'; +    } +    return result; +  }, +  tagDump: function tagDump(tag) { +    return utils.hexDump(tag.bytes); +  }, +  textRanges: function textRanges(ranges) { +    var result = ''; +    var i = undefined; + +    for (i = 0; i < ranges.length; i++) { +      result += textRange(ranges, i) + ' '; +    } +    return result; +  } +}; + +exports['default'] = utils; +module.exports = exports['default']; +},{}],2:[function(require,module,exports){ +/* + * aes.js + * + * This file contains an adaptation of the AES decryption algorithm + * from the Standford Javascript Cryptography Library. That work is + * covered by the following copyright and permissions notice: + * + * Copyright 2009-2010 Emily Stark, Mike Hamburg, Dan Boneh. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + *    notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above + *    copyright notice, this list of conditions and the following + *    disclaimer in the documentation and/or other materials provided + *    with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation + * are those of the authors and should not be interpreted as representing + * official policies, either expressed or implied, of the authors. + */ + +/** + * Expand the S-box tables. + * + * @private + */ +'use strict'; + +Object.defineProperty(exports, '__esModule', { +  value: true +}); + +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +var precompute = function precompute() { +  var tables = [[[], [], [], [], []], [[], [], [], [], []]]; +  var encTable = tables[0]; +  var decTable = tables[1]; +  var sbox = encTable[4]; +  var sboxInv = decTable[4]; +  var i = undefined; +  var x = undefined; +  var xInv = undefined; +  var d = []; +  var th = []; +  var x2 = undefined; +  var x4 = undefined; +  var x8 = undefined; +  var s = undefined; +  var tEnc = undefined; +  var tDec = undefined; + +  // Compute double and third tables +  for (i = 0; i < 256; i++) { +    th[(d[i] = i << 1 ^ (i >> 7) * 283) ^ i] = i; +  } + +  for (x = xInv = 0; !sbox[x]; x ^= x2 || 1, xInv = th[xInv] || 1) { +    // Compute sbox +    s = xInv ^ xInv << 1 ^ xInv << 2 ^ xInv << 3 ^ xInv << 4; +    s = s >> 8 ^ s & 255 ^ 99; +    sbox[x] = s; +    sboxInv[s] = x; + +    // Compute MixColumns +    x8 = d[x4 = d[x2 = d[x]]]; +    tDec = x8 * 0x1010101 ^ x4 * 0x10001 ^ x2 * 0x101 ^ x * 0x1010100; +    tEnc = d[s] * 0x101 ^ s * 0x1010100; + +    for (i = 0; i < 4; i++) { +      encTable[i][x] = tEnc = tEnc << 24 ^ tEnc >>> 8; +      decTable[i][s] = tDec = tDec << 24 ^ tDec >>> 8; +    } +  } + +  // Compactify. Considerable speedup on Firefox. +  for (i = 0; i < 5; i++) { +    encTable[i] = encTable[i].slice(0); +    decTable[i] = decTable[i].slice(0); +  } +  return tables; +}; +var aesTables = null; + +/** + * Schedule out an AES key for both encryption and decryption. This + * is a low-level class. Use a cipher mode to do bulk encryption. + * + * @constructor + * @param key {Array} The key as an array of 4, 6 or 8 words. + */ + +var AES = (function () { +  function AES(key) { +    _classCallCheck(this, AES); + +    /** +     * The expanded S-box and inverse S-box tables. These will be computed +     * on the client so that we don't have to send them down the wire. +     * +     * There are two tables, _tables[0] is for encryption and +     * _tables[1] is for decryption. +     * +     * The first 4 sub-tables are the expanded S-box with MixColumns. The +     * last (_tables[01][4]) is the S-box itself. +     * +     * @private +     */ +    // if we have yet to precompute the S-box tables +    // do so now +    if (!aesTables) { +      aesTables = precompute(); +    } +    // then make a copy of that object for use +    this._tables = [[aesTables[0][0].slice(), aesTables[0][1].slice(), aesTables[0][2].slice(), aesTables[0][3].slice(), aesTables[0][4].slice()], [aesTables[1][0].slice(), aesTables[1][1].slice(), aesTables[1][2].slice(), aesTables[1][3].slice(), aesTables[1][4].slice()]]; +    var i = undefined; +    var j = undefined; +    var tmp = undefined; +    var encKey = undefined; +    var decKey = undefined; +    var sbox = this._tables[0][4]; +    var decTable = this._tables[1]; +    var keyLen = key.length; +    var rcon = 1; + +    if (keyLen !== 4 && keyLen !== 6 && keyLen !== 8) { +      throw new Error('Invalid aes key size'); +    } + +    encKey = key.slice(0); +    decKey = []; +    this._key = [encKey, decKey]; + +    // schedule encryption keys +    for (i = keyLen; i < 4 * keyLen + 28; i++) { +      tmp = encKey[i - 1]; + +      // apply sbox +      if (i % keyLen === 0 || keyLen === 8 && i % keyLen === 4) { +        tmp = sbox[tmp >>> 24] << 24 ^ sbox[tmp >> 16 & 255] << 16 ^ sbox[tmp >> 8 & 255] << 8 ^ sbox[tmp & 255]; + +        // shift rows and add rcon +        if (i % keyLen === 0) { +          tmp = tmp << 8 ^ tmp >>> 24 ^ rcon << 24; +          rcon = rcon << 1 ^ (rcon >> 7) * 283; +        } +      } + +      encKey[i] = encKey[i - keyLen] ^ tmp; +    } + +    // schedule decryption keys +    for (j = 0; i; j++, i--) { +      tmp = encKey[j & 3 ? i : i - 4]; +      if (i <= 4 || j < 4) { +        decKey[j] = tmp; +      } else { +        decKey[j] = decTable[0][sbox[tmp >>> 24]] ^ decTable[1][sbox[tmp >> 16 & 255]] ^ decTable[2][sbox[tmp >> 8 & 255]] ^ decTable[3][sbox[tmp & 255]]; +      } +    } +  } + +  /** +   * Decrypt 16 bytes, specified as four 32-bit words. +   * @param encrypted0 {number} the first word to decrypt +   * @param encrypted1 {number} the second word to decrypt +   * @param encrypted2 {number} the third word to decrypt +   * @param encrypted3 {number} the fourth word to decrypt +   * @param out {Int32Array} the array to write the decrypted words +   * into +   * @param offset {number} the offset into the output array to start +   * writing results +   * @return {Array} The plaintext. +   */ + +  _createClass(AES, [{ +    key: 'decrypt', +    value: function decrypt(encrypted0, encrypted1, encrypted2, encrypted3, out, offset) { +      var key = this._key[1]; +      // state variables a,b,c,d are loaded with pre-whitened data +      var a = encrypted0 ^ key[0]; +      var b = encrypted3 ^ key[1]; +      var c = encrypted2 ^ key[2]; +      var d = encrypted1 ^ key[3]; +      var a2 = undefined; +      var b2 = undefined; +      var c2 = undefined; + +      // key.length === 2 ? +      var nInnerRounds = key.length / 4 - 2; +      var i = undefined; +      var kIndex = 4; +      var table = this._tables[1]; + +      // load up the tables +      var table0 = table[0]; +      var table1 = table[1]; +      var table2 = table[2]; +      var table3 = table[3]; +      var sbox = table[4]; + +      // Inner rounds. Cribbed from OpenSSL. +      for (i = 0; i < nInnerRounds; i++) { +        a2 = table0[a >>> 24] ^ table1[b >> 16 & 255] ^ table2[c >> 8 & 255] ^ table3[d & 255] ^ key[kIndex]; +        b2 = table0[b >>> 24] ^ table1[c >> 16 & 255] ^ table2[d >> 8 & 255] ^ table3[a & 255] ^ key[kIndex + 1]; +        c2 = table0[c >>> 24] ^ table1[d >> 16 & 255] ^ table2[a >> 8 & 255] ^ table3[b & 255] ^ key[kIndex + 2]; +        d = table0[d >>> 24] ^ table1[a >> 16 & 255] ^ table2[b >> 8 & 255] ^ table3[c & 255] ^ key[kIndex + 3]; +        kIndex += 4; +        a = a2;b = b2;c = c2; +      } + +      // Last round. +      for (i = 0; i < 4; i++) { +        out[(3 & -i) + offset] = sbox[a >>> 24] << 24 ^ sbox[b >> 16 & 255] << 16 ^ sbox[c >> 8 & 255] << 8 ^ sbox[d & 255] ^ key[kIndex++]; +        a2 = a;a = b;b = c;c = d;d = a2; +      } +    } +  }]); + +  return AES; +})(); + +exports['default'] = AES; +module.exports = exports['default']; +},{}],3:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, '__esModule', { +  value: true +}); + +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + +var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _stream = require('../stream'); + +var _stream2 = _interopRequireDefault(_stream); + +/** + * A wrapper around the Stream class to use setTiemout + * and run stream "jobs" Asynchronously + */ + +var AsyncStream = (function (_Stream) { +  _inherits(AsyncStream, _Stream); + +  function AsyncStream() { +    _classCallCheck(this, AsyncStream); + +    _get(Object.getPrototypeOf(AsyncStream.prototype), 'constructor', this).call(this, _stream2['default']); +    this.jobs = []; +    this.delay = 1; +    this.timeout_ = null; +  } + +  _createClass(AsyncStream, [{ +    key: 'processJob_', +    value: function processJob_() { +      this.jobs.shift()(); +      if (this.jobs.length) { +        this.timeout_ = setTimeout(this.processJob_.bind(this), this.delay); +      } else { +        this.timeout_ = null; +      } +    } +  }, { +    key: 'push', +    value: function push(job) { +      this.jobs.push(job); +      if (!this.timeout_) { +        this.timeout_ = setTimeout(this.processJob_.bind(this), this.delay); +      } +    } +  }]); + +  return AsyncStream; +})(_stream2['default']); + +exports['default'] = AsyncStream; +module.exports = exports['default']; +},{"../stream":13}],4:[function(require,module,exports){ +/* + * decrypter.js + * + * An asynchronous implementation of AES-128 CBC decryption with + * PKCS#7 padding. + */ + +'use strict'; + +Object.defineProperty(exports, '__esModule', { +  value: true +}); + +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +var _aes = require('./aes'); + +var _aes2 = _interopRequireDefault(_aes); + +var _asyncStream = require('./async-stream'); + +var _asyncStream2 = _interopRequireDefault(_asyncStream); + +var _pkcs7 = require('pkcs7'); + +/** + * Convert network-order (big-endian) bytes into their little-endian + * representation. + */ +var ntoh = function ntoh(word) { +  return word << 24 | (word & 0xff00) << 8 | (word & 0xff0000) >> 8 | word >>> 24; +}; + +/* eslint-disable max-len */ +/** + * Decrypt bytes using AES-128 with CBC and PKCS#7 padding. + * @param encrypted {Uint8Array} the encrypted bytes + * @param key {Uint32Array} the bytes of the decryption key + * @param initVector {Uint32Array} the initialization vector (IV) to + * use for the first round of CBC. + * @return {Uint8Array} the decrypted bytes + * + * @see http://en.wikipedia.org/wiki/Advanced_Encryption_Standard + * @see http://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Cipher_Block_Chaining_.28CBC.29 + * @see https://tools.ietf.org/html/rfc2315 + */ +/* eslint-enable max-len */ +var decrypt = function decrypt(encrypted, key, initVector) { +  // word-level access to the encrypted bytes +  var encrypted32 = new Int32Array(encrypted.buffer, encrypted.byteOffset, encrypted.byteLength >> 2); + +  var decipher = new _aes2['default'](Array.prototype.slice.call(key)); + +  // byte and word-level access for the decrypted output +  var decrypted = new Uint8Array(encrypted.byteLength); +  var decrypted32 = new Int32Array(decrypted.buffer); + +  // temporary variables for working with the IV, encrypted, and +  // decrypted data +  var init0 = undefined; +  var init1 = undefined; +  var init2 = undefined; +  var init3 = undefined; +  var encrypted0 = undefined; +  var encrypted1 = undefined; +  var encrypted2 = undefined; +  var encrypted3 = undefined; + +  // iteration variable +  var wordIx = undefined; + +  // pull out the words of the IV to ensure we don't modify the +  // passed-in reference and easier access +  init0 = initVector[0]; +  init1 = initVector[1]; +  init2 = initVector[2]; +  init3 = initVector[3]; + +  // decrypt four word sequences, applying cipher-block chaining (CBC) +  // to each decrypted block +  for (wordIx = 0; wordIx < encrypted32.length; wordIx += 4) { +    // convert big-endian (network order) words into little-endian +    // (javascript order) +    encrypted0 = ntoh(encrypted32[wordIx]); +    encrypted1 = ntoh(encrypted32[wordIx + 1]); +    encrypted2 = ntoh(encrypted32[wordIx + 2]); +    encrypted3 = ntoh(encrypted32[wordIx + 3]); + +    // decrypt the block +    decipher.decrypt(encrypted0, encrypted1, encrypted2, encrypted3, decrypted32, wordIx); + +    // XOR with the IV, and restore network byte-order to obtain the +    // plaintext +    decrypted32[wordIx] = ntoh(decrypted32[wordIx] ^ init0); +    decrypted32[wordIx + 1] = ntoh(decrypted32[wordIx + 1] ^ init1); +    decrypted32[wordIx + 2] = ntoh(decrypted32[wordIx + 2] ^ init2); +    decrypted32[wordIx + 3] = ntoh(decrypted32[wordIx + 3] ^ init3); + +    // setup the IV for the next round +    init0 = encrypted0; +    init1 = encrypted1; +    init2 = encrypted2; +    init3 = encrypted3; +  } + +  return decrypted; +}; + +exports.decrypt = decrypt; +/** + * The `Decrypter` class that manages decryption of AES + * data through `AsyncStream` objects and the `decrypt` + * function + */ + +var Decrypter = (function () { +  function Decrypter(encrypted, key, initVector, done) { +    _classCallCheck(this, Decrypter); + +    var step = Decrypter.STEP; +    var encrypted32 = new Int32Array(encrypted.buffer); +    var decrypted = new Uint8Array(encrypted.byteLength); +    var i = 0; + +    this.asyncStream_ = new _asyncStream2['default'](); + +    // split up the encryption job and do the individual chunks asynchronously +    this.asyncStream_.push(this.decryptChunk_(encrypted32.subarray(i, i + step), key, initVector, decrypted)); +    for (i = step; i < encrypted32.length; i += step) { +      initVector = new Uint32Array([ntoh(encrypted32[i - 4]), ntoh(encrypted32[i - 3]), ntoh(encrypted32[i - 2]), ntoh(encrypted32[i - 1])]); +      this.asyncStream_.push(this.decryptChunk_(encrypted32.subarray(i, i + step), key, initVector, decrypted)); +    } +    // invoke the done() callback when everything is finished +    this.asyncStream_.push(function () { +      // remove pkcs#7 padding from the decrypted bytes +      done(null, (0, _pkcs7.unpad)(decrypted)); +    }); +  } + +  // the maximum number of bytes to process at one time +  // 4 * 8000; + +  _createClass(Decrypter, [{ +    key: 'decryptChunk_', +    value: function decryptChunk_(encrypted, key, initVector, decrypted) { +      return function () { +        var bytes = decrypt(encrypted, key, initVector); + +        decrypted.set(bytes, encrypted.byteOffset); +      }; +    } +  }]); + +  return Decrypter; +})(); + +exports.Decrypter = Decrypter; +Decrypter.STEP = 32000; + +exports['default'] = { +  Decrypter: Decrypter, +  decrypt: decrypt +}; +},{"./aes":2,"./async-stream":3,"pkcs7":18}],5:[function(require,module,exports){ +/* + * index.js + * + * Index module to easily import the primary components of AES-128 + * decryption. Like this: + * + * ```js + * import {Decrypter, decrypt, AsyncStream} from './src/decrypter'; + * ``` + */ +'use strict'; + +Object.defineProperty(exports, '__esModule', { +  value: true +}); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +var _decrypter = require('./decrypter'); + +var _asyncStream = require('./async-stream'); + +var _asyncStream2 = _interopRequireDefault(_asyncStream); + +exports['default'] = { +  decrypt: _decrypter.decrypt, +  Decrypter: _decrypter.Decrypter, +  AsyncStream: _asyncStream2['default'] +}; +module.exports = exports['default']; +},{"./async-stream":3,"./decrypter":4}],6:[function(require,module,exports){ +/** + * Utilities for parsing M3U8 files. If the entire manifest is available, + * `Parser` will create an object representation with enough detail for managing + * playback. `ParseStream` and `LineStream` are lower-level parsing primitives + * that do not assume the entirety of the manifest is ready and expose a + * ReadableStream-like interface. + */ + +'use strict'; + +Object.defineProperty(exports, '__esModule', { +  value: true +}); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +var _lineStream = require('./line-stream'); + +var _lineStream2 = _interopRequireDefault(_lineStream); + +var _parseStream = require('./parse-stream'); + +var _parseStream2 = _interopRequireDefault(_parseStream); + +var _parser = require('./parser'); + +var _parser2 = _interopRequireDefault(_parser); + +exports['default'] = { +  LineStream: _lineStream2['default'], +  ParseStream: _parseStream2['default'], +  Parser: _parser2['default'] +}; +module.exports = exports['default']; +},{"./line-stream":7,"./parse-stream":8,"./parser":9}],7:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, '__esModule', { +  value: true +}); + +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + +var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _stream = require('../stream'); + +var _stream2 = _interopRequireDefault(_stream); + +/** + * A stream that buffers string input and generates a `data` event for each + * line. + */ + +var LineStream = (function (_Stream) { +  _inherits(LineStream, _Stream); + +  function LineStream() { +    _classCallCheck(this, LineStream); + +    _get(Object.getPrototypeOf(LineStream.prototype), 'constructor', this).call(this); +    this.buffer = ''; +  } + +  /** +   * Add new data to be parsed. +   * @param data {string} the text to process +   */ + +  _createClass(LineStream, [{ +    key: 'push', +    value: function push(data) { +      var nextNewline = undefined; + +      this.buffer += data; +      nextNewline = this.buffer.indexOf('\n'); + +      for (; nextNewline > -1; nextNewline = this.buffer.indexOf('\n')) { +        this.trigger('data', this.buffer.substring(0, nextNewline)); +        this.buffer = this.buffer.substring(nextNewline + 1); +      } +    } +  }]); + +  return LineStream; +})(_stream2['default']); + +exports['default'] = LineStream; +module.exports = exports['default']; +},{"../stream":13}],8:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, '__esModule', { +  value: true +}); + +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + +var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _stream = require('../stream'); + +var _stream2 = _interopRequireDefault(_stream); + +// "forgiving" attribute list psuedo-grammar: +// attributes -> keyvalue (',' keyvalue)* +// keyvalue   -> key '=' value +// key        -> [^=]* +// value      -> '"' [^"]* '"' | [^,]* +var attributeSeparator = function attributeSeparator() { +  var key = '[^=]*'; +  var value = '"[^"]*"|[^,]*'; +  var keyvalue = '(?:' + key + ')=(?:' + value + ')'; + +  return new RegExp('(?:^|,)(' + keyvalue + ')'); +}; + +var parseAttributes = function parseAttributes(attributes) { +  // split the string using attributes as the separator +  var attrs = attributes.split(attributeSeparator()); +  var i = attrs.length; +  var result = {}; +  var attr = undefined; + +  while (i--) { +    // filter out unmatched portions of the string +    if (attrs[i] === '') { +      continue; +    } + +    // split the key and value +    attr = /([^=]*)=(.*)/.exec(attrs[i]).slice(1); +    // trim whitespace and remove optional quotes around the value +    attr[0] = attr[0].replace(/^\s+|\s+$/g, ''); +    attr[1] = attr[1].replace(/^\s+|\s+$/g, ''); +    attr[1] = attr[1].replace(/^['"](.*)['"]$/g, '$1'); +    result[attr[0]] = attr[1]; +  } +  return result; +}; + +/** + * A line-level M3U8 parser event stream. It expects to receive input one + * line at a time and performs a context-free parse of its contents. A stream + * interpretation of a manifest can be useful if the manifest is expected to + * be too large to fit comfortably into memory or the entirety of the input + * is not immediately available. Otherwise, it's probably much easier to work + * with a regular `Parser` object. + * + * Produces `data` events with an object that captures the parser's + * interpretation of the input. That object has a property `tag` that is one + * of `uri`, `comment`, or `tag`. URIs only have a single additional + * property, `line`, which captures the entirety of the input without + * interpretation. Comments similarly have a single additional property + * `text` which is the input without the leading `#`. + * + * Tags always have a property `tagType` which is the lower-cased version of + * the M3U8 directive without the `#EXT` or `#EXT-X-` prefix. For instance, + * `#EXT-X-MEDIA-SEQUENCE` becomes `media-sequence` when parsed. Unrecognized + * tags are given the tag type `unknown` and a single additional property + * `data` with the remainder of the input. + */ + +var ParseStream = (function (_Stream) { +  _inherits(ParseStream, _Stream); + +  function ParseStream() { +    _classCallCheck(this, ParseStream); + +    _get(Object.getPrototypeOf(ParseStream.prototype), 'constructor', this).call(this); +  } + +  /** +   * Parses an additional line of input. +   * @param line {string} a single line of an M3U8 file to parse +   */ + +  _createClass(ParseStream, [{ +    key: 'push', +    value: function push(line) { +      var match = undefined; +      var event = undefined; + +      // strip whitespace +      line = line.replace(/^[\u0000\s]+|[\u0000\s]+$/g, ''); +      if (line.length === 0) { +        // ignore empty lines +        return; +      } + +      // URIs +      if (line[0] !== '#') { +        this.trigger('data', { +          type: 'uri', +          uri: line +        }); +        return; +      } + +      // Comments +      if (line.indexOf('#EXT') !== 0) { +        this.trigger('data', { +          type: 'comment', +          text: line.slice(1) +        }); +        return; +      } + +      // strip off any carriage returns here so the regex matching +      // doesn't have to account for them. +      line = line.replace('\r', ''); + +      // Tags +      match = /^#EXTM3U/.exec(line); +      if (match) { +        this.trigger('data', { +          type: 'tag', +          tagType: 'm3u' +        }); +        return; +      } +      match = /^#EXTINF:?([0-9\.]*)?,?(.*)?$/.exec(line); +      if (match) { +        event = { +          type: 'tag', +          tagType: 'inf' +        }; +        if (match[1]) { +          event.duration = parseFloat(match[1]); +        } +        if (match[2]) { +          event.title = match[2]; +        } +        this.trigger('data', event); +        return; +      } +      match = /^#EXT-X-TARGETDURATION:?([0-9.]*)?/.exec(line); +      if (match) { +        event = { +          type: 'tag', +          tagType: 'targetduration' +        }; +        if (match[1]) { +          event.duration = parseInt(match[1], 10); +        } +        this.trigger('data', event); +        return; +      } +      match = /^#ZEN-TOTAL-DURATION:?([0-9.]*)?/.exec(line); +      if (match) { +        event = { +          type: 'tag', +          tagType: 'totalduration' +        }; +        if (match[1]) { +          event.duration = parseInt(match[1], 10); +        } +        this.trigger('data', event); +        return; +      } +      match = /^#EXT-X-VERSION:?([0-9.]*)?/.exec(line); +      if (match) { +        event = { +          type: 'tag', +          tagType: 'version' +        }; +        if (match[1]) { +          event.version = parseInt(match[1], 10); +        } +        this.trigger('data', event); +        return; +      } +      match = /^#EXT-X-MEDIA-SEQUENCE:?(\-?[0-9.]*)?/.exec(line); +      if (match) { +        event = { +          type: 'tag', +          tagType: 'media-sequence' +        }; +        if (match[1]) { +          event.number = parseInt(match[1], 10); +        } +        this.trigger('data', event); +        return; +      } +      match = /^#EXT-X-DISCONTINUITY-SEQUENCE:?(\-?[0-9.]*)?/.exec(line); +      if (match) { +        event = { +          type: 'tag', +          tagType: 'discontinuity-sequence' +        }; +        if (match[1]) { +          event.number = parseInt(match[1], 10); +        } +        this.trigger('data', event); +        return; +      } +      match = /^#EXT-X-PLAYLIST-TYPE:?(.*)?$/.exec(line); +      if (match) { +        event = { +          type: 'tag', +          tagType: 'playlist-type' +        }; +        if (match[1]) { +          event.playlistType = match[1]; +        } +        this.trigger('data', event); +        return; +      } +      match = /^#EXT-X-BYTERANGE:?([0-9.]*)?@?([0-9.]*)?/.exec(line); +      if (match) { +        event = { +          type: 'tag', +          tagType: 'byterange' +        }; +        if (match[1]) { +          event.length = parseInt(match[1], 10); +        } +        if (match[2]) { +          event.offset = parseInt(match[2], 10); +        } +        this.trigger('data', event); +        return; +      } +      match = /^#EXT-X-ALLOW-CACHE:?(YES|NO)?/.exec(line); +      if (match) { +        event = { +          type: 'tag', +          tagType: 'allow-cache' +        }; +        if (match[1]) { +          event.allowed = !/NO/.test(match[1]); +        } +        this.trigger('data', event); +        return; +      } +      match = /^#EXT-X-STREAM-INF:?(.*)$/.exec(line); +      if (match) { +        event = { +          type: 'tag', +          tagType: 'stream-inf' +        }; +        if (match[1]) { +          event.attributes = parseAttributes(match[1]); + +          if (event.attributes.RESOLUTION) { +            var split = event.attributes.RESOLUTION.split('x'); +            var resolution = {}; + +            if (split[0]) { +              resolution.width = parseInt(split[0], 10); +            } +            if (split[1]) { +              resolution.height = parseInt(split[1], 10); +            } +            event.attributes.RESOLUTION = resolution; +          } +          if (event.attributes.BANDWIDTH) { +            event.attributes.BANDWIDTH = parseInt(event.attributes.BANDWIDTH, 10); +          } +          if (event.attributes['PROGRAM-ID']) { +            event.attributes['PROGRAM-ID'] = parseInt(event.attributes['PROGRAM-ID'], 10); +          } +        } +        this.trigger('data', event); +        return; +      } +      match = /^#EXT-X-ENDLIST/.exec(line); +      if (match) { +        this.trigger('data', { +          type: 'tag', +          tagType: 'endlist' +        }); +        return; +      } +      match = /^#EXT-X-DISCONTINUITY/.exec(line); +      if (match) { +        this.trigger('data', { +          type: 'tag', +          tagType: 'discontinuity' +        }); +        return; +      } +      match = /^#EXT-X-KEY:?(.*)$/.exec(line); +      if (match) { +        event = { +          type: 'tag', +          tagType: 'key' +        }; +        if (match[1]) { +          event.attributes = parseAttributes(match[1]); +          // parse the IV string into a Uint32Array +          if (event.attributes.IV) { +            if (event.attributes.IV.substring(0, 2) === '0x') { +              event.attributes.IV = event.attributes.IV.substring(2); +            } + +            event.attributes.IV = event.attributes.IV.match(/.{8}/g); +            event.attributes.IV[0] = parseInt(event.attributes.IV[0], 16); +            event.attributes.IV[1] = parseInt(event.attributes.IV[1], 16); +            event.attributes.IV[2] = parseInt(event.attributes.IV[2], 16); +            event.attributes.IV[3] = parseInt(event.attributes.IV[3], 16); +            event.attributes.IV = new Uint32Array(event.attributes.IV); +          } +        } +        this.trigger('data', event); +        return; +      } + +      // unknown tag type +      this.trigger('data', { +        type: 'tag', +        data: line.slice(4, line.length) +      }); +    } +  }]); + +  return ParseStream; +})(_stream2['default']); + +exports['default'] = ParseStream; +module.exports = exports['default']; +},{"../stream":13}],9:[function(require,module,exports){ +(function (global){ +'use strict'; + +Object.defineProperty(exports, '__esModule', { +  value: true +}); + +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + +var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _stream = require('../stream'); + +var _stream2 = _interopRequireDefault(_stream); + +var _lineStream = require('./line-stream'); + +var _lineStream2 = _interopRequireDefault(_lineStream); + +var _parseStream = require('./parse-stream'); + +var _parseStream2 = _interopRequireDefault(_parseStream); + +var _videoJs = (typeof window !== "undefined" ? window['videojs'] : typeof global !== "undefined" ? global['videojs'] : null); + +/** + * A parser for M3U8 files. The current interpretation of the input is + * exposed as a property `manifest` on parser objects. It's just two lines to + * create and parse a manifest once you have the contents available as a string: + * + * ```js + * var parser = new videojs.m3u8.Parser(); + * parser.push(xhr.responseText); + * ``` + * + * New input can later be applied to update the manifest object by calling + * `push` again. + * + * The parser attempts to create a usable manifest object even if the + * underlying input is somewhat nonsensical. It emits `info` and `warning` + * events during the parse if it encounters input that seems invalid or + * requires some property of the manifest object to be defaulted. + */ + +var Parser = (function (_Stream) { +  _inherits(Parser, _Stream); + +  function Parser() { +    _classCallCheck(this, Parser); + +    _get(Object.getPrototypeOf(Parser.prototype), 'constructor', this).call(this); +    this.lineStream = new _lineStream2['default'](); +    this.parseStream = new _parseStream2['default'](); +    this.lineStream.pipe(this.parseStream); +    /* eslint-disable consistent-this */ +    var self = this; +    /* eslint-enable consistent-this */ +    var uris = []; +    var currentUri = {}; +    var _key = undefined; +    var noop = function noop() {}; + +    // the manifest is empty until the parse stream begins delivering data +    this.manifest = { +      allowCache: true, +      discontinuityStarts: [] +    }; + +    // update the manifest with the m3u8 entry from the parse stream +    this.parseStream.on('data', function (entry) { +      ({ +        tag: function tag() { +          // switch based on the tag type +          (({ +            'allow-cache': function allowCache() { +              this.manifest.allowCache = entry.allowed; +              if (!('allowed' in entry)) { +                this.trigger('info', { +                  message: 'defaulting allowCache to YES' +                }); +                this.manifest.allowCache = true; +              } +            }, +            byterange: function byterange() { +              var byterange = {}; + +              if ('length' in entry) { +                currentUri.byterange = byterange; +                byterange.length = entry.length; + +                if (!('offset' in entry)) { +                  this.trigger('info', { +                    message: 'defaulting offset to zero' +                  }); +                  entry.offset = 0; +                } +              } +              if ('offset' in entry) { +                currentUri.byterange = byterange; +                byterange.offset = entry.offset; +              } +            }, +            endlist: function endlist() { +              this.manifest.endList = true; +            }, +            inf: function inf() { +              if (!('mediaSequence' in this.manifest)) { +                this.manifest.mediaSequence = 0; +                this.trigger('info', { +                  message: 'defaulting media sequence to zero' +                }); +              } +              if (!('discontinuitySequence' in this.manifest)) { +                this.manifest.discontinuitySequence = 0; +                this.trigger('info', { +                  message: 'defaulting discontinuity sequence to zero' +                }); +              } +              if (entry.duration >= 0) { +                currentUri.duration = entry.duration; +              } + +              this.manifest.segments = uris; +            }, +            key: function key() { +              if (!entry.attributes) { +                this.trigger('warn', { +                  message: 'ignoring key declaration without attribute list' +                }); +                return; +              } +              // clear the active encryption key +              if (entry.attributes.METHOD === 'NONE') { +                _key = null; +                return; +              } +              if (!entry.attributes.URI) { +                this.trigger('warn', { +                  message: 'ignoring key declaration without URI' +                }); +                return; +              } +              if (!entry.attributes.METHOD) { +                this.trigger('warn', { +                  message: 'defaulting key method to AES-128' +                }); +              } + +              // setup an encryption key for upcoming segments +              _key = { +                method: entry.attributes.METHOD || 'AES-128', +                uri: entry.attributes.URI +              }; + +              if (typeof entry.attributes.IV !== 'undefined') { +                _key.iv = entry.attributes.IV; +              } +            }, +            'media-sequence': function mediaSequence() { +              if (!isFinite(entry.number)) { +                this.trigger('warn', { +                  message: 'ignoring invalid media sequence: ' + entry.number +                }); +                return; +              } +              this.manifest.mediaSequence = entry.number; +            }, +            'discontinuity-sequence': function discontinuitySequence() { +              if (!isFinite(entry.number)) { +                this.trigger('warn', { +                  message: 'ignoring invalid discontinuity sequence: ' + entry.number +                }); +                return; +              } +              this.manifest.discontinuitySequence = entry.number; +            }, +            'playlist-type': function playlistType() { +              if (!/VOD|EVENT/.test(entry.playlistType)) { +                this.trigger('warn', { +                  message: 'ignoring unknown playlist type: ' + entry.playlist +                }); +                return; +              } +              this.manifest.playlistType = entry.playlistType; +            }, +            'stream-inf': function streamInf() { +              this.manifest.playlists = uris; + +              if (!entry.attributes) { +                this.trigger('warn', { +                  message: 'ignoring empty stream-inf attributes' +                }); +                return; +              } + +              if (!currentUri.attributes) { +                currentUri.attributes = {}; +              } +              currentUri.attributes = (0, _videoJs.mergeOptions)(currentUri.attributes, entry.attributes); +            }, +            discontinuity: function discontinuity() { +              currentUri.discontinuity = true; +              this.manifest.discontinuityStarts.push(uris.length); +            }, +            targetduration: function targetduration() { +              if (!isFinite(entry.duration) || entry.duration < 0) { +                this.trigger('warn', { +                  message: 'ignoring invalid target duration: ' + entry.duration +                }); +                return; +              } +              this.manifest.targetDuration = entry.duration; +            }, +            totalduration: function totalduration() { +              if (!isFinite(entry.duration) || entry.duration < 0) { +                this.trigger('warn', { +                  message: 'ignoring invalid total duration: ' + entry.duration +                }); +                return; +              } +              this.manifest.totalDuration = entry.duration; +            } +          })[entry.tagType] || noop).call(self); +        }, +        uri: function uri() { +          currentUri.uri = entry.uri; +          uris.push(currentUri); + +          // if no explicit duration was declared, use the target duration +          if (this.manifest.targetDuration && !('duration' in currentUri)) { +            this.trigger('warn', { +              message: 'defaulting segment duration to the target duration' +            }); +            currentUri.duration = this.manifest.targetDuration; +          } +          // annotate with encryption information, if necessary +          if (_key) { +            currentUri.key = _key; +          } + +          // prepare for the next URI +          currentUri = {}; +        }, +        comment: function comment() { +          // comments are not important for playback +        } +      })[entry.type].call(self); +    }); +  } + +  /** +   * Parse the input string and update the manifest object. +   * @param chunk {string} a potentially incomplete portion of the manifest +   */ + +  _createClass(Parser, [{ +    key: 'push', +    value: function push(chunk) { +      this.lineStream.push(chunk); +    } + +    /** +     * Flush any remaining input. This can be handy if the last line of an M3U8 +     * manifest did not contain a trailing newline but the file has been +     * completely received. +     */ +  }, { +    key: 'end', +    value: function end() { +      // flush any buffered input +      this.lineStream.push('\n'); +    } +  }]); + +  return Parser; +})(_stream2['default']); + +exports['default'] = Parser; +module.exports = exports['default']; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"../stream":13,"./line-stream":7,"./parse-stream":8}],10:[function(require,module,exports){ +(function (global){ +/** + * playlist-loader + * + * A state machine that manages the loading, caching, and updating of + * M3U8 playlists. + * + */ +'use strict'; + +Object.defineProperty(exports, '__esModule', { +  value: true +}); + +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + +var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _resolveUrl = require('./resolve-url'); + +var _resolveUrl2 = _interopRequireDefault(_resolveUrl); + +var _xhr = require('./xhr'); + +var _xhr2 = _interopRequireDefault(_xhr); + +var _videoJs = (typeof window !== "undefined" ? window['videojs'] : typeof global !== "undefined" ? global['videojs'] : null); + +var _stream = require('./stream'); + +var _stream2 = _interopRequireDefault(_stream); + +var _m3u8 = require('./m3u8'); + +var _m3u82 = _interopRequireDefault(_m3u8); + +/** + * Returns a new master playlist that is the result of merging an + * updated media playlist into the original version. If the + * updated media playlist does not match any of the playlist + * entries in the original master playlist, null is returned. + * @param master {object} a parsed master M3U8 object + * @param media {object} a parsed media M3U8 object + * @return {object} a new object that represents the original + * master playlist with the updated media playlist merged in, or + * null if the merge produced no change. + */ +var updateMaster = function updateMaster(master, media) { +  var changed = false; +  var result = (0, _videoJs.mergeOptions)(master, {}); +  var i = master.playlists.length; +  var playlist = undefined; + +  while (i--) { +    playlist = result.playlists[i]; +    if (playlist.uri === media.uri) { +      // consider the playlist unchanged if the number of segments +      // are equal and the media sequence number is unchanged +      if (playlist.segments && media.segments && playlist.segments.length === media.segments.length && playlist.mediaSequence === media.mediaSequence) { +        continue; +      } + +      result.playlists[i] = (0, _videoJs.mergeOptions)(playlist, media); +      result.playlists[media.uri] = result.playlists[i]; + +      // if the update could overlap existing segment information, +      // merge the two lists +      if (playlist.segments) { +        result.playlists[i].segments = updateSegments(playlist.segments, media.segments, media.mediaSequence - playlist.mediaSequence); +      } +      changed = true; +    } +  } +  return changed ? result : null; +}; + +/** + * Returns a new array of segments that is the result of merging + * properties from an older list of segments onto an updated + * list. No properties on the updated playlist will be overridden. + * @param original {array} the outdated list of segments + * @param update {array} the updated list of segments + * @param offset {number} (optional) the index of the first update + * segment in the original segment list. For non-live playlists, + * this should always be zero and does not need to be + * specified. For live playlists, it should be the difference + * between the media sequence numbers in the original and updated + * playlists. + * @return a list of merged segment objects + */ +var updateSegments = function updateSegments(original, update, offset) { +  var result = update.slice(); +  var length = undefined; +  var i = undefined; + +  offset = offset || 0; +  length = Math.min(original.length, update.length + offset); + +  for (i = offset; i < length; i++) { +    result[i - offset] = (0, _videoJs.mergeOptions)(original[i], result[i - offset]); +  } +  return result; +}; + +var PlaylistLoader = (function (_Stream) { +  _inherits(PlaylistLoader, _Stream); + +  function PlaylistLoader(srcUrl, withCredentials) { +    _classCallCheck(this, PlaylistLoader); + +    _get(Object.getPrototypeOf(PlaylistLoader.prototype), 'constructor', this).call(this); +    var loader = this; +    var dispose = undefined; +    var mediaUpdateTimeout = undefined; +    var request = undefined; +    var playlistRequestError = undefined; +    var haveMetadata = undefined; + +    // a flag that disables "expired time"-tracking this setting has +    // no effect when not playing a live stream +    this.trackExpiredTime_ = false; + +    if (!srcUrl) { +      throw new Error('A non-empty playlist URL is required'); +    } + +    playlistRequestError = function (xhr, url, startingState) { +      loader.setBandwidth(request || xhr); + +      // any in-flight request is now finished +      request = null; + +      if (startingState) { +        loader.state = startingState; +      } + +      loader.error = { +        playlist: loader.master.playlists[url], +        status: xhr.status, +        message: 'HLS playlist request error at URL: ' + url, +        responseText: xhr.responseText, +        code: xhr.status >= 500 ? 4 : 2 +      }; +      loader.trigger('error'); +    }; + +    // update the playlist loader's state in response to a new or +    // updated playlist. + +    haveMetadata = function (xhr, url) { +      var parser = undefined; +      var refreshDelay = undefined; +      var update = undefined; + +      loader.setBandwidth(request || xhr); + +      // any in-flight request is now finished +      request = null; +      loader.state = 'HAVE_METADATA'; + +      parser = new _m3u82['default'].Parser(); +      parser.push(xhr.responseText); +      parser.end(); +      parser.manifest.uri = url; + +      // merge this playlist into the master +      update = updateMaster(loader.master, parser.manifest); +      refreshDelay = (parser.manifest.targetDuration || 10) * 1000; +      if (update) { +        loader.master = update; +        loader.updateMediaPlaylist_(parser.manifest); +      } else { +        // if the playlist is unchanged since the last reload, +        // try again after half the target duration +        refreshDelay /= 2; +      } + +      // refresh live playlists after a target duration passes +      if (!loader.media().endList) { +        window.clearTimeout(mediaUpdateTimeout); +        mediaUpdateTimeout = window.setTimeout(function () { +          loader.trigger('mediaupdatetimeout'); +        }, refreshDelay); +      } + +      loader.trigger('loadedplaylist'); +    }; + +    // initialize the loader state +    loader.state = 'HAVE_NOTHING'; + +    // track the time that has expired from the live window +    // this allows the seekable start range to be calculated even if +    // all segments with timing information have expired +    this.expired_ = 0; + +    // capture the prototype dispose function +    dispose = this.dispose; + +    /** +      * Abort any outstanding work and clean up. +      */ +    loader.dispose = function () { +      if (request) { +        request.onreadystatechange = null; +        request.abort(); +        request = null; +      } +      window.clearTimeout(mediaUpdateTimeout); +      dispose.call(this); +    }; + +    /** +      * When called without any arguments, returns the currently +      * active media playlist. When called with a single argument, +      * triggers the playlist loader to asynchronously switch to the +      * specified media playlist. Calling this method while the +      * loader is in the HAVE_NOTHING causes an error to be emitted +      * but otherwise has no effect. +      * @param playlist (optional) {object} the parsed media playlist +      * object to switch to +      */ +    loader.media = function (playlist) { +      var startingState = loader.state; +      var mediaChange = undefined; +      // getter +      if (!playlist) { +        return loader.media_; +      } + +      // setter +      if (loader.state === 'HAVE_NOTHING') { +        throw new Error('Cannot switch media playlist from ' + loader.state); +      } + +      // find the playlist object if the target playlist has been +      // specified by URI +      if (typeof playlist === 'string') { +        if (!loader.master.playlists[playlist]) { +          throw new Error('Unknown playlist URI: ' + playlist); +        } +        playlist = loader.master.playlists[playlist]; +      } + +      mediaChange = !loader.media_ || playlist.uri !== loader.media_.uri; + +      // switch to fully loaded playlists immediately +      if (loader.master.playlists[playlist.uri].endList) { +        // abort outstanding playlist requests +        if (request) { +          request.onreadystatechange = null; +          request.abort(); +          request = null; +        } +        loader.state = 'HAVE_METADATA'; +        loader.media_ = playlist; + +        // trigger media change if the active media has been updated +        if (mediaChange) { +          loader.trigger('mediachange'); +        } +        return; +      } + +      // switching to the active playlist is a no-op +      if (!mediaChange) { +        return; +      } + +      loader.state = 'SWITCHING_MEDIA'; + +      // there is already an outstanding playlist request +      if (request) { +        if ((0, _resolveUrl2['default'])(loader.master.uri, playlist.uri) === request.url) { +          // requesting to switch to the same playlist multiple times +          // has no effect after the first +          return; +        } +        request.onreadystatechange = null; +        request.abort(); +        request = null; +      } + +      // request the new playlist +      request = (0, _xhr2['default'])({ +        uri: (0, _resolveUrl2['default'])(loader.master.uri, playlist.uri), +        withCredentials: withCredentials +      }, function (error, request) { +        if (error) { +          return playlistRequestError(request, playlist.uri, startingState); +        } + +        haveMetadata(request, playlist.uri); + +        // fire loadedmetadata the first time a media playlist is loaded +        if (startingState === 'HAVE_MASTER') { +          loader.trigger('loadedmetadata'); +        } else { +          loader.trigger('mediachange'); +        } +      }); +    }; + +    loader.setBandwidth = function (xhr) { +      loader.bandwidth = xhr.bandwidth; +    }; + +    // In a live list, don't keep track of the expired time until +    // HLS tells us that "first play" has commenced +    loader.on('firstplay', function () { +      this.trackExpiredTime_ = true; +    }); + +    // live playlist staleness timeout +    loader.on('mediaupdatetimeout', function () { +      if (loader.state !== 'HAVE_METADATA') { +        // only refresh the media playlist if no other activity is going on +        return; +      } + +      loader.state = 'HAVE_CURRENT_METADATA'; +      request = (0, _xhr2['default'])({ +        uri: (0, _resolveUrl2['default'])(loader.master.uri, loader.media().uri), +        withCredentials: withCredentials +      }, function (error, request) { +        if (error) { +          return playlistRequestError(request, loader.media().uri); +        } +        haveMetadata(request, loader.media().uri); +      }); +    }); + +    // request the specified URL +    request = (0, _xhr2['default'])({ +      uri: srcUrl, +      withCredentials: withCredentials +    }, function (error, req) { +      var parser = undefined; +      var i = undefined; + +      // clear the loader's request reference +      request = null; + +      if (error) { +        loader.error = { +          status: req.status, +          message: 'HLS playlist request error at URL: ' + srcUrl, +          responseText: req.responseText, +          // MEDIA_ERR_NETWORK +          code: 2 +        }; +        return loader.trigger('error'); +      } + +      parser = new _m3u82['default'].Parser(); +      parser.push(req.responseText); +      parser.end(); + +      loader.state = 'HAVE_MASTER'; + +      parser.manifest.uri = srcUrl; + +      // loaded a master playlist +      if (parser.manifest.playlists) { +        loader.master = parser.manifest; + +        // setup by-URI lookups +        i = loader.master.playlists.length; +        while (i--) { +          loader.master.playlists[loader.master.playlists[i].uri] = loader.master.playlists[i]; +        } + +        loader.trigger('loadedplaylist'); +        if (!request) { +          // no media playlist was specifically selected so start +          // from the first listed one +          loader.media(parser.manifest.playlists[0]); +        } +        return; +      } + +      // loaded a media playlist +      // infer a master playlist if none was previously requested +      loader.master = { +        uri: window.location.href, +        playlists: [{ +          uri: srcUrl +        }] +      }; +      loader.master.playlists[srcUrl] = loader.master.playlists[0]; +      haveMetadata(req, srcUrl); +      return loader.trigger('loadedmetadata'); +    }); +  } + +  /** +   * Update the PlaylistLoader state to reflect the changes in an +   * update to the current media playlist. +   * @param update {object} the updated media playlist object +   */ + +  _createClass(PlaylistLoader, [{ +    key: 'updateMediaPlaylist_', +    value: function updateMediaPlaylist_(update) { +      var outdated = undefined; +      var i = undefined; +      var segment = undefined; + +      outdated = this.media_; +      this.media_ = this.master.playlists[update.uri]; + +      if (!outdated) { +        return; +      } + +      // don't track expired time until this flag is truthy +      if (!this.trackExpiredTime_) { +        return; +      } + +      // if the update was the result of a rendition switch do not +      // attempt to calculate expired_ since media-sequences need not +      // correlate between renditions/variants +      if (update.uri !== outdated.uri) { +        return; +      } + +      // try using precise timing from first segment of the updated +      // playlist +      if (update.segments.length) { +        if (update.segments[0].start !== undefined) { +          this.expired_ = update.segments[0].start; +          return; +        } else if (update.segments[0].end !== undefined) { +          this.expired_ = update.segments[0].end - update.segments[0].duration; +          return; +        } +      } + +      // calculate expired by walking the outdated playlist +      i = update.mediaSequence - outdated.mediaSequence - 1; + +      for (; i >= 0; i--) { +        segment = outdated.segments[i]; + +        if (!segment) { +          // we missed information on this segment completely between +          // playlist updates so we'll have to take an educated guess +          // once we begin buffering again, any error we introduce can +          // be corrected +          this.expired_ += outdated.targetDuration || 10; +          continue; +        } + +        if (segment.end !== undefined) { +          this.expired_ = segment.end; +          return; +        } +        if (segment.start !== undefined) { +          this.expired_ = segment.start + segment.duration; +          return; +        } +        this.expired_ += segment.duration; +      } +    } + +    /** +     * Determine the index of the segment that contains a specified +     * playback position in the current media playlist. Early versions +     * of the HLS specification require segment durations to be rounded +     * to the nearest integer which means it may not be possible to +     * determine the correct segment for a playback position if that +     * position is within .5 seconds of the segment duration. This +     * function will always return the lower of the two possible indices +     * in those cases. +     * +     * @param time {number} The number of seconds since the earliest +     * possible position to determine the containing segment for +     * @returns {number} The number of the media segment that contains +     * that time position. If the specified playback position is outside +     * the time range of the current set of media segments, the return +     * value will be clamped to the index of the segment containing the +     * closest playback position that is currently available. +     */ +  }, { +    key: 'getMediaIndexForTime_', +    value: function getMediaIndexForTime_(time) { +      var i = undefined; +      var segment = undefined; +      var originalTime = time; +      var numSegments = this.media_.segments.length; +      var lastSegment = numSegments - 1; +      var startIndex = undefined; +      var endIndex = undefined; +      var knownStart = undefined; +      var knownEnd = undefined; + +      if (!this.media_) { +        return 0; +      } + +      // when the requested position is earlier than the current set of +      // segments, return the earliest segment index +      if (time < 0) { +        return 0; +      } + +      // find segments with known timing information that bound the +      // target time +      for (i = 0; i < numSegments; i++) { +        segment = this.media_.segments[i]; +        if (segment.end) { +          if (segment.end > time) { +            knownEnd = segment.end; +            endIndex = i; +            break; +          } else { +            knownStart = segment.end; +            startIndex = i + 1; +          } +        } +      } + +      // use the bounds we just found and playlist information to +      // estimate the segment that contains the time we are looking for +      if (startIndex !== undefined) { +        // We have a known-start point that is before our desired time so +        // walk from that point forwards +        time = time - knownStart; +        for (i = startIndex; i < (endIndex || numSegments); i++) { +          segment = this.media_.segments[i]; +          time -= segment.duration; + +          if (time < 0) { +            return i; +          } +        } + +        if (i >= endIndex) { +          // We haven't found a segment but we did hit a known end point +          // so fallback to interpolating between the segment index +          // based on the known span of the timeline we are dealing with +          // and the number of segments inside that span +          return startIndex + Math.floor((originalTime - knownStart) / (knownEnd - knownStart) * (endIndex - startIndex)); +        } + +        // We _still_ haven't found a segment so load the last one +        return lastSegment; +      } else if (endIndex !== undefined) { +        // We _only_ have a known-end point that is after our desired time so +        // walk from that point backwards +        time = knownEnd - time; +        for (i = endIndex; i >= 0; i--) { +          segment = this.media_.segments[i]; +          time -= segment.duration; + +          if (time < 0) { +            return i; +          } +        } + +        // We haven't found a segment so load the first one if time is zero +        if (time === 0) { +          return 0; +        } else { +          return -1; +        } +      } else { +        // We known nothing so walk from the front of the playlist, +        // subtracting durations until we find a segment that contains +        // time and return it +        time = time - this.expired_; + +        if (time < 0) { +          return -1; +        } + +        for (i = 0; i < numSegments; i++) { +          segment = this.media_.segments[i]; +          time -= segment.duration; +          if (time < 0) { +            return i; +          } +        } +        // We are out of possible candidates so load the last one... +        // The last one is the least likely to overlap a buffer and therefore +        // the one most likely to tell us something about the timeline +        return lastSegment; +      } +    } +  }]); + +  return PlaylistLoader; +})(_stream2['default']); + +exports['default'] = PlaylistLoader; +module.exports = exports['default']; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./m3u8":6,"./resolve-url":12,"./stream":13,"./xhr":14}],11:[function(require,module,exports){ +(function (global){ +/** + * Playlist related utilities. + */ +'use strict'; + +Object.defineProperty(exports, '__esModule', { +  value: true +}); + +var _videoJs = (typeof window !== "undefined" ? window['videojs'] : typeof global !== "undefined" ? global['videojs'] : null); + +var Playlist = { +  /** +   * The number of segments that are unsafe to start playback at in +   * a live stream. Changing this value can cause playback stalls. +   * See HTTP Live Streaming, "Playing the Media Playlist File" +   * https://tools.ietf.org/html/draft-pantos-http-live-streaming-18#section-6.3.3 +   */ +  UNSAFE_LIVE_SEGMENTS: 3 +}; + +var backwardDuration = function backwardDuration(playlist, endSequence) { +  var result = 0; +  var i = endSequence - playlist.mediaSequence; +  // if a start time is available for segment immediately following +  // the interval, use it +  var segment = playlist.segments[i]; + +  // Walk backward until we find the latest segment with timeline +  // information that is earlier than endSequence +  if (segment) { +    if (typeof segment.start !== 'undefined') { +      return { result: segment.start, precise: true }; +    } +    if (typeof segment.end !== 'undefined') { +      return { +        result: segment.end - segment.duration, +        precise: true +      }; +    } +  } +  while (i--) { +    segment = playlist.segments[i]; +    if (typeof segment.end !== 'undefined') { +      return { result: result + segment.end, precise: true }; +    } + +    result += segment.duration; + +    if (typeof segment.start !== 'undefined') { +      return { result: result + segment.start, precise: true }; +    } +  } +  return { result: result, precise: false }; +}; + +var forwardDuration = function forwardDuration(playlist, endSequence) { +  var result = 0; +  var segment = undefined; +  var i = endSequence - playlist.mediaSequence; +  // Walk forward until we find the earliest segment with timeline +  // information + +  for (; i < playlist.segments.length; i++) { +    segment = playlist.segments[i]; +    if (typeof segment.start !== 'undefined') { +      return { +        result: segment.start - result, +        precise: true +      }; +    } + +    result += segment.duration; + +    if (typeof segment.end !== 'undefined') { +      return { +        result: segment.end - result, +        precise: true +      }; +    } +  } +  // indicate we didn't find a useful duration estimate +  return { result: -1, precise: false }; +}; + +/** +  * Calculate the media duration from the segments associated with a +  * playlist. The duration of a subinterval of the available segments +  * may be calculated by specifying an end index. +  * +  * @param playlist {object} a media playlist object +  * @param endSequence {number} (optional) an exclusive upper boundary +  * for the playlist.  Defaults to playlist length. +  * @return {number} the duration between the first available segment +  * and end index. +  */ +var intervalDuration = function intervalDuration(playlist, endSequence) { +  var backward = undefined; +  var forward = undefined; + +  if (typeof endSequence === 'undefined') { +    endSequence = playlist.mediaSequence + playlist.segments.length; +  } + +  if (endSequence < playlist.mediaSequence) { +    return 0; +  } + +  // do a backward walk to estimate the duration +  backward = backwardDuration(playlist, endSequence); +  if (backward.precise) { +    // if we were able to base our duration estimate on timing +    // information provided directly from the Media Source, return +    // it +    return backward.result; +  } + +  // walk forward to see if a precise duration estimate can be made +  // that way +  forward = forwardDuration(playlist, endSequence); +  if (forward.precise) { +    // we found a segment that has been buffered and so it's +    // position is known precisely +    return forward.result; +  } + +  // return the less-precise, playlist-based duration estimate +  return backward.result; +}; + +/** +  * Calculates the duration of a playlist. If a start and end index +  * are specified, the duration will be for the subset of the media +  * timeline between those two indices. The total duration for live +  * playlists is always Infinity. +  * @param playlist {object} a media playlist object +  * @param endSequence {number} (optional) an exclusive upper +  * boundary for the playlist.  Defaults to the playlist media +  * sequence number plus its length. +  * @param includeTrailingTime {boolean} (optional) if false, the +  * interval between the final segment and the subsequent segment +  * will not be included in the result +  * @return {number} the duration between the start index and end +  * index. +  */ +var duration = function duration(playlist, endSequence, includeTrailingTime) { +  if (!playlist) { +    return 0; +  } + +  if (typeof includeTrailingTime === 'undefined') { +    includeTrailingTime = true; +  } + +  // if a slice of the total duration is not requested, use +  // playlist-level duration indicators when they're present +  if (typeof endSequence === 'undefined') { +    // if present, use the duration specified in the playlist +    if (playlist.totalDuration) { +      return playlist.totalDuration; +    } + +    // duration should be Infinity for live playlists +    if (!playlist.endList) { +      return window.Infinity; +    } +  } + +  // calculate the total duration based on the segment durations +  return intervalDuration(playlist, endSequence, includeTrailingTime); +}; + +exports.duration = duration; +/** +  * Calculates the interval of time that is currently seekable in a +  * playlist. The returned time ranges are relative to the earliest +  * moment in the specified playlist that is still available. A full +  * seekable implementation for live streams would need to offset +  * these values by the duration of content that has expired from the +  * stream. +  * @param playlist {object} a media playlist object +  * @return {TimeRanges} the periods of time that are valid targets +  * for seeking +  */ +var seekable = function seekable(playlist) { +  var start = undefined; +  var end = undefined; + +  // without segments, there are no seekable ranges +  if (!playlist.segments) { +    return (0, _videoJs.createTimeRange)(); +  } +  // when the playlist is complete, the entire duration is seekable +  if (playlist.endList) { +    return (0, _videoJs.createTimeRange)(0, duration(playlist)); +  } + +  // live playlists should not expose three segment durations worth +  // of content from the end of the playlist +  // https://tools.ietf.org/html/draft-pantos-http-live-streaming-16#section-6.3.3 +  start = intervalDuration(playlist, playlist.mediaSequence); +  end = intervalDuration(playlist, playlist.mediaSequence + Math.max(0, playlist.segments.length - Playlist.UNSAFE_LIVE_SEGMENTS)); +  return (0, _videoJs.createTimeRange)(start, end); +}; + +exports.seekable = seekable; +Playlist.duration = duration; +Playlist.seekable = seekable; + +// exports +exports['default'] = Playlist; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],12:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, '__esModule', { +  value: true +}); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +var _globalDocument = require('global/document'); + +var _globalDocument2 = _interopRequireDefault(_globalDocument); + +/* eslint-disable max-len */ +/** + * Constructs a new URI by interpreting a path relative to another + * URI. + * @param basePath {string} a relative or absolute URI + * @param path {string} a path part to combine with the base + * @return {string} a URI that is equivalent to composing `base` + * with `path` + * @see http://stackoverflow.com/questions/470832/getting-an-absolute-url-from-a-relative-one-ie6-issue + */ +/* eslint-enable max-len */ +var resolveUrl = function resolveUrl(basePath, path) { +  // use the base element to get the browser to handle URI resolution +  var oldBase = _globalDocument2['default'].querySelector('base'); +  var docHead = _globalDocument2['default'].querySelector('head'); +  var a = _globalDocument2['default'].createElement('a'); +  var base = oldBase; +  var oldHref = undefined; +  var result = undefined; + +  // prep the document +  if (oldBase) { +    oldHref = oldBase.href; +  } else { +    base = docHead.appendChild(_globalDocument2['default'].createElement('base')); +  } + +  base.href = basePath; +  a.href = path; +  result = a.href; + +  // clean up +  if (oldBase) { +    oldBase.href = oldHref; +  } else { +    docHead.removeChild(base); +  } +  return result; +}; + +exports['default'] = resolveUrl; +module.exports = exports['default']; +},{"global/document":16}],13:[function(require,module,exports){ +/** + * A lightweight readable stream implemention that handles event dispatching. + */ +'use strict'; + +Object.defineProperty(exports, '__esModule', { +  value: true +}); + +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +var Stream = (function () { +  function Stream() { +    _classCallCheck(this, Stream); + +    this.listeners = {}; +  } + +  /** +   * Add a listener for a specified event type. +   * @param type {string} the event name +   * @param listener {function} the callback to be invoked when an event of +   * the specified type occurs +   */ + +  _createClass(Stream, [{ +    key: 'on', +    value: function on(type, listener) { +      if (!this.listeners[type]) { +        this.listeners[type] = []; +      } +      this.listeners[type].push(listener); +    } + +    /** +     * Remove a listener for a specified event type. +     * @param type {string} the event name +     * @param listener {function} a function previously registered for this +     * type of event through `on` +     */ +  }, { +    key: 'off', +    value: function off(type, listener) { +      var index = undefined; + +      if (!this.listeners[type]) { +        return false; +      } +      index = this.listeners[type].indexOf(listener); +      this.listeners[type].splice(index, 1); +      return index > -1; +    } + +    /** +     * Trigger an event of the specified type on this stream. Any additional +     * arguments to this function are passed as parameters to event listeners. +     * @param type {string} the event name +     */ +  }, { +    key: 'trigger', +    value: function trigger(type) { +      var callbacks = undefined; +      var i = undefined; +      var length = undefined; +      var args = undefined; + +      callbacks = this.listeners[type]; +      if (!callbacks) { +        return; +      } +      // Slicing the arguments on every invocation of this method +      // can add a significant amount of overhead. Avoid the +      // intermediate object creation for the common case of a +      // single callback argument +      if (arguments.length === 2) { +        length = callbacks.length; +        for (i = 0; i < length; ++i) { +          callbacks[i].call(this, arguments[1]); +        } +      } else { +        args = Array.prototype.slice.call(arguments, 1); +        length = callbacks.length; +        for (i = 0; i < length; ++i) { +          callbacks[i].apply(this, args); +        } +      } +    } + +    /** +     * Destroys the stream and cleans up. +     */ +  }, { +    key: 'dispose', +    value: function dispose() { +      this.listeners = {}; +    } + +    /** +     * Forwards all `data` events on this stream to the destination stream. The +     * destination stream should provide a method `push` to receive the data +     * events as they arrive. +     * @param destination {stream} the stream that will receive all `data` events +     * @see http://nodejs.org/api/stream.html#stream_readable_pipe_destination_options +     */ +  }, { +    key: 'pipe', +    value: function pipe(destination) { +      this.on('data', function (data) { +        destination.push(data); +      }); +    } +  }]); + +  return Stream; +})(); + +exports['default'] = Stream; +module.exports = exports['default']; +},{}],14:[function(require,module,exports){ +(function (global){ +/** + * A wrapper for videojs.xhr that tracks bandwidth. + */ +'use strict'; + +Object.defineProperty(exports, '__esModule', { +  value: true +}); + +var _videoJs = (typeof window !== "undefined" ? window['videojs'] : typeof global !== "undefined" ? global['videojs'] : null); + +var xhr = function xhr(options, callback) { +  // Add a default timeout for all hls requests +  options = (0, _videoJs.mergeOptions)({ +    timeout: 45e3 +  }, options); + +  var request = (0, _videoJs.xhr)(options, function (error, response) { +    if (!error && request.response) { +      request.responseTime = new Date().getTime(); +      request.roundTripTime = request.responseTime - request.requestTime; +      request.bytesReceived = request.response.byteLength || request.response.length; +      if (!request.bandwidth) { +        request.bandwidth = Math.floor(request.bytesReceived / request.roundTripTime * 8 * 1000); +      } +    } + +    // videojs.xhr now uses a specific code +    // on the error object to signal that a request has +    // timed out errors of setting a boolean on the request object +    if (error || request.timedout) { +      request.timedout = request.timedout || error.code === 'ETIMEDOUT'; +    } else { +      request.timedout = false; +    } + +    // videojs.xhr no longer considers status codes outside of 200 and 0 +    // (for file uris) to be errors, but the old XHR did, so emulate that +    // behavior. Status 206 may be used in response to byterange requests. +    if (!error && response.statusCode !== 200 && response.statusCode !== 206 && response.statusCode !== 0) { +      error = new Error('XHR Failed with a response of: ' + (request && (request.response || request.responseText))); +    } + +    callback(error, request); +  }); + +  request.requestTime = new Date().getTime(); +  return request; +}; + +exports['default'] = xhr; +module.exports = exports['default']; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],15:[function(require,module,exports){ + +},{}],16:[function(require,module,exports){ +(function (global){ +var topLevel = typeof global !== 'undefined' ? global : +    typeof window !== 'undefined' ? window : {} +var minDoc = require('min-document'); + +if (typeof document !== 'undefined') { +    module.exports = document; +} else { +    var doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4']; + +    if (!doccy) { +        doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'] = minDoc; +    } + +    module.exports = doccy; +} + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"min-document":15}],17:[function(require,module,exports){ +/* + * pkcs7.pad + * https://github.com/brightcove/pkcs7 + * + * Copyright (c) 2014 Brightcove + * Licensed under the apache2 license. + */ + +'use strict'; + +var PADDING; + +/** + * Returns a new Uint8Array that is padded with PKCS#7 padding. + * @param plaintext {Uint8Array} the input bytes before encryption + * @return {Uint8Array} the padded bytes + * @see http://tools.ietf.org/html/rfc5652 + */ +module.exports = function pad(plaintext) { +  var padding = PADDING[(plaintext.byteLength % 16) || 0], +      result = new Uint8Array(plaintext.byteLength + padding.length); +  result.set(plaintext); +  result.set(padding, plaintext.byteLength); +  return result; +}; + +// pre-define the padding values +PADDING = [ +  [16, 16, 16, 16, +   16, 16, 16, 16, +   16, 16, 16, 16, +   16, 16, 16, 16], + +  [15, 15, 15, 15, +   15, 15, 15, 15, +   15, 15, 15, 15, +   15, 15, 15], + +  [14, 14, 14, 14, +   14, 14, 14, 14, +   14, 14, 14, 14, +   14, 14], + +  [13, 13, 13, 13, +   13, 13, 13, 13, +   13, 13, 13, 13, +   13], + +  [12, 12, 12, 12, +   12, 12, 12, 12, +   12, 12, 12, 12], + +  [11, 11, 11, 11, +   11, 11, 11, 11, +   11, 11, 11], + +  [10, 10, 10, 10, +   10, 10, 10, 10, +   10, 10], + +  [9, 9, 9, 9, +   9, 9, 9, 9, +   9], + +  [8, 8, 8, 8, +   8, 8, 8, 8], + +  [7, 7, 7, 7, +   7, 7, 7], + +  [6, 6, 6, 6, +   6, 6], + +  [5, 5, 5, 5, +   5], + +  [4, 4, 4, 4], + +  [3, 3, 3], + +  [2, 2], + +  [1] +]; + +},{}],18:[function(require,module,exports){ +/* + * pkcs7 + * https://github.com/brightcove/pkcs7 + * + * Copyright (c) 2014 Brightcove + * Licensed under the apache2 license. + */ + +'use strict'; + +exports.pad = require('./pad.js'); +exports.unpad = require('./unpad.js'); + +},{"./pad.js":17,"./unpad.js":19}],19:[function(require,module,exports){ +/* + * pkcs7.unpad + * https://github.com/brightcove/pkcs7 + * + * Copyright (c) 2014 Brightcove + * Licensed under the apache2 license. + */ + +'use strict'; + +/** + * Returns the subarray of a Uint8Array without PKCS#7 padding. + * @param padded {Uint8Array} unencrypted bytes that have been padded + * @return {Uint8Array} the unpadded bytes + * @see http://tools.ietf.org/html/rfc5652 + */ +module.exports = function unpad(padded) { +  return padded.subarray(0, padded.byteLength - padded[padded.byteLength - 1]); +}; + +},{}],20:[function(require,module,exports){ +(function (global){ +'use strict'; + +Object.defineProperty(exports, '__esModule', { +  value: true +}); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +var _videoJs = (typeof window !== "undefined" ? window['videojs'] : typeof global !== "undefined" ? global['videojs'] : null); + +var _videoJs2 = _interopRequireDefault(_videoJs); + +var deprecateOldCue = function deprecateOldCue(cue) { +  Object.defineProperties(cue.frame, { +    id: { +      get: function get() { +        _videoJs2['default'].log.warn('cue.frame.id is deprecated. Use cue.value.key instead.'); +        return cue.value.key; +      } +    }, +    value: { +      get: function get() { +        _videoJs2['default'].log.warn('cue.frame.value is deprecated. Use cue.value.data instead.'); +        return cue.value.data; +      } +    }, +    privateData: { +      get: function get() { +        _videoJs2['default'].log.warn('cue.frame.privateData is deprecated. Use cue.value.data instead.'); +        return cue.value.data; +      } +    } +  }); +}; + +var addTextTrackData = function addTextTrackData(sourceHandler, captionArray, metadataArray) { +  var Cue = window.WebKitDataCue || window.VTTCue; + +  if (captionArray) { +    captionArray.forEach(function (caption) { +      this.inbandTextTrack_.addCue(new Cue(caption.startTime + this.timestampOffset, caption.endTime + this.timestampOffset, caption.text)); +    }, sourceHandler); +  } + +  if (metadataArray) { +    metadataArray.forEach(function (metadata) { +      var time = metadata.cueTime + this.timestampOffset; + +      metadata.frames.forEach(function (frame) { +        var cue = new Cue(time, time, frame.value || frame.url || frame.data || ''); + +        cue.frame = frame; +        cue.value = frame; +        deprecateOldCue(cue); +        this.metadataTrack_.addCue(cue); +      }, this); +    }, sourceHandler); +  } +}; + +exports['default'] = addTextTrackData; +module.exports = exports['default']; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],21:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, '__esModule', { +  value: true +}); +var createTextTracksIfNecessary = function createTextTracksIfNecessary(sourceBuffer, mediaSource, segment) { +  // create an in-band caption track if one is present in the segment +  if (segment.captions && segment.captions.length && !sourceBuffer.inbandTextTrack_) { +    sourceBuffer.inbandTextTrack_ = mediaSource.player_.addTextTrack('captions', 'cc1'); +  } + +  if (segment.metadata && segment.metadata.length && !sourceBuffer.metadataTrack_) { +    sourceBuffer.metadataTrack_ = mediaSource.player_.addTextTrack('metadata', 'Timed Metadata'); +    sourceBuffer.metadataTrack_.inBandMetadataTrackDispatchType = segment.metadata.dispatchType; +  } +}; + +exports['default'] = createTextTracksIfNecessary; +module.exports = exports['default']; +},{}],22:[function(require,module,exports){ +/** +  * The maximum size in bytes for append operations to the video.js +  * SWF. Calling through to Flash blocks and can be expensive so +  * tuning this parameter may improve playback on slower +  * systems. There are two factors to consider: +  * - Each interaction with the SWF must be quick or you risk dropping +  * video frames. To maintain 60fps for the rest of the page, each append +  * must not  take longer than 16ms. Given the likelihood that the page +  * will be executing more javascript than just playback, you probably +  * want to aim for less than 8ms. We aim for just 4ms. +  * - Bigger appends significantly increase throughput. The total number of +  * bytes over time delivered to the SWF must exceed the video bitrate or +  * playback will stall. +  * +  * We adaptively tune the size of appends to give the best throughput +  * possible given the performance of the system. To do that we try to append +  * as much as possible in TIME_PER_TICK and while tuning the size of appends +  * dynamically so that we only append about 4-times in that 4ms span. +  * +  * The reason we try to keep the number of appends around four is due to +  * externalities such as Flash load and garbage collection that are highly +  * variable and having 4 iterations allows us to exit the loop early if +  * an iteration takes longer than expected. +  */ + +"use strict"; + +Object.defineProperty(exports, "__esModule", { +  value: true +}); +var flashConstants = { +  TIME_BETWEEN_TICKS: Math.floor(1000 / 480), +  TIME_PER_TICK: Math.floor(1000 / 240), +  // 1kb +  BYTES_PER_CHUNK: 1 * 1024, +  MIN_CHUNK: 1024, +  MAX_CHUNK: 1024 * 1024 +}; + +exports["default"] = flashConstants; +module.exports = exports["default"]; +},{}],23:[function(require,module,exports){ +(function (global){ +'use strict'; + +Object.defineProperty(exports, '__esModule', { +  value: true +}); + +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + +var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _videoJs = (typeof window !== "undefined" ? window['videojs'] : typeof global !== "undefined" ? global['videojs'] : null); + +var _videoJs2 = _interopRequireDefault(_videoJs); + +var _flashSourceBuffer = require('./flash-source-buffer'); + +var _flashSourceBuffer2 = _interopRequireDefault(_flashSourceBuffer); + +var _flashConstants = require('./flash-constants'); + +var _flashConstants2 = _interopRequireDefault(_flashConstants); + +var FlashMediaSource = (function (_videojs$EventTarget) { +  _inherits(FlashMediaSource, _videojs$EventTarget); + +  function FlashMediaSource() { +    var _this = this; + +    _classCallCheck(this, FlashMediaSource); + +    _get(Object.getPrototypeOf(FlashMediaSource.prototype), 'constructor', this).call(this); +    this.sourceBuffers = []; +    this.readyState = 'closed'; + +    this.on(['sourceopen', 'webkitsourceopen'], function (event) { +      // find the swf where we will push media data +      _this.swfObj = document.getElementById(event.swfId); +      _this.player_ = (0, _videoJs2['default'])(_this.swfObj.parentNode); +      _this.tech_ = _this.swfObj.tech; +      _this.readyState = 'open'; + +      _this.tech_.on('seeking', function () { +        var i = _this.sourceBuffers.length; + +        while (i--) { +          _this.sourceBuffers[i].abort(); +        } +      }); + +      // trigger load events +      if (_this.swfObj) { +        _this.swfObj.vjs_load(); +      } +    }); +  } + +  /** +    * Set or return the presentation duration. +    * @param value {double} the duration of the media in seconds +    * @param {double} the current presentation duration +    * @see http://www.w3.org/TR/media-source/#widl-MediaSource-duration +    */ + +  _createClass(FlashMediaSource, [{ +    key: 'addSeekableRange_', +    value: function addSeekableRange_() {} +    // intentional no-op + +    // create a new source buffer to receive a type of media data + +  }, { +    key: 'addSourceBuffer', +    value: function addSourceBuffer(type) { +      var sourceBuffer = undefined; + +      // if this is an FLV type, we'll push data to flash +      if (type.indexOf('video/mp2t') === 0) { +        // Flash source buffers +        sourceBuffer = new _flashSourceBuffer2['default'](this); +      } else { +        throw new Error('NotSupportedError (Video.js)'); +      } + +      this.sourceBuffers.push(sourceBuffer); +      return sourceBuffer; +    } + +    /* eslint-disable max-len */ +    /** +      * Signals the end of the stream. +      * @param error {string} (optional) Signals that a playback error +      * has occurred. If specified, it must be either "network" or +      * "decode". +      * @see https://w3c.github.io/media-source/#widl-MediaSource-endOfStream-void-EndOfStreamError-error +      */ +    /* eslint-enable max-len */ +  }, { +    key: 'endOfStream', +    value: function endOfStream(error) { +      if (error === 'network') { +        // MEDIA_ERR_NETWORK +        this.tech_.error(2); +      } else if (error === 'decode') { +        // MEDIA_ERR_DECODE +        this.tech_.error(3); +      } +      if (this.readyState !== 'ended') { +        this.readyState = 'ended'; +        this.swfObj.vjs_endOfStream(); +      } +    } +  }]); + +  return FlashMediaSource; +})(_videoJs2['default'].EventTarget); + +exports['default'] = FlashMediaSource; +try { +  Object.defineProperty(FlashMediaSource.prototype, 'duration', { +    get: function get() { +      if (!this.swfObj) { +        return NaN; +      } +      // get the current duration from the SWF +      return this.swfObj.vjs_getProperty('duration'); +    }, +    set: function set(value) { +      var i = undefined; +      var oldDuration = this.swfObj.vjs_getProperty('duration'); + +      this.swfObj.vjs_setProperty('duration', value); + +      if (value < oldDuration) { +        // In MSE, this triggers the range removal algorithm which causes +        // an update to occur +        for (i = 0; i < this.sourceBuffers.length; i++) { +          this.sourceBuffers[i].remove(value, oldDuration); +        } +      } + +      return value; +    } +  }); +} catch (e) { +  // IE8 throws if defineProperty is called on a non-DOM node. We +  // don't support IE8 but we shouldn't throw an error if loaded +  // there. +  FlashMediaSource.prototype.duration = NaN; +} + +for (var property in _flashConstants2['default']) { +  FlashMediaSource[property] = _flashConstants2['default'][property]; +} +module.exports = exports['default']; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./flash-constants":22,"./flash-source-buffer":24}],24:[function(require,module,exports){ +(function (global){ +'use strict'; + +Object.defineProperty(exports, '__esModule', { +  value: true +}); + +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + +var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _videoJs = (typeof window !== "undefined" ? window['videojs'] : typeof global !== "undefined" ? global['videojs'] : null); + +var _videoJs2 = _interopRequireDefault(_videoJs); + +var _muxJs = require('mux.js'); + +var _muxJs2 = _interopRequireDefault(_muxJs); + +var _removeCuesFromTrack = require('./remove-cues-from-track'); + +var _removeCuesFromTrack2 = _interopRequireDefault(_removeCuesFromTrack); + +var _createTextTracksIfNecessary = require('./create-text-tracks-if-necessary'); + +var _createTextTracksIfNecessary2 = _interopRequireDefault(_createTextTracksIfNecessary); + +var _addTextTrackData = require('./add-text-track-data'); + +var _addTextTrackData2 = _interopRequireDefault(_addTextTrackData); + +var _flashConstants = require('./flash-constants'); + +var _flashConstants2 = _interopRequireDefault(_flashConstants); + +var scheduleTick = function scheduleTick(func) { +  // Chrome doesn't invoke requestAnimationFrame callbacks +  // in background tabs, so use setTimeout. +  window.setTimeout(func, _flashConstants2['default'].TIME_BETWEEN_TICKS); +}; + +// Source Buffer + +var FlashSourceBuffer = (function (_videojs$EventTarget) { +  _inherits(FlashSourceBuffer, _videojs$EventTarget); + +  function FlashSourceBuffer(mediaSource) { +    var _this = this; + +    _classCallCheck(this, FlashSourceBuffer); + +    _get(Object.getPrototypeOf(FlashSourceBuffer.prototype), 'constructor', this).call(this); +    var encodedHeader = undefined; + +    // Start off using the globally defined value but refine +    // as we append data into flash +    this.chunkSize_ = _flashConstants2['default'].BYTES_PER_CHUNK; + +    // byte arrays queued to be appended +    this.buffer_ = []; + +    // the total number of queued bytes +    this.bufferSize_ = 0; + +    // to be able to determine the correct position to seek to, we +    // need to retain information about the mapping between the +    // media timeline and PTS values +    this.basePtsOffset_ = NaN; + +    this.mediaSource = mediaSource; + +    // indicates whether the asynchronous continuation of an operation +    // is still being processed +    // see https://w3c.github.io/media-source/#widl-SourceBuffer-updating +    this.updating = false; +    this.timestampOffset_ = 0; + +    // TS to FLV transmuxer +    this.segmentParser_ = new _muxJs2['default'].flv.Transmuxer(); +    this.segmentParser_.on('data', this.receiveBuffer_.bind(this)); +    encodedHeader = window.btoa(String.fromCharCode.apply(null, Array.prototype.slice.call(this.segmentParser_.getFlvHeader()))); +    this.mediaSource.swfObj.vjs_appendBuffer(encodedHeader); + +    Object.defineProperty(this, 'timestampOffset', { +      get: function get() { +        return this.timestampOffset_; +      }, +      set: function set(val) { +        if (typeof val === 'number' && val >= 0) { +          this.timestampOffset_ = val; +          this.segmentParser_ = new _muxJs2['default'].flv.Transmuxer(); +          this.segmentParser_.on('data', this.receiveBuffer_.bind(this)); +          // We have to tell flash to expect a discontinuity +          this.mediaSource.swfObj.vjs_discontinuity(); +          // the media <-> PTS mapping must be re-established after +          // the discontinuity +          this.basePtsOffset_ = NaN; +        } +      } +    }); + +    Object.defineProperty(this, 'buffered', { +      get: function get() { +        return _videoJs2['default'].createTimeRanges(this.mediaSource.swfObj.vjs_getProperty('buffered')); +      } +    }); + +    // On a seek we remove all text track data since flash has no concept +    // of a buffered-range and everything else is reset on seek +    this.mediaSource.player_.on('seeked', function () { +      (0, _removeCuesFromTrack2['default'])(0, Infinity, _this.metadataTrack_); +      (0, _removeCuesFromTrack2['default'])(0, Infinity, _this.inbandTextTrack_); +    }); +  } + +  // accept video data and pass to the video (swf) object + +  _createClass(FlashSourceBuffer, [{ +    key: 'appendBuffer', +    value: function appendBuffer(bytes) { +      var _this2 = this; + +      var error = undefined; +      var chunk = 512 * 1024; +      var i = 0; + +      if (this.updating) { +        error = new Error('SourceBuffer.append() cannot be called ' + 'while an update is in progress'); +        error.name = 'InvalidStateError'; +        error.code = 11; +        throw error; +      } + +      this.updating = true; +      this.mediaSource.readyState = 'open'; +      this.trigger({ type: 'update' }); + +      // this is here to use recursion +      var chunkInData = function chunkInData() { +        _this2.segmentParser_.push(bytes.subarray(i, i + chunk)); +        i += chunk; +        if (i < bytes.byteLength) { +          scheduleTick(chunkInData); +        } else { +          scheduleTick(_this2.segmentParser_.flush.bind(_this2.segmentParser_)); +        } +      }; + +      chunkInData(); +    } + +    // reset the parser and remove any data queued to be sent to the swf +  }, { +    key: 'abort', +    value: function abort() { +      this.buffer_ = []; +      this.bufferSize_ = 0; +      this.mediaSource.swfObj.vjs_abort(); + +      // report any outstanding updates have ended +      if (this.updating) { +        this.updating = false; +        this.trigger({ type: 'updateend' }); +      } +    } + +    // Flash cannot remove ranges already buffered in the NetStream +    // but seeking clears the buffer entirely. For most purposes, +    // having this operation act as a no-op is acceptable. +  }, { +    key: 'remove', +    value: function remove(start, end) { +      (0, _removeCuesFromTrack2['default'])(start, end, this.metadataTrack_); +      (0, _removeCuesFromTrack2['default'])(start, end, this.inbandTextTrack_); +      this.trigger({ type: 'update' }); +      this.trigger({ type: 'updateend' }); +    } +  }, { +    key: 'receiveBuffer_', +    value: function receiveBuffer_(segment) { +      var _this3 = this; + +      // create an in-band caption track if one is present in the segment +      (0, _createTextTracksIfNecessary2['default'])(this, this.mediaSource, segment); +      (0, _addTextTrackData2['default'])(this, segment.captions, segment.metadata); + +      // Do this asynchronously since convertTagsToData_ can be time consuming +      scheduleTick(function () { +        var flvBytes = _this3.convertTagsToData_(segment); + +        if (_this3.buffer_.length === 0) { +          scheduleTick(_this3.processBuffer_.bind(_this3)); +        } + +        if (flvBytes) { +          _this3.buffer_.push(flvBytes); +          _this3.bufferSize_ += flvBytes.byteLength; +        } +      }); +    } + +    // append a portion of the current buffer to the SWF +  }, { +    key: 'processBuffer_', +    value: function processBuffer_() { +      var chunk = undefined; +      var i = undefined; +      var length = undefined; +      var binary = undefined; +      var b64str = undefined; +      var startByte = 0; +      var appendIterations = 0; +      var startTime = +new Date(); +      var appendTime = undefined; + +      if (!this.buffer_.length) { +        if (this.updating !== false) { +          this.updating = false; +          this.trigger({ type: 'updateend' }); +        } +        // do nothing if the buffer is empty +        return; +      } + +      do { +        appendIterations++; +        // concatenate appends up to the max append size +        chunk = this.buffer_[0].subarray(startByte, startByte + this.chunkSize_); + +        // requeue any bytes that won't make it this round +        if (chunk.byteLength < this.chunkSize_ || this.buffer_[0].byteLength === startByte + this.chunkSize_) { +          startByte = 0; +          this.buffer_.shift(); +        } else { +          startByte += this.chunkSize_; +        } + +        this.bufferSize_ -= chunk.byteLength; + +        // base64 encode the bytes +        binary = ''; +        length = chunk.byteLength; +        for (i = 0; i < length; i++) { +          binary += String.fromCharCode(chunk[i]); +        } +        b64str = window.btoa(binary); + +        // bypass normal ExternalInterface calls and pass xml directly +        // IE can be slow by default +        this.mediaSource.swfObj.CallFunction('<invoke name="vjs_appendBuffer"' + 'returntype="javascript"><arguments><string>' + b64str + '</string></arguments></invoke>'); +        appendTime = new Date() - startTime; +      } while (this.buffer_.length && appendTime < _flashConstants2['default'].TIME_PER_TICK); + +      if (this.buffer_.length && startByte) { +        this.buffer_[0] = this.buffer_[0].subarray(startByte); +      } + +      if (appendTime >= _flashConstants2['default'].TIME_PER_TICK) { +        // We want to target 4 iterations per time-slot so that gives us +        // room to adjust to changes in Flash load and other externalities +        // such as garbage collection while still maximizing throughput +        this.chunkSize_ = Math.floor(this.chunkSize_ * (appendIterations / 4)); +      } + +      // We also make sure that the chunk-size doesn't drop below 1KB or +      // go above 1MB as a sanity check +      this.chunkSize_ = Math.max(_flashConstants2['default'].MIN_CHUNK, Math.min(this.chunkSize_, _flashConstants2['default'].MAX_CHUNK)); + +      // schedule another append if necessary +      if (this.bufferSize_ !== 0) { +        scheduleTick(this.processBuffer_.bind(this)); +      } else { +        this.updating = false; +        this.trigger({ type: 'updateend' }); +      } +    } + +    // Turns an array of flv tags into a Uint8Array representing the +    // flv data. Also removes any tags that are before the current +    // time so that playback begins at or slightly after the right +    // place on a seek +  }, { +    key: 'convertTagsToData_', +    value: function convertTagsToData_(segmentData) { +      var segmentByteLength = 0; +      var tech = this.mediaSource.tech_; +      var targetPts = 0; +      var i = undefined; +      var j = undefined; +      var segment = undefined; +      var filteredTags = []; +      var tags = this.getOrderedTags_(segmentData); + +      // Establish the media timeline to PTS translation if we don't +      // have one already +      if (isNaN(this.basePtsOffset_) && tags.length) { +        this.basePtsOffset_ = tags[0].pts; +      } + +      // Trim any tags that are before the end of the end of +      // the current buffer +      if (tech.buffered().length) { +        targetPts = tech.buffered().end(0) - this.timestampOffset; +      } +      // Trim to currentTime if it's ahead of buffered or buffered doesn't exist +      targetPts = Math.max(targetPts, tech.currentTime() - this.timestampOffset); + +      // PTS values are represented in milliseconds +      targetPts *= 1e3; +      targetPts += this.basePtsOffset_; + +      // skip tags with a presentation time less than the seek target +      for (i = 0; i < tags.length; i++) { +        if (tags[i].pts >= targetPts) { +          filteredTags.push(tags[i]); +        } +      } + +      if (filteredTags.length === 0) { +        return; +      } + +      // concatenate the bytes into a single segment +      for (i = 0; i < filteredTags.length; i++) { +        segmentByteLength += filteredTags[i].bytes.byteLength; +      } +      segment = new Uint8Array(segmentByteLength); +      for (i = 0, j = 0; i < filteredTags.length; i++) { +        segment.set(filteredTags[i].bytes, j); +        j += filteredTags[i].bytes.byteLength; +      } + +      return segment; +    } + +    // assemble the FLV tags in decoder order +  }, { +    key: 'getOrderedTags_', +    value: function getOrderedTags_(segmentData) { +      var videoTags = segmentData.tags.videoTags; +      var audioTags = segmentData.tags.audioTags; +      var tag = undefined; +      var tags = []; + +      while (videoTags.length || audioTags.length) { +        if (!videoTags.length) { +          // only audio tags remain +          tag = audioTags.shift(); +        } else if (!audioTags.length) { +          // only video tags remain +          tag = videoTags.shift(); +        } else if (audioTags[0].dts < videoTags[0].dts) { +          // audio should be decoded next +          tag = audioTags.shift(); +        } else { +          // video should be decoded next +          tag = videoTags.shift(); +        } + +        tags.push(tag.finalize()); +      } + +      return tags; +    } +  }]); + +  return FlashSourceBuffer; +})(_videoJs2['default'].EventTarget); + +exports['default'] = FlashSourceBuffer; +module.exports = exports['default']; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./add-text-track-data":20,"./create-text-tracks-if-necessary":21,"./flash-constants":22,"./remove-cues-from-track":26,"mux.js":37}],25:[function(require,module,exports){ +(function (global){ +'use strict'; + +Object.defineProperty(exports, '__esModule', { +  value: true +}); + +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + +var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _videoJs = (typeof window !== "undefined" ? window['videojs'] : typeof global !== "undefined" ? global['videojs'] : null); + +var _videoJs2 = _interopRequireDefault(_videoJs); + +var _virtualSourceBuffer = require('./virtual-source-buffer'); + +var _virtualSourceBuffer2 = _interopRequireDefault(_virtualSourceBuffer); + +// Replace the old apple-style `avc1.<dd>.<dd>` codec string with the standard +// `avc1.<hhhhhh>` +var translateLegacyCodecs = function translateLegacyCodecs(codecs) { +  return codecs.replace(/avc1\.(\d+)\.(\d+)/i, function (orig, profile, avcLevel) { +    var profileHex = ('00' + Number(profile).toString(16)).slice(-2); +    var avcLevelHex = ('00' + Number(avcLevel).toString(16)).slice(-2); + +    return 'avc1.' + profileHex + '00' + avcLevelHex; +  }); +}; + +var HtmlMediaSource = (function (_videojs$EventTarget) { +  _inherits(HtmlMediaSource, _videojs$EventTarget); + +  function HtmlMediaSource() { +    _classCallCheck(this, HtmlMediaSource); + +    _get(Object.getPrototypeOf(HtmlMediaSource.prototype), 'constructor', this).call(this, _videoJs2['default'].EventTarget); +    /* eslint-disable consistent-this */ +    var self = this; +    /* eslint-enable consistent-this */ +    var property = undefined; + +    this.mediaSource_ = new window.MediaSource(); +    // delegate to the native MediaSource's methods by default +    for (property in this.mediaSource_) { +      if (!(property in HtmlMediaSource.prototype) && typeof this.mediaSource_[property] === 'function') { +        this[property] = this.mediaSource_[property].bind(this.mediaSource_); +      } +    } + +    // emulate `duration` and `seekable` until seeking can be +    // handled uniformly for live streams +    // see https://github.com/w3c/media-source/issues/5 +    this.duration_ = NaN; +    Object.defineProperty(this, 'duration', { +      get: function get() { +        if (self.duration_ === Infinity) { +          return self.duration_; +        } +        return self.mediaSource_.duration; +      }, +      set: function set(duration) { +        self.duration_ = duration; +        if (duration !== Infinity) { +          self.mediaSource_.duration = duration; +          return; +        } +      } +    }); +    Object.defineProperty(this, 'seekable', { +      get: function get() { +        if (this.duration_ === Infinity) { +          return _videoJs2['default'].createTimeRanges([[0, self.mediaSource_.duration]]); +        } +        return self.mediaSource_.seekable; +      } +    }); + +    Object.defineProperty(this, 'readyState', { +      get: function get() { +        return self.mediaSource_.readyState; +      } +    }); + +    // the list of virtual and native SourceBuffers created by this +    // MediaSource +    this.sourceBuffers = []; + +    // Re-emit MediaSource events on the polyfill +    ['sourceopen', 'sourceclose', 'sourceended'].forEach(function (eventName) { +      this.mediaSource_.addEventListener(eventName, this.trigger.bind(this)); +    }, this); + +    // capture the associated player when the MediaSource is +    // successfully attached +    this.on('sourceopen', function (event) { +      var video = document.querySelector('[src="' + self.url_ + '"]'); + +      if (!video) { +        return; +      } + +      self.player_ = (0, _videoJs2['default'])(video.parentNode); +    }); + +    // explicitly terminate any WebWorkers that were created +    // by SourceHandlers +    this.on('sourceclose', function (event) { +      this.sourceBuffers.forEach(function (sourceBuffer) { +        if (sourceBuffer.transmuxer_) { +          sourceBuffer.transmuxer_.terminate(); +        } +      }); + +      this.sourceBuffers.length = 0; +    }); +  } + +  _createClass(HtmlMediaSource, [{ +    key: 'addSeekableRange_', +    value: function addSeekableRange_(start, end) { +      var error = undefined; + +      if (this.duration !== Infinity) { +        error = new Error('MediaSource.addSeekableRange() can only be invoked ' + 'when the duration is Infinity'); +        error.name = 'InvalidStateError'; +        error.code = 11; +        throw error; +      } + +      if (end > this.mediaSource_.duration || isNaN(this.mediaSource_.duration)) { +        this.mediaSource_.duration = end; +      } +    } +  }, { +    key: 'addSourceBuffer', +    value: function addSourceBuffer(type) { +      var buffer = undefined; +      var codecs = undefined; +      var avcCodec = undefined; +      var mp4aCodec = undefined; +      var avcRegEx = /avc1\.[\da-f]+/i; +      var mp4aRegEx = /mp4a\.\d+.\d+/i; + +      // create a virtual source buffer to transmux MPEG-2 transport +      // stream segments into fragmented MP4s +      if (/^video\/mp2t/i.test(type)) { +        codecs = type.split(';').slice(1).join(';'); +        codecs = translateLegacyCodecs(codecs); + +        // Pull out each individual codec string if it exists +        avcCodec = (codecs.match(avcRegEx) || [])[0]; +        mp4aCodec = (codecs.match(mp4aRegEx) || [])[0]; + +        // If a codec is unspecified, use the defaults +        if (!avcCodec || !avcCodec.length) { +          avcCodec = 'avc1.4d400d'; +        } +        if (!mp4aCodec || !mp4aCodec.length) { +          mp4aCodec = 'mp4a.40.2'; +        } + +        buffer = new _virtualSourceBuffer2['default'](this, [avcCodec, mp4aCodec]); +        this.sourceBuffers.push(buffer); +        return buffer; +      } + +      // delegate to the native implementation +      buffer = this.mediaSource_.addSourceBuffer(type); +      this.sourceBuffers.push(buffer); +      return buffer; +    } +  }]); + +  return HtmlMediaSource; +})(_videoJs2['default'].EventTarget); + +exports['default'] = HtmlMediaSource; +module.exports = exports['default']; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./virtual-source-buffer":29}],26:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { +  value: true +}); +var removeCuesFromTrack = function removeCuesFromTrack(start, end, track) { +  var i = undefined; +  var cue = undefined; + +  if (!track) { +    return; +  } + +  i = track.cues.length; + +  while (i--) { +    cue = track.cues[i]; + +    // Remove any overlapping cue +    if (cue.startTime <= end && cue.endTime >= start) { +      track.removeCue(cue); +    } +  } +}; + +exports["default"] = removeCuesFromTrack; +module.exports = exports["default"]; +},{}],27:[function(require,module,exports){ +/** + * videojs-contrib-media-sources + * + * Copyright (c) 2015 Brightcove + * All rights reserved. + * + * Handles communication between the browser-world and the mux.js + * transmuxer running inside of a WebWorker by exposing a simple + * message-based interface to a Transmuxer object. + */ +'use strict'; + +Object.defineProperty(exports, '__esModule', { +  value: true +}); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +var _muxJs = require('mux.js'); + +var _muxJs2 = _interopRequireDefault(_muxJs); + +var globalTransmuxer = undefined; +var initOptions = {}; + +/** + * wireTransmuxerEvents + * Re-emits tranmsuxer events by converting them into messages to the + * world outside the worker + */ +var wireTransmuxerEvents = function wireTransmuxerEvents(transmuxer) { +  transmuxer.on('data', function (segment) { +    // transfer ownership of the underlying ArrayBuffer +    // instead of doing a copy to save memory +    // ArrayBuffers are transferable but generic TypedArrays are not +    /* eslint-disable max-len */ +    // see https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers#Passing_data_by_transferring_ownership_(transferable_objects) +    /* eslint-enable max-len */ +    var typedArray = segment.data; + +    segment.data = typedArray.buffer; +    postMessage({ +      action: 'data', +      segment: segment, +      byteOffset: typedArray.byteOffset, +      byteLength: typedArray.byteLength +    }, [segment.data]); +  }); + +  if (transmuxer.captionStream) { +    transmuxer.captionStream.on('data', function (caption) { +      postMessage({ +        action: 'caption', +        data: caption +      }); +    }); +  } + +  transmuxer.on('done', function (data) { +    postMessage({ action: 'done' }); +  }); +}; + +/** + * All incoming messages route through this hash. If no function exists + * to handle an incoming message, then we ignore the message. + */ +var messageHandlers = { +  /** +   * init +   * Allows you to initialize the transmuxer and pass along options from +   * outside the worker +   */ +  init: function init(data) { +    initOptions = data && data.options || {}; +    this.defaultInit(); +  }, +  /** +   * defaultInit +   * Is called before every function and initializes the transmuxer with +   * default options if `init` was never explicitly called +   */ +  defaultInit: function defaultInit() { +    if (globalTransmuxer) { +      globalTransmuxer.dispose(); +    } +    globalTransmuxer = new _muxJs2['default'].mp4.Transmuxer(initOptions); +    wireTransmuxerEvents(globalTransmuxer); +  }, +  /** +   * push +   * Adds data (a ts segment) to the start of the transmuxer pipeline for +   * processing +   */ +  push: function push(data) { +    // Cast array buffer to correct type for transmuxer +    var segment = new Uint8Array(data.data, data.byteOffset, data.byteLength); + +    globalTransmuxer.push(segment); +  }, +  /** +   * reset +   * Recreate the transmuxer so that the next segment added via `push` +   * start with a fresh transmuxer +   */ +  reset: function reset() { +    this.defaultInit(); +  }, +  /** +   * setTimestampOffset +   * Set the value that will be used as the `baseMediaDecodeTime` time for the +   * next segment pushed in. Subsequent segments will have their `baseMediaDecodeTime` +   * set relative to the first based on the PTS values. +   */ +  setTimestampOffset: function setTimestampOffset(data) { +    var timestampOffset = data.timestampOffset || 0; + +    globalTransmuxer.setBaseMediaDecodeTime(Math.round(timestampOffset * 90000)); +  }, +  /** +   * flush +   * Forces the pipeline to finish processing the last segment and emit it's +   * results +   */ +  flush: function flush(data) { +    globalTransmuxer.flush(); +  } +}; + +var Worker = function Worker(self) { +  self.onmessage = function (event) { +    // Setup the default transmuxer if one doesn't exist yet and we are invoked with +    // an action other than `init` +    if (!globalTransmuxer && event.data.action !== 'init') { +      messageHandlers.defaultInit(); +    } + +    if (event.data && event.data.action) { +      if (messageHandlers[event.data.action]) { +        messageHandlers[event.data.action](event.data); +      } +    } +  }; +}; + +exports['default'] = Worker; +module.exports = exports['default']; +},{"mux.js":37}],28:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, '__esModule', { +  value: true +}); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +var _flashMediaSource = require('./flash-media-source'); + +var _flashMediaSource2 = _interopRequireDefault(_flashMediaSource); + +var _htmlMediaSource = require('./html-media-source'); + +var _htmlMediaSource2 = _interopRequireDefault(_htmlMediaSource); + +// import videojs from 'video.js'; +var videojs = window.videojs; +var urlCount = 0; + +// ------------ +// Media Source +// ------------ + +var defaults = { +  // how to determine the MediaSource implementation to use. There +  // are three available modes: +  // - auto: use native MediaSources where available and Flash +  //   everywhere else +  // - html5: always use native MediaSources +  // - flash: always use the Flash MediaSource polyfill +  mode: 'auto' +}; + +// store references to the media sources so they can be connected +// to a video element (a swf object) +videojs.mediaSources = {}; + +// provide a method for a swf object to notify JS that a media source is now open +var open = function open(msObjectURL, swfId) { +  var mediaSource = videojs.mediaSources[msObjectURL]; + +  if (mediaSource) { +    mediaSource.trigger({ type: 'sourceopen', swfId: swfId }); +  } else { +    throw new Error('Media Source not found (Video.js)'); +  } +}; + +// Check to see if the native MediaSource object exists and supports +// an MP4 container with both H.264 video and AAC-LC audio +var supportsNativeMediaSources = function supportsNativeMediaSources() { +  return !!window.MediaSource && window.MediaSource.isTypeSupported('video/mp4;codecs="avc1.4d400d,mp4a.40.2"'); +}; + +var MediaSource = function MediaSource(options) { +  var settings = videojs.mergeOptions(defaults, options); + +  this.MediaSource = { +    open: open, +    supportsNativeMediaSources: supportsNativeMediaSources +  }; + +  // determine whether HTML MediaSources should be used +  if (settings.mode === 'html5' || settings.mode === 'auto' && supportsNativeMediaSources()) { +    return new _htmlMediaSource2['default'](); +  } + +  // otherwise, emulate them through the SWF +  return new _flashMediaSource2['default'](); +}; + +exports.MediaSource = MediaSource; +MediaSource.open = open; +MediaSource.supportsNativeMediaSources = supportsNativeMediaSources; + +var URL = { +  createObjectURL: function createObjectURL(object) { +    var objectUrlPrefix = 'blob:vjs-media-source/'; +    var url = undefined; + +    // use the native MediaSource to generate an object URL +    if (object instanceof _htmlMediaSource2['default']) { +      url = window.URL.createObjectURL(object.mediaSource_); +      object.url_ = url; +      return url; +    } +    // if the object isn't an emulated MediaSource, delegate to the +    // native implementation +    if (!(object instanceof _flashMediaSource2['default'])) { +      url = window.URL.createObjectURL(object); +      object.url_ = url; +      return url; +    } + +    // build a URL that can be used to map back to the emulated +    // MediaSource +    url = objectUrlPrefix + urlCount; + +    urlCount++; + +    // setup the mapping back to object +    videojs.mediaSources[url] = object; + +    return url; +  } +}; + +exports.URL = URL; +videojs.MediaSource = MediaSource; +videojs.URL = URL; +},{"./flash-media-source":23,"./html-media-source":25}],29:[function(require,module,exports){ +(function (global){ +'use strict'; + +Object.defineProperty(exports, '__esModule', { +  value: true +}); + +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + +var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _videoJs = (typeof window !== "undefined" ? window['videojs'] : typeof global !== "undefined" ? global['videojs'] : null); + +var _videoJs2 = _interopRequireDefault(_videoJs); + +var _createTextTracksIfNecessary = require('./create-text-tracks-if-necessary'); + +var _createTextTracksIfNecessary2 = _interopRequireDefault(_createTextTracksIfNecessary); + +var _removeCuesFromTrack = require('./remove-cues-from-track'); + +var _removeCuesFromTrack2 = _interopRequireDefault(_removeCuesFromTrack); + +var _addTextTrackData = require('./add-text-track-data'); + +var _addTextTrackData2 = _interopRequireDefault(_addTextTrackData); + +var _webworkify = require('webworkify'); + +var _webworkify2 = _interopRequireDefault(_webworkify); + +var _transmuxerWorker = require('./transmuxer-worker'); + +var _transmuxerWorker2 = _interopRequireDefault(_transmuxerWorker); + +var aggregateUpdateHandler = function aggregateUpdateHandler(mediaSource, guardBufferName, type) { +  return function () { +    if (!mediaSource[guardBufferName] || !mediaSource[guardBufferName].updating) { +      return mediaSource.trigger(type); +    } +  }; +}; + +var VirtualSourceBuffer = (function (_videojs$EventTarget) { +  _inherits(VirtualSourceBuffer, _videojs$EventTarget); + +  function VirtualSourceBuffer(mediaSource, codecs) { +    var _this = this; + +    _classCallCheck(this, VirtualSourceBuffer); + +    _get(Object.getPrototypeOf(VirtualSourceBuffer.prototype), 'constructor', this).call(this, _videoJs2['default'].EventTarget); +    this.timestampOffset_ = 0; +    this.pendingBuffers_ = []; +    this.bufferUpdating_ = false; +    this.mediaSource_ = mediaSource; +    this.codecs_ = codecs; + +    // append muxed segments to their respective native buffers as +    // soon as they are available +    this.transmuxer_ = (0, _webworkify2['default'])(_transmuxerWorker2['default']); +    this.transmuxer_.postMessage({ action: 'init', options: { remux: false } }); + +    this.transmuxer_.onmessage = function (event) { +      if (event.data.action === 'data') { +        return _this.data_(event); +      } + +      if (event.data.action === 'done') { +        return _this.done_(event); +      } +    }; + +    // this timestampOffset is a property with the side-effect of resetting +    // baseMediaDecodeTime in the transmuxer on the setter +    Object.defineProperty(this, 'timestampOffset', { +      get: function get() { +        return this.timestampOffset_; +      }, +      set: function set(val) { +        if (typeof val === 'number' && val >= 0) { +          this.timestampOffset_ = val; + +          // We have to tell the transmuxer to set the baseMediaDecodeTime to +          // the desired timestampOffset for the next segment +          this.transmuxer_.postMessage({ +            action: 'setTimestampOffset', +            timestampOffset: val +          }); +        } +      } +    }); +    // setting the append window affects both source buffers +    Object.defineProperty(this, 'appendWindowStart', { +      get: function get() { +        return (this.videoBuffer_ || this.audioBuffer_).appendWindowStart; +      }, +      set: function set(start) { +        if (this.videoBuffer_) { +          this.videoBuffer_.appendWindowStart = start; +        } +        if (this.audioBuffer_) { +          this.audioBuffer_.appendWindowStart = start; +        } +      } +    }); +    // this buffer is "updating" if either of its native buffers are +    Object.defineProperty(this, 'updating', { +      get: function get() { +        return this.bufferUpdating_ || this.audioBuffer_ && this.audioBuffer_.updating || this.videoBuffer_ && this.videoBuffer_.updating; +      } +    }); +    // the buffered property is the intersection of the buffered +    // ranges of the native source buffers +    Object.defineProperty(this, 'buffered', { +      get: function get() { +        var start = null; +        var end = null; +        var arity = 0; +        var extents = []; +        var ranges = []; + +        // Handle the case where there is no buffer data +        if ((!this.videoBuffer_ || this.videoBuffer_.buffered.length === 0) && (!this.audioBuffer_ || this.audioBuffer_.buffered.length === 0)) { +          return _videoJs2['default'].createTimeRange(); +        } + +        // Handle the case where we only have one buffer +        if (!this.videoBuffer_) { +          return this.audioBuffer_.buffered; +        } else if (!this.audioBuffer_) { +          return this.videoBuffer_.buffered; +        } + +        // Handle the case where we have both buffers and create an +        // intersection of the two +        var videoBuffered = this.videoBuffer_.buffered; +        var audioBuffered = this.audioBuffer_.buffered; +        var count = videoBuffered.length; + +        // A) Gather up all start and end times +        while (count--) { +          extents.push({ time: videoBuffered.start(count), type: 'start' }); +          extents.push({ time: videoBuffered.end(count), type: 'end' }); +        } +        count = audioBuffered.length; +        while (count--) { +          extents.push({ time: audioBuffered.start(count), type: 'start' }); +          extents.push({ time: audioBuffered.end(count), type: 'end' }); +        } +        // B) Sort them by time +        extents.sort(function (a, b) { +          return a.time - b.time; +        }); + +        // C) Go along one by one incrementing arity for start and decrementing +        //    arity for ends +        for (count = 0; count < extents.length; count++) { +          if (extents[count].type === 'start') { +            arity++; + +            // D) If arity is ever incremented to 2 we are entering an +            //    overlapping range +            if (arity === 2) { +              start = extents[count].time; +            } +          } else if (extents[count].type === 'end') { +            arity--; + +            // E) If arity is ever decremented to 1 we leaving an +            //    overlapping range +            if (arity === 1) { +              end = extents[count].time; +            } +          } + +          // F) Record overlapping ranges +          if (start !== null && end !== null) { +            ranges.push([start, end]); +            start = null; +            end = null; +          } +        } + +        return _videoJs2['default'].createTimeRanges(ranges); +      } +    }); +  } + +  // Transmuxer message handlers + +  _createClass(VirtualSourceBuffer, [{ +    key: 'data_', +    value: function data_(event) { +      var segment = event.data.segment; +      var nativeMediaSource = this.mediaSource_.mediaSource_; + +      // Cast ArrayBuffer to TypedArray +      segment.data = new Uint8Array(segment.data, event.data.byteOffset, event.data.byteLength); + +      // If any sourceBuffers have not been created, do so now +      if (segment.type === 'video') { +        if (!this.videoBuffer_) { +          this.videoBuffer_ = nativeMediaSource.addSourceBuffer('video/mp4;codecs="' + this.codecs_[0] + '"'); +          // aggregate buffer events +          this.videoBuffer_.addEventListener('updatestart', aggregateUpdateHandler(this, 'audioBuffer_', 'updatestart')); +          this.videoBuffer_.addEventListener('update', aggregateUpdateHandler(this, 'audioBuffer_', 'update')); +          this.videoBuffer_.addEventListener('updateend', aggregateUpdateHandler(this, 'audioBuffer_', 'updateend')); +        } +      } else if (segment.type === 'audio') { +        if (!this.audioBuffer_) { +          this.audioBuffer_ = nativeMediaSource.addSourceBuffer('audio/mp4;codecs="' + this.codecs_[1] + '"'); +          // aggregate buffer events +          this.audioBuffer_.addEventListener('updatestart', aggregateUpdateHandler(this, 'videoBuffer_', 'updatestart')); +          this.audioBuffer_.addEventListener('update', aggregateUpdateHandler(this, 'videoBuffer_', 'update')); +          this.audioBuffer_.addEventListener('updateend', aggregateUpdateHandler(this, 'videoBuffer_', 'updateend')); +        } +      } else if (segment.type === 'combined') { +        if (!this.videoBuffer_) { +          this.videoBuffer_ = nativeMediaSource.addSourceBuffer('video/mp4;codecs="' + this.codecs_.join(',') + '"'); +          // aggregate buffer events +          this.videoBuffer_.addEventListener('updatestart', aggregateUpdateHandler(this, 'videoBuffer_', 'updatestart')); +          this.videoBuffer_.addEventListener('update', aggregateUpdateHandler(this, 'videoBuffer_', 'update')); +          this.videoBuffer_.addEventListener('updateend', aggregateUpdateHandler(this, 'videoBuffer_', 'updateend')); +        } +      } +      (0, _createTextTracksIfNecessary2['default'])(this, this.mediaSource_, segment); + +      // Add the segments to the pendingBuffers array +      this.pendingBuffers_.push(segment); +      return; +    } +  }, { +    key: 'done_', +    value: function done_() { +      // All buffers should have been flushed from the muxer +      // start processing anything we have received +      this.processPendingSegments_(); +      return; +    } + +    // SourceBuffer Implementation + +  }, { +    key: 'appendBuffer', +    value: function appendBuffer(segment) { +      // Start the internal "updating" state +      this.bufferUpdating_ = true; + +      this.transmuxer_.postMessage({ +        action: 'push', +        // Send the typed-array of data as an ArrayBuffer so that +        // it can be sent as a "Transferable" and avoid the costly +        // memory copy +        data: segment.buffer, + +        // To recreate the original typed-array, we need information +        // about what portion of the ArrayBuffer it was a view into +        byteOffset: segment.byteOffset, +        byteLength: segment.byteLength +      }, [segment.buffer]); +      this.transmuxer_.postMessage({ action: 'flush' }); +    } +  }, { +    key: 'remove', +    value: function remove(start, end) { +      if (this.videoBuffer_) { +        this.videoBuffer_.remove(start, end); +      } +      if (this.audioBuffer_) { +        this.audioBuffer_.remove(start, end); +      } + +      // Remove Metadata Cues (id3) +      (0, _removeCuesFromTrack2['default'])(start, end, this.metadataTrack_); + +      // Remove Any Captions +      (0, _removeCuesFromTrack2['default'])(start, end, this.inbandTextTrack_); +    } + +    /** +      * Process any segments that the muxer has output +      * Concatenate segments together based on type and append them into +      * their respective sourceBuffers +      */ +  }, { +    key: 'processPendingSegments_', +    value: function processPendingSegments_() { +      var sortedSegments = { +        video: { +          segments: [], +          bytes: 0 +        }, +        audio: { +          segments: [], +          bytes: 0 +        }, +        captions: [], +        metadata: [] +      }; + +      // Sort segments into separate video/audio arrays and +      // keep track of their total byte lengths +      sortedSegments = this.pendingBuffers_.reduce(function (segmentObj, segment) { +        var type = segment.type; +        var data = segment.data; + +        // A "combined" segment type (unified video/audio) uses the videoBuffer +        if (type === 'combined') { +          type = 'video'; +        } + +        segmentObj[type].segments.push(data); +        segmentObj[type].bytes += data.byteLength; + +        // Gather any captions into a single array +        if (segment.captions) { +          segmentObj.captions = segmentObj.captions.concat(segment.captions); +        } + +        // Gather any metadata into a single array +        if (segment.metadata) { +          segmentObj.metadata = segmentObj.metadata.concat(segment.metadata); +        } + +        return segmentObj; +      }, sortedSegments); + +      (0, _addTextTrackData2['default'])(this, sortedSegments.captions, sortedSegments.metadata); + +      // Merge multiple video and audio segments into one and append +      this.concatAndAppendSegments_(sortedSegments.video, this.videoBuffer_); +      this.concatAndAppendSegments_(sortedSegments.audio, this.audioBuffer_); + +      this.pendingBuffers_.length = 0; + +      // We are no longer in the internal "updating" state +      this.bufferUpdating_ = false; +    } + +    /** +      * Combind all segments into a single Uint8Array and then append them +      * to the destination buffer +      */ +  }, { +    key: 'concatAndAppendSegments_', +    value: function concatAndAppendSegments_(segmentObj, destinationBuffer) { +      var offset = 0; +      var tempBuffer = undefined; + +      if (segmentObj.bytes) { +        tempBuffer = new Uint8Array(segmentObj.bytes); + +        // Combine the individual segments into one large typed-array +        segmentObj.segments.forEach(function (segment) { +          tempBuffer.set(segment, offset); +          offset += segment.byteLength; +        }); + +        destinationBuffer.appendBuffer(tempBuffer); +      } +    } + +    // abort any sourceBuffer actions and throw out any un-appended data +  }, { +    key: 'abort', +    value: function abort() { +      if (this.videoBuffer_) { +        this.videoBuffer_.abort(); +      } +      if (this.audioBuffer_) { +        this.audioBuffer_.abort(); +      } +      if (this.transmuxer_) { +        this.transmuxer_.postMessage({ action: 'reset' }); +      } +      this.pendingBuffers_.length = 0; +      this.bufferUpdating_ = false; +    } +  }]); + +  return VirtualSourceBuffer; +})(_videoJs2['default'].EventTarget); + +exports['default'] = VirtualSourceBuffer; +module.exports = exports['default']; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./add-text-track-data":20,"./create-text-tracks-if-necessary":21,"./remove-cues-from-track":26,"./transmuxer-worker":27,"webworkify":50}],30:[function(require,module,exports){ +/** + * mux.js + * + * Copyright (c) 2016 Brightcove + * All rights reserved. + * + * A stream-based aac to mp4 converter. This utility can be used to + * deliver mp4s to a SourceBuffer on platforms that support native + * Media Source Extensions. + */ +'use strict'; +var Stream = require('../utils/stream.js'); + +// Constants +var AacStream; + +/** + * Splits an incoming stream of binary data into ADTS and ID3 Frames. + */ + +AacStream = function() { +  var +    everything, +    receivedTimeStamp = false, +    timeStamp = 0; + +  AacStream.prototype.init.call(this); + +  this.setTimestamp = function (timestamp) { +    timeStamp = timestamp; +  }; + +  this.parseId3TagSize = function(header, byteIndex) { +    var +      returnSize = (header[byteIndex + 6] << 21) | +                   (header[byteIndex + 7] << 14) | +                   (header[byteIndex + 8] << 7) | +                   (header[byteIndex + 9]), +      flags = header[byteIndex + 5], +      footerPresent = (flags & 16) >> 4; + +    if (footerPresent) { +      return returnSize + 20; +    } +    return returnSize + 10; +  }; + +  this.parseAdtsSize = function(header, byteIndex) { +    var +      lowThree = (header[byteIndex + 5] & 0xE0) >> 5, +      middle = header[byteIndex + 4] << 3, +      highTwo = header[byteIndex + 3] & 0x3 << 11; + +    return (highTwo | middle) | lowThree; +  }; + +  this.push = function(bytes) { +    var +      frameSize = 0, +      byteIndex = 0, +      chunk, +      packet, +      tempLength; + +    // If there are bytes remaining from the last segment, prepend them to the +    // bytes that were pushed in +    if (everything !== undefined && everything.length) { +      tempLength = everything.length; +      everything = new Uint8Array(bytes.byteLength + tempLength); +      everything.set(everything.subarray(0, tempLength)); +      everything.set(bytes, tempLength); +    } else { +      everything = bytes; +    } + +    while (everything.length - byteIndex >= 10) { +      if ((everything[byteIndex] === 'I'.charCodeAt(0)) && +          (everything[byteIndex + 1] === 'D'.charCodeAt(0)) && +          (everything[byteIndex + 2] === '3'.charCodeAt(0))) { + +        //check framesize +        frameSize = this.parseId3TagSize(everything, byteIndex); +        //we have enough in the buffer to emit a full packet +        if (frameSize > everything.length) { +          break; +        } +        chunk = { +          type: 'timed-metadata', +          data: everything.subarray(byteIndex, byteIndex + frameSize) +        }; +        this.trigger('data', chunk); +        byteIndex += frameSize; +        continue; +      } else if ((everything[byteIndex] & 0xff === 0xff) && +                 ((everything[byteIndex + 1] & 0xf0) === 0xf0)) { +        frameSize = this.parseAdtsSize(everything, byteIndex); + +        if (frameSize > everything.length) { +          break; +        } +        packet = { +          type: 'audio', +          data: everything.subarray(byteIndex, byteIndex + frameSize), +          pts: timeStamp, +          dts: timeStamp, +        }; +        this.trigger('data', packet); +        byteIndex += frameSize; +        continue; +      } +      byteIndex++; +    } +  }; +}; + +AacStream.prototype = new Stream(); + + + +module.exports = AacStream; + +},{"../utils/stream.js":49}],31:[function(require,module,exports){ +'use strict'; + +var Stream = require('../utils/stream.js'); + +var AdtsStream; + +var +  ADTS_SAMPLING_FREQUENCIES = [ +    96000, +    88200, +    64000, +    48000, +    44100, +    32000, +    24000, +    22050, +    16000, +    12000, +    11025, +    8000, +    7350 +  ]; + +/* + * Accepts a ElementaryStream and emits data events with parsed + * AAC Audio Frames of the individual packets. Input audio in ADTS + * format is unpacked and re-emitted as AAC frames. + * + * @see http://wiki.multimedia.cx/index.php?title=ADTS + * @see http://wiki.multimedia.cx/?title=Understanding_AAC + */ +AdtsStream = function() { +  var self, buffer; + +  AdtsStream.prototype.init.call(this); + +  self = this; + +  this.push = function(packet) { +    var +      i = 0, +      frameNum = 0, +      frameLength, +      protectionSkipBytes, +      frameEnd, +      oldBuffer, +      numFrames, +      sampleCount, +      adtsFrameDuration; + +    if (packet.type !== 'audio') { +      // ignore non-audio data +      return; +    } + +    // Prepend any data in the buffer to the input data so that we can parse +    // aac frames the cross a PES packet boundary +    if (buffer) { +      oldBuffer = buffer; +      buffer = new Uint8Array(oldBuffer.byteLength + packet.data.byteLength); +      buffer.set(oldBuffer); +      buffer.set(packet.data, oldBuffer.byteLength); +    } else { +      buffer = packet.data; +    } + +    // unpack any ADTS frames which have been fully received +    // for details on the ADTS header, see http://wiki.multimedia.cx/index.php?title=ADTS +    while (i + 5 < buffer.length) { + +      // Loook for the start of an ADTS header.. +      if (buffer[i] !== 0xFF || (buffer[i + 1] & 0xF6) !== 0xF0) { +        // If a valid header was not found,  jump one forward and attempt to +        // find a valid ADTS header starting at the next byte +        i++; +        continue; +      } + +      // The protection skip bit tells us if we have 2 bytes of CRC data at the +      // end of the ADTS header +      protectionSkipBytes = (~buffer[i + 1] & 0x01) * 2; + +      // Frame length is a 13 bit integer starting 16 bits from the +      // end of the sync sequence +      frameLength = ((buffer[i + 3] & 0x03) << 11) | +        (buffer[i + 4] << 3) | +        ((buffer[i + 5] & 0xe0) >> 5); + +      sampleCount = ((buffer[i + 6] & 0x03) + 1) * 1024; +      adtsFrameDuration = (sampleCount * 90000) / +        ADTS_SAMPLING_FREQUENCIES[(buffer[i + 2] & 0x3c) >>> 2]; + +      frameEnd = i + frameLength; + +      // If we don't have enough data to actually finish this ADTS frame, return +      // and wait for more data +      if (buffer.byteLength < frameEnd) { +        return; +      } + +      // Otherwise, deliver the complete AAC frame +      this.trigger('data', { +        pts: packet.pts + (frameNum * adtsFrameDuration), +        dts: packet.dts + (frameNum * adtsFrameDuration), +        sampleCount: sampleCount, +        audioobjecttype: ((buffer[i + 2] >>> 6) & 0x03) + 1, +        channelcount: ((buffer[i + 2] & 1) << 3) | +          ((buffer[i + 3] & 0xc0) >>> 6), +        samplerate: ADTS_SAMPLING_FREQUENCIES[(buffer[i + 2] & 0x3c) >>> 2], +        samplingfrequencyindex: (buffer[i + 2] & 0x3c) >>> 2, +        // assume ISO/IEC 14496-12 AudioSampleEntry default of 16 +        samplesize: 16, +        data: buffer.subarray(i + 7 + protectionSkipBytes, frameEnd) +      }); + +      // If the buffer is empty, clear it and return +      if (buffer.byteLength === frameEnd) { +        buffer = undefined; +        return; +      } + +      frameNum++; + +      // Remove the finished frame from the buffer and start the process again +      buffer = buffer.subarray(frameEnd); +    } +  }; +  this.flush = function() { +    this.trigger('done'); +  }; +}; + +AdtsStream.prototype = new Stream(); + +module.exports = AdtsStream; + +},{"../utils/stream.js":49}],32:[function(require,module,exports){ +'use strict'; + +var Stream = require('../utils/stream.js'); +var ExpGolomb = require('../utils/exp-golomb.js'); + +var H264Stream, NalByteStream; + +/** + * Accepts a NAL unit byte stream and unpacks the embedded NAL units. + */ +NalByteStream = function() { +  var +    syncPoint = 0, +    i, +    buffer; +  NalByteStream.prototype.init.call(this); + +  this.push = function(data) { +    var swapBuffer; + +    if (!buffer) { +      buffer = data.data; +    } else { +      swapBuffer = new Uint8Array(buffer.byteLength + data.data.byteLength); +      swapBuffer.set(buffer); +      swapBuffer.set(data.data, buffer.byteLength); +      buffer = swapBuffer; +    } + +    // Rec. ITU-T H.264, Annex B +    // scan for NAL unit boundaries + +    // a match looks like this: +    // 0 0 1 .. NAL .. 0 0 1 +    // ^ sync point        ^ i +    // or this: +    // 0 0 1 .. NAL .. 0 0 0 +    // ^ sync point        ^ i + +    // advance the sync point to a NAL start, if necessary +    for (; syncPoint < buffer.byteLength - 3; syncPoint++) { +      if (buffer[syncPoint + 2] === 1) { +        // the sync point is properly aligned +        i = syncPoint + 5; +        break; +      } +    } + +    while (i < buffer.byteLength) { +      // look at the current byte to determine if we've hit the end of +      // a NAL unit boundary +      switch (buffer[i]) { +      case 0: +        // skip past non-sync sequences +        if (buffer[i - 1] !== 0) { +          i += 2; +          break; +        } else if (buffer[i - 2] !== 0) { +          i++; +          break; +        } + +        // deliver the NAL unit +        this.trigger('data', buffer.subarray(syncPoint + 3, i - 2)); + +        // drop trailing zeroes +        do { +          i++; +        } while (buffer[i] !== 1 && i < buffer.length); +        syncPoint = i - 2; +        i += 3; +        break; +      case 1: +        // skip past non-sync sequences +        if (buffer[i - 1] !== 0 || +            buffer[i - 2] !== 0) { +          i += 3; +          break; +        } + +        // deliver the NAL unit +        this.trigger('data', buffer.subarray(syncPoint + 3, i - 2)); +        syncPoint = i - 2; +        i += 3; +        break; +      default: +        // the current byte isn't a one or zero, so it cannot be part +        // of a sync sequence +        i += 3; +        break; +      } +    } +    // filter out the NAL units that were delivered +    buffer = buffer.subarray(syncPoint); +    i -= syncPoint; +    syncPoint = 0; +  }; + +  this.flush = function() { +    // deliver the last buffered NAL unit +    if (buffer && buffer.byteLength > 3) { +      this.trigger('data', buffer.subarray(syncPoint + 3)); +    } +    // reset the stream state +    buffer = null; +    syncPoint = 0; +    this.trigger('done'); +  }; +}; +NalByteStream.prototype = new Stream(); + +/** + * Accepts input from a ElementaryStream and produces H.264 NAL unit data + * events. + */ +H264Stream = function() { +  var +    nalByteStream = new NalByteStream(), +    self, +    trackId, +    currentPts, +    currentDts, + +    discardEmulationPreventionBytes, +    readSequenceParameterSet, +    skipScalingList; + +  H264Stream.prototype.init.call(this); +  self = this; + +  this.push = function(packet) { +    if (packet.type !== 'video') { +      return; +    } +    trackId = packet.trackId; +    currentPts = packet.pts; +    currentDts = packet.dts; + +    nalByteStream.push(packet); +  }; + +  nalByteStream.on('data', function(data) { +    var +      event = { +        trackId: trackId, +        pts: currentPts, +        dts: currentDts, +        data: data +      }; + +    switch (data[0] & 0x1f) { +    case 0x05: +      event.nalUnitType = 'slice_layer_without_partitioning_rbsp_idr'; +      break; +    case 0x06: +      event.nalUnitType = 'sei_rbsp'; +      event.escapedRBSP = discardEmulationPreventionBytes(data.subarray(1)); +      break; +    case 0x07: +      event.nalUnitType = 'seq_parameter_set_rbsp'; +      event.escapedRBSP = discardEmulationPreventionBytes(data.subarray(1)); +      event.config = readSequenceParameterSet(event.escapedRBSP); +      break; +    case 0x08: +      event.nalUnitType = 'pic_parameter_set_rbsp'; +      break; +    case 0x09: +      event.nalUnitType = 'access_unit_delimiter_rbsp'; +      break; + +    default: +      break; +    } +    self.trigger('data', event); +  }); +  nalByteStream.on('done', function() { +    self.trigger('done'); +  }); + +  this.flush = function() { +    nalByteStream.flush(); +  }; + +  /** +   * Advance the ExpGolomb decoder past a scaling list. The scaling +   * list is optionally transmitted as part of a sequence parameter +   * set and is not relevant to transmuxing. +   * @param count {number} the number of entries in this scaling list +   * @param expGolombDecoder {object} an ExpGolomb pointed to the +   * start of a scaling list +   * @see Recommendation ITU-T H.264, Section 7.3.2.1.1.1 +   */ +  skipScalingList = function(count, expGolombDecoder) { +    var +      lastScale = 8, +      nextScale = 8, +      j, +      deltaScale; + +    for (j = 0; j < count; j++) { +      if (nextScale !== 0) { +        deltaScale = expGolombDecoder.readExpGolomb(); +        nextScale = (lastScale + deltaScale + 256) % 256; +      } + +      lastScale = (nextScale === 0) ? lastScale : nextScale; +    } +  }; + +  /** +   * Expunge any "Emulation Prevention" bytes from a "Raw Byte +   * Sequence Payload" +   * @param data {Uint8Array} the bytes of a RBSP from a NAL +   * unit +   * @return {Uint8Array} the RBSP without any Emulation +   * Prevention Bytes +   */ +  discardEmulationPreventionBytes = function(data) { +    var +      length = data.byteLength, +      emulationPreventionBytesPositions = [], +      i = 1, +      newLength, newData; + +    // Find all `Emulation Prevention Bytes` +    while (i < length - 2) { +      if (data[i] === 0 && data[i + 1] === 0 && data[i + 2] === 0x03) { +        emulationPreventionBytesPositions.push(i + 2); +        i += 2; +      } else { +        i++; +      } +    } + +    // If no Emulation Prevention Bytes were found just return the original +    // array +    if (emulationPreventionBytesPositions.length === 0) { +      return data; +    } + +    // Create a new array to hold the NAL unit data +    newLength = length - emulationPreventionBytesPositions.length; +    newData = new Uint8Array(newLength); +    var sourceIndex = 0; + +    for (i = 0; i < newLength; sourceIndex++, i++) { +      if (sourceIndex === emulationPreventionBytesPositions[0]) { +        // Skip this byte +        sourceIndex++; +        // Remove this position index +        emulationPreventionBytesPositions.shift(); +      } +      newData[i] = data[sourceIndex]; +    } + +    return newData; +  }; + +  /** +   * Read a sequence parameter set and return some interesting video +   * properties. A sequence parameter set is the H264 metadata that +   * describes the properties of upcoming video frames. +   * @param data {Uint8Array} the bytes of a sequence parameter set +   * @return {object} an object with configuration parsed from the +   * sequence parameter set, including the dimensions of the +   * associated video frames. +   */ +  readSequenceParameterSet = function(data) { +    var +      frameCropLeftOffset = 0, +      frameCropRightOffset = 0, +      frameCropTopOffset = 0, +      frameCropBottomOffset = 0, +      expGolombDecoder, profileIdc, levelIdc, profileCompatibility, +      chromaFormatIdc, picOrderCntType, +      numRefFramesInPicOrderCntCycle, picWidthInMbsMinus1, +      picHeightInMapUnitsMinus1, +      frameMbsOnlyFlag, +      scalingListCount, +      i; + +    expGolombDecoder = new ExpGolomb(data); +    profileIdc = expGolombDecoder.readUnsignedByte(); // profile_idc +    profileCompatibility = expGolombDecoder.readUnsignedByte(); // constraint_set[0-5]_flag +    levelIdc = expGolombDecoder.readUnsignedByte(); // level_idc u(8) +    expGolombDecoder.skipUnsignedExpGolomb(); // seq_parameter_set_id + +    // some profiles have more optional data we don't need +    if (profileIdc === 100 || +        profileIdc === 110 || +        profileIdc === 122 || +        profileIdc === 244 || +        profileIdc ===  44 || +        profileIdc ===  83 || +        profileIdc ===  86 || +        profileIdc === 118 || +        profileIdc === 128 || +        profileIdc === 138 || +        profileIdc === 139 || +        profileIdc === 134) { +      chromaFormatIdc = expGolombDecoder.readUnsignedExpGolomb(); +      if (chromaFormatIdc === 3) { +        expGolombDecoder.skipBits(1); // separate_colour_plane_flag +      } +      expGolombDecoder.skipUnsignedExpGolomb(); // bit_depth_luma_minus8 +      expGolombDecoder.skipUnsignedExpGolomb(); // bit_depth_chroma_minus8 +      expGolombDecoder.skipBits(1); // qpprime_y_zero_transform_bypass_flag +      if (expGolombDecoder.readBoolean()) { // seq_scaling_matrix_present_flag +        scalingListCount = (chromaFormatIdc !== 3) ? 8 : 12; +        for (i = 0; i < scalingListCount; i++) { +          if (expGolombDecoder.readBoolean()) { // seq_scaling_list_present_flag[ i ] +            if (i < 6) { +              skipScalingList(16, expGolombDecoder); +            } else { +              skipScalingList(64, expGolombDecoder); +            } +          } +        } +      } +    } + +    expGolombDecoder.skipUnsignedExpGolomb(); // log2_max_frame_num_minus4 +    picOrderCntType = expGolombDecoder.readUnsignedExpGolomb(); + +    if (picOrderCntType === 0) { +      expGolombDecoder.readUnsignedExpGolomb(); //log2_max_pic_order_cnt_lsb_minus4 +    } else if (picOrderCntType === 1) { +      expGolombDecoder.skipBits(1); // delta_pic_order_always_zero_flag +      expGolombDecoder.skipExpGolomb(); // offset_for_non_ref_pic +      expGolombDecoder.skipExpGolomb(); // offset_for_top_to_bottom_field +      numRefFramesInPicOrderCntCycle = expGolombDecoder.readUnsignedExpGolomb(); +      for(i = 0; i < numRefFramesInPicOrderCntCycle; i++) { +        expGolombDecoder.skipExpGolomb(); // offset_for_ref_frame[ i ] +      } +    } + +    expGolombDecoder.skipUnsignedExpGolomb(); // max_num_ref_frames +    expGolombDecoder.skipBits(1); // gaps_in_frame_num_value_allowed_flag + +    picWidthInMbsMinus1 = expGolombDecoder.readUnsignedExpGolomb(); +    picHeightInMapUnitsMinus1 = expGolombDecoder.readUnsignedExpGolomb(); + +    frameMbsOnlyFlag = expGolombDecoder.readBits(1); +    if (frameMbsOnlyFlag === 0) { +      expGolombDecoder.skipBits(1); // mb_adaptive_frame_field_flag +    } + +    expGolombDecoder.skipBits(1); // direct_8x8_inference_flag +    if (expGolombDecoder.readBoolean()) { // frame_cropping_flag +      frameCropLeftOffset = expGolombDecoder.readUnsignedExpGolomb(); +      frameCropRightOffset = expGolombDecoder.readUnsignedExpGolomb(); +      frameCropTopOffset = expGolombDecoder.readUnsignedExpGolomb(); +      frameCropBottomOffset = expGolombDecoder.readUnsignedExpGolomb(); +    } + +    return { +      profileIdc: profileIdc, +      levelIdc: levelIdc, +      profileCompatibility: profileCompatibility, +      width: ((picWidthInMbsMinus1 + 1) * 16) - frameCropLeftOffset * 2 - frameCropRightOffset * 2, +      height: ((2 - frameMbsOnlyFlag) * (picHeightInMapUnitsMinus1 + 1) * 16) - (frameCropTopOffset * 2) - (frameCropBottomOffset * 2) +    }; +  }; + +}; +H264Stream.prototype = new Stream(); + +module.exports = { +  H264Stream: H264Stream, +  NalByteStream: NalByteStream, +}; + +},{"../utils/exp-golomb.js":48,"../utils/stream.js":49}],33:[function(require,module,exports){ +module.exports = { +  adts: require('./adts'), +  h264: require('./h264'), +}; + +},{"./adts":31,"./h264":32}],34:[function(require,module,exports){ +/** + * An object that stores the bytes of an FLV tag and methods for + * querying and manipulating that data. + * @see http://download.macromedia.com/f4v/video_file_format_spec_v10_1.pdf + */ +'use strict'; + +var FlvTag; + +// (type:uint, extraData:Boolean = false) extends ByteArray +FlvTag = function(type, extraData) { +  var +    // Counter if this is a metadata tag, nal start marker if this is a video +    // tag. unused if this is an audio tag +    adHoc = 0, // :uint + +    // The default size is 16kb but this is not enough to hold iframe +    // data and the resizing algorithm costs a bit so we create a larger +    // starting buffer for video tags +    bufferStartSize = 16384, + +    // checks whether the FLV tag has enough capacity to accept the proposed +    // write and re-allocates the internal buffers if necessary +    prepareWrite = function(flv, count) { +      var +        bytes, +        minLength = flv.position + count; +      if (minLength < flv.bytes.byteLength) { +        // there's enough capacity so do nothing +        return; +      } + +      // allocate a new buffer and copy over the data that will not be modified +      bytes = new Uint8Array(minLength * 2); +      bytes.set(flv.bytes.subarray(0, flv.position), 0); +      flv.bytes = bytes; +      flv.view = new DataView(flv.bytes.buffer); +    }, + +    // commonly used metadata properties +    widthBytes = FlvTag.widthBytes || new Uint8Array('width'.length), +    heightBytes = FlvTag.heightBytes || new Uint8Array('height'.length), +    videocodecidBytes = FlvTag.videocodecidBytes || new Uint8Array('videocodecid'.length), +    i; + +  if (!FlvTag.widthBytes) { +    // calculating the bytes of common metadata names ahead of time makes the +    // corresponding writes faster because we don't have to loop over the +    // characters +    // re-test with test/perf.html if you're planning on changing this +    for (i = 0; i < 'width'.length; i++) { +      widthBytes[i] = 'width'.charCodeAt(i); +    } +    for (i = 0; i < 'height'.length; i++) { +      heightBytes[i] = 'height'.charCodeAt(i); +    } +    for (i = 0; i < 'videocodecid'.length; i++) { +      videocodecidBytes[i] = 'videocodecid'.charCodeAt(i); +    } + +    FlvTag.widthBytes = widthBytes; +    FlvTag.heightBytes = heightBytes; +    FlvTag.videocodecidBytes = videocodecidBytes; +  } + +  this.keyFrame = false; // :Boolean + +  switch(type) { +  case FlvTag.VIDEO_TAG: +    this.length = 16; +    // Start the buffer at 256k +    bufferStartSize *= 6; +    break; +  case FlvTag.AUDIO_TAG: +    this.length = 13; +    this.keyFrame = true; +    break; +  case FlvTag.METADATA_TAG: +    this.length = 29; +    this.keyFrame = true; +    break; +  default: +    throw("Error Unknown TagType"); +  } + +  this.bytes = new Uint8Array(bufferStartSize); +  this.view = new DataView(this.bytes.buffer); +  this.bytes[0] = type; +  this.position = this.length; +  this.keyFrame = extraData; // Defaults to false + +  // presentation timestamp +  this.pts = 0; +  // decoder timestamp +  this.dts = 0; + +  // ByteArray#writeBytes(bytes:ByteArray, offset:uint = 0, length:uint = 0) +  this.writeBytes = function(bytes, offset, length) { +    var +      start = offset || 0, +      end; +    length = length || bytes.byteLength; +    end = start + length; + +    prepareWrite(this, length); +    this.bytes.set(bytes.subarray(start, end), this.position); + +    this.position += length; +    this.length = Math.max(this.length, this.position); +  }; + +  // ByteArray#writeByte(value:int):void +  this.writeByte = function(byte) { +    prepareWrite(this, 1); +    this.bytes[this.position] = byte; +    this.position++; +    this.length = Math.max(this.length, this.position); +  }; + +  // ByteArray#writeShort(value:int):void +  this.writeShort = function(short) { +    prepareWrite(this, 2); +    this.view.setUint16(this.position, short); +    this.position += 2; +    this.length = Math.max(this.length, this.position); +  }; + +  // Negative index into array +  // (pos:uint):int +  this.negIndex = function(pos) { +    return this.bytes[this.length - pos]; +  }; + +  // The functions below ONLY work when this[0] == VIDEO_TAG. +  // We are not going to check for that because we dont want the overhead +  // (nal:ByteArray = null):int +  this.nalUnitSize = function() { +    if (adHoc === 0) { +      return 0; +    } + +    return this.length - (adHoc + 4); +  }; + +  this.startNalUnit = function() { +    // remember position and add 4 bytes +    if (adHoc > 0) { +      throw new Error("Attempted to create new NAL wihout closing the old one"); +    } + +    // reserve 4 bytes for nal unit size +    adHoc = this.length; +    this.length += 4; +    this.position = this.length; +  }; + +  // (nal:ByteArray = null):void +  this.endNalUnit = function(nalContainer) { +    var +      nalStart, // :uint +      nalLength; // :uint + +    // Rewind to the marker and write the size +    if (this.length === adHoc + 4) { +      // we started a nal unit, but didnt write one, so roll back the 4 byte size value +      this.length -= 4; +    } else if (adHoc > 0) { +      nalStart = adHoc + 4; +      nalLength = this.length - nalStart; + +      this.position = adHoc; +      this.view.setUint32(this.position, nalLength); +      this.position = this.length; + +      if (nalContainer) { +        // Add the tag to the NAL unit +        nalContainer.push(this.bytes.subarray(nalStart, nalStart + nalLength)); +      } +    } + +    adHoc = 0; +  }; + +  /** +   * Write out a 64-bit floating point valued metadata property. This method is +   * called frequently during a typical parse and needs to be fast. +   */ +  // (key:String, val:Number):void +  this.writeMetaDataDouble = function(key, val) { +    var i; +    prepareWrite(this, 2 + key.length + 9); + +    // write size of property name +    this.view.setUint16(this.position, key.length); +    this.position += 2; + +    // this next part looks terrible but it improves parser throughput by +    // 10kB/s in my testing + +    // write property name +    if (key === 'width') { +      this.bytes.set(widthBytes, this.position); +      this.position += 5; +    } else if (key === 'height') { +      this.bytes.set(heightBytes, this.position); +      this.position += 6; +    } else if (key === 'videocodecid') { +      this.bytes.set(videocodecidBytes, this.position); +      this.position += 12; +    } else { +      for (i = 0; i < key.length; i++) { +        this.bytes[this.position] = key.charCodeAt(i); +        this.position++; +      } +    } + +    // skip null byte +    this.position++; + +    // write property value +    this.view.setFloat64(this.position, val); +    this.position += 8; + +    // update flv tag length +    this.length = Math.max(this.length, this.position); +    ++adHoc; +  }; + +  // (key:String, val:Boolean):void +  this.writeMetaDataBoolean = function(key, val) { +    var i; +    prepareWrite(this, 2); +    this.view.setUint16(this.position, key.length); +    this.position += 2; +    for (i = 0; i < key.length; i++) { +      // if key.charCodeAt(i) >= 255, handle error +      prepareWrite(this, 1); +      this.bytes[this.position] = key.charCodeAt(i); +      this.position++; +    } +    prepareWrite(this, 2); +    this.view.setUint8(this.position, 0x01); +    this.position++; +    this.view.setUint8(this.position, val ? 0x01 : 0x00); +    this.position++; +    this.length = Math.max(this.length, this.position); +    ++adHoc; +  }; + +  // ():ByteArray +  this.finalize = function() { +    var +      dtsDelta, // :int +      len; // :int + +    switch(this.bytes[0]) { +      // Video Data +    case FlvTag.VIDEO_TAG: +      this.bytes[11] = ((this.keyFrame || extraData) ? 0x10 : 0x20 ) | 0x07; // We only support AVC, 1 = key frame (for AVC, a seekable frame), 2 = inter frame (for AVC, a non-seekable frame) +      this.bytes[12] = extraData ?  0x00 : 0x01; + +      dtsDelta = this.pts - this.dts; +      this.bytes[13] = (dtsDelta & 0x00FF0000) >>> 16; +      this.bytes[14] = (dtsDelta & 0x0000FF00) >>>  8; +      this.bytes[15] = (dtsDelta & 0x000000FF) >>>  0; +      break; + +    case FlvTag.AUDIO_TAG: +      this.bytes[11] = 0xAF; // 44 kHz, 16-bit stereo +      this.bytes[12] = extraData ? 0x00 : 0x01; +      break; + +    case FlvTag.METADATA_TAG: +      this.position = 11; +      this.view.setUint8(this.position, 0x02); // String type +      this.position++; +      this.view.setUint16(this.position, 0x0A); // 10 Bytes +      this.position += 2; +      // set "onMetaData" +      this.bytes.set([0x6f, 0x6e, 0x4d, 0x65, +                      0x74, 0x61, 0x44, 0x61, +                      0x74, 0x61], this.position); +      this.position += 10; +      this.bytes[this.position] = 0x08; // Array type +      this.position++; +      this.view.setUint32(this.position, adHoc); +      this.position = this.length; +      this.bytes.set([0, 0, 9], this.position); +      this.position += 3; // End Data Tag +      this.length = this.position; +      break; +    } + +    len = this.length - 11; + +    // write the DataSize field +    this.bytes[ 1] = (len & 0x00FF0000) >>> 16; +    this.bytes[ 2] = (len & 0x0000FF00) >>>  8; +    this.bytes[ 3] = (len & 0x000000FF) >>>  0; +    // write the Timestamp +    this.bytes[ 4] = (this.dts & 0x00FF0000) >>> 16; +    this.bytes[ 5] = (this.dts & 0x0000FF00) >>>  8; +    this.bytes[ 6] = (this.dts & 0x000000FF) >>>  0; +    this.bytes[ 7] = (this.dts & 0xFF000000) >>> 24; +    // write the StreamID +    this.bytes[ 8] = 0; +    this.bytes[ 9] = 0; +    this.bytes[10] = 0; + +    // Sometimes we're at the end of the view and have one slot to write a +    // uint32, so, prepareWrite of count 4, since, view is uint8 +    prepareWrite(this, 4); +    this.view.setUint32(this.length, this.length); +    this.length += 4; +    this.position += 4; + +    // trim down the byte buffer to what is actually being used +    this.bytes = this.bytes.subarray(0, this.length); +    this.frameTime = FlvTag.frameTime(this.bytes); +    // if bytes.bytelength isn't equal to this.length, handle error +    return this; +  }; +}; + +FlvTag.AUDIO_TAG = 0x08; // == 8, :uint +FlvTag.VIDEO_TAG = 0x09; // == 9, :uint +FlvTag.METADATA_TAG = 0x12; // == 18, :uint + +// (tag:ByteArray):Boolean { +FlvTag.isAudioFrame = function(tag) { +  return FlvTag.AUDIO_TAG === tag[0]; +}; + +// (tag:ByteArray):Boolean { +FlvTag.isVideoFrame = function(tag) { +  return FlvTag.VIDEO_TAG === tag[0]; +}; + +// (tag:ByteArray):Boolean { +FlvTag.isMetaData = function(tag) { +  return FlvTag.METADATA_TAG === tag[0]; +}; + +// (tag:ByteArray):Boolean { +FlvTag.isKeyFrame = function(tag) { +  if (FlvTag.isVideoFrame(tag)) { +    return tag[11] === 0x17; +  } + +  if (FlvTag.isAudioFrame(tag)) { +    return true; +  } + +  if (FlvTag.isMetaData(tag)) { +    return true; +  } + +  return false; +}; + +// (tag:ByteArray):uint { +FlvTag.frameTime = function(tag) { +  var pts = tag[ 4] << 16; // :uint +  pts |= tag[ 5] <<  8; +  pts |= tag[ 6] <<  0; +  pts |= tag[ 7] << 24; +  return pts; +}; + +module.exports = FlvTag; + +},{}],35:[function(require,module,exports){ +module.exports = { +  tag: require('./flv-tag'), +  Transmuxer: require('./transmuxer'), +  tools: require('../tools/flv-inspector'), +}; + +},{"../tools/flv-inspector":46,"./flv-tag":34,"./transmuxer":36}],36:[function(require,module,exports){ +'use strict'; + +var Stream = require('../utils/stream.js'); +var FlvTag = require('./flv-tag.js'); +var m2ts = require('../m2ts/m2ts.js'); +var AdtsStream = require('../codecs/adts.js'); +var H264Stream = require('../codecs/h264').H264Stream; + +var +  MetadataStream, +  Transmuxer, +  VideoSegmentStream, +  AudioSegmentStream, +  CoalesceStream, +  collectTimelineInfo, +  metaDataTag, +  extraDataTag; + +/** + * Store information about the start and end of the tracka and the + * duration for each frame/sample we process in order to calculate + * the baseMediaDecodeTime + */ +collectTimelineInfo = function (track, data) { +  if (typeof data.pts === 'number') { +    if (track.timelineStartInfo.pts === undefined) { +      track.timelineStartInfo.pts = data.pts; +    } else { +      track.timelineStartInfo.pts = +        Math.min(track.timelineStartInfo.pts, data.pts); +    } +  } + +  if (typeof data.dts === 'number') { +    if (track.timelineStartInfo.dts === undefined) { +      track.timelineStartInfo.dts = data.dts; +    } else { +      track.timelineStartInfo.dts = +        Math.min(track.timelineStartInfo.dts, data.dts); +    } +  } +}; + +metaDataTag = function(track, pts) { +  var +    tag = new FlvTag(FlvTag.METADATA_TAG); // :FlvTag + +  tag.dts = pts; +  tag.pts = pts; + +  tag.writeMetaDataDouble("videocodecid", 7); +  tag.writeMetaDataDouble("width", track.width); +  tag.writeMetaDataDouble("height", track.height); + +  return tag; +}; + +extraDataTag = function(track, pts) { +  var +    i, +    tag = new FlvTag(FlvTag.VIDEO_TAG, true); + +  tag.dts = pts; +  tag.pts = pts; + +  tag.writeByte(0x01);// version +  tag.writeByte(track.profileIdc);// profile +  tag.writeByte(track.profileCompatibility);// compatibility +  tag.writeByte(track.levelIdc);// level +  tag.writeByte(0xFC | 0x03); // reserved (6 bits), NULA length size - 1 (2 bits) +  tag.writeByte(0xE0 | 0x01 ); // reserved (3 bits), num of SPS (5 bits) +  tag.writeShort( track.sps[0].length ); // data of SPS +  tag.writeBytes( track.sps[0] ); // SPS + +  tag.writeByte(track.pps.length); // num of PPS (will there ever be more that 1 PPS?) +  for (i = 0 ; i < track.pps.length ; ++i) { +    tag.writeShort(track.pps[i].length); // 2 bytes for length of PPS +    tag.writeBytes(track.pps[i]); // data of PPS +  } + +  return tag; +}; + +/** + * Constructs a single-track, media segment from AAC data + * events. The output of this stream can be fed to flash. + */ +AudioSegmentStream = function(track) { +  var +    adtsFrames = [], +    adtsFramesLength = 0, +    sequenceNumber = 0, +    earliestAllowedDts = 0, +    oldExtraData; + +  AudioSegmentStream.prototype.init.call(this); + +  this.push = function(data) { +    collectTimelineInfo(track, data); + +    if (track && track.channelcount === undefined) { +      track.audioobjecttype = data.audioobjecttype; +      track.channelcount = data.channelcount; +      track.samplerate = data.samplerate; +      track.samplingfrequencyindex = data.samplingfrequencyindex; +      track.samplesize = data.samplesize; +      track.extraData = (track.audioobjecttype << 11) | +                        (track.samplingfrequencyindex << 7) | +                        (track.channelcount << 3); +    } + +    data.pts = Math.round(data.pts / 90); +    data.dts = Math.round(data.dts / 90); + +    // buffer audio data until end() is called +    adtsFrames.push(data); +  }; + +  this.flush = function() { +    var currentFrame, adtsFrame, deltaDts,lastMetaPts, tags = []; +    // return early if no audio data has been observed +    if (adtsFrames.length === 0) { +      this.trigger('done'); +      return; +    } + +    lastMetaPts = -Infinity; + +    while (adtsFrames.length) { +      currentFrame = adtsFrames.shift(); + +      // write out metadata tags every 1 second so that the decoder +      // is re-initialized quickly after seeking into a different +      // audio configuration +      if (track.extraData !== oldExtraData || currentFrame.pts - lastMetaPts >= 1000) { +       adtsFrame = new FlvTag(FlvTag.METADATA_TAG); +        adtsFrame.pts = currentFrame.pts; +        adtsFrame.dts = currentFrame.dts; + +        // AAC is always 10 +        adtsFrame.writeMetaDataDouble("audiocodecid", 10); +        adtsFrame.writeMetaDataBoolean("stereo", 2 === track.channelcount); +        adtsFrame.writeMetaDataDouble ("audiosamplerate", track.samplerate); +        // Is AAC always 16 bit? +        adtsFrame.writeMetaDataDouble ("audiosamplesize", 16); + +        tags.push(adtsFrame); + +        oldExtraData = track.extraData; + +        adtsFrame = new FlvTag(FlvTag.AUDIO_TAG, true); +        // For audio, DTS is always the same as PTS. We want to set the DTS +        // however so we can compare with video DTS to determine approximate +        // packet order +        adtsFrame.pts = currentFrame.pts; +        adtsFrame.dts = currentFrame.dts; + +        adtsFrame.view.setUint16(adtsFrame.position, track.extraData); +        adtsFrame.position += 2; +        adtsFrame.length = Math.max(adtsFrame.length, adtsFrame.position); + +        tags.push(adtsFrame); + +        lastMetaPts = currentFrame.pts; +      } +      adtsFrame = new FlvTag(FlvTag.AUDIO_TAG); +      adtsFrame.pts = currentFrame.pts; +      adtsFrame.dts = currentFrame.dts; + +      adtsFrame.writeBytes(currentFrame.data); + +      tags.push(adtsFrame); +    } + +    oldExtraData = null; +    this.trigger('data', {track: track, tags: tags}); + +    this.trigger('done'); +  }; +}; +AudioSegmentStream.prototype = new Stream(); + +/** + * Store FlvTags for the h264 stream + * @param track {object} track metadata configuration + */ +VideoSegmentStream = function(track) { +  var +    sequenceNumber = 0, +    nalUnits = [], +    nalUnitsLength = 0, +    config, +    h264Frame; +  VideoSegmentStream.prototype.init.call(this); + +  this.finishFrame = function(tags, frame) { +    if (!frame) { +      return; +    } +    // Check if keyframe and the length of tags. +    // This makes sure we write metadata on the first frame of a segment. +    if (config && track && track.newMetadata && +        (frame.keyFrame || tags.length === 0)) { +      // Push extra data on every IDR frame in case we did a stream change + seek +      tags.push(metaDataTag(config, frame.pts)); +      tags.push(extraDataTag(track, frame.pts)); +      track.newMetadata = false; +    } + +    frame.endNalUnit(); +    tags.push(frame); +  }; + +  this.push = function(data) { +    collectTimelineInfo(track, data); + +    data.pts = Math.round(data.pts / 90); +    data.dts = Math.round(data.dts / 90); + +    // buffer video until flush() is called +    nalUnits.push(data); +  }; + +  this.flush = function() { +    var +      currentNal, +      tags = []; + +    // Throw away nalUnits at the start of the byte stream until we find +    // the first AUD +    while (nalUnits.length) { +      if (nalUnits[0].nalUnitType === 'access_unit_delimiter_rbsp') { +        break; +      } +      nalUnits.shift(); +    } + +    // return early if no video data has been observed +    if (nalUnits.length === 0) { +      this.trigger('done'); +      return; +    } + +    while (nalUnits.length) { +      currentNal = nalUnits.shift(); + +      // record the track config +      if (currentNal.nalUnitType === 'seq_parameter_set_rbsp') { +        track.newMetadata = true; +        config = currentNal.config; +        track.width = config.width; +        track.height = config.height; +        track.sps = [currentNal.data]; +        track.profileIdc = config.profileIdc; +        track.levelIdc = config.levelIdc; +        track.profileCompatibility = config.profileCompatibility; +        h264Frame.endNalUnit(); +      } else if (currentNal.nalUnitType === 'pic_parameter_set_rbsp') { +        track.newMetadata = true; +        track.pps = [currentNal.data]; +        h264Frame.endNalUnit(); +      } else if (currentNal.nalUnitType === 'access_unit_delimiter_rbsp') { +        if (h264Frame) { +          this.finishFrame(tags, h264Frame); +        } +        h264Frame = new FlvTag(FlvTag.VIDEO_TAG); +        h264Frame.pts = currentNal.pts; +        h264Frame.dts = currentNal.dts; +      } else { +        if (currentNal.nalUnitType === 'slice_layer_without_partitioning_rbsp_idr') { +          // the current sample is a key frame +          h264Frame.keyFrame = true; +        } +        h264Frame.endNalUnit(); +      } +      h264Frame.startNalUnit(); +      h264Frame.writeBytes(currentNal.data); +    } +    if (h264Frame) { +      this.finishFrame(tags, h264Frame); +    } + +    this.trigger('data', {track: track, tags: tags}); + +    // Continue with the flush process now +    this.trigger('done'); +  }; +}; + +VideoSegmentStream.prototype = new Stream(); + +/** + * The final stage of the transmuxer that emits the flv tags + * for audio, video, and metadata. Also tranlates in time and + * outputs caption data and id3 cues. + */ +CoalesceStream = function(options) { +  // Number of Tracks per output segment +  // If greater than 1, we combine multiple +  // tracks into a single segment +  this.numberOfTracks = 0; +  this.metadataStream = options.metadataStream; + +  this.videoTags = []; +  this.audioTags = []; +  this.videoTrack = null; +  this.audioTrack = null; +  this.pendingCaptions = []; +  this.pendingMetadata = []; +  this.pendingTracks = 0; + +  CoalesceStream.prototype.init.call(this); + +  // Take output from multiple +  this.push = function(output) { +    // buffer incoming captions until the associated video segment +    // finishes +    if (output.text) { +      return this.pendingCaptions.push(output); +    } +    // buffer incoming id3 tags until the final flush +    if (output.frames) { +      return this.pendingMetadata.push(output); +    } + +    if (output.track.type === 'video') { +      this.videoTrack = output.track; +      this.videoTags = output.tags; +      this.pendingTracks++; +    } +    if (output.track.type === 'audio') { +      this.audioTrack = output.track; +      this.audioTags = output.tags; +      this.pendingTracks++; +    } +  }; +}; + +CoalesceStream.prototype = new Stream(); +CoalesceStream.prototype.flush = function() { +  var +    id3, +    caption, +    i, +    timelineStartPts, +    event = { +      tags: {}, +      captions: [], +      metadata: [] +    }; + +  if (this.pendingTracks < this.numberOfTracks) { +    return; +  } + +  if (this.videoTrack) { +    timelineStartPts = this.videoTrack.timelineStartInfo.pts; +  } else if (this.audioTrack) { +    timelineStartPts = this.audioTrack.timelineStartInfo.pts; +  } + +  event.tags.videoTags = this.videoTags; +  event.tags.audioTags = this.audioTags; + +  // Translate caption PTS times into second offsets into the +  // video timeline for the segment +  for (i = 0; i < this.pendingCaptions.length; i++) { +    caption = this.pendingCaptions[i]; +    caption.startTime = caption.startPts - timelineStartPts; +    caption.startTime /= 90e3; +    caption.endTime = caption.endPts - timelineStartPts; +    caption.endTime /= 90e3; +    event.captions.push(caption); +  } + +  // Translate ID3 frame PTS times into second offsets into the +  // video timeline for the segment +  for (i = 0; i < this.pendingMetadata.length; i++) { +    id3 = this.pendingMetadata[i]; +    id3.cueTime = id3.pts - timelineStartPts; +    id3.cueTime /= 90e3; +    event.metadata.push(id3); +  } +  // We add this to every single emitted segment even though we only need +  // it for the first +  event.metadata.dispatchType = this.metadataStream.dispatchType; + +  // Reset stream state +  this.videoTrack = null; +  this.audioTrack = null; +  this.videoTags = []; +  this.audioTags = []; +  this.pendingCaptions.length = 0; +  this.pendingMetadata.length = 0; +  this.pendingTracks = 0; + +  // Emit the final segment +  this.trigger('data', event); + +  this.trigger('done'); +}; + +/** + * An object that incrementally transmuxes MPEG2 Trasport Stream + * chunks into an FLV. + */ +Transmuxer = function(options) { +  var +    self = this, +    videoTrack, +    audioTrack, + +    packetStream, parseStream, elementaryStream, +    adtsStream, h264Stream, +    videoSegmentStream, audioSegmentStream, captionStream, +    coalesceStream; + +  Transmuxer.prototype.init.call(this); + +  options = options || {}; + +  // expose the metadata stream +  this.metadataStream = new m2ts.MetadataStream(); + +  options.metadataStream = this.metadataStream; + +  // set up the parsing pipeline +  packetStream = new m2ts.TransportPacketStream(); +  parseStream = new m2ts.TransportParseStream(); +  elementaryStream = new m2ts.ElementaryStream(); +  adtsStream = new AdtsStream(); +  h264Stream = new H264Stream(); +  coalesceStream = new CoalesceStream(options); + +  // disassemble MPEG2-TS packets into elementary streams +  packetStream +    .pipe(parseStream) +    .pipe(elementaryStream); + +  // !!THIS ORDER IS IMPORTANT!! +  // demux the streams +  elementaryStream +    .pipe(h264Stream); +  elementaryStream +    .pipe(adtsStream); + +  elementaryStream +    .pipe(this.metadataStream) +    .pipe(coalesceStream); +  // if CEA-708 parsing is available, hook up a caption stream +  captionStream = new m2ts.CaptionStream(); +  h264Stream.pipe(captionStream) +    .pipe(coalesceStream); + +  // hook up the segment streams once track metadata is delivered +  elementaryStream.on('data', function(data) { +    var i, videoTrack, audioTrack; + +    if (data.type === 'metadata') { +      i = data.tracks.length; + +      // scan the tracks listed in the metadata +      while (i--) { +        if (data.tracks[i].type === 'video') { +          videoTrack = data.tracks[i]; +        } else if (data.tracks[i].type === 'audio') { +          audioTrack = data.tracks[i]; +        } +      } + +      // hook up the video segment stream to the first track with h264 data +      if (videoTrack && !videoSegmentStream) { +        coalesceStream.numberOfTracks++; +        videoSegmentStream = new VideoSegmentStream(videoTrack); + +        // Set up the final part of the video pipeline +        h264Stream +          .pipe(videoSegmentStream) +          .pipe(coalesceStream); +      } + +      if (audioTrack && !audioSegmentStream) { +        // hook up the audio segment stream to the first track with aac data +        coalesceStream.numberOfTracks++; +        audioSegmentStream = new AudioSegmentStream(audioTrack); + +        // Set up the final part of the audio pipeline +        adtsStream +          .pipe(audioSegmentStream) +          .pipe(coalesceStream); +      } +    } +  }); + +  // feed incoming data to the front of the parsing pipeline +  this.push = function(data) { +    packetStream.push(data); +  }; + +  // flush any buffered data +  this.flush = function() { +    // Start at the top of the pipeline and flush all pending work +    packetStream.flush(); +  }; + +  // Re-emit any data coming from the coalesce stream to the outside world +  coalesceStream.on('data', function (event) { +    self.trigger('data', event); +  }); + +  // Let the consumer know we have finished flushing the entire pipeline +  coalesceStream.on('done', function () { +    self.trigger('done'); +  }); + +  // For information on the FLV format, see +  // http://download.macromedia.com/f4v/video_file_format_spec_v10_1.pdf. +  // Technically, this function returns the header and a metadata FLV tag +  // if duration is greater than zero +  // duration in seconds +  // @return {object} the bytes of the FLV header as a Uint8Array +  this.getFlvHeader = function(duration, audio, video) { // :ByteArray { +    var +      headBytes = new Uint8Array(3 + 1 + 1 + 4), +      head = new DataView(headBytes.buffer), +      metadata, +      result, +      metadataLength; + +    // default arguments +    duration = duration || 0; +    audio = audio === undefined? true : audio; +    video = video === undefined? true : video; + +    // signature +    head.setUint8(0, 0x46); // 'F' +    head.setUint8(1, 0x4c); // 'L' +    head.setUint8(2, 0x56); // 'V' + +    // version +    head.setUint8(3, 0x01); + +    // flags +    head.setUint8(4, (audio ? 0x04 : 0x00) | (video ? 0x01 : 0x00)); + +    // data offset, should be 9 for FLV v1 +    head.setUint32(5, headBytes.byteLength); + +    // init the first FLV tag +    if (duration <= 0) { +      // no duration available so just write the first field of the first +      // FLV tag +      result = new Uint8Array(headBytes.byteLength + 4); +      result.set(headBytes); +      result.set([0, 0, 0, 0], headBytes.byteLength); +      return result; +    } + +    // write out the duration metadata tag +    metadata = new FlvTag(FlvTag.METADATA_TAG); +    metadata.pts = metadata.dts = 0; +    metadata.writeMetaDataDouble("duration", duration); +    metadataLength = metadata.finalize().length; +    result = new Uint8Array(headBytes.byteLength + metadataLength); +    result.set(headBytes); +    result.set(head.byteLength, metadataLength); + +    return result; +  }; +}; +Transmuxer.prototype = new Stream(); + +// forward compatibility +module.exports = Transmuxer; + +},{"../codecs/adts.js":31,"../codecs/h264":32,"../m2ts/m2ts.js":40,"../utils/stream.js":49,"./flv-tag.js":34}],37:[function(require,module,exports){ +'use strict'; + +var muxjs = { +  codecs: require('./codecs'), +  mp4: require('./mp4'), +  flv: require('./flv'), +  mp2t: require('./m2ts'), +}; +module.exports = muxjs; + +},{"./codecs":33,"./flv":35,"./m2ts":39,"./mp4":43}],38:[function(require,module,exports){ +/** + * mux.js + * + * Copyright (c) 2015 Brightcove + * All rights reserved. + * + * Reads in-band caption information from a video elementary + * stream. Captions must follow the CEA-708 standard for injection + * into an MPEG-2 transport streams. + * @see https://en.wikipedia.org/wiki/CEA-708 + */ + +'use strict'; + +// ----------------- +// Link To Transport +// ----------------- + +// Supplemental enhancement information (SEI) NAL units have a +// payload type field to indicate how they are to be +// interpreted. CEAS-708 caption content is always transmitted with +// payload type 0x04. +var USER_DATA_REGISTERED_ITU_T_T35 = 4, +    RBSP_TRAILING_BITS = 128, +    Stream = require('../utils/stream'); + +/** +  * Parse a supplemental enhancement information (SEI) NAL unit. +  * Stops parsing once a message of type ITU T T35 has been found. +  * +  * @param bytes {Uint8Array} the bytes of a SEI NAL unit +  * @return {object} the parsed SEI payload +  * @see Rec. ITU-T H.264, 7.3.2.3.1 +  */ +var parseSei = function(bytes) { +  var +    i = 0, +    result = { +      payloadType: -1, +      payloadSize: 0, +    }, +    payloadType = 0, +    payloadSize = 0; + +  // go through the sei_rbsp parsing each each individual sei_message +  while (i < bytes.byteLength) { +    // stop once we have hit the end of the sei_rbsp +    if (bytes[i] === RBSP_TRAILING_BITS) { +      break; +    } + +    // Parse payload type +    while (bytes[i] === 0xFF) { +      payloadType += 255; +      i++; +    } +    payloadType += bytes[i++]; + +    // Parse payload size +    while (bytes[i] === 0xFF) { +      payloadSize += 255; +      i++; +    } +    payloadSize += bytes[i++]; + +    // this sei_message is a 608/708 caption so save it and break +    // there can only ever be one caption message in a frame's sei +    if (!result.payload && payloadType === USER_DATA_REGISTERED_ITU_T_T35) { +      result.payloadType = payloadType; +      result.payloadSize = payloadSize; +      result.payload = bytes.subarray(i, i + payloadSize); +      break; +    } + +    // skip the payload and parse the next message +    i += payloadSize; +    payloadType = 0; +    payloadSize = 0; +  } + +  return result; +}; + +// see ANSI/SCTE 128-1 (2013), section 8.1 +var parseUserData = function(sei) { +  // itu_t_t35_contry_code must be 181 (United States) for +  // captions +  if (sei.payload[0] !== 181) { +    return null; +  } + +  // itu_t_t35_provider_code should be 49 (ATSC) for captions +  if (((sei.payload[1] << 8) | sei.payload[2]) !== 49) { +    return null; +  } + +  // the user_identifier should be "GA94" to indicate ATSC1 data +  if (String.fromCharCode(sei.payload[3], +                          sei.payload[4], +                          sei.payload[5], +                          sei.payload[6]) !== 'GA94') { +    return null; +  } + +  // finally, user_data_type_code should be 0x03 for caption data +  if (sei.payload[7] !== 0x03) { +    return null; +  } + +  // return the user_data_type_structure and strip the trailing +  // marker bits +  return sei.payload.subarray(8, sei.payload.length - 1); +}; + +// see CEA-708-D, section 4.4 +var parseCaptionPackets = function(pts, userData) { +  var results = [], i, count, offset, data; + +  // if this is just filler, return immediately +  if (!(userData[0] & 0x40)) { +    return results; +  } + +  // parse out the cc_data_1 and cc_data_2 fields +  count = userData[0] & 0x1f; +  for (i = 0; i < count; i++) { +    offset = i * 3; +    data = { +      type: userData[offset + 2] & 0x03, +      pts: pts +    }; + +    // capture cc data when cc_valid is 1 +    if (userData[offset + 2] & 0x04) { +      data.ccData = (userData[offset + 3] << 8) | userData[offset + 4]; +      results.push(data); +    } +  } +  return results; +}; + +var CaptionStream = function() { +  var self = this; +  CaptionStream.prototype.init.call(this); + +  this.captionPackets_ = []; + +  this.field1_ = new Cea608Stream(); + +  // forward data and done events from field1_ to this CaptionStream +  this.field1_.on('data', this.trigger.bind(this, 'data')); +  this.field1_.on('done', this.trigger.bind(this, 'done')); +}; +CaptionStream.prototype = new Stream(); +CaptionStream.prototype.push = function(event) { +  var sei, userData, captionPackets; + +  // only examine SEI NALs +  if (event.nalUnitType !== 'sei_rbsp') { +    return; +  } + +  // parse the sei +  sei = parseSei(event.escapedRBSP); + +  // ignore everything but user_data_registered_itu_t_t35 +  if (sei.payloadType !== USER_DATA_REGISTERED_ITU_T_T35) { +    return; +  } + +  // parse out the user data payload +  userData = parseUserData(sei); + +  // ignore unrecognized userData +  if (!userData) { +    return; +  } + +  // parse out CC data packets and save them for later +  this.captionPackets_ = this.captionPackets_.concat(parseCaptionPackets(event.pts, userData)); +}; + +CaptionStream.prototype.flush = function () { +  // make sure we actually parsed captions before proceeding +  if (!this.captionPackets_.length) { +    this.field1_.flush(); +    return; +  } + +  // sort caption byte-pairs based on their PTS values +  this.captionPackets_.sort(function(a, b) { +    return a.pts - b.pts; +  }); + +  // Push each caption into Cea608Stream +  this.captionPackets_.forEach(this.field1_.push, this.field1_); + +  this.captionPackets_.length = 0; +  this.field1_.flush(); +  return; +}; +// ---------------------- +// Session to Application +// ---------------------- + +var BASIC_CHARACTER_TRANSLATION = { +  0x2a: 0xe1, +  0x5c: 0xe9, +  0x5e: 0xed, +  0x5f: 0xf3, +  0x60: 0xfa, +  0x7b: 0xe7, +  0x7c: 0xf7, +  0x7d: 0xd1, +  0x7e: 0xf1, +  0x7f: 0x2588 +}; + +var getCharFromCode = function(code) { +  if(code === null) { +    return ''; +  } +  code = BASIC_CHARACTER_TRANSLATION[code] || code; +  return String.fromCharCode(code); +}; + +// Constants for the byte codes recognized by Cea608Stream. This +// list is not exhaustive. For a more comprehensive listing and +// semantics see +// http://www.gpo.gov/fdsys/pkg/CFR-2010-title47-vol1/pdf/CFR-2010-title47-vol1-sec15-119.pdf +var PADDING                    = 0x0000, + +    // Pop-on Mode +    RESUME_CAPTION_LOADING     = 0x1420, +    END_OF_CAPTION             = 0x142f, + +    // Roll-up Mode +    ROLL_UP_2_ROWS             = 0x1425, +    ROLL_UP_3_ROWS             = 0x1426, +    ROLL_UP_4_ROWS             = 0x1427, +    RESUME_DIRECT_CAPTIONING   = 0x1429, +    CARRIAGE_RETURN            = 0x142d, +    // Erasure +    BACKSPACE                  = 0x1421, +    ERASE_DISPLAYED_MEMORY     = 0x142c, +    ERASE_NON_DISPLAYED_MEMORY = 0x142e; + +// the index of the last row in a CEA-608 display buffer +var BOTTOM_ROW = 14; +// CEA-608 captions are rendered onto a 34x15 matrix of character +// cells. The "bottom" row is the last element in the outer array. +var createDisplayBuffer = function() { +  var result = [], i = BOTTOM_ROW + 1; +  while (i--) { +    result.push(''); +  } +  return result; +}; + +var Cea608Stream = function() { +  Cea608Stream.prototype.init.call(this); + +  this.mode_ = 'popOn'; +  // When in roll-up mode, the index of the last row that will +  // actually display captions. If a caption is shifted to a row +  // with a lower index than this, it is cleared from the display +  // buffer +  this.topRow_ = 0; +  this.startPts_ = 0; +  this.displayed_ = createDisplayBuffer(); +  this.nonDisplayed_ = createDisplayBuffer(); +  this.lastControlCode_ = null; + +  this.push = function(packet) { +    // Ignore other channels +    if (packet.type !== 0) { +      return; +    } +    var data, swap, char0, char1; +    // remove the parity bits +    data = packet.ccData & 0x7f7f; + +    // ignore duplicate control codes +    if (data === this.lastControlCode_) { +      this.lastControlCode_ = null; +      return; +    } + +    // Store control codes +    if ((data & 0xf000) === 0x1000) { +      this.lastControlCode_ = data; +    } else { +      this.lastControlCode_ = null; +    } + +    switch (data) { +    case PADDING: +      break; +    case RESUME_CAPTION_LOADING: +      this.mode_ = 'popOn'; +      break; +    case END_OF_CAPTION: +      // if a caption was being displayed, it's gone now +      this.flushDisplayed(packet.pts); + +      // flip memory +      swap = this.displayed_; +      this.displayed_ = this.nonDisplayed_; +      this.nonDisplayed_ = swap; + +      // start measuring the time to display the caption +      this.startPts_ = packet.pts; +      break; + +    case ROLL_UP_2_ROWS: +      this.topRow_ = BOTTOM_ROW - 1; +      this.mode_ = 'rollUp'; +      break; +    case ROLL_UP_3_ROWS: +      this.topRow_ = BOTTOM_ROW - 2; +      this.mode_ = 'rollUp'; +      break; +    case ROLL_UP_4_ROWS: +      this.topRow_ = BOTTOM_ROW - 3; +      this.mode_ = 'rollUp'; +      break; +    case CARRIAGE_RETURN: +      this.flushDisplayed(packet.pts); +      this.shiftRowsUp_(); +      this.startPts_ = packet.pts; +      break; + +    case BACKSPACE: +      if (this.mode_ === 'popOn') { +        this.nonDisplayed_[BOTTOM_ROW] = this.nonDisplayed_[BOTTOM_ROW].slice(0, -1); +      } else { +        this.displayed_[BOTTOM_ROW] = this.displayed_[BOTTOM_ROW].slice(0, -1); +      } +      break; +    case ERASE_DISPLAYED_MEMORY: +      this.flushDisplayed(packet.pts); +      this.displayed_ = createDisplayBuffer(); +      break; +    case ERASE_NON_DISPLAYED_MEMORY: +      this.nonDisplayed_ = createDisplayBuffer(); +      break; +    default: +      char0 = data >>> 8; +      char1 = data & 0xff; + +      // Look for a Channel 1 Preamble Address Code +      if (char0 >= 0x10 && char0 <= 0x17 && +          char1 >= 0x40 && char1 <= 0x7F && +          (char0 !== 0x10 || char1 < 0x60)) { +        // Follow Safari's lead and replace the PAC with a space +        char0 = 0x20; +        // we only want one space so make the second character null +        // which will get become '' in getCharFromCode +        char1 = null; +      } + +      // Look for special character sets +      if ((char0 === 0x11 || char0 === 0x19) && +          (char1 >= 0x30 && char1 <= 0x3F)) { +        // Put in eigth note and space +        char0 = 0xE299AA; +        char1 = ''; +      } + +      // ignore unsupported control codes +      if ((char0 & 0xf0) === 0x10) { +        return; +      } + +      // character handling is dependent on the current mode +      this[this.mode_](packet.pts, char0, char1); +      break; +    } +  }; +}; +Cea608Stream.prototype = new Stream(); +// Trigger a cue point that captures the current state of the +// display buffer +Cea608Stream.prototype.flushDisplayed = function(pts) { +  var row, i; + +  for (i = 0; i < this.displayed_.length; i++) { +    row = this.displayed_[i]; +    if (row.length) { +      this.trigger('data', { +        startPts: this.startPts_, +        endPts: pts, +        // remove spaces from the start and end of the string +        text: row.trim() +      }); +    } +  } +}; + +// Mode Implementations +Cea608Stream.prototype.popOn = function(pts, char0, char1) { +  var baseRow = this.nonDisplayed_[BOTTOM_ROW]; + +  // buffer characters +  baseRow += getCharFromCode(char0); +  baseRow += getCharFromCode(char1); +  this.nonDisplayed_[BOTTOM_ROW] = baseRow; +}; + +Cea608Stream.prototype.rollUp = function(pts, char0, char1) { +  var baseRow = this.displayed_[BOTTOM_ROW]; +  if (baseRow === '') { +    // we're starting to buffer new display input, so flush out the +    // current display +    this.flushDisplayed(pts); + +    this.startPts_ = pts; +  } + +  baseRow += getCharFromCode(char0); +  baseRow += getCharFromCode(char1); + +  this.displayed_[BOTTOM_ROW] = baseRow; +}; +Cea608Stream.prototype.shiftRowsUp_ = function() { +  var i; +  // clear out inactive rows +  for (i = 0; i < this.topRow_; i++) { +    this.displayed_[i] = ''; +  } +  // shift displayed rows up +  for (i = this.topRow_; i < BOTTOM_ROW; i++) { +    this.displayed_[i] = this.displayed_[i + 1]; +  } +  // clear out the bottom row +  this.displayed_[BOTTOM_ROW] = ''; +}; + +// exports +module.exports = { +  CaptionStream: CaptionStream, +  Cea608Stream: Cea608Stream, +}; + + +},{"../utils/stream":49}],39:[function(require,module,exports){ +module.exports = require('./m2ts'); + +},{"./m2ts":40}],40:[function(require,module,exports){ +/** + * mux.js + * + * Copyright (c) 2015 Brightcove + * All rights reserved. + * + * A stream-based mp2t to mp4 converter. This utility can be used to + * deliver mp4s to a SourceBuffer on platforms that support native + * Media Source Extensions. + */ +'use strict'; +var Stream = require('../utils/stream.js'), +  CaptionStream = require('./caption-stream'), +  StreamTypes = require('./stream-types'); + +var Stream = require('../utils/stream.js'); +var m2tsStreamTypes = require('./stream-types.js'); + +// object types +var +  TransportPacketStream, TransportParseStream, ElementaryStream, +  AacStream, H264Stream, NalByteStream; + +// constants +var +  MP2T_PACKET_LENGTH = 188, // bytes +  SYNC_BYTE = 0x47, + +/** + * Splits an incoming stream of binary data into MPEG-2 Transport + * Stream packets. + */ +TransportPacketStream = function() { +  var +    buffer = new Uint8Array(MP2T_PACKET_LENGTH), +    bytesInBuffer = 0; + +  TransportPacketStream.prototype.init.call(this); + +   // Deliver new bytes to the stream. + +  this.push = function(bytes) { +    var +      i = 0, +      startIndex = 0, +      endIndex = MP2T_PACKET_LENGTH, +      everything; + +    // If there are bytes remaining from the last segment, prepend them to the +    // bytes that were pushed in +    if (bytesInBuffer) { +      everything = new Uint8Array(bytes.byteLength + bytesInBuffer); +      everything.set(buffer.subarray(0, bytesInBuffer)); +      everything.set(bytes, bytesInBuffer); +      bytesInBuffer = 0; +    } else { +      everything = bytes; +    } + +    // While we have enough data for a packet +    while (endIndex < everything.byteLength) { +      // Look for a pair of start and end sync bytes in the data.. +      if (everything[startIndex] === SYNC_BYTE && everything[endIndex] === SYNC_BYTE) { +        // We found a packet so emit it and jump one whole packet forward in +        // the stream +        this.trigger('data', everything.subarray(startIndex, endIndex)); +        startIndex += MP2T_PACKET_LENGTH; +        endIndex += MP2T_PACKET_LENGTH; +        continue; +      } +      // If we get here, we have somehow become de-synchronized and we need to step +      // forward one byte at a time until we find a pair of sync bytes that denote +      // a packet +      startIndex++; +      endIndex++; +    } + +    // If there was some data left over at the end of the segment that couldn't +    // possibly be a whole packet, keep it because it might be the start of a packet +    // that continues in the next segment +    if (startIndex < everything.byteLength) { +      buffer.set(everything.subarray(startIndex), 0); +      bytesInBuffer = everything.byteLength - startIndex; +    } +  }; + +  this.flush = function () { +    // If the buffer contains a whole packet when we are being flushed, emit it +    // and empty the buffer. Otherwise hold onto the data because it may be +    // important for decoding the next segment +    if (bytesInBuffer === MP2T_PACKET_LENGTH && buffer[0] === SYNC_BYTE) { +      this.trigger('data', buffer); +      bytesInBuffer = 0; +    } +    this.trigger('done'); +  }; +}; +TransportPacketStream.prototype = new Stream(); + +/** + * Accepts an MP2T TransportPacketStream and emits data events with parsed + * forms of the individual transport stream packets. + */ +TransportParseStream = function() { +  var parsePsi, parsePat, parsePmt, parsePes, self; +  TransportParseStream.prototype.init.call(this); +  self = this; + +  this.packetsWaitingForPmt = []; +  this.programMapTable = undefined; + +  parsePsi = function(payload, psi) { +    var offset = 0; + +    // PSI packets may be split into multiple sections and those +    // sections may be split into multiple packets. If a PSI +    // section starts in this packet, the payload_unit_start_indicator +    // will be true and the first byte of the payload will indicate +    // the offset from the current position to the start of the +    // section. +    if (psi.payloadUnitStartIndicator) { +      offset += payload[offset] + 1; +    } + +    if (psi.type === 'pat') { +      parsePat(payload.subarray(offset), psi); +    } else { +      parsePmt(payload.subarray(offset), psi); +    } +  }; + +  parsePat = function(payload, pat) { +    pat.section_number = payload[7]; +    pat.last_section_number = payload[8]; + +    // skip the PSI header and parse the first PMT entry +    self.pmtPid = (payload[10] & 0x1F) << 8 | payload[11]; +    pat.pmtPid = self.pmtPid; +  }; + +  /** +   * Parse out the relevant fields of a Program Map Table (PMT). +   * @param payload {Uint8Array} the PMT-specific portion of an MP2T +   * packet. The first byte in this array should be the table_id +   * field. +   * @param pmt {object} the object that should be decorated with +   * fields parsed from the PMT. +   */ +  parsePmt = function(payload, pmt) { +    var sectionLength, tableEnd, programInfoLength, offset; + +    // PMTs can be sent ahead of the time when they should actually +    // take effect. We don't believe this should ever be the case +    // for HLS but we'll ignore "forward" PMT declarations if we see +    // them. Future PMT declarations have the current_next_indicator +    // set to zero. +    if (!(payload[5] & 0x01)) { +      return; +    } + +    // overwrite any existing program map table +    self.programMapTable = {}; + +    // the mapping table ends at the end of the current section +    sectionLength = (payload[1] & 0x0f) << 8 | payload[2]; +    tableEnd = 3 + sectionLength - 4; + +    // to determine where the table is, we have to figure out how +    // long the program info descriptors are +    programInfoLength = (payload[10] & 0x0f) << 8 | payload[11]; + +    // advance the offset to the first entry in the mapping table +    offset = 12 + programInfoLength; +    while (offset < tableEnd) { +      // add an entry that maps the elementary_pid to the stream_type +      self.programMapTable[(payload[offset + 1] & 0x1F) << 8 | payload[offset + 2]] = payload[offset]; + +      // move to the next table entry +      // skip past the elementary stream descriptors, if present +      offset += ((payload[offset + 3] & 0x0F) << 8 | payload[offset + 4]) + 5; +    } + +    // record the map on the packet as well +    pmt.programMapTable = self.programMapTable; + +    // if there are any packets waiting for a PMT to be found, process them now +    while (self.packetsWaitingForPmt.length) { +      self.processPes_.apply(self, self.packetsWaitingForPmt.shift()); +    } +  }; + +  /** +   * Deliver a new MP2T packet to the stream. +   */ +  this.push = function(packet) { +    var +      result = {}, +      offset = 4; + +    result.payloadUnitStartIndicator = !!(packet[1] & 0x40); + +    // pid is a 13-bit field starting at the last bit of packet[1] +    result.pid = packet[1] & 0x1f; +    result.pid <<= 8; +    result.pid |= packet[2]; + +    // if an adaption field is present, its length is specified by the +    // fifth byte of the TS packet header. The adaptation field is +    // used to add stuffing to PES packets that don't fill a complete +    // TS packet, and to specify some forms of timing and control data +    // that we do not currently use. +    if (((packet[3] & 0x30) >>> 4) > 0x01) { +      offset += packet[offset] + 1; +    } + +    // parse the rest of the packet based on the type +    if (result.pid === 0) { +      result.type = 'pat'; +      parsePsi(packet.subarray(offset), result); +      this.trigger('data', result); +    } else if (result.pid === this.pmtPid) { +      result.type = 'pmt'; +      parsePsi(packet.subarray(offset), result); +      this.trigger('data', result); +    } else if (this.programMapTable === undefined) { +      // When we have not seen a PMT yet, defer further processing of +      // PES packets until one has been parsed +      this.packetsWaitingForPmt.push([packet, offset, result]); +    } else { +      this.processPes_(packet, offset, result); +    } +  }; + +  this.processPes_ = function (packet, offset, result) { +    result.streamType = this.programMapTable[result.pid]; +    result.type = 'pes'; +    result.data = packet.subarray(offset); + +    this.trigger('data', result); +  }; + +}; +TransportParseStream.prototype = new Stream(); +TransportParseStream.STREAM_TYPES  = { +  h264: 0x1b, +  adts: 0x0f +}; + +/** + * Reconsistutes program elementary stream (PES) packets from parsed + * transport stream packets. That is, if you pipe an + * mp2t.TransportParseStream into a mp2t.ElementaryStream, the output + * events will be events which capture the bytes for individual PES + * packets plus relevant metadata that has been extracted from the + * container. + */ +ElementaryStream = function() { +  var +    // PES packet fragments +    video = { +      data: [], +      size: 0 +    }, +    audio = { +      data: [], +      size: 0 +    }, +    timedMetadata = { +      data: [], +      size: 0 +    }, +    parsePes = function(payload, pes) { +      var ptsDtsFlags; + +      // find out if this packets starts a new keyframe +      pes.dataAlignmentIndicator = (payload[6] & 0x04) !== 0; +      // PES packets may be annotated with a PTS value, or a PTS value +      // and a DTS value. Determine what combination of values is +      // available to work with. +      ptsDtsFlags = payload[7]; + +      // PTS and DTS are normally stored as a 33-bit number.  Javascript +      // performs all bitwise operations on 32-bit integers but javascript +      // supports a much greater range (52-bits) of integer using standard +      // mathematical operations. +      // We construct a 31-bit value using bitwise operators over the 31 +      // most significant bits and then multiply by 4 (equal to a left-shift +      // of 2) before we add the final 2 least significant bits of the +      // timestamp (equal to an OR.) +      if (ptsDtsFlags & 0xC0) { +        // the PTS and DTS are not written out directly. For information +        // on how they are encoded, see +        // http://dvd.sourceforge.net/dvdinfo/pes-hdr.html +        pes.pts = (payload[9] & 0x0E) << 27 +          | (payload[10] & 0xFF) << 20 +          | (payload[11] & 0xFE) << 12 +          | (payload[12] & 0xFF) <<  5 +          | (payload[13] & 0xFE) >>>  3; +        pes.pts *= 4; // Left shift by 2 +        pes.pts += (payload[13] & 0x06) >>> 1; // OR by the two LSBs +        pes.dts = pes.pts; +        if (ptsDtsFlags & 0x40) { +          pes.dts = (payload[14] & 0x0E ) << 27 +            | (payload[15] & 0xFF ) << 20 +            | (payload[16] & 0xFE ) << 12 +            | (payload[17] & 0xFF ) << 5 +            | (payload[18] & 0xFE ) >>> 3; +          pes.dts *= 4; // Left shift by 2 +          pes.dts += (payload[18] & 0x06) >>> 1; // OR by the two LSBs +        } +      } + +      // the data section starts immediately after the PES header. +      // pes_header_data_length specifies the number of header bytes +      // that follow the last byte of the field. +      pes.data = payload.subarray(9 + payload[8]); +    }, +    flushStream = function(stream, type) { +      var +        packetData = new Uint8Array(stream.size), +        event = { +          type: type +        }, +        i = 0, +        fragment; + +      // do nothing if there is no buffered data +      if (!stream.data.length) { +        return; +      } +      event.trackId = stream.data[0].pid; + +      // reassemble the packet +      while (stream.data.length) { +        fragment = stream.data.shift(); + +        packetData.set(fragment.data, i); +        i += fragment.data.byteLength; +      } + +      // parse assembled packet's PES header +      parsePes(packetData, event); + +      stream.size = 0; + +      self.trigger('data', event); +    }, +    self; + +  ElementaryStream.prototype.init.call(this); +  self = this; + +  this.push = function(data) { +    ({ +      pat: function() { +        // we have to wait for the PMT to arrive as well before we +        // have any meaningful metadata +      }, +      pes: function() { +        var stream, streamType; + +        switch (data.streamType) { +        case StreamTypes.H264_STREAM_TYPE: +        case m2tsStreamTypes.H264_STREAM_TYPE: +          stream = video; +          streamType = 'video'; +          break; +        case StreamTypes.ADTS_STREAM_TYPE: +          stream = audio; +          streamType = 'audio'; +          break; +        case StreamTypes.METADATA_STREAM_TYPE: +          stream = timedMetadata; +          streamType = 'timed-metadata'; +          break; +        default: +          // ignore unknown stream types +          return; +        } + +        // if a new packet is starting, we can flush the completed +        // packet +        if (data.payloadUnitStartIndicator) { +          flushStream(stream, streamType); +        } + +        // buffer this fragment until we are sure we've received the +        // complete payload +        stream.data.push(data); +        stream.size += data.data.byteLength; +      }, +      pmt: function() { +        var +          event = { +            type: 'metadata', +            tracks: [] +          }, +          programMapTable = data.programMapTable, +          k, +          track; + +        // translate streams to tracks +        for (k in programMapTable) { +          if (programMapTable.hasOwnProperty(k)) { +            track = { +              timelineStartInfo: { +                baseMediaDecodeTime: 0 +              } +            }; +            track.id = +k; +            if (programMapTable[k] === m2tsStreamTypes.H264_STREAM_TYPE) { +              track.codec = 'avc'; +              track.type = 'video'; +            } else if (programMapTable[k] === m2tsStreamTypes.ADTS_STREAM_TYPE) { +              track.codec = 'adts'; +              track.type = 'audio'; +            } +            event.tracks.push(track); +          } +        } +        self.trigger('data', event); +      } +    })[data.type](); +  }; + +  /** +   * Flush any remaining input. Video PES packets may be of variable +   * length. Normally, the start of a new video packet can trigger the +   * finalization of the previous packet. That is not possible if no +   * more video is forthcoming, however. In that case, some other +   * mechanism (like the end of the file) has to be employed. When it is +   * clear that no additional data is forthcoming, calling this method +   * will flush the buffered packets. +   */ +  this.flush = function() { +    // !!THIS ORDER IS IMPORTANT!! +    // video first then audio +    flushStream(video, 'video'); +    flushStream(audio, 'audio'); +    flushStream(timedMetadata, 'timed-metadata'); +    this.trigger('done'); +  }; +}; +ElementaryStream.prototype = new Stream(); + +var m2ts = { +  PAT_PID: 0x0000, +  MP2T_PACKET_LENGTH: MP2T_PACKET_LENGTH, +  TransportPacketStream: TransportPacketStream, +  TransportParseStream: TransportParseStream, +  ElementaryStream: ElementaryStream, +  CaptionStream: CaptionStream.CaptionStream, +  Cea608Stream: CaptionStream.Cea608Stream, +  MetadataStream: require('./metadata-stream'), +}; + +for (var type in StreamTypes) { +  if (StreamTypes.hasOwnProperty(type)) { +    m2ts[type] = StreamTypes[type]; +  } +} + +module.exports = m2ts; + +},{"../utils/stream.js":49,"./caption-stream":38,"./metadata-stream":41,"./stream-types":42,"./stream-types.js":42}],41:[function(require,module,exports){ +/** + * Accepts program elementary stream (PES) data events and parses out + * ID3 metadata from them, if present. + * @see http://id3.org/id3v2.3.0 + */ +'use strict'; +var +  Stream = require('../utils/stream'), +  StreamTypes = require('./stream-types'), +  // return a percent-encoded representation of the specified byte range +  // @see http://en.wikipedia.org/wiki/Percent-encoding +  percentEncode = function(bytes, start, end) { +    var i, result = ''; +    for (i = start; i < end; i++) { +      result += '%' + ('00' + bytes[i].toString(16)).slice(-2); +    } +    return result; +  }, +  // return the string representation of the specified byte range, +  // interpreted as UTf-8. +  parseUtf8 = function(bytes, start, end) { +    return decodeURIComponent(percentEncode(bytes, start, end)); +  }, +  // return the string representation of the specified byte range, +  // interpreted as ISO-8859-1. +  parseIso88591 = function(bytes, start, end) { +    return unescape(percentEncode(bytes, start, end)); // jshint ignore:line +  }, +  parseSyncSafeInteger = function (data) { +    return (data[0] << 21) | +            (data[1] << 14) | +            (data[2] << 7) | +            (data[3]); +  }, +  tagParsers = { +    'TXXX': function(tag) { +      var i; +      if (tag.data[0] !== 3) { +        // ignore frames with unrecognized character encodings +        return; +      } + +      for (i = 1; i < tag.data.length; i++) { +        if (tag.data[i] === 0) { +          // parse the text fields +          tag.description = parseUtf8(tag.data, 1, i); +          // do not include the null terminator in the tag value +          tag.value = parseUtf8(tag.data, i + 1, tag.data.length - 1); +          break; +        } +      } +      tag.data = tag.value; +    }, +    'WXXX': function(tag) { +      var i; +      if (tag.data[0] !== 3) { +        // ignore frames with unrecognized character encodings +        return; +      } + +      for (i = 1; i < tag.data.length; i++) { +        if (tag.data[i] === 0) { +          // parse the description and URL fields +          tag.description = parseUtf8(tag.data, 1, i); +          tag.url = parseUtf8(tag.data, i + 1, tag.data.length); +          break; +        } +      } +    }, +    'PRIV': function(tag) { +      var i; + +      for (i = 0; i < tag.data.length; i++) { +        if (tag.data[i] === 0) { +          // parse the description and URL fields +          tag.owner = parseIso88591(tag.data, 0, i); +          break; +        } +      } +      tag.privateData = tag.data.subarray(i + 1); +      tag.data = tag.privateData; +    } +  }, +  MetadataStream; + +MetadataStream = function(options) { +  var +    settings = { +      debug: !!(options && options.debug), + +      // the bytes of the program-level descriptor field in MP2T +      // see ISO/IEC 13818-1:2013 (E), section 2.6 "Program and +      // program element descriptors" +      descriptor: options && options.descriptor +    }, +    // the total size in bytes of the ID3 tag being parsed +    tagSize = 0, +    // tag data that is not complete enough to be parsed +    buffer = [], +    // the total number of bytes currently in the buffer +    bufferSize = 0, +    i; + +  MetadataStream.prototype.init.call(this); + +  // calculate the text track in-band metadata track dispatch type +  // https://html.spec.whatwg.org/multipage/embedded-content.html#steps-to-expose-a-media-resource-specific-text-track +  this.dispatchType = StreamTypes.METADATA_STREAM_TYPE.toString(16); +  if (settings.descriptor) { +    for (i = 0; i < settings.descriptor.length; i++) { +      this.dispatchType += ('00' + settings.descriptor[i].toString(16)).slice(-2); +    } +  } + +  this.push = function(chunk) { +    var tag, frameStart, frameSize, frame, i, frameHeader; +    if (chunk.type !== 'timed-metadata') { +      return; +    } + +    // if data_alignment_indicator is set in the PES header, +    // we must have the start of a new ID3 tag. Assume anything +    // remaining in the buffer was malformed and throw it out +    if (chunk.dataAlignmentIndicator) { +      bufferSize = 0; +      buffer.length = 0; +    } + +    // ignore events that don't look like ID3 data +    if (buffer.length === 0 && +        (chunk.data.length < 10 || +          chunk.data[0] !== 'I'.charCodeAt(0) || +          chunk.data[1] !== 'D'.charCodeAt(0) || +          chunk.data[2] !== '3'.charCodeAt(0))) { +      if (settings.debug) { +        console.log('Skipping unrecognized metadata packet'); +      } +      return; +    } + +    // add this chunk to the data we've collected so far + +    buffer.push(chunk); +    bufferSize += chunk.data.byteLength; + +    // grab the size of the entire frame from the ID3 header +    if (buffer.length === 1) { +      // the frame size is transmitted as a 28-bit integer in the +      // last four bytes of the ID3 header. +      // The most significant bit of each byte is dropped and the +      // results concatenated to recover the actual value. +      tagSize = parseSyncSafeInteger(chunk.data.subarray(6, 10)); + +      // ID3 reports the tag size excluding the header but it's more +      // convenient for our comparisons to include it +      tagSize += 10; +    } + +    // if the entire frame has not arrived, wait for more data +    if (bufferSize < tagSize) { +      return; +    } + +    // collect the entire frame so it can be parsed +    tag = { +      data: new Uint8Array(tagSize), +      frames: [], +      pts: buffer[0].pts, +      dts: buffer[0].dts +    }; +    for (i = 0; i < tagSize;) { +      tag.data.set(buffer[0].data.subarray(0, tagSize - i), i); +      i += buffer[0].data.byteLength; +      bufferSize -= buffer[0].data.byteLength; +      buffer.shift(); +    } + +    // find the start of the first frame and the end of the tag +    frameStart = 10; +    if (tag.data[5] & 0x40) { +      // advance the frame start past the extended header +      frameStart += 4; // header size field +      frameStart += parseSyncSafeInteger(tag.data.subarray(10, 14)); + +      // clip any padding off the end +      tagSize -= parseSyncSafeInteger(tag.data.subarray(16, 20)); +    } + +    // parse one or more ID3 frames +    // http://id3.org/id3v2.3.0#ID3v2_frame_overview +    do { +      // determine the number of bytes in this frame +      frameSize = parseSyncSafeInteger(tag.data.subarray(frameStart + 4, frameStart + 8)); +      if (frameSize < 1) { +        return console.log('Malformed ID3 frame encountered. Skipping metadata parsing.'); +      } +      frameHeader = String.fromCharCode(tag.data[frameStart], +                                        tag.data[frameStart + 1], +                                        tag.data[frameStart + 2], +                                        tag.data[frameStart + 3]); + + +      frame = { +        id: frameHeader, +        data: tag.data.subarray(frameStart + 10, frameStart + frameSize + 10) +      }; +      frame.key = frame.id; +      if (tagParsers[frame.id]) { +        tagParsers[frame.id](frame); +        if (frame.owner === 'com.apple.streaming.transportStreamTimestamp') { +          var +            d = frame.data, +            size = ((d[3] & 0x01)  << 30) | +                   (d[4]  << 22) | +                   (d[5] << 14) | +                   (d[6] << 6) | +                   (d[7] >>> 2); + +          size *= 4; +          size += d[7] & 0x03; +          frame.timeStamp = size; +          this.trigger('timestamp', frame); +        } +      } +      tag.frames.push(frame); + +      frameStart += 10; // advance past the frame header +      frameStart += frameSize; // advance past the frame body +    } while (frameStart < tagSize); +    this.trigger('data', tag); +  }; +}; +MetadataStream.prototype = new Stream(); + +module.exports = MetadataStream; + +},{"../utils/stream":49,"./stream-types":42}],42:[function(require,module,exports){ +'use strict'; + +module.exports = { +  H264_STREAM_TYPE: 0x1B, +  ADTS_STREAM_TYPE: 0x0F, +  METADATA_STREAM_TYPE: 0x15 +}; + +},{}],43:[function(require,module,exports){ +module.exports = { +  generator: require('./mp4-generator'), +  Transmuxer: require('./transmuxer').Transmuxer, +  AudioSegmentStream: require('./transmuxer').AudioSegmentStream, +  VideoSegmentStream: require('./transmuxer').VideoSegmentStream, +  tools: require('../tools/mp4-inspector'), +}; + +},{"../tools/mp4-inspector":47,"./mp4-generator":44,"./transmuxer":45}],44:[function(require,module,exports){ +/** + * mux.js + * + * Copyright (c) 2015 Brightcove + * All rights reserved. + * + * Functions that generate fragmented MP4s suitable for use with Media + * Source Extensions. + */ +'use strict'; + +var box, dinf, esds, ftyp, mdat, mfhd, minf, moof, moov, mvex, mvhd, trak, +    tkhd, mdia, mdhd, hdlr, sdtp, stbl, stsd, styp, traf, trex, trun, +    types, MAJOR_BRAND, MINOR_VERSION, AVC1_BRAND, VIDEO_HDLR, +    AUDIO_HDLR, HDLR_TYPES, VMHD, SMHD, DREF, STCO, STSC, STSZ, STTS; + +// pre-calculate constants +(function() { +  var i; +  types = { +    avc1: [], // codingname +    avcC: [], +    btrt: [], +    dinf: [], +    dref: [], +    esds: [], +    ftyp: [], +    hdlr: [], +    mdat: [], +    mdhd: [], +    mdia: [], +    mfhd: [], +    minf: [], +    moof: [], +    moov: [], +    mp4a: [], // codingname +    mvex: [], +    mvhd: [], +    sdtp: [], +    smhd: [], +    stbl: [], +    stco: [], +    stsc: [], +    stsd: [], +    stsz: [], +    stts: [], +    styp: [], +    tfdt: [], +    tfhd: [], +    traf: [], +    trak: [], +    trun: [], +    trex: [], +    tkhd: [], +    vmhd: [] +  }; + +  for (i in types) { +    if (types.hasOwnProperty(i)) { +      types[i] = [ +        i.charCodeAt(0), +        i.charCodeAt(1), +        i.charCodeAt(2), +        i.charCodeAt(3) +      ]; +    } +  } + +  MAJOR_BRAND = new Uint8Array([ +    'i'.charCodeAt(0), +    's'.charCodeAt(0), +    'o'.charCodeAt(0), +    'm'.charCodeAt(0) +  ]); +  AVC1_BRAND = new Uint8Array([ +    'a'.charCodeAt(0), +    'v'.charCodeAt(0), +    'c'.charCodeAt(0), +    '1'.charCodeAt(0) +  ]); +  MINOR_VERSION = new Uint8Array([0, 0, 0, 1]); +  VIDEO_HDLR = new Uint8Array([ +    0x00, // version 0 +    0x00, 0x00, 0x00, // flags +    0x00, 0x00, 0x00, 0x00, // pre_defined +    0x76, 0x69, 0x64, 0x65, // handler_type: 'vide' +    0x00, 0x00, 0x00, 0x00, // reserved +    0x00, 0x00, 0x00, 0x00, // reserved +    0x00, 0x00, 0x00, 0x00, // reserved +    0x56, 0x69, 0x64, 0x65, +    0x6f, 0x48, 0x61, 0x6e, +    0x64, 0x6c, 0x65, 0x72, 0x00 // name: 'VideoHandler' +  ]); +  AUDIO_HDLR = new Uint8Array([ +    0x00, // version 0 +    0x00, 0x00, 0x00, // flags +    0x00, 0x00, 0x00, 0x00, // pre_defined +    0x73, 0x6f, 0x75, 0x6e, // handler_type: 'soun' +    0x00, 0x00, 0x00, 0x00, // reserved +    0x00, 0x00, 0x00, 0x00, // reserved +    0x00, 0x00, 0x00, 0x00, // reserved +    0x53, 0x6f, 0x75, 0x6e, +    0x64, 0x48, 0x61, 0x6e, +    0x64, 0x6c, 0x65, 0x72, 0x00 // name: 'SoundHandler' +  ]); +  HDLR_TYPES = { +    "video":VIDEO_HDLR, +    "audio": AUDIO_HDLR +  }; +  DREF = new Uint8Array([ +    0x00, // version 0 +    0x00, 0x00, 0x00, // flags +    0x00, 0x00, 0x00, 0x01, // entry_count +    0x00, 0x00, 0x00, 0x0c, // entry_size +    0x75, 0x72, 0x6c, 0x20, // 'url' type +    0x00, // version 0 +    0x00, 0x00, 0x01 // entry_flags +  ]); +  SMHD = new Uint8Array([ +    0x00,             // version +    0x00, 0x00, 0x00, // flags +    0x00, 0x00,       // balance, 0 means centered +    0x00, 0x00        // reserved +  ]); +  STCO = new Uint8Array([ +    0x00, // version +    0x00, 0x00, 0x00, // flags +    0x00, 0x00, 0x00, 0x00 // entry_count +  ]); +  STSC = STCO; +  STSZ = new Uint8Array([ +    0x00, // version +    0x00, 0x00, 0x00, // flags +    0x00, 0x00, 0x00, 0x00, // sample_size +    0x00, 0x00, 0x00, 0x00, // sample_count +  ]); +  STTS = STCO; +  VMHD = new Uint8Array([ +    0x00, // version +    0x00, 0x00, 0x01, // flags +    0x00, 0x00, // graphicsmode +    0x00, 0x00, +    0x00, 0x00, +    0x00, 0x00 // opcolor +  ]); +})(); + +box = function(type) { +  var +    payload = [], +    size = 0, +    i, +    result, +    view; + +  for (i = 1; i < arguments.length; i++) { +    payload.push(arguments[i]); +  } + +  i = payload.length; + +  // calculate the total size we need to allocate +  while (i--) { +    size += payload[i].byteLength; +  } +  result = new Uint8Array(size + 8); +  view = new DataView(result.buffer, result.byteOffset, result.byteLength); +  view.setUint32(0, result.byteLength); +  result.set(type, 4); + +  // copy the payload into the result +  for (i = 0, size = 8; i < payload.length; i++) { +    result.set(payload[i], size); +    size += payload[i].byteLength; +  } +  return result; +}; + +dinf = function() { +  return box(types.dinf, box(types.dref, DREF)); +}; + +esds = function(track) { +  return box(types.esds, new Uint8Array([ +    0x00, // version +    0x00, 0x00, 0x00, // flags + +    // ES_Descriptor +    0x03, // tag, ES_DescrTag +    0x19, // length +    0x00, 0x00, // ES_ID +    0x00, // streamDependenceFlag, URL_flag, reserved, streamPriority + +    // DecoderConfigDescriptor +    0x04, // tag, DecoderConfigDescrTag +    0x11, // length +    0x40, // object type +    0x15,  // streamType +    0x00, 0x06, 0x00, // bufferSizeDB +    0x00, 0x00, 0xda, 0xc0, // maxBitrate +    0x00, 0x00, 0xda, 0xc0, // avgBitrate + +    // DecoderSpecificInfo +    0x05, // tag, DecoderSpecificInfoTag +    0x02, // length +    // ISO/IEC 14496-3, AudioSpecificConfig +    // for samplingFrequencyIndex see ISO/IEC 13818-7:2006, 8.1.3.2.2, Table 35 +    (track.audioobjecttype << 3) | (track.samplingfrequencyindex >>> 1), +    (track.samplingfrequencyindex << 7) | (track.channelcount << 3), +    0x06, 0x01, 0x02 // GASpecificConfig +  ])); +}; + +ftyp = function() { +  return box(types.ftyp, MAJOR_BRAND, MINOR_VERSION, MAJOR_BRAND, AVC1_BRAND); +}; + +hdlr = function(type) { +  return box(types.hdlr, HDLR_TYPES[type]); +}; +mdat = function(data) { +  return box(types.mdat, data); +}; +mdhd = function(track) { +  var result = new Uint8Array([ +    0x00,                   // version 0 +    0x00, 0x00, 0x00,       // flags +    0x00, 0x00, 0x00, 0x02, // creation_time +    0x00, 0x00, 0x00, 0x03, // modification_time +    0x00, 0x01, 0x5f, 0x90, // timescale, 90,000 "ticks" per second + +    (track.duration >>> 24) & 0xFF, +    (track.duration >>> 16) & 0xFF, +    (track.duration >>>  8) & 0xFF, +    track.duration & 0xFF,  // duration +    0x55, 0xc4,             // 'und' language (undetermined) +    0x00, 0x00 +  ]); + +  // Use the sample rate from the track metadata, when it is +  // defined. The sample rate can be parsed out of an ADTS header, for +  // instance. +  if (track.samplerate) { +    result[12] = (track.samplerate >>> 24) & 0xFF; +    result[13] = (track.samplerate >>> 16) & 0xFF; +    result[14] = (track.samplerate >>>  8) & 0xFF; +    result[15] = (track.samplerate)        & 0xFF; +  } + +  return box(types.mdhd, result); +}; +mdia = function(track) { +  return box(types.mdia, mdhd(track), hdlr(track.type), minf(track)); +}; +mfhd = function(sequenceNumber) { +  return box(types.mfhd, new Uint8Array([ +    0x00, +    0x00, 0x00, 0x00, // flags +    (sequenceNumber & 0xFF000000) >> 24, +    (sequenceNumber & 0xFF0000) >> 16, +    (sequenceNumber & 0xFF00) >> 8, +    sequenceNumber & 0xFF, // sequence_number +  ])); +}; +minf = function(track) { +  return box(types.minf, +             track.type === 'video' ? box(types.vmhd, VMHD) : box(types.smhd, SMHD), +             dinf(), +             stbl(track)); +}; +moof = function(sequenceNumber, tracks) { +  var +    trackFragments = [], +    i = tracks.length; +  // build traf boxes for each track fragment +  while (i--) { +    trackFragments[i] = traf(tracks[i]); +  } +  return box.apply(null, [ +    types.moof, +    mfhd(sequenceNumber) +  ].concat(trackFragments)); +}; +/** + * Returns a movie box. + * @param tracks {array} the tracks associated with this movie + * @see ISO/IEC 14496-12:2012(E), section 8.2.1 + */ +moov = function(tracks) { +  var +    i = tracks.length, +    boxes = []; + +  while (i--) { +    boxes[i] = trak(tracks[i]); +  } + +  return box.apply(null, [types.moov, mvhd(0xffffffff)].concat(boxes).concat(mvex(tracks))); +}; +mvex = function(tracks) { +  var +    i = tracks.length, +    boxes = []; + +  while (i--) { +    boxes[i] = trex(tracks[i]); +  } +  return box.apply(null, [types.mvex].concat(boxes)); +}; +mvhd = function(duration) { +  var +    bytes = new Uint8Array([ +      0x00, // version 0 +      0x00, 0x00, 0x00, // flags +      0x00, 0x00, 0x00, 0x01, // creation_time +      0x00, 0x00, 0x00, 0x02, // modification_time +      0x00, 0x01, 0x5f, 0x90, // timescale, 90,000 "ticks" per second +      (duration & 0xFF000000) >> 24, +      (duration & 0xFF0000) >> 16, +      (duration & 0xFF00) >> 8, +      duration & 0xFF, // duration +      0x00, 0x01, 0x00, 0x00, // 1.0 rate +      0x01, 0x00, // 1.0 volume +      0x00, 0x00, // reserved +      0x00, 0x00, 0x00, 0x00, // reserved +      0x00, 0x00, 0x00, 0x00, // reserved +      0x00, 0x01, 0x00, 0x00, +      0x00, 0x00, 0x00, 0x00, +      0x00, 0x00, 0x00, 0x00, +      0x00, 0x00, 0x00, 0x00, +      0x00, 0x01, 0x00, 0x00, +      0x00, 0x00, 0x00, 0x00, +      0x00, 0x00, 0x00, 0x00, +      0x00, 0x00, 0x00, 0x00, +      0x40, 0x00, 0x00, 0x00, // transformation: unity matrix +      0x00, 0x00, 0x00, 0x00, +      0x00, 0x00, 0x00, 0x00, +      0x00, 0x00, 0x00, 0x00, +      0x00, 0x00, 0x00, 0x00, +      0x00, 0x00, 0x00, 0x00, +      0x00, 0x00, 0x00, 0x00, // pre_defined +      0xff, 0xff, 0xff, 0xff // next_track_ID +    ]); +  return box(types.mvhd, bytes); +}; + +sdtp = function(track) { +  var +    samples = track.samples || [], +    bytes = new Uint8Array(4 + samples.length), +    flags, +    i; + +  // leave the full box header (4 bytes) all zero + +  // write the sample table +  for (i = 0; i < samples.length; i++) { +    flags = samples[i].flags; + +    bytes[i + 4] = (flags.dependsOn << 4) | +      (flags.isDependedOn << 2) | +      (flags.hasRedundancy); +  } + +  return box(types.sdtp, +             bytes); +}; + +stbl = function(track) { +  return box(types.stbl, +             stsd(track), +             box(types.stts, STTS), +             box(types.stsc, STSC), +             box(types.stsz, STSZ), +             box(types.stco, STCO)); +}; + +(function() { +  var videoSample, audioSample; + +  stsd = function(track) { + +    return box(types.stsd, new Uint8Array([ +      0x00, // version 0 +      0x00, 0x00, 0x00, // flags +      0x00, 0x00, 0x00, 0x01 +    ]), track.type === 'video' ? videoSample(track) : audioSample(track)); +  }; + +  videoSample = function(track) { +    var +      sps = track.sps || [], +      pps = track.pps || [], +      sequenceParameterSets = [], +      pictureParameterSets = [], +      i; + +    // assemble the SPSs +    for (i = 0; i < sps.length; i++) { +      sequenceParameterSets.push((sps[i].byteLength & 0xFF00) >>> 8); +      sequenceParameterSets.push((sps[i].byteLength & 0xFF)); // sequenceParameterSetLength +      sequenceParameterSets = sequenceParameterSets.concat(Array.prototype.slice.call(sps[i])); // SPS +    } + +    // assemble the PPSs +    for (i = 0; i < pps.length; i++) { +      pictureParameterSets.push((pps[i].byteLength & 0xFF00) >>> 8); +      pictureParameterSets.push((pps[i].byteLength & 0xFF)); +      pictureParameterSets = pictureParameterSets.concat(Array.prototype.slice.call(pps[i])); +    } + +    return box(types.avc1, new Uint8Array([ +      0x00, 0x00, 0x00, +      0x00, 0x00, 0x00, // reserved +      0x00, 0x01, // data_reference_index +      0x00, 0x00, // pre_defined +      0x00, 0x00, // reserved +      0x00, 0x00, 0x00, 0x00, +      0x00, 0x00, 0x00, 0x00, +      0x00, 0x00, 0x00, 0x00, // pre_defined +      (track.width & 0xff00) >> 8, +      track.width & 0xff, // width +      (track.height & 0xff00) >> 8, +      track.height & 0xff, // height +      0x00, 0x48, 0x00, 0x00, // horizresolution +      0x00, 0x48, 0x00, 0x00, // vertresolution +      0x00, 0x00, 0x00, 0x00, // reserved +      0x00, 0x01, // frame_count +      0x13, +      0x76, 0x69, 0x64, 0x65, +      0x6f, 0x6a, 0x73, 0x2d, +      0x63, 0x6f, 0x6e, 0x74, +      0x72, 0x69, 0x62, 0x2d, +      0x68, 0x6c, 0x73, 0x00, +      0x00, 0x00, 0x00, 0x00, +      0x00, 0x00, 0x00, 0x00, +      0x00, 0x00, 0x00, // compressorname +      0x00, 0x18, // depth = 24 +      0x11, 0x11 // pre_defined = -1 +    ]), box(types.avcC, new Uint8Array([ +      0x01, // configurationVersion +      track.profileIdc, // AVCProfileIndication +      track.profileCompatibility, // profile_compatibility +      track.levelIdc, // AVCLevelIndication +      0xff // lengthSizeMinusOne, hard-coded to 4 bytes +    ].concat([ +      sps.length // numOfSequenceParameterSets +    ]).concat(sequenceParameterSets).concat([ +      pps.length // numOfPictureParameterSets +    ]).concat(pictureParameterSets))), // "PPS" +            box(types.btrt, new Uint8Array([ +              0x00, 0x1c, 0x9c, 0x80, // bufferSizeDB +              0x00, 0x2d, 0xc6, 0xc0, // maxBitrate +              0x00, 0x2d, 0xc6, 0xc0 +            ])) // avgBitrate +              ); +  }; + +  audioSample = function(track) { +    return box(types.mp4a, new Uint8Array([ + +      // SampleEntry, ISO/IEC 14496-12 +      0x00, 0x00, 0x00, +      0x00, 0x00, 0x00, // reserved +      0x00, 0x01, // data_reference_index + +      // AudioSampleEntry, ISO/IEC 14496-12 +      0x00, 0x00, 0x00, 0x00, // reserved +      0x00, 0x00, 0x00, 0x00, // reserved +      (track.channelcount & 0xff00) >> 8, +      (track.channelcount & 0xff), // channelcount + +      (track.samplesize & 0xff00) >> 8, +      (track.samplesize & 0xff), // samplesize +      0x00, 0x00, // pre_defined +      0x00, 0x00, // reserved + +      (track.samplerate & 0xff00) >> 8, +      (track.samplerate & 0xff), +      0x00, 0x00 // samplerate, 16.16 + +      // MP4AudioSampleEntry, ISO/IEC 14496-14 +    ]), esds(track)); +  }; +})(); + +styp = function() { +  return box(types.styp, MAJOR_BRAND, MINOR_VERSION, MAJOR_BRAND); +}; + +tkhd = function(track) { +  var result = new Uint8Array([ +    0x00, // version 0 +    0x00, 0x00, 0x07, // flags +    0x00, 0x00, 0x00, 0x00, // creation_time +    0x00, 0x00, 0x00, 0x00, // modification_time +    (track.id & 0xFF000000) >> 24, +    (track.id & 0xFF0000) >> 16, +    (track.id & 0xFF00) >> 8, +    track.id & 0xFF, // track_ID +    0x00, 0x00, 0x00, 0x00, // reserved +    (track.duration & 0xFF000000) >> 24, +    (track.duration & 0xFF0000) >> 16, +    (track.duration & 0xFF00) >> 8, +    track.duration & 0xFF, // duration +    0x00, 0x00, 0x00, 0x00, +    0x00, 0x00, 0x00, 0x00, // reserved +    0x00, 0x00, // layer +    0x00, 0x00, // alternate_group +    0x01, 0x00, // non-audio track volume +    0x00, 0x00, // reserved +    0x00, 0x01, 0x00, 0x00, +    0x00, 0x00, 0x00, 0x00, +    0x00, 0x00, 0x00, 0x00, +    0x00, 0x00, 0x00, 0x00, +    0x00, 0x01, 0x00, 0x00, +    0x00, 0x00, 0x00, 0x00, +    0x00, 0x00, 0x00, 0x00, +    0x00, 0x00, 0x00, 0x00, +    0x40, 0x00, 0x00, 0x00, // transformation: unity matrix +    (track.width & 0xFF00) >> 8, +    track.width & 0xFF, +    0x00, 0x00, // width +    (track.height & 0xFF00) >> 8, +    track.height & 0xFF, +    0x00, 0x00 // height +  ]); + +  return box(types.tkhd, result); +}; + +/** + * Generate a track fragment (traf) box. A traf box collects metadata + * about tracks in a movie fragment (moof) box. + */ +traf = function(track) { +  var trackFragmentHeader, trackFragmentDecodeTime, +      trackFragmentRun, sampleDependencyTable, dataOffset; + +  trackFragmentHeader = box(types.tfhd, new Uint8Array([ +    0x00, // version 0 +    0x00, 0x00, 0x3a, // flags +    (track.id & 0xFF000000) >> 24, +    (track.id & 0xFF0000) >> 16, +    (track.id & 0xFF00) >> 8, +    (track.id & 0xFF), // track_ID +    0x00, 0x00, 0x00, 0x01, // sample_description_index +    0x00, 0x00, 0x00, 0x00, // default_sample_duration +    0x00, 0x00, 0x00, 0x00, // default_sample_size +    0x00, 0x00, 0x00, 0x00  // default_sample_flags +  ])); + +  trackFragmentDecodeTime = box(types.tfdt, new Uint8Array([ +    0x00, // version 0 +    0x00, 0x00, 0x00, // flags +    // baseMediaDecodeTime +    (track.baseMediaDecodeTime >>> 24) & 0xFF, +    (track.baseMediaDecodeTime >>> 16) & 0xFF, +    (track.baseMediaDecodeTime >>> 8) & 0xFF, +    track.baseMediaDecodeTime & 0xFF +  ])); + +  // the data offset specifies the number of bytes from the start of +  // the containing moof to the first payload byte of the associated +  // mdat +  dataOffset = (32 + // tfhd +                16 + // tfdt +                8 +  // traf header +                16 + // mfhd +                8 +  // moof header +                8);  // mdat header + +  // audio tracks require less metadata +  if (track.type === 'audio') { +    trackFragmentRun = trun(track, dataOffset); +    return box(types.traf, +               trackFragmentHeader, +               trackFragmentDecodeTime, +               trackFragmentRun); +  } + +  // video tracks should contain an independent and disposable samples +  // box (sdtp) +  // generate one and adjust offsets to match +  sampleDependencyTable = sdtp(track); +  trackFragmentRun = trun(track, +                          sampleDependencyTable.length + dataOffset); +  return box(types.traf, +             trackFragmentHeader, +             trackFragmentDecodeTime, +             trackFragmentRun, +             sampleDependencyTable); +}; + +/** + * Generate a track box. + * @param track {object} a track definition + * @return {Uint8Array} the track box + */ +trak = function(track) { +  track.duration = track.duration || 0xffffffff; +  return box(types.trak, +             tkhd(track), +             mdia(track)); +}; + +trex = function(track) { +  var result = new Uint8Array([ +    0x00, // version 0 +    0x00, 0x00, 0x00, // flags +    (track.id & 0xFF000000) >> 24, +    (track.id & 0xFF0000) >> 16, +    (track.id & 0xFF00) >> 8, +    (track.id & 0xFF), // track_ID +    0x00, 0x00, 0x00, 0x01, // default_sample_description_index +    0x00, 0x00, 0x00, 0x00, // default_sample_duration +    0x00, 0x00, 0x00, 0x00, // default_sample_size +    0x00, 0x01, 0x00, 0x01 // default_sample_flags +  ]); +  // the last two bytes of default_sample_flags is the sample +  // degradation priority, a hint about the importance of this sample +  // relative to others. Lower the degradation priority for all sample +  // types other than video. +  if (track.type !== 'video') { +    result[result.length - 1] = 0x00; +  } + +  return box(types.trex, result); +}; + +(function() { +  var audioTrun, videoTrun, trunHeader; + +  // This method assumes all samples are uniform. That is, if a +  // duration is present for the first sample, it will be present for +  // all subsequent samples. +  // see ISO/IEC 14496-12:2012, Section 8.8.8.1 +  trunHeader = function(samples, offset) { +    var durationPresent = 0, sizePresent = 0, +        flagsPresent = 0, compositionTimeOffset = 0; + +    // trun flag constants +    if (samples.length) { +      if (samples[0].duration !== undefined) { +        durationPresent = 0x1; +      } +      if (samples[0].size !== undefined) { +        sizePresent = 0x2; +      } +      if (samples[0].flags !== undefined) { +        flagsPresent = 0x4; +      } +      if (samples[0].compositionTimeOffset !== undefined) { +        compositionTimeOffset = 0x8; +      } +    } + +    return [ +      0x00, // version 0 +      0x00, +      durationPresent | sizePresent | flagsPresent | compositionTimeOffset, +      0x01, // flags +      (samples.length & 0xFF000000) >>> 24, +      (samples.length & 0xFF0000) >>> 16, +      (samples.length & 0xFF00) >>> 8, +      samples.length & 0xFF, // sample_count +      (offset & 0xFF000000) >>> 24, +      (offset & 0xFF0000) >>> 16, +      (offset & 0xFF00) >>> 8, +      offset & 0xFF // data_offset +    ]; +  }; + +  videoTrun = function(track, offset) { +    var bytes, samples, sample, i; + +    samples = track.samples || []; +    offset += 8 + 12 + (16 * samples.length); + +    bytes = trunHeader(samples, offset); + +    for (i = 0; i < samples.length; i++) { +      sample = samples[i]; +      bytes = bytes.concat([ +        (sample.duration & 0xFF000000) >>> 24, +        (sample.duration & 0xFF0000) >>> 16, +        (sample.duration & 0xFF00) >>> 8, +        sample.duration & 0xFF, // sample_duration +        (sample.size & 0xFF000000) >>> 24, +        (sample.size & 0xFF0000) >>> 16, +        (sample.size & 0xFF00) >>> 8, +        sample.size & 0xFF, // sample_size +        (sample.flags.isLeading << 2) | sample.flags.dependsOn, +        (sample.flags.isDependedOn << 6) | +          (sample.flags.hasRedundancy << 4) | +          (sample.flags.paddingValue << 1) | +          sample.flags.isNonSyncSample, +        sample.flags.degradationPriority & 0xF0 << 8, +        sample.flags.degradationPriority & 0x0F, // sample_flags +        (sample.compositionTimeOffset & 0xFF000000) >>> 24, +        (sample.compositionTimeOffset & 0xFF0000) >>> 16, +        (sample.compositionTimeOffset & 0xFF00) >>> 8, +        sample.compositionTimeOffset & 0xFF // sample_composition_time_offset +      ]); +    } +    return box(types.trun, new Uint8Array(bytes)); +  }; + +  audioTrun = function(track, offset) { +    var bytes, samples, sample, i; + +    samples = track.samples || []; +    offset += 8 + 12 + (8 * samples.length); + +    bytes = trunHeader(samples, offset); + +    for (i = 0; i < samples.length; i++) { +      sample = samples[i]; +      bytes = bytes.concat([ +        (sample.duration & 0xFF000000) >>> 24, +        (sample.duration & 0xFF0000) >>> 16, +        (sample.duration & 0xFF00) >>> 8, +        sample.duration & 0xFF, // sample_duration +        (sample.size & 0xFF000000) >>> 24, +        (sample.size & 0xFF0000) >>> 16, +        (sample.size & 0xFF00) >>> 8, +        sample.size & 0xFF]); // sample_size +    } + +    return box(types.trun, new Uint8Array(bytes)); +  }; + +  trun = function(track, offset) { +    if (track.type === 'audio') { +      return audioTrun(track, offset); +    } else { +      return videoTrun(track, offset); +    } +  }; +})(); + +module.exports = { +  ftyp: ftyp, +  mdat: mdat, +  moof: moof, +  moov: moov, +  initSegment: function(tracks) { +    var +      fileType = ftyp(), +      movie = moov(tracks), +      result; + +    result = new Uint8Array(fileType.byteLength + movie.byteLength); +    result.set(fileType); +    result.set(movie, fileType.byteLength); +    return result; +  } +}; + +},{}],45:[function(require,module,exports){ +/** + * mux.js + * + * Copyright (c) 2015 Brightcove + * All rights reserved. + * + * A stream-based mp2t to mp4 converter. This utility can be used to + * deliver mp4s to a SourceBuffer on platforms that support native + * Media Source Extensions. + */ +'use strict'; + +var Stream = require('../utils/stream.js'); +var mp4 = require('./mp4-generator.js'); +var m2ts = require('../m2ts/m2ts.js'); +var AdtsStream = require('../codecs/adts.js'); +var H264Stream = require('../codecs/h264').H264Stream; +var AacStream = require('../aac'); + +// object types +var VideoSegmentStream, AudioSegmentStream, Transmuxer, CoalesceStream; + +// Helper functions +var +  defaultSample, +  collectDtsInfo, +  clearDtsInfo, +  calculateTrackBaseMediaDecodeTime, +  arrayEquals, +  sumFrameByteLengths; + +/** + * Default sample object + * see ISO/IEC 14496-12:2012, section 8.6.4.3 + */ +defaultSample = { +  size: 0, +  flags: { +    isLeading: 0, +    dependsOn: 1, +    isDependedOn: 0, +    hasRedundancy: 0, +    degradationPriority: 0 +  } +}; + +/** + * Compare two arrays (even typed) for same-ness + */ +arrayEquals = function(a, b) { +  var +    i; + +  if (a.length !== b.length) { +    return false; +  } + +  // compare the value of each element in the array +  for (i = 0; i < a.length; i++) { +    if (a[i] !== b[i]) { +      return false; +    } +  } + +  return true; +}; + +/** + * Sum the `byteLength` properties of the data in each AAC frame + */ +sumFrameByteLengths = function(array) { +  var +    i, +    currentObj, +    sum = 0; + +  // sum the byteLength's all each nal unit in the frame +  for (i = 0; i < array.length; i++) { +    currentObj = array[i]; +    sum += currentObj.data.byteLength; +  } + +  return sum; +}; + +/** + * Constructs a single-track, ISO BMFF media segment from AAC data + * events. The output of this stream can be fed to a SourceBuffer + * configured with a suitable initialization segment. + */ +AudioSegmentStream = function(track) { +  var +    adtsFrames = [], +    sequenceNumber = 0, +    earliestAllowedDts = 0; + +  AudioSegmentStream.prototype.init.call(this); + +  this.push = function(data) { +    collectDtsInfo(track, data); + +    if (track) { +      track.audioobjecttype = data.audioobjecttype; +      track.channelcount = data.channelcount; +      track.samplerate = data.samplerate; +      track.samplingfrequencyindex = data.samplingfrequencyindex; +      track.samplesize = data.samplesize; +    } + +    // buffer audio data until end() is called +    adtsFrames.push(data); +  }; + +  this.setEarliestDts = function(earliestDts) { +    earliestAllowedDts = earliestDts - track.timelineStartInfo.baseMediaDecodeTime; +  }; + +  this.flush = function() { +    var +      frames, +      moof, +      mdat, +      boxes; + +    // return early if no audio data has been observed +    if (adtsFrames.length === 0) { +      this.trigger('done'); +      return; +    } + +    frames = this.trimAdtsFramesByEarliestDts_(adtsFrames); + +    // we have to build the index from byte locations to +    // samples (that is, adts frames) in the audio data +    track.samples = this.generateSampleTable_(frames); + +    // concatenate the audio data to constuct the mdat +    mdat = mp4.mdat(this.concatenateFrameData_(frames)); + +    adtsFrames = []; + +    calculateTrackBaseMediaDecodeTime(track); +    moof = mp4.moof(sequenceNumber, [track]); +    boxes = new Uint8Array(moof.byteLength + mdat.byteLength); + +    // bump the sequence number for next time +    sequenceNumber++; + +    boxes.set(moof); +    boxes.set(mdat, moof.byteLength); + +    clearDtsInfo(track); + +    this.trigger('data', {track: track, boxes: boxes}); +    this.trigger('done'); +  }; + +  // If the audio segment extends before the earliest allowed dts +  // value, remove AAC frames until starts at or after the earliest +  // allowed DTS so that we don't end up with a negative baseMedia- +  // DecodeTime for the audio track +  this.trimAdtsFramesByEarliestDts_ = function(adtsFrames) { +    if (track.minSegmentDts >= earliestAllowedDts) { +      return adtsFrames; +    } + +    // We will need to recalculate the earliest segment Dts +    track.minSegmentDts = Infinity; + +    return adtsFrames.filter(function(currentFrame) { +      // If this is an allowed frame, keep it and record it's Dts +      if (currentFrame.dts >= earliestAllowedDts) { +        track.minSegmentDts = Math.min(track.minSegmentDts, currentFrame.dts); +        track.minSegmentPts = track.minSegmentDts; +        return true; +      } +      // Otherwise, discard it +      return false; +    }); +  }; + +  // generate the track's raw mdat data from an array of frames +  this.generateSampleTable_ = function(frames) { +    var +      i, +      currentFrame, +      samples = []; + +    for (i = 0; i < frames.length; i++) { +      currentFrame = frames[i]; +      samples.push({ +        size: currentFrame.data.byteLength, +        duration: 1024 // For AAC audio, all samples contain 1024 samples +      }); +    } +    return samples; +  }; + +  // generate the track's sample table from an array of frames +  this.concatenateFrameData_ = function(frames) { +    var +      i, +      currentFrame, +      dataOffset = 0, +      data = new Uint8Array(sumFrameByteLengths(frames)); + +    for (i = 0; i < frames.length; i++) { +      currentFrame = frames[i]; + +      data.set(currentFrame.data, dataOffset); +      dataOffset += currentFrame.data.byteLength; +    } +    return data; +  }; +}; + +AudioSegmentStream.prototype = new Stream(); + +/** + * Constructs a single-track, ISO BMFF media segment from H264 data + * events. The output of this stream can be fed to a SourceBuffer + * configured with a suitable initialization segment. + * @param track {object} track metadata configuration + */ +VideoSegmentStream = function(track) { +  var +    sequenceNumber = 0, +    nalUnits = [], +    config, +    pps; + +  VideoSegmentStream.prototype.init.call(this); + +  delete track.minPTS; + +  this.gopCache_ = []; + +  this.push = function(nalUnit) { +    collectDtsInfo(track, nalUnit); + +    // record the track config +    if (nalUnit.nalUnitType === 'seq_parameter_set_rbsp' && +        !config) { +      config = nalUnit.config; + +      track.width = config.width; +      track.height = config.height; +      track.sps = [nalUnit.data]; +      track.profileIdc = config.profileIdc; +      track.levelIdc = config.levelIdc; +      track.profileCompatibility = config.profileCompatibility; +    } + +    if (nalUnit.nalUnitType === 'pic_parameter_set_rbsp' && +        !pps) { +      pps = nalUnit.data; +      track.pps = [nalUnit.data]; +    } + +    // buffer video until flush() is called +    nalUnits.push(nalUnit); +  }; + +  this.flush = function() { +    var +      frames, +      gopForFusion, +      gops, +      moof, +      mdat, +      boxes; + +    // Throw away nalUnits at the start of the byte stream until +    // we find the first AUD +    while (nalUnits.length) { +      if (nalUnits[0].nalUnitType === 'access_unit_delimiter_rbsp') { +        break; +      } +      nalUnits.shift(); +    } + +    // Return early if no video data has been observed +    if (nalUnits.length === 0) { +      this.resetStream_(); +      this.trigger('done'); +      return; +    } + +    // Organize the raw nal-units into arrays that represent +    // higher-level constructs such as frames and gops +    // (group-of-pictures) +    frames = this.groupNalsIntoFrames_(nalUnits); +    gops = this.groupFramesIntoGops_(frames); + +    // If the first frame of this fragment is not a keyframe we have +    // a problem since MSE (on Chrome) requires a leading keyframe. +    // +    // We have two approaches to repairing this situation: +    // 1) GOP-FUSION: +    //    This is where we keep track of the GOPS (group-of-pictures) +    //    from previous fragments and attempt to find one that we can +    //    prepend to the current fragment in order to create a valid +    //    fragment. +    // 2) KEYFRAME-PULLING: +    //    Here we search for the first keyframe in the fragment and +    //    throw away all the frames between the start of the fragment +    //    and that keyframe. We then extend the duration and pull the +    //    PTS of the keyframe forward so that it covers the time range +    //    of the frames that were disposed of. +    // +    // #1 is far prefereable over #2 which can cause "stuttering" but +    // requires more things to be just right. +    if (!gops[0][0].keyFrame) { +      // Search for a gop for fusion from our gopCache +      gopForFusion = this.getGopForFusion_(nalUnits[0], track); + +      if (gopForFusion) { +        gops.unshift(gopForFusion); +        // Adjust Gops' metadata to account for the inclusion of the +        // new gop at the beginning +        gops.byteLength += gopForFusion.byteLength; +        gops.nalCount += gopForFusion.nalCount; +        gops.pts = gopForFusion.pts; +        gops.dts = gopForFusion.dts; +        gops.duration += gopForFusion.duration; +      } else { +        // If we didn't find a candidate gop fall back to keyrame-pulling +        gops = this.extendFirstKeyFrame_(gops); +      } +    } +    collectDtsInfo(track, gops); + +    // First, we have to build the index from byte locations to +    // samples (that is, frames) in the video data +    track.samples = this.generateSampleTable_(gops); + +    // Concatenate the video data and construct the mdat +    mdat = mp4.mdat(this.concatenateNalData_(gops)); + +    // save all the nals in the last GOP into the gop cache +    this.gopCache_.unshift({ +      gop: gops.pop(), +      pps: track.pps, +      sps: track.sps +    }); + +    // Keep a maximum of 6 GOPs in the cache +    this.gopCache_.length = Math.min(6, this.gopCache_.length); + +    // Clear nalUnits +    nalUnits = []; + +    calculateTrackBaseMediaDecodeTime(track); + +    this.trigger('timelineStartInfo', track.timelineStartInfo); + +    moof = mp4.moof(sequenceNumber, [track]); + +    // it would be great to allocate this array up front instead of +    // throwing away hundreds of media segment fragments +    boxes = new Uint8Array(moof.byteLength + mdat.byteLength); + +    // Bump the sequence number for next time +    sequenceNumber++; + +    boxes.set(moof); +    boxes.set(mdat, moof.byteLength); + +    this.trigger('data', {track: track, boxes: boxes}); + +    this.resetStream_(); + +    // Continue with the flush process now +    this.trigger('done'); +  }; + +  this.resetStream_ = function() { +    clearDtsInfo(track); + +    // reset config and pps because they may differ across segments +    // for instance, when we are rendition switching +    config = undefined; +    pps = undefined; +  }; + +  // Search for a candidate Gop for gop-fusion from the gop cache and +  // return it or return null if no good candidate was found +  this.getGopForFusion_ = function (nalUnit) { +    var +      halfSecond = 45000, // Half-a-second in a 90khz clock +      allowableOverlap = 10000, // About 3 frames @ 30fps +      nearestDistance = Infinity, +      dtsDistance, +      nearestGopObj, +      currentGop, +      currentGopObj, +      i; + +    // Search for the GOP nearest to the beginning of this nal unit +    for (i = 0; i < this.gopCache_.length; i++) { +      currentGopObj = this.gopCache_[i]; +      currentGop = currentGopObj.gop; + +      // Reject Gops with different SPS or PPS +      if (!(track.pps && arrayEquals(track.pps[0], currentGopObj.pps[0])) || +          !(track.sps && arrayEquals(track.sps[0], currentGopObj.sps[0]))) { +        continue; +      } + +      // Reject Gops that would require a negative baseMediaDecodeTime +      if (currentGop.dts < track.timelineStartInfo.dts) { +        continue; +      } + +      // The distance between the end of the gop and the start of the nalUnit +      dtsDistance = (nalUnit.dts - currentGop.dts) - currentGop.duration; + +      // Only consider GOPS that start before the nal unit and end within +      // a half-second of the nal unit +      if (dtsDistance >= -allowableOverlap && +          dtsDistance <= halfSecond) { + +        // Always use the closest GOP we found if there is more than +        // one candidate +        if (!nearestGopObj || +            nearestDistance > dtsDistance) { +          nearestGopObj = currentGopObj; +          nearestDistance = dtsDistance; +        } +      } +    } + +    if (nearestGopObj) { +      return nearestGopObj.gop; +    } +    return null; +  }; + +  this.extendFirstKeyFrame_ = function(gops) { +    var +      h, i, +      currentGop, +      newGops; + +    if (!gops[0][0].keyFrame) { +      // Remove the first GOP +      currentGop = gops.shift(); + +      gops.byteLength -=  currentGop.byteLength; +      gops.nalCount -= currentGop.nalCount; + +      // Extend the first frame of what is now the +      // first gop to cover the time period of the +      // frames we just removed +      gops[0][0].dts = currentGop.dts; +      gops[0][0].pts = currentGop.pts; +      gops[0][0].duration += currentGop.duration; +    } + +    return gops; +  }; + +  // Convert an array of nal units into an array of frames with each frame being +  // composed of the nal units that make up that frame +  // Also keep track of cummulative data about the frame from the nal units such +  // as the frame duration, starting pts, etc. +  this.groupNalsIntoFrames_ = function(nalUnits) { +    var +      i, +      currentNal, +      startPts, +      startDts, +      currentFrame = [], +      frames = []; + +    currentFrame.byteLength = 0; + +    for (i = 0; i < nalUnits.length; i++) { +      currentNal = nalUnits[i]; + +      // Split on 'aud'-type nal units +      if (currentNal.nalUnitType === 'access_unit_delimiter_rbsp') { +        // Since the very first nal unit is expected to be an AUD +        // only push to the frames array when currentFrame is not empty +        if (currentFrame.length) { +          currentFrame.duration = currentNal.dts - currentFrame.dts; +          frames.push(currentFrame); +        } +        currentFrame = [currentNal]; +        currentFrame.byteLength = currentNal.data.byteLength; +        currentFrame.pts = currentNal.pts; +        currentFrame.dts = currentNal.dts; +      } else { +        // Specifically flag key frames for ease of use later +        if (currentNal.nalUnitType === 'slice_layer_without_partitioning_rbsp_idr') { +          currentFrame.keyFrame = true; +        } +        currentFrame.duration = currentNal.dts - currentFrame.dts; +        currentFrame.byteLength += currentNal.data.byteLength; +        currentFrame.push(currentNal); +      } +    } + +    // For the last frame, use the duration of the previous frame if we +    // have nothing better to go on +    if (frames.length && +        !currentFrame.duration || +        currentFrame.duration <= 0) { +      currentFrame.duration = frames[frames.length - 1].duration; +    } + +    // Push the final frame +    frames.push(currentFrame); +    return frames; +  }; + +  // Convert an array of frames into an array of Gop with each Gop being composed +  // of the frames that make up that Gop +  // Also keep track of cummulative data about the Gop from the frames such as the +  // Gop duration, starting pts, etc. +  this.groupFramesIntoGops_ = function(frames) { +    var +      i, +      currentFrame, +      currentGop = [], +      gops = []; + +    // We must pre-set some of the values on the Gop since we +    // keep running totals of these values +    currentGop.byteLength = 0; +    currentGop.nalCount = 0; +    currentGop.duration = 0; +    currentGop.pts = frames[0].pts; +    currentGop.dts = frames[0].dts; + +    // store some metadata about all the Gops +    gops.byteLength = 0; +    gops.nalCount = 0; +    gops.duration = 0; +    gops.pts = frames[0].pts; +    gops.dts = frames[0].dts; + +    for (i = 0; i < frames.length; i++) { +      currentFrame = frames[i]; + +      if (currentFrame.keyFrame) { +        // Since the very first frame is expected to be an keyframe +        // only push to the gops array when currentGop is not empty +        if (currentGop.length) { +          gops.push(currentGop); +          gops.byteLength += currentGop.byteLength; +          gops.nalCount += currentGop.nalCount; +          gops.duration += currentGop.duration; +        } + +        currentGop = [currentFrame]; +        currentGop.nalCount = currentFrame.length; +        currentGop.byteLength = currentFrame.byteLength; +        currentGop.pts = currentFrame.pts; +        currentGop.dts = currentFrame.dts; +        currentGop.duration = currentFrame.duration; +      } else { +        currentGop.duration += currentFrame.duration; +        currentGop.nalCount += currentFrame.length; +        currentGop.byteLength += currentFrame.byteLength; +        currentGop.push(currentFrame); +      } +    } + +    if (gops.length && currentGop.duration <= 0) { +      currentGop.duration = gops[gops.length - 1].duration; +    } +    gops.byteLength += currentGop.byteLength; +    gops.nalCount += currentGop.nalCount; +    gops.duration += currentGop.duration; + +    // push the final Gop +    gops.push(currentGop); +    return gops; +  }; + +  // generate the track's sample table from an array of gops +  this.generateSampleTable_ = function(gops, baseDataOffset) { +    var +      h, i, +      sample, +      currentGop, +      currentFrame, +      currentSample, +      dataOffset = baseDataOffset || 0, +      samples = []; + +    for (h = 0; h < gops.length; h++) { +      currentGop = gops[h]; + +      for (i = 0; i < currentGop.length; i++) { +        currentFrame = currentGop[i]; + +        sample = Object.create(defaultSample); + +        sample.dataOffset = dataOffset; +        sample.compositionTimeOffset = currentFrame.pts - currentFrame.dts; +        sample.duration = currentFrame.duration; +        sample.size = 4 * currentFrame.length; // Space for nal unit size +        sample.size += currentFrame.byteLength; + +        if (currentFrame.keyFrame) { +          sample.flags.dependsOn = 2; +        } + +        dataOffset += sample.size; + +        samples.push(sample); +      } +    } +    return samples; +  }; + +  // generate the track's raw mdat data from an array of gops +  this.concatenateNalData_ = function (gops) { +    var +      h, i, j, +      currentGop, +      currentFrame, +      currentNal, +      dataOffset = 0, +      nalsByteLength = gops.byteLength, +      numberOfNals = gops.nalCount, +      totalByteLength = nalsByteLength + 4 * numberOfNals, +      data = new Uint8Array(totalByteLength), +      view = new DataView(data.buffer); + +    // For each Gop.. +    for (h = 0; h < gops.length; h++) { +      currentGop = gops[h]; + +      // For each Frame.. +      for (i = 0; i < currentGop.length; i++) { +        currentFrame = currentGop[i]; + +        // For each NAL.. +        for (j = 0; j < currentFrame.length; j++) { +          currentNal = currentFrame[j]; + +          view.setUint32(dataOffset, currentNal.data.byteLength); +          dataOffset += 4; +          data.set(currentNal.data, dataOffset); +          dataOffset += currentNal.data.byteLength; +        } +      } +    } +    return data; +  }; +}; + +VideoSegmentStream.prototype = new Stream(); + +/** + * Store information about the start and end of the track and the + * duration for each frame/sample we process in order to calculate + * the baseMediaDecodeTime + */ +collectDtsInfo = function (track, data) { +  if (typeof data.pts === 'number') { +    if (track.timelineStartInfo.pts === undefined) { +      track.timelineStartInfo.pts = data.pts; +    } + +    if (track.minSegmentPts === undefined) { +      track.minSegmentPts = data.pts; +    } else { +      track.minSegmentPts = Math.min(track.minSegmentPts, data.pts); +    } + +    if (track.maxSegmentPts === undefined) { +      track.maxSegmentPts = data.pts; +    } else { +      track.maxSegmentPts = Math.max(track.maxSegmentPts, data.pts); +    } +  } + +  if (typeof data.dts === 'number') { +    if (track.timelineStartInfo.dts === undefined) { +      track.timelineStartInfo.dts = data.dts; +    } + +    if (track.minSegmentDts === undefined) { +      track.minSegmentDts = data.dts; +    } else { +      track.minSegmentDts = Math.min(track.minSegmentDts, data.dts); +    } + +    if (track.maxSegmentDts === undefined) { +      track.maxSegmentDts = data.dts; +    } else { +      track.maxSegmentDts = Math.max(track.maxSegmentDts, data.dts); +    } +  } +}; + +/** + * Clear values used to calculate the baseMediaDecodeTime between + * tracks + */ +clearDtsInfo = function (track) { +  delete track.minSegmentDts; +  delete track.maxSegmentDts; +  delete track.minSegmentPts; +  delete track.maxSegmentPts; +}; + +/** + * Calculate the track's baseMediaDecodeTime based on the earliest + * DTS the transmuxer has ever seen and the minimum DTS for the + * current track + */ +calculateTrackBaseMediaDecodeTime = function (track) { +  var +    oneSecondInPTS = 90000, // 90kHz clock +    scale, +    // Calculate the distance, in time, that this segment starts from the start +    // of the timeline (earliest time seen since the transmuxer initialized) +    timeSinceStartOfTimeline = track.minSegmentDts - track.timelineStartInfo.dts, +    // Calculate the first sample's effective compositionTimeOffset +    firstSampleCompositionOffset = track.minSegmentPts - track.minSegmentDts; + +  // track.timelineStartInfo.baseMediaDecodeTime is the location, in time, where +  // we want the start of the first segment to be placed +  track.baseMediaDecodeTime = track.timelineStartInfo.baseMediaDecodeTime; + +  // Add to that the distance this segment is from the very first +  track.baseMediaDecodeTime += timeSinceStartOfTimeline; + +  // Subtract this segment's "compositionTimeOffset" so that the first frame of +  // this segment is displayed exactly at the `baseMediaDecodeTime` or at the +  // end of the previous segment +  track.baseMediaDecodeTime -= firstSampleCompositionOffset; + +  // baseMediaDecodeTime must not become negative +  track.baseMediaDecodeTime = Math.max(0, track.baseMediaDecodeTime); + +  if (track.type === 'audio') { +    // Audio has a different clock equal to the sampling_rate so we need to +    // scale the PTS values into the clock rate of the track +    scale = track.samplerate / oneSecondInPTS; +    track.baseMediaDecodeTime *= scale; +    track.baseMediaDecodeTime = Math.floor(track.baseMediaDecodeTime); +  } +}; + +/** + * A Stream that can combine multiple streams (ie. audio & video) + * into a single output segment for MSE. Also supports audio-only + * and video-only streams. + */ +CoalesceStream = function(options) { +  // Number of Tracks per output segment +  // If greater than 1, we combine multiple +  // tracks into a single segment +  this.numberOfTracks = 0; +  this.metadataStream = options.metadataStream; + +  if (typeof options.remux !== 'undefined') { +    this.remuxTracks = !!options.remux; +  } else { +    this.remuxTracks = true; +  } + +  this.pendingTracks = []; +  this.videoTrack = null; +  this.pendingBoxes = []; +  this.pendingCaptions = []; +  this.pendingMetadata = []; +  this.pendingBytes = 0; +  this.emittedTracks = 0; + +  CoalesceStream.prototype.init.call(this); + +  // Take output from multiple +  this.push = function(output) { +    // buffer incoming captions until the associated video segment +    // finishes +    if (output.text) { +      return this.pendingCaptions.push(output); +    } +    // buffer incoming id3 tags until the final flush +    if (output.frames) { +      return this.pendingMetadata.push(output); +    } + +    // Add this track to the list of pending tracks and store +    // important information required for the construction of +    // the final segment +    this.pendingTracks.push(output.track); +    this.pendingBoxes.push(output.boxes); +    this.pendingBytes += output.boxes.byteLength; + +    if (output.track.type === 'video') { +      this.videoTrack = output.track; +    } +    if (output.track.type === 'audio') { +      this.audioTrack = output.track; +    } +  }; +}; + +CoalesceStream.prototype = new Stream(); +CoalesceStream.prototype.flush = function() { +  var +    offset = 0, +    event = { +      captions: [], +      metadata: [] +    }, +    caption, +    id3, +    initSegment, +    timelineStartPts = 0, +    i; + +  // Return until we have enough tracks from the pipeline to remux +  if (this.pendingTracks.length === 0 || +     (this.remuxTracks && this.pendingTracks.length < this.numberOfTracks)) { +    return; +  } + +  if (this.videoTrack) { +    timelineStartPts = this.videoTrack.timelineStartInfo.pts; +  } else if (this.audioTrack) { +    timelineStartPts = this.audioTrack.timelineStartInfo.pts; +  } + +  if (this.pendingTracks.length === 1) { +    event.type = this.pendingTracks[0].type; +  } else { +    event.type = 'combined'; +  } +  this.emittedTracks += this.pendingTracks.length; + +  initSegment = mp4.initSegment(this.pendingTracks); + +  // Create a new typed array large enough to hold the init +  // segment and all tracks +  event.data = new Uint8Array(initSegment.byteLength + +                              this.pendingBytes); + +  // Create an init segment containing a moov +  // and track definitions +  event.data.set(initSegment); +  offset += initSegment.byteLength; + +  // Append each moof+mdat (one per track) after the init segment +  for (i = 0; i < this.pendingBoxes.length; i++) { +    event.data.set(this.pendingBoxes[i], offset); +    offset += this.pendingBoxes[i].byteLength; +  } + +  // Translate caption PTS times into second offsets into the +  // video timeline for the segment +  for (i = 0; i < this.pendingCaptions.length; i++) { +    caption = this.pendingCaptions[i]; +    caption.startTime = (caption.startPts - timelineStartPts); +    caption.startTime /= 90e3; +    caption.endTime = (caption.endPts - timelineStartPts); +    caption.endTime /= 90e3; +    event.captions.push(caption); +  } + +  // Translate ID3 frame PTS times into second offsets into the +  // video timeline for the segment +  for (i = 0; i < this.pendingMetadata.length; i++) { +    id3 = this.pendingMetadata[i]; +    id3.cueTime = (id3.pts - timelineStartPts); +    id3.cueTime /= 90e3; +    event.metadata.push(id3); +  } +  // We add this to every single emitted segment even though we only need +  // it for the first +  event.metadata.dispatchType = this.metadataStream.dispatchType; + +  // Reset stream state +  this.pendingTracks.length = 0; +  this.videoTrack = null; +  this.pendingBoxes.length = 0; +  this.pendingCaptions.length = 0; +  this.pendingBytes = 0; +  this.pendingMetadata.length = 0; + +  // Emit the built segment +  this.trigger('data', event); + +  // Only emit `done` if all tracks have been flushed and emitted +  if (this.emittedTracks >= this.numberOfTracks) { +    this.trigger('done'); +    this.emittedTracks = 0; +  } +}; +/** + * A Stream that expects MP2T binary data as input and produces + * corresponding media segments, suitable for use with Media Source + * Extension (MSE) implementations that support the ISO BMFF byte + * stream format, like Chrome. + */ +Transmuxer = function(options) { +  var +    self = this, +    videoTrack, +    audioTrack, +    packetStream, parseStream, elementaryStream, +    adtsStream, h264Stream,aacStream, +    videoSegmentStream, audioSegmentStream, captionStream, +    coalesceStream, +    headOfPipeline; + +  this.setupAacPipeline = function() { +    this.metadataStream = new m2ts.MetadataStream(); +    options.metadataStream = this.metadataStream; + +    // set up the parsing pipeline +    aacStream = new AacStream(); +    adtsStream = new AdtsStream(); +    coalesceStream = new CoalesceStream(options); +    headOfPipeline = aacStream; + +    aacStream.pipe(adtsStream); +    aacStream.pipe(this.metadataStream); +    this.metadataStream.pipe(coalesceStream); + +    this.metadataStream.on('timestamp', function(frame) { +      aacStream.setTimestamp(frame.timestamp); +    }); +    this.addAacListener(); +  }; + + +  this.addAacListener = function() { +    aacStream.on('data', function(data) { +      var i; + +      if (data.type === 'timed-metadata') { +        var track = { +            timelineStartInfo: { +            baseMediaDecodeTime: 0 }, +            codec: 'adts', +            type: 'audio' }; + +        if (track && !audioSegmentStream) { +          // hook up the audio segment stream to the first track with aac data +          coalesceStream.numberOfTracks++; +          audioSegmentStream = new AudioSegmentStream(track); +          // Set up the final part of the audio pipeline +          adtsStream +            .pipe(audioSegmentStream) +            .pipe(coalesceStream); +        } +      } +    }); +  }; + +  this.setupTsPipeline = function() { +    this.metadataStream = new m2ts.MetadataStream(); + +    options.metadataStream = this.metadataStream; + +    // set up the parsing pipeline +    packetStream = new m2ts.TransportPacketStream(); +    parseStream = new m2ts.TransportParseStream(); +    elementaryStream = new m2ts.ElementaryStream(); +    adtsStream = new AdtsStream(); +    h264Stream = new H264Stream(); +    captionStream = new m2ts.CaptionStream(); +    coalesceStream = new CoalesceStream(options); +    headOfPipeline = packetStream; + +    // disassemble MPEG2-TS packets into elementary streams +    packetStream +      .pipe(parseStream) +      .pipe(elementaryStream); + +    // !!THIS ORDER IS IMPORTANT!! +    // demux the streams +    elementaryStream +      .pipe(h264Stream); +    elementaryStream +      .pipe(adtsStream); + +    elementaryStream +      .pipe(this.metadataStream) +      .pipe(coalesceStream); + +    // Hook up CEA-608/708 caption stream +    h264Stream.pipe(captionStream) +      .pipe(coalesceStream); +    this.addTsListener(); +  }; + +  this.addTsListener = function() { + +    elementaryStream.on('data', function(data) { +      var i; + +      if (data.type === 'metadata') { +        i = data.tracks.length; + +        // scan the tracks listed in the metadata +        while (i--) { +          if (!videoTrack && data.tracks[i].type === 'video') { +            videoTrack = data.tracks[i]; +            videoTrack.timelineStartInfo.baseMediaDecodeTime = self.baseMediaDecodeTime; +          } else if (!audioTrack && data.tracks[i].type === 'audio') { +            audioTrack = data.tracks[i]; +            audioTrack.timelineStartInfo.baseMediaDecodeTime = self.baseMediaDecodeTime; +          } +        } + +        // hook up the video segment stream to the first track with h264 data +        if (videoTrack && !videoSegmentStream) { +          coalesceStream.numberOfTracks++; +          videoSegmentStream = new VideoSegmentStream(videoTrack); + +          videoSegmentStream.on('timelineStartInfo', function(timelineStartInfo){ +          // When video emits timelineStartInfo data after a flush, we forward that +          // info to the AudioSegmentStream, if it exists, because video timeline +          // data takes precedence. +            if (audioTrack) { +              audioTrack.timelineStartInfo = timelineStartInfo; +              // On the first segment we trim AAC frames that exist before the +              // very earliest DTS we have seen in video because Chrome will +              // interpret any video track with a baseMediaDecodeTime that is +              // non-zero as a gap. +              audioSegmentStream.setEarliestDts(timelineStartInfo.dts); +            } +          }); + +          // Set up the final part of the video pipeline +          h264Stream +            .pipe(videoSegmentStream) +            .pipe(coalesceStream); +        } + +        if (audioTrack && !audioSegmentStream) { +          // hook up the audio segment stream to the first track with aac data +          coalesceStream.numberOfTracks++; +          audioSegmentStream = new AudioSegmentStream(audioTrack); + +          // Set up the final part of the audio pipeline +          adtsStream +            .pipe(audioSegmentStream) +            .pipe(coalesceStream); +        } +      } +    }); +  }; +  Transmuxer.prototype.init.call(this); +  options = options || {}; + +  this.baseMediaDecodeTime = options.baseMediaDecodeTime || 0; + +  // expose the metadata stream +  if (options.aacfile === undefined) { +    this.setupTsPipeline(); +  } else { +    this.setupAacPipeline(); +  } + +  // hook up the segment streams once track metadata is delivered +  this.setBaseMediaDecodeTime = function (baseMediaDecodeTime) { +    this.baseMediaDecodeTime = baseMediaDecodeTime; +    if (audioTrack) { +      audioTrack.timelineStartInfo.dts = undefined; +      audioTrack.timelineStartInfo.pts = undefined; +      clearDtsInfo(audioTrack); +      audioTrack.timelineStartInfo.baseMediaDecodeTime = baseMediaDecodeTime; +    } +    if (videoTrack) { +      videoSegmentStream.gopCache_ = []; +      videoTrack.timelineStartInfo.dts = undefined; +      videoTrack.timelineStartInfo.pts = undefined; +      clearDtsInfo(videoTrack); +      videoTrack.timelineStartInfo.baseMediaDecodeTime = baseMediaDecodeTime; +    } +  }; + +  // feed incoming data to the front of the parsing pipeline +  this.push = function(data) { +    headOfPipeline.push(data); +  }; + +  // flush any buffered data +  this.flush = function() { +    // Start at the top of the pipeline and flush all pending work +    headOfPipeline.flush(); +  }; + +  // Re-emit any data coming from the coalesce stream to the outside world +  coalesceStream.on('data', function (data) { +    self.trigger('data', data); +  }); +  // Let the consumer know we have finished flushing the entire pipeline +  coalesceStream.on('done', function () { +    self.trigger('done'); +  }); +}; +Transmuxer.prototype = new Stream(); + +module.exports = { +  Transmuxer: Transmuxer, +  VideoSegmentStream: VideoSegmentStream, +  AudioSegmentStream: AudioSegmentStream, +}; + +},{"../aac":30,"../codecs/adts.js":31,"../codecs/h264":32,"../m2ts/m2ts.js":40,"../utils/stream.js":49,"./mp4-generator.js":44}],46:[function(require,module,exports){ +'use strict'; + +var +  tagTypes = { +    0x08: 'audio', +    0x09: 'video', +    0x12: 'metadata' +  }, +  hex = function (val) { +    return '0x' + ('00' + val.toString(16)).slice(-2).toUpperCase(); +  }, +  hexStringList = function (data) { +    var arr = [], i; +    /* jshint -W086 */ +    while(data.byteLength > 0) { +      i = 0; +      switch(data.byteLength) { +        default: +          arr.push(hex(data[i++])); +        case 7: +          arr.push(hex(data[i++])); +        case 6: +          arr.push(hex(data[i++])); +        case 5: +          arr.push(hex(data[i++])); +        case 4: +          arr.push(hex(data[i++])); +        case 3: +          arr.push(hex(data[i++])); +        case 2: +          arr.push(hex(data[i++])); +        case 1: +          arr.push(hex(data[i++])); +      } +      data = data.subarray(i); +    } +    /* jshint +W086 */ +    return arr.join(' '); +  }, +  parseAVCTag = function (tag, obj) { +    var +      avcPacketTypes = [ +        'AVC Sequence Header', +        'AVC NALU', +        'AVC End-of-Sequence' +      ], +      nalUnitTypes = [ +        'unspecified', +        'slice_layer_without_partitioning', +        'slice_data_partition_a_layer', +        'slice_data_partition_b_layer', +        'slice_data_partition_c_layer', +        'slice_layer_without_partitioning_idr', +        'sei', +        'seq_parameter_set', +        'pic_parameter_set', +        'access_unit_delimiter', +        'end_of_seq', +        'end_of_stream', +        'filler', +        'seq_parameter_set_ext', +        'prefix_nal_unit', +        'subset_seq_parameter_set', +        'reserved', +        'reserved', +        'reserved' +      ], +      compositionTime = (tag[1] & parseInt('01111111', 2) << 16) | (tag[2] << 8) | tag[3]; + +    obj = obj || {}; + +    obj.avcPacketType = avcPacketTypes[tag[0]]; +    obj.CompositionTime = (tag[1] & parseInt('10000000', 2)) ? -compositionTime : compositionTime; + +    if (tag[0] === 1) { +      obj.nalUnitTypeRaw = hexStringList(tag.subarray(4, 100)); +    } else { +      obj.data = hexStringList(tag.subarray(4)); +    } + +    return obj; +  }, +  parseVideoTag = function (tag, obj) { +    var +      frameTypes = [ +        'Unknown', +        'Keyframe (for AVC, a seekable frame)', +        'Inter frame (for AVC, a nonseekable frame)', +        'Disposable inter frame (H.263 only)', +        'Generated keyframe (reserved for server use only)', +        'Video info/command frame' +      ], +      codecIDs = [ +        'JPEG (currently unused)', +        'Sorenson H.263', +        'Screen video', +        'On2 VP6', +        'On2 VP6 with alpha channel', +        'Screen video version 2', +        'AVC' +      ], +      codecID = tag[0] & parseInt('00001111', 2); + +    obj = obj || {}; + +    obj.frameType = frameTypes[(tag[0] & parseInt('11110000', 2)) >>> 4]; +    obj.codecID = codecID; + +    if (codecID === 7) { +      return parseAVCTag(tag.subarray(1), obj); +    } +    return obj; +  }, +  parseAACTag = function (tag, obj) { +    var packetTypes = [ +      'AAC Sequence Header', +      'AAC Raw' +    ]; + +    obj = obj || {}; + +    obj.aacPacketType = packetTypes[tag[0]]; +    obj.data = hexStringList(tag.subarray(1)); + +    return obj; +  }, +  parseAudioTag = function (tag, obj) { +    var +      formatTable = [ +        'Linear PCM, platform endian', +        'ADPCM', +        'MP3', +        'Linear PCM, little endian', +        'Nellymoser 16-kHz mono', +        'Nellymoser 8-kHz mono', +        'Nellymoser', +        'G.711 A-law logarithmic PCM', +        'G.711 mu-law logarithmic PCM', +        'reserved', +        'AAC', +        'Speex', +        'MP3 8-Khz', +        'Device-specific sound' +      ], +      samplingRateTable = [ +        '5.5-kHz', +        '11-kHz', +        '22-kHz', +        '44-kHz' +      ], +      soundFormat = (tag[0] & parseInt('11110000', 2)) >>> 4; + +    obj = obj || {}; + +    obj.soundFormat = formatTable[soundFormat]; +    obj.soundRate = samplingRateTable[(tag[0] & parseInt('00001100', 2)) >>> 2]; +    obj.soundSize = ((tag[0] & parseInt('00000010', 2)) >>> 1) ? '16-bit' : '8-bit'; +    obj.soundType = (tag[0] & parseInt('00000001', 2)) ? 'Stereo' : 'Mono'; + +    if (soundFormat === 10) { +      return parseAACTag(tag.subarray(1), obj); +    } +    return obj; +  }, +  parseGenericTag = function (tag) { +    return { +      tagType: tagTypes[tag[0]], +      dataSize: (tag[1] << 16) | (tag[2] << 8) | tag[3], +      timestamp: (tag[7] << 24) | (tag[4] << 16) | (tag[5] << 8) | tag[6], +      streamID: (tag[8] << 16) | (tag[9] << 8) | tag[10] +    }; +  }, +  inspectFlvTag = function (tag) { +    var header = parseGenericTag(tag); +    switch (tag[0]) { +      case 0x08: +        parseAudioTag(tag.subarray(11), header); +        break; +      case 0x09: +        parseVideoTag(tag.subarray(11), header); +        break; +      case 0x12: +    } +    return header; +  }, +  inspectFlv = function (bytes) { +    var i = 9, // header +        dataSize, +        parsedResults = [], +        tag; + +    // traverse the tags +    i += 4; // skip previous tag size +    while (i < bytes.byteLength) { +      dataSize = bytes[i + 1] << 16; +      dataSize |= bytes[i + 2] << 8; +      dataSize |= bytes[i + 3]; +      dataSize += 11; + +      tag = bytes.subarray(i, i + dataSize); +      parsedResults.push(inspectFlvTag(tag)); +      i += dataSize + 4; +    } +    return parsedResults; +  }, +  textifyFlv = function (flvTagArray) { +    return JSON.stringify(flvTagArray, null, 2); +  }; + +module.exports = { +  inspectTag: inspectFlvTag, +  inspect: inspectFlv, +  textify: textifyFlv +}; + +},{}],47:[function(require,module,exports){ +(function (global){ +'use strict'; + +var +  inspectMp4, +  textifyMp4, +  /** +   * Returns the string representation of an ASCII encoded four byte buffer. +   * @param buffer {Uint8Array} a four-byte buffer to translate +   * @return {string} the corresponding string +   */ +  parseType = function(buffer) { +    var result = ''; +    result += String.fromCharCode(buffer[0]); +    result += String.fromCharCode(buffer[1]); +    result += String.fromCharCode(buffer[2]); +    result += String.fromCharCode(buffer[3]); +    return result; +  }, +  parseMp4Date = function(seconds) { +    return new Date(seconds * 1000 - 2082844800000); +  }, +  parseSampleFlags = function(flags) { +    return { +      isLeading: (flags[0] & 0x0c) >>> 2, +      dependsOn: flags[0] & 0x03, +      isDependedOn: (flags[1] & 0xc0) >>> 6, +      hasRedundancy: (flags[1] & 0x30) >>> 4, +      paddingValue: (flags[1] & 0x0e) >>> 1, +      isNonSyncSample: flags[1] & 0x01, +      degradationPriority: (flags[2] << 8) | flags[3] +    }; +  }, +  nalParse = function(avcStream) { +    var +      avcView = new DataView(avcStream.buffer, avcStream.byteOffset, avcStream.byteLength), +      result = [], +      i, +      length; +    for (i = 0; i + 4 < avcStream.length; i += length) { +      length = avcView.getUint32(i); +      i += 4; + +      // bail if this doesn't appear to be an H264 stream +      if (length <= 0) { +        return; +      } + +      switch(avcStream[i] & 0x1F) { +      case 0x01: +        result.push('slice_layer_without_partitioning_rbsp'); +        break; +      case 0x05: +        result.push('slice_layer_without_partitioning_rbsp_idr'); +        break; +      case 0x06: +        result.push('sei_rbsp'); +        break; +      case 0x07: +        result.push('seq_parameter_set_rbsp'); +        break; +      case 0x08: +        result.push('pic_parameter_set_rbsp'); +        break; +      case 0x09: +        result.push('access_unit_delimiter_rbsp'); +        break; +      default: +        result.push(avcStream[i] & 0x1F); +        break; +      } +    } +    return result; +  }, + +  // registry of handlers for individual mp4 box types +  parse = { +    // codingname, not a first-class box type. stsd entries share the +    // same format as real boxes so the parsing infrastructure can be +    // shared +    avc1: function(data) { +      var view = new DataView(data.buffer, data.byteOffset, data.byteLength); +      return { +        dataReferenceIndex: view.getUint16(6), +        width:  view.getUint16(24), +        height: view.getUint16(26), +        horizresolution: view.getUint16(28) + (view.getUint16(30) / 16), +        vertresolution: view.getUint16(32) + (view.getUint16(34) / 16), +        frameCount: view.getUint16(40), +        depth: view.getUint16(74), +        config: inspectMp4(data.subarray(78, data.byteLength)) +      }; +    }, +    avcC: function(data) { +      var +        view = new DataView(data.buffer, data.byteOffset, data.byteLength), +        result = { +          configurationVersion: data[0], +          avcProfileIndication: data[1], +          profileCompatibility: data[2], +          avcLevelIndication: data[3], +          lengthSizeMinusOne: data[4] & 0x03, +          sps: [], +          pps: [] +        }, +        numOfSequenceParameterSets = data[5] & 0x1f, +        numOfPictureParameterSets, +        nalSize, +        offset, +        i; + +      // iterate past any SPSs +      offset = 6; +      for (i = 0; i < numOfSequenceParameterSets; i++) { +        nalSize = view.getUint16(offset); +        offset += 2; +        result.sps.push(new Uint8Array(data.subarray(offset, offset + nalSize))); +        offset += nalSize; +      } +      // iterate past any PPSs +      numOfPictureParameterSets = data[offset]; +      offset++; +      for (i = 0; i < numOfPictureParameterSets; i++) { +        nalSize = view.getUint16(offset); +        offset += 2; +        result.pps.push(new Uint8Array(data.subarray(offset, offset + nalSize))); +        offset += nalSize; +      } +      return result; +    }, +    btrt: function(data) { +      var view = new DataView(data.buffer, data.byteOffset, data.byteLength); +      return { +        bufferSizeDB: view.getUint32(0), +        maxBitrate: view.getUint32(4), +        avgBitrate: view.getUint32(8) +      }; +    }, +    esds: function(data) { +      return { +        version: data[0], +        flags: new Uint8Array(data.subarray(1, 4)), +        esId: (data[6] << 8) | data[7], +        streamPriority: data[8] & 0x1f, +        decoderConfig: { +          objectProfileIndication: data[11], +          streamType: (data[12] >>> 2) & 0x3f, +          bufferSize: (data[13] << 16) | (data[14] << 8) | data[15], +          maxBitrate: (data[16] << 24) | +            (data[17] << 16) | +            (data[18] <<  8) | +            data[19], +          avgBitrate: (data[20] << 24) | +            (data[21] << 16) | +            (data[22] <<  8) | +            data[23], +          decoderConfigDescriptor: { +            tag: data[24], +            length: data[25], +            audioObjectType: (data[26] >>> 3) & 0x1f, +            samplingFrequencyIndex: ((data[26] & 0x07) << 1) | +              ((data[27] >>> 7) & 0x01), +            channelConfiguration: (data[27] >>> 3) & 0x0f +          } +        } +      }; +    }, +    ftyp: function(data) { +      var +        view = new DataView(data.buffer, data.byteOffset, data.byteLength), +        result = { +          majorBrand: parseType(data.subarray(0, 4)), +          minorVersion: view.getUint32(4), +          compatibleBrands: [] +        }, +        i = 8; +      while (i < data.byteLength) { +        result.compatibleBrands.push(parseType(data.subarray(i, i + 4))); +        i += 4; +      } +      return result; +    }, +    dinf: function(data) { +      return { +        boxes: inspectMp4(data) +      }; +    }, +    dref: function(data) { +      return { +        version: data[0], +        flags: new Uint8Array(data.subarray(1, 4)), +        dataReferences: inspectMp4(data.subarray(8)) +      }; +    }, +    hdlr: function(data) { +      var +        view = new DataView(data.buffer, data.byteOffset, data.byteLength), +        language, +        result = { +          version: view.getUint8(0), +          flags: new Uint8Array(data.subarray(1, 4)), +          handlerType: parseType(data.subarray(8, 12)), +          name: '' +        }, +        i = 8; + +      // parse out the name field +      for (i = 24; i < data.byteLength; i++) { +        if (data[i] === 0x00) { +          // the name field is null-terminated +          i++; +          break; +        } +        result.name += String.fromCharCode(data[i]); +      } +      // decode UTF-8 to javascript's internal representation +      // see http://ecmanaut.blogspot.com/2006/07/encoding-decoding-utf8-in-javascript.html +      result.name = decodeURIComponent(global.escape(result.name)); + +      return result; +    }, +    mdat: function(data) { +      return { +        byteLength: data.byteLength, +        nals: nalParse(data) +      }; +    }, +    mdhd: function(data) { +      var +        view = new DataView(data.buffer, data.byteOffset, data.byteLength), +        i = 4, +        language, +        result = { +          version: view.getUint8(0), +          flags: new Uint8Array(data.subarray(1, 4)), +          language: '' +        }; +      if (result.version === 1) { +        i += 4; +        result.creationTime = parseMp4Date(view.getUint32(i)); // truncating top 4 bytes +        i += 8; +        result.modificationTime = parseMp4Date(view.getUint32(i)); // truncating top 4 bytes +        i += 4; +        result.timescale = view.getUint32(i); +        i += 8; +        result.duration = view.getUint32(i); // truncating top 4 bytes +      } else { +        result.creationTime = parseMp4Date(view.getUint32(i)); +        i += 4; +        result.modificationTime = parseMp4Date(view.getUint32(i)); +        i += 4; +        result.timescale = view.getUint32(i); +        i += 4; +        result.duration = view.getUint32(i); +      } +      i += 4; +      // language is stored as an ISO-639-2/T code in an array of three 5-bit fields +      // each field is the packed difference between its ASCII value and 0x60 +      language = view.getUint16(i); +      result.language += String.fromCharCode((language >> 10) + 0x60); +      result.language += String.fromCharCode(((language & 0x03c0) >> 5) + 0x60); +      result.language += String.fromCharCode((language & 0x1f) + 0x60); + +      return result; +    }, +    mdia: function(data) { +      return { +        boxes: inspectMp4(data) +      }; +    }, +    mfhd: function(data) { +      return { +        version: data[0], +        flags: new Uint8Array(data.subarray(1, 4)), +        sequenceNumber: (data[4] << 24) | +          (data[5] << 16) | +          (data[6] << 8) | +          (data[7]) +      }; +    }, +    minf: function(data) { +      return { +        boxes: inspectMp4(data) +      }; +    }, +    // codingname, not a first-class box type. stsd entries share the +    // same format as real boxes so the parsing infrastructure can be +    // shared +    mp4a: function(data) { +      var +        view = new DataView(data.buffer, data.byteOffset, data.byteLength), +        result = { +          // 6 bytes reserved +          dataReferenceIndex: view.getUint16(6), +          // 4 + 4 bytes reserved +          channelcount: view.getUint16(16), +          samplesize: view.getUint16(18), +          // 2 bytes pre_defined +          // 2 bytes reserved +          samplerate: view.getUint16(24) + (view.getUint16(26) / 65536) +        }; + +      // if there are more bytes to process, assume this is an ISO/IEC +      // 14496-14 MP4AudioSampleEntry and parse the ESDBox +      if (data.byteLength > 28) { +        result.streamDescriptor = inspectMp4(data.subarray(28))[0]; +      } +      return result; +    }, +    moof: function(data) { +      return { +        boxes: inspectMp4(data) +      }; +    }, +    moov: function(data) { +      return { +        boxes: inspectMp4(data) +      }; +    }, +    mvex: function(data) { +      return { +        boxes: inspectMp4(data) +      }; +    }, +    mvhd: function(data) { +      var +        view = new DataView(data.buffer, data.byteOffset, data.byteLength), +        i = 4, +        result = { +          version: view.getUint8(0), +          flags: new Uint8Array(data.subarray(1, 4)) +        }; + +      if (result.version === 1) { +        i += 4; +        result.creationTime = parseMp4Date(view.getUint32(i)); // truncating top 4 bytes +        i += 8; +        result.modificationTime = parseMp4Date(view.getUint32(i)); // truncating top 4 bytes +        i += 4; +        result.timescale = view.getUint32(i); +        i += 8; +        result.duration = view.getUint32(i); // truncating top 4 bytes +      } else { +        result.creationTime = parseMp4Date(view.getUint32(i)); +        i += 4; +        result.modificationTime = parseMp4Date(view.getUint32(i)); +        i += 4; +        result.timescale = view.getUint32(i); +        i += 4; +        result.duration = view.getUint32(i); +      } +      i += 4; + +      // convert fixed-point, base 16 back to a number +      result.rate = view.getUint16(i) + (view.getUint16(i + 2) / 16); +      i += 4; +      result.volume = view.getUint8(i) + (view.getUint8(i + 1) / 8); +      i += 2; +      i += 2; +      i += 2 * 4; +      result.matrix = new Uint32Array(data.subarray(i, i + (9 * 4))); +      i += 9 * 4; +      i += 6 * 4; +      result.nextTrackId = view.getUint32(i); +      return result; +    }, +    pdin: function(data) { +      var view = new DataView(data.buffer, data.byteOffset, data.byteLength); +      return { +        version: view.getUint8(0), +        flags: new Uint8Array(data.subarray(1, 4)), +        rate: view.getUint32(4), +        initialDelay: view.getUint32(8) +      }; +    }, +    sdtp: function(data) { +      var +        result = { +          version: data[0], +          flags: new Uint8Array(data.subarray(1, 4)), +          samples: [] +        }, i; + +      for (i = 4; i < data.byteLength; i++) { +        result.samples.push({ +          dependsOn: (data[i] & 0x30) >> 4, +          isDependedOn: (data[i] & 0x0c) >> 2, +          hasRedundancy: data[i] & 0x03 +        }); +      } +      return result; +    }, +    sidx: function(data) { +      var view = new DataView(data.buffer, data.byteOffset, data.byteLength), +          result = { +            version: data[0], +            flags: new Uint8Array(data.subarray(1, 4)), +            references: [], +            referenceId: view.getUint32(4), +            timescale: view.getUint32(8), +            earliestPresentationTime: view.getUint32(12), +            firstOffset: view.getUint32(16) +          }, +          referenceCount = view.getUint16(22), +          i; + +      for (i = 24; referenceCount; i += 12, referenceCount-- ) { +        result.references.push({ +          referenceType: (data[i] & 0x80) >>> 7, +          referencedSize: view.getUint32(i) & 0x7FFFFFFF, +          subsegmentDuration: view.getUint32(i + 4), +          startsWithSap: !!(data[i + 8] & 0x80), +          sapType: (data[i + 8] & 0x70) >>> 4, +          sapDeltaTime: view.getUint32(i + 8) & 0x0FFFFFFF +        }); +      } + +      return result; +    }, +    smhd: function(data) { +      return { +        version: data[0], +        flags: new Uint8Array(data.subarray(1, 4)), +        balance: data[4] + (data[5] / 256) +      }; +    }, +    stbl: function(data) { +      return { +        boxes: inspectMp4(data) +      }; +    }, +    stco: function(data) { +      var +        view = new DataView(data.buffer, data.byteOffset, data.byteLength), +        result = { +          version: data[0], +          flags: new Uint8Array(data.subarray(1, 4)), +          chunkOffsets: [] +        }, +        entryCount = view.getUint32(4), +        i; +      for (i = 8; entryCount; i += 4, entryCount--) { +        result.chunkOffsets.push(view.getUint32(i)); +      } +      return result; +    }, +    stsc: function(data) { +      var +        view = new DataView(data.buffer, data.byteOffset, data.byteLength), +        entryCount = view.getUint32(4), +        result = { +          version: data[0], +          flags: new Uint8Array(data.subarray(1, 4)), +          sampleToChunks: [] +        }, +        i; +      for (i = 8; entryCount; i += 12, entryCount--) { +        result.sampleToChunks.push({ +          firstChunk: view.getUint32(i), +          samplesPerChunk: view.getUint32(i + 4), +          sampleDescriptionIndex: view.getUint32(i + 8) +        }); +      } +      return result; +    }, +    stsd: function(data) { +      return { +        version: data[0], +        flags: new Uint8Array(data.subarray(1, 4)), +        sampleDescriptions: inspectMp4(data.subarray(8)) +      }; +    }, +    stsz: function(data) { +      var +        view = new DataView(data.buffer, data.byteOffset, data.byteLength), +        result = { +          version: data[0], +          flags: new Uint8Array(data.subarray(1, 4)), +          sampleSize: view.getUint32(4), +          entries: [] +        }, +        i; +      for (i = 12; i < data.byteLength; i += 4) { +        result.entries.push(view.getUint32(i)); +      } +      return result; +    }, +    stts: function(data) { +      var +        view = new DataView(data.buffer, data.byteOffset, data.byteLength), +        result = { +          version: data[0], +          flags: new Uint8Array(data.subarray(1, 4)), +          timeToSamples: [] +        }, +        entryCount = view.getUint32(4), +        i; + +      for (i = 8; entryCount; i += 8, entryCount--) { +        result.timeToSamples.push({ +          sampleCount: view.getUint32(i), +          sampleDelta: view.getUint32(i + 4) +        }); +      } +      return result; +    }, +    styp: function(data) { +      return parse.ftyp(data); +    }, +    tfdt: function(data) { +      return { +        version: data[0], +        flags: new Uint8Array(data.subarray(1, 4)), +        baseMediaDecodeTime: data[4] << 24 | data[5] << 16 | data[6] << 8 | data[7] +      }; +    }, +    tfhd: function(data) { +      var +        view = new DataView(data.buffer, data.byteOffset, data.byteLength), +        result = { +          version: data[0], +          flags: new Uint8Array(data.subarray(1, 4)), +          trackId: view.getUint32(4) +        }, +        baseDataOffsetPresent = result.flags[2] & 0x01, +        sampleDescriptionIndexPresent = result.flags[2] & 0x02, +        defaultSampleDurationPresent = result.flags[2] & 0x08, +        defaultSampleSizePresent = result.flags[2] & 0x10, +        defaultSampleFlagsPresent = result.flags[2] & 0x20, +        i; + +      i = 8; +      if (baseDataOffsetPresent) { +        i += 4; // truncate top 4 bytes +        result.baseDataOffset = view.getUint32(12); +        i += 4; +      } +      if (sampleDescriptionIndexPresent) { +        result.sampleDescriptionIndex = view.getUint32(i); +        i += 4; +      } +      if (defaultSampleDurationPresent) { +        result.defaultSampleDuration = view.getUint32(i); +        i += 4; +      } +      if (defaultSampleSizePresent) { +        result.defaultSampleSize = view.getUint32(i); +        i += 4; +      } +      if (defaultSampleFlagsPresent) { +        result.defaultSampleFlags = view.getUint32(i); +      } +      return result; +    }, +    tkhd: function(data) { +      var +        view = new DataView(data.buffer, data.byteOffset, data.byteLength), +        i = 4, +        result = { +          version: view.getUint8(0), +          flags: new Uint8Array(data.subarray(1, 4)), +        }; +      if (result.version === 1) { +        i += 4; +        result.creationTime = parseMp4Date(view.getUint32(i)); // truncating top 4 bytes +        i += 8; +        result.modificationTime = parseMp4Date(view.getUint32(i)); // truncating top 4 bytes +        i += 4; +        result.trackId = view.getUint32(i); +        i += 4; +        i += 8; +        result.duration = view.getUint32(i); // truncating top 4 bytes +      } else { +        result.creationTime = parseMp4Date(view.getUint32(i)); +        i += 4; +        result.modificationTime = parseMp4Date(view.getUint32(i)); +        i += 4; +        result.trackId = view.getUint32(i); +        i += 4; +        i += 4; +        result.duration = view.getUint32(i); +      } +      i += 4; +      i += 2 * 4; +      result.layer = view.getUint16(i); +      i += 2; +      result.alternateGroup = view.getUint16(i); +      i += 2; +      // convert fixed-point, base 16 back to a number +      result.volume = view.getUint8(i) + (view.getUint8(i + 1) / 8); +      i += 2; +      i += 2; +      result.matrix = new Uint32Array(data.subarray(i, i + (9 * 4))); +      i += 9 * 4; +      result.width = view.getUint16(i) + (view.getUint16(i + 2) / 16); +      i += 4; +      result.height = view.getUint16(i) + (view.getUint16(i + 2) / 16); +      return result; +    }, +    traf: function(data) { +      return { +        boxes: inspectMp4(data) +      }; +    }, +    trak: function(data) { +      return { +        boxes: inspectMp4(data) +      }; +    }, +    trex: function(data) { +      var view = new DataView(data.buffer, data.byteOffset, data.byteLength); +      return { +        version: data[0], +        flags: new Uint8Array(data.subarray(1, 4)), +        trackId: view.getUint32(4), +        defaultSampleDescriptionIndex: view.getUint32(8), +        defaultSampleDuration: view.getUint32(12), +        defaultSampleSize: view.getUint32(16), +        sampleDependsOn: data[20] & 0x03, +        sampleIsDependedOn: (data[21] & 0xc0) >> 6, +        sampleHasRedundancy: (data[21] & 0x30) >> 4, +        samplePaddingValue: (data[21] & 0x0e) >> 1, +        sampleIsDifferenceSample: !!(data[21] & 0x01), +        sampleDegradationPriority: view.getUint16(22) +      }; +    }, +    trun: function(data) { +      var +        result = { +          version: data[0], +          flags: new Uint8Array(data.subarray(1, 4)), +          samples: [] +        }, +        view = new DataView(data.buffer, data.byteOffset, data.byteLength), +        dataOffsetPresent = result.flags[2] & 0x01, +        firstSampleFlagsPresent = result.flags[2] & 0x04, +        sampleDurationPresent = result.flags[1] & 0x01, +        sampleSizePresent = result.flags[1] & 0x02, +        sampleFlagsPresent = result.flags[1] & 0x04, +        sampleCompositionTimeOffsetPresent = result.flags[1] & 0x08, +        sampleCount = view.getUint32(4), +        offset = 8, +        sample; + +      if (dataOffsetPresent) { +        result.dataOffset = view.getUint32(offset); +        offset += 4; +      } + +      if (firstSampleFlagsPresent && sampleCount) { +        sample = { +          flags: parseSampleFlags(data.subarray(offset, offset + 4)) +        }; +        offset += 4; +        if (sampleDurationPresent) { +          sample.duration = view.getUint32(offset); +          offset += 4; +        } +        if (sampleSizePresent) { +          sample.size = view.getUint32(offset); +          offset += 4; +        } +        if (sampleCompositionTimeOffsetPresent) { +          sample.compositionTimeOffset = view.getUint32(offset); +          offset += 4; +        } +        result.samples.push(sample); +        sampleCount--; +      } + +      while (sampleCount--) { +        sample = {}; +        if (sampleDurationPresent) { +          sample.duration = view.getUint32(offset); +          offset += 4; +        } +        if (sampleSizePresent) { +          sample.size = view.getUint32(offset); +          offset += 4; +        } +        if (sampleFlagsPresent) { +          sample.flags = parseSampleFlags(data.subarray(offset, offset + 4)); +          offset += 4; +        } +        if (sampleCompositionTimeOffsetPresent) { +          sample.compositionTimeOffset = view.getUint32(offset); +          offset += 4; +        } +        result.samples.push(sample); +      } +      return result; +    }, +    'url ': function(data) { +      return { +        version: data[0], +        flags: new Uint8Array(data.subarray(1, 4)) +      }; +    }, +    vmhd: function(data) { +      var view = new DataView(data.buffer, data.byteOffset, data.byteLength); +      return { +        version: data[0], +        flags: new Uint8Array(data.subarray(1, 4)), +        graphicsmode: view.getUint16(4), +        opcolor: new Uint16Array([view.getUint16(6), +                                  view.getUint16(8), +                                  view.getUint16(10)]) +      }; +    } +  }; + + +/** + * Return a javascript array of box objects parsed from an ISO base + * media file. + * @param data {Uint8Array} the binary data of the media to be inspected + * @return {array} a javascript array of potentially nested box objects + */ +inspectMp4 = function(data) { +  var +    i = 0, +    result = [], +    view, +    size, +    type, +    end, +    box; + +  // Convert data from Uint8Array to ArrayBuffer, to follow Dataview API +  var ab = new ArrayBuffer(data.length); +  var v = new Uint8Array(ab); +  for (var z = 0; z < data.length; ++z) { +      v[z] = data[z]; +  } +  view = new DataView(ab); + + +  while (i < data.byteLength) { +    // parse box data +    size = view.getUint32(i); +    type =  parseType(data.subarray(i + 4, i + 8)); +    end = size > 1 ? i + size : data.byteLength; + +    // parse type-specific data +    box = (parse[type] || function(data) { +      return { +        data: data +      }; +    })(data.subarray(i + 8, end)); +    box.size = size; +    box.type = type; + +    // store this box and move to the next +    result.push(box); +    i = end; +  } +  return result; +}; + +/** + * Returns a textual representation of the javascript represtentation + * of an MP4 file. You can use it as an alternative to + * JSON.stringify() to compare inspected MP4s. + * @param inspectedMp4 {array} the parsed array of boxes in an MP4 + * file + * @param depth {number} (optional) the number of ancestor boxes of + * the elements of inspectedMp4. Assumed to be zero if unspecified. + * @return {string} a text representation of the parsed MP4 + */ +textifyMp4 = function(inspectedMp4, depth) { +  var indent; +  depth = depth || 0; +  indent = new Array(depth * 2 + 1).join(' '); + +  // iterate over all the boxes +  return inspectedMp4.map(function(box, index) { + +    // list the box type first at the current indentation level +    return indent + box.type + '\n' + + +      // the type is already included and handle child boxes separately +      Object.keys(box).filter(function(key) { +        return key !== 'type' && key !== 'boxes'; + +      // output all the box properties +      }).map(function(key) { +        var prefix = indent + '  ' + key + ': ', +            value = box[key]; + +        // print out raw bytes as hexademical +        if (value instanceof Uint8Array || value instanceof Uint32Array) { +          var bytes = Array.prototype.slice.call(new Uint8Array(value.buffer, value.byteOffset, value.byteLength)) +              .map(function(byte) { +                return ' ' + ('00' + byte.toString(16)).slice(-2); +              }).join('').match(/.{1,24}/g); +          if (!bytes) { +            return prefix + '<>'; +          } +          if (bytes.length === 1) { +            return prefix + '<' + bytes.join('').slice(1) + '>'; +          } +          return prefix + '<\n' + bytes.map(function(line) { +            return indent + '  ' + line; +          }).join('\n') + '\n' + indent + '  >'; +        } + +        // stringify generic objects +        return prefix + +            JSON.stringify(value, null, 2) +              .split('\n').map(function(line, index) { +                if (index === 0) { +                  return line; +                } +                return indent + '  ' + line; +              }).join('\n'); +      }).join('\n') + + +    // recursively textify the child boxes +    (box.boxes ? '\n' + textifyMp4(box.boxes, depth + 1) : ''); +  }).join('\n'); +}; + +module.exports = { +  inspect: inspectMp4, +  textify: textifyMp4 +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],48:[function(require,module,exports){ +'use strict'; + +var ExpGolomb; + +/** + * Parser for exponential Golomb codes, a variable-bitwidth number encoding + * scheme used by h264. + */ +ExpGolomb = function(workingData) { +  var +    // the number of bytes left to examine in workingData +    workingBytesAvailable = workingData.byteLength, + +    // the current word being examined +    workingWord = 0, // :uint + +    // the number of bits left to examine in the current word +    workingBitsAvailable = 0; // :uint; + +  // ():uint +  this.length = function() { +    return (8 * workingBytesAvailable); +  }; + +  // ():uint +  this.bitsAvailable = function() { +    return (8 * workingBytesAvailable) + workingBitsAvailable; +  }; + +  // ():void +  this.loadWord = function() { +    var +      position = workingData.byteLength - workingBytesAvailable, +      workingBytes = new Uint8Array(4), +      availableBytes = Math.min(4, workingBytesAvailable); + +    if (availableBytes === 0) { +      throw new Error('no bytes available'); +    } + +    workingBytes.set(workingData.subarray(position, +                                          position + availableBytes)); +    workingWord = new DataView(workingBytes.buffer).getUint32(0); + +    // track the amount of workingData that has been processed +    workingBitsAvailable = availableBytes * 8; +    workingBytesAvailable -= availableBytes; +  }; + +  // (count:int):void +  this.skipBits = function(count) { +    var skipBytes; // :int +    if (workingBitsAvailable > count) { +      workingWord          <<= count; +      workingBitsAvailable -= count; +    } else { +      count -= workingBitsAvailable; +      skipBytes = Math.floor(count / 8); + +      count -= (skipBytes * 8); +      workingBytesAvailable -= skipBytes; + +      this.loadWord(); + +      workingWord <<= count; +      workingBitsAvailable -= count; +    } +  }; + +  // (size:int):uint +  this.readBits = function(size) { +    var +      bits = Math.min(workingBitsAvailable, size), // :uint +      valu = workingWord >>> (32 - bits); // :uint +    // if size > 31, handle error +    workingBitsAvailable -= bits; +    if (workingBitsAvailable > 0) { +      workingWord <<= bits; +    } else if (workingBytesAvailable > 0) { +      this.loadWord(); +    } + +    bits = size - bits; +    if (bits > 0) { +      return valu << bits | this.readBits(bits); +    } else { +      return valu; +    } +  }; + +  // ():uint +  this.skipLeadingZeros = function() { +    var leadingZeroCount; // :uint +    for (leadingZeroCount = 0 ; leadingZeroCount < workingBitsAvailable ; ++leadingZeroCount) { +      if (0 !== (workingWord & (0x80000000 >>> leadingZeroCount))) { +        // the first bit of working word is 1 +        workingWord <<= leadingZeroCount; +        workingBitsAvailable -= leadingZeroCount; +        return leadingZeroCount; +      } +    } + +    // we exhausted workingWord and still have not found a 1 +    this.loadWord(); +    return leadingZeroCount + this.skipLeadingZeros(); +  }; + +  // ():void +  this.skipUnsignedExpGolomb = function() { +    this.skipBits(1 + this.skipLeadingZeros()); +  }; + +  // ():void +  this.skipExpGolomb = function() { +    this.skipBits(1 + this.skipLeadingZeros()); +  }; + +  // ():uint +  this.readUnsignedExpGolomb = function() { +    var clz = this.skipLeadingZeros(); // :uint +    return this.readBits(clz + 1) - 1; +  }; + +  // ():int +  this.readExpGolomb = function() { +    var valu = this.readUnsignedExpGolomb(); // :int +    if (0x01 & valu) { +      // the number is odd if the low order bit is set +      return (1 + valu) >>> 1; // add 1 to make it even, and divide by 2 +    } else { +      return -1 * (valu >>> 1); // divide by two then make it negative +    } +  }; + +  // Some convenience functions +  // :Boolean +  this.readBoolean = function() { +    return 1 === this.readBits(1); +  }; + +  // ():int +  this.readUnsignedByte = function() { +    return this.readBits(8); +  }; + +  this.loadWord(); +}; + +module.exports = ExpGolomb; + +},{}],49:[function(require,module,exports){ +/** + * mux.js + * + * Copyright (c) 2014 Brightcove + * All rights reserved. + * + * A lightweight readable stream implemention that handles event dispatching. + * Objects that inherit from streams should call init in their constructors. + */ +'use strict'; + +var Stream = function() { +  this.init = function() { +    var listeners = {}; +    /** +     * Add a listener for a specified event type. +     * @param type {string} the event name +     * @param listener {function} the callback to be invoked when an event of +     * the specified type occurs +     */ +    this.on = function(type, listener) { +      if (!listeners[type]) { +        listeners[type] = []; +      } +      listeners[type].push(listener); +    }; +    /** +     * Remove a listener for a specified event type. +     * @param type {string} the event name +     * @param listener {function} a function previously registered for this +     * type of event through `on` +     */ +    this.off = function(type, listener) { +      var index; +      if (!listeners[type]) { +        return false; +      } +      index = listeners[type].indexOf(listener); +      listeners[type].splice(index, 1); +      return index > -1; +    }; +    /** +     * Trigger an event of the specified type on this stream. Any additional +     * arguments to this function are passed as parameters to event listeners. +     * @param type {string} the event name +     */ +    this.trigger = function(type) { +      var callbacks, i, length, args; +      callbacks = listeners[type]; +      if (!callbacks) { +        return; +      } +      // Slicing the arguments on every invocation of this method +      // can add a significant amount of overhead. Avoid the +      // intermediate object creation for the common case of a +      // single callback argument +      if (arguments.length === 2) { +        length = callbacks.length; +        for (i = 0; i < length; ++i) { +          callbacks[i].call(this, arguments[1]); +        } +      } else { +        args = []; +        i = arguments.length; +        for (i = 1; i < arguments.length; ++i) { +          args.push(arguments[i]); +        } +        length = callbacks.length; +        for (i = 0; i < length; ++i) { +          callbacks[i].apply(this, args); +        } +      } +    }; +    /** +     * Destroys the stream and cleans up. +     */ +    this.dispose = function() { +      listeners = {}; +    }; +  }; +}; + +/** + * Forwards all `data` events on this stream to the destination stream. The + * destination stream should provide a method `push` to receive the data + * events as they arrive. + * @param destination {stream} the stream that will receive all `data` events + * @param autoFlush {boolean} if false, we will not call `flush` on the destination + *                            when the current stream emits a 'done' event + * @see http://nodejs.org/api/stream.html#stream_readable_pipe_destination_options + */ +Stream.prototype.pipe = function(destination) { +  this.on('data', function(data) { +    destination.push(data); +  }); + +  this.on('done', function() { +    destination.flush(); +  }); + +  return destination; +}; + +// Default stream functions that are expected to be overridden to perform +// actual work. These are provided by the prototype as a sort of no-op +// implementation so that we don't have to check for their existence in the +// `pipe` function above. +Stream.prototype.push = function(data) { +  this.trigger('data', data); +}; + +Stream.prototype.flush = function() { +  this.trigger('done'); +}; + +module.exports = Stream; + +},{}],50:[function(require,module,exports){ +var bundleFn = arguments[3]; +var sources = arguments[4]; +var cache = arguments[5]; + +var stringify = JSON.stringify; + +module.exports = function (fn) { +    var keys = []; +    var wkey; +    var cacheKeys = Object.keys(cache); +     +    for (var i = 0, l = cacheKeys.length; i < l; i++) { +        var key = cacheKeys[i]; +        if (cache[key].exports === fn) { +            wkey = key; +            break; +        } +    } +     +    if (!wkey) { +        wkey = Math.floor(Math.pow(16, 8) * Math.random()).toString(16); +        var wcache = {}; +        for (var i = 0, l = cacheKeys.length; i < l; i++) { +            var key = cacheKeys[i]; +            wcache[key] = key; +        } +        sources[wkey] = [ +            Function(['require','module','exports'], '(' + fn + ')(self)'), +            wcache +        ]; +    } +    var skey = Math.floor(Math.pow(16, 8) * Math.random()).toString(16); +     +    var scache = {}; scache[wkey] = wkey; +    sources[skey] = [ +        Function(['require'],'require(' + stringify(wkey) + ')(self)'), +        scache +    ]; +     +    var src = '(' + bundleFn + ')({' +        + Object.keys(sources).map(function (key) { +            return stringify(key) + ':[' +                + sources[key][0] +                + ',' + stringify(sources[key][1]) + ']' +            ; +        }).join(',') +        + '},{},[' + stringify(skey) + '])' +    ; +     +    var URL = window.URL || window.webkitURL || window.mozURL || window.msURL; +     +    return new Worker(URL.createObjectURL( +        new Blob([src], { type: 'text/javascript' }) +    )); +}; + +},{}],51:[function(require,module,exports){ +(function (global){ +/** + * videojs-hls + * The main file for the HLS project. + * License: https://github.com/videojs/videojs-contrib-hls/blob/master/LICENSE + */ +'use strict'; + +Object.defineProperty(exports, '__esModule', { +  value: true +}); + +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + +var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _playlistLoader = require('./playlist-loader'); + +var _playlistLoader2 = _interopRequireDefault(_playlistLoader); + +var _playlist = require('./playlist'); + +var _playlist2 = _interopRequireDefault(_playlist); + +var _xhr = require('./xhr'); + +var _xhr2 = _interopRequireDefault(_xhr); + +var _decrypter = require('./decrypter'); + +var _binUtils = require('./bin-utils'); + +var _binUtils2 = _interopRequireDefault(_binUtils); + +var _videojsContribMediaSources = require('videojs-contrib-media-sources'); + +var _m3u8 = require('./m3u8'); + +var _m3u82 = _interopRequireDefault(_m3u8); + +var _videoJs = (typeof window !== "undefined" ? window['videojs'] : typeof global !== "undefined" ? global['videojs'] : null); + +var _videoJs2 = _interopRequireDefault(_videoJs); + +var _resolveUrl = require('./resolve-url'); + +var _resolveUrl2 = _interopRequireDefault(_resolveUrl); + +var Hls = { +  PlaylistLoader: _playlistLoader2['default'], +  Playlist: _playlist2['default'], +  Decrypter: _decrypter.Decrypter, +  AsyncStream: _decrypter.AsyncStream, +  decrypt: _decrypter.decrypt, +  utils: _binUtils2['default'], +  xhr: _xhr2['default'] +}; + +// the desired length of video to maintain in the buffer, in seconds +Hls.GOAL_BUFFER_LENGTH = 30; + +// HLS is a source handler, not a tech. Make sure attempts to use it +// as one do not cause exceptions. +Hls.canPlaySource = function () { +  return _videoJs2['default'].log.warn('HLS is no longer a tech. Please remove it from ' + 'your player\'s techOrder.'); +}; + +// Search for a likely end time for the segment that was just appened +// based on the state of the `buffered` property before and after the +// append. +// If we found only one such uncommon end-point return it. +Hls.findSoleUncommonTimeRangesEnd_ = function (original, update) { +  var i = undefined; +  var start = undefined; +  var end = undefined; +  var result = []; +  var edges = []; + +  // In order to qualify as a possible candidate, the end point must: +  //  1) Not have already existed in the `original` ranges +  //  2) Not result from the shrinking of a range that already existed +  //     in the `original` ranges +  //  3) Not be contained inside of a range that existed in `original` +  var overlapsCurrentEnd = function overlapsCurrentEnd(span) { +    return span[0] <= end && span[1] >= end; +  }; + +  if (original) { +    // Save all the edges in the `original` TimeRanges object +    for (i = 0; i < original.length; i++) { +      start = original.start(i); +      end = original.end(i); + +      edges.push([start, end]); +    } +  } + +  if (update) { +    // Save any end-points in `update` that are not in the `original` +    // TimeRanges object +    for (i = 0; i < update.length; i++) { +      start = update.start(i); +      end = update.end(i); + +      if (edges.some(overlapsCurrentEnd)) { +        continue; +      } + +      // at this point it must be a unique non-shrinking end edge +      result.push(end); +    } +  } + +  // we err on the side of caution and return null if didn't find +  // exactly *one* differing end edge in the search above +  if (result.length !== 1) { +    return null; +  } + +  return result[0]; +}; + +/** + * Whether the browser has built-in HLS support. + */ +Hls.supportsNativeHls = (function () { +  var video = document.createElement('video'); +  var xMpegUrl = undefined; +  var vndMpeg = undefined; + +  // native HLS is definitely not supported if HTML5 video isn't +  if (!_videoJs2['default'].getComponent('Html5').isSupported()) { +    return false; +  } + +  xMpegUrl = video.canPlayType('application/x-mpegURL'); +  vndMpeg = video.canPlayType('application/vnd.apple.mpegURL'); +  return (/probably|maybe/.test(xMpegUrl) || /probably|maybe/.test(vndMpeg) +  ); +})(); + +// HLS is a source handler, not a tech. Make sure attempts to use it +// as one do not cause exceptions. +Hls.isSupported = function () { +  return _videoJs2['default'].log.warn('HLS is no longer a tech. Please remove it from ' + 'your player\'s techOrder.'); +}; + +/** + * A comparator function to sort two playlist object by bandwidth. + * @param left {object} a media playlist object + * @param right {object} a media playlist object + * @return {number} Greater than zero if the bandwidth attribute of + * left is greater than the corresponding attribute of right. Less + * than zero if the bandwidth of right is greater than left and + * exactly zero if the two are equal. + */ +Hls.comparePlaylistBandwidth = function (left, right) { +  var leftBandwidth = undefined; +  var rightBandwidth = undefined; + +  if (left.attributes && left.attributes.BANDWIDTH) { +    leftBandwidth = left.attributes.BANDWIDTH; +  } +  leftBandwidth = leftBandwidth || window.Number.MAX_VALUE; +  if (right.attributes && right.attributes.BANDWIDTH) { +    rightBandwidth = right.attributes.BANDWIDTH; +  } +  rightBandwidth = rightBandwidth || window.Number.MAX_VALUE; + +  return leftBandwidth - rightBandwidth; +}; + +/** + * A comparator function to sort two playlist object by resolution (width). + * @param left {object} a media playlist object + * @param right {object} a media playlist object + * @return {number} Greater than zero if the resolution.width attribute of + * left is greater than the corresponding attribute of right. Less + * than zero if the resolution.width of right is greater than left and + * exactly zero if the two are equal. + */ +Hls.comparePlaylistResolution = function (left, right) { +  var leftWidth = undefined; +  var rightWidth = undefined; + +  if (left.attributes && left.attributes.RESOLUTION && left.attributes.RESOLUTION.width) { +    leftWidth = left.attributes.RESOLUTION.width; +  } + +  leftWidth = leftWidth || window.Number.MAX_VALUE; + +  if (right.attributes && right.attributes.RESOLUTION && right.attributes.RESOLUTION.width) { +    rightWidth = right.attributes.RESOLUTION.width; +  } + +  rightWidth = rightWidth || window.Number.MAX_VALUE; + +  // NOTE - Fallback to bandwidth sort as appropriate in cases where multiple renditions +  // have the same media dimensions/ resolution +  if (leftWidth === rightWidth && left.attributes.BANDWIDTH && right.attributes.BANDWIDTH) { +    return left.attributes.BANDWIDTH - right.attributes.BANDWIDTH; +  } +  return leftWidth - rightWidth; +}; + +// A fudge factor to apply to advertised playlist bitrates to account for +// temporary flucations in client bandwidth +var bandwidthVariance = 1.2; + +// 5 minute blacklist +var blacklistDuration = 5 * 60 * 1000; + +// Fudge factor to account for TimeRanges rounding +var TIME_FUDGE_FACTOR = 1 / 30; +var Component = _videoJs2['default'].getComponent('Component'); + +// The amount of time to wait between checking the state of the buffer +var bufferCheckInterval = 500; + +// returns true if a key has failed to download within a certain amount of retries +var keyFailed = function keyFailed(key) { +  return key.retries && key.retries >= 2; +}; + +/** + * Returns the CSS value for the specified property on an element + * using `getComputedStyle`. Firefox has a long-standing issue where + * getComputedStyle() may return null when running in an iframe with + * `display: none`. + * @see https://bugzilla.mozilla.org/show_bug.cgi?id=548397 + */ +var safeGetComputedStyle = function safeGetComputedStyle(el, property) { +  var result = undefined; + +  if (!el) { +    return ''; +  } + +  result = getComputedStyle(el); +  if (!result) { +    return ''; +  } + +  return result[property]; +}; + +/** + * Updates segment with information about its end-point in time and, optionally, + * the segment duration if we have enough information to determine a segment duration + * accurately. + * @param playlist {object} a media playlist object + * @param segmentIndex {number} the index of segment we last appended + * @param segmentEnd {number} the known of the segment referenced by segmentIndex + */ +var updateSegmentMetadata = function updateSegmentMetadata(playlist, segmentIndex, segmentEnd) { +  if (!playlist) { +    return; +  } + +  var segment = playlist.segments[segmentIndex]; +  var previousSegment = playlist.segments[segmentIndex - 1]; + +  if (segmentEnd && segment) { +    segment.end = segmentEnd; + +    // fix up segment durations based on segment end data +    if (!previousSegment) { +      // first segment is always has a start time of 0 making its duration +      // equal to the segment end +      segment.duration = segment.end; +    } else if (previousSegment.end) { +      segment.duration = segment.end - previousSegment.end; +    } +  } +}; + +/** + * Determines if we should call endOfStream on the media source based on the state + * of the buffer or if appened segment was the final segment in the playlist. + * @param playlist {object} a media playlist object + * @param mediaSource {object} the MediaSource object + * @param segmentIndex {number} the index of segment we last appended + * @param currentBuffered {object} the buffered region that currentTime resides in + * @return {boolean} whether the calling function should call endOfStream on the MediaSource + */ +var detectEndOfStream = function detectEndOfStream(playlist, mediaSource, segmentIndex, currentBuffered) { +  if (!playlist) { +    return false; +  } + +  var segments = playlist.segments; + +  // determine a few boolean values to help make the branch below easier +  // to read +  var appendedLastSegment = segmentIndex === segments.length - 1; +  var bufferedToEnd = currentBuffered.length && segments[segments.length - 1].end <= currentBuffered.end(0); + +  // if we've buffered to the end of the video, we need to call endOfStream +  // so that MediaSources can trigger the `ended` event when it runs out of +  // buffered data instead of waiting for me +  return playlist.endList && mediaSource.readyState === 'open' && (appendedLastSegment || bufferedToEnd); +}; + +var parseCodecs = function parseCodecs(codecs) { +  var result = { +    codecCount: 0, +    videoCodec: null, +    audioProfile: null +  }; + +  result.codecCount = codecs.split(',').length; +  result.codecCount = result.codecCount || 2; + +  // parse the video codec but ignore the version +  result.videoCodec = /(^|\s|,)+(avc1)[^ ,]*/i.exec(codecs); +  result.videoCodec = result.videoCodec && result.videoCodec[2]; + +  // parse the last field of the audio codec +  result.audioProfile = /(^|\s|,)+mp4a.\d+\.(\d+)/i.exec(codecs); +  result.audioProfile = result.audioProfile && result.audioProfile[2]; + +  return result; +}; + +var filterBufferedRanges = function filterBufferedRanges(predicate) { +  return function (time) { +    var i = undefined; +    var ranges = []; +    var tech = this.tech_; + +    // !!The order of the next two assignments is important!! +    // `currentTime` must be equal-to or greater-than the start of the +    // buffered range. Flash executes out-of-process so, every value can +    // change behind the scenes from line-to-line. By reading `currentTime` +    // after `buffered`, we ensure that it is always a current or later +    // value during playback. +    var buffered = tech.buffered(); + +    if (typeof time === 'undefined') { +      time = tech.currentTime(); +    } + +    // IE 11 has a bug where it will report a the video as fully buffered +    // before any data has been loaded. This is a work around where we +    // report a fully empty buffer until SourceBuffers have been created +    // which is after a segment has been loaded and transmuxed. +    if (!this.mediaSource || !this.mediaSource.mediaSource_ || !this.mediaSource.mediaSource_.sourceBuffers.length) { +      return _videoJs2['default'].createTimeRanges([]); +    } + +    if (buffered && buffered.length) { +      // Search for a range containing the play-head +      for (i = 0; i < buffered.length; i++) { +        if (predicate(buffered.start(i), buffered.end(i), time)) { +          ranges.push([buffered.start(i), buffered.end(i)]); +        } +      } +    } + +    return _videoJs2['default'].createTimeRanges(ranges); +  }; +}; + +var HlsHandler = (function (_Component) { +  _inherits(HlsHandler, _Component); + +  function HlsHandler(tech, options) { +    var _this = this; + +    _classCallCheck(this, HlsHandler); + +    _get(Object.getPrototypeOf(HlsHandler.prototype), 'constructor', this).call(this, tech); +    var _player = undefined; + +    // tech.player() is deprecated but setup a reference to HLS for +    // backwards-compatibility +    if (tech.options_ && tech.options_.playerId) { +      _player = (0, _videoJs2['default'])(tech.options_.playerId); +      if (!_player.hls) { +        Object.defineProperty(_player, 'hls', { +          get: function get() { +            _videoJs2['default'].log.warn('player.hls is deprecated. Use player.tech.hls instead.'); +            return _this; +          } +        }); +      } +    } +    this.tech_ = tech; +    this.source_ = options.source; +    this.mode_ = options.mode; +    // the segment info object for a segment that is in the process of +    // being downloaded or processed +    this.pendingSegment_ = null; + +    // start playlist selection at a reasonable bandwidth for +    // broadband internet +    // 0.5 Mbps +    this.bandwidth = options.bandwidth || 4194304; +    this.bytesReceived = 0; + +    // loadingState_ tracks how far along the buffering process we +    // have been given permission to proceed. There are three possible +    // values: +    // - none: do not load playlists or segments +    // - meta: load playlists but not segments +    // - segments: load everything +    this.loadingState_ = 'none'; +    if (this.tech_.preload() !== 'none') { +      this.loadingState_ = 'meta'; +    } + +    // periodically check if new data needs to be downloaded or +    // buffered data should be appended to the source buffer +    this.startCheckingBuffer_(); + +    this.on(this.tech_, 'seeking', function () { +      this.setCurrentTime(this.tech_.currentTime()); +    }); +    this.on(this.tech_, 'error', function () { +      this.stopCheckingBuffer_(); +    }); + +    this.on(this.tech_, 'play', this.play); +  } + +  /** +   * Attempts to find the buffered TimeRange that contains the specified +   * time, or where playback is currently happening if no specific time +   * is specified. +   * @param time (optional) {number} the time to filter on. Defaults to +   * currentTime. +   * @return a new TimeRanges object. +   */ + +  _createClass(HlsHandler, [{ +    key: 'src', +    value: function src(_src) { +      var _this2 = this; + +      var oldMediaPlaylist = undefined; + +      // do nothing if the src is falsey +      if (!_src) { +        return; +      } + +      this.mediaSource = new _videoJs2['default'].MediaSource({ mode: this.mode_ }); + +      // load the MediaSource into the player +      this.mediaSource.addEventListener('sourceopen', this.handleSourceOpen.bind(this)); + +      this.options_ = {}; +      if (typeof this.source_.withCredentials !== 'undefined') { +        this.options_.withCredentials = this.source_.withCredentials; +      } else if (_videoJs2['default'].options.hls) { +        this.options_.withCredentials = _videoJs2['default'].options.hls.withCredentials; +      } +      this.playlists = new Hls.PlaylistLoader(this.source_.src, this.options_.withCredentials); + +      this.tech_.one('canplay', this.setupFirstPlay.bind(this)); + +      this.playlists.on('loadedmetadata', function () { +        oldMediaPlaylist = _this2.playlists.media(); + +        // if this isn't a live video and preload permits, start +        // downloading segments +        if (oldMediaPlaylist.endList && _this2.tech_.preload() !== 'metadata' && _this2.tech_.preload() !== 'none') { +          _this2.loadingState_ = 'segments'; +        } + +        _this2.setupSourceBuffer_(); +        _this2.setupFirstPlay(); +        _this2.fillBuffer(); +        _this2.tech_.trigger('loadedmetadata'); +      }); + +      this.playlists.on('error', function () { +        _this2.blacklistCurrentPlaylist_(_this2.playlists.error); +      }); + +      this.playlists.on('loadedplaylist', function () { +        var updatedPlaylist = _this2.playlists.media(); +        var seekable = undefined; + +        if (!updatedPlaylist) { +          // select the initial variant +          _this2.playlists.media(_this2.selectPlaylist()); +          return; +        } + +        _this2.updateDuration(_this2.playlists.media()); + +        // update seekable +        seekable = _this2.seekable(); +        if (_this2.duration() === Infinity && seekable.length !== 0) { +          _this2.mediaSource.addSeekableRange_(seekable.start(0), seekable.end(0)); +        } + +        oldMediaPlaylist = updatedPlaylist; +      }); + +      this.playlists.on('mediachange', function () { +        _this2.tech_.trigger({ +          type: 'mediachange', +          bubbles: true +        }); +      }); + +      // do nothing if the tech has been disposed already +      // this can occur if someone sets the src in player.ready(), for instance +      if (!this.tech_.el()) { +        return; +      } + +      this.tech_.src(_videoJs2['default'].URL.createObjectURL(this.mediaSource)); +    } +  }, { +    key: 'handleSourceOpen', +    value: function handleSourceOpen() { +      // Only attempt to create the source buffer if none already exist. +      // handleSourceOpen is also called when we are "re-opening" a source buffer +      // after `endOfStream` has been called (in response to a seek for instance) +      if (!this.sourceBuffer) { +        this.setupSourceBuffer_(); +      } + +      // if autoplay is enabled, begin playback. This is duplicative of +      // code in video.js but is required because play() must be invoked +      // *after* the media source has opened. +      // NOTE: moving this invocation of play() after +      // sourceBuffer.appendBuffer() below caused live streams with +      // autoplay to stall +      if (this.tech_.autoplay()) { +        this.play(); +      } +    } + +    /** +     * Blacklist playlists that are known to be codec or +     * stream-incompatible with the SourceBuffer configuration. For +     * instance, Media Source Extensions would cause the video element to +     * stall waiting for video data if you switched from a variant with +     * video and audio to an audio-only one. +     * +     * @param media {object} a media playlist compatible with the current +     * set of SourceBuffers. Variants in the current master playlist that +     * do not appear to have compatible codec or stream configurations +     * will be excluded from the default playlist selection algorithm +     * indefinitely. +     */ +  }, { +    key: 'excludeIncompatibleVariants_', +    value: function excludeIncompatibleVariants_(media) { +      var master = this.playlists.master; +      var codecCount = 2; +      var videoCodec = null; +      var audioProfile = null; +      var codecs = undefined; + +      if (media.attributes && media.attributes.CODECS) { +        codecs = parseCodecs(media.attributes.CODECS); +        videoCodec = codecs.videoCodec; +        audioProfile = codecs.audioProfile; +        codecCount = codecs.codecCount; +      } +      master.playlists.forEach(function (variant) { +        var variantCodecs = { +          codecCount: 2, +          videoCodec: null, +          audioProfile: null +        }; + +        if (variant.attributes && variant.attributes.CODECS) { +          variantCodecs = parseCodecs(variant.attributes.CODECS); +        } + +        // if the streams differ in the presence or absence of audio or +        // video, they are incompatible +        if (variantCodecs.codecCount !== codecCount) { +          variant.excludeUntil = Infinity; +        } + +        // if h.264 is specified on the current playlist, some flavor of +        // it must be specified on all compatible variants +        if (variantCodecs.videoCodec !== videoCodec) { +          variant.excludeUntil = Infinity; +        } +        // HE-AAC ("mp4a.40.5") is incompatible with all other versions of +        // AAC audio in Chrome 46. Don't mix the two. +        if (variantCodecs.audioProfile === '5' && audioProfile !== '5' || audioProfile === '5' && variantCodecs.audioProfile !== '5') { +          variant.excludeUntil = Infinity; +        } +      }); +    } +  }, { +    key: 'setupSourceBuffer_', +    value: function setupSourceBuffer_() { +      var media = this.playlists.media(); +      var mimeType = undefined; + +      // wait until a media playlist is available and the Media Source is +      // attached +      if (!media || this.mediaSource.readyState !== 'open') { +        return; +      } + +      // if the codecs were explicitly specified, pass them along to the +      // source buffer +      mimeType = 'video/mp2t'; +      if (media.attributes && media.attributes.CODECS) { +        mimeType += '; codecs="' + media.attributes.CODECS + '"'; +      } +      this.sourceBuffer = this.mediaSource.addSourceBuffer(mimeType); + +      // exclude any incompatible variant streams from future playlist +      // selection +      this.excludeIncompatibleVariants_(media); + +      // transition the sourcebuffer to the ended state if we've hit the end of +      // the playlist +      this.sourceBuffer.addEventListener('updateend', this.updateEndHandler_.bind(this)); +    } + +    /** +     * Seek to the latest media position if this is a live video and the +     * player and video are loaded and initialized. +     */ +  }, { +    key: 'setupFirstPlay', +    value: function setupFirstPlay() { +      var seekable = undefined; +      var media = this.playlists.media(); + +      // check that everything is ready to begin buffering + +      // 1) the video is a live stream of unknown duration +      if (this.duration() === Infinity && + +      // 2) the player has not played before and is not paused +      this.tech_.played().length === 0 && !this.tech_.paused() && + +      // 3) the Media Source and Source Buffers are ready +      this.sourceBuffer && + +      // 4) the active media playlist is available +      media && + +      // 5) the video element or flash player is in a readyState of +      // at least HAVE_FUTURE_DATA +      this.tech_.readyState() >= 1) { + +        // trigger the playlist loader to start "expired time"-tracking +        this.playlists.trigger('firstplay'); + +        // seek to the latest media position for live videos +        seekable = this.seekable(); +        if (seekable.length) { +          this.tech_.setCurrentTime(seekable.end(0)); +        } +      } +    } + +    /** +     * Begin playing the video. +     */ +  }, { +    key: 'play', +    value: function play() { +      this.loadingState_ = 'segments'; + +      if (this.tech_.ended()) { +        this.tech_.setCurrentTime(0); +      } + +      if (this.tech_.played().length === 0) { +        return this.setupFirstPlay(); +      } + +      // if the viewer has paused and we fell out of the live window, +      // seek forward to the earliest available position +      if (this.duration() === Infinity) { +        if (this.tech_.currentTime() < this.seekable().start(0)) { +          this.tech_.setCurrentTime(this.seekable().start(0)); +        } +      } +    } +  }, { +    key: 'setCurrentTime', +    value: function setCurrentTime(currentTime) { +      var buffered = this.findBufferedRange_(); + +      if (!(this.playlists && this.playlists.media())) { +        // return immediately if the metadata is not ready yet +        return 0; +      } + +      // it's clearly an edge-case but don't thrown an error if asked to +      // seek within an empty playlist +      if (!this.playlists.media().segments) { +        return 0; +      } + +      // if the seek location is already buffered, continue buffering as +      // usual +      if (buffered && buffered.length) { +        return currentTime; +      } + +      // if we are in the middle of appending a segment, let it finish up +      if (this.pendingSegment_ && this.pendingSegment_.buffered) { +        return currentTime; +      } + +      this.lastSegmentLoaded_ = null; + +      // cancel outstanding requests and buffer appends +      this.cancelSegmentXhr(); + +      // abort outstanding key requests, if necessary +      if (this.keyXhr_) { +        this.keyXhr_.aborted = true; +        this.cancelKeyXhr(); +      } + +      // begin filling the buffer at the new position +      this.fillBuffer(this.playlists.getMediaIndexForTime_(currentTime)); +    } +  }, { +    key: 'duration', +    value: function duration() { +      var playlists = this.playlists; + +      if (!playlists) { +        return 0; +      } + +      if (this.mediaSource) { +        return this.mediaSource.duration; +      } + +      return Hls.Playlist.duration(playlists.media()); +    } +  }, { +    key: 'seekable', +    value: function seekable() { +      var media = undefined; +      var seekable = undefined; + +      if (!this.playlists) { +        return _videoJs2['default'].createTimeRanges(); +      } +      media = this.playlists.media(); +      if (!media) { +        return _videoJs2['default'].createTimeRanges(); +      } + +      seekable = Hls.Playlist.seekable(media); +      if (seekable.length === 0) { +        return seekable; +      } + +      // if the seekable start is zero, it may be because the player has +      // been paused for a long time and stopped buffering. in that case, +      // fall back to the playlist loader's running estimate of expired +      // time +      if (seekable.start(0) === 0) { +        return _videoJs2['default'].createTimeRanges([[this.playlists.expired_, this.playlists.expired_ + seekable.end(0)]]); +      } + +      // seekable has been calculated based on buffering video data so it +      // can be returned directly +      return seekable; +    } + +    /** +     * Update the player duration +     */ +  }, { +    key: 'updateDuration', +    value: function updateDuration(playlist) { +      var _this3 = this; + +      var oldDuration = this.mediaSource.duration; +      var newDuration = Hls.Playlist.duration(playlist); +      var buffered = this.tech_.buffered(); +      var setDuration = function setDuration() { +        _this3.mediaSource.duration = newDuration; +        _this3.tech_.trigger('durationchange'); + +        _this3.mediaSource.removeEventListener('sourceopen', setDuration); +      }; + +      if (buffered.length > 0) { +        newDuration = Math.max(newDuration, buffered.end(buffered.length - 1)); +      } + +      // if the duration has changed, invalidate the cached value +      if (oldDuration !== newDuration) { +        // update the duration +        if (this.mediaSource.readyState !== 'open') { +          this.mediaSource.addEventListener('sourceopen', setDuration); +        } else if (!this.sourceBuffer || !this.sourceBuffer.updating) { +          this.mediaSource.duration = newDuration; +          this.tech_.trigger('durationchange'); +        } +      } +    } + +    /** +     * Clear all buffers and reset any state relevant to the current +     * source. After this function is called, the tech should be in a +     * state suitable for switching to a different video. +     */ +  }, { +    key: 'resetSrc_', +    value: function resetSrc_() { +      this.cancelSegmentXhr(); +      this.cancelKeyXhr(); + +      if (this.sourceBuffer && this.mediaSource.readyState === 'open') { +        this.sourceBuffer.abort(); +      } +    } +  }, { +    key: 'cancelKeyXhr', +    value: function cancelKeyXhr() { +      if (this.keyXhr_) { +        this.keyXhr_.onreadystatechange = null; +        this.keyXhr_.abort(); +        this.keyXhr_ = null; +      } +    } +  }, { +    key: 'cancelSegmentXhr', +    value: function cancelSegmentXhr() { +      if (this.segmentXhr_) { +        // Prevent error handler from running. +        this.segmentXhr_.onreadystatechange = null; +        this.segmentXhr_.abort(); +        this.segmentXhr_ = null; +      } + +      // clear out the segment being processed +      this.pendingSegment_ = null; +    } + +    /** +    * Abort all outstanding work and cleanup. +    */ +  }, { +    key: 'dispose', +    value: function dispose() { +      this.stopCheckingBuffer_(); + +      if (this.playlists) { +        this.playlists.dispose(); +      } + +      this.resetSrc_(); +      _get(Object.getPrototypeOf(HlsHandler.prototype), 'dispose', this).call(this); +    } + +    /** +     * Chooses the appropriate media playlist based on the current +     * bandwidth estimate and the player size. +     * @return the highest bitrate playlist less than the currently detected +     * bandwidth, accounting for some amount of bandwidth variance +     */ +  }, { +    key: 'selectPlaylist', +    value: function selectPlaylist() { +      var effectiveBitrate = undefined; +      var sortedPlaylists = this.playlists.master.playlists.slice(); +      var bandwidthPlaylists = []; +      var now = +new Date(); +      var i = undefined; +      var variant = undefined; +      var bandwidthBestVariant = undefined; +      var resolutionPlusOne = undefined; +      var resolutionPlusOneAttribute = undefined; +      var resolutionBestVariant = undefined; +      var width = undefined; +      var height = undefined; + +      sortedPlaylists.sort(Hls.comparePlaylistBandwidth); + +      // filter out any playlists that have been excluded due to +      // incompatible configurations or playback errors +      sortedPlaylists = sortedPlaylists.filter(function (localVariant) { +        if (typeof localVariant.excludeUntil !== 'undefined') { +          return now >= localVariant.excludeUntil; +        } +        return true; +      }); + +      // filter out any variant that has greater effective bitrate +      // than the current estimated bandwidth +      i = sortedPlaylists.length; +      while (i--) { +        variant = sortedPlaylists[i]; + +        // ignore playlists without bandwidth information +        if (!variant.attributes || !variant.attributes.BANDWIDTH) { +          continue; +        } + +        effectiveBitrate = variant.attributes.BANDWIDTH * bandwidthVariance; + +        if (effectiveBitrate < this.bandwidth) { +          bandwidthPlaylists.push(variant); + +          // since the playlists are sorted in ascending order by +          // bandwidth, the first viable variant is the best +          if (!bandwidthBestVariant) { +            bandwidthBestVariant = variant; +          } +        } +      } + +      i = bandwidthPlaylists.length; + +      // sort variants by resolution +      bandwidthPlaylists.sort(Hls.comparePlaylistResolution); + +      // forget our old variant from above, +      // or we might choose that in high-bandwidth scenarios +      // (this could be the lowest bitrate rendition as  we go through all of them above) +      variant = null; + +      width = parseInt(safeGetComputedStyle(this.tech_.el(), 'width'), 10); +      height = parseInt(safeGetComputedStyle(this.tech_.el(), 'height'), 10); + +      // iterate through the bandwidth-filtered playlists and find +      // best rendition by player dimension +      while (i--) { +        variant = bandwidthPlaylists[i]; + +        // ignore playlists without resolution information +        if (!variant.attributes || !variant.attributes.RESOLUTION || !variant.attributes.RESOLUTION.width || !variant.attributes.RESOLUTION.height) { +          continue; +        } + +        // since the playlists are sorted, the first variant that has +        // dimensions less than or equal to the player size is the best + +        var variantResolution = variant.attributes.RESOLUTION; + +        if (variantResolution.width === width && variantResolution.height === height) { +          // if we have the exact resolution as the player use it +          resolutionPlusOne = null; +          resolutionBestVariant = variant; +          break; +        } else if (variantResolution.width < width && variantResolution.height < height) { +          // if both dimensions are less than the player use the +          // previous (next-largest) variant +          break; +        } else if (!resolutionPlusOne || variantResolution.width < resolutionPlusOneAttribute.width && variantResolution.height < resolutionPlusOneAttribute.height) { +          // If we still haven't found a good match keep a +          // reference to the previous variant for the next loop +          // iteration + +          // By only saving variants if they are smaller than the +          // previously saved variant, we ensure that we also pick +          // the highest bandwidth variant that is just-larger-than +          // the video player +          resolutionPlusOne = variant; +          resolutionPlusOneAttribute = resolutionPlusOne.attributes.RESOLUTION; +        } +      } + +      // fallback chain of variants +      return resolutionPlusOne || resolutionBestVariant || bandwidthBestVariant || sortedPlaylists[0]; +    } + +    /** +     * Periodically request new segments and append video data. +     */ +  }, { +    key: 'checkBuffer_', +    value: function checkBuffer_() { +      // calling this method directly resets any outstanding buffer checks +      if (this.checkBufferTimeout_) { +        window.clearTimeout(this.checkBufferTimeout_); +        this.checkBufferTimeout_ = null; +      } + +      this.fillBuffer(); +      this.drainBuffer(); + +      // wait awhile and try again +      this.checkBufferTimeout_ = window.setTimeout(this.checkBuffer_.bind(this), bufferCheckInterval); +    } + +    /** +     * Setup a periodic task to request new segments if necessary and +     * append bytes into the SourceBuffer. +     */ +  }, { +    key: 'startCheckingBuffer_', +    value: function startCheckingBuffer_() { +      this.checkBuffer_(); +    } + +    /** +     * Stop the periodic task requesting new segments and feeding the +     * SourceBuffer. +     */ +  }, { +    key: 'stopCheckingBuffer_', +    value: function stopCheckingBuffer_() { +      if (this.checkBufferTimeout_) { +        window.clearTimeout(this.checkBufferTimeout_); +        this.checkBufferTimeout_ = null; +      } +    } + +    /** +     * Determines whether there is enough video data currently in the buffer +     * and downloads a new segment if the buffered time is less than the goal. +     * @param seekToTime (optional) {number} the offset into the downloaded segment +     * to seek to, in seconds +     */ +  }, { +    key: 'fillBuffer', +    value: function fillBuffer(mediaIndex) { +      var tech = this.tech_; +      var currentTime = tech.currentTime(); +      var hasBufferedContent = this.tech_.buffered().length !== 0; +      var currentBuffered = this.findBufferedRange_(); +      var outsideBufferedRanges = !(currentBuffered && currentBuffered.length); +      var currentBufferedEnd = 0; +      var bufferedTime = 0; +      var segment = undefined; +      var segmentInfo = undefined; +      var segmentTimestampOffset = undefined; + +      // if preload is set to "none", do not download segments until playback is requested +      if (this.loadingState_ !== 'segments') { +        return; +      } + +      // if a video has not been specified, do nothing +      if (!tech.currentSrc() || !this.playlists) { +        return; +      } + +      // if there is a request already in flight, do nothing +      if (this.segmentXhr_) { +        return; +      } + +      // wait until the buffer is up to date +      if (this.pendingSegment_) { +        return; +      } + +      // if no segments are available, do nothing +      if (this.playlists.state === 'HAVE_NOTHING' || !this.playlists.media() || !this.playlists.media().segments) { +        return; +      } + +      // if a playlist switch is in progress, wait for it to finish +      if (this.playlists.state === 'SWITCHING_MEDIA') { +        return; +      } + +      if (typeof mediaIndex === 'undefined') { +        if (currentBuffered && currentBuffered.length) { +          currentBufferedEnd = currentBuffered.end(0); +          mediaIndex = this.playlists.getMediaIndexForTime_(currentBufferedEnd); +          bufferedTime = Math.max(0, currentBufferedEnd - currentTime); + +          // if there is plenty of content in the buffer and we're not +          // seeking, relax for awhile +          if (bufferedTime >= Hls.GOAL_BUFFER_LENGTH) { +            return; +          } +        } else { +          mediaIndex = this.playlists.getMediaIndexForTime_(this.tech_.currentTime()); +        } +      } +      segment = this.playlists.media().segments[mediaIndex]; + +      // if the video has finished downloading +      if (!segment) { +        return; +      } + +      // we have entered a state where we are fetching the same segment, +      // try to walk forward +      if (this.lastSegmentLoaded_ && this.playlistUriToUrl(this.lastSegmentLoaded_.uri) === this.playlistUriToUrl(segment.uri) && this.lastSegmentLoaded_.byterange === segment.byterange) { +        return this.fillBuffer(mediaIndex + 1); +      } + +      // package up all the work to append the segment +      segmentInfo = { +        // resolve the segment URL relative to the playlist +        uri: this.playlistUriToUrl(segment.uri), +        // the segment's mediaIndex & mediaSequence at the time it was requested +        mediaIndex: mediaIndex, +        mediaSequence: this.playlists.media().mediaSequence, +        // the segment's playlist +        playlist: this.playlists.media(), +        // The state of the buffer when this segment was requested +        currentBufferedEnd: currentBufferedEnd, +        // unencrypted bytes of the segment +        bytes: null, +        // when a key is defined for this segment, the encrypted bytes +        encryptedBytes: null, +        // optionally, the decrypter that is unencrypting the segment +        decrypter: null, +        // the state of the buffer before a segment is appended will be +        // stored here so that the actual segment duration can be +        // determined after it has been appended +        buffered: null, +        // The target timestampOffset for this segment when we append it +        // to the source buffer +        timestampOffset: null +      }; + +      if (mediaIndex > 0) { +        segmentTimestampOffset = Hls.Playlist.duration(segmentInfo.playlist, segmentInfo.playlist.mediaSequence + mediaIndex) + this.playlists.expired_; +      } + +      if (this.tech_.seeking() && outsideBufferedRanges) { +        // If there are discontinuities in the playlist, we can't be sure of anything +        // related to time so we reset the timestamp offset and start appending data +        // anew on every seek +        if (segmentInfo.playlist.discontinuityStarts.length) { +          segmentInfo.timestampOffset = segmentTimestampOffset; +        } +      } else if (segment.discontinuity && currentBuffered.length) { +        // If we aren't seeking and are crossing a discontinuity, we should set +        // timestampOffset for new segments to be appended the end of the current +        // buffered time-range +        segmentInfo.timestampOffset = currentBuffered.end(0); +      } else if (!hasBufferedContent && this.tech_.currentTime() > 0.05) { +        // If we are trying to play at a position that is not zero but we aren't +        // currently seeking according to the video element +        segmentInfo.timestampOffset = segmentTimestampOffset; +      } + +      this.loadSegment(segmentInfo); +    } +  }, { +    key: 'playlistUriToUrl', +    value: function playlistUriToUrl(segmentRelativeUrl) { +      var playListUrl = undefined; + +      // resolve the segment URL relative to the playlist +      if (this.playlists.media().uri === this.source_.src) { +        playListUrl = (0, _resolveUrl2['default'])(this.source_.src, segmentRelativeUrl); +      } else { +        playListUrl = (0, _resolveUrl2['default'])((0, _resolveUrl2['default'])(this.source_.src, this.playlists.media().uri || ''), segmentRelativeUrl); +      } +      return playListUrl; +    } + +    /* +     * Turns segment byterange into a string suitable for use in +     * HTTP Range requests +     */ +  }, { +    key: 'byterangeStr_', +    value: function byterangeStr_(byterange) { +      var byterangeStart = undefined; +      var byterangeEnd = undefined; + +      // `byterangeEnd` is one less than `offset + length` because the HTTP range +      // header uses inclusive ranges +      byterangeEnd = byterange.offset + byterange.length - 1; +      byterangeStart = byterange.offset; +      return 'bytes=' + byterangeStart + '-' + byterangeEnd; +    } + +    /* +     * Defines headers for use in the xhr request for a particular segment. +     */ +  }, { +    key: 'segmentXhrHeaders_', +    value: function segmentXhrHeaders_(segment) { +      var headers = {}; + +      if ('byterange' in segment) { +        headers.Range = this.byterangeStr_(segment.byterange); +      } +      return headers; +    } + +    /* +     * Sets `bandwidth`, `segmentXhrTime`, and appends to the `bytesReceived. +     * Expects an object with: +     *  * `roundTripTime` - the round trip time for the request we're setting the time for +     *  * `bandwidth` - the bandwidth we want to set +     *  * `bytesReceived` - amount of bytes downloaded +     * `bandwidth` is the only required property. +     */ +  }, { +    key: 'setBandwidth', +    value: function setBandwidth(localXhr) { +      // calculate the download bandwidth +      this.segmentXhrTime = localXhr.roundTripTime; +      this.bandwidth = localXhr.bandwidth; +      this.bytesReceived += localXhr.bytesReceived || 0; + +      this.tech_.trigger('bandwidthupdate'); +    } + +    /* +     * Blacklists a playlist when an error occurs for a set amount of time +     * making it unavailable for selection by the rendition selection algorithm +     * and then forces a new playlist (rendition) selection. +     */ +  }, { +    key: 'blacklistCurrentPlaylist_', +    value: function blacklistCurrentPlaylist_(error) { +      var currentPlaylist = undefined; +      var nextPlaylist = undefined; + +      // If the `error` was generated by the playlist loader, it will contain +      // the playlist we were trying to load (but failed) and that should be +      // blacklisted instead of the currently selected playlist which is likely +      // out-of-date in this scenario +      currentPlaylist = error.playlist || this.playlists.media(); + +      // If there is no current playlist, then an error occurred while we were +      // trying to load the master OR while we were disposing of the tech +      if (!currentPlaylist) { +        this.error = error; +        return this.mediaSource.endOfStream('network'); +      } + +      // Blacklist this playlist +      currentPlaylist.excludeUntil = Date.now() + blacklistDuration; + +      // Select a new playlist +      nextPlaylist = this.selectPlaylist(); + +      if (nextPlaylist) { +        _videoJs2['default'].log.warn('Problem encountered with the current ' + 'HLS playlist. Switching to another playlist.'); + +        return this.playlists.media(nextPlaylist); +      } +      _videoJs2['default'].log.warn('Problem encountered with the current ' + 'HLS playlist. No suitable alternatives found.'); +      // We have no more playlists we can select so we must fail +      this.error = error; +      return this.mediaSource.endOfStream('network'); +    } +  }, { +    key: 'loadSegment', +    value: function loadSegment(segmentInfo) { +      var _this4 = this; + +      var segment = segmentInfo.playlist.segments[segmentInfo.mediaIndex]; +      var removeToTime = 0; +      var seekable = this.seekable(); +      var currentTime = this.tech_.currentTime(); + +      // Chrome has a hard limit of 150mb of +      // buffer and a very conservative "garbage collector" +      // We manually clear out the old buffer to ensure +      // we don't trigger the QuotaExceeded error +      // on the source buffer during subsequent appends +      if (this.sourceBuffer && !this.sourceBuffer.updating) { +        // If we have a seekable range use that as the limit for what can be removed safely +        // otherwise remove anything older than 1 minute before the current play head +        if (seekable.length && seekable.start(0) > 0 && seekable.start(0) < currentTime) { +          removeToTime = seekable.start(0); +        } else { +          removeToTime = currentTime - 60; +        } + +        if (removeToTime > 0) { +          this.sourceBuffer.remove(0, removeToTime); +        } +      } + +      // if the segment is encrypted, request the key +      if (segment.key) { +        this.fetchKey_(segment); +      } + +      // request the next segment +      this.segmentXhr_ = Hls.xhr({ +        uri: segmentInfo.uri, +        responseType: 'arraybuffer', +        withCredentials: this.source_.withCredentials, +        // Set xhr timeout to 150% of the segment duration to allow us +        // some time to switch renditions in the event of a catastrophic +        // decrease in network performance or a server issue. +        timeout: segment.duration * 1.5 * 1000, +        headers: this.segmentXhrHeaders_(segment) +      }, function (error, request) { +        // This is a timeout of a previously aborted segment request +        // so simply ignore it +        if (!_this4.segmentXhr_ || request !== _this4.segmentXhr_) { +          return; +        } + +        // the segment request is no longer outstanding +        _this4.segmentXhr_ = null; + +        // if a segment request times out, we may have better luck with another playlist +        if (request.timedout) { +          _this4.bandwidth = 1; +          return _this4.playlists.media(_this4.selectPlaylist()); +        } + +        // otherwise, trigger a network error +        if (!request.aborted && error) { +          return _this4.blacklistCurrentPlaylist_({ +            status: request.status, +            message: 'HLS segment request error at URL: ' + segmentInfo.uri, +            code: request.status >= 500 ? 4 : 2 +          }); +        } + +        // stop processing if the request was aborted +        if (!request.response) { +          return; +        } + +        _this4.lastSegmentLoaded_ = segment; +        _this4.setBandwidth(request); + +        if (segment.key) { +          segmentInfo.encryptedBytes = new Uint8Array(request.response); +        } else { +          segmentInfo.bytes = new Uint8Array(request.response); +        } + +        _this4.pendingSegment_ = segmentInfo; + +        _this4.tech_.trigger('progress'); +        _this4.drainBuffer(); + +        // figure out what stream the next segment should be downloaded from +        // with the updated bandwidth information +        _this4.playlists.media(_this4.selectPlaylist()); +      }); +    } +  }, { +    key: 'drainBuffer', +    value: function drainBuffer() { +      var segmentInfo = undefined; +      var mediaIndex = undefined; +      var playlist = undefined; +      var bytes = undefined; +      var segment = undefined; +      var decrypter = undefined; +      var segIv = undefined; + +      // if the buffer is empty or the source buffer hasn't been created +      // yet, do nothing +      if (!this.pendingSegment_ || !this.sourceBuffer) { +        return; +      } + +      // the pending segment has already been appended and we're waiting +      // for updateend to fire +      if (this.pendingSegment_.buffered) { +        return; +      } + +      // we can't append more data if the source buffer is busy processing +      // what we've already sent +      if (this.sourceBuffer.updating) { +        return; +      } + +      segmentInfo = this.pendingSegment_; +      mediaIndex = segmentInfo.mediaIndex; +      playlist = segmentInfo.playlist; +      bytes = segmentInfo.bytes; +      segment = playlist.segments[mediaIndex]; + +      if (segment.key && !bytes) { +        // this is an encrypted segment +        // if the key download failed, we want to skip this segment +        // but if the key hasn't downloaded yet, we want to try again later +        if (keyFailed(segment.key)) { +          return this.blacklistCurrentPlaylist_({ +            message: 'HLS segment key request error.', +            code: 4 +          }); +        } else if (!segment.key.bytes) { +          // waiting for the key bytes, try again later +          return; +        } else if (segmentInfo.decrypter) { +          // decryption is in progress, try again later +          return; +        } +        // if the media sequence is greater than 2^32, the IV will be incorrect +        // assuming 10s segments, that would be about 1300 years +        segIv = segment.key.iv || new Uint32Array([0, 0, 0, mediaIndex + playlist.mediaSequence]); + +        // create a decrypter to incrementally decrypt the segment +        decrypter = new Hls.Decrypter(segmentInfo.encryptedBytes, segment.key.bytes, segIv, function (error, localBytes) { +          if (error) { +            _videoJs2['default'].log.warn(error); +          } +          segmentInfo.bytes = localBytes; +        }); +        segmentInfo.decrypter = decrypter; +        return; +      } + +      this.pendingSegment_.buffered = this.tech_.buffered(); + +      if (segmentInfo.timestampOffset !== null) { +        this.sourceBuffer.timestampOffset = segmentInfo.timestampOffset; +      } + +      // the segment is asynchronously added to the current buffered data +      this.sourceBuffer.appendBuffer(bytes); +    } +  }, { +    key: 'updateEndHandler_', +    value: function updateEndHandler_() { +      var segmentInfo = this.pendingSegment_; +      var playlist = undefined; +      var currentMediaIndex = undefined; +      var currentBuffered = undefined; +      var seekable = undefined; +      var timelineUpdate = undefined; +      var isEndOfStream = undefined; + +      // stop here if the update errored or was aborted +      if (!segmentInfo) { +        this.pendingSegment_ = null; +        return; +      } + +      // In Firefox, the updateend event is triggered for both removing from the buffer and +      // adding to the buffer. To prevent this code from executing on removals, we wait for +      // segmentInfo to have a filled in buffered value before we continue processing. +      if (!segmentInfo.buffered) { +        return; +      } + +      this.pendingSegment_ = null; + +      playlist = segmentInfo.playlist; +      currentMediaIndex = segmentInfo.mediaIndex + (segmentInfo.mediaSequence - playlist.mediaSequence); +      currentBuffered = this.findBufferedRange_(); +      isEndOfStream = detectEndOfStream(playlist, this.mediaSource, currentMediaIndex, currentBuffered); + +      // if we switched renditions don't try to add segment timeline +      // information to the playlist +      if (segmentInfo.playlist.uri !== this.playlists.media().uri) { +        if (isEndOfStream) { +          return this.mediaSource.endOfStream(); +        } +        return this.fillBuffer(); +      } + +      // when seeking to the beginning of the seekable range, it's +      // possible that imprecise timing information may cause the seek to +      // end up earlier than the start of the range +      // in that case, seek again +      seekable = this.seekable(); +      if (this.tech_.seeking() && currentBuffered.length === 0) { +        if (seekable.length && this.tech_.currentTime() < seekable.start(0)) { +          var next = this.findNextBufferedRange_(); + +          if (next.length) { +            _videoJs2['default'].log('tried seeking to', this.tech_.currentTime(), 'but that was too early, retrying at', next.start(0)); +            this.tech_.setCurrentTime(next.start(0) + TIME_FUDGE_FACTOR); +          } +        } +      } + +      timelineUpdate = Hls.findSoleUncommonTimeRangesEnd_(segmentInfo.buffered, this.tech_.buffered()); + +      // Update segment meta-data (duration and end-point) based on timeline +      updateSegmentMetadata(playlist, currentMediaIndex, timelineUpdate); + +      // If we decide to signal the end of stream, then we can return instead +      // of trying to fetch more segments +      if (isEndOfStream) { +        return this.mediaSource.endOfStream(); +      } + +      if (timelineUpdate !== null || segmentInfo.buffered.length !== this.tech_.buffered().length) { +        this.updateDuration(playlist); +        // check if it's time to download the next segment +        this.fillBuffer(); +        return; +      } + +      // the last segment append must have been entirely in the +      // already buffered time ranges. just buffer forward until we +      // find a segment that adds to the buffered time ranges and +      // improves subsequent media index calculations. +      this.fillBuffer(currentMediaIndex + 1); +      return; +    } + +    /** +     * Attempt to retrieve the key for a particular media segment. +     */ +  }, { +    key: 'fetchKey_', +    value: function fetchKey_(segment) { +      var _this5 = this; + +      var key = undefined; +      var settings = undefined; +      var receiveKey = undefined; + +      // if there is a pending XHR or no segments, don't do anything +      if (this.keyXhr_) { +        return; +      } + +      settings = this.options_; + +      /** +      * Handle a key XHR response. +      */ +      receiveKey = function (keyRecieved) { +        return function (error, request) { +          var view = undefined; + +          _this5.keyXhr_ = null; + +          if (error || !request.response || request.response.byteLength !== 16) { +            keyRecieved.retries = keyRecieved.retries || 0; +            keyRecieved.retries++; +            if (!request.aborted) { +              // try fetching again +              _this5.fetchKey_(segment); +            } +            return; +          } + +          view = new DataView(request.response); +          keyRecieved.bytes = new Uint32Array([view.getUint32(0), view.getUint32(4), view.getUint32(8), view.getUint32(12)]); + +          // check to see if this allows us to make progress buffering now +          _this5.checkBuffer_(); +        }; +      }; + +      key = segment.key; + +      // nothing to do if this segment is unencrypted +      if (!key) { +        return; +      } + +      // request the key if the retry limit hasn't been reached +      if (!key.bytes && !keyFailed(key)) { +        this.keyXhr_ = Hls.xhr({ +          uri: this.playlistUriToUrl(key.uri), +          responseType: 'arraybuffer', +          withCredentials: settings.withCredentials +        }, receiveKey(key)); +        return; +      } +    } +  }]); + +  return HlsHandler; +})(Component); + +exports['default'] = HlsHandler; +HlsHandler.prototype.findBufferedRange_ = filterBufferedRanges(function (start, end, time) { +  return start - TIME_FUDGE_FACTOR <= time && end + TIME_FUDGE_FACTOR >= time; +}); +/** + * Returns the TimeRanges that begin at or later than the specified + * time. + * @param time (optional) {number} the time to filter on. Defaults to + * currentTime. + * @return a new TimeRanges object. + */ +HlsHandler.prototype.findNextBufferedRange_ = filterBufferedRanges(function (start, end, time) { +  return start - TIME_FUDGE_FACTOR >= time; +}); + +/** + * The Source Handler object, which informs video.js what additional + * MIME types are supported and sets up playback. It is registered + * automatically to the appropriate tech based on the capabilities of + * the browser it is running in. It is not necessary to use or modify + * this object in normal usage. + */ +var HlsSourceHandler = function HlsSourceHandler(mode) { +  return { +    canHandleSource: function canHandleSource(srcObj) { +      return HlsSourceHandler.canPlayType(srcObj.type); +    }, +    handleSource: function handleSource(source, tech) { +      if (mode === 'flash') { +        // We need to trigger this asynchronously to give others the chance +        // to bind to the event when a source is set at player creation +        tech.setTimeout(function () { +          tech.trigger('loadstart'); +        }, 1); +      } +      tech.hls = new HlsHandler(tech, { +        source: source, +        mode: mode +      }); +      tech.hls.src(source.src); +      return tech.hls; +    }, +    canPlayType: function canPlayType(type) { +      return HlsSourceHandler.canPlayType(type); +    } +  }; +}; + +HlsSourceHandler.canPlayType = function (type) { +  var mpegurlRE = /^application\/(?:x-|vnd\.apple\.)mpegurl/i; + +  // favor native HLS support if it's available +  if (Hls.supportsNativeHls) { +    return false; +  } +  return mpegurlRE.test(type); +}; + +if (typeof _videoJs2['default'].MediaSource === 'undefined' || typeof _videoJs2['default'].URL === 'undefined') { +  _videoJs2['default'].MediaSource = _videojsContribMediaSources.MediaSource; +  _videoJs2['default'].URL = _videojsContribMediaSources.URL; +} + +// register source handlers with the appropriate techs +if (_videojsContribMediaSources.MediaSource.supportsNativeMediaSources()) { +  _videoJs2['default'].getComponent('Html5').registerSourceHandler(HlsSourceHandler('html5')); +} +if (window.Uint8Array) { +  _videoJs2['default'].getComponent('Flash').registerSourceHandler(HlsSourceHandler('flash')); +} + +_videoJs2['default'].HlsHandler = HlsHandler; +_videoJs2['default'].HlsSourceHandler = HlsSourceHandler; +_videoJs2['default'].Hls = Hls; +_videoJs2['default'].m3u8 = _m3u82['default']; + +exports['default'] = { +  Hls: Hls, +  HlsHandler: HlsHandler, +  HlsSourceHandler: HlsSourceHandler +}; +module.exports = exports['default']; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./bin-utils":1,"./decrypter":5,"./m3u8":6,"./playlist":11,"./playlist-loader":10,"./resolve-url":12,"./xhr":14,"videojs-contrib-media-sources":28}]},{},[51])(51) +});
\ No newline at end of file diff --git a/examples/tg16/web/stream.gathering.org/js-version/js/videojs-contrib-media-sources.js b/examples/tg16/web/stream.gathering.org/js-version/js/videojs-contrib-media-sources.js new file mode 100644 index 0000000..8e7d20a --- /dev/null +++ b/examples/tg16/web/stream.gathering.org/js-version/js/videojs-contrib-media-sources.js @@ -0,0 +1,7562 @@ +/** + * videojs-contrib-media-sources + * @version 3.0.1 + * @copyright 2016 Brightcove, Inc. + * @license Apache-2.0 + */ +(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.videojsContribMediaSources = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ +(function (global){ +'use strict'; + +Object.defineProperty(exports, '__esModule', { +  value: true +}); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +var _videoJs = (typeof window !== "undefined" ? window['videojs'] : typeof global !== "undefined" ? global['videojs'] : null); + +var _videoJs2 = _interopRequireDefault(_videoJs); + +var deprecateOldCue = function deprecateOldCue(cue) { +  Object.defineProperties(cue.frame, { +    id: { +      get: function get() { +        _videoJs2['default'].log.warn('cue.frame.id is deprecated. Use cue.value.key instead.'); +        return cue.value.key; +      } +    }, +    value: { +      get: function get() { +        _videoJs2['default'].log.warn('cue.frame.value is deprecated. Use cue.value.data instead.'); +        return cue.value.data; +      } +    }, +    privateData: { +      get: function get() { +        _videoJs2['default'].log.warn('cue.frame.privateData is deprecated. Use cue.value.data instead.'); +        return cue.value.data; +      } +    } +  }); +}; + +var addTextTrackData = function addTextTrackData(sourceHandler, captionArray, metadataArray) { +  var Cue = window.WebKitDataCue || window.VTTCue; + +  if (captionArray) { +    captionArray.forEach(function (caption) { +      this.inbandTextTrack_.addCue(new Cue(caption.startTime + this.timestampOffset, caption.endTime + this.timestampOffset, caption.text)); +    }, sourceHandler); +  } + +  if (metadataArray) { +    metadataArray.forEach(function (metadata) { +      var time = metadata.cueTime + this.timestampOffset; + +      metadata.frames.forEach(function (frame) { +        var cue = new Cue(time, time, frame.value || frame.url || frame.data || ''); + +        cue.frame = frame; +        cue.value = frame; +        deprecateOldCue(cue); +        this.metadataTrack_.addCue(cue); +      }, this); +    }, sourceHandler); +  } +}; + +exports['default'] = addTextTrackData; +module.exports = exports['default']; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],2:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, '__esModule', { +  value: true +}); +var createTextTracksIfNecessary = function createTextTracksIfNecessary(sourceBuffer, mediaSource, segment) { +  // create an in-band caption track if one is present in the segment +  if (segment.captions && segment.captions.length && !sourceBuffer.inbandTextTrack_) { +    sourceBuffer.inbandTextTrack_ = mediaSource.player_.addTextTrack('captions', 'cc1'); +  } + +  if (segment.metadata && segment.metadata.length && !sourceBuffer.metadataTrack_) { +    sourceBuffer.metadataTrack_ = mediaSource.player_.addTextTrack('metadata', 'Timed Metadata'); +    sourceBuffer.metadataTrack_.inBandMetadataTrackDispatchType = segment.metadata.dispatchType; +  } +}; + +exports['default'] = createTextTracksIfNecessary; +module.exports = exports['default']; +},{}],3:[function(require,module,exports){ +/** +  * The maximum size in bytes for append operations to the video.js +  * SWF. Calling through to Flash blocks and can be expensive so +  * tuning this parameter may improve playback on slower +  * systems. There are two factors to consider: +  * - Each interaction with the SWF must be quick or you risk dropping +  * video frames. To maintain 60fps for the rest of the page, each append +  * must not  take longer than 16ms. Given the likelihood that the page +  * will be executing more javascript than just playback, you probably +  * want to aim for less than 8ms. We aim for just 4ms. +  * - Bigger appends significantly increase throughput. The total number of +  * bytes over time delivered to the SWF must exceed the video bitrate or +  * playback will stall. +  * +  * We adaptively tune the size of appends to give the best throughput +  * possible given the performance of the system. To do that we try to append +  * as much as possible in TIME_PER_TICK and while tuning the size of appends +  * dynamically so that we only append about 4-times in that 4ms span. +  * +  * The reason we try to keep the number of appends around four is due to +  * externalities such as Flash load and garbage collection that are highly +  * variable and having 4 iterations allows us to exit the loop early if +  * an iteration takes longer than expected. +  */ + +"use strict"; + +Object.defineProperty(exports, "__esModule", { +  value: true +}); +var flashConstants = { +  TIME_BETWEEN_TICKS: Math.floor(1000 / 480), +  TIME_PER_TICK: Math.floor(1000 / 240), +  // 1kb +  BYTES_PER_CHUNK: 1 * 1024, +  MIN_CHUNK: 1024, +  MAX_CHUNK: 1024 * 1024 +}; + +exports["default"] = flashConstants; +module.exports = exports["default"]; +},{}],4:[function(require,module,exports){ +(function (global){ +'use strict'; + +Object.defineProperty(exports, '__esModule', { +  value: true +}); + +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + +var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _videoJs = (typeof window !== "undefined" ? window['videojs'] : typeof global !== "undefined" ? global['videojs'] : null); + +var _videoJs2 = _interopRequireDefault(_videoJs); + +var _flashSourceBuffer = require('./flash-source-buffer'); + +var _flashSourceBuffer2 = _interopRequireDefault(_flashSourceBuffer); + +var _flashConstants = require('./flash-constants'); + +var _flashConstants2 = _interopRequireDefault(_flashConstants); + +var FlashMediaSource = (function (_videojs$EventTarget) { +  _inherits(FlashMediaSource, _videojs$EventTarget); + +  function FlashMediaSource() { +    var _this = this; + +    _classCallCheck(this, FlashMediaSource); + +    _get(Object.getPrototypeOf(FlashMediaSource.prototype), 'constructor', this).call(this); +    this.sourceBuffers = []; +    this.readyState = 'closed'; + +    this.on(['sourceopen', 'webkitsourceopen'], function (event) { +      // find the swf where we will push media data +      _this.swfObj = document.getElementById(event.swfId); +      _this.player_ = (0, _videoJs2['default'])(_this.swfObj.parentNode); +      _this.tech_ = _this.swfObj.tech; +      _this.readyState = 'open'; + +      _this.tech_.on('seeking', function () { +        var i = _this.sourceBuffers.length; + +        while (i--) { +          _this.sourceBuffers[i].abort(); +        } +      }); + +      // trigger load events +      if (_this.swfObj) { +        _this.swfObj.vjs_load(); +      } +    }); +  } + +  /** +    * Set or return the presentation duration. +    * @param value {double} the duration of the media in seconds +    * @param {double} the current presentation duration +    * @see http://www.w3.org/TR/media-source/#widl-MediaSource-duration +    */ + +  _createClass(FlashMediaSource, [{ +    key: 'addSeekableRange_', +    value: function addSeekableRange_() {} +    // intentional no-op + +    // create a new source buffer to receive a type of media data + +  }, { +    key: 'addSourceBuffer', +    value: function addSourceBuffer(type) { +      var sourceBuffer = undefined; + +      // if this is an FLV type, we'll push data to flash +      if (type.indexOf('video/mp2t') === 0) { +        // Flash source buffers +        sourceBuffer = new _flashSourceBuffer2['default'](this); +      } else { +        throw new Error('NotSupportedError (Video.js)'); +      } + +      this.sourceBuffers.push(sourceBuffer); +      return sourceBuffer; +    } + +    /* eslint-disable max-len */ +    /** +      * Signals the end of the stream. +      * @param error {string} (optional) Signals that a playback error +      * has occurred. If specified, it must be either "network" or +      * "decode". +      * @see https://w3c.github.io/media-source/#widl-MediaSource-endOfStream-void-EndOfStreamError-error +      */ +    /* eslint-enable max-len */ +  }, { +    key: 'endOfStream', +    value: function endOfStream(error) { +      if (error === 'network') { +        // MEDIA_ERR_NETWORK +        this.tech_.error(2); +      } else if (error === 'decode') { +        // MEDIA_ERR_DECODE +        this.tech_.error(3); +      } +      if (this.readyState !== 'ended') { +        this.readyState = 'ended'; +        this.swfObj.vjs_endOfStream(); +      } +    } +  }]); + +  return FlashMediaSource; +})(_videoJs2['default'].EventTarget); + +exports['default'] = FlashMediaSource; +try { +  Object.defineProperty(FlashMediaSource.prototype, 'duration', { +    get: function get() { +      if (!this.swfObj) { +        return NaN; +      } +      // get the current duration from the SWF +      return this.swfObj.vjs_getProperty('duration'); +    }, +    set: function set(value) { +      var i = undefined; +      var oldDuration = this.swfObj.vjs_getProperty('duration'); + +      this.swfObj.vjs_setProperty('duration', value); + +      if (value < oldDuration) { +        // In MSE, this triggers the range removal algorithm which causes +        // an update to occur +        for (i = 0; i < this.sourceBuffers.length; i++) { +          this.sourceBuffers[i].remove(value, oldDuration); +        } +      } + +      return value; +    } +  }); +} catch (e) { +  // IE8 throws if defineProperty is called on a non-DOM node. We +  // don't support IE8 but we shouldn't throw an error if loaded +  // there. +  FlashMediaSource.prototype.duration = NaN; +} + +for (var property in _flashConstants2['default']) { +  FlashMediaSource[property] = _flashConstants2['default'][property]; +} +module.exports = exports['default']; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./flash-constants":3,"./flash-source-buffer":5}],5:[function(require,module,exports){ +(function (global){ +'use strict'; + +Object.defineProperty(exports, '__esModule', { +  value: true +}); + +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + +var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _videoJs = (typeof window !== "undefined" ? window['videojs'] : typeof global !== "undefined" ? global['videojs'] : null); + +var _videoJs2 = _interopRequireDefault(_videoJs); + +var _muxJs = require('mux.js'); + +var _muxJs2 = _interopRequireDefault(_muxJs); + +var _removeCuesFromTrack = require('./remove-cues-from-track'); + +var _removeCuesFromTrack2 = _interopRequireDefault(_removeCuesFromTrack); + +var _createTextTracksIfNecessary = require('./create-text-tracks-if-necessary'); + +var _createTextTracksIfNecessary2 = _interopRequireDefault(_createTextTracksIfNecessary); + +var _addTextTrackData = require('./add-text-track-data'); + +var _addTextTrackData2 = _interopRequireDefault(_addTextTrackData); + +var _flashConstants = require('./flash-constants'); + +var _flashConstants2 = _interopRequireDefault(_flashConstants); + +var scheduleTick = function scheduleTick(func) { +  // Chrome doesn't invoke requestAnimationFrame callbacks +  // in background tabs, so use setTimeout. +  window.setTimeout(func, _flashConstants2['default'].TIME_BETWEEN_TICKS); +}; + +// Source Buffer + +var FlashSourceBuffer = (function (_videojs$EventTarget) { +  _inherits(FlashSourceBuffer, _videojs$EventTarget); + +  function FlashSourceBuffer(mediaSource) { +    var _this = this; + +    _classCallCheck(this, FlashSourceBuffer); + +    _get(Object.getPrototypeOf(FlashSourceBuffer.prototype), 'constructor', this).call(this); +    var encodedHeader = undefined; + +    // Start off using the globally defined value but refine +    // as we append data into flash +    this.chunkSize_ = _flashConstants2['default'].BYTES_PER_CHUNK; + +    // byte arrays queued to be appended +    this.buffer_ = []; + +    // the total number of queued bytes +    this.bufferSize_ = 0; + +    // to be able to determine the correct position to seek to, we +    // need to retain information about the mapping between the +    // media timeline and PTS values +    this.basePtsOffset_ = NaN; + +    this.mediaSource = mediaSource; + +    // indicates whether the asynchronous continuation of an operation +    // is still being processed +    // see https://w3c.github.io/media-source/#widl-SourceBuffer-updating +    this.updating = false; +    this.timestampOffset_ = 0; + +    // TS to FLV transmuxer +    this.segmentParser_ = new _muxJs2['default'].flv.Transmuxer(); +    this.segmentParser_.on('data', this.receiveBuffer_.bind(this)); +    encodedHeader = window.btoa(String.fromCharCode.apply(null, Array.prototype.slice.call(this.segmentParser_.getFlvHeader()))); +    this.mediaSource.swfObj.vjs_appendBuffer(encodedHeader); + +    Object.defineProperty(this, 'timestampOffset', { +      get: function get() { +        return this.timestampOffset_; +      }, +      set: function set(val) { +        if (typeof val === 'number' && val >= 0) { +          this.timestampOffset_ = val; +          this.segmentParser_ = new _muxJs2['default'].flv.Transmuxer(); +          this.segmentParser_.on('data', this.receiveBuffer_.bind(this)); +          // We have to tell flash to expect a discontinuity +          this.mediaSource.swfObj.vjs_discontinuity(); +          // the media <-> PTS mapping must be re-established after +          // the discontinuity +          this.basePtsOffset_ = NaN; +        } +      } +    }); + +    Object.defineProperty(this, 'buffered', { +      get: function get() { +        return _videoJs2['default'].createTimeRanges(this.mediaSource.swfObj.vjs_getProperty('buffered')); +      } +    }); + +    // On a seek we remove all text track data since flash has no concept +    // of a buffered-range and everything else is reset on seek +    this.mediaSource.player_.on('seeked', function () { +      (0, _removeCuesFromTrack2['default'])(0, Infinity, _this.metadataTrack_); +      (0, _removeCuesFromTrack2['default'])(0, Infinity, _this.inbandTextTrack_); +    }); +  } + +  // accept video data and pass to the video (swf) object + +  _createClass(FlashSourceBuffer, [{ +    key: 'appendBuffer', +    value: function appendBuffer(bytes) { +      var _this2 = this; + +      var error = undefined; +      var chunk = 512 * 1024; +      var i = 0; + +      if (this.updating) { +        error = new Error('SourceBuffer.append() cannot be called ' + 'while an update is in progress'); +        error.name = 'InvalidStateError'; +        error.code = 11; +        throw error; +      } + +      this.updating = true; +      this.mediaSource.readyState = 'open'; +      this.trigger({ type: 'update' }); + +      // this is here to use recursion +      var chunkInData = function chunkInData() { +        _this2.segmentParser_.push(bytes.subarray(i, i + chunk)); +        i += chunk; +        if (i < bytes.byteLength) { +          scheduleTick(chunkInData); +        } else { +          scheduleTick(_this2.segmentParser_.flush.bind(_this2.segmentParser_)); +        } +      }; + +      chunkInData(); +    } + +    // reset the parser and remove any data queued to be sent to the swf +  }, { +    key: 'abort', +    value: function abort() { +      this.buffer_ = []; +      this.bufferSize_ = 0; +      this.mediaSource.swfObj.vjs_abort(); + +      // report any outstanding updates have ended +      if (this.updating) { +        this.updating = false; +        this.trigger({ type: 'updateend' }); +      } +    } + +    // Flash cannot remove ranges already buffered in the NetStream +    // but seeking clears the buffer entirely. For most purposes, +    // having this operation act as a no-op is acceptable. +  }, { +    key: 'remove', +    value: function remove(start, end) { +      (0, _removeCuesFromTrack2['default'])(start, end, this.metadataTrack_); +      (0, _removeCuesFromTrack2['default'])(start, end, this.inbandTextTrack_); +      this.trigger({ type: 'update' }); +      this.trigger({ type: 'updateend' }); +    } +  }, { +    key: 'receiveBuffer_', +    value: function receiveBuffer_(segment) { +      var _this3 = this; + +      // create an in-band caption track if one is present in the segment +      (0, _createTextTracksIfNecessary2['default'])(this, this.mediaSource, segment); +      (0, _addTextTrackData2['default'])(this, segment.captions, segment.metadata); + +      // Do this asynchronously since convertTagsToData_ can be time consuming +      scheduleTick(function () { +        var flvBytes = _this3.convertTagsToData_(segment); + +        if (_this3.buffer_.length === 0) { +          scheduleTick(_this3.processBuffer_.bind(_this3)); +        } + +        if (flvBytes) { +          _this3.buffer_.push(flvBytes); +          _this3.bufferSize_ += flvBytes.byteLength; +        } +      }); +    } + +    // append a portion of the current buffer to the SWF +  }, { +    key: 'processBuffer_', +    value: function processBuffer_() { +      var chunk = undefined; +      var i = undefined; +      var length = undefined; +      var binary = undefined; +      var b64str = undefined; +      var startByte = 0; +      var appendIterations = 0; +      var startTime = +new Date(); +      var appendTime = undefined; + +      if (!this.buffer_.length) { +        if (this.updating !== false) { +          this.updating = false; +          this.trigger({ type: 'updateend' }); +        } +        // do nothing if the buffer is empty +        return; +      } + +      do { +        appendIterations++; +        // concatenate appends up to the max append size +        chunk = this.buffer_[0].subarray(startByte, startByte + this.chunkSize_); + +        // requeue any bytes that won't make it this round +        if (chunk.byteLength < this.chunkSize_ || this.buffer_[0].byteLength === startByte + this.chunkSize_) { +          startByte = 0; +          this.buffer_.shift(); +        } else { +          startByte += this.chunkSize_; +        } + +        this.bufferSize_ -= chunk.byteLength; + +        // base64 encode the bytes +        binary = ''; +        length = chunk.byteLength; +        for (i = 0; i < length; i++) { +          binary += String.fromCharCode(chunk[i]); +        } +        b64str = window.btoa(binary); + +        // bypass normal ExternalInterface calls and pass xml directly +        // IE can be slow by default +        this.mediaSource.swfObj.CallFunction('<invoke name="vjs_appendBuffer"' + 'returntype="javascript"><arguments><string>' + b64str + '</string></arguments></invoke>'); +        appendTime = new Date() - startTime; +      } while (this.buffer_.length && appendTime < _flashConstants2['default'].TIME_PER_TICK); + +      if (this.buffer_.length && startByte) { +        this.buffer_[0] = this.buffer_[0].subarray(startByte); +      } + +      if (appendTime >= _flashConstants2['default'].TIME_PER_TICK) { +        // We want to target 4 iterations per time-slot so that gives us +        // room to adjust to changes in Flash load and other externalities +        // such as garbage collection while still maximizing throughput +        this.chunkSize_ = Math.floor(this.chunkSize_ * (appendIterations / 4)); +      } + +      // We also make sure that the chunk-size doesn't drop below 1KB or +      // go above 1MB as a sanity check +      this.chunkSize_ = Math.max(_flashConstants2['default'].MIN_CHUNK, Math.min(this.chunkSize_, _flashConstants2['default'].MAX_CHUNK)); + +      // schedule another append if necessary +      if (this.bufferSize_ !== 0) { +        scheduleTick(this.processBuffer_.bind(this)); +      } else { +        this.updating = false; +        this.trigger({ type: 'updateend' }); +      } +    } + +    // Turns an array of flv tags into a Uint8Array representing the +    // flv data. Also removes any tags that are before the current +    // time so that playback begins at or slightly after the right +    // place on a seek +  }, { +    key: 'convertTagsToData_', +    value: function convertTagsToData_(segmentData) { +      var segmentByteLength = 0; +      var tech = this.mediaSource.tech_; +      var targetPts = 0; +      var i = undefined; +      var j = undefined; +      var segment = undefined; +      var filteredTags = []; +      var tags = this.getOrderedTags_(segmentData); + +      // Establish the media timeline to PTS translation if we don't +      // have one already +      if (isNaN(this.basePtsOffset_) && tags.length) { +        this.basePtsOffset_ = tags[0].pts; +      } + +      // Trim any tags that are before the end of the end of +      // the current buffer +      if (tech.buffered().length) { +        targetPts = tech.buffered().end(0) - this.timestampOffset; +      } +      // Trim to currentTime if it's ahead of buffered or buffered doesn't exist +      targetPts = Math.max(targetPts, tech.currentTime() - this.timestampOffset); + +      // PTS values are represented in milliseconds +      targetPts *= 1e3; +      targetPts += this.basePtsOffset_; + +      // skip tags with a presentation time less than the seek target +      for (i = 0; i < tags.length; i++) { +        if (tags[i].pts >= targetPts) { +          filteredTags.push(tags[i]); +        } +      } + +      if (filteredTags.length === 0) { +        return; +      } + +      // concatenate the bytes into a single segment +      for (i = 0; i < filteredTags.length; i++) { +        segmentByteLength += filteredTags[i].bytes.byteLength; +      } +      segment = new Uint8Array(segmentByteLength); +      for (i = 0, j = 0; i < filteredTags.length; i++) { +        segment.set(filteredTags[i].bytes, j); +        j += filteredTags[i].bytes.byteLength; +      } + +      return segment; +    } + +    // assemble the FLV tags in decoder order +  }, { +    key: 'getOrderedTags_', +    value: function getOrderedTags_(segmentData) { +      var videoTags = segmentData.tags.videoTags; +      var audioTags = segmentData.tags.audioTags; +      var tag = undefined; +      var tags = []; + +      while (videoTags.length || audioTags.length) { +        if (!videoTags.length) { +          // only audio tags remain +          tag = audioTags.shift(); +        } else if (!audioTags.length) { +          // only video tags remain +          tag = videoTags.shift(); +        } else if (audioTags[0].dts < videoTags[0].dts) { +          // audio should be decoded next +          tag = audioTags.shift(); +        } else { +          // video should be decoded next +          tag = videoTags.shift(); +        } + +        tags.push(tag.finalize()); +      } + +      return tags; +    } +  }]); + +  return FlashSourceBuffer; +})(_videoJs2['default'].EventTarget); + +exports['default'] = FlashSourceBuffer; +module.exports = exports['default']; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./add-text-track-data":1,"./create-text-tracks-if-necessary":2,"./flash-constants":3,"./remove-cues-from-track":7,"mux.js":17}],6:[function(require,module,exports){ +(function (global){ +'use strict'; + +Object.defineProperty(exports, '__esModule', { +  value: true +}); + +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + +var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _videoJs = (typeof window !== "undefined" ? window['videojs'] : typeof global !== "undefined" ? global['videojs'] : null); + +var _videoJs2 = _interopRequireDefault(_videoJs); + +var _virtualSourceBuffer = require('./virtual-source-buffer'); + +var _virtualSourceBuffer2 = _interopRequireDefault(_virtualSourceBuffer); + +// Replace the old apple-style `avc1.<dd>.<dd>` codec string with the standard +// `avc1.<hhhhhh>` +var translateLegacyCodecs = function translateLegacyCodecs(codecs) { +  return codecs.replace(/avc1\.(\d+)\.(\d+)/i, function (orig, profile, avcLevel) { +    var profileHex = ('00' + Number(profile).toString(16)).slice(-2); +    var avcLevelHex = ('00' + Number(avcLevel).toString(16)).slice(-2); + +    return 'avc1.' + profileHex + '00' + avcLevelHex; +  }); +}; + +var HtmlMediaSource = (function (_videojs$EventTarget) { +  _inherits(HtmlMediaSource, _videojs$EventTarget); + +  function HtmlMediaSource() { +    _classCallCheck(this, HtmlMediaSource); + +    _get(Object.getPrototypeOf(HtmlMediaSource.prototype), 'constructor', this).call(this, _videoJs2['default'].EventTarget); +    /* eslint-disable consistent-this */ +    var self = this; +    /* eslint-enable consistent-this */ +    var property = undefined; + +    this.mediaSource_ = new window.MediaSource(); +    // delegate to the native MediaSource's methods by default +    for (property in this.mediaSource_) { +      if (!(property in HtmlMediaSource.prototype) && typeof this.mediaSource_[property] === 'function') { +        this[property] = this.mediaSource_[property].bind(this.mediaSource_); +      } +    } + +    // emulate `duration` and `seekable` until seeking can be +    // handled uniformly for live streams +    // see https://github.com/w3c/media-source/issues/5 +    this.duration_ = NaN; +    Object.defineProperty(this, 'duration', { +      get: function get() { +        if (self.duration_ === Infinity) { +          return self.duration_; +        } +        return self.mediaSource_.duration; +      }, +      set: function set(duration) { +        self.duration_ = duration; +        if (duration !== Infinity) { +          self.mediaSource_.duration = duration; +          return; +        } +      } +    }); +    Object.defineProperty(this, 'seekable', { +      get: function get() { +        if (this.duration_ === Infinity) { +          return _videoJs2['default'].createTimeRanges([[0, self.mediaSource_.duration]]); +        } +        return self.mediaSource_.seekable; +      } +    }); + +    Object.defineProperty(this, 'readyState', { +      get: function get() { +        return self.mediaSource_.readyState; +      } +    }); + +    // the list of virtual and native SourceBuffers created by this +    // MediaSource +    this.sourceBuffers = []; + +    // Re-emit MediaSource events on the polyfill +    ['sourceopen', 'sourceclose', 'sourceended'].forEach(function (eventName) { +      this.mediaSource_.addEventListener(eventName, this.trigger.bind(this)); +    }, this); + +    // capture the associated player when the MediaSource is +    // successfully attached +    this.on('sourceopen', function (event) { +      var video = document.querySelector('[src="' + self.url_ + '"]'); + +      if (!video) { +        return; +      } + +      self.player_ = (0, _videoJs2['default'])(video.parentNode); +    }); + +    // explicitly terminate any WebWorkers that were created +    // by SourceHandlers +    this.on('sourceclose', function (event) { +      this.sourceBuffers.forEach(function (sourceBuffer) { +        if (sourceBuffer.transmuxer_) { +          sourceBuffer.transmuxer_.terminate(); +        } +      }); + +      this.sourceBuffers.length = 0; +    }); +  } + +  _createClass(HtmlMediaSource, [{ +    key: 'addSeekableRange_', +    value: function addSeekableRange_(start, end) { +      var error = undefined; + +      if (this.duration !== Infinity) { +        error = new Error('MediaSource.addSeekableRange() can only be invoked ' + 'when the duration is Infinity'); +        error.name = 'InvalidStateError'; +        error.code = 11; +        throw error; +      } + +      if (end > this.mediaSource_.duration || isNaN(this.mediaSource_.duration)) { +        this.mediaSource_.duration = end; +      } +    } +  }, { +    key: 'addSourceBuffer', +    value: function addSourceBuffer(type) { +      var buffer = undefined; +      var codecs = undefined; +      var avcCodec = undefined; +      var mp4aCodec = undefined; +      var avcRegEx = /avc1\.[\da-f]+/i; +      var mp4aRegEx = /mp4a\.\d+.\d+/i; + +      // create a virtual source buffer to transmux MPEG-2 transport +      // stream segments into fragmented MP4s +      if (/^video\/mp2t/i.test(type)) { +        codecs = type.split(';').slice(1).join(';'); +        codecs = translateLegacyCodecs(codecs); + +        // Pull out each individual codec string if it exists +        avcCodec = (codecs.match(avcRegEx) || [])[0]; +        mp4aCodec = (codecs.match(mp4aRegEx) || [])[0]; + +        // If a codec is unspecified, use the defaults +        if (!avcCodec || !avcCodec.length) { +          avcCodec = 'avc1.4d400d'; +        } +        if (!mp4aCodec || !mp4aCodec.length) { +          mp4aCodec = 'mp4a.40.2'; +        } + +        buffer = new _virtualSourceBuffer2['default'](this, [avcCodec, mp4aCodec]); +        this.sourceBuffers.push(buffer); +        return buffer; +      } + +      // delegate to the native implementation +      buffer = this.mediaSource_.addSourceBuffer(type); +      this.sourceBuffers.push(buffer); +      return buffer; +    } +  }]); + +  return HtmlMediaSource; +})(_videoJs2['default'].EventTarget); + +exports['default'] = HtmlMediaSource; +module.exports = exports['default']; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./virtual-source-buffer":9}],7:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { +  value: true +}); +var removeCuesFromTrack = function removeCuesFromTrack(start, end, track) { +  var i = undefined; +  var cue = undefined; + +  if (!track) { +    return; +  } + +  i = track.cues.length; + +  while (i--) { +    cue = track.cues[i]; + +    // Remove any overlapping cue +    if (cue.startTime <= end && cue.endTime >= start) { +      track.removeCue(cue); +    } +  } +}; + +exports["default"] = removeCuesFromTrack; +module.exports = exports["default"]; +},{}],8:[function(require,module,exports){ +/** + * videojs-contrib-media-sources + * + * Copyright (c) 2015 Brightcove + * All rights reserved. + * + * Handles communication between the browser-world and the mux.js + * transmuxer running inside of a WebWorker by exposing a simple + * message-based interface to a Transmuxer object. + */ +'use strict'; + +Object.defineProperty(exports, '__esModule', { +  value: true +}); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +var _muxJs = require('mux.js'); + +var _muxJs2 = _interopRequireDefault(_muxJs); + +var globalTransmuxer = undefined; +var initOptions = {}; + +/** + * wireTransmuxerEvents + * Re-emits tranmsuxer events by converting them into messages to the + * world outside the worker + */ +var wireTransmuxerEvents = function wireTransmuxerEvents(transmuxer) { +  transmuxer.on('data', function (segment) { +    // transfer ownership of the underlying ArrayBuffer +    // instead of doing a copy to save memory +    // ArrayBuffers are transferable but generic TypedArrays are not +    /* eslint-disable max-len */ +    // see https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers#Passing_data_by_transferring_ownership_(transferable_objects) +    /* eslint-enable max-len */ +    var typedArray = segment.data; + +    segment.data = typedArray.buffer; +    postMessage({ +      action: 'data', +      segment: segment, +      byteOffset: typedArray.byteOffset, +      byteLength: typedArray.byteLength +    }, [segment.data]); +  }); + +  if (transmuxer.captionStream) { +    transmuxer.captionStream.on('data', function (caption) { +      postMessage({ +        action: 'caption', +        data: caption +      }); +    }); +  } + +  transmuxer.on('done', function (data) { +    postMessage({ action: 'done' }); +  }); +}; + +/** + * All incoming messages route through this hash. If no function exists + * to handle an incoming message, then we ignore the message. + */ +var messageHandlers = { +  /** +   * init +   * Allows you to initialize the transmuxer and pass along options from +   * outside the worker +   */ +  init: function init(data) { +    initOptions = data && data.options || {}; +    this.defaultInit(); +  }, +  /** +   * defaultInit +   * Is called before every function and initializes the transmuxer with +   * default options if `init` was never explicitly called +   */ +  defaultInit: function defaultInit() { +    if (globalTransmuxer) { +      globalTransmuxer.dispose(); +    } +    globalTransmuxer = new _muxJs2['default'].mp4.Transmuxer(initOptions); +    wireTransmuxerEvents(globalTransmuxer); +  }, +  /** +   * push +   * Adds data (a ts segment) to the start of the transmuxer pipeline for +   * processing +   */ +  push: function push(data) { +    // Cast array buffer to correct type for transmuxer +    var segment = new Uint8Array(data.data, data.byteOffset, data.byteLength); + +    globalTransmuxer.push(segment); +  }, +  /** +   * reset +   * Recreate the transmuxer so that the next segment added via `push` +   * start with a fresh transmuxer +   */ +  reset: function reset() { +    this.defaultInit(); +  }, +  /** +   * setTimestampOffset +   * Set the value that will be used as the `baseMediaDecodeTime` time for the +   * next segment pushed in. Subsequent segments will have their `baseMediaDecodeTime` +   * set relative to the first based on the PTS values. +   */ +  setTimestampOffset: function setTimestampOffset(data) { +    var timestampOffset = data.timestampOffset || 0; + +    globalTransmuxer.setBaseMediaDecodeTime(Math.round(timestampOffset * 90000)); +  }, +  /** +   * flush +   * Forces the pipeline to finish processing the last segment and emit it's +   * results +   */ +  flush: function flush(data) { +    globalTransmuxer.flush(); +  } +}; + +var Worker = function Worker(self) { +  self.onmessage = function (event) { +    // Setup the default transmuxer if one doesn't exist yet and we are invoked with +    // an action other than `init` +    if (!globalTransmuxer && event.data.action !== 'init') { +      messageHandlers.defaultInit(); +    } + +    if (event.data && event.data.action) { +      if (messageHandlers[event.data.action]) { +        messageHandlers[event.data.action](event.data); +      } +    } +  }; +}; + +exports['default'] = Worker; +module.exports = exports['default']; +},{"mux.js":17}],9:[function(require,module,exports){ +(function (global){ +'use strict'; + +Object.defineProperty(exports, '__esModule', { +  value: true +}); + +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + +var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _videoJs = (typeof window !== "undefined" ? window['videojs'] : typeof global !== "undefined" ? global['videojs'] : null); + +var _videoJs2 = _interopRequireDefault(_videoJs); + +var _createTextTracksIfNecessary = require('./create-text-tracks-if-necessary'); + +var _createTextTracksIfNecessary2 = _interopRequireDefault(_createTextTracksIfNecessary); + +var _removeCuesFromTrack = require('./remove-cues-from-track'); + +var _removeCuesFromTrack2 = _interopRequireDefault(_removeCuesFromTrack); + +var _addTextTrackData = require('./add-text-track-data'); + +var _addTextTrackData2 = _interopRequireDefault(_addTextTrackData); + +var _webworkify = require('webworkify'); + +var _webworkify2 = _interopRequireDefault(_webworkify); + +var _transmuxerWorker = require('./transmuxer-worker'); + +var _transmuxerWorker2 = _interopRequireDefault(_transmuxerWorker); + +var aggregateUpdateHandler = function aggregateUpdateHandler(mediaSource, guardBufferName, type) { +  return function () { +    if (!mediaSource[guardBufferName] || !mediaSource[guardBufferName].updating) { +      return mediaSource.trigger(type); +    } +  }; +}; + +var VirtualSourceBuffer = (function (_videojs$EventTarget) { +  _inherits(VirtualSourceBuffer, _videojs$EventTarget); + +  function VirtualSourceBuffer(mediaSource, codecs) { +    var _this = this; + +    _classCallCheck(this, VirtualSourceBuffer); + +    _get(Object.getPrototypeOf(VirtualSourceBuffer.prototype), 'constructor', this).call(this, _videoJs2['default'].EventTarget); +    this.timestampOffset_ = 0; +    this.pendingBuffers_ = []; +    this.bufferUpdating_ = false; +    this.mediaSource_ = mediaSource; +    this.codecs_ = codecs; + +    // append muxed segments to their respective native buffers as +    // soon as they are available +    this.transmuxer_ = (0, _webworkify2['default'])(_transmuxerWorker2['default']); +    this.transmuxer_.postMessage({ action: 'init', options: { remux: false } }); + +    this.transmuxer_.onmessage = function (event) { +      if (event.data.action === 'data') { +        return _this.data_(event); +      } + +      if (event.data.action === 'done') { +        return _this.done_(event); +      } +    }; + +    // this timestampOffset is a property with the side-effect of resetting +    // baseMediaDecodeTime in the transmuxer on the setter +    Object.defineProperty(this, 'timestampOffset', { +      get: function get() { +        return this.timestampOffset_; +      }, +      set: function set(val) { +        if (typeof val === 'number' && val >= 0) { +          this.timestampOffset_ = val; + +          // We have to tell the transmuxer to set the baseMediaDecodeTime to +          // the desired timestampOffset for the next segment +          this.transmuxer_.postMessage({ +            action: 'setTimestampOffset', +            timestampOffset: val +          }); +        } +      } +    }); +    // setting the append window affects both source buffers +    Object.defineProperty(this, 'appendWindowStart', { +      get: function get() { +        return (this.videoBuffer_ || this.audioBuffer_).appendWindowStart; +      }, +      set: function set(start) { +        if (this.videoBuffer_) { +          this.videoBuffer_.appendWindowStart = start; +        } +        if (this.audioBuffer_) { +          this.audioBuffer_.appendWindowStart = start; +        } +      } +    }); +    // this buffer is "updating" if either of its native buffers are +    Object.defineProperty(this, 'updating', { +      get: function get() { +        return this.bufferUpdating_ || this.audioBuffer_ && this.audioBuffer_.updating || this.videoBuffer_ && this.videoBuffer_.updating; +      } +    }); +    // the buffered property is the intersection of the buffered +    // ranges of the native source buffers +    Object.defineProperty(this, 'buffered', { +      get: function get() { +        var start = null; +        var end = null; +        var arity = 0; +        var extents = []; +        var ranges = []; + +        // Handle the case where there is no buffer data +        if ((!this.videoBuffer_ || this.videoBuffer_.buffered.length === 0) && (!this.audioBuffer_ || this.audioBuffer_.buffered.length === 0)) { +          return _videoJs2['default'].createTimeRange(); +        } + +        // Handle the case where we only have one buffer +        if (!this.videoBuffer_) { +          return this.audioBuffer_.buffered; +        } else if (!this.audioBuffer_) { +          return this.videoBuffer_.buffered; +        } + +        // Handle the case where we have both buffers and create an +        // intersection of the two +        var videoBuffered = this.videoBuffer_.buffered; +        var audioBuffered = this.audioBuffer_.buffered; +        var count = videoBuffered.length; + +        // A) Gather up all start and end times +        while (count--) { +          extents.push({ time: videoBuffered.start(count), type: 'start' }); +          extents.push({ time: videoBuffered.end(count), type: 'end' }); +        } +        count = audioBuffered.length; +        while (count--) { +          extents.push({ time: audioBuffered.start(count), type: 'start' }); +          extents.push({ time: audioBuffered.end(count), type: 'end' }); +        } +        // B) Sort them by time +        extents.sort(function (a, b) { +          return a.time - b.time; +        }); + +        // C) Go along one by one incrementing arity for start and decrementing +        //    arity for ends +        for (count = 0; count < extents.length; count++) { +          if (extents[count].type === 'start') { +            arity++; + +            // D) If arity is ever incremented to 2 we are entering an +            //    overlapping range +            if (arity === 2) { +              start = extents[count].time; +            } +          } else if (extents[count].type === 'end') { +            arity--; + +            // E) If arity is ever decremented to 1 we leaving an +            //    overlapping range +            if (arity === 1) { +              end = extents[count].time; +            } +          } + +          // F) Record overlapping ranges +          if (start !== null && end !== null) { +            ranges.push([start, end]); +            start = null; +            end = null; +          } +        } + +        return _videoJs2['default'].createTimeRanges(ranges); +      } +    }); +  } + +  // Transmuxer message handlers + +  _createClass(VirtualSourceBuffer, [{ +    key: 'data_', +    value: function data_(event) { +      var segment = event.data.segment; +      var nativeMediaSource = this.mediaSource_.mediaSource_; + +      // Cast ArrayBuffer to TypedArray +      segment.data = new Uint8Array(segment.data, event.data.byteOffset, event.data.byteLength); + +      // If any sourceBuffers have not been created, do so now +      if (segment.type === 'video') { +        if (!this.videoBuffer_) { +          this.videoBuffer_ = nativeMediaSource.addSourceBuffer('video/mp4;codecs="' + this.codecs_[0] + '"'); +          // aggregate buffer events +          this.videoBuffer_.addEventListener('updatestart', aggregateUpdateHandler(this, 'audioBuffer_', 'updatestart')); +          this.videoBuffer_.addEventListener('update', aggregateUpdateHandler(this, 'audioBuffer_', 'update')); +          this.videoBuffer_.addEventListener('updateend', aggregateUpdateHandler(this, 'audioBuffer_', 'updateend')); +        } +      } else if (segment.type === 'audio') { +        if (!this.audioBuffer_) { +          this.audioBuffer_ = nativeMediaSource.addSourceBuffer('audio/mp4;codecs="' + this.codecs_[1] + '"'); +          // aggregate buffer events +          this.audioBuffer_.addEventListener('updatestart', aggregateUpdateHandler(this, 'videoBuffer_', 'updatestart')); +          this.audioBuffer_.addEventListener('update', aggregateUpdateHandler(this, 'videoBuffer_', 'update')); +          this.audioBuffer_.addEventListener('updateend', aggregateUpdateHandler(this, 'videoBuffer_', 'updateend')); +        } +      } else if (segment.type === 'combined') { +        if (!this.videoBuffer_) { +          this.videoBuffer_ = nativeMediaSource.addSourceBuffer('video/mp4;codecs="' + this.codecs_.join(',') + '"'); +          // aggregate buffer events +          this.videoBuffer_.addEventListener('updatestart', aggregateUpdateHandler(this, 'videoBuffer_', 'updatestart')); +          this.videoBuffer_.addEventListener('update', aggregateUpdateHandler(this, 'videoBuffer_', 'update')); +          this.videoBuffer_.addEventListener('updateend', aggregateUpdateHandler(this, 'videoBuffer_', 'updateend')); +        } +      } +      (0, _createTextTracksIfNecessary2['default'])(this, this.mediaSource_, segment); + +      // Add the segments to the pendingBuffers array +      this.pendingBuffers_.push(segment); +      return; +    } +  }, { +    key: 'done_', +    value: function done_() { +      // All buffers should have been flushed from the muxer +      // start processing anything we have received +      this.processPendingSegments_(); +      return; +    } + +    // SourceBuffer Implementation + +  }, { +    key: 'appendBuffer', +    value: function appendBuffer(segment) { +      // Start the internal "updating" state +      this.bufferUpdating_ = true; + +      this.transmuxer_.postMessage({ +        action: 'push', +        // Send the typed-array of data as an ArrayBuffer so that +        // it can be sent as a "Transferable" and avoid the costly +        // memory copy +        data: segment.buffer, + +        // To recreate the original typed-array, we need information +        // about what portion of the ArrayBuffer it was a view into +        byteOffset: segment.byteOffset, +        byteLength: segment.byteLength +      }, [segment.buffer]); +      this.transmuxer_.postMessage({ action: 'flush' }); +    } +  }, { +    key: 'remove', +    value: function remove(start, end) { +      if (this.videoBuffer_) { +        this.videoBuffer_.remove(start, end); +      } +      if (this.audioBuffer_) { +        this.audioBuffer_.remove(start, end); +      } + +      // Remove Metadata Cues (id3) +      (0, _removeCuesFromTrack2['default'])(start, end, this.metadataTrack_); + +      // Remove Any Captions +      (0, _removeCuesFromTrack2['default'])(start, end, this.inbandTextTrack_); +    } + +    /** +      * Process any segments that the muxer has output +      * Concatenate segments together based on type and append them into +      * their respective sourceBuffers +      */ +  }, { +    key: 'processPendingSegments_', +    value: function processPendingSegments_() { +      var sortedSegments = { +        video: { +          segments: [], +          bytes: 0 +        }, +        audio: { +          segments: [], +          bytes: 0 +        }, +        captions: [], +        metadata: [] +      }; + +      // Sort segments into separate video/audio arrays and +      // keep track of their total byte lengths +      sortedSegments = this.pendingBuffers_.reduce(function (segmentObj, segment) { +        var type = segment.type; +        var data = segment.data; + +        // A "combined" segment type (unified video/audio) uses the videoBuffer +        if (type === 'combined') { +          type = 'video'; +        } + +        segmentObj[type].segments.push(data); +        segmentObj[type].bytes += data.byteLength; + +        // Gather any captions into a single array +        if (segment.captions) { +          segmentObj.captions = segmentObj.captions.concat(segment.captions); +        } + +        // Gather any metadata into a single array +        if (segment.metadata) { +          segmentObj.metadata = segmentObj.metadata.concat(segment.metadata); +        } + +        return segmentObj; +      }, sortedSegments); + +      (0, _addTextTrackData2['default'])(this, sortedSegments.captions, sortedSegments.metadata); + +      // Merge multiple video and audio segments into one and append +      this.concatAndAppendSegments_(sortedSegments.video, this.videoBuffer_); +      this.concatAndAppendSegments_(sortedSegments.audio, this.audioBuffer_); + +      this.pendingBuffers_.length = 0; + +      // We are no longer in the internal "updating" state +      this.bufferUpdating_ = false; +    } + +    /** +      * Combind all segments into a single Uint8Array and then append them +      * to the destination buffer +      */ +  }, { +    key: 'concatAndAppendSegments_', +    value: function concatAndAppendSegments_(segmentObj, destinationBuffer) { +      var offset = 0; +      var tempBuffer = undefined; + +      if (segmentObj.bytes) { +        tempBuffer = new Uint8Array(segmentObj.bytes); + +        // Combine the individual segments into one large typed-array +        segmentObj.segments.forEach(function (segment) { +          tempBuffer.set(segment, offset); +          offset += segment.byteLength; +        }); + +        destinationBuffer.appendBuffer(tempBuffer); +      } +    } + +    // abort any sourceBuffer actions and throw out any un-appended data +  }, { +    key: 'abort', +    value: function abort() { +      if (this.videoBuffer_) { +        this.videoBuffer_.abort(); +      } +      if (this.audioBuffer_) { +        this.audioBuffer_.abort(); +      } +      if (this.transmuxer_) { +        this.transmuxer_.postMessage({ action: 'reset' }); +      } +      this.pendingBuffers_.length = 0; +      this.bufferUpdating_ = false; +    } +  }]); + +  return VirtualSourceBuffer; +})(_videoJs2['default'].EventTarget); + +exports['default'] = VirtualSourceBuffer; +module.exports = exports['default']; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./add-text-track-data":1,"./create-text-tracks-if-necessary":2,"./remove-cues-from-track":7,"./transmuxer-worker":8,"webworkify":30}],10:[function(require,module,exports){ +/** + * mux.js + * + * Copyright (c) 2016 Brightcove + * All rights reserved. + * + * A stream-based aac to mp4 converter. This utility can be used to + * deliver mp4s to a SourceBuffer on platforms that support native + * Media Source Extensions. + */ +'use strict'; +var Stream = require('../utils/stream.js'); + +// Constants +var AacStream; + +/** + * Splits an incoming stream of binary data into ADTS and ID3 Frames. + */ + +AacStream = function() { +  var +    everything, +    receivedTimeStamp = false, +    timeStamp = 0; + +  AacStream.prototype.init.call(this); + +  this.setTimestamp = function (timestamp) { +    timeStamp = timestamp; +  }; + +  this.parseId3TagSize = function(header, byteIndex) { +    var +      returnSize = (header[byteIndex + 6] << 21) | +                   (header[byteIndex + 7] << 14) | +                   (header[byteIndex + 8] << 7) | +                   (header[byteIndex + 9]), +      flags = header[byteIndex + 5], +      footerPresent = (flags & 16) >> 4; + +    if (footerPresent) { +      return returnSize + 20; +    } +    return returnSize + 10; +  }; + +  this.parseAdtsSize = function(header, byteIndex) { +    var +      lowThree = (header[byteIndex + 5] & 0xE0) >> 5, +      middle = header[byteIndex + 4] << 3, +      highTwo = header[byteIndex + 3] & 0x3 << 11; + +    return (highTwo | middle) | lowThree; +  }; + +  this.push = function(bytes) { +    var +      frameSize = 0, +      byteIndex = 0, +      chunk, +      packet, +      tempLength; + +    // If there are bytes remaining from the last segment, prepend them to the +    // bytes that were pushed in +    if (everything !== undefined && everything.length) { +      tempLength = everything.length; +      everything = new Uint8Array(bytes.byteLength + tempLength); +      everything.set(everything.subarray(0, tempLength)); +      everything.set(bytes, tempLength); +    } else { +      everything = bytes; +    } + +    while (everything.length - byteIndex >= 10) { +      if ((everything[byteIndex] === 'I'.charCodeAt(0)) && +          (everything[byteIndex + 1] === 'D'.charCodeAt(0)) && +          (everything[byteIndex + 2] === '3'.charCodeAt(0))) { + +        //check framesize +        frameSize = this.parseId3TagSize(everything, byteIndex); +        //we have enough in the buffer to emit a full packet +        if (frameSize > everything.length) { +          break; +        } +        chunk = { +          type: 'timed-metadata', +          data: everything.subarray(byteIndex, byteIndex + frameSize) +        }; +        this.trigger('data', chunk); +        byteIndex += frameSize; +        continue; +      } else if ((everything[byteIndex] & 0xff === 0xff) && +                 ((everything[byteIndex + 1] & 0xf0) === 0xf0)) { +        frameSize = this.parseAdtsSize(everything, byteIndex); + +        if (frameSize > everything.length) { +          break; +        } +        packet = { +          type: 'audio', +          data: everything.subarray(byteIndex, byteIndex + frameSize), +          pts: timeStamp, +          dts: timeStamp, +        }; +        this.trigger('data', packet); +        byteIndex += frameSize; +        continue; +      } +      byteIndex++; +    } +  }; +}; + +AacStream.prototype = new Stream(); + + + +module.exports = AacStream; + +},{"../utils/stream.js":29}],11:[function(require,module,exports){ +'use strict'; + +var Stream = require('../utils/stream.js'); + +var AdtsStream; + +var +  ADTS_SAMPLING_FREQUENCIES = [ +    96000, +    88200, +    64000, +    48000, +    44100, +    32000, +    24000, +    22050, +    16000, +    12000, +    11025, +    8000, +    7350 +  ]; + +/* + * Accepts a ElementaryStream and emits data events with parsed + * AAC Audio Frames of the individual packets. Input audio in ADTS + * format is unpacked and re-emitted as AAC frames. + * + * @see http://wiki.multimedia.cx/index.php?title=ADTS + * @see http://wiki.multimedia.cx/?title=Understanding_AAC + */ +AdtsStream = function() { +  var self, buffer; + +  AdtsStream.prototype.init.call(this); + +  self = this; + +  this.push = function(packet) { +    var +      i = 0, +      frameNum = 0, +      frameLength, +      protectionSkipBytes, +      frameEnd, +      oldBuffer, +      numFrames, +      sampleCount, +      adtsFrameDuration; + +    if (packet.type !== 'audio') { +      // ignore non-audio data +      return; +    } + +    // Prepend any data in the buffer to the input data so that we can parse +    // aac frames the cross a PES packet boundary +    if (buffer) { +      oldBuffer = buffer; +      buffer = new Uint8Array(oldBuffer.byteLength + packet.data.byteLength); +      buffer.set(oldBuffer); +      buffer.set(packet.data, oldBuffer.byteLength); +    } else { +      buffer = packet.data; +    } + +    // unpack any ADTS frames which have been fully received +    // for details on the ADTS header, see http://wiki.multimedia.cx/index.php?title=ADTS +    while (i + 5 < buffer.length) { + +      // Loook for the start of an ADTS header.. +      if (buffer[i] !== 0xFF || (buffer[i + 1] & 0xF6) !== 0xF0) { +        // If a valid header was not found,  jump one forward and attempt to +        // find a valid ADTS header starting at the next byte +        i++; +        continue; +      } + +      // The protection skip bit tells us if we have 2 bytes of CRC data at the +      // end of the ADTS header +      protectionSkipBytes = (~buffer[i + 1] & 0x01) * 2; + +      // Frame length is a 13 bit integer starting 16 bits from the +      // end of the sync sequence +      frameLength = ((buffer[i + 3] & 0x03) << 11) | +        (buffer[i + 4] << 3) | +        ((buffer[i + 5] & 0xe0) >> 5); + +      sampleCount = ((buffer[i + 6] & 0x03) + 1) * 1024; +      adtsFrameDuration = (sampleCount * 90000) / +        ADTS_SAMPLING_FREQUENCIES[(buffer[i + 2] & 0x3c) >>> 2]; + +      frameEnd = i + frameLength; + +      // If we don't have enough data to actually finish this ADTS frame, return +      // and wait for more data +      if (buffer.byteLength < frameEnd) { +        return; +      } + +      // Otherwise, deliver the complete AAC frame +      this.trigger('data', { +        pts: packet.pts + (frameNum * adtsFrameDuration), +        dts: packet.dts + (frameNum * adtsFrameDuration), +        sampleCount: sampleCount, +        audioobjecttype: ((buffer[i + 2] >>> 6) & 0x03) + 1, +        channelcount: ((buffer[i + 2] & 1) << 3) | +          ((buffer[i + 3] & 0xc0) >>> 6), +        samplerate: ADTS_SAMPLING_FREQUENCIES[(buffer[i + 2] & 0x3c) >>> 2], +        samplingfrequencyindex: (buffer[i + 2] & 0x3c) >>> 2, +        // assume ISO/IEC 14496-12 AudioSampleEntry default of 16 +        samplesize: 16, +        data: buffer.subarray(i + 7 + protectionSkipBytes, frameEnd) +      }); + +      // If the buffer is empty, clear it and return +      if (buffer.byteLength === frameEnd) { +        buffer = undefined; +        return; +      } + +      frameNum++; + +      // Remove the finished frame from the buffer and start the process again +      buffer = buffer.subarray(frameEnd); +    } +  }; +  this.flush = function() { +    this.trigger('done'); +  }; +}; + +AdtsStream.prototype = new Stream(); + +module.exports = AdtsStream; + +},{"../utils/stream.js":29}],12:[function(require,module,exports){ +'use strict'; + +var Stream = require('../utils/stream.js'); +var ExpGolomb = require('../utils/exp-golomb.js'); + +var H264Stream, NalByteStream; + +/** + * Accepts a NAL unit byte stream and unpacks the embedded NAL units. + */ +NalByteStream = function() { +  var +    syncPoint = 0, +    i, +    buffer; +  NalByteStream.prototype.init.call(this); + +  this.push = function(data) { +    var swapBuffer; + +    if (!buffer) { +      buffer = data.data; +    } else { +      swapBuffer = new Uint8Array(buffer.byteLength + data.data.byteLength); +      swapBuffer.set(buffer); +      swapBuffer.set(data.data, buffer.byteLength); +      buffer = swapBuffer; +    } + +    // Rec. ITU-T H.264, Annex B +    // scan for NAL unit boundaries + +    // a match looks like this: +    // 0 0 1 .. NAL .. 0 0 1 +    // ^ sync point        ^ i +    // or this: +    // 0 0 1 .. NAL .. 0 0 0 +    // ^ sync point        ^ i + +    // advance the sync point to a NAL start, if necessary +    for (; syncPoint < buffer.byteLength - 3; syncPoint++) { +      if (buffer[syncPoint + 2] === 1) { +        // the sync point is properly aligned +        i = syncPoint + 5; +        break; +      } +    } + +    while (i < buffer.byteLength) { +      // look at the current byte to determine if we've hit the end of +      // a NAL unit boundary +      switch (buffer[i]) { +      case 0: +        // skip past non-sync sequences +        if (buffer[i - 1] !== 0) { +          i += 2; +          break; +        } else if (buffer[i - 2] !== 0) { +          i++; +          break; +        } + +        // deliver the NAL unit +        this.trigger('data', buffer.subarray(syncPoint + 3, i - 2)); + +        // drop trailing zeroes +        do { +          i++; +        } while (buffer[i] !== 1 && i < buffer.length); +        syncPoint = i - 2; +        i += 3; +        break; +      case 1: +        // skip past non-sync sequences +        if (buffer[i - 1] !== 0 || +            buffer[i - 2] !== 0) { +          i += 3; +          break; +        } + +        // deliver the NAL unit +        this.trigger('data', buffer.subarray(syncPoint + 3, i - 2)); +        syncPoint = i - 2; +        i += 3; +        break; +      default: +        // the current byte isn't a one or zero, so it cannot be part +        // of a sync sequence +        i += 3; +        break; +      } +    } +    // filter out the NAL units that were delivered +    buffer = buffer.subarray(syncPoint); +    i -= syncPoint; +    syncPoint = 0; +  }; + +  this.flush = function() { +    // deliver the last buffered NAL unit +    if (buffer && buffer.byteLength > 3) { +      this.trigger('data', buffer.subarray(syncPoint + 3)); +    } +    // reset the stream state +    buffer = null; +    syncPoint = 0; +    this.trigger('done'); +  }; +}; +NalByteStream.prototype = new Stream(); + +/** + * Accepts input from a ElementaryStream and produces H.264 NAL unit data + * events. + */ +H264Stream = function() { +  var +    nalByteStream = new NalByteStream(), +    self, +    trackId, +    currentPts, +    currentDts, + +    discardEmulationPreventionBytes, +    readSequenceParameterSet, +    skipScalingList; + +  H264Stream.prototype.init.call(this); +  self = this; + +  this.push = function(packet) { +    if (packet.type !== 'video') { +      return; +    } +    trackId = packet.trackId; +    currentPts = packet.pts; +    currentDts = packet.dts; + +    nalByteStream.push(packet); +  }; + +  nalByteStream.on('data', function(data) { +    var +      event = { +        trackId: trackId, +        pts: currentPts, +        dts: currentDts, +        data: data +      }; + +    switch (data[0] & 0x1f) { +    case 0x05: +      event.nalUnitType = 'slice_layer_without_partitioning_rbsp_idr'; +      break; +    case 0x06: +      event.nalUnitType = 'sei_rbsp'; +      event.escapedRBSP = discardEmulationPreventionBytes(data.subarray(1)); +      break; +    case 0x07: +      event.nalUnitType = 'seq_parameter_set_rbsp'; +      event.escapedRBSP = discardEmulationPreventionBytes(data.subarray(1)); +      event.config = readSequenceParameterSet(event.escapedRBSP); +      break; +    case 0x08: +      event.nalUnitType = 'pic_parameter_set_rbsp'; +      break; +    case 0x09: +      event.nalUnitType = 'access_unit_delimiter_rbsp'; +      break; + +    default: +      break; +    } +    self.trigger('data', event); +  }); +  nalByteStream.on('done', function() { +    self.trigger('done'); +  }); + +  this.flush = function() { +    nalByteStream.flush(); +  }; + +  /** +   * Advance the ExpGolomb decoder past a scaling list. The scaling +   * list is optionally transmitted as part of a sequence parameter +   * set and is not relevant to transmuxing. +   * @param count {number} the number of entries in this scaling list +   * @param expGolombDecoder {object} an ExpGolomb pointed to the +   * start of a scaling list +   * @see Recommendation ITU-T H.264, Section 7.3.2.1.1.1 +   */ +  skipScalingList = function(count, expGolombDecoder) { +    var +      lastScale = 8, +      nextScale = 8, +      j, +      deltaScale; + +    for (j = 0; j < count; j++) { +      if (nextScale !== 0) { +        deltaScale = expGolombDecoder.readExpGolomb(); +        nextScale = (lastScale + deltaScale + 256) % 256; +      } + +      lastScale = (nextScale === 0) ? lastScale : nextScale; +    } +  }; + +  /** +   * Expunge any "Emulation Prevention" bytes from a "Raw Byte +   * Sequence Payload" +   * @param data {Uint8Array} the bytes of a RBSP from a NAL +   * unit +   * @return {Uint8Array} the RBSP without any Emulation +   * Prevention Bytes +   */ +  discardEmulationPreventionBytes = function(data) { +    var +      length = data.byteLength, +      emulationPreventionBytesPositions = [], +      i = 1, +      newLength, newData; + +    // Find all `Emulation Prevention Bytes` +    while (i < length - 2) { +      if (data[i] === 0 && data[i + 1] === 0 && data[i + 2] === 0x03) { +        emulationPreventionBytesPositions.push(i + 2); +        i += 2; +      } else { +        i++; +      } +    } + +    // If no Emulation Prevention Bytes were found just return the original +    // array +    if (emulationPreventionBytesPositions.length === 0) { +      return data; +    } + +    // Create a new array to hold the NAL unit data +    newLength = length - emulationPreventionBytesPositions.length; +    newData = new Uint8Array(newLength); +    var sourceIndex = 0; + +    for (i = 0; i < newLength; sourceIndex++, i++) { +      if (sourceIndex === emulationPreventionBytesPositions[0]) { +        // Skip this byte +        sourceIndex++; +        // Remove this position index +        emulationPreventionBytesPositions.shift(); +      } +      newData[i] = data[sourceIndex]; +    } + +    return newData; +  }; + +  /** +   * Read a sequence parameter set and return some interesting video +   * properties. A sequence parameter set is the H264 metadata that +   * describes the properties of upcoming video frames. +   * @param data {Uint8Array} the bytes of a sequence parameter set +   * @return {object} an object with configuration parsed from the +   * sequence parameter set, including the dimensions of the +   * associated video frames. +   */ +  readSequenceParameterSet = function(data) { +    var +      frameCropLeftOffset = 0, +      frameCropRightOffset = 0, +      frameCropTopOffset = 0, +      frameCropBottomOffset = 0, +      expGolombDecoder, profileIdc, levelIdc, profileCompatibility, +      chromaFormatIdc, picOrderCntType, +      numRefFramesInPicOrderCntCycle, picWidthInMbsMinus1, +      picHeightInMapUnitsMinus1, +      frameMbsOnlyFlag, +      scalingListCount, +      i; + +    expGolombDecoder = new ExpGolomb(data); +    profileIdc = expGolombDecoder.readUnsignedByte(); // profile_idc +    profileCompatibility = expGolombDecoder.readUnsignedByte(); // constraint_set[0-5]_flag +    levelIdc = expGolombDecoder.readUnsignedByte(); // level_idc u(8) +    expGolombDecoder.skipUnsignedExpGolomb(); // seq_parameter_set_id + +    // some profiles have more optional data we don't need +    if (profileIdc === 100 || +        profileIdc === 110 || +        profileIdc === 122 || +        profileIdc === 244 || +        profileIdc ===  44 || +        profileIdc ===  83 || +        profileIdc ===  86 || +        profileIdc === 118 || +        profileIdc === 128 || +        profileIdc === 138 || +        profileIdc === 139 || +        profileIdc === 134) { +      chromaFormatIdc = expGolombDecoder.readUnsignedExpGolomb(); +      if (chromaFormatIdc === 3) { +        expGolombDecoder.skipBits(1); // separate_colour_plane_flag +      } +      expGolombDecoder.skipUnsignedExpGolomb(); // bit_depth_luma_minus8 +      expGolombDecoder.skipUnsignedExpGolomb(); // bit_depth_chroma_minus8 +      expGolombDecoder.skipBits(1); // qpprime_y_zero_transform_bypass_flag +      if (expGolombDecoder.readBoolean()) { // seq_scaling_matrix_present_flag +        scalingListCount = (chromaFormatIdc !== 3) ? 8 : 12; +        for (i = 0; i < scalingListCount; i++) { +          if (expGolombDecoder.readBoolean()) { // seq_scaling_list_present_flag[ i ] +            if (i < 6) { +              skipScalingList(16, expGolombDecoder); +            } else { +              skipScalingList(64, expGolombDecoder); +            } +          } +        } +      } +    } + +    expGolombDecoder.skipUnsignedExpGolomb(); // log2_max_frame_num_minus4 +    picOrderCntType = expGolombDecoder.readUnsignedExpGolomb(); + +    if (picOrderCntType === 0) { +      expGolombDecoder.readUnsignedExpGolomb(); //log2_max_pic_order_cnt_lsb_minus4 +    } else if (picOrderCntType === 1) { +      expGolombDecoder.skipBits(1); // delta_pic_order_always_zero_flag +      expGolombDecoder.skipExpGolomb(); // offset_for_non_ref_pic +      expGolombDecoder.skipExpGolomb(); // offset_for_top_to_bottom_field +      numRefFramesInPicOrderCntCycle = expGolombDecoder.readUnsignedExpGolomb(); +      for(i = 0; i < numRefFramesInPicOrderCntCycle; i++) { +        expGolombDecoder.skipExpGolomb(); // offset_for_ref_frame[ i ] +      } +    } + +    expGolombDecoder.skipUnsignedExpGolomb(); // max_num_ref_frames +    expGolombDecoder.skipBits(1); // gaps_in_frame_num_value_allowed_flag + +    picWidthInMbsMinus1 = expGolombDecoder.readUnsignedExpGolomb(); +    picHeightInMapUnitsMinus1 = expGolombDecoder.readUnsignedExpGolomb(); + +    frameMbsOnlyFlag = expGolombDecoder.readBits(1); +    if (frameMbsOnlyFlag === 0) { +      expGolombDecoder.skipBits(1); // mb_adaptive_frame_field_flag +    } + +    expGolombDecoder.skipBits(1); // direct_8x8_inference_flag +    if (expGolombDecoder.readBoolean()) { // frame_cropping_flag +      frameCropLeftOffset = expGolombDecoder.readUnsignedExpGolomb(); +      frameCropRightOffset = expGolombDecoder.readUnsignedExpGolomb(); +      frameCropTopOffset = expGolombDecoder.readUnsignedExpGolomb(); +      frameCropBottomOffset = expGolombDecoder.readUnsignedExpGolomb(); +    } + +    return { +      profileIdc: profileIdc, +      levelIdc: levelIdc, +      profileCompatibility: profileCompatibility, +      width: ((picWidthInMbsMinus1 + 1) * 16) - frameCropLeftOffset * 2 - frameCropRightOffset * 2, +      height: ((2 - frameMbsOnlyFlag) * (picHeightInMapUnitsMinus1 + 1) * 16) - (frameCropTopOffset * 2) - (frameCropBottomOffset * 2) +    }; +  }; + +}; +H264Stream.prototype = new Stream(); + +module.exports = { +  H264Stream: H264Stream, +  NalByteStream: NalByteStream, +}; + +},{"../utils/exp-golomb.js":28,"../utils/stream.js":29}],13:[function(require,module,exports){ +module.exports = { +  adts: require('./adts'), +  h264: require('./h264'), +}; + +},{"./adts":11,"./h264":12}],14:[function(require,module,exports){ +/** + * An object that stores the bytes of an FLV tag and methods for + * querying and manipulating that data. + * @see http://download.macromedia.com/f4v/video_file_format_spec_v10_1.pdf + */ +'use strict'; + +var FlvTag; + +// (type:uint, extraData:Boolean = false) extends ByteArray +FlvTag = function(type, extraData) { +  var +    // Counter if this is a metadata tag, nal start marker if this is a video +    // tag. unused if this is an audio tag +    adHoc = 0, // :uint + +    // The default size is 16kb but this is not enough to hold iframe +    // data and the resizing algorithm costs a bit so we create a larger +    // starting buffer for video tags +    bufferStartSize = 16384, + +    // checks whether the FLV tag has enough capacity to accept the proposed +    // write and re-allocates the internal buffers if necessary +    prepareWrite = function(flv, count) { +      var +        bytes, +        minLength = flv.position + count; +      if (minLength < flv.bytes.byteLength) { +        // there's enough capacity so do nothing +        return; +      } + +      // allocate a new buffer and copy over the data that will not be modified +      bytes = new Uint8Array(minLength * 2); +      bytes.set(flv.bytes.subarray(0, flv.position), 0); +      flv.bytes = bytes; +      flv.view = new DataView(flv.bytes.buffer); +    }, + +    // commonly used metadata properties +    widthBytes = FlvTag.widthBytes || new Uint8Array('width'.length), +    heightBytes = FlvTag.heightBytes || new Uint8Array('height'.length), +    videocodecidBytes = FlvTag.videocodecidBytes || new Uint8Array('videocodecid'.length), +    i; + +  if (!FlvTag.widthBytes) { +    // calculating the bytes of common metadata names ahead of time makes the +    // corresponding writes faster because we don't have to loop over the +    // characters +    // re-test with test/perf.html if you're planning on changing this +    for (i = 0; i < 'width'.length; i++) { +      widthBytes[i] = 'width'.charCodeAt(i); +    } +    for (i = 0; i < 'height'.length; i++) { +      heightBytes[i] = 'height'.charCodeAt(i); +    } +    for (i = 0; i < 'videocodecid'.length; i++) { +      videocodecidBytes[i] = 'videocodecid'.charCodeAt(i); +    } + +    FlvTag.widthBytes = widthBytes; +    FlvTag.heightBytes = heightBytes; +    FlvTag.videocodecidBytes = videocodecidBytes; +  } + +  this.keyFrame = false; // :Boolean + +  switch(type) { +  case FlvTag.VIDEO_TAG: +    this.length = 16; +    // Start the buffer at 256k +    bufferStartSize *= 6; +    break; +  case FlvTag.AUDIO_TAG: +    this.length = 13; +    this.keyFrame = true; +    break; +  case FlvTag.METADATA_TAG: +    this.length = 29; +    this.keyFrame = true; +    break; +  default: +    throw("Error Unknown TagType"); +  } + +  this.bytes = new Uint8Array(bufferStartSize); +  this.view = new DataView(this.bytes.buffer); +  this.bytes[0] = type; +  this.position = this.length; +  this.keyFrame = extraData; // Defaults to false + +  // presentation timestamp +  this.pts = 0; +  // decoder timestamp +  this.dts = 0; + +  // ByteArray#writeBytes(bytes:ByteArray, offset:uint = 0, length:uint = 0) +  this.writeBytes = function(bytes, offset, length) { +    var +      start = offset || 0, +      end; +    length = length || bytes.byteLength; +    end = start + length; + +    prepareWrite(this, length); +    this.bytes.set(bytes.subarray(start, end), this.position); + +    this.position += length; +    this.length = Math.max(this.length, this.position); +  }; + +  // ByteArray#writeByte(value:int):void +  this.writeByte = function(byte) { +    prepareWrite(this, 1); +    this.bytes[this.position] = byte; +    this.position++; +    this.length = Math.max(this.length, this.position); +  }; + +  // ByteArray#writeShort(value:int):void +  this.writeShort = function(short) { +    prepareWrite(this, 2); +    this.view.setUint16(this.position, short); +    this.position += 2; +    this.length = Math.max(this.length, this.position); +  }; + +  // Negative index into array +  // (pos:uint):int +  this.negIndex = function(pos) { +    return this.bytes[this.length - pos]; +  }; + +  // The functions below ONLY work when this[0] == VIDEO_TAG. +  // We are not going to check for that because we dont want the overhead +  // (nal:ByteArray = null):int +  this.nalUnitSize = function() { +    if (adHoc === 0) { +      return 0; +    } + +    return this.length - (adHoc + 4); +  }; + +  this.startNalUnit = function() { +    // remember position and add 4 bytes +    if (adHoc > 0) { +      throw new Error("Attempted to create new NAL wihout closing the old one"); +    } + +    // reserve 4 bytes for nal unit size +    adHoc = this.length; +    this.length += 4; +    this.position = this.length; +  }; + +  // (nal:ByteArray = null):void +  this.endNalUnit = function(nalContainer) { +    var +      nalStart, // :uint +      nalLength; // :uint + +    // Rewind to the marker and write the size +    if (this.length === adHoc + 4) { +      // we started a nal unit, but didnt write one, so roll back the 4 byte size value +      this.length -= 4; +    } else if (adHoc > 0) { +      nalStart = adHoc + 4; +      nalLength = this.length - nalStart; + +      this.position = adHoc; +      this.view.setUint32(this.position, nalLength); +      this.position = this.length; + +      if (nalContainer) { +        // Add the tag to the NAL unit +        nalContainer.push(this.bytes.subarray(nalStart, nalStart + nalLength)); +      } +    } + +    adHoc = 0; +  }; + +  /** +   * Write out a 64-bit floating point valued metadata property. This method is +   * called frequently during a typical parse and needs to be fast. +   */ +  // (key:String, val:Number):void +  this.writeMetaDataDouble = function(key, val) { +    var i; +    prepareWrite(this, 2 + key.length + 9); + +    // write size of property name +    this.view.setUint16(this.position, key.length); +    this.position += 2; + +    // this next part looks terrible but it improves parser throughput by +    // 10kB/s in my testing + +    // write property name +    if (key === 'width') { +      this.bytes.set(widthBytes, this.position); +      this.position += 5; +    } else if (key === 'height') { +      this.bytes.set(heightBytes, this.position); +      this.position += 6; +    } else if (key === 'videocodecid') { +      this.bytes.set(videocodecidBytes, this.position); +      this.position += 12; +    } else { +      for (i = 0; i < key.length; i++) { +        this.bytes[this.position] = key.charCodeAt(i); +        this.position++; +      } +    } + +    // skip null byte +    this.position++; + +    // write property value +    this.view.setFloat64(this.position, val); +    this.position += 8; + +    // update flv tag length +    this.length = Math.max(this.length, this.position); +    ++adHoc; +  }; + +  // (key:String, val:Boolean):void +  this.writeMetaDataBoolean = function(key, val) { +    var i; +    prepareWrite(this, 2); +    this.view.setUint16(this.position, key.length); +    this.position += 2; +    for (i = 0; i < key.length; i++) { +      // if key.charCodeAt(i) >= 255, handle error +      prepareWrite(this, 1); +      this.bytes[this.position] = key.charCodeAt(i); +      this.position++; +    } +    prepareWrite(this, 2); +    this.view.setUint8(this.position, 0x01); +    this.position++; +    this.view.setUint8(this.position, val ? 0x01 : 0x00); +    this.position++; +    this.length = Math.max(this.length, this.position); +    ++adHoc; +  }; + +  // ():ByteArray +  this.finalize = function() { +    var +      dtsDelta, // :int +      len; // :int + +    switch(this.bytes[0]) { +      // Video Data +    case FlvTag.VIDEO_TAG: +      this.bytes[11] = ((this.keyFrame || extraData) ? 0x10 : 0x20 ) | 0x07; // We only support AVC, 1 = key frame (for AVC, a seekable frame), 2 = inter frame (for AVC, a non-seekable frame) +      this.bytes[12] = extraData ?  0x00 : 0x01; + +      dtsDelta = this.pts - this.dts; +      this.bytes[13] = (dtsDelta & 0x00FF0000) >>> 16; +      this.bytes[14] = (dtsDelta & 0x0000FF00) >>>  8; +      this.bytes[15] = (dtsDelta & 0x000000FF) >>>  0; +      break; + +    case FlvTag.AUDIO_TAG: +      this.bytes[11] = 0xAF; // 44 kHz, 16-bit stereo +      this.bytes[12] = extraData ? 0x00 : 0x01; +      break; + +    case FlvTag.METADATA_TAG: +      this.position = 11; +      this.view.setUint8(this.position, 0x02); // String type +      this.position++; +      this.view.setUint16(this.position, 0x0A); // 10 Bytes +      this.position += 2; +      // set "onMetaData" +      this.bytes.set([0x6f, 0x6e, 0x4d, 0x65, +                      0x74, 0x61, 0x44, 0x61, +                      0x74, 0x61], this.position); +      this.position += 10; +      this.bytes[this.position] = 0x08; // Array type +      this.position++; +      this.view.setUint32(this.position, adHoc); +      this.position = this.length; +      this.bytes.set([0, 0, 9], this.position); +      this.position += 3; // End Data Tag +      this.length = this.position; +      break; +    } + +    len = this.length - 11; + +    // write the DataSize field +    this.bytes[ 1] = (len & 0x00FF0000) >>> 16; +    this.bytes[ 2] = (len & 0x0000FF00) >>>  8; +    this.bytes[ 3] = (len & 0x000000FF) >>>  0; +    // write the Timestamp +    this.bytes[ 4] = (this.dts & 0x00FF0000) >>> 16; +    this.bytes[ 5] = (this.dts & 0x0000FF00) >>>  8; +    this.bytes[ 6] = (this.dts & 0x000000FF) >>>  0; +    this.bytes[ 7] = (this.dts & 0xFF000000) >>> 24; +    // write the StreamID +    this.bytes[ 8] = 0; +    this.bytes[ 9] = 0; +    this.bytes[10] = 0; + +    // Sometimes we're at the end of the view and have one slot to write a +    // uint32, so, prepareWrite of count 4, since, view is uint8 +    prepareWrite(this, 4); +    this.view.setUint32(this.length, this.length); +    this.length += 4; +    this.position += 4; + +    // trim down the byte buffer to what is actually being used +    this.bytes = this.bytes.subarray(0, this.length); +    this.frameTime = FlvTag.frameTime(this.bytes); +    // if bytes.bytelength isn't equal to this.length, handle error +    return this; +  }; +}; + +FlvTag.AUDIO_TAG = 0x08; // == 8, :uint +FlvTag.VIDEO_TAG = 0x09; // == 9, :uint +FlvTag.METADATA_TAG = 0x12; // == 18, :uint + +// (tag:ByteArray):Boolean { +FlvTag.isAudioFrame = function(tag) { +  return FlvTag.AUDIO_TAG === tag[0]; +}; + +// (tag:ByteArray):Boolean { +FlvTag.isVideoFrame = function(tag) { +  return FlvTag.VIDEO_TAG === tag[0]; +}; + +// (tag:ByteArray):Boolean { +FlvTag.isMetaData = function(tag) { +  return FlvTag.METADATA_TAG === tag[0]; +}; + +// (tag:ByteArray):Boolean { +FlvTag.isKeyFrame = function(tag) { +  if (FlvTag.isVideoFrame(tag)) { +    return tag[11] === 0x17; +  } + +  if (FlvTag.isAudioFrame(tag)) { +    return true; +  } + +  if (FlvTag.isMetaData(tag)) { +    return true; +  } + +  return false; +}; + +// (tag:ByteArray):uint { +FlvTag.frameTime = function(tag) { +  var pts = tag[ 4] << 16; // :uint +  pts |= tag[ 5] <<  8; +  pts |= tag[ 6] <<  0; +  pts |= tag[ 7] << 24; +  return pts; +}; + +module.exports = FlvTag; + +},{}],15:[function(require,module,exports){ +module.exports = { +  tag: require('./flv-tag'), +  Transmuxer: require('./transmuxer'), +  tools: require('../tools/flv-inspector'), +}; + +},{"../tools/flv-inspector":26,"./flv-tag":14,"./transmuxer":16}],16:[function(require,module,exports){ +'use strict'; + +var Stream = require('../utils/stream.js'); +var FlvTag = require('./flv-tag.js'); +var m2ts = require('../m2ts/m2ts.js'); +var AdtsStream = require('../codecs/adts.js'); +var H264Stream = require('../codecs/h264').H264Stream; + +var +  MetadataStream, +  Transmuxer, +  VideoSegmentStream, +  AudioSegmentStream, +  CoalesceStream, +  collectTimelineInfo, +  metaDataTag, +  extraDataTag; + +/** + * Store information about the start and end of the tracka and the + * duration for each frame/sample we process in order to calculate + * the baseMediaDecodeTime + */ +collectTimelineInfo = function (track, data) { +  if (typeof data.pts === 'number') { +    if (track.timelineStartInfo.pts === undefined) { +      track.timelineStartInfo.pts = data.pts; +    } else { +      track.timelineStartInfo.pts = +        Math.min(track.timelineStartInfo.pts, data.pts); +    } +  } + +  if (typeof data.dts === 'number') { +    if (track.timelineStartInfo.dts === undefined) { +      track.timelineStartInfo.dts = data.dts; +    } else { +      track.timelineStartInfo.dts = +        Math.min(track.timelineStartInfo.dts, data.dts); +    } +  } +}; + +metaDataTag = function(track, pts) { +  var +    tag = new FlvTag(FlvTag.METADATA_TAG); // :FlvTag + +  tag.dts = pts; +  tag.pts = pts; + +  tag.writeMetaDataDouble("videocodecid", 7); +  tag.writeMetaDataDouble("width", track.width); +  tag.writeMetaDataDouble("height", track.height); + +  return tag; +}; + +extraDataTag = function(track, pts) { +  var +    i, +    tag = new FlvTag(FlvTag.VIDEO_TAG, true); + +  tag.dts = pts; +  tag.pts = pts; + +  tag.writeByte(0x01);// version +  tag.writeByte(track.profileIdc);// profile +  tag.writeByte(track.profileCompatibility);// compatibility +  tag.writeByte(track.levelIdc);// level +  tag.writeByte(0xFC | 0x03); // reserved (6 bits), NULA length size - 1 (2 bits) +  tag.writeByte(0xE0 | 0x01 ); // reserved (3 bits), num of SPS (5 bits) +  tag.writeShort( track.sps[0].length ); // data of SPS +  tag.writeBytes( track.sps[0] ); // SPS + +  tag.writeByte(track.pps.length); // num of PPS (will there ever be more that 1 PPS?) +  for (i = 0 ; i < track.pps.length ; ++i) { +    tag.writeShort(track.pps[i].length); // 2 bytes for length of PPS +    tag.writeBytes(track.pps[i]); // data of PPS +  } + +  return tag; +}; + +/** + * Constructs a single-track, media segment from AAC data + * events. The output of this stream can be fed to flash. + */ +AudioSegmentStream = function(track) { +  var +    adtsFrames = [], +    adtsFramesLength = 0, +    sequenceNumber = 0, +    earliestAllowedDts = 0, +    oldExtraData; + +  AudioSegmentStream.prototype.init.call(this); + +  this.push = function(data) { +    collectTimelineInfo(track, data); + +    if (track && track.channelcount === undefined) { +      track.audioobjecttype = data.audioobjecttype; +      track.channelcount = data.channelcount; +      track.samplerate = data.samplerate; +      track.samplingfrequencyindex = data.samplingfrequencyindex; +      track.samplesize = data.samplesize; +      track.extraData = (track.audioobjecttype << 11) | +                        (track.samplingfrequencyindex << 7) | +                        (track.channelcount << 3); +    } + +    data.pts = Math.round(data.pts / 90); +    data.dts = Math.round(data.dts / 90); + +    // buffer audio data until end() is called +    adtsFrames.push(data); +  }; + +  this.flush = function() { +    var currentFrame, adtsFrame, deltaDts,lastMetaPts, tags = []; +    // return early if no audio data has been observed +    if (adtsFrames.length === 0) { +      this.trigger('done'); +      return; +    } + +    lastMetaPts = -Infinity; + +    while (adtsFrames.length) { +      currentFrame = adtsFrames.shift(); + +      // write out metadata tags every 1 second so that the decoder +      // is re-initialized quickly after seeking into a different +      // audio configuration +      if (track.extraData !== oldExtraData || currentFrame.pts - lastMetaPts >= 1000) { +       adtsFrame = new FlvTag(FlvTag.METADATA_TAG); +        adtsFrame.pts = currentFrame.pts; +        adtsFrame.dts = currentFrame.dts; + +        // AAC is always 10 +        adtsFrame.writeMetaDataDouble("audiocodecid", 10); +        adtsFrame.writeMetaDataBoolean("stereo", 2 === track.channelcount); +        adtsFrame.writeMetaDataDouble ("audiosamplerate", track.samplerate); +        // Is AAC always 16 bit? +        adtsFrame.writeMetaDataDouble ("audiosamplesize", 16); + +        tags.push(adtsFrame); + +        oldExtraData = track.extraData; + +        adtsFrame = new FlvTag(FlvTag.AUDIO_TAG, true); +        // For audio, DTS is always the same as PTS. We want to set the DTS +        // however so we can compare with video DTS to determine approximate +        // packet order +        adtsFrame.pts = currentFrame.pts; +        adtsFrame.dts = currentFrame.dts; + +        adtsFrame.view.setUint16(adtsFrame.position, track.extraData); +        adtsFrame.position += 2; +        adtsFrame.length = Math.max(adtsFrame.length, adtsFrame.position); + +        tags.push(adtsFrame); + +        lastMetaPts = currentFrame.pts; +      } +      adtsFrame = new FlvTag(FlvTag.AUDIO_TAG); +      adtsFrame.pts = currentFrame.pts; +      adtsFrame.dts = currentFrame.dts; + +      adtsFrame.writeBytes(currentFrame.data); + +      tags.push(adtsFrame); +    } + +    oldExtraData = null; +    this.trigger('data', {track: track, tags: tags}); + +    this.trigger('done'); +  }; +}; +AudioSegmentStream.prototype = new Stream(); + +/** + * Store FlvTags for the h264 stream + * @param track {object} track metadata configuration + */ +VideoSegmentStream = function(track) { +  var +    sequenceNumber = 0, +    nalUnits = [], +    nalUnitsLength = 0, +    config, +    h264Frame; +  VideoSegmentStream.prototype.init.call(this); + +  this.finishFrame = function(tags, frame) { +    if (!frame) { +      return; +    } +    // Check if keyframe and the length of tags. +    // This makes sure we write metadata on the first frame of a segment. +    if (config && track && track.newMetadata && +        (frame.keyFrame || tags.length === 0)) { +      // Push extra data on every IDR frame in case we did a stream change + seek +      tags.push(metaDataTag(config, frame.pts)); +      tags.push(extraDataTag(track, frame.pts)); +      track.newMetadata = false; +    } + +    frame.endNalUnit(); +    tags.push(frame); +  }; + +  this.push = function(data) { +    collectTimelineInfo(track, data); + +    data.pts = Math.round(data.pts / 90); +    data.dts = Math.round(data.dts / 90); + +    // buffer video until flush() is called +    nalUnits.push(data); +  }; + +  this.flush = function() { +    var +      currentNal, +      tags = []; + +    // Throw away nalUnits at the start of the byte stream until we find +    // the first AUD +    while (nalUnits.length) { +      if (nalUnits[0].nalUnitType === 'access_unit_delimiter_rbsp') { +        break; +      } +      nalUnits.shift(); +    } + +    // return early if no video data has been observed +    if (nalUnits.length === 0) { +      this.trigger('done'); +      return; +    } + +    while (nalUnits.length) { +      currentNal = nalUnits.shift(); + +      // record the track config +      if (currentNal.nalUnitType === 'seq_parameter_set_rbsp') { +        track.newMetadata = true; +        config = currentNal.config; +        track.width = config.width; +        track.height = config.height; +        track.sps = [currentNal.data]; +        track.profileIdc = config.profileIdc; +        track.levelIdc = config.levelIdc; +        track.profileCompatibility = config.profileCompatibility; +        h264Frame.endNalUnit(); +      } else if (currentNal.nalUnitType === 'pic_parameter_set_rbsp') { +        track.newMetadata = true; +        track.pps = [currentNal.data]; +        h264Frame.endNalUnit(); +      } else if (currentNal.nalUnitType === 'access_unit_delimiter_rbsp') { +        if (h264Frame) { +          this.finishFrame(tags, h264Frame); +        } +        h264Frame = new FlvTag(FlvTag.VIDEO_TAG); +        h264Frame.pts = currentNal.pts; +        h264Frame.dts = currentNal.dts; +      } else { +        if (currentNal.nalUnitType === 'slice_layer_without_partitioning_rbsp_idr') { +          // the current sample is a key frame +          h264Frame.keyFrame = true; +        } +        h264Frame.endNalUnit(); +      } +      h264Frame.startNalUnit(); +      h264Frame.writeBytes(currentNal.data); +    } +    if (h264Frame) { +      this.finishFrame(tags, h264Frame); +    } + +    this.trigger('data', {track: track, tags: tags}); + +    // Continue with the flush process now +    this.trigger('done'); +  }; +}; + +VideoSegmentStream.prototype = new Stream(); + +/** + * The final stage of the transmuxer that emits the flv tags + * for audio, video, and metadata. Also tranlates in time and + * outputs caption data and id3 cues. + */ +CoalesceStream = function(options) { +  // Number of Tracks per output segment +  // If greater than 1, we combine multiple +  // tracks into a single segment +  this.numberOfTracks = 0; +  this.metadataStream = options.metadataStream; + +  this.videoTags = []; +  this.audioTags = []; +  this.videoTrack = null; +  this.audioTrack = null; +  this.pendingCaptions = []; +  this.pendingMetadata = []; +  this.pendingTracks = 0; + +  CoalesceStream.prototype.init.call(this); + +  // Take output from multiple +  this.push = function(output) { +    // buffer incoming captions until the associated video segment +    // finishes +    if (output.text) { +      return this.pendingCaptions.push(output); +    } +    // buffer incoming id3 tags until the final flush +    if (output.frames) { +      return this.pendingMetadata.push(output); +    } + +    if (output.track.type === 'video') { +      this.videoTrack = output.track; +      this.videoTags = output.tags; +      this.pendingTracks++; +    } +    if (output.track.type === 'audio') { +      this.audioTrack = output.track; +      this.audioTags = output.tags; +      this.pendingTracks++; +    } +  }; +}; + +CoalesceStream.prototype = new Stream(); +CoalesceStream.prototype.flush = function() { +  var +    id3, +    caption, +    i, +    timelineStartPts, +    event = { +      tags: {}, +      captions: [], +      metadata: [] +    }; + +  if (this.pendingTracks < this.numberOfTracks) { +    return; +  } + +  if (this.videoTrack) { +    timelineStartPts = this.videoTrack.timelineStartInfo.pts; +  } else if (this.audioTrack) { +    timelineStartPts = this.audioTrack.timelineStartInfo.pts; +  } + +  event.tags.videoTags = this.videoTags; +  event.tags.audioTags = this.audioTags; + +  // Translate caption PTS times into second offsets into the +  // video timeline for the segment +  for (i = 0; i < this.pendingCaptions.length; i++) { +    caption = this.pendingCaptions[i]; +    caption.startTime = caption.startPts - timelineStartPts; +    caption.startTime /= 90e3; +    caption.endTime = caption.endPts - timelineStartPts; +    caption.endTime /= 90e3; +    event.captions.push(caption); +  } + +  // Translate ID3 frame PTS times into second offsets into the +  // video timeline for the segment +  for (i = 0; i < this.pendingMetadata.length; i++) { +    id3 = this.pendingMetadata[i]; +    id3.cueTime = id3.pts - timelineStartPts; +    id3.cueTime /= 90e3; +    event.metadata.push(id3); +  } +  // We add this to every single emitted segment even though we only need +  // it for the first +  event.metadata.dispatchType = this.metadataStream.dispatchType; + +  // Reset stream state +  this.videoTrack = null; +  this.audioTrack = null; +  this.videoTags = []; +  this.audioTags = []; +  this.pendingCaptions.length = 0; +  this.pendingMetadata.length = 0; +  this.pendingTracks = 0; + +  // Emit the final segment +  this.trigger('data', event); + +  this.trigger('done'); +}; + +/** + * An object that incrementally transmuxes MPEG2 Trasport Stream + * chunks into an FLV. + */ +Transmuxer = function(options) { +  var +    self = this, +    videoTrack, +    audioTrack, + +    packetStream, parseStream, elementaryStream, +    adtsStream, h264Stream, +    videoSegmentStream, audioSegmentStream, captionStream, +    coalesceStream; + +  Transmuxer.prototype.init.call(this); + +  options = options || {}; + +  // expose the metadata stream +  this.metadataStream = new m2ts.MetadataStream(); + +  options.metadataStream = this.metadataStream; + +  // set up the parsing pipeline +  packetStream = new m2ts.TransportPacketStream(); +  parseStream = new m2ts.TransportParseStream(); +  elementaryStream = new m2ts.ElementaryStream(); +  adtsStream = new AdtsStream(); +  h264Stream = new H264Stream(); +  coalesceStream = new CoalesceStream(options); + +  // disassemble MPEG2-TS packets into elementary streams +  packetStream +    .pipe(parseStream) +    .pipe(elementaryStream); + +  // !!THIS ORDER IS IMPORTANT!! +  // demux the streams +  elementaryStream +    .pipe(h264Stream); +  elementaryStream +    .pipe(adtsStream); + +  elementaryStream +    .pipe(this.metadataStream) +    .pipe(coalesceStream); +  // if CEA-708 parsing is available, hook up a caption stream +  captionStream = new m2ts.CaptionStream(); +  h264Stream.pipe(captionStream) +    .pipe(coalesceStream); + +  // hook up the segment streams once track metadata is delivered +  elementaryStream.on('data', function(data) { +    var i, videoTrack, audioTrack; + +    if (data.type === 'metadata') { +      i = data.tracks.length; + +      // scan the tracks listed in the metadata +      while (i--) { +        if (data.tracks[i].type === 'video') { +          videoTrack = data.tracks[i]; +        } else if (data.tracks[i].type === 'audio') { +          audioTrack = data.tracks[i]; +        } +      } + +      // hook up the video segment stream to the first track with h264 data +      if (videoTrack && !videoSegmentStream) { +        coalesceStream.numberOfTracks++; +        videoSegmentStream = new VideoSegmentStream(videoTrack); + +        // Set up the final part of the video pipeline +        h264Stream +          .pipe(videoSegmentStream) +          .pipe(coalesceStream); +      } + +      if (audioTrack && !audioSegmentStream) { +        // hook up the audio segment stream to the first track with aac data +        coalesceStream.numberOfTracks++; +        audioSegmentStream = new AudioSegmentStream(audioTrack); + +        // Set up the final part of the audio pipeline +        adtsStream +          .pipe(audioSegmentStream) +          .pipe(coalesceStream); +      } +    } +  }); + +  // feed incoming data to the front of the parsing pipeline +  this.push = function(data) { +    packetStream.push(data); +  }; + +  // flush any buffered data +  this.flush = function() { +    // Start at the top of the pipeline and flush all pending work +    packetStream.flush(); +  }; + +  // Re-emit any data coming from the coalesce stream to the outside world +  coalesceStream.on('data', function (event) { +    self.trigger('data', event); +  }); + +  // Let the consumer know we have finished flushing the entire pipeline +  coalesceStream.on('done', function () { +    self.trigger('done'); +  }); + +  // For information on the FLV format, see +  // http://download.macromedia.com/f4v/video_file_format_spec_v10_1.pdf. +  // Technically, this function returns the header and a metadata FLV tag +  // if duration is greater than zero +  // duration in seconds +  // @return {object} the bytes of the FLV header as a Uint8Array +  this.getFlvHeader = function(duration, audio, video) { // :ByteArray { +    var +      headBytes = new Uint8Array(3 + 1 + 1 + 4), +      head = new DataView(headBytes.buffer), +      metadata, +      result, +      metadataLength; + +    // default arguments +    duration = duration || 0; +    audio = audio === undefined? true : audio; +    video = video === undefined? true : video; + +    // signature +    head.setUint8(0, 0x46); // 'F' +    head.setUint8(1, 0x4c); // 'L' +    head.setUint8(2, 0x56); // 'V' + +    // version +    head.setUint8(3, 0x01); + +    // flags +    head.setUint8(4, (audio ? 0x04 : 0x00) | (video ? 0x01 : 0x00)); + +    // data offset, should be 9 for FLV v1 +    head.setUint32(5, headBytes.byteLength); + +    // init the first FLV tag +    if (duration <= 0) { +      // no duration available so just write the first field of the first +      // FLV tag +      result = new Uint8Array(headBytes.byteLength + 4); +      result.set(headBytes); +      result.set([0, 0, 0, 0], headBytes.byteLength); +      return result; +    } + +    // write out the duration metadata tag +    metadata = new FlvTag(FlvTag.METADATA_TAG); +    metadata.pts = metadata.dts = 0; +    metadata.writeMetaDataDouble("duration", duration); +    metadataLength = metadata.finalize().length; +    result = new Uint8Array(headBytes.byteLength + metadataLength); +    result.set(headBytes); +    result.set(head.byteLength, metadataLength); + +    return result; +  }; +}; +Transmuxer.prototype = new Stream(); + +// forward compatibility +module.exports = Transmuxer; + +},{"../codecs/adts.js":11,"../codecs/h264":12,"../m2ts/m2ts.js":20,"../utils/stream.js":29,"./flv-tag.js":14}],17:[function(require,module,exports){ +'use strict'; + +var muxjs = { +  codecs: require('./codecs'), +  mp4: require('./mp4'), +  flv: require('./flv'), +  mp2t: require('./m2ts'), +}; +module.exports = muxjs; + +},{"./codecs":13,"./flv":15,"./m2ts":19,"./mp4":23}],18:[function(require,module,exports){ +/** + * mux.js + * + * Copyright (c) 2015 Brightcove + * All rights reserved. + * + * Reads in-band caption information from a video elementary + * stream. Captions must follow the CEA-708 standard for injection + * into an MPEG-2 transport streams. + * @see https://en.wikipedia.org/wiki/CEA-708 + */ + +'use strict'; + +// ----------------- +// Link To Transport +// ----------------- + +// Supplemental enhancement information (SEI) NAL units have a +// payload type field to indicate how they are to be +// interpreted. CEAS-708 caption content is always transmitted with +// payload type 0x04. +var USER_DATA_REGISTERED_ITU_T_T35 = 4, +    RBSP_TRAILING_BITS = 128, +    Stream = require('../utils/stream'); + +/** +  * Parse a supplemental enhancement information (SEI) NAL unit. +  * Stops parsing once a message of type ITU T T35 has been found. +  * +  * @param bytes {Uint8Array} the bytes of a SEI NAL unit +  * @return {object} the parsed SEI payload +  * @see Rec. ITU-T H.264, 7.3.2.3.1 +  */ +var parseSei = function(bytes) { +  var +    i = 0, +    result = { +      payloadType: -1, +      payloadSize: 0, +    }, +    payloadType = 0, +    payloadSize = 0; + +  // go through the sei_rbsp parsing each each individual sei_message +  while (i < bytes.byteLength) { +    // stop once we have hit the end of the sei_rbsp +    if (bytes[i] === RBSP_TRAILING_BITS) { +      break; +    } + +    // Parse payload type +    while (bytes[i] === 0xFF) { +      payloadType += 255; +      i++; +    } +    payloadType += bytes[i++]; + +    // Parse payload size +    while (bytes[i] === 0xFF) { +      payloadSize += 255; +      i++; +    } +    payloadSize += bytes[i++]; + +    // this sei_message is a 608/708 caption so save it and break +    // there can only ever be one caption message in a frame's sei +    if (!result.payload && payloadType === USER_DATA_REGISTERED_ITU_T_T35) { +      result.payloadType = payloadType; +      result.payloadSize = payloadSize; +      result.payload = bytes.subarray(i, i + payloadSize); +      break; +    } + +    // skip the payload and parse the next message +    i += payloadSize; +    payloadType = 0; +    payloadSize = 0; +  } + +  return result; +}; + +// see ANSI/SCTE 128-1 (2013), section 8.1 +var parseUserData = function(sei) { +  // itu_t_t35_contry_code must be 181 (United States) for +  // captions +  if (sei.payload[0] !== 181) { +    return null; +  } + +  // itu_t_t35_provider_code should be 49 (ATSC) for captions +  if (((sei.payload[1] << 8) | sei.payload[2]) !== 49) { +    return null; +  } + +  // the user_identifier should be "GA94" to indicate ATSC1 data +  if (String.fromCharCode(sei.payload[3], +                          sei.payload[4], +                          sei.payload[5], +                          sei.payload[6]) !== 'GA94') { +    return null; +  } + +  // finally, user_data_type_code should be 0x03 for caption data +  if (sei.payload[7] !== 0x03) { +    return null; +  } + +  // return the user_data_type_structure and strip the trailing +  // marker bits +  return sei.payload.subarray(8, sei.payload.length - 1); +}; + +// see CEA-708-D, section 4.4 +var parseCaptionPackets = function(pts, userData) { +  var results = [], i, count, offset, data; + +  // if this is just filler, return immediately +  if (!(userData[0] & 0x40)) { +    return results; +  } + +  // parse out the cc_data_1 and cc_data_2 fields +  count = userData[0] & 0x1f; +  for (i = 0; i < count; i++) { +    offset = i * 3; +    data = { +      type: userData[offset + 2] & 0x03, +      pts: pts +    }; + +    // capture cc data when cc_valid is 1 +    if (userData[offset + 2] & 0x04) { +      data.ccData = (userData[offset + 3] << 8) | userData[offset + 4]; +      results.push(data); +    } +  } +  return results; +}; + +var CaptionStream = function() { +  var self = this; +  CaptionStream.prototype.init.call(this); + +  this.captionPackets_ = []; + +  this.field1_ = new Cea608Stream(); + +  // forward data and done events from field1_ to this CaptionStream +  this.field1_.on('data', this.trigger.bind(this, 'data')); +  this.field1_.on('done', this.trigger.bind(this, 'done')); +}; +CaptionStream.prototype = new Stream(); +CaptionStream.prototype.push = function(event) { +  var sei, userData, captionPackets; + +  // only examine SEI NALs +  if (event.nalUnitType !== 'sei_rbsp') { +    return; +  } + +  // parse the sei +  sei = parseSei(event.escapedRBSP); + +  // ignore everything but user_data_registered_itu_t_t35 +  if (sei.payloadType !== USER_DATA_REGISTERED_ITU_T_T35) { +    return; +  } + +  // parse out the user data payload +  userData = parseUserData(sei); + +  // ignore unrecognized userData +  if (!userData) { +    return; +  } + +  // parse out CC data packets and save them for later +  this.captionPackets_ = this.captionPackets_.concat(parseCaptionPackets(event.pts, userData)); +}; + +CaptionStream.prototype.flush = function () { +  // make sure we actually parsed captions before proceeding +  if (!this.captionPackets_.length) { +    this.field1_.flush(); +    return; +  } + +  // sort caption byte-pairs based on their PTS values +  this.captionPackets_.sort(function(a, b) { +    return a.pts - b.pts; +  }); + +  // Push each caption into Cea608Stream +  this.captionPackets_.forEach(this.field1_.push, this.field1_); + +  this.captionPackets_.length = 0; +  this.field1_.flush(); +  return; +}; +// ---------------------- +// Session to Application +// ---------------------- + +var BASIC_CHARACTER_TRANSLATION = { +  0x2a: 0xe1, +  0x5c: 0xe9, +  0x5e: 0xed, +  0x5f: 0xf3, +  0x60: 0xfa, +  0x7b: 0xe7, +  0x7c: 0xf7, +  0x7d: 0xd1, +  0x7e: 0xf1, +  0x7f: 0x2588 +}; + +var getCharFromCode = function(code) { +  if(code === null) { +    return ''; +  } +  code = BASIC_CHARACTER_TRANSLATION[code] || code; +  return String.fromCharCode(code); +}; + +// Constants for the byte codes recognized by Cea608Stream. This +// list is not exhaustive. For a more comprehensive listing and +// semantics see +// http://www.gpo.gov/fdsys/pkg/CFR-2010-title47-vol1/pdf/CFR-2010-title47-vol1-sec15-119.pdf +var PADDING                    = 0x0000, + +    // Pop-on Mode +    RESUME_CAPTION_LOADING     = 0x1420, +    END_OF_CAPTION             = 0x142f, + +    // Roll-up Mode +    ROLL_UP_2_ROWS             = 0x1425, +    ROLL_UP_3_ROWS             = 0x1426, +    ROLL_UP_4_ROWS             = 0x1427, +    RESUME_DIRECT_CAPTIONING   = 0x1429, +    CARRIAGE_RETURN            = 0x142d, +    // Erasure +    BACKSPACE                  = 0x1421, +    ERASE_DISPLAYED_MEMORY     = 0x142c, +    ERASE_NON_DISPLAYED_MEMORY = 0x142e; + +// the index of the last row in a CEA-608 display buffer +var BOTTOM_ROW = 14; +// CEA-608 captions are rendered onto a 34x15 matrix of character +// cells. The "bottom" row is the last element in the outer array. +var createDisplayBuffer = function() { +  var result = [], i = BOTTOM_ROW + 1; +  while (i--) { +    result.push(''); +  } +  return result; +}; + +var Cea608Stream = function() { +  Cea608Stream.prototype.init.call(this); + +  this.mode_ = 'popOn'; +  // When in roll-up mode, the index of the last row that will +  // actually display captions. If a caption is shifted to a row +  // with a lower index than this, it is cleared from the display +  // buffer +  this.topRow_ = 0; +  this.startPts_ = 0; +  this.displayed_ = createDisplayBuffer(); +  this.nonDisplayed_ = createDisplayBuffer(); +  this.lastControlCode_ = null; + +  this.push = function(packet) { +    // Ignore other channels +    if (packet.type !== 0) { +      return; +    } +    var data, swap, char0, char1; +    // remove the parity bits +    data = packet.ccData & 0x7f7f; + +    // ignore duplicate control codes +    if (data === this.lastControlCode_) { +      this.lastControlCode_ = null; +      return; +    } + +    // Store control codes +    if ((data & 0xf000) === 0x1000) { +      this.lastControlCode_ = data; +    } else { +      this.lastControlCode_ = null; +    } + +    switch (data) { +    case PADDING: +      break; +    case RESUME_CAPTION_LOADING: +      this.mode_ = 'popOn'; +      break; +    case END_OF_CAPTION: +      // if a caption was being displayed, it's gone now +      this.flushDisplayed(packet.pts); + +      // flip memory +      swap = this.displayed_; +      this.displayed_ = this.nonDisplayed_; +      this.nonDisplayed_ = swap; + +      // start measuring the time to display the caption +      this.startPts_ = packet.pts; +      break; + +    case ROLL_UP_2_ROWS: +      this.topRow_ = BOTTOM_ROW - 1; +      this.mode_ = 'rollUp'; +      break; +    case ROLL_UP_3_ROWS: +      this.topRow_ = BOTTOM_ROW - 2; +      this.mode_ = 'rollUp'; +      break; +    case ROLL_UP_4_ROWS: +      this.topRow_ = BOTTOM_ROW - 3; +      this.mode_ = 'rollUp'; +      break; +    case CARRIAGE_RETURN: +      this.flushDisplayed(packet.pts); +      this.shiftRowsUp_(); +      this.startPts_ = packet.pts; +      break; + +    case BACKSPACE: +      if (this.mode_ === 'popOn') { +        this.nonDisplayed_[BOTTOM_ROW] = this.nonDisplayed_[BOTTOM_ROW].slice(0, -1); +      } else { +        this.displayed_[BOTTOM_ROW] = this.displayed_[BOTTOM_ROW].slice(0, -1); +      } +      break; +    case ERASE_DISPLAYED_MEMORY: +      this.flushDisplayed(packet.pts); +      this.displayed_ = createDisplayBuffer(); +      break; +    case ERASE_NON_DISPLAYED_MEMORY: +      this.nonDisplayed_ = createDisplayBuffer(); +      break; +    default: +      char0 = data >>> 8; +      char1 = data & 0xff; + +      // Look for a Channel 1 Preamble Address Code +      if (char0 >= 0x10 && char0 <= 0x17 && +          char1 >= 0x40 && char1 <= 0x7F && +          (char0 !== 0x10 || char1 < 0x60)) { +        // Follow Safari's lead and replace the PAC with a space +        char0 = 0x20; +        // we only want one space so make the second character null +        // which will get become '' in getCharFromCode +        char1 = null; +      } + +      // Look for special character sets +      if ((char0 === 0x11 || char0 === 0x19) && +          (char1 >= 0x30 && char1 <= 0x3F)) { +        // Put in eigth note and space +        char0 = 0xE299AA; +        char1 = ''; +      } + +      // ignore unsupported control codes +      if ((char0 & 0xf0) === 0x10) { +        return; +      } + +      // character handling is dependent on the current mode +      this[this.mode_](packet.pts, char0, char1); +      break; +    } +  }; +}; +Cea608Stream.prototype = new Stream(); +// Trigger a cue point that captures the current state of the +// display buffer +Cea608Stream.prototype.flushDisplayed = function(pts) { +  var row, i; + +  for (i = 0; i < this.displayed_.length; i++) { +    row = this.displayed_[i]; +    if (row.length) { +      this.trigger('data', { +        startPts: this.startPts_, +        endPts: pts, +        // remove spaces from the start and end of the string +        text: row.trim() +      }); +    } +  } +}; + +// Mode Implementations +Cea608Stream.prototype.popOn = function(pts, char0, char1) { +  var baseRow = this.nonDisplayed_[BOTTOM_ROW]; + +  // buffer characters +  baseRow += getCharFromCode(char0); +  baseRow += getCharFromCode(char1); +  this.nonDisplayed_[BOTTOM_ROW] = baseRow; +}; + +Cea608Stream.prototype.rollUp = function(pts, char0, char1) { +  var baseRow = this.displayed_[BOTTOM_ROW]; +  if (baseRow === '') { +    // we're starting to buffer new display input, so flush out the +    // current display +    this.flushDisplayed(pts); + +    this.startPts_ = pts; +  } + +  baseRow += getCharFromCode(char0); +  baseRow += getCharFromCode(char1); + +  this.displayed_[BOTTOM_ROW] = baseRow; +}; +Cea608Stream.prototype.shiftRowsUp_ = function() { +  var i; +  // clear out inactive rows +  for (i = 0; i < this.topRow_; i++) { +    this.displayed_[i] = ''; +  } +  // shift displayed rows up +  for (i = this.topRow_; i < BOTTOM_ROW; i++) { +    this.displayed_[i] = this.displayed_[i + 1]; +  } +  // clear out the bottom row +  this.displayed_[BOTTOM_ROW] = ''; +}; + +// exports +module.exports = { +  CaptionStream: CaptionStream, +  Cea608Stream: Cea608Stream, +}; + + +},{"../utils/stream":29}],19:[function(require,module,exports){ +module.exports = require('./m2ts'); + +},{"./m2ts":20}],20:[function(require,module,exports){ +/** + * mux.js + * + * Copyright (c) 2015 Brightcove + * All rights reserved. + * + * A stream-based mp2t to mp4 converter. This utility can be used to + * deliver mp4s to a SourceBuffer on platforms that support native + * Media Source Extensions. + */ +'use strict'; +var Stream = require('../utils/stream.js'), +  CaptionStream = require('./caption-stream'), +  StreamTypes = require('./stream-types'); + +var Stream = require('../utils/stream.js'); +var m2tsStreamTypes = require('./stream-types.js'); + +// object types +var +  TransportPacketStream, TransportParseStream, ElementaryStream, +  AacStream, H264Stream, NalByteStream; + +// constants +var +  MP2T_PACKET_LENGTH = 188, // bytes +  SYNC_BYTE = 0x47, + +/** + * Splits an incoming stream of binary data into MPEG-2 Transport + * Stream packets. + */ +TransportPacketStream = function() { +  var +    buffer = new Uint8Array(MP2T_PACKET_LENGTH), +    bytesInBuffer = 0; + +  TransportPacketStream.prototype.init.call(this); + +   // Deliver new bytes to the stream. + +  this.push = function(bytes) { +    var +      i = 0, +      startIndex = 0, +      endIndex = MP2T_PACKET_LENGTH, +      everything; + +    // If there are bytes remaining from the last segment, prepend them to the +    // bytes that were pushed in +    if (bytesInBuffer) { +      everything = new Uint8Array(bytes.byteLength + bytesInBuffer); +      everything.set(buffer.subarray(0, bytesInBuffer)); +      everything.set(bytes, bytesInBuffer); +      bytesInBuffer = 0; +    } else { +      everything = bytes; +    } + +    // While we have enough data for a packet +    while (endIndex < everything.byteLength) { +      // Look for a pair of start and end sync bytes in the data.. +      if (everything[startIndex] === SYNC_BYTE && everything[endIndex] === SYNC_BYTE) { +        // We found a packet so emit it and jump one whole packet forward in +        // the stream +        this.trigger('data', everything.subarray(startIndex, endIndex)); +        startIndex += MP2T_PACKET_LENGTH; +        endIndex += MP2T_PACKET_LENGTH; +        continue; +      } +      // If we get here, we have somehow become de-synchronized and we need to step +      // forward one byte at a time until we find a pair of sync bytes that denote +      // a packet +      startIndex++; +      endIndex++; +    } + +    // If there was some data left over at the end of the segment that couldn't +    // possibly be a whole packet, keep it because it might be the start of a packet +    // that continues in the next segment +    if (startIndex < everything.byteLength) { +      buffer.set(everything.subarray(startIndex), 0); +      bytesInBuffer = everything.byteLength - startIndex; +    } +  }; + +  this.flush = function () { +    // If the buffer contains a whole packet when we are being flushed, emit it +    // and empty the buffer. Otherwise hold onto the data because it may be +    // important for decoding the next segment +    if (bytesInBuffer === MP2T_PACKET_LENGTH && buffer[0] === SYNC_BYTE) { +      this.trigger('data', buffer); +      bytesInBuffer = 0; +    } +    this.trigger('done'); +  }; +}; +TransportPacketStream.prototype = new Stream(); + +/** + * Accepts an MP2T TransportPacketStream and emits data events with parsed + * forms of the individual transport stream packets. + */ +TransportParseStream = function() { +  var parsePsi, parsePat, parsePmt, parsePes, self; +  TransportParseStream.prototype.init.call(this); +  self = this; + +  this.packetsWaitingForPmt = []; +  this.programMapTable = undefined; + +  parsePsi = function(payload, psi) { +    var offset = 0; + +    // PSI packets may be split into multiple sections and those +    // sections may be split into multiple packets. If a PSI +    // section starts in this packet, the payload_unit_start_indicator +    // will be true and the first byte of the payload will indicate +    // the offset from the current position to the start of the +    // section. +    if (psi.payloadUnitStartIndicator) { +      offset += payload[offset] + 1; +    } + +    if (psi.type === 'pat') { +      parsePat(payload.subarray(offset), psi); +    } else { +      parsePmt(payload.subarray(offset), psi); +    } +  }; + +  parsePat = function(payload, pat) { +    pat.section_number = payload[7]; +    pat.last_section_number = payload[8]; + +    // skip the PSI header and parse the first PMT entry +    self.pmtPid = (payload[10] & 0x1F) << 8 | payload[11]; +    pat.pmtPid = self.pmtPid; +  }; + +  /** +   * Parse out the relevant fields of a Program Map Table (PMT). +   * @param payload {Uint8Array} the PMT-specific portion of an MP2T +   * packet. The first byte in this array should be the table_id +   * field. +   * @param pmt {object} the object that should be decorated with +   * fields parsed from the PMT. +   */ +  parsePmt = function(payload, pmt) { +    var sectionLength, tableEnd, programInfoLength, offset; + +    // PMTs can be sent ahead of the time when they should actually +    // take effect. We don't believe this should ever be the case +    // for HLS but we'll ignore "forward" PMT declarations if we see +    // them. Future PMT declarations have the current_next_indicator +    // set to zero. +    if (!(payload[5] & 0x01)) { +      return; +    } + +    // overwrite any existing program map table +    self.programMapTable = {}; + +    // the mapping table ends at the end of the current section +    sectionLength = (payload[1] & 0x0f) << 8 | payload[2]; +    tableEnd = 3 + sectionLength - 4; + +    // to determine where the table is, we have to figure out how +    // long the program info descriptors are +    programInfoLength = (payload[10] & 0x0f) << 8 | payload[11]; + +    // advance the offset to the first entry in the mapping table +    offset = 12 + programInfoLength; +    while (offset < tableEnd) { +      // add an entry that maps the elementary_pid to the stream_type +      self.programMapTable[(payload[offset + 1] & 0x1F) << 8 | payload[offset + 2]] = payload[offset]; + +      // move to the next table entry +      // skip past the elementary stream descriptors, if present +      offset += ((payload[offset + 3] & 0x0F) << 8 | payload[offset + 4]) + 5; +    } + +    // record the map on the packet as well +    pmt.programMapTable = self.programMapTable; + +    // if there are any packets waiting for a PMT to be found, process them now +    while (self.packetsWaitingForPmt.length) { +      self.processPes_.apply(self, self.packetsWaitingForPmt.shift()); +    } +  }; + +  /** +   * Deliver a new MP2T packet to the stream. +   */ +  this.push = function(packet) { +    var +      result = {}, +      offset = 4; + +    result.payloadUnitStartIndicator = !!(packet[1] & 0x40); + +    // pid is a 13-bit field starting at the last bit of packet[1] +    result.pid = packet[1] & 0x1f; +    result.pid <<= 8; +    result.pid |= packet[2]; + +    // if an adaption field is present, its length is specified by the +    // fifth byte of the TS packet header. The adaptation field is +    // used to add stuffing to PES packets that don't fill a complete +    // TS packet, and to specify some forms of timing and control data +    // that we do not currently use. +    if (((packet[3] & 0x30) >>> 4) > 0x01) { +      offset += packet[offset] + 1; +    } + +    // parse the rest of the packet based on the type +    if (result.pid === 0) { +      result.type = 'pat'; +      parsePsi(packet.subarray(offset), result); +      this.trigger('data', result); +    } else if (result.pid === this.pmtPid) { +      result.type = 'pmt'; +      parsePsi(packet.subarray(offset), result); +      this.trigger('data', result); +    } else if (this.programMapTable === undefined) { +      // When we have not seen a PMT yet, defer further processing of +      // PES packets until one has been parsed +      this.packetsWaitingForPmt.push([packet, offset, result]); +    } else { +      this.processPes_(packet, offset, result); +    } +  }; + +  this.processPes_ = function (packet, offset, result) { +    result.streamType = this.programMapTable[result.pid]; +    result.type = 'pes'; +    result.data = packet.subarray(offset); + +    this.trigger('data', result); +  }; + +}; +TransportParseStream.prototype = new Stream(); +TransportParseStream.STREAM_TYPES  = { +  h264: 0x1b, +  adts: 0x0f +}; + +/** + * Reconsistutes program elementary stream (PES) packets from parsed + * transport stream packets. That is, if you pipe an + * mp2t.TransportParseStream into a mp2t.ElementaryStream, the output + * events will be events which capture the bytes for individual PES + * packets plus relevant metadata that has been extracted from the + * container. + */ +ElementaryStream = function() { +  var +    // PES packet fragments +    video = { +      data: [], +      size: 0 +    }, +    audio = { +      data: [], +      size: 0 +    }, +    timedMetadata = { +      data: [], +      size: 0 +    }, +    parsePes = function(payload, pes) { +      var ptsDtsFlags; + +      // find out if this packets starts a new keyframe +      pes.dataAlignmentIndicator = (payload[6] & 0x04) !== 0; +      // PES packets may be annotated with a PTS value, or a PTS value +      // and a DTS value. Determine what combination of values is +      // available to work with. +      ptsDtsFlags = payload[7]; + +      // PTS and DTS are normally stored as a 33-bit number.  Javascript +      // performs all bitwise operations on 32-bit integers but javascript +      // supports a much greater range (52-bits) of integer using standard +      // mathematical operations. +      // We construct a 31-bit value using bitwise operators over the 31 +      // most significant bits and then multiply by 4 (equal to a left-shift +      // of 2) before we add the final 2 least significant bits of the +      // timestamp (equal to an OR.) +      if (ptsDtsFlags & 0xC0) { +        // the PTS and DTS are not written out directly. For information +        // on how they are encoded, see +        // http://dvd.sourceforge.net/dvdinfo/pes-hdr.html +        pes.pts = (payload[9] & 0x0E) << 27 +          | (payload[10] & 0xFF) << 20 +          | (payload[11] & 0xFE) << 12 +          | (payload[12] & 0xFF) <<  5 +          | (payload[13] & 0xFE) >>>  3; +        pes.pts *= 4; // Left shift by 2 +        pes.pts += (payload[13] & 0x06) >>> 1; // OR by the two LSBs +        pes.dts = pes.pts; +        if (ptsDtsFlags & 0x40) { +          pes.dts = (payload[14] & 0x0E ) << 27 +            | (payload[15] & 0xFF ) << 20 +            | (payload[16] & 0xFE ) << 12 +            | (payload[17] & 0xFF ) << 5 +            | (payload[18] & 0xFE ) >>> 3; +          pes.dts *= 4; // Left shift by 2 +          pes.dts += (payload[18] & 0x06) >>> 1; // OR by the two LSBs +        } +      } + +      // the data section starts immediately after the PES header. +      // pes_header_data_length specifies the number of header bytes +      // that follow the last byte of the field. +      pes.data = payload.subarray(9 + payload[8]); +    }, +    flushStream = function(stream, type) { +      var +        packetData = new Uint8Array(stream.size), +        event = { +          type: type +        }, +        i = 0, +        fragment; + +      // do nothing if there is no buffered data +      if (!stream.data.length) { +        return; +      } +      event.trackId = stream.data[0].pid; + +      // reassemble the packet +      while (stream.data.length) { +        fragment = stream.data.shift(); + +        packetData.set(fragment.data, i); +        i += fragment.data.byteLength; +      } + +      // parse assembled packet's PES header +      parsePes(packetData, event); + +      stream.size = 0; + +      self.trigger('data', event); +    }, +    self; + +  ElementaryStream.prototype.init.call(this); +  self = this; + +  this.push = function(data) { +    ({ +      pat: function() { +        // we have to wait for the PMT to arrive as well before we +        // have any meaningful metadata +      }, +      pes: function() { +        var stream, streamType; + +        switch (data.streamType) { +        case StreamTypes.H264_STREAM_TYPE: +        case m2tsStreamTypes.H264_STREAM_TYPE: +          stream = video; +          streamType = 'video'; +          break; +        case StreamTypes.ADTS_STREAM_TYPE: +          stream = audio; +          streamType = 'audio'; +          break; +        case StreamTypes.METADATA_STREAM_TYPE: +          stream = timedMetadata; +          streamType = 'timed-metadata'; +          break; +        default: +          // ignore unknown stream types +          return; +        } + +        // if a new packet is starting, we can flush the completed +        // packet +        if (data.payloadUnitStartIndicator) { +          flushStream(stream, streamType); +        } + +        // buffer this fragment until we are sure we've received the +        // complete payload +        stream.data.push(data); +        stream.size += data.data.byteLength; +      }, +      pmt: function() { +        var +          event = { +            type: 'metadata', +            tracks: [] +          }, +          programMapTable = data.programMapTable, +          k, +          track; + +        // translate streams to tracks +        for (k in programMapTable) { +          if (programMapTable.hasOwnProperty(k)) { +            track = { +              timelineStartInfo: { +                baseMediaDecodeTime: 0 +              } +            }; +            track.id = +k; +            if (programMapTable[k] === m2tsStreamTypes.H264_STREAM_TYPE) { +              track.codec = 'avc'; +              track.type = 'video'; +            } else if (programMapTable[k] === m2tsStreamTypes.ADTS_STREAM_TYPE) { +              track.codec = 'adts'; +              track.type = 'audio'; +            } +            event.tracks.push(track); +          } +        } +        self.trigger('data', event); +      } +    })[data.type](); +  }; + +  /** +   * Flush any remaining input. Video PES packets may be of variable +   * length. Normally, the start of a new video packet can trigger the +   * finalization of the previous packet. That is not possible if no +   * more video is forthcoming, however. In that case, some other +   * mechanism (like the end of the file) has to be employed. When it is +   * clear that no additional data is forthcoming, calling this method +   * will flush the buffered packets. +   */ +  this.flush = function() { +    // !!THIS ORDER IS IMPORTANT!! +    // video first then audio +    flushStream(video, 'video'); +    flushStream(audio, 'audio'); +    flushStream(timedMetadata, 'timed-metadata'); +    this.trigger('done'); +  }; +}; +ElementaryStream.prototype = new Stream(); + +var m2ts = { +  PAT_PID: 0x0000, +  MP2T_PACKET_LENGTH: MP2T_PACKET_LENGTH, +  TransportPacketStream: TransportPacketStream, +  TransportParseStream: TransportParseStream, +  ElementaryStream: ElementaryStream, +  CaptionStream: CaptionStream.CaptionStream, +  Cea608Stream: CaptionStream.Cea608Stream, +  MetadataStream: require('./metadata-stream'), +}; + +for (var type in StreamTypes) { +  if (StreamTypes.hasOwnProperty(type)) { +    m2ts[type] = StreamTypes[type]; +  } +} + +module.exports = m2ts; + +},{"../utils/stream.js":29,"./caption-stream":18,"./metadata-stream":21,"./stream-types":22,"./stream-types.js":22}],21:[function(require,module,exports){ +/** + * Accepts program elementary stream (PES) data events and parses out + * ID3 metadata from them, if present. + * @see http://id3.org/id3v2.3.0 + */ +'use strict'; +var +  Stream = require('../utils/stream'), +  StreamTypes = require('./stream-types'), +  // return a percent-encoded representation of the specified byte range +  // @see http://en.wikipedia.org/wiki/Percent-encoding +  percentEncode = function(bytes, start, end) { +    var i, result = ''; +    for (i = start; i < end; i++) { +      result += '%' + ('00' + bytes[i].toString(16)).slice(-2); +    } +    return result; +  }, +  // return the string representation of the specified byte range, +  // interpreted as UTf-8. +  parseUtf8 = function(bytes, start, end) { +    return decodeURIComponent(percentEncode(bytes, start, end)); +  }, +  // return the string representation of the specified byte range, +  // interpreted as ISO-8859-1. +  parseIso88591 = function(bytes, start, end) { +    return unescape(percentEncode(bytes, start, end)); // jshint ignore:line +  }, +  parseSyncSafeInteger = function (data) { +    return (data[0] << 21) | +            (data[1] << 14) | +            (data[2] << 7) | +            (data[3]); +  }, +  tagParsers = { +    'TXXX': function(tag) { +      var i; +      if (tag.data[0] !== 3) { +        // ignore frames with unrecognized character encodings +        return; +      } + +      for (i = 1; i < tag.data.length; i++) { +        if (tag.data[i] === 0) { +          // parse the text fields +          tag.description = parseUtf8(tag.data, 1, i); +          // do not include the null terminator in the tag value +          tag.value = parseUtf8(tag.data, i + 1, tag.data.length - 1); +          break; +        } +      } +      tag.data = tag.value; +    }, +    'WXXX': function(tag) { +      var i; +      if (tag.data[0] !== 3) { +        // ignore frames with unrecognized character encodings +        return; +      } + +      for (i = 1; i < tag.data.length; i++) { +        if (tag.data[i] === 0) { +          // parse the description and URL fields +          tag.description = parseUtf8(tag.data, 1, i); +          tag.url = parseUtf8(tag.data, i + 1, tag.data.length); +          break; +        } +      } +    }, +    'PRIV': function(tag) { +      var i; + +      for (i = 0; i < tag.data.length; i++) { +        if (tag.data[i] === 0) { +          // parse the description and URL fields +          tag.owner = parseIso88591(tag.data, 0, i); +          break; +        } +      } +      tag.privateData = tag.data.subarray(i + 1); +      tag.data = tag.privateData; +    } +  }, +  MetadataStream; + +MetadataStream = function(options) { +  var +    settings = { +      debug: !!(options && options.debug), + +      // the bytes of the program-level descriptor field in MP2T +      // see ISO/IEC 13818-1:2013 (E), section 2.6 "Program and +      // program element descriptors" +      descriptor: options && options.descriptor +    }, +    // the total size in bytes of the ID3 tag being parsed +    tagSize = 0, +    // tag data that is not complete enough to be parsed +    buffer = [], +    // the total number of bytes currently in the buffer +    bufferSize = 0, +    i; + +  MetadataStream.prototype.init.call(this); + +  // calculate the text track in-band metadata track dispatch type +  // https://html.spec.whatwg.org/multipage/embedded-content.html#steps-to-expose-a-media-resource-specific-text-track +  this.dispatchType = StreamTypes.METADATA_STREAM_TYPE.toString(16); +  if (settings.descriptor) { +    for (i = 0; i < settings.descriptor.length; i++) { +      this.dispatchType += ('00' + settings.descriptor[i].toString(16)).slice(-2); +    } +  } + +  this.push = function(chunk) { +    var tag, frameStart, frameSize, frame, i, frameHeader; +    if (chunk.type !== 'timed-metadata') { +      return; +    } + +    // if data_alignment_indicator is set in the PES header, +    // we must have the start of a new ID3 tag. Assume anything +    // remaining in the buffer was malformed and throw it out +    if (chunk.dataAlignmentIndicator) { +      bufferSize = 0; +      buffer.length = 0; +    } + +    // ignore events that don't look like ID3 data +    if (buffer.length === 0 && +        (chunk.data.length < 10 || +          chunk.data[0] !== 'I'.charCodeAt(0) || +          chunk.data[1] !== 'D'.charCodeAt(0) || +          chunk.data[2] !== '3'.charCodeAt(0))) { +      if (settings.debug) { +        console.log('Skipping unrecognized metadata packet'); +      } +      return; +    } + +    // add this chunk to the data we've collected so far + +    buffer.push(chunk); +    bufferSize += chunk.data.byteLength; + +    // grab the size of the entire frame from the ID3 header +    if (buffer.length === 1) { +      // the frame size is transmitted as a 28-bit integer in the +      // last four bytes of the ID3 header. +      // The most significant bit of each byte is dropped and the +      // results concatenated to recover the actual value. +      tagSize = parseSyncSafeInteger(chunk.data.subarray(6, 10)); + +      // ID3 reports the tag size excluding the header but it's more +      // convenient for our comparisons to include it +      tagSize += 10; +    } + +    // if the entire frame has not arrived, wait for more data +    if (bufferSize < tagSize) { +      return; +    } + +    // collect the entire frame so it can be parsed +    tag = { +      data: new Uint8Array(tagSize), +      frames: [], +      pts: buffer[0].pts, +      dts: buffer[0].dts +    }; +    for (i = 0; i < tagSize;) { +      tag.data.set(buffer[0].data.subarray(0, tagSize - i), i); +      i += buffer[0].data.byteLength; +      bufferSize -= buffer[0].data.byteLength; +      buffer.shift(); +    } + +    // find the start of the first frame and the end of the tag +    frameStart = 10; +    if (tag.data[5] & 0x40) { +      // advance the frame start past the extended header +      frameStart += 4; // header size field +      frameStart += parseSyncSafeInteger(tag.data.subarray(10, 14)); + +      // clip any padding off the end +      tagSize -= parseSyncSafeInteger(tag.data.subarray(16, 20)); +    } + +    // parse one or more ID3 frames +    // http://id3.org/id3v2.3.0#ID3v2_frame_overview +    do { +      // determine the number of bytes in this frame +      frameSize = parseSyncSafeInteger(tag.data.subarray(frameStart + 4, frameStart + 8)); +      if (frameSize < 1) { +        return console.log('Malformed ID3 frame encountered. Skipping metadata parsing.'); +      } +      frameHeader = String.fromCharCode(tag.data[frameStart], +                                        tag.data[frameStart + 1], +                                        tag.data[frameStart + 2], +                                        tag.data[frameStart + 3]); + + +      frame = { +        id: frameHeader, +        data: tag.data.subarray(frameStart + 10, frameStart + frameSize + 10) +      }; +      frame.key = frame.id; +      if (tagParsers[frame.id]) { +        tagParsers[frame.id](frame); +        if (frame.owner === 'com.apple.streaming.transportStreamTimestamp') { +          var +            d = frame.data, +            size = ((d[3] & 0x01)  << 30) | +                   (d[4]  << 22) | +                   (d[5] << 14) | +                   (d[6] << 6) | +                   (d[7] >>> 2); + +          size *= 4; +          size += d[7] & 0x03; +          frame.timeStamp = size; +          this.trigger('timestamp', frame); +        } +      } +      tag.frames.push(frame); + +      frameStart += 10; // advance past the frame header +      frameStart += frameSize; // advance past the frame body +    } while (frameStart < tagSize); +    this.trigger('data', tag); +  }; +}; +MetadataStream.prototype = new Stream(); + +module.exports = MetadataStream; + +},{"../utils/stream":29,"./stream-types":22}],22:[function(require,module,exports){ +'use strict'; + +module.exports = { +  H264_STREAM_TYPE: 0x1B, +  ADTS_STREAM_TYPE: 0x0F, +  METADATA_STREAM_TYPE: 0x15 +}; + +},{}],23:[function(require,module,exports){ +module.exports = { +  generator: require('./mp4-generator'), +  Transmuxer: require('./transmuxer').Transmuxer, +  AudioSegmentStream: require('./transmuxer').AudioSegmentStream, +  VideoSegmentStream: require('./transmuxer').VideoSegmentStream, +  tools: require('../tools/mp4-inspector'), +}; + +},{"../tools/mp4-inspector":27,"./mp4-generator":24,"./transmuxer":25}],24:[function(require,module,exports){ +/** + * mux.js + * + * Copyright (c) 2015 Brightcove + * All rights reserved. + * + * Functions that generate fragmented MP4s suitable for use with Media + * Source Extensions. + */ +'use strict'; + +var box, dinf, esds, ftyp, mdat, mfhd, minf, moof, moov, mvex, mvhd, trak, +    tkhd, mdia, mdhd, hdlr, sdtp, stbl, stsd, styp, traf, trex, trun, +    types, MAJOR_BRAND, MINOR_VERSION, AVC1_BRAND, VIDEO_HDLR, +    AUDIO_HDLR, HDLR_TYPES, VMHD, SMHD, DREF, STCO, STSC, STSZ, STTS; + +// pre-calculate constants +(function() { +  var i; +  types = { +    avc1: [], // codingname +    avcC: [], +    btrt: [], +    dinf: [], +    dref: [], +    esds: [], +    ftyp: [], +    hdlr: [], +    mdat: [], +    mdhd: [], +    mdia: [], +    mfhd: [], +    minf: [], +    moof: [], +    moov: [], +    mp4a: [], // codingname +    mvex: [], +    mvhd: [], +    sdtp: [], +    smhd: [], +    stbl: [], +    stco: [], +    stsc: [], +    stsd: [], +    stsz: [], +    stts: [], +    styp: [], +    tfdt: [], +    tfhd: [], +    traf: [], +    trak: [], +    trun: [], +    trex: [], +    tkhd: [], +    vmhd: [] +  }; + +  for (i in types) { +    if (types.hasOwnProperty(i)) { +      types[i] = [ +        i.charCodeAt(0), +        i.charCodeAt(1), +        i.charCodeAt(2), +        i.charCodeAt(3) +      ]; +    } +  } + +  MAJOR_BRAND = new Uint8Array([ +    'i'.charCodeAt(0), +    's'.charCodeAt(0), +    'o'.charCodeAt(0), +    'm'.charCodeAt(0) +  ]); +  AVC1_BRAND = new Uint8Array([ +    'a'.charCodeAt(0), +    'v'.charCodeAt(0), +    'c'.charCodeAt(0), +    '1'.charCodeAt(0) +  ]); +  MINOR_VERSION = new Uint8Array([0, 0, 0, 1]); +  VIDEO_HDLR = new Uint8Array([ +    0x00, // version 0 +    0x00, 0x00, 0x00, // flags +    0x00, 0x00, 0x00, 0x00, // pre_defined +    0x76, 0x69, 0x64, 0x65, // handler_type: 'vide' +    0x00, 0x00, 0x00, 0x00, // reserved +    0x00, 0x00, 0x00, 0x00, // reserved +    0x00, 0x00, 0x00, 0x00, // reserved +    0x56, 0x69, 0x64, 0x65, +    0x6f, 0x48, 0x61, 0x6e, +    0x64, 0x6c, 0x65, 0x72, 0x00 // name: 'VideoHandler' +  ]); +  AUDIO_HDLR = new Uint8Array([ +    0x00, // version 0 +    0x00, 0x00, 0x00, // flags +    0x00, 0x00, 0x00, 0x00, // pre_defined +    0x73, 0x6f, 0x75, 0x6e, // handler_type: 'soun' +    0x00, 0x00, 0x00, 0x00, // reserved +    0x00, 0x00, 0x00, 0x00, // reserved +    0x00, 0x00, 0x00, 0x00, // reserved +    0x53, 0x6f, 0x75, 0x6e, +    0x64, 0x48, 0x61, 0x6e, +    0x64, 0x6c, 0x65, 0x72, 0x00 // name: 'SoundHandler' +  ]); +  HDLR_TYPES = { +    "video":VIDEO_HDLR, +    "audio": AUDIO_HDLR +  }; +  DREF = new Uint8Array([ +    0x00, // version 0 +    0x00, 0x00, 0x00, // flags +    0x00, 0x00, 0x00, 0x01, // entry_count +    0x00, 0x00, 0x00, 0x0c, // entry_size +    0x75, 0x72, 0x6c, 0x20, // 'url' type +    0x00, // version 0 +    0x00, 0x00, 0x01 // entry_flags +  ]); +  SMHD = new Uint8Array([ +    0x00,             // version +    0x00, 0x00, 0x00, // flags +    0x00, 0x00,       // balance, 0 means centered +    0x00, 0x00        // reserved +  ]); +  STCO = new Uint8Array([ +    0x00, // version +    0x00, 0x00, 0x00, // flags +    0x00, 0x00, 0x00, 0x00 // entry_count +  ]); +  STSC = STCO; +  STSZ = new Uint8Array([ +    0x00, // version +    0x00, 0x00, 0x00, // flags +    0x00, 0x00, 0x00, 0x00, // sample_size +    0x00, 0x00, 0x00, 0x00, // sample_count +  ]); +  STTS = STCO; +  VMHD = new Uint8Array([ +    0x00, // version +    0x00, 0x00, 0x01, // flags +    0x00, 0x00, // graphicsmode +    0x00, 0x00, +    0x00, 0x00, +    0x00, 0x00 // opcolor +  ]); +})(); + +box = function(type) { +  var +    payload = [], +    size = 0, +    i, +    result, +    view; + +  for (i = 1; i < arguments.length; i++) { +    payload.push(arguments[i]); +  } + +  i = payload.length; + +  // calculate the total size we need to allocate +  while (i--) { +    size += payload[i].byteLength; +  } +  result = new Uint8Array(size + 8); +  view = new DataView(result.buffer, result.byteOffset, result.byteLength); +  view.setUint32(0, result.byteLength); +  result.set(type, 4); + +  // copy the payload into the result +  for (i = 0, size = 8; i < payload.length; i++) { +    result.set(payload[i], size); +    size += payload[i].byteLength; +  } +  return result; +}; + +dinf = function() { +  return box(types.dinf, box(types.dref, DREF)); +}; + +esds = function(track) { +  return box(types.esds, new Uint8Array([ +    0x00, // version +    0x00, 0x00, 0x00, // flags + +    // ES_Descriptor +    0x03, // tag, ES_DescrTag +    0x19, // length +    0x00, 0x00, // ES_ID +    0x00, // streamDependenceFlag, URL_flag, reserved, streamPriority + +    // DecoderConfigDescriptor +    0x04, // tag, DecoderConfigDescrTag +    0x11, // length +    0x40, // object type +    0x15,  // streamType +    0x00, 0x06, 0x00, // bufferSizeDB +    0x00, 0x00, 0xda, 0xc0, // maxBitrate +    0x00, 0x00, 0xda, 0xc0, // avgBitrate + +    // DecoderSpecificInfo +    0x05, // tag, DecoderSpecificInfoTag +    0x02, // length +    // ISO/IEC 14496-3, AudioSpecificConfig +    // for samplingFrequencyIndex see ISO/IEC 13818-7:2006, 8.1.3.2.2, Table 35 +    (track.audioobjecttype << 3) | (track.samplingfrequencyindex >>> 1), +    (track.samplingfrequencyindex << 7) | (track.channelcount << 3), +    0x06, 0x01, 0x02 // GASpecificConfig +  ])); +}; + +ftyp = function() { +  return box(types.ftyp, MAJOR_BRAND, MINOR_VERSION, MAJOR_BRAND, AVC1_BRAND); +}; + +hdlr = function(type) { +  return box(types.hdlr, HDLR_TYPES[type]); +}; +mdat = function(data) { +  return box(types.mdat, data); +}; +mdhd = function(track) { +  var result = new Uint8Array([ +    0x00,                   // version 0 +    0x00, 0x00, 0x00,       // flags +    0x00, 0x00, 0x00, 0x02, // creation_time +    0x00, 0x00, 0x00, 0x03, // modification_time +    0x00, 0x01, 0x5f, 0x90, // timescale, 90,000 "ticks" per second + +    (track.duration >>> 24) & 0xFF, +    (track.duration >>> 16) & 0xFF, +    (track.duration >>>  8) & 0xFF, +    track.duration & 0xFF,  // duration +    0x55, 0xc4,             // 'und' language (undetermined) +    0x00, 0x00 +  ]); + +  // Use the sample rate from the track metadata, when it is +  // defined. The sample rate can be parsed out of an ADTS header, for +  // instance. +  if (track.samplerate) { +    result[12] = (track.samplerate >>> 24) & 0xFF; +    result[13] = (track.samplerate >>> 16) & 0xFF; +    result[14] = (track.samplerate >>>  8) & 0xFF; +    result[15] = (track.samplerate)        & 0xFF; +  } + +  return box(types.mdhd, result); +}; +mdia = function(track) { +  return box(types.mdia, mdhd(track), hdlr(track.type), minf(track)); +}; +mfhd = function(sequenceNumber) { +  return box(types.mfhd, new Uint8Array([ +    0x00, +    0x00, 0x00, 0x00, // flags +    (sequenceNumber & 0xFF000000) >> 24, +    (sequenceNumber & 0xFF0000) >> 16, +    (sequenceNumber & 0xFF00) >> 8, +    sequenceNumber & 0xFF, // sequence_number +  ])); +}; +minf = function(track) { +  return box(types.minf, +             track.type === 'video' ? box(types.vmhd, VMHD) : box(types.smhd, SMHD), +             dinf(), +             stbl(track)); +}; +moof = function(sequenceNumber, tracks) { +  var +    trackFragments = [], +    i = tracks.length; +  // build traf boxes for each track fragment +  while (i--) { +    trackFragments[i] = traf(tracks[i]); +  } +  return box.apply(null, [ +    types.moof, +    mfhd(sequenceNumber) +  ].concat(trackFragments)); +}; +/** + * Returns a movie box. + * @param tracks {array} the tracks associated with this movie + * @see ISO/IEC 14496-12:2012(E), section 8.2.1 + */ +moov = function(tracks) { +  var +    i = tracks.length, +    boxes = []; + +  while (i--) { +    boxes[i] = trak(tracks[i]); +  } + +  return box.apply(null, [types.moov, mvhd(0xffffffff)].concat(boxes).concat(mvex(tracks))); +}; +mvex = function(tracks) { +  var +    i = tracks.length, +    boxes = []; + +  while (i--) { +    boxes[i] = trex(tracks[i]); +  } +  return box.apply(null, [types.mvex].concat(boxes)); +}; +mvhd = function(duration) { +  var +    bytes = new Uint8Array([ +      0x00, // version 0 +      0x00, 0x00, 0x00, // flags +      0x00, 0x00, 0x00, 0x01, // creation_time +      0x00, 0x00, 0x00, 0x02, // modification_time +      0x00, 0x01, 0x5f, 0x90, // timescale, 90,000 "ticks" per second +      (duration & 0xFF000000) >> 24, +      (duration & 0xFF0000) >> 16, +      (duration & 0xFF00) >> 8, +      duration & 0xFF, // duration +      0x00, 0x01, 0x00, 0x00, // 1.0 rate +      0x01, 0x00, // 1.0 volume +      0x00, 0x00, // reserved +      0x00, 0x00, 0x00, 0x00, // reserved +      0x00, 0x00, 0x00, 0x00, // reserved +      0x00, 0x01, 0x00, 0x00, +      0x00, 0x00, 0x00, 0x00, +      0x00, 0x00, 0x00, 0x00, +      0x00, 0x00, 0x00, 0x00, +      0x00, 0x01, 0x00, 0x00, +      0x00, 0x00, 0x00, 0x00, +      0x00, 0x00, 0x00, 0x00, +      0x00, 0x00, 0x00, 0x00, +      0x40, 0x00, 0x00, 0x00, // transformation: unity matrix +      0x00, 0x00, 0x00, 0x00, +      0x00, 0x00, 0x00, 0x00, +      0x00, 0x00, 0x00, 0x00, +      0x00, 0x00, 0x00, 0x00, +      0x00, 0x00, 0x00, 0x00, +      0x00, 0x00, 0x00, 0x00, // pre_defined +      0xff, 0xff, 0xff, 0xff // next_track_ID +    ]); +  return box(types.mvhd, bytes); +}; + +sdtp = function(track) { +  var +    samples = track.samples || [], +    bytes = new Uint8Array(4 + samples.length), +    flags, +    i; + +  // leave the full box header (4 bytes) all zero + +  // write the sample table +  for (i = 0; i < samples.length; i++) { +    flags = samples[i].flags; + +    bytes[i + 4] = (flags.dependsOn << 4) | +      (flags.isDependedOn << 2) | +      (flags.hasRedundancy); +  } + +  return box(types.sdtp, +             bytes); +}; + +stbl = function(track) { +  return box(types.stbl, +             stsd(track), +             box(types.stts, STTS), +             box(types.stsc, STSC), +             box(types.stsz, STSZ), +             box(types.stco, STCO)); +}; + +(function() { +  var videoSample, audioSample; + +  stsd = function(track) { + +    return box(types.stsd, new Uint8Array([ +      0x00, // version 0 +      0x00, 0x00, 0x00, // flags +      0x00, 0x00, 0x00, 0x01 +    ]), track.type === 'video' ? videoSample(track) : audioSample(track)); +  }; + +  videoSample = function(track) { +    var +      sps = track.sps || [], +      pps = track.pps || [], +      sequenceParameterSets = [], +      pictureParameterSets = [], +      i; + +    // assemble the SPSs +    for (i = 0; i < sps.length; i++) { +      sequenceParameterSets.push((sps[i].byteLength & 0xFF00) >>> 8); +      sequenceParameterSets.push((sps[i].byteLength & 0xFF)); // sequenceParameterSetLength +      sequenceParameterSets = sequenceParameterSets.concat(Array.prototype.slice.call(sps[i])); // SPS +    } + +    // assemble the PPSs +    for (i = 0; i < pps.length; i++) { +      pictureParameterSets.push((pps[i].byteLength & 0xFF00) >>> 8); +      pictureParameterSets.push((pps[i].byteLength & 0xFF)); +      pictureParameterSets = pictureParameterSets.concat(Array.prototype.slice.call(pps[i])); +    } + +    return box(types.avc1, new Uint8Array([ +      0x00, 0x00, 0x00, +      0x00, 0x00, 0x00, // reserved +      0x00, 0x01, // data_reference_index +      0x00, 0x00, // pre_defined +      0x00, 0x00, // reserved +      0x00, 0x00, 0x00, 0x00, +      0x00, 0x00, 0x00, 0x00, +      0x00, 0x00, 0x00, 0x00, // pre_defined +      (track.width & 0xff00) >> 8, +      track.width & 0xff, // width +      (track.height & 0xff00) >> 8, +      track.height & 0xff, // height +      0x00, 0x48, 0x00, 0x00, // horizresolution +      0x00, 0x48, 0x00, 0x00, // vertresolution +      0x00, 0x00, 0x00, 0x00, // reserved +      0x00, 0x01, // frame_count +      0x13, +      0x76, 0x69, 0x64, 0x65, +      0x6f, 0x6a, 0x73, 0x2d, +      0x63, 0x6f, 0x6e, 0x74, +      0x72, 0x69, 0x62, 0x2d, +      0x68, 0x6c, 0x73, 0x00, +      0x00, 0x00, 0x00, 0x00, +      0x00, 0x00, 0x00, 0x00, +      0x00, 0x00, 0x00, // compressorname +      0x00, 0x18, // depth = 24 +      0x11, 0x11 // pre_defined = -1 +    ]), box(types.avcC, new Uint8Array([ +      0x01, // configurationVersion +      track.profileIdc, // AVCProfileIndication +      track.profileCompatibility, // profile_compatibility +      track.levelIdc, // AVCLevelIndication +      0xff // lengthSizeMinusOne, hard-coded to 4 bytes +    ].concat([ +      sps.length // numOfSequenceParameterSets +    ]).concat(sequenceParameterSets).concat([ +      pps.length // numOfPictureParameterSets +    ]).concat(pictureParameterSets))), // "PPS" +            box(types.btrt, new Uint8Array([ +              0x00, 0x1c, 0x9c, 0x80, // bufferSizeDB +              0x00, 0x2d, 0xc6, 0xc0, // maxBitrate +              0x00, 0x2d, 0xc6, 0xc0 +            ])) // avgBitrate +              ); +  }; + +  audioSample = function(track) { +    return box(types.mp4a, new Uint8Array([ + +      // SampleEntry, ISO/IEC 14496-12 +      0x00, 0x00, 0x00, +      0x00, 0x00, 0x00, // reserved +      0x00, 0x01, // data_reference_index + +      // AudioSampleEntry, ISO/IEC 14496-12 +      0x00, 0x00, 0x00, 0x00, // reserved +      0x00, 0x00, 0x00, 0x00, // reserved +      (track.channelcount & 0xff00) >> 8, +      (track.channelcount & 0xff), // channelcount + +      (track.samplesize & 0xff00) >> 8, +      (track.samplesize & 0xff), // samplesize +      0x00, 0x00, // pre_defined +      0x00, 0x00, // reserved + +      (track.samplerate & 0xff00) >> 8, +      (track.samplerate & 0xff), +      0x00, 0x00 // samplerate, 16.16 + +      // MP4AudioSampleEntry, ISO/IEC 14496-14 +    ]), esds(track)); +  }; +})(); + +styp = function() { +  return box(types.styp, MAJOR_BRAND, MINOR_VERSION, MAJOR_BRAND); +}; + +tkhd = function(track) { +  var result = new Uint8Array([ +    0x00, // version 0 +    0x00, 0x00, 0x07, // flags +    0x00, 0x00, 0x00, 0x00, // creation_time +    0x00, 0x00, 0x00, 0x00, // modification_time +    (track.id & 0xFF000000) >> 24, +    (track.id & 0xFF0000) >> 16, +    (track.id & 0xFF00) >> 8, +    track.id & 0xFF, // track_ID +    0x00, 0x00, 0x00, 0x00, // reserved +    (track.duration & 0xFF000000) >> 24, +    (track.duration & 0xFF0000) >> 16, +    (track.duration & 0xFF00) >> 8, +    track.duration & 0xFF, // duration +    0x00, 0x00, 0x00, 0x00, +    0x00, 0x00, 0x00, 0x00, // reserved +    0x00, 0x00, // layer +    0x00, 0x00, // alternate_group +    0x01, 0x00, // non-audio track volume +    0x00, 0x00, // reserved +    0x00, 0x01, 0x00, 0x00, +    0x00, 0x00, 0x00, 0x00, +    0x00, 0x00, 0x00, 0x00, +    0x00, 0x00, 0x00, 0x00, +    0x00, 0x01, 0x00, 0x00, +    0x00, 0x00, 0x00, 0x00, +    0x00, 0x00, 0x00, 0x00, +    0x00, 0x00, 0x00, 0x00, +    0x40, 0x00, 0x00, 0x00, // transformation: unity matrix +    (track.width & 0xFF00) >> 8, +    track.width & 0xFF, +    0x00, 0x00, // width +    (track.height & 0xFF00) >> 8, +    track.height & 0xFF, +    0x00, 0x00 // height +  ]); + +  return box(types.tkhd, result); +}; + +/** + * Generate a track fragment (traf) box. A traf box collects metadata + * about tracks in a movie fragment (moof) box. + */ +traf = function(track) { +  var trackFragmentHeader, trackFragmentDecodeTime, +      trackFragmentRun, sampleDependencyTable, dataOffset; + +  trackFragmentHeader = box(types.tfhd, new Uint8Array([ +    0x00, // version 0 +    0x00, 0x00, 0x3a, // flags +    (track.id & 0xFF000000) >> 24, +    (track.id & 0xFF0000) >> 16, +    (track.id & 0xFF00) >> 8, +    (track.id & 0xFF), // track_ID +    0x00, 0x00, 0x00, 0x01, // sample_description_index +    0x00, 0x00, 0x00, 0x00, // default_sample_duration +    0x00, 0x00, 0x00, 0x00, // default_sample_size +    0x00, 0x00, 0x00, 0x00  // default_sample_flags +  ])); + +  trackFragmentDecodeTime = box(types.tfdt, new Uint8Array([ +    0x00, // version 0 +    0x00, 0x00, 0x00, // flags +    // baseMediaDecodeTime +    (track.baseMediaDecodeTime >>> 24) & 0xFF, +    (track.baseMediaDecodeTime >>> 16) & 0xFF, +    (track.baseMediaDecodeTime >>> 8) & 0xFF, +    track.baseMediaDecodeTime & 0xFF +  ])); + +  // the data offset specifies the number of bytes from the start of +  // the containing moof to the first payload byte of the associated +  // mdat +  dataOffset = (32 + // tfhd +                16 + // tfdt +                8 +  // traf header +                16 + // mfhd +                8 +  // moof header +                8);  // mdat header + +  // audio tracks require less metadata +  if (track.type === 'audio') { +    trackFragmentRun = trun(track, dataOffset); +    return box(types.traf, +               trackFragmentHeader, +               trackFragmentDecodeTime, +               trackFragmentRun); +  } + +  // video tracks should contain an independent and disposable samples +  // box (sdtp) +  // generate one and adjust offsets to match +  sampleDependencyTable = sdtp(track); +  trackFragmentRun = trun(track, +                          sampleDependencyTable.length + dataOffset); +  return box(types.traf, +             trackFragmentHeader, +             trackFragmentDecodeTime, +             trackFragmentRun, +             sampleDependencyTable); +}; + +/** + * Generate a track box. + * @param track {object} a track definition + * @return {Uint8Array} the track box + */ +trak = function(track) { +  track.duration = track.duration || 0xffffffff; +  return box(types.trak, +             tkhd(track), +             mdia(track)); +}; + +trex = function(track) { +  var result = new Uint8Array([ +    0x00, // version 0 +    0x00, 0x00, 0x00, // flags +    (track.id & 0xFF000000) >> 24, +    (track.id & 0xFF0000) >> 16, +    (track.id & 0xFF00) >> 8, +    (track.id & 0xFF), // track_ID +    0x00, 0x00, 0x00, 0x01, // default_sample_description_index +    0x00, 0x00, 0x00, 0x00, // default_sample_duration +    0x00, 0x00, 0x00, 0x00, // default_sample_size +    0x00, 0x01, 0x00, 0x01 // default_sample_flags +  ]); +  // the last two bytes of default_sample_flags is the sample +  // degradation priority, a hint about the importance of this sample +  // relative to others. Lower the degradation priority for all sample +  // types other than video. +  if (track.type !== 'video') { +    result[result.length - 1] = 0x00; +  } + +  return box(types.trex, result); +}; + +(function() { +  var audioTrun, videoTrun, trunHeader; + +  // This method assumes all samples are uniform. That is, if a +  // duration is present for the first sample, it will be present for +  // all subsequent samples. +  // see ISO/IEC 14496-12:2012, Section 8.8.8.1 +  trunHeader = function(samples, offset) { +    var durationPresent = 0, sizePresent = 0, +        flagsPresent = 0, compositionTimeOffset = 0; + +    // trun flag constants +    if (samples.length) { +      if (samples[0].duration !== undefined) { +        durationPresent = 0x1; +      } +      if (samples[0].size !== undefined) { +        sizePresent = 0x2; +      } +      if (samples[0].flags !== undefined) { +        flagsPresent = 0x4; +      } +      if (samples[0].compositionTimeOffset !== undefined) { +        compositionTimeOffset = 0x8; +      } +    } + +    return [ +      0x00, // version 0 +      0x00, +      durationPresent | sizePresent | flagsPresent | compositionTimeOffset, +      0x01, // flags +      (samples.length & 0xFF000000) >>> 24, +      (samples.length & 0xFF0000) >>> 16, +      (samples.length & 0xFF00) >>> 8, +      samples.length & 0xFF, // sample_count +      (offset & 0xFF000000) >>> 24, +      (offset & 0xFF0000) >>> 16, +      (offset & 0xFF00) >>> 8, +      offset & 0xFF // data_offset +    ]; +  }; + +  videoTrun = function(track, offset) { +    var bytes, samples, sample, i; + +    samples = track.samples || []; +    offset += 8 + 12 + (16 * samples.length); + +    bytes = trunHeader(samples, offset); + +    for (i = 0; i < samples.length; i++) { +      sample = samples[i]; +      bytes = bytes.concat([ +        (sample.duration & 0xFF000000) >>> 24, +        (sample.duration & 0xFF0000) >>> 16, +        (sample.duration & 0xFF00) >>> 8, +        sample.duration & 0xFF, // sample_duration +        (sample.size & 0xFF000000) >>> 24, +        (sample.size & 0xFF0000) >>> 16, +        (sample.size & 0xFF00) >>> 8, +        sample.size & 0xFF, // sample_size +        (sample.flags.isLeading << 2) | sample.flags.dependsOn, +        (sample.flags.isDependedOn << 6) | +          (sample.flags.hasRedundancy << 4) | +          (sample.flags.paddingValue << 1) | +          sample.flags.isNonSyncSample, +        sample.flags.degradationPriority & 0xF0 << 8, +        sample.flags.degradationPriority & 0x0F, // sample_flags +        (sample.compositionTimeOffset & 0xFF000000) >>> 24, +        (sample.compositionTimeOffset & 0xFF0000) >>> 16, +        (sample.compositionTimeOffset & 0xFF00) >>> 8, +        sample.compositionTimeOffset & 0xFF // sample_composition_time_offset +      ]); +    } +    return box(types.trun, new Uint8Array(bytes)); +  }; + +  audioTrun = function(track, offset) { +    var bytes, samples, sample, i; + +    samples = track.samples || []; +    offset += 8 + 12 + (8 * samples.length); + +    bytes = trunHeader(samples, offset); + +    for (i = 0; i < samples.length; i++) { +      sample = samples[i]; +      bytes = bytes.concat([ +        (sample.duration & 0xFF000000) >>> 24, +        (sample.duration & 0xFF0000) >>> 16, +        (sample.duration & 0xFF00) >>> 8, +        sample.duration & 0xFF, // sample_duration +        (sample.size & 0xFF000000) >>> 24, +        (sample.size & 0xFF0000) >>> 16, +        (sample.size & 0xFF00) >>> 8, +        sample.size & 0xFF]); // sample_size +    } + +    return box(types.trun, new Uint8Array(bytes)); +  }; + +  trun = function(track, offset) { +    if (track.type === 'audio') { +      return audioTrun(track, offset); +    } else { +      return videoTrun(track, offset); +    } +  }; +})(); + +module.exports = { +  ftyp: ftyp, +  mdat: mdat, +  moof: moof, +  moov: moov, +  initSegment: function(tracks) { +    var +      fileType = ftyp(), +      movie = moov(tracks), +      result; + +    result = new Uint8Array(fileType.byteLength + movie.byteLength); +    result.set(fileType); +    result.set(movie, fileType.byteLength); +    return result; +  } +}; + +},{}],25:[function(require,module,exports){ +/** + * mux.js + * + * Copyright (c) 2015 Brightcove + * All rights reserved. + * + * A stream-based mp2t to mp4 converter. This utility can be used to + * deliver mp4s to a SourceBuffer on platforms that support native + * Media Source Extensions. + */ +'use strict'; + +var Stream = require('../utils/stream.js'); +var mp4 = require('./mp4-generator.js'); +var m2ts = require('../m2ts/m2ts.js'); +var AdtsStream = require('../codecs/adts.js'); +var H264Stream = require('../codecs/h264').H264Stream; +var AacStream = require('../aac'); + +// object types +var VideoSegmentStream, AudioSegmentStream, Transmuxer, CoalesceStream; + +// Helper functions +var +  defaultSample, +  collectDtsInfo, +  clearDtsInfo, +  calculateTrackBaseMediaDecodeTime, +  arrayEquals, +  sumFrameByteLengths; + +/** + * Default sample object + * see ISO/IEC 14496-12:2012, section 8.6.4.3 + */ +defaultSample = { +  size: 0, +  flags: { +    isLeading: 0, +    dependsOn: 1, +    isDependedOn: 0, +    hasRedundancy: 0, +    degradationPriority: 0 +  } +}; + +/** + * Compare two arrays (even typed) for same-ness + */ +arrayEquals = function(a, b) { +  var +    i; + +  if (a.length !== b.length) { +    return false; +  } + +  // compare the value of each element in the array +  for (i = 0; i < a.length; i++) { +    if (a[i] !== b[i]) { +      return false; +    } +  } + +  return true; +}; + +/** + * Sum the `byteLength` properties of the data in each AAC frame + */ +sumFrameByteLengths = function(array) { +  var +    i, +    currentObj, +    sum = 0; + +  // sum the byteLength's all each nal unit in the frame +  for (i = 0; i < array.length; i++) { +    currentObj = array[i]; +    sum += currentObj.data.byteLength; +  } + +  return sum; +}; + +/** + * Constructs a single-track, ISO BMFF media segment from AAC data + * events. The output of this stream can be fed to a SourceBuffer + * configured with a suitable initialization segment. + */ +AudioSegmentStream = function(track) { +  var +    adtsFrames = [], +    sequenceNumber = 0, +    earliestAllowedDts = 0; + +  AudioSegmentStream.prototype.init.call(this); + +  this.push = function(data) { +    collectDtsInfo(track, data); + +    if (track) { +      track.audioobjecttype = data.audioobjecttype; +      track.channelcount = data.channelcount; +      track.samplerate = data.samplerate; +      track.samplingfrequencyindex = data.samplingfrequencyindex; +      track.samplesize = data.samplesize; +    } + +    // buffer audio data until end() is called +    adtsFrames.push(data); +  }; + +  this.setEarliestDts = function(earliestDts) { +    earliestAllowedDts = earliestDts - track.timelineStartInfo.baseMediaDecodeTime; +  }; + +  this.flush = function() { +    var +      frames, +      moof, +      mdat, +      boxes; + +    // return early if no audio data has been observed +    if (adtsFrames.length === 0) { +      this.trigger('done'); +      return; +    } + +    frames = this.trimAdtsFramesByEarliestDts_(adtsFrames); + +    // we have to build the index from byte locations to +    // samples (that is, adts frames) in the audio data +    track.samples = this.generateSampleTable_(frames); + +    // concatenate the audio data to constuct the mdat +    mdat = mp4.mdat(this.concatenateFrameData_(frames)); + +    adtsFrames = []; + +    calculateTrackBaseMediaDecodeTime(track); +    moof = mp4.moof(sequenceNumber, [track]); +    boxes = new Uint8Array(moof.byteLength + mdat.byteLength); + +    // bump the sequence number for next time +    sequenceNumber++; + +    boxes.set(moof); +    boxes.set(mdat, moof.byteLength); + +    clearDtsInfo(track); + +    this.trigger('data', {track: track, boxes: boxes}); +    this.trigger('done'); +  }; + +  // If the audio segment extends before the earliest allowed dts +  // value, remove AAC frames until starts at or after the earliest +  // allowed DTS so that we don't end up with a negative baseMedia- +  // DecodeTime for the audio track +  this.trimAdtsFramesByEarliestDts_ = function(adtsFrames) { +    if (track.minSegmentDts >= earliestAllowedDts) { +      return adtsFrames; +    } + +    // We will need to recalculate the earliest segment Dts +    track.minSegmentDts = Infinity; + +    return adtsFrames.filter(function(currentFrame) { +      // If this is an allowed frame, keep it and record it's Dts +      if (currentFrame.dts >= earliestAllowedDts) { +        track.minSegmentDts = Math.min(track.minSegmentDts, currentFrame.dts); +        track.minSegmentPts = track.minSegmentDts; +        return true; +      } +      // Otherwise, discard it +      return false; +    }); +  }; + +  // generate the track's raw mdat data from an array of frames +  this.generateSampleTable_ = function(frames) { +    var +      i, +      currentFrame, +      samples = []; + +    for (i = 0; i < frames.length; i++) { +      currentFrame = frames[i]; +      samples.push({ +        size: currentFrame.data.byteLength, +        duration: 1024 // For AAC audio, all samples contain 1024 samples +      }); +    } +    return samples; +  }; + +  // generate the track's sample table from an array of frames +  this.concatenateFrameData_ = function(frames) { +    var +      i, +      currentFrame, +      dataOffset = 0, +      data = new Uint8Array(sumFrameByteLengths(frames)); + +    for (i = 0; i < frames.length; i++) { +      currentFrame = frames[i]; + +      data.set(currentFrame.data, dataOffset); +      dataOffset += currentFrame.data.byteLength; +    } +    return data; +  }; +}; + +AudioSegmentStream.prototype = new Stream(); + +/** + * Constructs a single-track, ISO BMFF media segment from H264 data + * events. The output of this stream can be fed to a SourceBuffer + * configured with a suitable initialization segment. + * @param track {object} track metadata configuration + */ +VideoSegmentStream = function(track) { +  var +    sequenceNumber = 0, +    nalUnits = [], +    config, +    pps; + +  VideoSegmentStream.prototype.init.call(this); + +  delete track.minPTS; + +  this.gopCache_ = []; + +  this.push = function(nalUnit) { +    collectDtsInfo(track, nalUnit); + +    // record the track config +    if (nalUnit.nalUnitType === 'seq_parameter_set_rbsp' && +        !config) { +      config = nalUnit.config; + +      track.width = config.width; +      track.height = config.height; +      track.sps = [nalUnit.data]; +      track.profileIdc = config.profileIdc; +      track.levelIdc = config.levelIdc; +      track.profileCompatibility = config.profileCompatibility; +    } + +    if (nalUnit.nalUnitType === 'pic_parameter_set_rbsp' && +        !pps) { +      pps = nalUnit.data; +      track.pps = [nalUnit.data]; +    } + +    // buffer video until flush() is called +    nalUnits.push(nalUnit); +  }; + +  this.flush = function() { +    var +      frames, +      gopForFusion, +      gops, +      moof, +      mdat, +      boxes; + +    // Throw away nalUnits at the start of the byte stream until +    // we find the first AUD +    while (nalUnits.length) { +      if (nalUnits[0].nalUnitType === 'access_unit_delimiter_rbsp') { +        break; +      } +      nalUnits.shift(); +    } + +    // Return early if no video data has been observed +    if (nalUnits.length === 0) { +      this.resetStream_(); +      this.trigger('done'); +      return; +    } + +    // Organize the raw nal-units into arrays that represent +    // higher-level constructs such as frames and gops +    // (group-of-pictures) +    frames = this.groupNalsIntoFrames_(nalUnits); +    gops = this.groupFramesIntoGops_(frames); + +    // If the first frame of this fragment is not a keyframe we have +    // a problem since MSE (on Chrome) requires a leading keyframe. +    // +    // We have two approaches to repairing this situation: +    // 1) GOP-FUSION: +    //    This is where we keep track of the GOPS (group-of-pictures) +    //    from previous fragments and attempt to find one that we can +    //    prepend to the current fragment in order to create a valid +    //    fragment. +    // 2) KEYFRAME-PULLING: +    //    Here we search for the first keyframe in the fragment and +    //    throw away all the frames between the start of the fragment +    //    and that keyframe. We then extend the duration and pull the +    //    PTS of the keyframe forward so that it covers the time range +    //    of the frames that were disposed of. +    // +    // #1 is far prefereable over #2 which can cause "stuttering" but +    // requires more things to be just right. +    if (!gops[0][0].keyFrame) { +      // Search for a gop for fusion from our gopCache +      gopForFusion = this.getGopForFusion_(nalUnits[0], track); + +      if (gopForFusion) { +        gops.unshift(gopForFusion); +        // Adjust Gops' metadata to account for the inclusion of the +        // new gop at the beginning +        gops.byteLength += gopForFusion.byteLength; +        gops.nalCount += gopForFusion.nalCount; +        gops.pts = gopForFusion.pts; +        gops.dts = gopForFusion.dts; +        gops.duration += gopForFusion.duration; +      } else { +        // If we didn't find a candidate gop fall back to keyrame-pulling +        gops = this.extendFirstKeyFrame_(gops); +      } +    } +    collectDtsInfo(track, gops); + +    // First, we have to build the index from byte locations to +    // samples (that is, frames) in the video data +    track.samples = this.generateSampleTable_(gops); + +    // Concatenate the video data and construct the mdat +    mdat = mp4.mdat(this.concatenateNalData_(gops)); + +    // save all the nals in the last GOP into the gop cache +    this.gopCache_.unshift({ +      gop: gops.pop(), +      pps: track.pps, +      sps: track.sps +    }); + +    // Keep a maximum of 6 GOPs in the cache +    this.gopCache_.length = Math.min(6, this.gopCache_.length); + +    // Clear nalUnits +    nalUnits = []; + +    calculateTrackBaseMediaDecodeTime(track); + +    this.trigger('timelineStartInfo', track.timelineStartInfo); + +    moof = mp4.moof(sequenceNumber, [track]); + +    // it would be great to allocate this array up front instead of +    // throwing away hundreds of media segment fragments +    boxes = new Uint8Array(moof.byteLength + mdat.byteLength); + +    // Bump the sequence number for next time +    sequenceNumber++; + +    boxes.set(moof); +    boxes.set(mdat, moof.byteLength); + +    this.trigger('data', {track: track, boxes: boxes}); + +    this.resetStream_(); + +    // Continue with the flush process now +    this.trigger('done'); +  }; + +  this.resetStream_ = function() { +    clearDtsInfo(track); + +    // reset config and pps because they may differ across segments +    // for instance, when we are rendition switching +    config = undefined; +    pps = undefined; +  }; + +  // Search for a candidate Gop for gop-fusion from the gop cache and +  // return it or return null if no good candidate was found +  this.getGopForFusion_ = function (nalUnit) { +    var +      halfSecond = 45000, // Half-a-second in a 90khz clock +      allowableOverlap = 10000, // About 3 frames @ 30fps +      nearestDistance = Infinity, +      dtsDistance, +      nearestGopObj, +      currentGop, +      currentGopObj, +      i; + +    // Search for the GOP nearest to the beginning of this nal unit +    for (i = 0; i < this.gopCache_.length; i++) { +      currentGopObj = this.gopCache_[i]; +      currentGop = currentGopObj.gop; + +      // Reject Gops with different SPS or PPS +      if (!(track.pps && arrayEquals(track.pps[0], currentGopObj.pps[0])) || +          !(track.sps && arrayEquals(track.sps[0], currentGopObj.sps[0]))) { +        continue; +      } + +      // Reject Gops that would require a negative baseMediaDecodeTime +      if (currentGop.dts < track.timelineStartInfo.dts) { +        continue; +      } + +      // The distance between the end of the gop and the start of the nalUnit +      dtsDistance = (nalUnit.dts - currentGop.dts) - currentGop.duration; + +      // Only consider GOPS that start before the nal unit and end within +      // a half-second of the nal unit +      if (dtsDistance >= -allowableOverlap && +          dtsDistance <= halfSecond) { + +        // Always use the closest GOP we found if there is more than +        // one candidate +        if (!nearestGopObj || +            nearestDistance > dtsDistance) { +          nearestGopObj = currentGopObj; +          nearestDistance = dtsDistance; +        } +      } +    } + +    if (nearestGopObj) { +      return nearestGopObj.gop; +    } +    return null; +  }; + +  this.extendFirstKeyFrame_ = function(gops) { +    var +      h, i, +      currentGop, +      newGops; + +    if (!gops[0][0].keyFrame) { +      // Remove the first GOP +      currentGop = gops.shift(); + +      gops.byteLength -=  currentGop.byteLength; +      gops.nalCount -= currentGop.nalCount; + +      // Extend the first frame of what is now the +      // first gop to cover the time period of the +      // frames we just removed +      gops[0][0].dts = currentGop.dts; +      gops[0][0].pts = currentGop.pts; +      gops[0][0].duration += currentGop.duration; +    } + +    return gops; +  }; + +  // Convert an array of nal units into an array of frames with each frame being +  // composed of the nal units that make up that frame +  // Also keep track of cummulative data about the frame from the nal units such +  // as the frame duration, starting pts, etc. +  this.groupNalsIntoFrames_ = function(nalUnits) { +    var +      i, +      currentNal, +      startPts, +      startDts, +      currentFrame = [], +      frames = []; + +    currentFrame.byteLength = 0; + +    for (i = 0; i < nalUnits.length; i++) { +      currentNal = nalUnits[i]; + +      // Split on 'aud'-type nal units +      if (currentNal.nalUnitType === 'access_unit_delimiter_rbsp') { +        // Since the very first nal unit is expected to be an AUD +        // only push to the frames array when currentFrame is not empty +        if (currentFrame.length) { +          currentFrame.duration = currentNal.dts - currentFrame.dts; +          frames.push(currentFrame); +        } +        currentFrame = [currentNal]; +        currentFrame.byteLength = currentNal.data.byteLength; +        currentFrame.pts = currentNal.pts; +        currentFrame.dts = currentNal.dts; +      } else { +        // Specifically flag key frames for ease of use later +        if (currentNal.nalUnitType === 'slice_layer_without_partitioning_rbsp_idr') { +          currentFrame.keyFrame = true; +        } +        currentFrame.duration = currentNal.dts - currentFrame.dts; +        currentFrame.byteLength += currentNal.data.byteLength; +        currentFrame.push(currentNal); +      } +    } + +    // For the last frame, use the duration of the previous frame if we +    // have nothing better to go on +    if (frames.length && +        !currentFrame.duration || +        currentFrame.duration <= 0) { +      currentFrame.duration = frames[frames.length - 1].duration; +    } + +    // Push the final frame +    frames.push(currentFrame); +    return frames; +  }; + +  // Convert an array of frames into an array of Gop with each Gop being composed +  // of the frames that make up that Gop +  // Also keep track of cummulative data about the Gop from the frames such as the +  // Gop duration, starting pts, etc. +  this.groupFramesIntoGops_ = function(frames) { +    var +      i, +      currentFrame, +      currentGop = [], +      gops = []; + +    // We must pre-set some of the values on the Gop since we +    // keep running totals of these values +    currentGop.byteLength = 0; +    currentGop.nalCount = 0; +    currentGop.duration = 0; +    currentGop.pts = frames[0].pts; +    currentGop.dts = frames[0].dts; + +    // store some metadata about all the Gops +    gops.byteLength = 0; +    gops.nalCount = 0; +    gops.duration = 0; +    gops.pts = frames[0].pts; +    gops.dts = frames[0].dts; + +    for (i = 0; i < frames.length; i++) { +      currentFrame = frames[i]; + +      if (currentFrame.keyFrame) { +        // Since the very first frame is expected to be an keyframe +        // only push to the gops array when currentGop is not empty +        if (currentGop.length) { +          gops.push(currentGop); +          gops.byteLength += currentGop.byteLength; +          gops.nalCount += currentGop.nalCount; +          gops.duration += currentGop.duration; +        } + +        currentGop = [currentFrame]; +        currentGop.nalCount = currentFrame.length; +        currentGop.byteLength = currentFrame.byteLength; +        currentGop.pts = currentFrame.pts; +        currentGop.dts = currentFrame.dts; +        currentGop.duration = currentFrame.duration; +      } else { +        currentGop.duration += currentFrame.duration; +        currentGop.nalCount += currentFrame.length; +        currentGop.byteLength += currentFrame.byteLength; +        currentGop.push(currentFrame); +      } +    } + +    if (gops.length && currentGop.duration <= 0) { +      currentGop.duration = gops[gops.length - 1].duration; +    } +    gops.byteLength += currentGop.byteLength; +    gops.nalCount += currentGop.nalCount; +    gops.duration += currentGop.duration; + +    // push the final Gop +    gops.push(currentGop); +    return gops; +  }; + +  // generate the track's sample table from an array of gops +  this.generateSampleTable_ = function(gops, baseDataOffset) { +    var +      h, i, +      sample, +      currentGop, +      currentFrame, +      currentSample, +      dataOffset = baseDataOffset || 0, +      samples = []; + +    for (h = 0; h < gops.length; h++) { +      currentGop = gops[h]; + +      for (i = 0; i < currentGop.length; i++) { +        currentFrame = currentGop[i]; + +        sample = Object.create(defaultSample); + +        sample.dataOffset = dataOffset; +        sample.compositionTimeOffset = currentFrame.pts - currentFrame.dts; +        sample.duration = currentFrame.duration; +        sample.size = 4 * currentFrame.length; // Space for nal unit size +        sample.size += currentFrame.byteLength; + +        if (currentFrame.keyFrame) { +          sample.flags.dependsOn = 2; +        } + +        dataOffset += sample.size; + +        samples.push(sample); +      } +    } +    return samples; +  }; + +  // generate the track's raw mdat data from an array of gops +  this.concatenateNalData_ = function (gops) { +    var +      h, i, j, +      currentGop, +      currentFrame, +      currentNal, +      dataOffset = 0, +      nalsByteLength = gops.byteLength, +      numberOfNals = gops.nalCount, +      totalByteLength = nalsByteLength + 4 * numberOfNals, +      data = new Uint8Array(totalByteLength), +      view = new DataView(data.buffer); + +    // For each Gop.. +    for (h = 0; h < gops.length; h++) { +      currentGop = gops[h]; + +      // For each Frame.. +      for (i = 0; i < currentGop.length; i++) { +        currentFrame = currentGop[i]; + +        // For each NAL.. +        for (j = 0; j < currentFrame.length; j++) { +          currentNal = currentFrame[j]; + +          view.setUint32(dataOffset, currentNal.data.byteLength); +          dataOffset += 4; +          data.set(currentNal.data, dataOffset); +          dataOffset += currentNal.data.byteLength; +        } +      } +    } +    return data; +  }; +}; + +VideoSegmentStream.prototype = new Stream(); + +/** + * Store information about the start and end of the track and the + * duration for each frame/sample we process in order to calculate + * the baseMediaDecodeTime + */ +collectDtsInfo = function (track, data) { +  if (typeof data.pts === 'number') { +    if (track.timelineStartInfo.pts === undefined) { +      track.timelineStartInfo.pts = data.pts; +    } + +    if (track.minSegmentPts === undefined) { +      track.minSegmentPts = data.pts; +    } else { +      track.minSegmentPts = Math.min(track.minSegmentPts, data.pts); +    } + +    if (track.maxSegmentPts === undefined) { +      track.maxSegmentPts = data.pts; +    } else { +      track.maxSegmentPts = Math.max(track.maxSegmentPts, data.pts); +    } +  } + +  if (typeof data.dts === 'number') { +    if (track.timelineStartInfo.dts === undefined) { +      track.timelineStartInfo.dts = data.dts; +    } + +    if (track.minSegmentDts === undefined) { +      track.minSegmentDts = data.dts; +    } else { +      track.minSegmentDts = Math.min(track.minSegmentDts, data.dts); +    } + +    if (track.maxSegmentDts === undefined) { +      track.maxSegmentDts = data.dts; +    } else { +      track.maxSegmentDts = Math.max(track.maxSegmentDts, data.dts); +    } +  } +}; + +/** + * Clear values used to calculate the baseMediaDecodeTime between + * tracks + */ +clearDtsInfo = function (track) { +  delete track.minSegmentDts; +  delete track.maxSegmentDts; +  delete track.minSegmentPts; +  delete track.maxSegmentPts; +}; + +/** + * Calculate the track's baseMediaDecodeTime based on the earliest + * DTS the transmuxer has ever seen and the minimum DTS for the + * current track + */ +calculateTrackBaseMediaDecodeTime = function (track) { +  var +    oneSecondInPTS = 90000, // 90kHz clock +    scale, +    // Calculate the distance, in time, that this segment starts from the start +    // of the timeline (earliest time seen since the transmuxer initialized) +    timeSinceStartOfTimeline = track.minSegmentDts - track.timelineStartInfo.dts, +    // Calculate the first sample's effective compositionTimeOffset +    firstSampleCompositionOffset = track.minSegmentPts - track.minSegmentDts; + +  // track.timelineStartInfo.baseMediaDecodeTime is the location, in time, where +  // we want the start of the first segment to be placed +  track.baseMediaDecodeTime = track.timelineStartInfo.baseMediaDecodeTime; + +  // Add to that the distance this segment is from the very first +  track.baseMediaDecodeTime += timeSinceStartOfTimeline; + +  // Subtract this segment's "compositionTimeOffset" so that the first frame of +  // this segment is displayed exactly at the `baseMediaDecodeTime` or at the +  // end of the previous segment +  track.baseMediaDecodeTime -= firstSampleCompositionOffset; + +  // baseMediaDecodeTime must not become negative +  track.baseMediaDecodeTime = Math.max(0, track.baseMediaDecodeTime); + +  if (track.type === 'audio') { +    // Audio has a different clock equal to the sampling_rate so we need to +    // scale the PTS values into the clock rate of the track +    scale = track.samplerate / oneSecondInPTS; +    track.baseMediaDecodeTime *= scale; +    track.baseMediaDecodeTime = Math.floor(track.baseMediaDecodeTime); +  } +}; + +/** + * A Stream that can combine multiple streams (ie. audio & video) + * into a single output segment for MSE. Also supports audio-only + * and video-only streams. + */ +CoalesceStream = function(options) { +  // Number of Tracks per output segment +  // If greater than 1, we combine multiple +  // tracks into a single segment +  this.numberOfTracks = 0; +  this.metadataStream = options.metadataStream; + +  if (typeof options.remux !== 'undefined') { +    this.remuxTracks = !!options.remux; +  } else { +    this.remuxTracks = true; +  } + +  this.pendingTracks = []; +  this.videoTrack = null; +  this.pendingBoxes = []; +  this.pendingCaptions = []; +  this.pendingMetadata = []; +  this.pendingBytes = 0; +  this.emittedTracks = 0; + +  CoalesceStream.prototype.init.call(this); + +  // Take output from multiple +  this.push = function(output) { +    // buffer incoming captions until the associated video segment +    // finishes +    if (output.text) { +      return this.pendingCaptions.push(output); +    } +    // buffer incoming id3 tags until the final flush +    if (output.frames) { +      return this.pendingMetadata.push(output); +    } + +    // Add this track to the list of pending tracks and store +    // important information required for the construction of +    // the final segment +    this.pendingTracks.push(output.track); +    this.pendingBoxes.push(output.boxes); +    this.pendingBytes += output.boxes.byteLength; + +    if (output.track.type === 'video') { +      this.videoTrack = output.track; +    } +    if (output.track.type === 'audio') { +      this.audioTrack = output.track; +    } +  }; +}; + +CoalesceStream.prototype = new Stream(); +CoalesceStream.prototype.flush = function() { +  var +    offset = 0, +    event = { +      captions: [], +      metadata: [] +    }, +    caption, +    id3, +    initSegment, +    timelineStartPts = 0, +    i; + +  // Return until we have enough tracks from the pipeline to remux +  if (this.pendingTracks.length === 0 || +     (this.remuxTracks && this.pendingTracks.length < this.numberOfTracks)) { +    return; +  } + +  if (this.videoTrack) { +    timelineStartPts = this.videoTrack.timelineStartInfo.pts; +  } else if (this.audioTrack) { +    timelineStartPts = this.audioTrack.timelineStartInfo.pts; +  } + +  if (this.pendingTracks.length === 1) { +    event.type = this.pendingTracks[0].type; +  } else { +    event.type = 'combined'; +  } +  this.emittedTracks += this.pendingTracks.length; + +  initSegment = mp4.initSegment(this.pendingTracks); + +  // Create a new typed array large enough to hold the init +  // segment and all tracks +  event.data = new Uint8Array(initSegment.byteLength + +                              this.pendingBytes); + +  // Create an init segment containing a moov +  // and track definitions +  event.data.set(initSegment); +  offset += initSegment.byteLength; + +  // Append each moof+mdat (one per track) after the init segment +  for (i = 0; i < this.pendingBoxes.length; i++) { +    event.data.set(this.pendingBoxes[i], offset); +    offset += this.pendingBoxes[i].byteLength; +  } + +  // Translate caption PTS times into second offsets into the +  // video timeline for the segment +  for (i = 0; i < this.pendingCaptions.length; i++) { +    caption = this.pendingCaptions[i]; +    caption.startTime = (caption.startPts - timelineStartPts); +    caption.startTime /= 90e3; +    caption.endTime = (caption.endPts - timelineStartPts); +    caption.endTime /= 90e3; +    event.captions.push(caption); +  } + +  // Translate ID3 frame PTS times into second offsets into the +  // video timeline for the segment +  for (i = 0; i < this.pendingMetadata.length; i++) { +    id3 = this.pendingMetadata[i]; +    id3.cueTime = (id3.pts - timelineStartPts); +    id3.cueTime /= 90e3; +    event.metadata.push(id3); +  } +  // We add this to every single emitted segment even though we only need +  // it for the first +  event.metadata.dispatchType = this.metadataStream.dispatchType; + +  // Reset stream state +  this.pendingTracks.length = 0; +  this.videoTrack = null; +  this.pendingBoxes.length = 0; +  this.pendingCaptions.length = 0; +  this.pendingBytes = 0; +  this.pendingMetadata.length = 0; + +  // Emit the built segment +  this.trigger('data', event); + +  // Only emit `done` if all tracks have been flushed and emitted +  if (this.emittedTracks >= this.numberOfTracks) { +    this.trigger('done'); +    this.emittedTracks = 0; +  } +}; +/** + * A Stream that expects MP2T binary data as input and produces + * corresponding media segments, suitable for use with Media Source + * Extension (MSE) implementations that support the ISO BMFF byte + * stream format, like Chrome. + */ +Transmuxer = function(options) { +  var +    self = this, +    videoTrack, +    audioTrack, +    packetStream, parseStream, elementaryStream, +    adtsStream, h264Stream,aacStream, +    videoSegmentStream, audioSegmentStream, captionStream, +    coalesceStream, +    headOfPipeline; + +  this.setupAacPipeline = function() { +    this.metadataStream = new m2ts.MetadataStream(); +    options.metadataStream = this.metadataStream; + +    // set up the parsing pipeline +    aacStream = new AacStream(); +    adtsStream = new AdtsStream(); +    coalesceStream = new CoalesceStream(options); +    headOfPipeline = aacStream; + +    aacStream.pipe(adtsStream); +    aacStream.pipe(this.metadataStream); +    this.metadataStream.pipe(coalesceStream); + +    this.metadataStream.on('timestamp', function(frame) { +      aacStream.setTimestamp(frame.timestamp); +    }); +    this.addAacListener(); +  }; + + +  this.addAacListener = function() { +    aacStream.on('data', function(data) { +      var i; + +      if (data.type === 'timed-metadata') { +        var track = { +            timelineStartInfo: { +            baseMediaDecodeTime: 0 }, +            codec: 'adts', +            type: 'audio' }; + +        if (track && !audioSegmentStream) { +          // hook up the audio segment stream to the first track with aac data +          coalesceStream.numberOfTracks++; +          audioSegmentStream = new AudioSegmentStream(track); +          // Set up the final part of the audio pipeline +          adtsStream +            .pipe(audioSegmentStream) +            .pipe(coalesceStream); +        } +      } +    }); +  }; + +  this.setupTsPipeline = function() { +    this.metadataStream = new m2ts.MetadataStream(); + +    options.metadataStream = this.metadataStream; + +    // set up the parsing pipeline +    packetStream = new m2ts.TransportPacketStream(); +    parseStream = new m2ts.TransportParseStream(); +    elementaryStream = new m2ts.ElementaryStream(); +    adtsStream = new AdtsStream(); +    h264Stream = new H264Stream(); +    captionStream = new m2ts.CaptionStream(); +    coalesceStream = new CoalesceStream(options); +    headOfPipeline = packetStream; + +    // disassemble MPEG2-TS packets into elementary streams +    packetStream +      .pipe(parseStream) +      .pipe(elementaryStream); + +    // !!THIS ORDER IS IMPORTANT!! +    // demux the streams +    elementaryStream +      .pipe(h264Stream); +    elementaryStream +      .pipe(adtsStream); + +    elementaryStream +      .pipe(this.metadataStream) +      .pipe(coalesceStream); + +    // Hook up CEA-608/708 caption stream +    h264Stream.pipe(captionStream) +      .pipe(coalesceStream); +    this.addTsListener(); +  }; + +  this.addTsListener = function() { + +    elementaryStream.on('data', function(data) { +      var i; + +      if (data.type === 'metadata') { +        i = data.tracks.length; + +        // scan the tracks listed in the metadata +        while (i--) { +          if (!videoTrack && data.tracks[i].type === 'video') { +            videoTrack = data.tracks[i]; +            videoTrack.timelineStartInfo.baseMediaDecodeTime = self.baseMediaDecodeTime; +          } else if (!audioTrack && data.tracks[i].type === 'audio') { +            audioTrack = data.tracks[i]; +            audioTrack.timelineStartInfo.baseMediaDecodeTime = self.baseMediaDecodeTime; +          } +        } + +        // hook up the video segment stream to the first track with h264 data +        if (videoTrack && !videoSegmentStream) { +          coalesceStream.numberOfTracks++; +          videoSegmentStream = new VideoSegmentStream(videoTrack); + +          videoSegmentStream.on('timelineStartInfo', function(timelineStartInfo){ +          // When video emits timelineStartInfo data after a flush, we forward that +          // info to the AudioSegmentStream, if it exists, because video timeline +          // data takes precedence. +            if (audioTrack) { +              audioTrack.timelineStartInfo = timelineStartInfo; +              // On the first segment we trim AAC frames that exist before the +              // very earliest DTS we have seen in video because Chrome will +              // interpret any video track with a baseMediaDecodeTime that is +              // non-zero as a gap. +              audioSegmentStream.setEarliestDts(timelineStartInfo.dts); +            } +          }); + +          // Set up the final part of the video pipeline +          h264Stream +            .pipe(videoSegmentStream) +            .pipe(coalesceStream); +        } + +        if (audioTrack && !audioSegmentStream) { +          // hook up the audio segment stream to the first track with aac data +          coalesceStream.numberOfTracks++; +          audioSegmentStream = new AudioSegmentStream(audioTrack); + +          // Set up the final part of the audio pipeline +          adtsStream +            .pipe(audioSegmentStream) +            .pipe(coalesceStream); +        } +      } +    }); +  }; +  Transmuxer.prototype.init.call(this); +  options = options || {}; + +  this.baseMediaDecodeTime = options.baseMediaDecodeTime || 0; + +  // expose the metadata stream +  if (options.aacfile === undefined) { +    this.setupTsPipeline(); +  } else { +    this.setupAacPipeline(); +  } + +  // hook up the segment streams once track metadata is delivered +  this.setBaseMediaDecodeTime = function (baseMediaDecodeTime) { +    this.baseMediaDecodeTime = baseMediaDecodeTime; +    if (audioTrack) { +      audioTrack.timelineStartInfo.dts = undefined; +      audioTrack.timelineStartInfo.pts = undefined; +      clearDtsInfo(audioTrack); +      audioTrack.timelineStartInfo.baseMediaDecodeTime = baseMediaDecodeTime; +    } +    if (videoTrack) { +      videoSegmentStream.gopCache_ = []; +      videoTrack.timelineStartInfo.dts = undefined; +      videoTrack.timelineStartInfo.pts = undefined; +      clearDtsInfo(videoTrack); +      videoTrack.timelineStartInfo.baseMediaDecodeTime = baseMediaDecodeTime; +    } +  }; + +  // feed incoming data to the front of the parsing pipeline +  this.push = function(data) { +    headOfPipeline.push(data); +  }; + +  // flush any buffered data +  this.flush = function() { +    // Start at the top of the pipeline and flush all pending work +    headOfPipeline.flush(); +  }; + +  // Re-emit any data coming from the coalesce stream to the outside world +  coalesceStream.on('data', function (data) { +    self.trigger('data', data); +  }); +  // Let the consumer know we have finished flushing the entire pipeline +  coalesceStream.on('done', function () { +    self.trigger('done'); +  }); +}; +Transmuxer.prototype = new Stream(); + +module.exports = { +  Transmuxer: Transmuxer, +  VideoSegmentStream: VideoSegmentStream, +  AudioSegmentStream: AudioSegmentStream, +}; + +},{"../aac":10,"../codecs/adts.js":11,"../codecs/h264":12,"../m2ts/m2ts.js":20,"../utils/stream.js":29,"./mp4-generator.js":24}],26:[function(require,module,exports){ +'use strict'; + +var +  tagTypes = { +    0x08: 'audio', +    0x09: 'video', +    0x12: 'metadata' +  }, +  hex = function (val) { +    return '0x' + ('00' + val.toString(16)).slice(-2).toUpperCase(); +  }, +  hexStringList = function (data) { +    var arr = [], i; +    /* jshint -W086 */ +    while(data.byteLength > 0) { +      i = 0; +      switch(data.byteLength) { +        default: +          arr.push(hex(data[i++])); +        case 7: +          arr.push(hex(data[i++])); +        case 6: +          arr.push(hex(data[i++])); +        case 5: +          arr.push(hex(data[i++])); +        case 4: +          arr.push(hex(data[i++])); +        case 3: +          arr.push(hex(data[i++])); +        case 2: +          arr.push(hex(data[i++])); +        case 1: +          arr.push(hex(data[i++])); +      } +      data = data.subarray(i); +    } +    /* jshint +W086 */ +    return arr.join(' '); +  }, +  parseAVCTag = function (tag, obj) { +    var +      avcPacketTypes = [ +        'AVC Sequence Header', +        'AVC NALU', +        'AVC End-of-Sequence' +      ], +      nalUnitTypes = [ +        'unspecified', +        'slice_layer_without_partitioning', +        'slice_data_partition_a_layer', +        'slice_data_partition_b_layer', +        'slice_data_partition_c_layer', +        'slice_layer_without_partitioning_idr', +        'sei', +        'seq_parameter_set', +        'pic_parameter_set', +        'access_unit_delimiter', +        'end_of_seq', +        'end_of_stream', +        'filler', +        'seq_parameter_set_ext', +        'prefix_nal_unit', +        'subset_seq_parameter_set', +        'reserved', +        'reserved', +        'reserved' +      ], +      compositionTime = (tag[1] & parseInt('01111111', 2) << 16) | (tag[2] << 8) | tag[3]; + +    obj = obj || {}; + +    obj.avcPacketType = avcPacketTypes[tag[0]]; +    obj.CompositionTime = (tag[1] & parseInt('10000000', 2)) ? -compositionTime : compositionTime; + +    if (tag[0] === 1) { +      obj.nalUnitTypeRaw = hexStringList(tag.subarray(4, 100)); +    } else { +      obj.data = hexStringList(tag.subarray(4)); +    } + +    return obj; +  }, +  parseVideoTag = function (tag, obj) { +    var +      frameTypes = [ +        'Unknown', +        'Keyframe (for AVC, a seekable frame)', +        'Inter frame (for AVC, a nonseekable frame)', +        'Disposable inter frame (H.263 only)', +        'Generated keyframe (reserved for server use only)', +        'Video info/command frame' +      ], +      codecIDs = [ +        'JPEG (currently unused)', +        'Sorenson H.263', +        'Screen video', +        'On2 VP6', +        'On2 VP6 with alpha channel', +        'Screen video version 2', +        'AVC' +      ], +      codecID = tag[0] & parseInt('00001111', 2); + +    obj = obj || {}; + +    obj.frameType = frameTypes[(tag[0] & parseInt('11110000', 2)) >>> 4]; +    obj.codecID = codecID; + +    if (codecID === 7) { +      return parseAVCTag(tag.subarray(1), obj); +    } +    return obj; +  }, +  parseAACTag = function (tag, obj) { +    var packetTypes = [ +      'AAC Sequence Header', +      'AAC Raw' +    ]; + +    obj = obj || {}; + +    obj.aacPacketType = packetTypes[tag[0]]; +    obj.data = hexStringList(tag.subarray(1)); + +    return obj; +  }, +  parseAudioTag = function (tag, obj) { +    var +      formatTable = [ +        'Linear PCM, platform endian', +        'ADPCM', +        'MP3', +        'Linear PCM, little endian', +        'Nellymoser 16-kHz mono', +        'Nellymoser 8-kHz mono', +        'Nellymoser', +        'G.711 A-law logarithmic PCM', +        'G.711 mu-law logarithmic PCM', +        'reserved', +        'AAC', +        'Speex', +        'MP3 8-Khz', +        'Device-specific sound' +      ], +      samplingRateTable = [ +        '5.5-kHz', +        '11-kHz', +        '22-kHz', +        '44-kHz' +      ], +      soundFormat = (tag[0] & parseInt('11110000', 2)) >>> 4; + +    obj = obj || {}; + +    obj.soundFormat = formatTable[soundFormat]; +    obj.soundRate = samplingRateTable[(tag[0] & parseInt('00001100', 2)) >>> 2]; +    obj.soundSize = ((tag[0] & parseInt('00000010', 2)) >>> 1) ? '16-bit' : '8-bit'; +    obj.soundType = (tag[0] & parseInt('00000001', 2)) ? 'Stereo' : 'Mono'; + +    if (soundFormat === 10) { +      return parseAACTag(tag.subarray(1), obj); +    } +    return obj; +  }, +  parseGenericTag = function (tag) { +    return { +      tagType: tagTypes[tag[0]], +      dataSize: (tag[1] << 16) | (tag[2] << 8) | tag[3], +      timestamp: (tag[7] << 24) | (tag[4] << 16) | (tag[5] << 8) | tag[6], +      streamID: (tag[8] << 16) | (tag[9] << 8) | tag[10] +    }; +  }, +  inspectFlvTag = function (tag) { +    var header = parseGenericTag(tag); +    switch (tag[0]) { +      case 0x08: +        parseAudioTag(tag.subarray(11), header); +        break; +      case 0x09: +        parseVideoTag(tag.subarray(11), header); +        break; +      case 0x12: +    } +    return header; +  }, +  inspectFlv = function (bytes) { +    var i = 9, // header +        dataSize, +        parsedResults = [], +        tag; + +    // traverse the tags +    i += 4; // skip previous tag size +    while (i < bytes.byteLength) { +      dataSize = bytes[i + 1] << 16; +      dataSize |= bytes[i + 2] << 8; +      dataSize |= bytes[i + 3]; +      dataSize += 11; + +      tag = bytes.subarray(i, i + dataSize); +      parsedResults.push(inspectFlvTag(tag)); +      i += dataSize + 4; +    } +    return parsedResults; +  }, +  textifyFlv = function (flvTagArray) { +    return JSON.stringify(flvTagArray, null, 2); +  }; + +module.exports = { +  inspectTag: inspectFlvTag, +  inspect: inspectFlv, +  textify: textifyFlv +}; + +},{}],27:[function(require,module,exports){ +(function (global){ +'use strict'; + +var +  inspectMp4, +  textifyMp4, +  /** +   * Returns the string representation of an ASCII encoded four byte buffer. +   * @param buffer {Uint8Array} a four-byte buffer to translate +   * @return {string} the corresponding string +   */ +  parseType = function(buffer) { +    var result = ''; +    result += String.fromCharCode(buffer[0]); +    result += String.fromCharCode(buffer[1]); +    result += String.fromCharCode(buffer[2]); +    result += String.fromCharCode(buffer[3]); +    return result; +  }, +  parseMp4Date = function(seconds) { +    return new Date(seconds * 1000 - 2082844800000); +  }, +  parseSampleFlags = function(flags) { +    return { +      isLeading: (flags[0] & 0x0c) >>> 2, +      dependsOn: flags[0] & 0x03, +      isDependedOn: (flags[1] & 0xc0) >>> 6, +      hasRedundancy: (flags[1] & 0x30) >>> 4, +      paddingValue: (flags[1] & 0x0e) >>> 1, +      isNonSyncSample: flags[1] & 0x01, +      degradationPriority: (flags[2] << 8) | flags[3] +    }; +  }, +  nalParse = function(avcStream) { +    var +      avcView = new DataView(avcStream.buffer, avcStream.byteOffset, avcStream.byteLength), +      result = [], +      i, +      length; +    for (i = 0; i + 4 < avcStream.length; i += length) { +      length = avcView.getUint32(i); +      i += 4; + +      // bail if this doesn't appear to be an H264 stream +      if (length <= 0) { +        return; +      } + +      switch(avcStream[i] & 0x1F) { +      case 0x01: +        result.push('slice_layer_without_partitioning_rbsp'); +        break; +      case 0x05: +        result.push('slice_layer_without_partitioning_rbsp_idr'); +        break; +      case 0x06: +        result.push('sei_rbsp'); +        break; +      case 0x07: +        result.push('seq_parameter_set_rbsp'); +        break; +      case 0x08: +        result.push('pic_parameter_set_rbsp'); +        break; +      case 0x09: +        result.push('access_unit_delimiter_rbsp'); +        break; +      default: +        result.push(avcStream[i] & 0x1F); +        break; +      } +    } +    return result; +  }, + +  // registry of handlers for individual mp4 box types +  parse = { +    // codingname, not a first-class box type. stsd entries share the +    // same format as real boxes so the parsing infrastructure can be +    // shared +    avc1: function(data) { +      var view = new DataView(data.buffer, data.byteOffset, data.byteLength); +      return { +        dataReferenceIndex: view.getUint16(6), +        width:  view.getUint16(24), +        height: view.getUint16(26), +        horizresolution: view.getUint16(28) + (view.getUint16(30) / 16), +        vertresolution: view.getUint16(32) + (view.getUint16(34) / 16), +        frameCount: view.getUint16(40), +        depth: view.getUint16(74), +        config: inspectMp4(data.subarray(78, data.byteLength)) +      }; +    }, +    avcC: function(data) { +      var +        view = new DataView(data.buffer, data.byteOffset, data.byteLength), +        result = { +          configurationVersion: data[0], +          avcProfileIndication: data[1], +          profileCompatibility: data[2], +          avcLevelIndication: data[3], +          lengthSizeMinusOne: data[4] & 0x03, +          sps: [], +          pps: [] +        }, +        numOfSequenceParameterSets = data[5] & 0x1f, +        numOfPictureParameterSets, +        nalSize, +        offset, +        i; + +      // iterate past any SPSs +      offset = 6; +      for (i = 0; i < numOfSequenceParameterSets; i++) { +        nalSize = view.getUint16(offset); +        offset += 2; +        result.sps.push(new Uint8Array(data.subarray(offset, offset + nalSize))); +        offset += nalSize; +      } +      // iterate past any PPSs +      numOfPictureParameterSets = data[offset]; +      offset++; +      for (i = 0; i < numOfPictureParameterSets; i++) { +        nalSize = view.getUint16(offset); +        offset += 2; +        result.pps.push(new Uint8Array(data.subarray(offset, offset + nalSize))); +        offset += nalSize; +      } +      return result; +    }, +    btrt: function(data) { +      var view = new DataView(data.buffer, data.byteOffset, data.byteLength); +      return { +        bufferSizeDB: view.getUint32(0), +        maxBitrate: view.getUint32(4), +        avgBitrate: view.getUint32(8) +      }; +    }, +    esds: function(data) { +      return { +        version: data[0], +        flags: new Uint8Array(data.subarray(1, 4)), +        esId: (data[6] << 8) | data[7], +        streamPriority: data[8] & 0x1f, +        decoderConfig: { +          objectProfileIndication: data[11], +          streamType: (data[12] >>> 2) & 0x3f, +          bufferSize: (data[13] << 16) | (data[14] << 8) | data[15], +          maxBitrate: (data[16] << 24) | +            (data[17] << 16) | +            (data[18] <<  8) | +            data[19], +          avgBitrate: (data[20] << 24) | +            (data[21] << 16) | +            (data[22] <<  8) | +            data[23], +          decoderConfigDescriptor: { +            tag: data[24], +            length: data[25], +            audioObjectType: (data[26] >>> 3) & 0x1f, +            samplingFrequencyIndex: ((data[26] & 0x07) << 1) | +              ((data[27] >>> 7) & 0x01), +            channelConfiguration: (data[27] >>> 3) & 0x0f +          } +        } +      }; +    }, +    ftyp: function(data) { +      var +        view = new DataView(data.buffer, data.byteOffset, data.byteLength), +        result = { +          majorBrand: parseType(data.subarray(0, 4)), +          minorVersion: view.getUint32(4), +          compatibleBrands: [] +        }, +        i = 8; +      while (i < data.byteLength) { +        result.compatibleBrands.push(parseType(data.subarray(i, i + 4))); +        i += 4; +      } +      return result; +    }, +    dinf: function(data) { +      return { +        boxes: inspectMp4(data) +      }; +    }, +    dref: function(data) { +      return { +        version: data[0], +        flags: new Uint8Array(data.subarray(1, 4)), +        dataReferences: inspectMp4(data.subarray(8)) +      }; +    }, +    hdlr: function(data) { +      var +        view = new DataView(data.buffer, data.byteOffset, data.byteLength), +        language, +        result = { +          version: view.getUint8(0), +          flags: new Uint8Array(data.subarray(1, 4)), +          handlerType: parseType(data.subarray(8, 12)), +          name: '' +        }, +        i = 8; + +      // parse out the name field +      for (i = 24; i < data.byteLength; i++) { +        if (data[i] === 0x00) { +          // the name field is null-terminated +          i++; +          break; +        } +        result.name += String.fromCharCode(data[i]); +      } +      // decode UTF-8 to javascript's internal representation +      // see http://ecmanaut.blogspot.com/2006/07/encoding-decoding-utf8-in-javascript.html +      result.name = decodeURIComponent(global.escape(result.name)); + +      return result; +    }, +    mdat: function(data) { +      return { +        byteLength: data.byteLength, +        nals: nalParse(data) +      }; +    }, +    mdhd: function(data) { +      var +        view = new DataView(data.buffer, data.byteOffset, data.byteLength), +        i = 4, +        language, +        result = { +          version: view.getUint8(0), +          flags: new Uint8Array(data.subarray(1, 4)), +          language: '' +        }; +      if (result.version === 1) { +        i += 4; +        result.creationTime = parseMp4Date(view.getUint32(i)); // truncating top 4 bytes +        i += 8; +        result.modificationTime = parseMp4Date(view.getUint32(i)); // truncating top 4 bytes +        i += 4; +        result.timescale = view.getUint32(i); +        i += 8; +        result.duration = view.getUint32(i); // truncating top 4 bytes +      } else { +        result.creationTime = parseMp4Date(view.getUint32(i)); +        i += 4; +        result.modificationTime = parseMp4Date(view.getUint32(i)); +        i += 4; +        result.timescale = view.getUint32(i); +        i += 4; +        result.duration = view.getUint32(i); +      } +      i += 4; +      // language is stored as an ISO-639-2/T code in an array of three 5-bit fields +      // each field is the packed difference between its ASCII value and 0x60 +      language = view.getUint16(i); +      result.language += String.fromCharCode((language >> 10) + 0x60); +      result.language += String.fromCharCode(((language & 0x03c0) >> 5) + 0x60); +      result.language += String.fromCharCode((language & 0x1f) + 0x60); + +      return result; +    }, +    mdia: function(data) { +      return { +        boxes: inspectMp4(data) +      }; +    }, +    mfhd: function(data) { +      return { +        version: data[0], +        flags: new Uint8Array(data.subarray(1, 4)), +        sequenceNumber: (data[4] << 24) | +          (data[5] << 16) | +          (data[6] << 8) | +          (data[7]) +      }; +    }, +    minf: function(data) { +      return { +        boxes: inspectMp4(data) +      }; +    }, +    // codingname, not a first-class box type. stsd entries share the +    // same format as real boxes so the parsing infrastructure can be +    // shared +    mp4a: function(data) { +      var +        view = new DataView(data.buffer, data.byteOffset, data.byteLength), +        result = { +          // 6 bytes reserved +          dataReferenceIndex: view.getUint16(6), +          // 4 + 4 bytes reserved +          channelcount: view.getUint16(16), +          samplesize: view.getUint16(18), +          // 2 bytes pre_defined +          // 2 bytes reserved +          samplerate: view.getUint16(24) + (view.getUint16(26) / 65536) +        }; + +      // if there are more bytes to process, assume this is an ISO/IEC +      // 14496-14 MP4AudioSampleEntry and parse the ESDBox +      if (data.byteLength > 28) { +        result.streamDescriptor = inspectMp4(data.subarray(28))[0]; +      } +      return result; +    }, +    moof: function(data) { +      return { +        boxes: inspectMp4(data) +      }; +    }, +    moov: function(data) { +      return { +        boxes: inspectMp4(data) +      }; +    }, +    mvex: function(data) { +      return { +        boxes: inspectMp4(data) +      }; +    }, +    mvhd: function(data) { +      var +        view = new DataView(data.buffer, data.byteOffset, data.byteLength), +        i = 4, +        result = { +          version: view.getUint8(0), +          flags: new Uint8Array(data.subarray(1, 4)) +        }; + +      if (result.version === 1) { +        i += 4; +        result.creationTime = parseMp4Date(view.getUint32(i)); // truncating top 4 bytes +        i += 8; +        result.modificationTime = parseMp4Date(view.getUint32(i)); // truncating top 4 bytes +        i += 4; +        result.timescale = view.getUint32(i); +        i += 8; +        result.duration = view.getUint32(i); // truncating top 4 bytes +      } else { +        result.creationTime = parseMp4Date(view.getUint32(i)); +        i += 4; +        result.modificationTime = parseMp4Date(view.getUint32(i)); +        i += 4; +        result.timescale = view.getUint32(i); +        i += 4; +        result.duration = view.getUint32(i); +      } +      i += 4; + +      // convert fixed-point, base 16 back to a number +      result.rate = view.getUint16(i) + (view.getUint16(i + 2) / 16); +      i += 4; +      result.volume = view.getUint8(i) + (view.getUint8(i + 1) / 8); +      i += 2; +      i += 2; +      i += 2 * 4; +      result.matrix = new Uint32Array(data.subarray(i, i + (9 * 4))); +      i += 9 * 4; +      i += 6 * 4; +      result.nextTrackId = view.getUint32(i); +      return result; +    }, +    pdin: function(data) { +      var view = new DataView(data.buffer, data.byteOffset, data.byteLength); +      return { +        version: view.getUint8(0), +        flags: new Uint8Array(data.subarray(1, 4)), +        rate: view.getUint32(4), +        initialDelay: view.getUint32(8) +      }; +    }, +    sdtp: function(data) { +      var +        result = { +          version: data[0], +          flags: new Uint8Array(data.subarray(1, 4)), +          samples: [] +        }, i; + +      for (i = 4; i < data.byteLength; i++) { +        result.samples.push({ +          dependsOn: (data[i] & 0x30) >> 4, +          isDependedOn: (data[i] & 0x0c) >> 2, +          hasRedundancy: data[i] & 0x03 +        }); +      } +      return result; +    }, +    sidx: function(data) { +      var view = new DataView(data.buffer, data.byteOffset, data.byteLength), +          result = { +            version: data[0], +            flags: new Uint8Array(data.subarray(1, 4)), +            references: [], +            referenceId: view.getUint32(4), +            timescale: view.getUint32(8), +            earliestPresentationTime: view.getUint32(12), +            firstOffset: view.getUint32(16) +          }, +          referenceCount = view.getUint16(22), +          i; + +      for (i = 24; referenceCount; i += 12, referenceCount-- ) { +        result.references.push({ +          referenceType: (data[i] & 0x80) >>> 7, +          referencedSize: view.getUint32(i) & 0x7FFFFFFF, +          subsegmentDuration: view.getUint32(i + 4), +          startsWithSap: !!(data[i + 8] & 0x80), +          sapType: (data[i + 8] & 0x70) >>> 4, +          sapDeltaTime: view.getUint32(i + 8) & 0x0FFFFFFF +        }); +      } + +      return result; +    }, +    smhd: function(data) { +      return { +        version: data[0], +        flags: new Uint8Array(data.subarray(1, 4)), +        balance: data[4] + (data[5] / 256) +      }; +    }, +    stbl: function(data) { +      return { +        boxes: inspectMp4(data) +      }; +    }, +    stco: function(data) { +      var +        view = new DataView(data.buffer, data.byteOffset, data.byteLength), +        result = { +          version: data[0], +          flags: new Uint8Array(data.subarray(1, 4)), +          chunkOffsets: [] +        }, +        entryCount = view.getUint32(4), +        i; +      for (i = 8; entryCount; i += 4, entryCount--) { +        result.chunkOffsets.push(view.getUint32(i)); +      } +      return result; +    }, +    stsc: function(data) { +      var +        view = new DataView(data.buffer, data.byteOffset, data.byteLength), +        entryCount = view.getUint32(4), +        result = { +          version: data[0], +          flags: new Uint8Array(data.subarray(1, 4)), +          sampleToChunks: [] +        }, +        i; +      for (i = 8; entryCount; i += 12, entryCount--) { +        result.sampleToChunks.push({ +          firstChunk: view.getUint32(i), +          samplesPerChunk: view.getUint32(i + 4), +          sampleDescriptionIndex: view.getUint32(i + 8) +        }); +      } +      return result; +    }, +    stsd: function(data) { +      return { +        version: data[0], +        flags: new Uint8Array(data.subarray(1, 4)), +        sampleDescriptions: inspectMp4(data.subarray(8)) +      }; +    }, +    stsz: function(data) { +      var +        view = new DataView(data.buffer, data.byteOffset, data.byteLength), +        result = { +          version: data[0], +          flags: new Uint8Array(data.subarray(1, 4)), +          sampleSize: view.getUint32(4), +          entries: [] +        }, +        i; +      for (i = 12; i < data.byteLength; i += 4) { +        result.entries.push(view.getUint32(i)); +      } +      return result; +    }, +    stts: function(data) { +      var +        view = new DataView(data.buffer, data.byteOffset, data.byteLength), +        result = { +          version: data[0], +          flags: new Uint8Array(data.subarray(1, 4)), +          timeToSamples: [] +        }, +        entryCount = view.getUint32(4), +        i; + +      for (i = 8; entryCount; i += 8, entryCount--) { +        result.timeToSamples.push({ +          sampleCount: view.getUint32(i), +          sampleDelta: view.getUint32(i + 4) +        }); +      } +      return result; +    }, +    styp: function(data) { +      return parse.ftyp(data); +    }, +    tfdt: function(data) { +      return { +        version: data[0], +        flags: new Uint8Array(data.subarray(1, 4)), +        baseMediaDecodeTime: data[4] << 24 | data[5] << 16 | data[6] << 8 | data[7] +      }; +    }, +    tfhd: function(data) { +      var +        view = new DataView(data.buffer, data.byteOffset, data.byteLength), +        result = { +          version: data[0], +          flags: new Uint8Array(data.subarray(1, 4)), +          trackId: view.getUint32(4) +        }, +        baseDataOffsetPresent = result.flags[2] & 0x01, +        sampleDescriptionIndexPresent = result.flags[2] & 0x02, +        defaultSampleDurationPresent = result.flags[2] & 0x08, +        defaultSampleSizePresent = result.flags[2] & 0x10, +        defaultSampleFlagsPresent = result.flags[2] & 0x20, +        i; + +      i = 8; +      if (baseDataOffsetPresent) { +        i += 4; // truncate top 4 bytes +        result.baseDataOffset = view.getUint32(12); +        i += 4; +      } +      if (sampleDescriptionIndexPresent) { +        result.sampleDescriptionIndex = view.getUint32(i); +        i += 4; +      } +      if (defaultSampleDurationPresent) { +        result.defaultSampleDuration = view.getUint32(i); +        i += 4; +      } +      if (defaultSampleSizePresent) { +        result.defaultSampleSize = view.getUint32(i); +        i += 4; +      } +      if (defaultSampleFlagsPresent) { +        result.defaultSampleFlags = view.getUint32(i); +      } +      return result; +    }, +    tkhd: function(data) { +      var +        view = new DataView(data.buffer, data.byteOffset, data.byteLength), +        i = 4, +        result = { +          version: view.getUint8(0), +          flags: new Uint8Array(data.subarray(1, 4)), +        }; +      if (result.version === 1) { +        i += 4; +        result.creationTime = parseMp4Date(view.getUint32(i)); // truncating top 4 bytes +        i += 8; +        result.modificationTime = parseMp4Date(view.getUint32(i)); // truncating top 4 bytes +        i += 4; +        result.trackId = view.getUint32(i); +        i += 4; +        i += 8; +        result.duration = view.getUint32(i); // truncating top 4 bytes +      } else { +        result.creationTime = parseMp4Date(view.getUint32(i)); +        i += 4; +        result.modificationTime = parseMp4Date(view.getUint32(i)); +        i += 4; +        result.trackId = view.getUint32(i); +        i += 4; +        i += 4; +        result.duration = view.getUint32(i); +      } +      i += 4; +      i += 2 * 4; +      result.layer = view.getUint16(i); +      i += 2; +      result.alternateGroup = view.getUint16(i); +      i += 2; +      // convert fixed-point, base 16 back to a number +      result.volume = view.getUint8(i) + (view.getUint8(i + 1) / 8); +      i += 2; +      i += 2; +      result.matrix = new Uint32Array(data.subarray(i, i + (9 * 4))); +      i += 9 * 4; +      result.width = view.getUint16(i) + (view.getUint16(i + 2) / 16); +      i += 4; +      result.height = view.getUint16(i) + (view.getUint16(i + 2) / 16); +      return result; +    }, +    traf: function(data) { +      return { +        boxes: inspectMp4(data) +      }; +    }, +    trak: function(data) { +      return { +        boxes: inspectMp4(data) +      }; +    }, +    trex: function(data) { +      var view = new DataView(data.buffer, data.byteOffset, data.byteLength); +      return { +        version: data[0], +        flags: new Uint8Array(data.subarray(1, 4)), +        trackId: view.getUint32(4), +        defaultSampleDescriptionIndex: view.getUint32(8), +        defaultSampleDuration: view.getUint32(12), +        defaultSampleSize: view.getUint32(16), +        sampleDependsOn: data[20] & 0x03, +        sampleIsDependedOn: (data[21] & 0xc0) >> 6, +        sampleHasRedundancy: (data[21] & 0x30) >> 4, +        samplePaddingValue: (data[21] & 0x0e) >> 1, +        sampleIsDifferenceSample: !!(data[21] & 0x01), +        sampleDegradationPriority: view.getUint16(22) +      }; +    }, +    trun: function(data) { +      var +        result = { +          version: data[0], +          flags: new Uint8Array(data.subarray(1, 4)), +          samples: [] +        }, +        view = new DataView(data.buffer, data.byteOffset, data.byteLength), +        dataOffsetPresent = result.flags[2] & 0x01, +        firstSampleFlagsPresent = result.flags[2] & 0x04, +        sampleDurationPresent = result.flags[1] & 0x01, +        sampleSizePresent = result.flags[1] & 0x02, +        sampleFlagsPresent = result.flags[1] & 0x04, +        sampleCompositionTimeOffsetPresent = result.flags[1] & 0x08, +        sampleCount = view.getUint32(4), +        offset = 8, +        sample; + +      if (dataOffsetPresent) { +        result.dataOffset = view.getUint32(offset); +        offset += 4; +      } + +      if (firstSampleFlagsPresent && sampleCount) { +        sample = { +          flags: parseSampleFlags(data.subarray(offset, offset + 4)) +        }; +        offset += 4; +        if (sampleDurationPresent) { +          sample.duration = view.getUint32(offset); +          offset += 4; +        } +        if (sampleSizePresent) { +          sample.size = view.getUint32(offset); +          offset += 4; +        } +        if (sampleCompositionTimeOffsetPresent) { +          sample.compositionTimeOffset = view.getUint32(offset); +          offset += 4; +        } +        result.samples.push(sample); +        sampleCount--; +      } + +      while (sampleCount--) { +        sample = {}; +        if (sampleDurationPresent) { +          sample.duration = view.getUint32(offset); +          offset += 4; +        } +        if (sampleSizePresent) { +          sample.size = view.getUint32(offset); +          offset += 4; +        } +        if (sampleFlagsPresent) { +          sample.flags = parseSampleFlags(data.subarray(offset, offset + 4)); +          offset += 4; +        } +        if (sampleCompositionTimeOffsetPresent) { +          sample.compositionTimeOffset = view.getUint32(offset); +          offset += 4; +        } +        result.samples.push(sample); +      } +      return result; +    }, +    'url ': function(data) { +      return { +        version: data[0], +        flags: new Uint8Array(data.subarray(1, 4)) +      }; +    }, +    vmhd: function(data) { +      var view = new DataView(data.buffer, data.byteOffset, data.byteLength); +      return { +        version: data[0], +        flags: new Uint8Array(data.subarray(1, 4)), +        graphicsmode: view.getUint16(4), +        opcolor: new Uint16Array([view.getUint16(6), +                                  view.getUint16(8), +                                  view.getUint16(10)]) +      }; +    } +  }; + + +/** + * Return a javascript array of box objects parsed from an ISO base + * media file. + * @param data {Uint8Array} the binary data of the media to be inspected + * @return {array} a javascript array of potentially nested box objects + */ +inspectMp4 = function(data) { +  var +    i = 0, +    result = [], +    view, +    size, +    type, +    end, +    box; + +  // Convert data from Uint8Array to ArrayBuffer, to follow Dataview API +  var ab = new ArrayBuffer(data.length); +  var v = new Uint8Array(ab); +  for (var z = 0; z < data.length; ++z) { +      v[z] = data[z]; +  } +  view = new DataView(ab); + + +  while (i < data.byteLength) { +    // parse box data +    size = view.getUint32(i); +    type =  parseType(data.subarray(i + 4, i + 8)); +    end = size > 1 ? i + size : data.byteLength; + +    // parse type-specific data +    box = (parse[type] || function(data) { +      return { +        data: data +      }; +    })(data.subarray(i + 8, end)); +    box.size = size; +    box.type = type; + +    // store this box and move to the next +    result.push(box); +    i = end; +  } +  return result; +}; + +/** + * Returns a textual representation of the javascript represtentation + * of an MP4 file. You can use it as an alternative to + * JSON.stringify() to compare inspected MP4s. + * @param inspectedMp4 {array} the parsed array of boxes in an MP4 + * file + * @param depth {number} (optional) the number of ancestor boxes of + * the elements of inspectedMp4. Assumed to be zero if unspecified. + * @return {string} a text representation of the parsed MP4 + */ +textifyMp4 = function(inspectedMp4, depth) { +  var indent; +  depth = depth || 0; +  indent = new Array(depth * 2 + 1).join(' '); + +  // iterate over all the boxes +  return inspectedMp4.map(function(box, index) { + +    // list the box type first at the current indentation level +    return indent + box.type + '\n' + + +      // the type is already included and handle child boxes separately +      Object.keys(box).filter(function(key) { +        return key !== 'type' && key !== 'boxes'; + +      // output all the box properties +      }).map(function(key) { +        var prefix = indent + '  ' + key + ': ', +            value = box[key]; + +        // print out raw bytes as hexademical +        if (value instanceof Uint8Array || value instanceof Uint32Array) { +          var bytes = Array.prototype.slice.call(new Uint8Array(value.buffer, value.byteOffset, value.byteLength)) +              .map(function(byte) { +                return ' ' + ('00' + byte.toString(16)).slice(-2); +              }).join('').match(/.{1,24}/g); +          if (!bytes) { +            return prefix + '<>'; +          } +          if (bytes.length === 1) { +            return prefix + '<' + bytes.join('').slice(1) + '>'; +          } +          return prefix + '<\n' + bytes.map(function(line) { +            return indent + '  ' + line; +          }).join('\n') + '\n' + indent + '  >'; +        } + +        // stringify generic objects +        return prefix + +            JSON.stringify(value, null, 2) +              .split('\n').map(function(line, index) { +                if (index === 0) { +                  return line; +                } +                return indent + '  ' + line; +              }).join('\n'); +      }).join('\n') + + +    // recursively textify the child boxes +    (box.boxes ? '\n' + textifyMp4(box.boxes, depth + 1) : ''); +  }).join('\n'); +}; + +module.exports = { +  inspect: inspectMp4, +  textify: textifyMp4 +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],28:[function(require,module,exports){ +'use strict'; + +var ExpGolomb; + +/** + * Parser for exponential Golomb codes, a variable-bitwidth number encoding + * scheme used by h264. + */ +ExpGolomb = function(workingData) { +  var +    // the number of bytes left to examine in workingData +    workingBytesAvailable = workingData.byteLength, + +    // the current word being examined +    workingWord = 0, // :uint + +    // the number of bits left to examine in the current word +    workingBitsAvailable = 0; // :uint; + +  // ():uint +  this.length = function() { +    return (8 * workingBytesAvailable); +  }; + +  // ():uint +  this.bitsAvailable = function() { +    return (8 * workingBytesAvailable) + workingBitsAvailable; +  }; + +  // ():void +  this.loadWord = function() { +    var +      position = workingData.byteLength - workingBytesAvailable, +      workingBytes = new Uint8Array(4), +      availableBytes = Math.min(4, workingBytesAvailable); + +    if (availableBytes === 0) { +      throw new Error('no bytes available'); +    } + +    workingBytes.set(workingData.subarray(position, +                                          position + availableBytes)); +    workingWord = new DataView(workingBytes.buffer).getUint32(0); + +    // track the amount of workingData that has been processed +    workingBitsAvailable = availableBytes * 8; +    workingBytesAvailable -= availableBytes; +  }; + +  // (count:int):void +  this.skipBits = function(count) { +    var skipBytes; // :int +    if (workingBitsAvailable > count) { +      workingWord          <<= count; +      workingBitsAvailable -= count; +    } else { +      count -= workingBitsAvailable; +      skipBytes = Math.floor(count / 8); + +      count -= (skipBytes * 8); +      workingBytesAvailable -= skipBytes; + +      this.loadWord(); + +      workingWord <<= count; +      workingBitsAvailable -= count; +    } +  }; + +  // (size:int):uint +  this.readBits = function(size) { +    var +      bits = Math.min(workingBitsAvailable, size), // :uint +      valu = workingWord >>> (32 - bits); // :uint +    // if size > 31, handle error +    workingBitsAvailable -= bits; +    if (workingBitsAvailable > 0) { +      workingWord <<= bits; +    } else if (workingBytesAvailable > 0) { +      this.loadWord(); +    } + +    bits = size - bits; +    if (bits > 0) { +      return valu << bits | this.readBits(bits); +    } else { +      return valu; +    } +  }; + +  // ():uint +  this.skipLeadingZeros = function() { +    var leadingZeroCount; // :uint +    for (leadingZeroCount = 0 ; leadingZeroCount < workingBitsAvailable ; ++leadingZeroCount) { +      if (0 !== (workingWord & (0x80000000 >>> leadingZeroCount))) { +        // the first bit of working word is 1 +        workingWord <<= leadingZeroCount; +        workingBitsAvailable -= leadingZeroCount; +        return leadingZeroCount; +      } +    } + +    // we exhausted workingWord and still have not found a 1 +    this.loadWord(); +    return leadingZeroCount + this.skipLeadingZeros(); +  }; + +  // ():void +  this.skipUnsignedExpGolomb = function() { +    this.skipBits(1 + this.skipLeadingZeros()); +  }; + +  // ():void +  this.skipExpGolomb = function() { +    this.skipBits(1 + this.skipLeadingZeros()); +  }; + +  // ():uint +  this.readUnsignedExpGolomb = function() { +    var clz = this.skipLeadingZeros(); // :uint +    return this.readBits(clz + 1) - 1; +  }; + +  // ():int +  this.readExpGolomb = function() { +    var valu = this.readUnsignedExpGolomb(); // :int +    if (0x01 & valu) { +      // the number is odd if the low order bit is set +      return (1 + valu) >>> 1; // add 1 to make it even, and divide by 2 +    } else { +      return -1 * (valu >>> 1); // divide by two then make it negative +    } +  }; + +  // Some convenience functions +  // :Boolean +  this.readBoolean = function() { +    return 1 === this.readBits(1); +  }; + +  // ():int +  this.readUnsignedByte = function() { +    return this.readBits(8); +  }; + +  this.loadWord(); +}; + +module.exports = ExpGolomb; + +},{}],29:[function(require,module,exports){ +/** + * mux.js + * + * Copyright (c) 2014 Brightcove + * All rights reserved. + * + * A lightweight readable stream implemention that handles event dispatching. + * Objects that inherit from streams should call init in their constructors. + */ +'use strict'; + +var Stream = function() { +  this.init = function() { +    var listeners = {}; +    /** +     * Add a listener for a specified event type. +     * @param type {string} the event name +     * @param listener {function} the callback to be invoked when an event of +     * the specified type occurs +     */ +    this.on = function(type, listener) { +      if (!listeners[type]) { +        listeners[type] = []; +      } +      listeners[type].push(listener); +    }; +    /** +     * Remove a listener for a specified event type. +     * @param type {string} the event name +     * @param listener {function} a function previously registered for this +     * type of event through `on` +     */ +    this.off = function(type, listener) { +      var index; +      if (!listeners[type]) { +        return false; +      } +      index = listeners[type].indexOf(listener); +      listeners[type].splice(index, 1); +      return index > -1; +    }; +    /** +     * Trigger an event of the specified type on this stream. Any additional +     * arguments to this function are passed as parameters to event listeners. +     * @param type {string} the event name +     */ +    this.trigger = function(type) { +      var callbacks, i, length, args; +      callbacks = listeners[type]; +      if (!callbacks) { +        return; +      } +      // Slicing the arguments on every invocation of this method +      // can add a significant amount of overhead. Avoid the +      // intermediate object creation for the common case of a +      // single callback argument +      if (arguments.length === 2) { +        length = callbacks.length; +        for (i = 0; i < length; ++i) { +          callbacks[i].call(this, arguments[1]); +        } +      } else { +        args = []; +        i = arguments.length; +        for (i = 1; i < arguments.length; ++i) { +          args.push(arguments[i]); +        } +        length = callbacks.length; +        for (i = 0; i < length; ++i) { +          callbacks[i].apply(this, args); +        } +      } +    }; +    /** +     * Destroys the stream and cleans up. +     */ +    this.dispose = function() { +      listeners = {}; +    }; +  }; +}; + +/** + * Forwards all `data` events on this stream to the destination stream. The + * destination stream should provide a method `push` to receive the data + * events as they arrive. + * @param destination {stream} the stream that will receive all `data` events + * @param autoFlush {boolean} if false, we will not call `flush` on the destination + *                            when the current stream emits a 'done' event + * @see http://nodejs.org/api/stream.html#stream_readable_pipe_destination_options + */ +Stream.prototype.pipe = function(destination) { +  this.on('data', function(data) { +    destination.push(data); +  }); + +  this.on('done', function() { +    destination.flush(); +  }); + +  return destination; +}; + +// Default stream functions that are expected to be overridden to perform +// actual work. These are provided by the prototype as a sort of no-op +// implementation so that we don't have to check for their existence in the +// `pipe` function above. +Stream.prototype.push = function(data) { +  this.trigger('data', data); +}; + +Stream.prototype.flush = function() { +  this.trigger('done'); +}; + +module.exports = Stream; + +},{}],30:[function(require,module,exports){ +var bundleFn = arguments[3]; +var sources = arguments[4]; +var cache = arguments[5]; + +var stringify = JSON.stringify; + +module.exports = function (fn) { +    var keys = []; +    var wkey; +    var cacheKeys = Object.keys(cache); +     +    for (var i = 0, l = cacheKeys.length; i < l; i++) { +        var key = cacheKeys[i]; +        if (cache[key].exports === fn) { +            wkey = key; +            break; +        } +    } +     +    if (!wkey) { +        wkey = Math.floor(Math.pow(16, 8) * Math.random()).toString(16); +        var wcache = {}; +        for (var i = 0, l = cacheKeys.length; i < l; i++) { +            var key = cacheKeys[i]; +            wcache[key] = key; +        } +        sources[wkey] = [ +            Function(['require','module','exports'], '(' + fn + ')(self)'), +            wcache +        ]; +    } +    var skey = Math.floor(Math.pow(16, 8) * Math.random()).toString(16); +     +    var scache = {}; scache[wkey] = wkey; +    sources[skey] = [ +        Function(['require'],'require(' + stringify(wkey) + ')(self)'), +        scache +    ]; +     +    var src = '(' + bundleFn + ')({' +        + Object.keys(sources).map(function (key) { +            return stringify(key) + ':[' +                + sources[key][0] +                + ',' + stringify(sources[key][1]) + ']' +            ; +        }).join(',') +        + '},{},[' + stringify(skey) + '])' +    ; +     +    var URL = window.URL || window.webkitURL || window.mozURL || window.msURL; +     +    return new Worker(URL.createObjectURL( +        new Blob([src], { type: 'text/javascript' }) +    )); +}; + +},{}],31:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, '__esModule', { +  value: true +}); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +var _flashMediaSource = require('./flash-media-source'); + +var _flashMediaSource2 = _interopRequireDefault(_flashMediaSource); + +var _htmlMediaSource = require('./html-media-source'); + +var _htmlMediaSource2 = _interopRequireDefault(_htmlMediaSource); + +// import videojs from 'video.js'; +var videojs = window.videojs; +var urlCount = 0; + +// ------------ +// Media Source +// ------------ + +var defaults = { +  // how to determine the MediaSource implementation to use. There +  // are three available modes: +  // - auto: use native MediaSources where available and Flash +  //   everywhere else +  // - html5: always use native MediaSources +  // - flash: always use the Flash MediaSource polyfill +  mode: 'auto' +}; + +// store references to the media sources so they can be connected +// to a video element (a swf object) +videojs.mediaSources = {}; + +// provide a method for a swf object to notify JS that a media source is now open +var open = function open(msObjectURL, swfId) { +  var mediaSource = videojs.mediaSources[msObjectURL]; + +  if (mediaSource) { +    mediaSource.trigger({ type: 'sourceopen', swfId: swfId }); +  } else { +    throw new Error('Media Source not found (Video.js)'); +  } +}; + +// Check to see if the native MediaSource object exists and supports +// an MP4 container with both H.264 video and AAC-LC audio +var supportsNativeMediaSources = function supportsNativeMediaSources() { +  return !!window.MediaSource && window.MediaSource.isTypeSupported('video/mp4;codecs="avc1.4d400d,mp4a.40.2"'); +}; + +var MediaSource = function MediaSource(options) { +  var settings = videojs.mergeOptions(defaults, options); + +  this.MediaSource = { +    open: open, +    supportsNativeMediaSources: supportsNativeMediaSources +  }; + +  // determine whether HTML MediaSources should be used +  if (settings.mode === 'html5' || settings.mode === 'auto' && supportsNativeMediaSources()) { +    return new _htmlMediaSource2['default'](); +  } + +  // otherwise, emulate them through the SWF +  return new _flashMediaSource2['default'](); +}; + +exports.MediaSource = MediaSource; +MediaSource.open = open; +MediaSource.supportsNativeMediaSources = supportsNativeMediaSources; + +var URL = { +  createObjectURL: function createObjectURL(object) { +    var objectUrlPrefix = 'blob:vjs-media-source/'; +    var url = undefined; + +    // use the native MediaSource to generate an object URL +    if (object instanceof _htmlMediaSource2['default']) { +      url = window.URL.createObjectURL(object.mediaSource_); +      object.url_ = url; +      return url; +    } +    // if the object isn't an emulated MediaSource, delegate to the +    // native implementation +    if (!(object instanceof _flashMediaSource2['default'])) { +      url = window.URL.createObjectURL(object); +      object.url_ = url; +      return url; +    } + +    // build a URL that can be used to map back to the emulated +    // MediaSource +    url = objectUrlPrefix + urlCount; + +    urlCount++; + +    // setup the mapping back to object +    videojs.mediaSources[url] = object; + +    return url; +  } +}; + +exports.URL = URL; +videojs.MediaSource = MediaSource; +videojs.URL = URL; +},{"./flash-media-source":4,"./html-media-source":6}]},{},[31])(31) +});
\ No newline at end of file diff --git a/examples/tg16/web/stream.gathering.org/ng/README.md b/examples/tg16/web/stream.gathering.org/ng/README.md new file mode 100644 index 0000000..379dcb5 --- /dev/null +++ b/examples/tg16/web/stream.gathering.org/ng/README.md @@ -0,0 +1,5 @@ +# Copying + +The content of this directory is a pure copy-paste from Steinar H. +Gunderson's site 'stream.sesse.net'. It was used for testing purposes. +Copyrights/license for the respective owners might apply.
\ No newline at end of file diff --git a/examples/tg16/web/stream.gathering.org/ng/index.html b/examples/tg16/web/stream.gathering.org/ng/index.html new file mode 100644 index 0000000..ca523aa --- /dev/null +++ b/examples/tg16/web/stream.gathering.org/ng/index.html @@ -0,0 +1,410 @@ +<html> +  <head> +    <title>Steinar-style Videostream</title> +    <link rel="stylesheet" href="reset.css" type="text/css" media="screen"/> +    <link rel="stylesheet" href="style.css" type="text/css" media="screen"/> +    <link rel="stylesheet" href="media-queries.css" type="text/css" media="screen"/> +    <meta name="viewport" content="width=device-width, initial-scale=1" /> +  </head> +<body> +  <style> +    #videowrapper { +      margin-top: 0.5em; +      margin-left: auto; +      margin-right: auto; +      position: relative; +    } +    #video { +      max-height: 100%; +      max-width: 100%; +      width: auto; +      border: 1px solid black; +    } +    #loader { +      width: 100%; +      display: none; +      background: black; +      border: 1px solid black; +    } +    #castposter { +      width: 100%; +      display: none; +      background: black; +      border: 1px solid black; +    } +    #castposteri { +      margin-top: 0;  +      margin-bottom: 0; +      position: relative; +    } +    #castposteri:after { +      padding-top: 56.25%;  /* 16:9 aspect */ +      display: block; +      content: ''; +    } +    #castposterii { +      position: absolute; top: 0; bottom: 0; left: 0; right: 0; +      display: flex; +      flex-direction: column; +      justify-content: center; +    } +    #castposteriii { +      color: white; +    } +    #castposteriii p { margin-bottom: 0; } +    #streamchoice { +      margin-bottom: 0; +    } +  </style> + +<p id="streamchoice"></p> + +<div id="videowrapper"> +  <canvas id="loader"></canvas> +  <div id="castposter"><div id="castposteri"><div id="castposterii"><div id="castposteriii"><p id="nowcasting">Now casting to <strong id="casttarget"></strong></p><p><a href="javascript:stop_casting();">Stop casting</a></p></div></div></div></div> +  <video controls="controls" id="video" preload="none">  +    <source src="http://cubemap.tg16.gathering.org/event.mp4" type="video/mp4"> +  </video> +</div> + +<p style="margin-top: 1em; margin-bottom: 0">For use with a non-web player (e.g. VLC), use +  <a id="vlcurl"></a> (MP4) or <a id="vlchlsurl"></a> (HLS). +  Also <a href="https://chrome.google.com/webstore/detail/google-cast/boadgeojelhgndaghljhdicfkmllpafd" id="casturl">Google Cast</a> enabled.</p> + +<script type="text/javascript" src="https://www.gstatic.com/cv/js/sender/v1/cast_sender.js"></script> +<script> +<!-- + +// CONFIG + +var global_title = 'Scenesat live stream'; +var enable_loader = false; +var streams = [ +	{ +		name: "720p (2.0 Mbit/sec)", +		url: "http://cubemap.tg16.gathering.org/event.mp4", +		hlsurl: "http://stream.tg16.gathering.org/hls/event.m3u8", +		width: 1280, +		height: 720 +	}, +]; + +// GLOBALS + +var video = document.getElementById('video'); +var loader = document.getElementById('loader'); +var castposter = document.getElementById('castposter'); +var use_hls; + +// LOADER PICTURE + +// C64 font. Yes, mixing up Amiga and C64 is a sin, I know. +var text = [ +	' xx       xxxx     xx    xxxx     xxxx   xx  xx   xxxx                          ', +	' xx      xx  xx   xxxx   xx xx     xx    xxx xx  xx  xx                         ', +	' xx      xx  xx  xx  xx  xx  xx    xx    xxxxxx  xx                             ', +	' xx      xx  xx  xxxxxx  xx  xx    xx    xxxxxx  xx xxx                         ', +	' xx      xx  xx  xx  xx  xx  xx    xx    xx xxx  xx  xx                         ', +	' xx      xx  xx  xx  xx  xx xx     xx    xx  xx  xx  xx    xx      xx      xx   ', +	' xxxxxx   xxxx   xx  xx  xxxx     xxxx   xx  xx   xxxx     xx      xx      xx   ' +]; + +function raster() { +	var ctx = loader.getContext("2d"); +	var width = 352;  // overscan +	var height = 288;  // overscan +	var border_width = 18;  // really 16 +	var border_height = 24;  // really 16 +	var scalefac_w = loader.width/width; +	var scalefac_h = loader.height/height; + +	for (var y = 0; y < height; ++y) { +		var r = Math.round(Math.random() * 16).toString(16); +		var g = Math.round(Math.random() * 16).toString(16); +		var b = Math.round(Math.random() * 16).toString(16); +		ctx.fillStyle = '#' + r + r + g + g + b + b; + +		var start_y = Math.round(y * scalefac_h); +		var next_y = Math.round((y + 1) * scalefac_h); +		if (y < border_height || y >= height-border_height) { +			ctx.fillRect(0, start_y, loader.width, next_y - start_y); +		} else { +			ctx.fillRect(0, start_y, border_width * scalefac_w, next_y - start_y); +			ctx.fillRect((width - border_width) * scalefac_w, start_y, border_width * scalefac_w, next_y - start_y); +		} +	} + +	// Use the same scalefactor to get square pixels despite the changed aspect. +	var scalefac_ch = Math.round(scalefac_h); +	if (scalefac_ch < 1) scalefac_ch = 1; +	var offset_y = Math.round(loader.height / 2 - text.length * scalefac_ch / 2); +	var offset_x = Math.round(loader.width / 2 - text[0].length * scalefac_ch / 2); + +	ctx.fillStyle = '#ffffff'; +	for (var line = 0; line < text.length; ++line) { +		var start_y = Math.round(line * scalefac_ch) + offset_y; +		for (var ch = 0; ch < text[line].length; ++ch) { +			if (text[line].substr(ch, 1) === ' ') { +				continue; +			} + +			var start_x = Math.round(ch * scalefac_ch) + offset_x; +			ctx.fillRect(start_x, start_y, scalefac_ch, scalefac_ch); +		} +	} +} + +var loader_interval = null; + +function start_loader() { +	if (!enable_loader) return; + +	if (video.readyState === 4) { +		// No need to show a loader screen. This can happen because we call start_loader() +		// on the 'play' event, but we could already have enough buffering (especially on +		// mobile, where the play event is delayed), so we'd never get the 'canplay' event. +		console.log("Not starting loader screen, already enough to play"); +		return; +	} + +	console.log("STARTING LOADER SCREEN"); +	var ctx = loader.getContext("2d"); +	ctx.clearRect(0, 0, loader.width, loader.height); +	loader_interval = setInterval(raster, 1000/20);  // 20 fps ought to be enough for anyone + +	loader.style.display = 'inline'; +	video.style.display = 'none'; +	castposter.style.display = 'none'; +} + +function stop_loader() { +	if (!enable_loader) return; +	 +	console.log("STOPPING LOADER SCREEN"); +	clearInterval(loader_interval); + +	if (castposter.style.display !== 'block') { +		loader.style.display = 'none'; +		video.style.display = 'inline'; +		castposter.style.display = 'none'; +	} +} + +// GOOGLE CAST + +var current_media; +var session; + +function show_castposter() { +	stop_loader(); +	castposter.style.display = 'block'; +	loader.style.display = 'none'; +	video.style.display = 'none'; +} + +function hide_castposter() { +	castposter.style.display = 'none'; +	loader.style.display = 'none'; +	video.style.display = 'inline'; +} + +function stop_casting() { +	hide_castposter(); +	if (current_media) { +		var media = current_media; +		current_media = null; +		media.stop(); +	} +	if (session) { +		session.stop(); +		session = null; +	} +} + +function cast_current_video() { +	if (session === undefined || selected_stream === undefined) { +		return; +	} +	var title = streams[selected_stream].name; +	var url = streams[selected_stream].url; +	document.getElementById('casttarget').textContent = session.receiver.friendlyName; +	show_castposter(); +	video.pause(); +	// If we are already casting this, do nothing. +	if (current_media && current_media.media.contentId === url) { +		console.log("Already casting " + url + " to " + session.receiver.friendlyName + " (" + current_media.playerState + ")"); +		return; +	} +	if (current_media) { +		current_media = null;  // Signal to on_media_status_update. +	} +	var media_info = new chrome.cast.media.MediaInfo(url, "video/mp4"); +	media_info.metadata = new chrome.cast.media.GenericMediaMetadata(); +	media_info.metadata.title = global_title;  //  + ': ' + title; +	var request = new chrome.cast.media.LoadRequest(media_info); +	session.loadMedia(request, +		on_media_discovered.bind(this, 'loadMedia'), +		on_media_error); +} + +function on_media_status_update(active) { +	console.log("media status update: " + active); +	if (current_media !== null && !active) {  // If current_media is null, we intended to stop it, so don't bother. +		console.log("Unexpected end, quitting."); +		stop_casting(); +	} +} + +function on_media_discovered(how, media) { +	console.log("media discovered, how: " + how); +	console.log(media); +	current_media = media; +	cast_current_video(); +	media.addUpdateListener(on_media_status_update); +} + +function on_media_error(e) { +	console.log("media error:"); +	console.log(e); +} + +function on_session_status_update(active) { +	console.log("session status update: " + active); +	if (!active) { +		stop_casting(); +	} +} + +function session_listener(e) { +	session = e; +	if (session.media.length != 0) { +		on_media_discovered('onRequestSessionSuccess', session.media[0]); +	} +	session.addUpdateListener(on_session_status_update); +	cast_current_video(); +} + +function receiver_listener(e) { +//	console.log("receiver status: " + e); +} + +function on_cast_init_success() { +	document.getElementById('casturl').href = "javascript:chrome.cast.requestSession(session_listener)"; +} + +function on_cast_init_error() { +	console.log("google cast init error"); +} + +var initialize_cast_api = function() { +	var session_request = new chrome.cast.SessionRequest( +		chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID); +	var api_config = new chrome.cast.ApiConfig( +		session_request, +		session_listener, +		receiver_listener); +	chrome.cast.initialize(api_config, on_cast_init_success, on_cast_init_error); +}; + +window['__onGCastApiAvailable'] = function(loaded, error_info) { +	if (loaded) { +		initialize_cast_api(); +	} else { +		console.log(error_info); +	} +} + +// ACTUAL VIDEO STUFF + +if (navigator.userAgent.match(/iPad|iPhone|iPod/)) { +	// iOS claims to support video/mp4, but it doesn't work for these streams. +	// They play the HLS fine, though. +	use_hls = true; +} else if (navigator.userAgent.match(/Safari/) && !navigator.userAgent.match(/Chrome/)) { +	// Same with Safari (on OS X; not on Windows, but who cares about Safari on Windows). +	use_hls = true; +} else if (video.canPlayType('video/mp4') === '' && video.canPlayType('application/vnd.apple.mpegURL') !== '') { +	// Explicitly no MP4 support, but HLS support. +	use_hls = true; +} else { +	// Default to the normal stream (less latency, less muxer overhead). +	use_hls = false; +} + +var selected_stream; + +function update_stream_list() { +	var stream_html = ""; +	for (var i = 0; i < streams.length; ++i) { +		if (i != 0) { +			stream_html += " | "; +		} +		if (i == selected_stream) { +			stream_html += "<strong>" + streams[i].name + "</strong>"; +		} else { +			stream_html += "<a href=\"javascript:select_stream(" + i + ")\">" + streams[i].name + "</a>"; +		} +	} +	document.getElementById('streamchoice').innerHTML = stream_html; +} +function select_stream(s) { +	selected_stream = s; +	update_stream_list(); + +	var vlcurl = document.getElementById('vlcurl'); +	vlcurl.href = streams[s].url; +	vlcurl.innerHTML = streams[s].url; + +	var vlchlsurl = document.getElementById('vlchlsurl'); +	vlchlsurl.href = streams[s].hlsurl; +	vlchlsurl.innerHTML = streams[s].hlsurl; + +	var videowrapper = document.getElementById('videowrapper'); +	var video = document.getElementById('video'); +	var url = streams[s].url; +	if (use_hls && streams[s].hlsurl) { +		url = streams[s].hlsurl; +	} +	loader.width = streams[s].width; +	loader.height = streams[s].height; +	loader.style.maxWidth = streams[s].width + "px"; +	loader.style.maxHeight = streams[s].height + "px"; +	castposter.style.maxWidth = streams[s].width + "px"; +	castposter.style.maxHeight = streams[s].height + "px"; +	videowrapper.style.maxWidth = streams[s].width + "px"; +	videowrapper.style.maxHeight = streams[s].height + "px"; + +	if (session) { +		cast_current_video(); +	} else { +		video.src = url; +		video.load(); +		video.play(); +	} +} + +function setup_listeners() { +	video.addEventListener('pause', on_pause); +	video.addEventListener('play', start_loader); +	video.addEventListener('canplay', stop_loader); +	video.addEventListener('error', stop_loader); +} + +var on_pause; +on_pause = function(e) { +	// The only real way to make it reload without buffering up +	// the current content. +	video.outerHTML = video.outerHTML; +	video = document.getElementById('video'); +	setup_listeners();  // Since we have a new object. + +	stop_loader(); +}; + +setup_listeners(); +select_stream(0); + +//alert("MP4: " + video.canPlayType('video/mp4') + "; HLS: " + video.canPlayType('application/vnd.apple.mpegURL')); +--> +</script> + diff --git a/examples/tg16/web/stream.gathering.org/ng/media-queries.css b/examples/tg16/web/stream.gathering.org/ng/media-queries.css new file mode 100644 index 0000000..057b601 --- /dev/null +++ b/examples/tg16/web/stream.gathering.org/ng/media-queries.css @@ -0,0 +1 @@ +@media only screen and (min-width: 768px) and (max-width: 919px) {.container{width:728px;}#primary-content,.primary{width:728px;float:none;}#sidebar,.timeslot-thumb,#sponsors-full{display:none;}.widget_search #s{width:146px;}#talks,.the-talk{width:638px!important;}.talk-image{width:100px;}.talk-info{width:508px!important;}#talks-pager{padding:20px 0 25px!important;}#speakers-full .speaker:nth-child(3n){margin-right:20px;}.timeslot-desc,.timeslot-content{width:420px;}}@media only screen and (max-width: 767px) {#top .location,#top .identity{width:280px;}#navigation #primarymenu{display:none;}#navigation select.select-menu,#navigation span.select{display:block;}.container,#primary-content,.primary{width:280px;}#sidebar,#talks-full,#sponsors-full,.timeslot-thumb{display:none;}.location h2 span{line-height:26px;}.timeslot-desc{float:none;}.timeslot-desc,.timeslot-content{width:220px;}#footer p#credits,#footer p#footer-copy{float:none;}select.select-menu{width:230px!important;}span.select{width:230px;background:url(../images/selectbg_small.png) no-repeat center;}#commentform p label,#commentform p.comment-form-author span,#commentform p.comment-form-email span{position:relative;top:0;left:0;}}@media only screen and (min-width: 480px) and (max-width: 767px) {.container{width:440px;}#top .location,#top .identity{width:440px;}#navigation #primarymenu,.timeslot-thumb,#sidebar,#talks-full{display:none;}#navigation select.select-menu,#navigation span.select{display:block;}#primary-content,.primary{width:440px;}#speakers-full .speaker:nth-child(3n){margin-right:20px;}.timeslot-desc,.timeslot-content{width:380px;}select.select-menu{width:390px!important;}span.select{width:390px;background:url(../images/selectbg.png) no-repeat center;}}
\ No newline at end of file diff --git a/examples/tg16/web/stream.gathering.org/ng/reset.css b/examples/tg16/web/stream.gathering.org/ng/reset.css new file mode 100644 index 0000000..8ad64aa --- /dev/null +++ b/examples/tg16/web/stream.gathering.org/ng/reset.css @@ -0,0 +1 @@ +html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,figcaption,figure,footer,header,hgroup,menu,nav,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;outline:0;font-size:100%;font:inherit;vertical-align:baseline;}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block;}body{line-height:1;}ol,ul{list-style:none;}blockquote,q{quotes:none;}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none;}ins{text-decoration:none;}del{text-decoration:line-through;}table{border-collapse:collapse;border-spacing:0;}
\ No newline at end of file diff --git a/examples/tg16/web/stream.gathering.org/ng/style.css b/examples/tg16/web/stream.gathering.org/ng/style.css new file mode 100644 index 0000000..d169861 --- /dev/null +++ b/examples/tg16/web/stream.gathering.org/ng/style.css @@ -0,0 +1 @@ +.alignnone{margin:5px 20px 20px 0;}.aligncenter,div.aligncenter{display:block;margin:5px auto 5px auto;}.alignright{float:right;margin:5px 0 20px 20px;}.alignleft{float:left;margin:5px 20px 20px 0;}.aligncenter{display:block;margin:5px auto 5px auto;}a img.alignright{float:right;margin:5px 0 20px 20px;}a img.alignnone{margin:5px 20px 20px 0;}a img.alignleft{float:left;margin:5px 20px 20px 0;}a img.aligncenter{display:block;margin-left:auto;margin-right:auto}.wp-caption{background:#fff;border:1px solid #f0f0f0;max-width:96%;padding:5px 3px 10px;text-align:center;}.wp-caption.alignnone{margin:5px 20px 20px 0;}.wp-caption.alignleft{margin:5px 20px 20px 0;}.wp-caption.alignright{margin:5px 0 20px 20px;}.wp-caption img{border:0 none;height:auto;margin:0;max-width:98.5%;padding:0;width:auto;}.wp-caption p.wp-caption-text{font-size:11px;line-height:17px;margin:0;padding:0 4px 5px;}.sticky{}.gallery-caption{}.bypostauthor{}body{text-align:center;background:#fff;}.container{width:920px;margin:0 auto;text-align:left;position:relative;}#header{margin:0 auto;}#primary-content,.primary{width:640px;float:left;}#sidebar{width:240px;float:right;}img.scale-with-grid,img{max-width:100%;height:auto;}.clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden;}.clearfix{display:inline-block;}.clearfix{display:block;}.none{display:none;}body,input,textarea,button{font:13px/21px "Helvetica Neue",Helvetica,Arial,sans-serif;color:#787878;}h1,h2,h3,h4,h5,h6{margin:0 0 15px;color:#444;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:bold;}p{margin:0 0 20px;}h1{font-size:26px;line-height:30px;letter-spacing:-1px;}h2{font-size:24px;line-height:28px;letter-spacing:-1px;}h3{font-size:18px;line-height:24px;}h4{font-size:16px;line-height:22px;}h5{font-size:14px;line-height:20px;}h6{font-size:12px;line-height:18px;}a{text-decoration:none;-moz-transition:background-color .1s linear,color .1s linear;-webkit-transition:background-color .1s linear,color .1s linear;-o-transition:background-color .1s linear,color .1s linear;-ms-transition:background-color .1s linear,color .1s linear;transition:background-color .1s linear,color .1s linear;}a:link,a:visited{color:#777;border-bottom:1px dotted #a9a8a8;}a:hover{color:#333;}code,pre{font:12px/18px Consolas,"Andale Mono",Courier,"Courier New",monospace;background:#f7f7f8;}em{font-style:italic;}strong{font-weight:bold;}small{font-size:11px;}blockquote,blockquote p{font-size:17px;line-height:24px;color:#777;font-style:italic;}blockquote{margin:0 0 20px;padding:9px 20px 0 19px;border-left:1px solid #ddd;}blockquote cite{display:block;font-size:12px;color:#555;}blockquote cite:before{content:"\2014 \0020";}blockquote cite a,blockquote cite a:visited,blockquote cite a:visited{color:#555;}hr{border:solid #ddd;border-width:1px 0 0;clear:both;margin:10px 0 30px;height:0;}ul,ol{margin-bottom:20px;list-style-type:square;margin-left:20px;}ul{list-style:none outside;list-style-type:square;}ol{list-style:decimal;}ol,ul.square,ul.circle,ul.disc{margin-left:30px;}ul.square{list-style:square outside;list-style-type:square;}ul.circle{list-style:circle outside;}ul.disc{list-style:disc outside;}ul ul,ul ol,ol ol,ol ul{margin:4px 0 2px 15px;}ul ul li,ul ol li,ol ol li,ol ul li{margin-bottom:2px;}li{line-height:21px;margin-bottom:2px;}ul.large li{line-height:21px;}li p{line-height:21px;}#header-full{background:url(images/headerbg_2015.jpg) center no-repeat;-webkit-background-size:cover;-moz-background-size:cover;background-size:cover;padding:40px 0 0;margin-bottom:40px;}.page-template-homepage-php #header-full{margin-bottom:0px;padding:50px 0 0}#top{text-align:center;margin:0 0 40px;}.page-template-homepage-php #top{margin:0 0 50px;}#top .location,#top .identity{width:700px;margin:0 auto;}.identity img{display:block;margin:0 auto;}.page-template-homepage-php .identity img{margin:0 auto 20px;}.identity h1{color:#fff;font-size:44px;line-height:44px;font-weight:bold;letter-spacing:-1px;margin:0;}.identity h1 span{display:block;font-weight:normal;font-size:26px;}.location h2{color:#fff;font-size:36px;line-height:36px;margin:0 0 15px;text-shadow:0px 1px 1px #4a4a4a;}.location h2 span{display:block;font-size:18px;}.location p{color:#fff;text-shadow:0px 1px 1px #4a4a4a;font-size:16px;font-family:Helvetica,Arial,sans-serif;line-height:22px;margin:0 0 30px;}a.register-cta:link,a.register-cta:visited{display:inline-block;padding:8px 15px;color:#9c663a;text-shadow:0px 1px 1px #fee4b4;font-size:18px;font-family:Helvetica,Arial,sans-serif;letter-spacing:-1px;font-weight:bold;margin:0;border:1px solid #c99237;background:#fed76e;background-image:-webkit-gradient(linear,0% 0%,0% 100%,from(#fed76e),to(#feba4b));background-image:-webkit-linear-gradient(top,#fed76e,#feba4b);background-image:-moz-linear-gradient(top,#fed76e,#feba4b);background-image:-ms-linear-gradient(top,#fed76e,#feba4b);background-image:-o-linear-gradient(top,#fed76e,#feba4b);border-radius:3px;}a.register-cta:hover{background:#fed76e;}#navigation #mobilemenu,#navigation select.select-menu,#navigation span.select{display:none;}#navigation{margin:0;padding:15px 25px;z-index:30;background:url(images/nav_bg.png) 0 0 repeat;position:relative;}#navigation a{border:0;}#navigation ul{margin:0;}#navigation li{position:relative;margin:0;padding:0;list-style:none;display:inline-block;text-transform:uppercase;font-size:12px;}#navigation li a{display:block;margin:0 20px 0 0;padding:0;font-weight:bold;color:#fff;text-shadow:0px 1px 1px #000;border-bottom:3px solid transparent;}#navigation .nav-search{margin-right:25px;}#navigation li a:hover,#navigation li a:focus,#navigation li.current_page_item a{border-color:#808181;}#navigation li ul{z-index:9999;position:absolute;display:none;left:0;height:auto;margin:15px 0 0 0;padding:5px 15px;background:#eee;}#navigation li ul li{width:150px;float:left;border-bottom:1px solid #cfcfcf;}#navigation li ul li:last-child{border:none;}#navigation li ul li a{text-transform:none;color:#444;text-shadow:none;margin:0;padding:5px 0;text-decoration:none;text-align:left;border:none;}#navigation li ul li a:hover{color:#777;border:0;}#navigation li ul li ul,#navigation li ul li ul li ul{margin:-38px 0 0 165px;padding:5px 15px!important;background-color:#eee;}.page-template-homepage-php #navigation li ul{background:#fff;}.page-template-homepage-php #navigation li ul li{border-bottom:1px solid #dedede;}.page-template-homepage-php #navigation li ul li:last-child{border:none;}#mobile-container{position:relative;}select.select-menu{position:relative;z-index:10;height:43px!important;line-height:26px;}span.select{position:absolute;bottom:0px;left:0px;float:left;height:43px;line-height:43px;font-size:14px;font-weight:bold;text-shadow:1px 1px #fff;color:#444;text-indent:10px;z-index:1;}#footer-full{padding:20px 0;margin:20px 0 0;background:#333;}.page-template-homepage-php #footer-full{margin:0;}#footer p{margin:0;color:#e3e3e3;text-shadow:0px 1px 1px #000;font-size:11px;font-weight:bold;}#footer a{color:#ccc;}#footer a:hover{color:#8b8b8b;}#footer #credits{float:left;}#footer #footer-copy{float:right;}input,textarea{background:#f8f9fe;border:1px solid #e6e8ed;color:#abadb7;padding:9px 12px;width:230px;}textarea{width:96%;height:200px;}button,#submit{background:#333;color:#fff;cursor:pointer;padding:5px 10px;width:auto;border:none;-moz-transition:color .1s linear,background .1s linear,border-color .1s linear;-webkit-transition:color .1s linear,background .1s linear,border-color .1s linear;-ms-transition:color .1s linear,background .1s linear,border-color .1s linear;-o-transition:color .1s linear,background .1s linear,border-color .1s linear;transition:color .1s linear,background .1s linear,border-color .1s linear;}input:focus,textarea:focus{border-color:#d1d3d8;}#submit:hover,button:hover{background:#555;}#talks-full{width:100%;background:#eaeaea;padding:30px 0 0;}#talks-full>.container{text-align:center;}#talks,.the-talk{position:relative;width:810px;margin:0 auto;text-align:left;}.talk-image{width:100px;float:left;}.talk-info{width:680px;float:right;}.talk-info h2{margin:0 0 10px;font-size:22px;}.talk-info p{margin:0;}.talk-image img{display:block;}a.talk-nav{position:absolute;top:40px;width:14px;height:21px;text-indent:-9999px;border:0;}#next-talk{right:0;background:url(images/arrow-right.png) 0 0 no-repeat;}#prev-talk{left:0;background:url(images/arrow-left.png) 0 0 no-repeat;}#talks-pager{margin:0 auto;height:9px;overflow:hidden;padding:15px 0 25px;}#talks-pager a{display:inline-block;width:9px;height:9px;background:url('images/talks_nav_sprite.png') 0 0 no-repeat;text-indent:-9999px;border:0;margin:0 3px 0 0;}#talks-pager a.activeSlide{background-position:-11px 0;}#speakers-full{width:100%;background:#f1f1f1;padding:40px 0 20px;}.speaker{width:200px;float:left;margin:0 20px 20px 0;text-align:left;position:relative;}.speaker h4{position:absolute;bottom:0;left:0;font-size:12px;background:#101010;padding:5px 10px;color:#fff;margin:0;}.speaker img,.sponsor img{display:block;}#speakers-full .speaker:nth-child(3n){margin-right:0;}#story-full{padding:40px 0 20px;background:#eaeaea;}#sponsors-full{padding:15px 0 0;background:#f1f1f1;}.sponsor{width:207px;float:left;margin:0 20px 15px 0;}#sponsors-full .sponsor:nth-child(4n){margin-right:0;}.speaker-single-thumb img{display:block;float:left;margin:0 20px 5px 0;}#schedule{margin:0 0 40px;}#schedule .timeslot:first-child{border-top:1px solid #d9d9d9;}.timeslot{padding:30px 30px 10px;border-bottom:1px solid #d9d9d9;background:#fcfcfc;}.timeslot h2{margin:0 0 5px;}.timeslot-detail p{margin:0;}.timeslot-detail{width:220px;float:left;margin:0 0 20px;}.timeslot-desc{width:610px;float:right;}.timeslot-content{width:400px;float:left;}.timeslot-thumb{width:180px;float:right;height:140px;}.timeslot-thumb img{display:block;}.contactform li{margin:0 0 15px;padding:0;display:block;}.contactform li:last-child{margin:0;}.contactform li input{display:inline;}.contactform li label{display:inline;padding:0 0 0 10px;}p.email-error{padding:5px 10px;margin:0;background:#fe7550;display:inline-block;color:#fff;}p.email-sent{padding:5px 10px;margin:0;background:#fff666;display:inline-block;color:#222;}.contactform li span{font-size:11px;display:block;padding-top:5px;color:#fe7550;}.post{margin:0 0 40px;}#primary-content .post:last-child{margin:0;}span.the-format{height:36px;width:36px;display:inline-block;margin:0 10px 0 0;text-indent:-9999px;}span.format-standard{background:url(images/format_standard.jpg) 0 0 no-repeat;}span.format-video{background:url(images/format_video.jpg) 0 0 no-repeat;}.post-meta{margin:0;padding:5px 0 0;border-top:1px solid #d9dbe1;font-size:11px;}.post-thumbnail,.post-title{margin:0 0 20px;}.post-thumbnail img{display:block;}ol.commentlist{margin:0 0 40px;}.commentlist{list-style:none;margin:0 auto;}.commentlist>li.comment{margin:0 0 15px;position:relative;padding:20px 20px 20px 90px;background:#f9f9f9;}.commentlist .pingback{margin:0 0 15px;}.commentlist .children{list-style:none;margin:0;}.commentlist .children li.comment{position:relative;padding:20px 0 0 80px;}.commentlist .children li.comment .fn{display:block;}.comment-meta .fn{font-style:normal;}.comment-meta{color:#666;font-size:12px;margin:0 0 5px;}.commentlist .children li.comment .comment-meta{}.commentlist .children li.comment .comment-content{}.comment-meta a{font-weight:bold;}.commentlist .avatar{position:absolute;top:20px;left:20px;padding:0;}.commentlist>li:before{left:-21px;position:absolute;}.commentlist>li.pingback:before{content:'';}.commentlist .children .avatar{}a.comment-reply-link{display:inline-block;font-size:12px;}a.comment-reply-link>span{display:inline-block;position:relative;top:-1px;}#commentform p{position:relative;}#commentform p input{display:block;}#commentform p label{position:absolute;top:0;left:270px;}#commentform p.comment-form-author span,#commentform p.comment-form-email span{position:absolute;top:0;left:308px;}#commentform p.comment-form-comment label{display:none;}.widget{margin:0 0 30px;}#sidebar .widget:last-child{margin:0;}.widget ul{margin:0;}#twitter_update_list{margin:0;}#twitter_update_list li{margin:0 0 10px;}.widget_search #s{width:214px;}.widget_search form,.widget_search fieldset{margin:0;}
\ No newline at end of file  | 
