| 
1
2
3
4
5
6
7
8
9
10
11
1213
14
15
16
17
18
19
2021
22
23
24
25
26
27
28
29
30
3132
33
34
35
36
3738
39
40
41
42
43
44
4546
47 | 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
 | 
-
-
+
+
-
+
-
+
-
+
-
+
-
+
 | 
// Map
if (Map.prototype.if (Map.prototype.grammalecte === undefined) {
    Map.prototype.gl_shallowCopy = function () {
        let oNewMap = new Map();
        for (let [key, val] of this.entries()) {
            oNewMap.set(key, val);
        }
        return oNewMap;
    }__grammalecte__=== undefined) {
    Map.prototype._shallowCopy = function () {    Map.prototype._get = function (key, defaultValue) {
Map.prototype.gl_get = function (key, defaultValue) {
        let res = this.get(key);
        if (res !== undefined) {
            return res;
        }
        return defaultValue;
    }    Map.prototype._toString = function () {
Map.prototype.gl_toString = function () {
        // Default .toString() gives nothing useful
        let sRes = "{ ";
        for (let [k, v] of this.entries()) {
            sRes += (typeof k === "string") ? '"' + k + '": ' : k.toString() + ": ";
            sRes += (typeof v === "string") ? '"' + v + '", ' : v.toString() + ", ";
        }
        sRes = sRes.slice(0, -2) + " }"
        return sRes;
    }    Map.prototype._update = function (dDict) {
Map.prototype.gl_update = function (dDict) {
        for (let [k, v] of dDict.entries()) {
            this.set(k, v);
        }
    }    Map.prototype._updateOnlyExistingKeys = function (dDict) {
Map.prototype.gl_updateOnlyExistingKeys = function (dDict) {
        for (let [k, v] of dDict.entries()) {
            if (this.has(k)){
                this.set(k, v);
            }
        }
    }    Map.prototype.Map.prototype.grammalecte = true;
}__grammalecte__= true; |