@botfabrik/engine-webclient 4.0.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +169 -0
- package/dist/client/asset-manifest.json +22 -0
- package/dist/client/bot.png +0 -0
- package/dist/client/bot.svg +1 -0
- package/dist/client/custom.css +4 -0
- package/dist/client/favicon.ico +0 -0
- package/dist/client/index.html +1 -0
- package/dist/client/logo192.png +0 -0
- package/dist/client/logo512.png +0 -0
- package/dist/client/manifest.json +25 -0
- package/dist/client/play-button.png +0 -0
- package/dist/client/precache-manifest.18268e8ddbe40ae5d8e91a4a76774701.js +26 -0
- package/dist/client/robots.txt +3 -0
- package/dist/client/service-worker.js +39 -0
- package/dist/client/static/css/main.9f09e476.chunk.css +2 -0
- package/dist/client/static/css/main.9f09e476.chunk.css.map +1 -0
- package/dist/client/static/js/2.94d39000.chunk.js +3 -0
- package/dist/client/static/js/2.94d39000.chunk.js.LICENSE.txt +103 -0
- package/dist/client/static/js/2.94d39000.chunk.js.map +1 -0
- package/dist/client/static/js/main.1f8d6c7f.chunk.js +2 -0
- package/dist/client/static/js/main.1f8d6c7f.chunk.js.map +1 -0
- package/dist/client/static/js/runtime-main.f63e6028.js +2 -0
- package/dist/client/static/js/runtime-main.f63e6028.js.map +1 -0
- package/dist/client/visitor.png +0 -0
- package/dist/client/visitor.svg +1 -0
- package/dist/createSessionInfo.d.ts +5 -0
- package/dist/createSessionInfo.js +36 -0
- package/dist/createSessionInfo.js.map +1 -0
- package/dist/createSessionInfo.test.d.ts +1 -0
- package/dist/createSessionInfo.test.js +88 -0
- package/dist/createSessionInfo.test.js.map +1 -0
- package/dist/extractIP.d.ts +2 -0
- package/dist/extractIP.js +11 -0
- package/dist/extractIP.js.map +1 -0
- package/dist/extractIP.test.d.ts +1 -0
- package/dist/extractIP.test.js +38 -0
- package/dist/extractIP.test.js.map +1 -0
- package/dist/extractLocale.d.ts +2 -0
- package/dist/extractLocale.js +20 -0
- package/dist/extractLocale.js.map +1 -0
- package/dist/extractLocale.test.d.ts +1 -0
- package/dist/extractLocale.test.js +22 -0
- package/dist/extractLocale.test.js.map +1 -0
- package/dist/getSupportedClientLocale.d.ts +2 -0
- package/dist/getSupportedClientLocale.js +19 -0
- package/dist/getSupportedClientLocale.js.map +1 -0
- package/dist/getSupportedClientLocale.test.d.ts +1 -0
- package/dist/getSupportedClientLocale.test.js +20 -0
- package/dist/getSupportedClientLocale.test.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.js +105 -0
- package/dist/index.js.map +1 -0
- package/dist/index.test.d.ts +1 -0
- package/dist/index.test.js +16 -0
- package/dist/index.test.js.map +1 -0
- package/dist/loadPreviousConversation.d.ts +3 -0
- package/dist/loadPreviousConversation.js +27 -0
- package/dist/loadPreviousConversation.js.map +1 -0
- package/dist/middleware/index.d.ts +3 -0
- package/dist/middleware/index.js +32 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/requestSessionData.d.ts +10 -0
- package/dist/requestSessionData.js +40 -0
- package/dist/requestSessionData.js.map +1 -0
- package/dist/requestSessionData.test.d.ts +1 -0
- package/dist/requestSessionData.test.js +83 -0
- package/dist/requestSessionData.test.js.map +1 -0
- package/dist/speechToText.d.ts +7 -0
- package/dist/speechToText.js +46 -0
- package/dist/speechToText.js.map +1 -0
- package/dist/types.d.ts +7 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/views/index.d.ts +2 -0
- package/dist/views/index.js +102 -0
- package/dist/views/index.js.map +1 -0
- package/package.json +36 -0
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const requestSessionData_1 = require("./requestSessionData");
|
|
4
|
+
describe('request session id', () => {
|
|
5
|
+
beforeEach(() => {
|
|
6
|
+
jest.clearAllMocks();
|
|
7
|
+
});
|
|
8
|
+
const querystrings = {
|
|
9
|
+
sessionId: 'session-id',
|
|
10
|
+
accessToken: 'access-token',
|
|
11
|
+
};
|
|
12
|
+
it('when sessionId has been passed by query param but does not exists in db', async () => {
|
|
13
|
+
const findOne = jest.fn();
|
|
14
|
+
findOne.mockReturnValueOnce(undefined);
|
|
15
|
+
const sessionsCollection = {
|
|
16
|
+
findOne,
|
|
17
|
+
};
|
|
18
|
+
const { sessionId, isNew } = await requestSessionData_1.default(querystrings, sessionsCollection, 'test-bot', {});
|
|
19
|
+
expect(findOne).toHaveBeenCalledTimes(1);
|
|
20
|
+
expect(findOne).toHaveBeenCalledWith({ _id: 'session-id' }, { _id: 1, sessionInfo: 1 });
|
|
21
|
+
expect(sessionId).toBe('generated-uuid');
|
|
22
|
+
expect(isNew).toBe(true);
|
|
23
|
+
});
|
|
24
|
+
it('when sessionId has been passed by query param and exists in db', async () => {
|
|
25
|
+
const findOne = jest.fn();
|
|
26
|
+
findOne.mockReturnValueOnce({ _id: 'session-id' });
|
|
27
|
+
const sessionsCollection = {
|
|
28
|
+
findOne,
|
|
29
|
+
};
|
|
30
|
+
const { sessionId, isNew } = await requestSessionData_1.default(querystrings, sessionsCollection, 'test-bot', {});
|
|
31
|
+
expect(findOne).toHaveBeenCalledTimes(1);
|
|
32
|
+
expect(findOne).toHaveBeenCalledWith({ _id: 'session-id' }, { _id: 1, sessionInfo: 1 });
|
|
33
|
+
expect(sessionId).toBe('session-id');
|
|
34
|
+
expect(isNew).toBe(false);
|
|
35
|
+
});
|
|
36
|
+
it('when requestSessionRecordQuery has been passed as webclient property but no such session exists in db', async () => {
|
|
37
|
+
const findOne = jest.fn();
|
|
38
|
+
findOne.mockReturnValueOnce(undefined);
|
|
39
|
+
const sessionsCollection = {
|
|
40
|
+
findOne,
|
|
41
|
+
};
|
|
42
|
+
const requestSessionRecordQuery = jest.fn();
|
|
43
|
+
const props = {
|
|
44
|
+
requestSessionRecordQuery,
|
|
45
|
+
};
|
|
46
|
+
requestSessionRecordQuery.mockReturnValueOnce({ 'sessionInfo.user.id': 'hans@apptiva.ch' });
|
|
47
|
+
const { sessionId, isNew } = await requestSessionData_1.default(querystrings, sessionsCollection, 'test-bot', props);
|
|
48
|
+
expect(requestSessionRecordQuery).toHaveBeenCalledTimes(1);
|
|
49
|
+
expect(requestSessionRecordQuery).toHaveBeenCalledWith(querystrings);
|
|
50
|
+
expect(findOne).toHaveBeenCalledTimes(1);
|
|
51
|
+
expect(findOne).toHaveBeenCalledWith({
|
|
52
|
+
'sessionInfo.client.name': 'test-bot',
|
|
53
|
+
'sessionInfo.client.type': 'webclient',
|
|
54
|
+
'sessionInfo.user.id': 'hans@apptiva.ch',
|
|
55
|
+
}, { _id: 1, sessionInfo: 1 });
|
|
56
|
+
expect(sessionId).toBe('generated-uuid');
|
|
57
|
+
expect(isNew).toBe(true);
|
|
58
|
+
});
|
|
59
|
+
it('when requestSessionRecordQuery has been passed as webclient property and session exists in db', async () => {
|
|
60
|
+
const findOne = jest.fn();
|
|
61
|
+
findOne.mockReturnValueOnce({ _id: 'session-id' });
|
|
62
|
+
const sessionsCollection = {
|
|
63
|
+
findOne,
|
|
64
|
+
};
|
|
65
|
+
const requestSessionRecordQuery = jest.fn();
|
|
66
|
+
const props = {
|
|
67
|
+
requestSessionRecordQuery,
|
|
68
|
+
};
|
|
69
|
+
requestSessionRecordQuery.mockReturnValueOnce({ 'sessionInfo.user.id': 'hans@apptiva.ch' });
|
|
70
|
+
const { sessionId, isNew } = await requestSessionData_1.default(querystrings, sessionsCollection, 'test-bot', props);
|
|
71
|
+
expect(requestSessionRecordQuery).toHaveBeenCalledTimes(1);
|
|
72
|
+
expect(requestSessionRecordQuery).toHaveBeenCalledWith(querystrings);
|
|
73
|
+
expect(findOne).toHaveBeenCalledTimes(1);
|
|
74
|
+
expect(findOne).toHaveBeenCalledWith({
|
|
75
|
+
'sessionInfo.client.name': 'test-bot',
|
|
76
|
+
'sessionInfo.client.type': 'webclient',
|
|
77
|
+
'sessionInfo.user.id': 'hans@apptiva.ch',
|
|
78
|
+
}, { _id: 1, sessionInfo: 1 });
|
|
79
|
+
expect(sessionId).toBe('session-id');
|
|
80
|
+
expect(isNew).toBe(false);
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
//# sourceMappingURL=requestSessionData.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requestSessionData.test.js","sourceRoot":"","sources":["../src/requestSessionData.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const speech_1 = require("@google-cloud/speech");
|
|
4
|
+
const speechToText = (speechProps, locale, speechBytes) => {
|
|
5
|
+
return new Promise((resolve, reject) => {
|
|
6
|
+
const speechConfig = {
|
|
7
|
+
credentials: {
|
|
8
|
+
// eslint-disable-next-line @typescript-eslint/camelcase
|
|
9
|
+
private_key: speechProps.privateKey.replace(/\\n/g, '\n'),
|
|
10
|
+
// eslint-disable-next-line @typescript-eslint/camelcase
|
|
11
|
+
client_email: speechProps.clientEmail,
|
|
12
|
+
},
|
|
13
|
+
};
|
|
14
|
+
const client = new speech_1.SpeechClient(speechConfig);
|
|
15
|
+
// The audio file's encoding, sample rate in hertz, and BCP-47 language code
|
|
16
|
+
const audio = {
|
|
17
|
+
content: speechBytes,
|
|
18
|
+
};
|
|
19
|
+
const phrases = speechProps.contextPhrases && speechProps.contextPhrases[locale] ? speechProps.contextPhrases[locale] : [];
|
|
20
|
+
const config = {
|
|
21
|
+
encoding: 'LINEAR16',
|
|
22
|
+
sampleRateHertz: 16000,
|
|
23
|
+
languageCode: locale,
|
|
24
|
+
speechContexts: [
|
|
25
|
+
{
|
|
26
|
+
phrases,
|
|
27
|
+
},
|
|
28
|
+
],
|
|
29
|
+
};
|
|
30
|
+
const request = {
|
|
31
|
+
audio: audio,
|
|
32
|
+
config: config,
|
|
33
|
+
};
|
|
34
|
+
// Detects speech in the audio file
|
|
35
|
+
client
|
|
36
|
+
.recognize(request)
|
|
37
|
+
.then((data) => {
|
|
38
|
+
const response = data[0];
|
|
39
|
+
const transcription = response.results.map((result) => result.alternatives[0].transcript).join('\n');
|
|
40
|
+
resolve(transcription);
|
|
41
|
+
})
|
|
42
|
+
.catch(reject);
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
exports.default = speechToText;
|
|
46
|
+
//# sourceMappingURL=speechToText.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"speechToText.js","sourceRoot":"","sources":["../src/speechToText.ts"],"names":[],"mappings":";;AAAA,iDAAoD;AAQpD,MAAM,YAAY,GAAG,CAAC,WAA8B,EAAE,MAAc,EAAE,WAAW,EAAmB,EAAE;IAClG,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnC,MAAM,YAAY,GAAG;YACjB,WAAW,EAAE;gBACT,wDAAwD;gBACxD,WAAW,EAAE,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;gBACzD,wDAAwD;gBACxD,YAAY,EAAE,WAAW,CAAC,WAAW;aACxC;SACJ,CAAC;QAEF,MAAM,MAAM,GAAG,IAAI,qBAAY,CAAC,YAAY,CAAC,CAAC;QAE9C,4EAA4E;QAC5E,MAAM,KAAK,GAAG;YACV,OAAO,EAAE,WAAW;SACvB,CAAC;QACF,MAAM,OAAO,GACT,WAAW,CAAC,cAAc,IAAI,WAAW,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/G,MAAM,MAAM,GAAG;YACX,QAAQ,EAAE,UAAU;YACpB,eAAe,EAAE,KAAK;YACtB,YAAY,EAAE,MAAM;YACpB,cAAc,EAAE;gBACZ;oBACI,OAAO;iBACV;aACJ;SACJ,CAAC;QAEF,MAAM,OAAO,GAAG;YACZ,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,MAAM;SACV,CAAC;QAET,mCAAmC;QACnC,MAAM;aACD,SAAS,CAAC,OAAO,CAAC;aAClB,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;YACX,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACzB,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrG,OAAO,CAAC,aAAa,CAAC,CAAC;QAC3B,CAAC,CAAC;aACD,KAAK,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAEF,kBAAe,YAAY,CAAC"}
|
package/dist/types.d.ts
ADDED
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const index = (server, scriptUrl) => `<!DOCTYPE html>
|
|
4
|
+
<html lang="en">
|
|
5
|
+
<head>
|
|
6
|
+
<meta charset="UTF-8" />
|
|
7
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
8
|
+
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
|
|
9
|
+
<link href="https://fonts.googleapis.com/css?family=Open+Sans&display=swap" rel="stylesheet" />
|
|
10
|
+
<title>Botfabrik Chatbot-Webclient</title>
|
|
11
|
+
<style>
|
|
12
|
+
html {
|
|
13
|
+
font-family: 'Open Sans', sans-serif;
|
|
14
|
+
height: 100%;
|
|
15
|
+
}
|
|
16
|
+
body {
|
|
17
|
+
display: grid;
|
|
18
|
+
height: 100%;
|
|
19
|
+
grid-template-rows: auto 1fr;
|
|
20
|
+
margin: 0;
|
|
21
|
+
}
|
|
22
|
+
header {
|
|
23
|
+
color: white;
|
|
24
|
+
background-color: #1ba7e2;
|
|
25
|
+
padding: 3em 0;
|
|
26
|
+
}
|
|
27
|
+
main {
|
|
28
|
+
display: flex;
|
|
29
|
+
flex-direction: column;
|
|
30
|
+
padding: 4em 0;
|
|
31
|
+
min-width: 0; // needed for overflow on pre to work
|
|
32
|
+
}
|
|
33
|
+
a.button {
|
|
34
|
+
display: inline-block;
|
|
35
|
+
font-weight: bold;
|
|
36
|
+
color: #1ba7e2;
|
|
37
|
+
border: 2px solid #1ba7e2;
|
|
38
|
+
border-radius: 0.4em;
|
|
39
|
+
padding: 0.8em 1.6em;
|
|
40
|
+
margin: 1em 1em 0 0;
|
|
41
|
+
text-decoration: none;
|
|
42
|
+
white-space: nowrap;
|
|
43
|
+
}
|
|
44
|
+
pre {
|
|
45
|
+
padding: 1em;
|
|
46
|
+
border: 1px solid #aaa;
|
|
47
|
+
border-radius: 0.4em;
|
|
48
|
+
overflow-x: auto;
|
|
49
|
+
}
|
|
50
|
+
.container {
|
|
51
|
+
max-width: 1280px;
|
|
52
|
+
margin-left: auto;
|
|
53
|
+
margin-right: auto;
|
|
54
|
+
padding: 1.5em;
|
|
55
|
+
}
|
|
56
|
+
</style>
|
|
57
|
+
</head>
|
|
58
|
+
<body>
|
|
59
|
+
<header>
|
|
60
|
+
<div class="container">
|
|
61
|
+
<h1>Botfabrik Chatbot-Webclient</h1>
|
|
62
|
+
</div>
|
|
63
|
+
</header>
|
|
64
|
+
<main>
|
|
65
|
+
<section id="snippet-area" style="flex: 1 1 auto;">
|
|
66
|
+
<div class="container">
|
|
67
|
+
<h2>Chatbot einbinden</h2>
|
|
68
|
+
<h3>Snippet</h3>
|
|
69
|
+
<p>
|
|
70
|
+
Der Chatbot kann mit dem folgenden Snippet eingebettet werden. Am besten wird das Snippet zu
|
|
71
|
+
unterst im Body hinzugefügt.
|
|
72
|
+
</p>
|
|
73
|
+
<pre><code><script id="chatbot" data-server="${server}" defer src="${scriptUrl}"></script></code></pre>
|
|
74
|
+
|
|
75
|
+
<h3>Bookmarklet (nur zum Testen)</h3>
|
|
76
|
+
<p>Um die Integration schnell zu testen, kann das folgende Bookmarklet verwendet werden.</p>
|
|
77
|
+
<ol>
|
|
78
|
+
<li>
|
|
79
|
+
Bookmarklet zu den Browser-Favoriten hinzufügen.
|
|
80
|
+
</li>
|
|
81
|
+
<li>Die gewünschte Seite im Browser öffnen.</li>
|
|
82
|
+
<li>Bookmarklet in den Favoriten anklicken.</li>
|
|
83
|
+
</ol>
|
|
84
|
+
<a
|
|
85
|
+
id="bookmarklet"
|
|
86
|
+
href="javascript:(function (){var script=document.createElement('script');script.id='chatbot';script.src='${scriptUrl}';document.head.appendChild(script);}());"
|
|
87
|
+
>Chatbot Bookmarklet</a
|
|
88
|
+
>
|
|
89
|
+
</div>
|
|
90
|
+
</section>
|
|
91
|
+
<section>
|
|
92
|
+
<div class="container">
|
|
93
|
+
<a class="button" href="${server}">Vollbild Chatbot</a>
|
|
94
|
+
</div>
|
|
95
|
+
</section>
|
|
96
|
+
</main>
|
|
97
|
+
<script id="chatbot" data-server="${server}" defer src="${scriptUrl}"></script>
|
|
98
|
+
</body>
|
|
99
|
+
</html>
|
|
100
|
+
`;
|
|
101
|
+
exports.default = index;
|
|
102
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/views/index.ts"],"names":[],"mappings":";;AAAA,MAAM,KAAK,GAAG,CAAC,MAAc,EAAE,SAAiB,EAAU,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qFAsEwB,MAAM,0BAA0B,SAAS;;;;;;;;;;;;;oIAaM,SAAS;;;;;;;8CAO/F,MAAM;;;;4CAIR,MAAM,gBAAgB,SAAS;;;CAG1E,CAAC;AACF,kBAAe,KAAK,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@botfabrik/engine-webclient",
|
|
3
|
+
"version": "4.0.0-alpha.0",
|
|
4
|
+
"description": "Webclient for Botfabriks Bot Engine",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"build": "npm run clean && npm run build:client && npm run build:server && npm run copy:client",
|
|
9
|
+
"build:script-tag": "cd script-tag && npm run build && cd ..",
|
|
10
|
+
"build:client": "cd client && npm run build && cd ..",
|
|
11
|
+
"build:server": "tsc",
|
|
12
|
+
"copy:script-tag": "copyfiles -u 2 ./script-tag/dist/**/*.* ./dist/embed && copyfiles -u 2 ./script-tag/public/**/*.* ./dist/embed",
|
|
13
|
+
"copy:client": "copyfiles -u 2 ./client/build/**/*.* ./dist/client",
|
|
14
|
+
"clean": "rimraf ./dist",
|
|
15
|
+
"test": "jest --verbose",
|
|
16
|
+
"test:watch": "jest --watch",
|
|
17
|
+
"prepublishOnly": "npm run build"
|
|
18
|
+
},
|
|
19
|
+
"devDependencies": {
|
|
20
|
+
"@types/accept-language-parser": "^1.5.1",
|
|
21
|
+
"@types/express": "^4.17.6",
|
|
22
|
+
"@types/socket.io": "^2.1.6",
|
|
23
|
+
"copyfiles": "^2.2.0",
|
|
24
|
+
"rimraf": "^3.0.2",
|
|
25
|
+
"typescript": "^3.9.5"
|
|
26
|
+
},
|
|
27
|
+
"dependencies": {
|
|
28
|
+
"@botfabrik/botfabrik-utils": "^3.2.15",
|
|
29
|
+
"@botfabrik/engine-domain": "^4.0.0-alpha.0",
|
|
30
|
+
"@google-cloud/speech": "^3.6.0",
|
|
31
|
+
"accept-language-parser": "^1.5.0",
|
|
32
|
+
"express": "^4.17.1",
|
|
33
|
+
"uuid": "^8.1.0"
|
|
34
|
+
},
|
|
35
|
+
"gitHead": "c7c5dd361f197112b9063604c59aca4ec9b8bc28"
|
|
36
|
+
}
|