#include <iostream>
#include <string>
#include <vector>
#include <stack>
#include <map>
#include <cstring>
using namespace std;

bool cells[502][502];
int lft[502][502];

int main() {
    int H, W;
    while (cin >> H >> W, H) {
        char c;
        for (int i=1; i<=H; ++i) {
            for (int j=1; j<=W; ++j) {
                cin >> c;
                cells[i][j] = c == '*';
            }
        }
        memset(lft, 0, sizeof lft);
        for (int i=1; i<=H; ++i) {
            for (int j=1; j<=W; ++j) {
                lft[i][j] = (cells[i][j] ? 0 : lft[i][j-1] + 1);
            }
        }
        int ans = 0;
        for (int i=1; i<=W; ++i) {
            stack<pair<int,int>> st;
            for (int j=1; j<=H+1; ++j) {
                int t = -1;
                while ( ! st.empty() && lft[j][i] < st.top().first) {
                    ans = max(ans, st.top().first * (j - st.top().second));
                    t = st.top().second;
                    st.pop();
                }
                if (0 < t) {
                    st.push(make_pair(lft[j][i], t));
                } else {
                    st.push(make_pair(lft[j][i], j));
                }
            }
        }
        cout << ans << endl;
    }
    return 0;
}