On 8/29/05, Geoff Stearns <[EMAIL PROTECTED]> wrote:
> url doesn't work for me either... got a working one?
> 
> Taggart, Damian wrote:
> > http://mm-en.com/damian/blog/src/autoUpdater.as
> >
> > -----Original Message-----
> > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
> > On Behalf Of Geoff Stearns
> > Sent: Monday, August 29, 2005 9:49 AM
> > To: Open Source Flash Mailing List
> > Subject: [osflash] decompiling the expressinstall updater
> >
> > has anyone taken a look at the express install updater swf in an
> > actionscript viewer or othwerwise decompiled it to see what makes it
> > tick?
> >
> > might be interesting to see how they trigger the upgrade proccess.
> >
> > http://fpdownload.macromedia.com/pub/flashplayer/update/current/swf/auto
> > Updater.swf
> >
> >
> > _______________________________________________
> > osflash mailing list
> > [email protected]
> > http://osflash.org/mailman/listinfo/osflash_osflash.org
> >
> > _______________________________________________
> > osflash mailing list
> > [email protected]
> > http://osflash.org/mailman/listinfo/osflash_osflash.org
> 
> _______________________________________________
> osflash mailing list
> [email protected]
> http://osflash.org/mailman/listinfo/osflash_osflash.org
>
Action Script Viewer 4.086
autoUpdater.swf

SWF version : 6
Compressed  : Yes
Width       : 215
Height      : 138
Frame rate  : 12
Frame count : 1
Background color   : #FFFFFF
Bounding rectangle : (0,0) (215,138)
Center             : (107.5,69)

----------------------------------------------------------------------
Frame 1
----------------------------------------------------------------------
    function initOldPlayerDialog() {
        if (DEBUG) {
            valueText.text = valueText.text + "\ninitOldPlayerDialog";
        }
        this.attachMovie("block", "blocker", 12000);
        blocker._width = 10000;
        blocker._height = 10000;
        blocker.useHandCursor = false;
        this.attachMovie("blockerText", "blockerText", 12001);
        this.blockerText.blockerTextObj.html = true;
        var localizedText_en = "Express Install is not supported by this 
version of the Flash Player. To upgrade, please visit:<BR><FONT 
COLOR=\'#0000FF\'><U><A 
HREF=\'http://www.macromedia.com/go/getflashplayer\'>Flash Player Download 
Center.</A></U></FONT>";
        var localizedText_de = "Eine Express-Installation wird von dieser Flash 
Player-Version nicht unterstützt. Für eine Aktualisierung besuchen Sie bitte 
das <BR><FONT COLOR=\'#0000FF\'><U><A 
HREF=\'http://www.macromedia.com/go/getflashplayer\'>Flash Player 
Download-Center.</A></U></FONT>";
        var localizedText_fr = "L\'installation expresse n\'est pas prise en 
charge par cette version de Flash Player. Pour procéder à la mise à niveau, 
consultez le <BR><FONT COLOR=\'#0000FF\'><U><A 
HREF=\'http://www.macromedia.com/go/getflashplayer\'>Centre de téléchargement 
de Macromedia Flash Player.</A></U></FONT>";
        var localizedText_es = "En esta versión de Flash Player no se admite la 
instalación rápida. Para obtener una actualización, visite el <BR><FONT 
COLOR=\'#0000FF\'><U><A 
HREF=\'http://www.macromedia.com/go/getflashplayer\'>Centro de descargas de 
Flash Player.</A></U></FONT>";
        var localizedText_it = "L\'installazione rapida non è supportata in 
questa versione di Flash Player. Per effettuare l\'aggiornamento, visitare il 
<BR><FONT COLOR=\'#0000FF\'><U><A 
HREF=\'http://www.macromedia.com/go/getflashplayer\'>Centro Download di Flash 
Player.</A></U></FONT>";
        var localizedText_jp = "???????? Flash Player 
??????????????????????????????????????????????????????<BR><FONT 
COLOR=\'#0000FF\'><U><A 
HREF=\'http://www.macromedia.com/go/getflashplayer_jp\'>Flash Player 
??????????</A></U></FONT>";
        var localizedText_ko = "? ??? Flash Player??? Express ??? ???? ????. 
???????? <BR><FONT COLOR=\'#0000FF\'><U><A 
HREF=\'http://www.macromedia.com/go/getflashplayer\'>Flash Player ???? 
??</A></U></FONT>? ??????.";
        var localizedText_cn = "??? Flash PLayer ????????????,??? <BR><FONT 
COLOR=\'#0000FF\'><U><A 
HREF=\'http://www.macromedia.com/go/getflashplayer\'>Flash Player 
?????</A></U></FONT>";
        var localizedText_tw = "?????????????? Flash Player???? <BR><FONT 
COLOR=\'#0000FF\'><U><A 
HREF=\'http://www.macromedia.com/go/getflashplayer\'>Flash Player 
?????</A></U></FONT>";
        var langText = eval ("localizedText_" + updateLang);
        this.blockerText.blockerTextObj.htmlText = langText;
        blocker.onPress = function () {
        };
    }
    function initUnsupportedDialog() {
        if (DEBUG) {
            valueText.text = valueText.text + "\ninitUnsupportedDialog";
        }
        this.attachMovie("block", "blocker", 12000);
        blocker._width = 10000;
        blocker._height = 10000;
        blocker.useHandCursor = false;
        this.attachMovie("blockerText", "blockerText", 12001);
        this.blockerText.blockerTextObj.html = true;
        var localizedText_en = "You are trying to install Macromedia Flash 
Player 8 on an unsupported operating system. For system requirements, please 
visit:<BR><FONT COLOR=\'#0000FF\'><U><A 
HREF=\'http://www.macromedia.com/software/flashplayer/productinfo/systemreqs/\'>Flash
 Player System Requirements.</A></U></FONT><BR><BR>For Flash Player 7, please 
visit:<BR><FONT COLOR=\'#0000FF\'><U><A 
HREF=\'http://www.macromedia.com/go/getflashplayer\'>Flash Player Download 
Center.</A></U></FONT>";
        var localizedText_de = "Sie versuchen gerade, Macromedia Flash Player 8 
auf einem nicht unterstützten Betriebssystem zu installieren. Die 
Systemvoraussetzungen finden Sie auf der Seite <BR><FONT 
COLOR=\'#0000FF\'><U><A 
HREF=\'http://www.macromedia.com/software/flashplayer/productinfo/systemreqs/\'>Flash
 Player-Systemvoraussetzungen.</A></U></FONT><BR><BR>Die Voraussetzungen für 
Flash Player 7 finden Sie auf der Seite <BR><FONT COLOR=\'#0000FF\'><U><A 
HREF=\'http://www.macromedia.com/go/getflashplayer_de\'>Flash Player 
Download-Center.</A></U></FONT>";
        var localizedText_fr = "Votre système d\'exploitation ne prend pas en 
charge Macromedia Flash Player 8. Pour prendre connaissance de la configuration 
requise, consultez la page<BR><FONT COLOR=\'#0000FF\'><U><A 
HREF=\'http://www.macromedia.com/software/flashplayer/productinfo/systemreqs/\'>Configuration
 système requise pour Flash Player.</A></U></FONT><BR><BR>Pour Flash Player 7, 
consultez la page<BR><FONT COLOR=\'#0000FF\'><U><A 
HREF=\'http://www.macromedia.com/go/getflashplayer\'>Centre de téléchargement 
de Macromedia Flash Player.</A></U></FONT>";
        var localizedText_es = "Está intentando instalar Macromedia Flash 
Player 8 en un sistema operativo no admitido. Para ver los requisitos del 
sistema, visite  <BR><FONT COLOR=\'#0000FF\'><U><A 
HREF=\'http://www.macromedia.com/software/flashplayer/productinfo/systemreqs/\'>Requisitos
 del sistema para Flash Player.</A></U></FONT><BR><BR>Para Flash Player 7, 
visite el <BR><FONT COLOR=\'#0000FF\'><U><A 
HREF=\'http://www.macromedia.com/go/getflashplayer\'>Centro de descargas de 
Flash Player.</A></U></FONT>";
        var localizedText_it = "Si sta tentando di installare Macromedia Flash 
Player 8 in un sistema operativo non supportato. Per conoscere i requisiti di 
sistema, consultare i <BR><FONT COLOR=\'#0000FF\'><U><A 
HREF=\'http://www.macromedia.com/software/flashplayer/productinfo/systemreqs/\'>Requisiti
 di sistema di Flash Player.</A></U></FONT><BR><BR>Per Flash Player 7, visitare 
il <BR><FONT COLOR=\'#0000FF\'><U><A 
HREF=\'http://www.macromedia.com/go/getflashplayer\'>Centro Download di 
Macromedia Flash Player.</A></U></FONT>";
        var localizedText_jp = "???????????????????????? Macromedia Flash 
Player 8 ?????????????????????????????????????????????<BR><FONT 
COLOR=\'#0000FF\'><U><A 
HREF=\'http://www.macromedia.com/jp/software/flashplayer/productinfo/systemreqs/\'>Flash
 Player ?????????</A></U></FONT><BR><BR>Flash Player 7 
????????????????????????<BR><FONT COLOR=\'#0000FF\'><U><A 
HREF=\'http://www.macromedia.com/go/getflashplayer_jp\'>Flash Player 
??????????</A></U></FONT>";
        var localizedText_ko = "?? ?? ?? ?? ????? Macromedia Flash Player 8? 
??? ???? ????. ??? ?? ??? ??? <BR><FONT COLOR=\'#0000FF\'><U><A 
HREF=\'http://www.macromedia.com/software/flashplayer/productinfo/systemreqs/\'>Flash
 Player ??? ?? ??</A></U></FONT>? ??????.<BR><BR>Flash Player 7? ?? ??? ??? 
???<BR><FONT COLOR=\'#0000FF\'><U><A 
HREF=\'http://www.macromedia.com/go/getflashplayer\'>Flash Player ???? 
??</A></U></FONT>? ??????.";
        var localizedText_cn = "???????????? Macromedia Flash Player 
8??????????,??? <BR><FONT COLOR=\'#0000FF\'><U><A 
HREF=\'http://www.macromedia.com/software/flashplayer/productinfo/systemreqs/\'>Flash
 Player ?????</A></U></FONT><BR><BR>?? Flash Player 7 ???,??? <BR><FONT 
COLOR=\'#0000FF\'><U><A 
HREF=\'http://www.macromedia.com/go/getflashplayer\'>Flash Player 
?????</A></U></FONT>";
        var localizedText_tw = "?????? Flash Player 8 ???? Flash Player 8 
?????????????????,??? <BR><FONT COLOR=\'#0000FF\'><U><A 
HREF=\'http://www.macromedia.com/software/flashplayer/productinfo/systemreqs/\'>Flash
 Player ?????</A></U></FONT><BR><BR>???? Flash Player 7 ??,??? <BR><FONT 
COLOR=\'#0000FF\'><U><A 
HREF=\'http://www.macromedia.com/go/getflashplayer\'>Flash Player 
?????</A></U></FONT>";
        var langText = eval ("localizedText_" + updateLang);
        this.blockerText.blockerTextObj.htmlText = langText;
        blocker.onPress = function () {
        };
    }
    function initCompletionDialog() {
        var i = 0;
        this.onEnterFrame = function () {
            if (i == 58) {
                this.attachMovie("block", "blocker", 12000);
                blocker._width = 10000;
                blocker._height = 10000;
                blocker.useHandCursor = false;
                this.attachMovie("blockerText", "blockerText", 12001);
                this.blockerText.blockerTextObj.html = true;
                var localizedText_en = "Please close this browser window to 
complete Flash Player installation.<BR><BR>If you are experiencing problems 
with installation please visit the <BR><FONT COLOR=\'#0000FF\'><U><A 
HREF=\'http://www.macromedia.com/support/flashplayer/\'>Macromedia Flash Player 
Support Center.</A></U></FONT>";
                var localizedText_de = "Schließen Sie dieses Browserfenster, um 
die Flash Player-Installation abzuschließen.<BR><BR>Falls Sie Probleme bei der 
Installation haben, besuchen Sie bitte das <BR><FONT COLOR=\'#0000FF\'><U><A 
HREF=\'http://www.macromedia.com/support/flashplayer/\'>Macromedia Flash Player 
Support Center.</A></U></FONT>";
                var localizedText_fr = "Pour terminer l’installation de Flash 
Player, vous devez fermer ce navigateur.<BR><BR>En cas de problèmes 
d’installation, visitez le <BR><FONT COLOR=\'#0000FF\'><U><A 
HREF=\'http://www.macromedia.com/support/flashplayer/\'>Centre d’assistance de 
Macromedia Flash Player.</A></U></FONT>";
                var localizedText_es = "Cierre esta ventana del navegador para 
completar la instalación de Flash Player.<BR><BR>Si tiene problemas con la 
instalación, visite el <BR><FONT COLOR=\'#0000FF\'><U><A 
HREF=\'http://www.macromedia.com/support/flashplayer/\'>Centro de soporte de 
Macromedia Flash Player.</A></U></FONT>";
                var localizedText_it = "Chiudere la finestra del browser per 
completare l\'installazione di Flash Player.<BR><BR>Se si riscontrano problemi 
durante l\'installazione, visitare il <BR><FONT COLOR=\'#0000FF\'><U><A 
HREF=\'http://www.macromedia.com/support/flashplayer/\'>Centro di supporto per 
Macromedia Flash Player.</A></U></FONT>";
                var localizedText_jp = "????????????????Flash Player 
?????????????????<BR><BR>???????????????????<BR><FONT COLOR=\'#0000FF\'><U><A 
HREF=\'http://www.macromedia.com/jp/support/flashplayer/\'>Macromedia Flash 
Player ????????</A></U></FONT>????????????";
                var localizedText_ko = "Flash Player ??? ????? ? ????? 
?????.<BR><BR>?? ? ??? ??? ?? <BR><FONT COLOR=\'#0000FF\'><U><A 
HREF=\'http://www.macromedia.com/support/flashplayer/\'>Macromedia Flash Player 
?? ??</A></U></FONT>? ??????.";
                var localizedText_cn = "???????????? Flash Player 
???<BR><BR>???????????,???<BR><FONT COLOR=\'#0000FF\'><U><A 
HREF=\'http://www.macromedia.com/support/flashplayer/\'>Macromedia Flash Player 
?????</A></U></FONT>";
                var localizedText_tw = "??????????? Flash 
Player????<BR><BR>???????????,??? <BR><FONT COLOR=\'#0000FF\'><U><A 
HREF=\'http://www.macromedia.com/support/flashplayer/\'>Macromedia Flash 
?????</A></U></FONT>";
                var langText = eval ("localizedText_" + updateLang);
                this.blockerText.blockerTextObj.htmlText = langText;
                blocker.onPress = function () {
                };
            }
            i++;
        };
    }
    function checkPlayer() {
        var _local2 = System.capabilities.os;
        if (DEBUG) {
            valueText.text = valueText.text + ("\nOS=" + _local2);
        }
        if (DEBUG) {
            valueText.text = valueText.text + ("  OSSub=" + 
_local2.substring(0, 5));
        }
        var _local5 = System.capabilities.version;
        var _local7 = _local5.split(",")[2];
        var _local3 = _local5.split(",")[0];
        var _local4 = _local3.substring(0, _local3.indexOf(" ")).toLowerCase();
        var _local1 = 0;
        if (_local4 == "MAC") {
            var _local6 = _local2.substr(7, 2);
            if (DEBUG) {
                valueText.text = valueText.text + (("\nMac VERSION=" + _local6) 
+ newline);
            }
            if (_local6 < 10) {
                if (DEBUG) {
                    valueText.text = valueText.text + "Mac OS Classic is 
Unsupported\n";
                }
                _local1 = kUnsupportedPlayer;
            }
        } else {
            if (_local2 == "Windows NT") {
                _local1 = kUnsupportedPlayer;
            }
            if (_local2 == "Windows 95") {
                _local1 = kUnsupportedPlayer;
            }
            if (((_local2.substring(0, 5) == "Linux") || (_local4 == "lnx")) || 
(_local4 == "lin")) {
                _local1 = kOldPlayer;
            }
            if (_local2.substring(0, 3) == "UNIX") {
                _local1 = kOldPlayer;
            }
         }
        _local3 = _local3.substr(_local3.indexOf(" ") + 1);
        var _local8 = 6;
        var _local9 = 65;
        if ((_local7 < _local9) && (_local3 <= _local8)) {
            _local1 = kOldPlayer;
        }
        return (_local1);
    }
    function checkServerVersion() {
        var _local10 = System.capabilities.version;
        var _local13 = _local10.split(",")[2];
        var _local11 = _local10.split(",")[0];
        var _local8 = _local11.substring(0, _local11.indexOf(" 
")).toLowerCase();
        if (DEBUG) {
            valueText.text = valueText.text + (("platform=" + _local8) + 
newline);
        }
        var _local4 = System.capabilities.playerType;
        if (_local4 == undefined) {
            _local4 = _root.MMplayerType;
        }
        if (DEBUG) {
            valueText.text = valueText.text + (("PLAYERTYPE=" + _local4) + 
newline);
        }
        if (DEBUG) {
            valueText.text = valueText.text + (("doctitle=" + MMdoctitle) + 
newline);
        }
        if ((_local4 == "External") || (_local4 == "StandAlone")) {
            return (undefined);
        }
        if (_local4 == "ActiveX") {
            pt = "ax";
        }
        if (_local4 == "PlugIn") {
            pt = "pl";
        }
        var _local12 = Math.random();
        var _local9 = 
(((((("http://fpdownload.macromedia.com/get/flashplayer/update/maelstrom/xml/version_";
 + updateLang) + "_") + _local8) + "_") + pt) + ".xml?") + _local12;
        if (DEBUG) {
            _local9 = 
(((((("http://lab1.macromedia.com/pub/flashplayer/update/current/xml/version_"; 
+ updateLang) + "_") + _local8) + "_") + pt) + ".xml?") + _local12;
        }
        if (DEBUG) {
            valueText.text = valueText.text + (("gVersionURL=" + _local9) + 
newline);
        }
        gXML = new XML ();
        gXML.ignoreWhite = true;
        gXML.onLoad = function (success) {
            if (success) {
                var _local4 = ClientVersion();
                var _local5 = ServerVersion(this);
                var _local2 = _local4.length;
                if ((_local2 != 4) || (_local2 != _local5.length)) {
                    return (undefined);
                }
                var _local3 = false;
                i = 0;
                while (i < _local2) {
                    if (_local5[i] > _local4[i]) {
                        _local3 = true;
                        break;
                    }
                    i++;
                }
                if (_local3 == true) {
                    startInstall();
                }
            } else {
                return (undefined);
             }
        };
        gXML.load(_local9);
    }
    function ClientVersion() {
        var _local1 = System.capabilities.version;
        if (DEBUG) {
            valueText.text = valueText.text + (("localVer=" + _local1) + 
newline);
        }
        _local1 = _local1.substring(_local1.indexOf(" ") + 1, _local1.length);
        return (VersionStrToArray(_local1));
    }
    function ServerVersion(rootNode) {
        var _local1 = rootNode.firstChild;
        _local1 = _local1.firstChild;
        while (_local1) {
            if (_local1.nodeName == "update") {
                if (DEBUG) {
                    valueText.text = valueText.text + (("remoteVer=" + 
_local1.attributes.version) + newline);
                }
                return (VersionStrToArray(_local1.attributes.version));
            }
            _local1 = _local1.nextSibling;
        }
        return (undefined);
    }
    function VersionStrToArray(v) {
        var _local2 = v.split(",");
        var _local3 = _local2.length;
        var _local1;
        if (_local3 != 4) {
            return (undefined);
        }
        _local1 = 0;
        while (_local1 < _local3) {
            _local2[_local1] = Number (_local2[_local1]);
            _local1++;
        }
        return (_local2);
    }
    function startInstall() {
        switch (checkPlayer()) {
            case kInstallOK : 
                if (gCanInstall) {
                    var redirectSO = SharedObject.getLocal("redirectSO", "/");
                    if (DEBUG) {
                        valueText.text = valueText.text + ("DOWNLOAD=fpUpdate_" 
+ pt);
                    }
                    installService = new System.Product("fpUpdate" + pt);
                    installService.onStatus = function (info) {
                        if (DEBUG) {
                            valueText.text = valueText.text + ((" code=" + 
info.code) + newline);
                        }
                        switch (info.code) {
                            case "Download.Complete" : 
                                redirectSO.data.url = redirectURL;
                                redirectSO.data.doctitle = MMdoctitle;
                                if (DEBUG) {
                                    valueText.text = valueText.text + (("SET 
redirectSO=" + redirectURL) + newline);
                                }
                                redirectSO.flush();
                                installService.launch();
                                initCompletionDialog();
                                _parent.installStatus("Download.Complete");
                                break;
                            case "Download.Cancelled" : 
                                redirectSO.data.url = eval("NULL");
                                redirectSO.data.doctitle = eval("NULL");
                                redirectSO.flush();
                                redirectSO.clear();
                                _parent.installStatus("Download.Cancelled");
                                if (DEBUG) {
                                    valueText.text = valueText.text + "Canceled 
- Shared Object Cleared!\n";
                                }
                                break;
                            case "Download.Failed" : 
                                redirectSO.data.url = eval("NULL");
                                redirectSO.data.doctitle = eval("NULL");
                                redirectSO.flush();
                                redirectSO.clear();
                                _parent.installStatus("Download.Failed");
                                if (DEBUG) {
                                    valueText.text = valueText.text + "Failed - 
Shared Object Cleared!\n";
                                }
                                break;
                        }
                    };
                    installService.download();
                }
                break;
            case kOldPlayer : 
                initOldPlayerDialog();
                break;
            case kUnsupportedPlayer : 
                initUnsupportedDialog();
                break;
        }
    }
    function startUpdate() {
        if (DEBUG) {
            valueText.text = valueText.text + ((newline + _url) + newline);
        }
        if (DEBUG) {
            valueText.text = valueText.text + (("REDIRECT=" + redirectURL) + 
newline);
        }
        checkServerVersion();
    }
    var DEBUG = false;
    if (DEBUG) {
        valueText.text = "Debug Mode!\n";
    }
    System.security.allowDomain(_parent._url);
    gCanInstall = false;
    kInstallOK = 0;
    kOldPlayer = 1;
    kUnsupportedPlayer = 2;
    pt = "";
    var language = System.capabilities.language;
    var updateLang = language;
    if (DEBUG) {
        valueText.text = valueText.text + (("Language=" + language) + newline);
    }
    if (language == "ja") {
        updateLang = "jp";
    }
    if (language == "zh-CN") {
        updateLang = "cn";
    }
    if (language == "zh-TW") {
        updateLang = "tw";
    }
    if (language == "en-US") {
        updateLang = "en";
    }
    if (language == "sv") {
        updateLang = "en";
    }
    if (language == "pt") {
        updateLang = "en";
    }
    if (language == "pl") {
        updateLang = "en";
    }
    if (language == "hu") {
        updateLang = "en";
    }
    if (language == "cs") {
        updateLang = "en";
    }
    if (language == "tr") {
        updateLang = "en";
    }
    if (language == "fi") {
        updateLang = "en";
    }
    if (language == "da") {
        updateLang = "en";
    }
    if (language == "no") {
        updateLang = "en";
    }
    if (language == "nl") {
        updateLang = "en";
    }
    if (language == "ru") {
        updateLang = "en";
    }
    if (language == "xu") {
        updateLang = "en";
    }
    switch (checkPlayer()) {
        case kInstallOK : 
            gCanInstall = true;
            break;
        case kOldPlayer : 
            initOldPlayerDialog();
            gCanInstall = false;
            break;
        case kUnsupportedPlayer : 
            initUnsupportedDialog();
            gCanInstall = false;
            break;
    }
    var redirectURL = "http://www.macromedia.com/software/flash/about/";;
    stop();



----------------------------------------------------------------------
Instance Names
----------------------------------------------------------------------
"valueText"     Frame 1 Symbol 7 EditableText
"blockerTextObj"        Symbol 6 MovieClip [blockerText] Frame 1        Symbol 
5 EditableText

----------------------------------------------------------------------
Library
----------------------------------------------------------------------
Symbol 1 Graphic                Used by:2       
Symbol 2 MovieClip      Uses:1  Used by:3       
Symbol 3 MovieClip [block]      Uses:2          
Symbol 4 Font           Used by:5 7     
Symbol 5 EditableText   Uses:4  Used by:6       
Symbol 6 MovieClip [blockerText]        Uses:5          
Symbol 7 EditableText   Uses:4  Used by:Timeline        

----------------------------------------------------------------------
Special Tags
----------------------------------------------------------------------
ExportAssets (56)       Timeline Frame 1        Symbol 3 as "block"
ExportAssets (56)       Timeline Frame 1        Symbol 6 as "blockerText"
_______________________________________________
osflash mailing list
[email protected]
http://osflash.org/mailman/listinfo/osflash_osflash.org

Reply via email to