#!/bin/sh

iterate()
{
	"$@" GX - bin/opera@@{SUFFIX}
	"$@" GX - bin/opera@@{SUFFIX}-widget-manager
	if ! $repackage
	then
		"$@" GX - bin/uninstall-opera@@{SUFFIX}
	fi
	"$@" NF 5b282a5baa191968df9729b0c0611452 lib/opera@@{SUFFIX}/gstreamer/plugins/libgstoperamatroska.so
	"$@" NF f53a013af9d86e764f1cc1ecc9efee2f lib/opera@@{SUFFIX}/gstreamer/plugins/libgstoperavp8.so
	"$@" NF 82ffd3d3a30f5ff2f0d88f61f7c2070c lib/opera@@{SUFFIX}/liboperagtk2.so
	"$@" NF 31a199bfb4095089507ba376b89cd845 lib/opera@@{SUFFIX}/liboperakde4.so
	"$@" NX ba0e0a3441e4222d200b5884e2719234 lib/opera@@{SUFFIX}/opera@@{SUFFIX}
	"$@" NX eecf4e75c7090804e379449bdbb0308c lib/opera@@{SUFFIX}/operaplugincleaner
	"$@" NX 4f3f244befcc961981b411d855ad6da2 lib/opera@@{SUFFIX}/operapluginwrapper
	"$@" NF 0a8389b127c477aa2c55ee5d234473ca lib/opera@@{SUFFIX}/plugins/README
	"$@" PF 7391965010108b488c3bc526c8c7015c share/applications/opera@@{SUFFIX}-browser.desktop
	"$@" PF e78f45e2dc8098046f2a19e268031058 share/applications/opera@@{SUFFIX}-widget-installer.desktop
	"$@" PF 4d84c2febef83fd835ebf0d9f1f5d7df share/applications/opera@@{SUFFIX}-widget-manager.desktop
	"$@" NF 3214f080875748938ba060314b4f727d share/doc/opera@@{SUFFIX}/LGPL-2
	"$@" NF 6a6a8e020838b23406c81b19c1d46df6 share/doc/opera@@{SUFFIX}/LGPL-3
	"$@" NF bca0f32b4c9d40e1694f74feeefe42c2 share/doc/opera@@{SUFFIX}/LICENSE
	"$@" NF c9996f43d681b457f038bfc8efeef28a share/doc/opera@@{SUFFIX}/README.gstreamer
	"$@" NF 1cf2b768a82db57c169abd21d4f59f44 share/icons/hicolor/128x128/apps/opera@@{SUFFIX}-browser.png
	"$@" NF a8364412e16fd47998b58733e5a17ce6 share/icons/hicolor/128x128/apps/opera@@{SUFFIX}-widget-manager.png
	"$@" LL ../mimetypes/opera@@{SUFFIX}-widget.png share/icons/hicolor/128x128/apps/opera@@{SUFFIX}-widget.png
	"$@" NF 272f6ee8bbad4dc7029d81286ca4763e share/icons/hicolor/128x128/mimetypes/opera@@{SUFFIX}-extension.png
	"$@" NF e67a11f466869d45bda53bdc9dbf4820 share/icons/hicolor/128x128/mimetypes/opera@@{SUFFIX}-unite-application.png
	"$@" NF a2ae615b486e32092225f672d436d799 share/icons/hicolor/128x128/mimetypes/opera@@{SUFFIX}-widget.png
	"$@" NF a326c12783c80b70fb5bb29cc8c9e295 share/icons/hicolor/16x16/apps/opera@@{SUFFIX}-browser.png
	"$@" NF 63786cc7701894e2ed1cecad31f2f78e share/icons/hicolor/16x16/apps/opera@@{SUFFIX}-widget-manager.png
	"$@" LL ../mimetypes/opera@@{SUFFIX}-widget.png share/icons/hicolor/16x16/apps/opera@@{SUFFIX}-widget.png
	"$@" NF 87c5739d23920500c0815c88fcee8fb1 share/icons/hicolor/16x16/mimetypes/opera@@{SUFFIX}-extension.png
	"$@" NF 87a4cd99f0b1be41a1f6cfda5d57858a share/icons/hicolor/16x16/mimetypes/opera@@{SUFFIX}-unite-application.png
	"$@" NF 2bf861fe626ecd8480ed4f4b1d4f6086 share/icons/hicolor/16x16/mimetypes/opera@@{SUFFIX}-widget.png
	"$@" NF 9b21a5b9cc1b70f75b2605aaefcc72fd share/icons/hicolor/22x22/apps/opera@@{SUFFIX}-browser.png
	"$@" NF a385010faaf3f4474e179b3e31e7dc4c share/icons/hicolor/22x22/apps/opera@@{SUFFIX}-widget-manager.png
	"$@" LL ../mimetypes/opera@@{SUFFIX}-widget.png share/icons/hicolor/22x22/apps/opera@@{SUFFIX}-widget.png
	"$@" NF b1aadfffe1a2a4cbc0769505f130f462 share/icons/hicolor/22x22/mimetypes/opera@@{SUFFIX}-extension.png
	"$@" NF 96f5a6bb62249a96b18a21e2620dcaf5 share/icons/hicolor/22x22/mimetypes/opera@@{SUFFIX}-unite-application.png
	"$@" NF a9c3ccc0b72ab3af8abd7e340e3c9918 share/icons/hicolor/22x22/mimetypes/opera@@{SUFFIX}-widget.png
	"$@" NF 078dfc9dc21163e924751089d82ccdb2 share/icons/hicolor/24x24/apps/opera@@{SUFFIX}-browser.png
	"$@" NF 18da329a213cc3c61f44fe570d7fafe5 share/icons/hicolor/24x24/apps/opera@@{SUFFIX}-widget-manager.png
	"$@" LL ../mimetypes/opera@@{SUFFIX}-widget.png share/icons/hicolor/24x24/apps/opera@@{SUFFIX}-widget.png
	"$@" NF 70c1f737385a88bd616654ef23a187cc share/icons/hicolor/24x24/mimetypes/opera@@{SUFFIX}-extension.png
	"$@" NF 5de5a30096324d2fb9d48928d49912c3 share/icons/hicolor/24x24/mimetypes/opera@@{SUFFIX}-unite-application.png
	"$@" NF 588162e24d2bd73258d1bcecf62b7798 share/icons/hicolor/24x24/mimetypes/opera@@{SUFFIX}-widget.png
	"$@" NF d0da7112e4afc57c217293d5e2c8bd4b share/icons/hicolor/32x32/apps/opera@@{SUFFIX}-browser.png
	"$@" NF 7d64048682c5ea906e7ea281f4f12442 share/icons/hicolor/32x32/apps/opera@@{SUFFIX}-widget-manager.png
	"$@" LL ../mimetypes/opera@@{SUFFIX}-widget.png share/icons/hicolor/32x32/apps/opera@@{SUFFIX}-widget.png
	"$@" NF 852841f582f95cabb04992397fcc97ce share/icons/hicolor/32x32/mimetypes/opera@@{SUFFIX}-extension.png
	"$@" NF 7d861375334ea90d50f01bd84720f54e share/icons/hicolor/32x32/mimetypes/opera@@{SUFFIX}-unite-application.png
	"$@" NF 70b287cbe7a06465220692a15c9b9c13 share/icons/hicolor/32x32/mimetypes/opera@@{SUFFIX}-widget.png
	"$@" NF b8b7d45770e10341aea315221c4e6527 share/icons/hicolor/48x48/apps/opera@@{SUFFIX}-browser.png
	"$@" NF 6177835f1655a6a1441ebefe49f404ff share/icons/hicolor/48x48/apps/opera@@{SUFFIX}-widget-manager.png
	"$@" LL ../mimetypes/opera@@{SUFFIX}-widget.png share/icons/hicolor/48x48/apps/opera@@{SUFFIX}-widget.png
	"$@" NF 6b94ab4c0f32141dc889207cf3454c43 share/icons/hicolor/48x48/mimetypes/opera@@{SUFFIX}-extension.png
	"$@" NF 4e4670e50dc2cb2305abd6f526a82099 share/icons/hicolor/48x48/mimetypes/opera@@{SUFFIX}-unite-application.png
	"$@" NF 6471746ab02f81f91b2e08fc95db4aa4 share/icons/hicolor/48x48/mimetypes/opera@@{SUFFIX}-widget.png
	"$@" NF 2a2af008703af2465b9401ce4aa94686 share/icons/hicolor/scalable/apps/opera@@{SUFFIX}-browser.svg
	"$@" NF c8931b3343cbec2271105febad88ebfe share/icons/hicolor/scalable/apps/opera@@{SUFFIX}-widget-manager.svg
	"$@" LL ../mimetypes/opera@@{SUFFIX}-widget.svg share/icons/hicolor/scalable/apps/opera@@{SUFFIX}-widget.svg
	"$@" NF fe9c0b034eb8961565ee0c19efecc2cd share/icons/hicolor/scalable/mimetypes/opera@@{SUFFIX}-extension.svg
	"$@" NF 957818c8871b44f4b490a51f90134fa5 share/icons/hicolor/scalable/mimetypes/opera@@{SUFFIX}-unite-application.svg
	"$@" NF 71d72ea4945da5e60a0dcef66c28c319 share/icons/hicolor/scalable/mimetypes/opera@@{SUFFIX}-widget.svg
	"$@" PF 4b52f542ed40403f6c7ee39054959bc9 share/man/man1/opera@@{SUFFIX}-widget-manager.1.gz
	"$@" PF 78671f0d6fc432f84a3a2c23c1f558ef share/man/man1/opera@@{SUFFIX}.1.gz
	"$@" PF a960b3c9c3fabecd6805a4b954d893e1 share/mime/packages/opera@@{SUFFIX}-extension.xml
	"$@" PF c2c25c89d82f6eb553903a414bf51d31 share/mime/packages/opera@@{SUFFIX}-unite-application.xml
	"$@" PF df56e332a5c86b549caaad058b6928b6 share/mime/packages/opera@@{SUFFIX}-widget.xml
	"$@" NF ff81c338bc7fdab30a9885f855daa32e share/opera@@{SUFFIX}/defaults/bookmarks.adr
	"$@" NF 47c08d6696bb0c85d176ee56ff9bd2c7 share/opera@@{SUFFIX}/defaults/feedreaders.ini
	"$@" NF cd2c7135a4f91af45892a366bb5274c8 share/opera@@{SUFFIX}/defaults/filehandler.ini
	"$@" LL ../../doc/opera@@{SUFFIX}/LICENSE share/opera@@{SUFFIX}/defaults/license.txt
	"$@" NF f50581f58f5cd77c60b90c70cb67e9c7 share/opera@@{SUFFIX}/defaults/mailproviders.xml
	"$@" NF 0cb4ac60c1cf45bd08ec4d5d62da5c02 share/opera@@{SUFFIX}/defaults/plugin-ignore.ini
	"$@" NF cd8cf5830710469de260ddea3a27efa9 share/opera@@{SUFFIX}/defaults/pluginpath.ini
	"$@" NF e999946f28926b58438f5b93999dbada share/opera@@{SUFFIX}/defaults/public_domains.dat
	"$@" NF 7e2dfb9003ff2108bb08353c590abd43 share/opera@@{SUFFIX}/defaults/search.ini
	"$@" NF f23a821ac1106fef1430e5408ffb7dc2 share/opera@@{SUFFIX}/defaults/standard_speeddial.ini
	"$@" NF 2ecfa381c2006b9db4143f4da84954e5 share/opera@@{SUFFIX}/defaults/standard_trusted_repositories.ini
	"$@" NF 4753a835e647f47f1aa89205bad4fa43 share/opera@@{SUFFIX}/defaults/tips_metadata.ini
	"$@" NF 51e20bcd23e47edb6ff898439b9c7a7c share/opera@@{SUFFIX}/defaults/webmailproviders.ini
	"$@" NF 5978ba5d3fa29bb0f5b210cc8aad57e1 share/opera@@{SUFFIX}/defaults/xmlentities.ini
	"$@" NF 62aa163b7ef5a1a61ea93709041e2ba1 share/opera@@{SUFFIX}/encoding.bin
	"$@" NF 54f1497ac9cc9ffa04d52213be260559 share/opera@@{SUFFIX}/extra/missingplugin.svg
	"$@" NF 17700f8a405a78dc1afdf69679a3f85b share/opera@@{SUFFIX}/extra/missingpluginhover.svg
	"$@" NF 0547d144b3de633887a8657de0ee1779 share/opera@@{SUFFIX}/extra/svg-mo.dat
	"$@" NF 6ee58550670e206dc93e1b31a7da2c9f share/opera@@{SUFFIX}/extra/svg-mobd.dat
	"$@" NF 0ab7eca84c071dac25dafd3b4569d80f share/opera@@{SUFFIX}/extra/svg-sa.dat
	"$@" NF 23059c42a43dceded9122d8834aa43fe share/opera@@{SUFFIX}/extra/svg-sabd.dat
	"$@" NF f3747a59108df781e04305b1bee29574 share/opera@@{SUFFIX}/extra/svg-se.dat
	"$@" NF bcdb530c010ed72fe6096d46366c57f5 share/opera@@{SUFFIX}/extra/svg-sebd.dat
	"$@" NF 37161690baf05081e7f5c7e6a0e6d269 share/opera@@{SUFFIX}/files.sig
	"$@" NF 07691ad17c3fd15036b85c5fa416f34d share/opera@@{SUFFIX}/files_old.sig
	"$@" NF 7a2db2de5211ab16a6712e4168d17ec7 share/opera@@{SUFFIX}/html40_entities.dtd
	"$@" NF 87803f0514670b96c73d4043cd3568c8 share/opera@@{SUFFIX}/lngcode.txt
	"$@" NF c3e25290be023752979fc653596a5531 share/opera@@{SUFFIX}/locale/af/af.lng
	"$@" NF 2ac333ff58cd05596d08b6a2ea341612 share/opera@@{SUFFIX}/locale/az/az.lng
	"$@" NF 9f1cef31b857b786acd36efbd7512967 share/opera@@{SUFFIX}/locale/be/be.lng
	"$@" NF f3b0d66b27a2af20344b296d878dff73 share/opera@@{SUFFIX}/locale/be/bookmarks.adr
	"$@" NF 50fd62213b52df5f20e2d0c2daa6f457 share/opera@@{SUFFIX}/locale/be/search.ini
	"$@" NF 324f0d2a02a2858e669625804d24fd43 share/opera@@{SUFFIX}/locale/be/standard_speeddial.ini
	"$@" NF 1ca88eb627be30a19f53a8e70ec13f0f share/opera@@{SUFFIX}/locale/bg/bg.lng
	"$@" NF 77402fbf37f4f166c6a24d6f3f4e14c3 share/opera@@{SUFFIX}/locale/bg/bookmarks.adr
	"$@" NF 386a0d33ca0fd0e6a93d75a343a626a2 share/opera@@{SUFFIX}/locale/bg/search.ini
	"$@" NF d082f46f2c03a09d9c64b65e31928d89 share/opera@@{SUFFIX}/locale/bg/standard_speeddial.ini
	"$@" NF feaae8f8e4d771407daeacbbb8171192 share/opera@@{SUFFIX}/locale/bn/bn.lng
	"$@" NF 989da8628434c22dec6adb9aa3fe4037 share/opera@@{SUFFIX}/locale/cs/bookmarks.adr
	"$@" NF d10465cf5bbd6b66d4ead679a7e0bb9b share/opera@@{SUFFIX}/locale/cs/cs.lng
	"$@" NF 896c9798ad8a0ae13d2e297eb343e6b6 share/opera@@{SUFFIX}/locale/cs/search.ini
	"$@" NF 8c1841a82933b8a4bb9ccad135fa74a6 share/opera@@{SUFFIX}/locale/cs/standard_speeddial.ini
	"$@" NF ecb1cb41fea2a8cb59d7ecbc037d0dfe share/opera@@{SUFFIX}/locale/da/da.lng
	"$@" NF 80774644879efebb8bdce0921d4a871b share/opera@@{SUFFIX}/locale/de/bookmarks.adr
	"$@" NF ae423c108ed8d1d168f0e72803c0cfe4 share/opera@@{SUFFIX}/locale/de/de.lng
	"$@" NF 2a07de49f1b12d3babcba2730d183071 share/opera@@{SUFFIX}/locale/de/search.ini
	"$@" NF 8fb50d1acc5746b0ae2a07f49da57a1a share/opera@@{SUFFIX}/locale/de/standard_speeddial.ini
	"$@" NF 16d03c7df575d8f383a759329ac955a8 share/opera@@{SUFFIX}/locale/el/el.lng
	"$@" NF 0ac2accce34aea6934ffd78161bb74f9 share/opera@@{SUFFIX}/locale/en-GB/bookmarks.adr
	"$@" NF 9a286164e3c1d28fd2606ba4588f50b8 share/opera@@{SUFFIX}/locale/en-GB/en-GB.lng
	"$@" NF 2aaa018896a77e1cf12a93d7a9772481 share/opera@@{SUFFIX}/locale/en-GB/search.ini
	"$@" NF a3c0c20a340e432abd716a032c700889 share/opera@@{SUFFIX}/locale/en-GB/standard_speeddial.ini
	"$@" NF 2ee73a404129d2ef7c136911c8f196b8 share/opera@@{SUFFIX}/locale/en/bookmarks.adr
	"$@" NF 39e66ed13ab7572a7c2fc42b638db728 share/opera@@{SUFFIX}/locale/en/en.lng
	"$@" NF 647fd8163f6fcddbcd307f9191f72ec6 share/opera@@{SUFFIX}/locale/en/en.zip
	"$@" LL ../../../doc/opera@@{SUFFIX}/LICENSE share/opera@@{SUFFIX}/locale/en/license.txt
	"$@" NF 43acdd92dc5f31785e15425128b59f0d share/opera@@{SUFFIX}/locale/en/search.ini
	"$@" NF ddbdd8325b4c79384f5675a991449c0a share/opera@@{SUFFIX}/locale/en/standard_speeddial.ini
	"$@" NF dc28c1b46cbd16eea3562677c9352824 share/opera@@{SUFFIX}/locale/es-ES/bookmarks.adr
	"$@" NF 8d41ef3f8def48dfafd7764a754f6bdf share/opera@@{SUFFIX}/locale/es-ES/es-ES.lng
	"$@" NF 9b5ccc7c41ada182a40d490732320e9f share/opera@@{SUFFIX}/locale/es-ES/search.ini
	"$@" NF f5e84e7a51e59a8ffdb42fc054432d42 share/opera@@{SUFFIX}/locale/es-ES/standard_speeddial.ini
	"$@" NF 9be202152f5aae3789386fec194f0e1e share/opera@@{SUFFIX}/locale/es-LA/es-LA.lng
	"$@" NF 45ba65f8a046e19e0910e4d6c5bbc194 share/opera@@{SUFFIX}/locale/et/et.lng
	"$@" NF aac1e6ee272a670b16ac60efdb2f827f share/opera@@{SUFFIX}/locale/fi/fi.lng
	"$@" NF e35909d15026be5de93cd0143146067e share/opera@@{SUFFIX}/locale/fr-CA/fr-CA.lng
	"$@" NF dde6425f3f39380da8fd152bbd353286 share/opera@@{SUFFIX}/locale/fr/bookmarks.adr
	"$@" NF dafaed3af3078190a6993f4098956afd share/opera@@{SUFFIX}/locale/fr/fr.lng
	"$@" NF 1bf1e7f27aa1b4be7d5d7faaf6ec23e4 share/opera@@{SUFFIX}/locale/fr/search.ini
	"$@" NF 1100e2aa4d0735efdb8da67d2788d18e share/opera@@{SUFFIX}/locale/fr/standard_speeddial.ini
	"$@" NF 722f45578e4f0824b5375dc047c5d317 share/opera@@{SUFFIX}/locale/fy/fy.lng
	"$@" NF 2f4941ed45b106683b1fadc6becbe984 share/opera@@{SUFFIX}/locale/gd/gd.lng
	"$@" NF 01fc0b726b2fe6e0887b868b5edd0759 share/opera@@{SUFFIX}/locale/hi/hi.lng
	"$@" NF 79ef109f9f0f2bc711adbc9483f51ef2 share/opera@@{SUFFIX}/locale/hr/hr.lng
	"$@" NF 10564e5735de9ab20a8448c8f59755de share/opera@@{SUFFIX}/locale/hu/bookmarks.adr
	"$@" NF 531e221613b9f52f1d228d1b18303513 share/opera@@{SUFFIX}/locale/hu/hu.lng
	"$@" NF c93db4ec3d8bc5e433f5b565e9b7e2a7 share/opera@@{SUFFIX}/locale/hu/search.ini
	"$@" NF d082f46f2c03a09d9c64b65e31928d89 share/opera@@{SUFFIX}/locale/hu/standard_speeddial.ini
	"$@" NF eff1d080516c72dc80242d642ad4c270 share/opera@@{SUFFIX}/locale/id/bookmarks.adr
	"$@" NF d329dc62cbad96834b1d44453d0c7bd1 share/opera@@{SUFFIX}/locale/id/id.lng
	"$@" NF c583297d97b1c9ecd0f44093273fc41f share/opera@@{SUFFIX}/locale/id/search.ini
	"$@" NF 334502e5cc03d8585ae1ef2e080f2117 share/opera@@{SUFFIX}/locale/id/standard_speeddial.ini
	"$@" NF 2b3853c7443593306fde5797ccc63267 share/opera@@{SUFFIX}/locale/it/bookmarks.adr
	"$@" NF 2edeff7282303b862fbf2fdff44fbe6a share/opera@@{SUFFIX}/locale/it/it.lng
	"$@" NF ad9392e7151f7438398ce0dfafb63416 share/opera@@{SUFFIX}/locale/it/search.ini
	"$@" NF 7f7fdc62ca0e1898665a94771adfc940 share/opera@@{SUFFIX}/locale/it/standard_speeddial.ini
	"$@" NF 98520d9035d6ffeb3615b197e931fb11 share/opera@@{SUFFIX}/locale/ja/bookmarks.adr
	"$@" NF 5eb7f3eae0cdafce949c6cdf945fd7ab share/opera@@{SUFFIX}/locale/ja/ja.lng
	"$@" NF 208ae4f0b15c478960677d002840f5d1 share/opera@@{SUFFIX}/locale/ja/search.ini
	"$@" NF 1090fb75990f06e82e7a3899714e56f8 share/opera@@{SUFFIX}/locale/ja/standard_speeddial.ini
	"$@" NF f673b2cc37ae313867903375032c9fa2 share/opera@@{SUFFIX}/locale/ka/ka.lng
	"$@" NF 37611997928572392a7333f27ad38a22 share/opera@@{SUFFIX}/locale/ko/ko.lng
	"$@" NF d989cc8b638918a0ee8579dba022af99 share/opera@@{SUFFIX}/locale/lt/lt.lng
	"$@" NF 6e8f61d42222dae7f9d77c24967d7fed share/opera@@{SUFFIX}/locale/me/me.lng
	"$@" NF c286f3da08d3fc69f28eaea3873c01fd share/opera@@{SUFFIX}/locale/mk/mk.lng
	"$@" NF 6cb03c336070ff96773752c5e7c1b822 share/opera@@{SUFFIX}/locale/ms/ms.lng
	"$@" NF 6cb9cf209f1c7970743a94ce1a8e8af7 share/opera@@{SUFFIX}/locale/nb/bookmarks.adr
	"$@" NF 74e9b165c8865cc85bb55638bb44e82f share/opera@@{SUFFIX}/locale/nb/nb.lng
	"$@" NF 66853028030c9f469af1bf43f0db2ff9 share/opera@@{SUFFIX}/locale/nb/search.ini
	"$@" NF 74649477f8dc18d4262bf9ca2b22c787 share/opera@@{SUFFIX}/locale/nb/standard_speeddial.ini
	"$@" NF e5a08c70dc467ede651369b92424a71e share/opera@@{SUFFIX}/locale/nl/nl.lng
	"$@" NF f26438f1ee1c2e304d681a4458571b7e share/opera@@{SUFFIX}/locale/nn/nn.lng
	"$@" NF 3e26f526e053c48eefb5fa50371a7a2f share/opera@@{SUFFIX}/locale/pa/pa.lng
	"$@" NF 91460841c0028205cb7d5178636c1a7d share/opera@@{SUFFIX}/locale/pl/bookmarks.adr
	"$@" NF f1a62d427e8272e367579ece9a122647 share/opera@@{SUFFIX}/locale/pl/pl.lng
	"$@" NF 05072cd4b35d3525b355efe407266ae1 share/opera@@{SUFFIX}/locale/pl/search.ini
	"$@" NF b125677ea8d3e5f6c8d58c0a7b1e6615 share/opera@@{SUFFIX}/locale/pl/standard_speeddial.ini
	"$@" NF dc86a8f0424ad5bc01074fb9b7909c7f share/opera@@{SUFFIX}/locale/pt-BR/bookmarks.adr
	"$@" NF 19504f88159d3312fc626c4eeb05d473 share/opera@@{SUFFIX}/locale/pt-BR/pt-BR.lng
	"$@" NF 735e92563cf8af0ffe0844b42613124f share/opera@@{SUFFIX}/locale/pt-BR/search.ini
	"$@" NF 5e650a9ee361bf9c8b63d2fdf902b40f share/opera@@{SUFFIX}/locale/pt-BR/standard_speeddial.ini
	"$@" NF f1213c958a32c3ba9e4d995456c6cbb4 share/opera@@{SUFFIX}/locale/pt/pt.lng
	"$@" NF 72e53e715741d0d9cdfc85475e7afc8e share/opera@@{SUFFIX}/locale/ro/bookmarks.adr
	"$@" NF 0beafce5de2834bbd41276f6c222647e share/opera@@{SUFFIX}/locale/ro/ro.lng
	"$@" NF d5554623efe7b8f18c5df2611d694f89 share/opera@@{SUFFIX}/locale/ro/search.ini
	"$@" NF 5d773698e94ff53e9ebf0006860a4957 share/opera@@{SUFFIX}/locale/ro/standard_speeddial.ini
	"$@" NF 00f370918811a2d12ec1498f816cd6e8 share/opera@@{SUFFIX}/locale/ru/bookmarks.adr
	"$@" NF 16aaad9c5e81e2f8c36e18f9ac8a49ab share/opera@@{SUFFIX}/locale/ru/ru.lng
	"$@" NF e39c19acbf60feb318828e03f800ecd3 share/opera@@{SUFFIX}/locale/ru/search.ini
	"$@" NF bb7cfb5309b07f8294bb4cd483e87f18 share/opera@@{SUFFIX}/locale/ru/standard_speeddial.ini
	"$@" NF eb757b8236d2ed3caa218ed6407852fa share/opera@@{SUFFIX}/locale/sk/bookmarks.adr
	"$@" NF 12e7ff0fc746fcd0fbea771c232ede1a share/opera@@{SUFFIX}/locale/sk/search.ini
	"$@" NF eb82dfb3a150ff322f5fbcedab79cd82 share/opera@@{SUFFIX}/locale/sk/sk.lng
	"$@" NF 1f54ab81587a58c140279a25d27b94e9 share/opera@@{SUFFIX}/locale/sk/standard_speeddial.ini
	"$@" NF 18011449ccace5cd2dc2676daa737f77 share/opera@@{SUFFIX}/locale/sr/bookmarks.adr
	"$@" NF 92ae450dfc4c1c2e638b9fe64edf1b30 share/opera@@{SUFFIX}/locale/sr/search.ini
	"$@" NF 99eae8a55b1d6594e0be8e9e7bac0e14 share/opera@@{SUFFIX}/locale/sr/sr.lng
	"$@" NF d082f46f2c03a09d9c64b65e31928d89 share/opera@@{SUFFIX}/locale/sr/standard_speeddial.ini
	"$@" NF 04666fcc0506a47b839d500658b4226c share/opera@@{SUFFIX}/locale/sv/sv.lng
	"$@" NF ba1a702a50688d2069f266e13e562858 share/opera@@{SUFFIX}/locale/sw/sw.lng
	"$@" NF f550bff7231fccb106118e91932b3780 share/opera@@{SUFFIX}/locale/ta/ta.lng
	"$@" NF 6d5c83f9adfa57ef6824ad61f1595bbe share/opera@@{SUFFIX}/locale/te/te.lng
	"$@" NF 3513b6862d82f4e6d2ba9dcb315706f7 share/opera@@{SUFFIX}/locale/th/th.lng
	"$@" NF 9151a10ce7f01ce32a2a8ccc0f7e00a8 share/opera@@{SUFFIX}/locale/tl/tl.lng
	"$@" NF 2994dae8f12209ddc0dcd5bde5780ec7 share/opera@@{SUFFIX}/locale/tr/tr.lng
	"$@" NF 4b917241b012015371ad4e03894b82f1 share/opera@@{SUFFIX}/locale/uk/bookmarks.adr
	"$@" NF eb28ab20f2c15dd89109d34ca0903ff4 share/opera@@{SUFFIX}/locale/uk/search.ini
	"$@" NF 26538b623ec4df046e127411a2d946cc share/opera@@{SUFFIX}/locale/uk/standard_speeddial.ini
	"$@" NF c7f3f6295d6e9461ce98f57f684c57e2 share/opera@@{SUFFIX}/locale/uk/uk.lng
	"$@" NF 8da2975633a2af670f74b2642a44e391 share/opera@@{SUFFIX}/locale/uz/uz.lng
	"$@" NF 809d66c50f517f793194703deeeb42aa share/opera@@{SUFFIX}/locale/vi/vi.lng
	"$@" NF 1d6f913109152f139e47ca9ba7dbf6ef share/opera@@{SUFFIX}/locale/zh-cn/bookmarks.adr
	"$@" NF 1bba967e73c183150bc1d883fa6d4e50 share/opera@@{SUFFIX}/locale/zh-cn/browser.js
	"$@" NF f3a3db0e429c75484d3811eb04ae06f7 share/opera@@{SUFFIX}/locale/zh-cn/search.ini
	"$@" NF 52394efda8425173a039778bf5c186a4 share/opera@@{SUFFIX}/locale/zh-cn/standard_speeddial.ini
	"$@" NF d44fc31b4c96a97d22624455874764ca share/opera@@{SUFFIX}/locale/zh-cn/turbosettings.xml
	"$@" NF 0b08e3b2401eb02151b4848959343a4f share/opera@@{SUFFIX}/locale/zh-cn/zh-cn.lng
	"$@" NF 1bba967e73c183150bc1d883fa6d4e50 share/opera@@{SUFFIX}/locale/zh-tw/browser.js
	"$@" NF 6ea2f98cdeaf54c398dca24aea9df644 share/opera@@{SUFFIX}/locale/zh-tw/turbosettings.xml
	"$@" NF c208339a3b8d4ed69c1b073fd7283869 share/opera@@{SUFFIX}/locale/zh-tw/zh-tw.lng
	"$@" NF 7865ecd185ce7d99b8abd79f7259be64 share/opera@@{SUFFIX}/locale/zu/zu.lng
	"$@" NF 1c24deadc6027ab1b7a2cecc7b7c00e4 share/opera@@{SUFFIX}/mathml.dtd
	"$@" NF bb72a97ab8a3625433aea62b9f849153 share/opera@@{SUFFIX}/package-id.ini
	"$@" NF 66260c0e83d550b9c410904ec72ab595 share/opera@@{SUFFIX}/skin/standard_skin.zip
	"$@" NF 66181c6855a4c290647dcf15b1a3e76c share/opera@@{SUFFIX}/skin/unix_skin.zip
	"$@" NF 06820e6bdd581b0a257e5e2648360457 share/opera@@{SUFFIX}/styles/about.css
	"$@" NF 4fb7c857524fd084449266fc70e9288b share/opera@@{SUFFIX}/styles/cache.css
	"$@" NF 51738dfa1066ca0716150a59929fd4ce share/opera@@{SUFFIX}/styles/certinfo.css
	"$@" NF 0d566809dfbdef98fa576f318880643c share/opera@@{SUFFIX}/styles/config.css
	"$@" NF 27249ef2c359eb6f207179f0c76214ba share/opera@@{SUFFIX}/styles/contentblock.css
	"$@" NF 3ddaf96398ae99245f6b83e6dc676ac6 share/opera@@{SUFFIX}/styles/debug.css
	"$@" NF 1368beca272c8937ad41f2864d635b95 share/opera@@{SUFFIX}/styles/dir.css
	"$@" NF afab4c8b2626ef4e23c666551fd9e98d share/opera@@{SUFFIX}/styles/error.css
	"$@" NF e9ee42b5c66c0367c1e02a1eeeca0776 share/opera@@{SUFFIX}/styles/history.css
	"$@" NF 12f94765c2868077a49c69c47a546e43 share/opera@@{SUFFIX}/styles/im.css
	"$@" NF df384ae925f810d03d84dadf96b5beb1 share/opera@@{SUFFIX}/styles/image.css
	"$@" NF 73b840d67b16a49008b7ed3d6aec38ab share/opera@@{SUFFIX}/styles/images/Opera_256x256.png
	"$@" NF 35a8968b802c4cd66f70631354cec397 share/opera@@{SUFFIX}/styles/images/bar.png
	"$@" NF 2e242ddd9c9679c584b0fe430b8948cf share/opera@@{SUFFIX}/styles/images/bkgd-rev.png
	"$@" NF a67a7a2cc37ababd70825acc77bf3480 share/opera@@{SUFFIX}/styles/images/bkgd.png
	"$@" NF 4289d8db3e0ad4cb825d34c969c142ff share/opera@@{SUFFIX}/styles/images/bullet.png
	"$@" NF cbdbb7032558dae6b04f7691c4b8a41a share/opera@@{SUFFIX}/styles/images/center.png
	"$@" NF 669d3ef423184869eb24b29500330b06 share/opera@@{SUFFIX}/styles/images/container.png
	"$@" NF f23a4e2a5c1a0db7cfac79d1e7b9ba23 share/opera@@{SUFFIX}/styles/images/corner.png
	"$@" NF b423f4149c868ccf56a15abb83228f09 share/opera@@{SUFFIX}/styles/images/customize.gif
	"$@" NF e715da6d7e5314261bdff2942251718a share/opera@@{SUFFIX}/styles/images/darkBox.png
	"$@" NF 0dfc37ae4404b4a6811e4876db6b7df1 share/opera@@{SUFFIX}/styles/images/defaultFavicon.png
	"$@" NF 71bbdb354d7e65183c86aa36a27ddd1d share/opera@@{SUFFIX}/styles/images/error.png
	"$@" NF ac4455a870ed9d5365377c2d9566240c share/opera@@{SUFFIX}/styles/images/file.png
	"$@" NF 86c6ac920bd2fbb7f538ff79d4e34395 share/opera@@{SUFFIX}/styles/images/flag.png
	"$@" NF c6ee6872a8d70dbec976edd11bdaf986 share/opera@@{SUFFIX}/styles/images/folder.png
	"$@" NF 9b0cdaf9d7623041bd00e576cd1733f1 share/opera@@{SUFFIX}/styles/images/hanger.png
	"$@" NF cd587bbd0135bcc9820de23318dbae41 share/opera@@{SUFFIX}/styles/images/header-expanded.png
	"$@" NF 533450be6ceff816d25c53fb8ca93cad share/opera@@{SUFFIX}/styles/images/header.png
	"$@" NF 807f783c2043b0ff19471459cb52ad14 share/opera@@{SUFFIX}/styles/images/opera-icon-red.png
	"$@" NF a2ed905f3862c320bb43e866721729d7 share/opera@@{SUFFIX}/styles/images/opera.png
	"$@" NF dbb6d41150a244186500718eda971047 share/opera@@{SUFFIX}/styles/images/page-bot.png
	"$@" NF d58ef56a726e38bb51da5adf696153fc share/opera@@{SUFFIX}/styles/images/red_center.png
	"$@" NF 3c6c895d2519efa918b4b3f46a897b67 share/opera@@{SUFFIX}/styles/images/red_left.png
	"$@" NF a28ba91c09ea75605d727e9bde7771b1 share/opera@@{SUFFIX}/styles/images/red_right.png
	"$@" NF a0c5f8a66f4e25f5d16ca1696a8f2e03 share/opera@@{SUFFIX}/styles/images/root.png
	"$@" NF 4aecd261352501fa1bad2c5e608df556 share/opera@@{SUFFIX}/styles/images/search.png
	"$@" NF b641cb9df6a4065ec64e6aac43cd5bc8 share/opera@@{SUFFIX}/styles/images/section.png
	"$@" NF 62f6287d95fafa0a8c56287e41760f33 share/opera@@{SUFFIX}/styles/images/smartGroup.png
	"$@" NF 2dab1572b02772c7a4fea3b5d51d1c48 share/opera@@{SUFFIX}/styles/images/tooltiptail.png
	"$@" NF f4dbc8a7b78e98448ad509bedca371c1 share/opera@@{SUFFIX}/styles/images/top.png
	"$@" NF 074b5a2c5386b6f2d12d172aa2f349fa share/opera@@{SUFFIX}/styles/images/warning.png
	"$@" NF 3a1f01c2181d79f8d579d26ca8c36b0e share/opera@@{SUFFIX}/styles/info.css
	"$@" NF e521ce4a0e2ad947af55f2fec3e30aee share/opera@@{SUFFIX}/styles/m2_welcome_message.mbs
	"$@" NF 3d3c384bea83a19f7a2fb4016f176c78 share/opera@@{SUFFIX}/styles/mail.css
	"$@" NF 6e52a17228623ab69e767b8973c73789 share/opera@@{SUFFIX}/styles/mathml.css
	"$@" NF 73ca40c23f00b5b8045c1db8e0d2310f share/opera@@{SUFFIX}/styles/media.css
	"$@" NF e7dd3d81e0088d5fb56df880226cc7e1 share/opera@@{SUFFIX}/styles/message.css
	"$@" NF 219262c87d6e4419a2b28144db75a2bd share/opera@@{SUFFIX}/styles/mime.css
	"$@" NF edd149e46e531e7a7ae8b2054d230fda share/opera@@{SUFFIX}/styles/opera.css
	"$@" NF 4d67e81faa56e84bafb8aebcef53910e share/opera@@{SUFFIX}/styles/plugins.css
	"$@" NF 71c1d1774ad2319d1684854cdf5f94c2 share/opera@@{SUFFIX}/styles/private.css
	"$@" NF 028e214f2f1147678d50afc03705e7de share/opera@@{SUFFIX}/styles/search.css
	"$@" NF 4a1307a5ef44ce6f2699910d68353aaf share/opera@@{SUFFIX}/styles/unstyledxml.css
	"$@" NF 6a2bd73028a115965e2a8ab449f076b1 share/opera@@{SUFFIX}/styles/user/accessibility.css
	"$@" NF 7101c2b43e206a4fea3ea3b2e9d1ec65 share/opera@@{SUFFIX}/styles/user/altdebugger.css
	"$@" NF a1b473182a7f49252ca4092d4e3771e8 share/opera@@{SUFFIX}/styles/user/classid.css
	"$@" NF 2310bf5751a3d7e559a475146c15e133 share/opera@@{SUFFIX}/styles/user/contrastbw.css
	"$@" NF 49f63ead21d30601ec7d78ee8a979e05 share/opera@@{SUFFIX}/styles/user/contrastwb.css
	"$@" NF 0ddf795df3cd231834e7d3949f79d14b share/opera@@{SUFFIX}/styles/user/disablebreaks.css
	"$@" NF 290e3323bb78b510f46778cffc3e496a share/opera@@{SUFFIX}/styles/user/disablefloats.css
	"$@" NF b1213dc22de822fbbb54de3a77fde99b share/opera@@{SUFFIX}/styles/user/disableforms.css
	"$@" NF 2d4d9ffb55079767b3def4fcec29b011 share/opera@@{SUFFIX}/styles/user/disablepositioning.css
	"$@" NF b9c59fe668608bfc3c63c50f65b8298e share/opera@@{SUFFIX}/styles/user/disabletables.css
	"$@" NF a78c1f82b4028dc6cb954562b5f54833 share/opera@@{SUFFIX}/styles/user/outline.css
	"$@" NF abc6abdf3fb4a7b891e473c35f26d8ad share/opera@@{SUFFIX}/styles/user/structureblock.css
	"$@" NF ab99f3deacaa836a440f47851b2bb5ca share/opera@@{SUFFIX}/styles/user/structureinline.css
	"$@" NF 10a7bccf3d937c7a2b7efd79c3071cdc share/opera@@{SUFFIX}/styles/user/structuretables.css
	"$@" NF 8a0cb82243918b7952f09f29d0d7f104 share/opera@@{SUFFIX}/styles/user/tablelayout.css
	"$@" NF 30987a9dba87e7c4b2a56afabff5b9f5 share/opera@@{SUFFIX}/styles/user/toc.css
	"$@" NF 5bc2043c215012644e301fccbfb0397a share/opera@@{SUFFIX}/styles/warning.css
	"$@" NF ee2ba35cb25cd442fc337847f0bb1619 share/opera@@{SUFFIX}/styles/webfeeds.html
	"$@" NF 8defb38ae4be49c955602c8d991d17cf share/opera@@{SUFFIX}/styles/webstorage.css
	"$@" NF 71b60351587330f9c6f9121895b34a17 share/opera@@{SUFFIX}/styles/wml.css
	"$@" NF ee226d83079fc9f1e53547b2a2f693de share/opera@@{SUFFIX}/ui/dialog.ini
	"$@" NF 4ccfbe9fb3ab8f8b2369823d42347b23 share/opera@@{SUFFIX}/ui/dialogs.yaml
	"$@" NF e6d9e74c12773dcf0d6a195b6b9e78ac share/opera@@{SUFFIX}/ui/fastforward.ini
	"$@" NF b496b3607e249190ee1ab6d3552d5c98 share/opera@@{SUFFIX}/ui/standard_keyboard.ini
	"$@" NF 86ee1a655caeada4954683369ced4b36 share/opera@@{SUFFIX}/ui/standard_keyboard_compat.ini
	"$@" NF 285914a35bd05f5902ba72b7f6dd72b5 share/opera@@{SUFFIX}/ui/standard_menu.ini
	"$@" NF 942a4cf89c0f15f20744dc91431876fd share/opera@@{SUFFIX}/ui/standard_mouse.ini
	"$@" NF afb2bf3489997b57b2ab549932b6347f share/opera@@{SUFFIX}/ui/standard_toolbar.ini
	"$@" NF fbd82b508a6639d3b32b162d07a8b8ad share/opera@@{SUFFIX}/ui/unix_keyboard.ini
	"$@" NF 2582bbe99fd59bc9600bea534d9aca01 share/opera@@{SUFFIX}/unite/fileSharing.ua
	"$@" NF 001472b78c36decda5f4eff5c417f9d2 share/opera@@{SUFFIX}/unite/fridge.ua
	"$@" NF 121c6321dd8af47fcea6eece1eae0b44 share/opera@@{SUFFIX}/unite/home.ua
	"$@" NF 15ae482142b3e8f012bfc59d3566b2eb share/opera@@{SUFFIX}/unite/mediaPlayer.ua
	"$@" NF c3863342eff61ca0effdf1103e570009 share/opera@@{SUFFIX}/unite/messenger.ua
	"$@" NF 873ac282e50d3d356589f9e315352910 share/opera@@{SUFFIX}/unite/photoSharing.ua
	"$@" NF 1f2274a5069ff11d28f7d204ef40004b share/opera@@{SUFFIX}/unite/webserver.ua
}

available()
{
	command -v "$1" >/dev/null 2>&1
}

finalize_desktop()
{
	# Menu entries
	if available update-desktop-database
	then
		update-desktop-database $PREFIX/share/applications
	fi

	# MIME associations
	if available update-mime-database
	then
		mkdir -p $PREFIX/share/mime/packages
		update-mime-database $PREFIX/share/mime
		! rmdir $PREFIX/share/mime/packages >/dev/null 2>&1
	fi

	# Icons
	touch -c $PREFIX/share/icons/hicolor
	if available update-icon-caches
	then
		update-icon-caches -tq $PREFIX/share/icons/hicolor
	elif available gtk-update-icon-cache
	then
		gtk-update-icon-cache -tq $PREFIX/share/icons/hicolor
	fi
}

make_tempdir()
{
	if [ -z "$tempdir" ]
	then
		tempdir=$(mktemp -d -t opera-install.XXXXXXXX)
		if [ $? != 0 ]
		then
			ui_error "Cannot create a temporary directory, please set TMPDIR correctly"
		fi
	fi
}

cleanup()
{
	res=$?
	trap - 0
	if [ $res -gt 0 ] && $need_rollback
	then
		rollback
	fi
	if $need_ui_cleanup
	then
		ui_cleanup
	fi
	if [ -n "$tempdir" ]
	then
		rm -rf $tempdir
	fi
	exit $res
}

ui_widget()
{
	local width height
	message=$(
		echo "$2"
		if [ -n "$3" ]
		then
			echo
			cat "$3"
		fi
		if [ -n "$4" ]
		then
			echo
			echo "$4"
		fi
	)
	case $driver in
		dialog|whiptail)
			width=72
			if available fmt
			then
				message=$(echo "$message" | fmt -w $((width - 4)))
				height=$(($(echo "$message" | wc -l) + 6))
				if [ $1 = inputbox ]
				then
					height=$((height + 2))
				fi
			else
				height=20
			fi
			;;
	esac
	need_ui_cleanup=true
	case $driver in
		dialog|whiptail)
			exec 4>&1
			answer=$($driver --title "$windowtitle" --clear --$1 "$message" $height $width 2>&1 1>&4)
			res=$?
			exec 4>&-
			;;
		plain)
			echo
			echo "$message"
			case $1 in
				yesno)
					while true
					do
						read -p 'Please enter Y or N: ' answer
						case "$answer" in
							y*|Y*)
								res=0
								break
								;;
							n*|N*)
								res=1
								break
								;;
						esac
					done
					;;
				inputbox)
					read -p '>' answer
					;;
				msgbox|infobox)
					res=0
					;;
			esac
			;;
	esac
	need_ui_cleanup=false
	return $res
}

ui_info()
{
	ui_widget infobox "$@"
}

ui_message()
{
	ui_widget msgbox "$@"
}

ui_warn()
{
	ui_widget yesno "$1" "$2" 'Continue?' || exit
}

ui_error()
{
	ui_widget msgbox "$1" "$2" 'Installation aborted.'
	exit 1
}

ui_input()
{
	ui_widget inputbox "$1" "$2" ''
}

ui_menu()
{
	local text width height
	case $driver in
		dialog|whiptail)
			width=72
			if available fmt
			then
				height=$(($(echo "$text" | fmt -w $((width - 4)) | wc -l) + $# / 2 + 8))
			else
				height=20
			fi
			;;
	esac
	need_ui_cleanup=true
	case $driver in
		dialog|whiptail)
			text=$1
			shift
			exec 4>&1
			answer=$($driver --menu "$text" $height $width $(($# / 2)) "$@" 2>&1 1>&4) || exit
			res=$?
			exec 4>&-
			;;
		plain)
			echo
			echo "$1"
			shift
			(
				n=1
				while [ -n "$1" ]
				do
					echo "[$n] $2"
					n=$((n + 1))
					shift 2
				done
			)
			while true
			do
				read -p "Your choice: " answer
				if echo "$answer" | grep -q '^[0-9][0-9]*$' && [ $((answer >= 1)) = 1 ] && [ $((answer <= $# / 2)) = 1 ]
				then
					break
				fi
				echo "Please enter an integer between 1 and $(($# / 2))."
			done
			shift $((answer * 2 - 2))
			answer="$1"
			res=0
			;;
	esac
	need_ui_cleanup=false
	return $res
}

ui_progress_begin()
{
	if ! $talk
	then
		return
	fi
	if [ -z "$progress_max" ]
	then
		progress_max=$(iterate echo | wc -l)
	fi
	progress_cur=0
	need_ui_cleanup=true
	case $driver in
		whiptail)
			make_tempdir
			mkfifo $tempdir/gauge
			whiptail --gauge "$1" 0 72 0 <$tempdir/gauge &
			exec 3>$tempdir/gauge
			;;
		*)
			echo
			echo -n "$1"
			;;
	esac
}

ui_progress_advance()
{
	if ! $talk
	then
		return
	fi
	progress_cur=$((progress_cur + 1))
	case $driver in
		whiptail)
			echo $((progress_cur * 100 / progress_max)) >&3
			;;
		*)
			echo -n '.'
			;;
	esac
}

ui_progress_end()
{
	if ! $talk
	then
		return
	fi
	case $driver in
		whiptail)
			exec 3>&-
			rm $tempdir/gauge
			;;
		*)
			echo 'done'
			;;
	esac
	need_ui_cleanup=false
}

ui_cleanup()
{
	case $driver in
		dialog)
			exec 4>&-
			dialog --clear
			stty sane
			clear
			;;
		whiptail)
			exec 3>&- 4>&-
			stty sane
			clear
			;;
		plain)
			echo
			;;
	esac
}

ui_init()
{
	if [ -z "$TERM" -o "$TERM" = dumb ]
	then
		driver=plain
	elif available whiptail
	then
		driver=whiptail
	elif available dialog
	then
		driver=dialog
	else
		driver=plain
	fi
	answer=''
	progress_max=''
	windowtitle="$1"
}

common_init()
{
	interactive=true
	talk=true
	force=false
	need_rollback=false
	need_ui_cleanup=false
	repackage=false
	tempdir=''

	trap cleanup 0 INT QUIT TERM
}

common_opt()
{
	case "$1" in
		--text)
			driver=plain
			;;
		--unattended)
			interactive=false
			driver=plain
			;;
		--quiet)
			talk=false
			interactive=false
			driver=plain
			;;
		--force)
			force=true
			;;
		*)
			return 1
	esac
}

# EOF_COMMON

version()
{
	ui_message "Opera Next - Fast and secure web browser and Internet suite

Opera is a small, fast, customizable, powerful and user-friendly web
browser, as well as an Internet suite, including an email client, an IRC
client, web developer tools (Opera Dragonfly), and a personal web server
(Opera Unite).
Opera Next is a line of bleeding-edge releases of Opera, including alpha
and beta versions in addition to final releases.

This script installs Opera Next 12.00 build 1033 for Linux on i386.

Copyright (c) 1995-2011 Opera Software ASA. All rights reserved."
}

usage()
{
	version
	cat <<EOF

Options:

    --text          Select plain-text user interface.

    --unattended    Ask no questions. Implies --text.
                    The --prefix option becomes mandatory.

    --quiet         Ask no questions and don't show progress.
                    Implies --text.

    --prefix /P     Specify installation directory. Opera will be
                    installed into /P/bin, /P/share and /P/lib.

    --user          Install for the current user. Default for non-root.
                    Alias for --prefix $HOME/.local.

    --system        Install for everybody. Default for root.
                    Alias for --prefix /usr/local.

    --name N        Use N for package name. Must either be "opera" or
                    begin with "opera-". Names of installed files and
                    directories will contain this string in place of
                    "opera". This allows to install several
                    versions of Opera side by side. The default is
                    "opera-next".

    --suffix S      Obsolete. Same as --name opera-S.

    --force         Ignore all kinds of errors and try to continue.

    --repackage R   Special mode for package maintainers. Extract files
                    into the staging directory R as if it were the
                    installation prefix, but prepare them to be
                    installed under the actual prefix. In this mode, no
                    finalizing actions, such as registration of menu
                    entries, are performed. Sanity checks are disabled.
                    Implies --unattended.

    --version       Show Opera version.

    --help          Show this message.
EOF
}

check_os()
{
	local name version arch res msg
	res=false
	name=$(uname -s)
	case "$name" in
		Linux)
			res=true
			;;
		*BSD)
			;;
	esac
	arch=$(uname -m)
	case "$arch" in
		i?86|i86pc)
			arch=i386
			;;
		amd64)
			arch=x86_64
			;;
	esac
	if [ "$arch" != i386 ]
	then
		res=false
	fi
	if ! $res
	then
		msg="You are running $name on $arch, but this package is intended for Linux on i386. If you choose to install it, the product may not work correctly."
		if $interactive
		then
			ui_warn "$msg"
		else
			ui_error "$msg"
		fi
	fi
}


install_file()
{
	local source dest existing tomake
	if [ -f $tempdir/damaged ] && ! $force
	then
		return 1
	fi
	source=$(use_suffix '-next' "$3")
	dest=$INTO/$(use_suffix "$SUFFIX" "$3")
	existing=$dest
	tomake=''
	while [ -n "$existing" -a ! -e "$existing" ]
	do
		tomake=$existing
		existing=${existing%/*}
	done
	if [ ! -d "$existing" -o "$dest" = "$existing" ]
	then
		if { rm -rf "$existing~" && mv "$existing" "$existing~"; } 2>$tempdir/error || $force
		then
			echo "mv '$existing~' '$existing'" >>$tempdir/rollback
			echo "rm -rf '$existing~'" >>$tempdir/commit
		else
			ui_error "Cannot make a backup copy of $existing -- see detailed error message below." $tempdir/error
			echo "$dest">>$tempdir/damaged
			return 1
		fi
	elif [ -n "$tomake" -a "$tomake" != "$dest" ]
	then
		if mkdir -p "${dest%/*}" 2>$tempdir/error || $force
		then
			echo "rm -rf '$tomake'" >>$tempdir/rollback
		else
			ui_error "Cannot create directory ${dest%/*} -- see detailed error message below." $tempdir/error
			echo "$dest">>$tempdir/damaged
			return 1
		fi
	fi
	case "$1" in
		N?)
			cp "$source" "$dest"
			;;
		L?)
			source=$(use_suffix "$SUFFIX" "$2")
			ln -s "$source" "$dest"
			;;
		P?)
			case "$dest" in
				*.gz)
					gzip -dc "$source" | process >"${dest%.gz}" && gzip -9 "${dest%.gz}"
					;;
				*)
					process <"$source" >"$dest"
					;;
			esac
			;;
		G?)
			generate_file "${source##*/}" | process >"$dest"
			;;
	esac 2>$tempdir/error || $force || {
		ui_error "Cannot install $dest -- see detailed error message below." $tempdir/error
		echo "$dest">>$tempdir/damaged
		return 1
	}
	case "$1" in
		?F)
			chmod 0644 "$dest"
			;;
		?X)
			chmod 0755 "$dest"
			;;
	esac 2>$tempdir/error || $force || {
		ui_error "Cannot install $dest -- see detailed error message below." $tempdir/error
		echo "$dest">>$tempdir/damaged
		return 1
	}
	ui_progress_advance
}

generate_file()
{
	case "$1" in
		opera-next)
			cat <<'EOF_generate_file'
#!/bin/sh
export OPERA_DIR=${OPERA_DIR:-@@{PREFIX}/share/opera@@{SUFFIX}}
export OPERA_PERSONALDIR=${OPERA_PERSONALDIR:-$HOME/.opera@@{SUFFIX}}
exec @@{PREFIX}/lib/opera@@{SUFFIX}/opera@@{SUFFIX} "$@"
EOF_generate_file
			;;
		opera-next-widget-manager)
			cat <<'EOF_generate_file'
#!/bin/sh
exec @@{PREFIX}/bin/opera@@{SUFFIX} --widgetmanager "$@"
EOF_generate_file
			;;
		uninstall-opera-next)
			sed -ne '1,/EOF_COMMON/p' "${0##*/}"
			cat <<EOF
PREFIX='$PREFIX'
SUFFIX='$SUFFIX'
EOF
			cat <<'EOF_generate_file'

usage()
{
	version
	cat <<EOF

Options:
    --text          Select plaintext user interface
    --unattended    Ask no questions
    --quiet         Ask no questions and don't show progress (implies --text)
    --force         Ignore all kinds of errors and try to continue
    --help          Show this message
EOF
}

uninstall_file()
{
	if $upgrade_mode
	then
		mv "$PREFIX/$3" "$PREFIX/$3~"
		echo "mv '$PREFIX/$3~' '$PREFIX/$3'" >>$install_tempdir/rollback
		echo "rm -f '$PREFIX/$3~'; rmdir -p '$PREFIX/${3%/*}' 2>/dev/null" >>$install_tempdir/commit
	else
		rm -f "$PREFIX/$3"
		rmdir -p "$PREFIX/${3%/*}" 2>/dev/null
	fi
	ui_progress_advance
}

common_init
ui_init 'Uninstalling Opera Next'

upgrade_mode=false

while [ -n "$1" ]
do
	common_opt "$1" || case "$1" in
		--upgrade)
			shift
			upgrade_mode=true
			talk=false
			interactive=false
			driver=plain
			force=true
			install_tempdir="$1"
			;;
		*)
			driver=plain
			usage
			exit
			;;
	esac
	shift
done

if $talk
then
	msg="This script uninstalls Opera Next 12.00 build 1033 for Linux on i386 installed as $PREFIX/bin/opera$SUFFIX."
	if $interactive
	then
		ui_warn "$msg"
	else
		ui_message "$msg"
	fi
fi

if [ ! -w $PREFIX ] && ! $force
then
	ui_error "You do not have write permissions for $PREFIX. Perhaps you should be uninstalling as root?"
fi

ui_progress_begin "Removing files"
iterate uninstall_file
ui_progress_end

if ! $upgrade_mode
then
	if $talk
	then
		ui_info "Finalizing uninstallation..."
	fi
	finalize_desktop
fi

if $talk
then
	ui_message "Opera Next has been uninstalled successfully. However, users' profile directories, which are by default ~/.opera$SUFFIX, have been left intact. You might want to delete them manually."
fi
EOF_generate_file
			;;
		*)
			return 1
	esac
}

rollback()
{
	ui_progress_begin "Undoing installation"
	iterate rollback_file
	ui_progress_end
	if [ -f $tempdir/rollback ]
	then
		. $tempdir/rollback
	fi
}

rollback_file()
{
	local dest
	dest=$INTO/$(use_suffix "$SUFFIX" "$3")
	rm -f "$dest"
	while [ -n "$dest" ]
	do
		dest=${dest%/*}
		case "$dest" in
			$INTO/*/opera*)
				rmdir "$dest" 2>/dev/null || break
				;;
		esac
	done
	ui_progress_advance
}

verify_file()
{
	local md5 file
	md5="$2"
	file=$(use_suffix '-next' "$3")
	case "$1" in
		[GL]?)
			ui_progress_advance
			return
			;;
	esac
	if [ ! -f "$file" ]
	then
		make_tempdir
		echo "$file" >>$tempdir/damaged
	elif [ -n "$md5prog" ]
	then
		if [ $(get_md5 "$file") != "$md5" ]
		then
			make_tempdir
			echo "$file" >>$tempdir/damaged
		fi
	fi
	ui_progress_advance
}

get_md5()
{
	if [ "$md5prog" = md5 ]
	then
		md5 -q "$1"
	else
		md5sum "$1" | { read sum file; echo $sum; }
	fi
}

use_suffix()
{
	echo "$2" | sed -e "s:@@{SUFFIX}:$1:g"
}

process()
{
	sed -e "s:@@{PREFIX}:$PREFIX:g;s:@@{SUFFIX}:$SUFFIX:g;s:@@{_SUFFIX}:$_SUFFIX:g;s:@@{USUFFIX}:$USUFFIX:g"
}

PREFIX=''
INTO=''
orig_pwd=$PWD
suffix_set=false

cd "${0%/*}"

common_init
ui_init 'Installing Opera Next'

if available md5
then
	md5prog=md5
elif available md5sum
then
	md5prog=md5sum
else
	md5prog=''
fi

while [ -n "$1" ]
do
	common_opt "$1" || case "$1" in
		--user)
			PREFIX=$HOME/.local
			;;
		--system)
			PREFIX=/usr/local
			;;
		--prefix)
			shift
			PREFIX="$1"
			;;
		--name)
			shift
			case "$1" in
				opera|opera-*)
					SUFFIX=${1#opera}
					;;
				*)
					ui_error '--name string must either be "opera" or begin with "opera-".'
					;;
			esac
			suffix_set=true
			;;
		--suffix)
			shift
			if [ -n "$1" ]
			then
				SUFFIX="-$1"
			else
				SUFFIX=''
			fi
			suffix_set=true
			;;
		--repackage)
			shift
			INTO="$1"
			repackage=true
			interactive=false
			driver=plain
			case "$INTO" in
				'')
					ui_error "--repackage needs a non-empty argument."
					;;
				/*)
					;;
				*)
					INTO=$orig_pwd/$INTO
					;;
			esac
			;;
		--version)
			driver=plain
			version
			exit
			;;
		*)
			driver=plain
			usage
			exit
			;;
	esac
	shift
done

if $talk
then
	version
fi

if ! $interactive && [ -z "$PREFIX" ]
then
	ui_error "Please specify --prefix, --user or --system for unattended installation."
fi

if ! $force && ! $repackage
then
	check_os
fi

if [ $(id -u) -eq 0 ]
then
	prefix_who="running as root"
	prefix_for="for all users"
	prefix_default=/usr/local
else
	prefix_who="not running as root"
	prefix_for="just for yourself"
	prefix_default=$HOME/.local
fi

while true
do
	if [ -n "$PREFIX" ]
	then
		answer=$PREFIX
		bad_answer=ui_error
	elif $interactive
	then
		ui_input "Please choose an installation directory. Opera Next will be installed in bin, share and lib directories under the specified location.

Since you are $prefix_who, you probably want to install Opera Next $prefix_for. The recommended installation prefix in this case is $prefix_default.

Press Enter to accept the recommended location, or specify a different prefix." || exit
		if [ -z "$answer" ]
		then
			answer=$prefix_default
		fi
		bad_answer=ui_message
	else
		ui_warn "Since you are $prefix_who, assuming you want to install Opera Next $prefix_for. Using $prefix_default as the installation prefix."
		answer=$prefix_default
		bad_answer=ui_error
	fi
	case "$answer" in
		''|[!/]*)
			$bad_answer "The installation prefix must begin with a slash."
			continue
			;;
		*' '*)
			$bad_answer "The installation prefix is not allowed to contain whitespace."
			continue
			;;
	esac
	while [ $answer != / -a "${answer%/}" != $answer ]
	do
		answer=${answer%/}
	done
	if $repackage
	then
		PREFIX=$answer
		break
	fi
	prefix_parent=$answer
	while [ ! -e "$prefix_parent" ]
	do
		prefix_parent=${prefix_parent%/*}
		if [ -z "$prefix_parent" ]
		then
			prefix_parent=/
		fi
	done
	if [ -w $prefix_parent ]
	then
		PREFIX=$answer
		break
	elif [ -d $prefix_parent ]
	then
		$bad_answer "You do not have write permissions for $prefix_parent. Perhaps you should be installing as root?"
	else
		$bad_answer "$prefix_parent is not a directory."
	fi
done

if [ -z "$INTO" ]
then
	INTO=$PREFIX
fi

while true
do
	if $suffix_set
	then
		answer=opera$SUFFIX
		bad_answer=ui_error
	elif $interactive
	then
		ui_input "You can install Opera Next with an alternative package name, so that the installation does not conflict with other installations of Opera you might have. For example, if you specify opera-12.00 as the package name, Opera files will be installed under $PREFIX/share/opera-12.00 and $PREFIX/lib/opera-12.00, and you will have to run $PREFIX/bin/opera-12.00 to run it. The default location of your profile directory will then be ~/.opera-12.00. If you want that, please enter the desired package name below. The name must be either \"opera\" or begin with \"opera-\". Only Latin letters, digits, periods and dashes are allowed.

Pressing Enter to accept the default and install as \"opera-next\" is a safe choice." || exit
		bad_answer=ui_message
	else
		answer=''
	fi
	case "$answer" in
		'')
			SUFFIX='-next'
			_SUFFIX=' Next'
			USUFFIX='-NEXT'
			break
			;;
		opera-*[!-.A-Za-z0-9]*)
			$bad_answer "The package name is only allowed to contain Latin letters, digits, periods and dashes."
			;;
		opera-*)
			SUFFIX=${answer#opera}
			_SUFFIX=' '$(echo ${answer#opera-} | cut -c 1 | tr a-z A-Z)${answer#opera-?}
			USUFFIX=-$(echo ${answer#opera-} | tr a-z A-Z)
			break
			;;
		opera)
			SUFFIX=''
			_SUFFIX=''
			USUFFIX=''
			break
			;;
		*)
			$bad_answer "The package name must either be \"opera\" or begin with \"opera-\"."
			;;
	esac
done

if ! $repackage && [ -f "$INTO/share/opera$SUFFIX/package-id.ini" ]
then
	upgrade_product=$(sed -ne '/^Product=\(.*\)$/s//\1/p' "$INTO/share/opera$SUFFIX/package-id.ini")
	upgrade_version=$(sed -ne '/^Version=\(.*\)$/s//\1/p' "$INTO/share/opera$SUFFIX/package-id.ini")
	upgrade_build=$(sed -ne '/^Build=\(.*\)$/s//\1/p' "$INTO/share/opera$SUFFIX/package-id.ini")
	if [ -z "$upgrade_product" ]
	then
		upgrade_product=opera
	fi
	if [ "$upgrade_product" = opera ]
	then
		upgrade_title='Opera'
	else
		upgrade_title='Opera '$(echo ${upgrade_product#opera-} | cut -c 1 | tr a-z A-Z)${answer#?}
	fi
	if [ -n "$upgrade_version" -a -n "$upgrade_build" ]
	then
		if [ "$upgrade_product" = opera-next -a "$upgrade_version" = 12.00 -a "$upgrade_build" = 1033 ]
		then
			msg="The chosen location already contains an installation of $upgrade_title 12.00 build 1033. The installer will attempt to refresh it."
		elif [ "$upgrade_product" = opera-next ]
		then
			msg="The chosen location contains an installation of $upgrade_title $upgrade_version build $upgrade_build. The installer will attempt to upgrade it to version 12.00 build 1033."
		else
			msg="The chosen location contains an installation of $upgrade_title $upgrade_version build $upgrade_build. The installer will attempt to replace it with Opera Next version 12.00 build 1033."
		fi
		if $interactive
		then
			ui_warn "$msg"
		elif $talk
		then
			ui_message "$msg"
		fi
	fi
fi

ui_progress_begin "Verifying package"
iterate verify_file
ui_progress_end

if [ -n "$tempdir" -a -f $tempdir/damaged ] && ! $force
then
	ui_error "The following files are missing or damaged:" $tempdir/damaged
fi

if ! $force && ! $repackage
then
	need_rollback=true
fi

make_tempdir

if ! $repackage && [ -x "$PREFIX/bin/uninstall-opera$SUFFIX" ]
then
	if $talk
	then
		ui_info "Removing old files..."
	fi
	"$PREFIX/bin/uninstall-opera$SUFFIX" --upgrade $tempdir
fi

ui_progress_begin "Installing files"
iterate install_file
ui_progress_end

need_rollback=false

if ! $repackage
then
	if $talk
	then
		ui_info "Finalizing installation..."
	fi
	if [ -f $tempdir/commit ]
	then
		. $tempdir/commit
	fi
	if $talk && [ "$driver" = plain ]
	then
		finalize_desktop
	else
		finalize_desktop >/dev/null 2>&1
	fi
fi

if $talk
then
	if [ -n "$upgrade_version" -a -n "$upgrade_build" ]
	then
		done='upgraded'
	else
		done='installed'
	fi
	if $repackage
	then
		ui_message "Opera Next has been installed successfully under $INTO as if it were $PREFIX."
	else
		ui_message "Opera Next has been $done successfully. To start, run $PREFIX/bin/opera$SUFFIX (you might want to add this location to your PATH).

To manage installed Opera Widgets, run $PREFIX/bin/opera$SUFFIX-widget-manager.

To uninstall Opera Next, run $PREFIX/bin/uninstall-opera$SUFFIX."
	fi
fi
