diff --git a/src/controllers/api/v1/tickets.js b/src/controllers/api/v1/tickets.js
index 390e4cd99..6228bab75 100644
--- a/src/controllers/api/v1/tickets.js
+++ b/src/controllers/api/v1/tickets.js
@@ -677,7 +677,7 @@ api_tickets.postComment = function(req, res) {
marked.setOptions({
breaks: true
});
- // comment = comment.replace(/(\r\n|\n\r|\r|\n)/g, "
");
+
var Comment = {
owner: owner,
date: new Date(),
@@ -705,7 +705,7 @@ api_tickets.postComment = function(req, res) {
emitter.emit('ticket:comment:added', tt, Comment, req.headers.host);
return res.json({success: true, error: null, ticket: tt});
- });
+ })
});
});
};
diff --git a/src/controllers/tickets.js b/src/controllers/tickets.js
index 3667d958f..b57babd6e 100644
--- a/src/controllers/tickets.js
+++ b/src/controllers/tickets.js
@@ -510,56 +510,56 @@ function getPriorityName(val) {
}
//Move to API
-ticketsController.postcomment = function(req, res, next) {
- var Ticket = ticketSchema;
- var id = req.body.ticketId;
- var comment = req.body.commentReply;
- var User = req.user;
-
- //TODO: Error check fields
-
- Ticket.getTicketById(id, function(err, t) {
- if (err) return handleError(res, err);
- var marked = require('marked');
- comment = comment.replace(/(\r\n|\n\r|\r|\n)/g, "
");
- var Comment = {
- owner: User._id,
- date: new Date(),
- comment: marked(comment)
- };
- t.updated = Date.now();
- t.comments.push(Comment);
- var HistoryItem = {
- action: 'ticket:comment:added',
- description: 'Comment was added',
- owner: User._id
- };
- t.history.push(HistoryItem);
-
- async.series({
- subscribers: function(callback) {
- t.addSubscriber(User._id, function (err, _t) {
- if (err) return callback(err);
- emitter.emit('ticket:subscriber:update', {user: User._id, subscribe: true});
- callback();
- });
- },
- save: function (callback) {
- t.save(function (err, tt) {
- callback(err, tt);
- });
- }
- }, function(err, T) {
- if (err) return handleError(res, err);
-
- ticketSchema.populate(T.save, 'subscribers comments.owner', function() {
- emitter.emit('ticket:comment:added', T.save, Comment, req.headers.host);
-
- return res.send(T);
- });
- });
- });
-};
+// ticketsController.postcomment = function(req, res, next) {
+// var Ticket = ticketSchema;
+// var id = req.body.ticketId;
+// var comment = req.body.commentReply;
+// var User = req.user;
+//
+// //TODO: Error check fields
+//
+// Ticket.getTicketById(id, function(err, t) {
+// if (err) return handleError(res, err);
+// var marked = require('marked');
+// comment = comment.replace(/(\r\n|\n\r|\r|\n)/g, "
");
+// var Comment = {
+// owner: User._id,
+// date: new Date(),
+// comment: marked(comment)
+// };
+// t.updated = Date.now();
+// t.comments.push(Comment);
+// var HistoryItem = {
+// action: 'ticket:comment:added',
+// description: 'Comment was added123',
+// owner: User._id
+// };
+// t.history.push(HistoryItem);
+//
+// async.series({
+// subscribers: function(callback) {
+// t.addSubscriber(User._id, function (err, _t) {
+// if (err) return callback(err);
+// emitter.emit('ticket:subscriber:update', {user: User._id, subscribe: true});
+// callback();
+// });
+// },
+// save: function (callback) {
+// t.save(function (err, tt) {
+// callback(err, tt);
+// });
+// }
+// }, function(err, T) {
+// if (err) return handleError(res, err);
+//
+// ticketSchema.populate(T.save, 'subscribers comments.owner', function() {
+// emitter.emit('ticket:comment:added', T.save, Comment, req.headers.host);
+//
+// return res.send(T);
+// });
+// });
+// });
+// };
ticketsController.uploadAttachment = function(req, res) {
var fs = require('fs');
diff --git a/src/public/js/angularjs/controllers/tickets.js b/src/public/js/angularjs/controllers/tickets.js
index df8ffe48c..51220bd0c 100644
--- a/src/public/js/angularjs/controllers/tickets.js
+++ b/src/public/js/angularjs/controllers/tickets.js
@@ -54,8 +54,8 @@ define(['angular', 'underscore', 'jquery', 'modules/helpers', 'modules/socket',
//History.pushState(null, null, '/tickets/');
}).error(function(err) {
- $log.error('[trudesk:tickets:submitTicketForm] - ' + err.error.message);
- helpers.UI.showSnackbar({text: 'Error: ' + err.error.message, actionTextColor: '#B92929'});
+ $log.error('[trudesk:tickets:submitTicketForm] - ' + err.error.message);
+ helpers.UI.showSnackbar({text: 'Error: ' + err.error.message, actionTextColor: '#B92929'});
});
}
};
diff --git a/src/routes/index.js b/src/routes/index.js
index 8a6ea1112..0f057f8c4 100644
--- a/src/routes/index.js
+++ b/src/routes/index.js
@@ -67,7 +67,7 @@ function mainRoutes(router, middleware, controllers) {
router.get('/tickets/unassigned/page/:page', middleware.redirectToLogin, middleware.loadCommonData, controllers.tickets.getUnassigned, controllers.tickets.processor);
router.get('/tickets/print/:id', middleware.redirectToLogin, middleware.loadCommonData, controllers.tickets.print);
router.get('/tickets/:id', middleware.redirectToLogin, middleware.loadCommonData, controllers.tickets.single);
- router.post('/tickets/postcomment', middleware.redirectToLogin, controllers.tickets.postcomment);
+ // router.post('/tickets/postcomment', middleware.redirectToLogin, controllers.tickets.postcomment);
router.post('/tickets/uploadattachment', middleware.redirectToLogin, controllers.tickets.uploadAttachment);
//Messages
@@ -75,12 +75,6 @@ function mainRoutes(router, middleware, controllers) {
router.get('/messages/startconversation', middleware.redirectToLogin, middleware.loadCommonData, function(req, res, next){ req.showNewConvo = true; next();}, controllers.messages.get);
router.get('/messages/:convoid', middleware.redirectToLogin, middleware.loadCommonData, controllers.messages.getConversation);
- //Calendar
- // router.get('/calendar', middleware.redirectToLogin, middleware.loadCommonData, function(req, res){ res.redirect('/dashboard');});
-
- //Servers
- // router.get('/servers', middleware.redirectToLogin, middleware.loadCommonData, controllers.servers.get);
-
//Accounts
router.get('/profile', middleware.redirectToLogin, middleware.loadCommonData, controllers.accounts.profile);
router.get('/accounts', middleware.redirectToLogin, middleware.loadCommonData, controllers.accounts.get);
@@ -266,7 +260,6 @@ function mainRoutes(router, middleware, controllers) {
res.send('OK');
});
- router.get('/debug/devices/testiOS', middleware.api, controllers.api.devices.testApn);
router.get('/debug/restart', function (req, res) {
var pm2 = require('pm2');
pm2.connect(function(err) {
@@ -290,10 +283,6 @@ function mainRoutes(router, middleware, controllers) {
}
module.exports = function(app, middleware) {
- //Docs
- app.use('/docs', express.static(path.join(__dirname, '../../', 'docs')));
- app.use('/apidocs', express.static(path.join(__dirname, '../../', 'apidocs')));
-
mainRoutes(router, middleware, controllers);
app.use('/', router);
diff --git a/src/socketserver.js b/src/socketserver.js
index 2cf8a7e3c..0fb9cac4a 100644
--- a/src/socketserver.js
+++ b/src/socketserver.js
@@ -450,10 +450,7 @@ var socketServer = function(ws) {
ticket.save(function(err, tt) {
if (err) return winston.error(err);
- ticketSchema.populate(tt, 'comments.owner', function(err) {
- if (err) return winston.error(err);
- utils.sendToAllConnectedClients(io, 'updateComments', tt);
- });
+ utils.sendToAllConnectedClients(io, 'updateComments', tt);
});
});
});
@@ -476,10 +473,7 @@ var socketServer = function(ws) {
t.save(function(err, tt) {
if (err) return true;
- ticketSchema.populate(tt, 'comments.owner', function(err) {
- if (err) return true;
- utils.sendToAllConnectedClients(io, 'updateComments', tt);
- });
+ utils.sendToAllConnectedClients(io, 'updateComments', tt);
});
});
});
@@ -503,10 +497,7 @@ var socketServer = function(ws) {
ticket.save(function(err, tt) {
if (err) return winston.error(err);
- ticketSchema.populate(tt, 'notes.owner', function(err) {
- if (err) return winston.error(err);
- utils.sendToAllConnectedClients(io, 'updateComments', tt);
- });
+ utils.sendToAllConnectedClients(io, 'updateComments', tt);
});
});
});
@@ -528,11 +519,7 @@ var socketServer = function(ws) {
t.save(function(err, tt) {
if (err) return true;
- ticketSchema.populate(tt, 'notes.owner', function(err) {
- if (err) return true;
-
- utils.sendToAllConnectedClients(io, 'updateComments', tt);
- });
+ utils.sendToAllConnectedClients(io, 'updateComments', tt);
});
});
});
@@ -1248,8 +1235,8 @@ var socketServer = function(ws) {
};
function sortByKeys(obj) {
- const keys = Object.keys(obj);
- const sortedKeys = _.sortBy(keys);
+ var keys = Object.keys(obj);
+ var sortedKeys = _.sortBy(keys);
return _.fromPairs(
_.map(sortedKeys, function(key) { return [key, obj[key]]})
);
diff --git a/yarn.lock b/yarn.lock
index 9c5274252..eb96fec9f 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -91,13 +91,19 @@ acorn-globals@^3.0.0:
dependencies:
acorn "^4.0.4"
+acorn-jsx@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b"
+ dependencies:
+ acorn "^3.0.4"
+
acorn-jsx@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-4.1.1.tgz#e8e41e48ea2fe0c896740610ab6a4ffd8add225e"
dependencies:
acorn "^5.0.3"
-acorn@^3.1.0, acorn@~3.3.0:
+acorn@^3.0.4, acorn@^3.1.0, acorn@~3.3.0:
version "3.3.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
@@ -113,6 +119,10 @@ acorn@^5.0.3, acorn@^5.6.0:
version "5.7.1"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.1.tgz#f095829297706a7c9776958c0afc8930a9b9d9d8"
+acorn@^5.5.0:
+ version "5.7.2"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.2.tgz#91fa871883485d06708800318404e72bfb26dcc5"
+
after@0.8.2:
version "0.8.2"
resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f"
@@ -446,7 +456,7 @@ axios@^0.16.2:
follow-redirects "^1.2.3"
is-buffer "^1.1.5"
-babel-code-frame@^6.26.0:
+babel-code-frame@^6.22.0, babel-code-frame@^6.26.0:
version "6.26.0"
resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
dependencies:
@@ -1224,6 +1234,15 @@ concat-map@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+concat-stream@^1.6.0:
+ version "1.6.2"
+ resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
+ dependencies:
+ buffer-from "^1.0.0"
+ inherits "^2.0.3"
+ readable-stream "^2.2.2"
+ typedarray "^0.0.6"
+
config-chain@~1.1.5:
version "1.1.11"
resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.11.tgz#aba09747dfbe4c3e70e766a6e41586e1859fc6f2"
@@ -1768,7 +1787,7 @@ dive@0.5.0:
version "0.5.0"
resolved "https://registry.yarnpkg.com/dive/-/dive-0.5.0.tgz#06d0e07edd25da849598bacab44d51f2809bec47"
-doctrine@^2.1.0:
+doctrine@^2.0.2, doctrine@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d"
dependencies:
@@ -2141,6 +2160,13 @@ eslint-plugin-node@7.0.1:
resolve "^1.8.1"
semver "^5.5.0"
+eslint-scope@^3.7.1:
+ version "3.7.3"
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.3.tgz#bb507200d3d17f60247636160b4826284b108535"
+ dependencies:
+ esrecurse "^4.1.0"
+ estraverse "^4.1.1"
+
eslint-scope@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.0.tgz#50bf3071e9338bcdc43331794a0cb533f0136172"
@@ -2156,6 +2182,48 @@ eslint-visitor-keys@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d"
+eslint@4.14.0:
+ version "4.14.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.14.0.tgz#96609768d1dd23304faba2d94b7fefe5a5447a82"
+ dependencies:
+ ajv "^5.3.0"
+ babel-code-frame "^6.22.0"
+ chalk "^2.1.0"
+ concat-stream "^1.6.0"
+ cross-spawn "^5.1.0"
+ debug "^3.1.0"
+ doctrine "^2.0.2"
+ eslint-scope "^3.7.1"
+ eslint-visitor-keys "^1.0.0"
+ espree "^3.5.2"
+ esquery "^1.0.0"
+ esutils "^2.0.2"
+ file-entry-cache "^2.0.0"
+ functional-red-black-tree "^1.0.1"
+ glob "^7.1.2"
+ globals "^11.0.1"
+ ignore "^3.3.3"
+ imurmurhash "^0.1.4"
+ inquirer "^3.0.6"
+ is-resolvable "^1.0.0"
+ js-yaml "^3.9.1"
+ json-stable-stringify-without-jsonify "^1.0.1"
+ levn "^0.3.0"
+ lodash "^4.17.4"
+ minimatch "^3.0.2"
+ mkdirp "^0.5.1"
+ natural-compare "^1.4.0"
+ optionator "^0.8.2"
+ path-is-inside "^1.0.2"
+ pluralize "^7.0.0"
+ progress "^2.0.0"
+ require-uncached "^1.0.3"
+ semver "^5.3.0"
+ strip-ansi "^4.0.0"
+ strip-json-comments "~2.0.1"
+ table "^4.0.1"
+ text-table "~0.2.0"
+
eslint@5.4.0:
version "5.4.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.4.0.tgz#d068ec03006bb9e06b429dc85f7e46c1b69fac62"
@@ -2199,6 +2267,13 @@ eslint@5.4.0:
table "^4.0.3"
text-table "^0.2.0"
+espree@^3.5.2:
+ version "3.5.4"
+ resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7"
+ dependencies:
+ acorn "^5.5.0"
+ acorn-jsx "^3.0.0"
+
espree@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/espree/-/espree-4.0.0.tgz#253998f20a0f82db5d866385799d912a83a36634"
@@ -2218,7 +2293,7 @@ esprima@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804"
-esquery@^1.0.1:
+esquery@^1.0.0, esquery@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708"
dependencies:
@@ -2909,7 +2984,7 @@ global-prefix@^1.0.1:
is-windows "^1.0.1"
which "^1.2.14"
-globals@^11.7.0:
+globals@^11.0.1, globals@^11.7.0:
version "11.7.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-11.7.0.tgz#a583faa43055b1aca771914bf68258e2fc125673"
@@ -3400,6 +3475,10 @@ ignore-walk@^3.0.1:
dependencies:
minimatch "^3.0.4"
+ignore@^3.3.3:
+ version "3.3.10"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043"
+
ignore@^4.0.2:
version "4.0.6"
resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
@@ -3478,7 +3557,7 @@ ini@^1.3.0, ini@^1.3.4, ini@~1.3.0:
version "1.3.5"
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
-inquirer@^3.0.0:
+inquirer@^3.0.0, inquirer@^3.0.6:
version "3.3.0"
resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9"
dependencies:
@@ -3745,7 +3824,7 @@ is-regex@^1.0.3:
dependencies:
has "^1.0.1"
-is-resolvable@^1.1.0:
+is-resolvable@^1.0.0, is-resolvable@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88"
@@ -3882,7 +3961,7 @@ js-yaml@3.x, js-yaml@^3.5.3:
argparse "^1.0.7"
esprima "^4.0.0"
-js-yaml@^3.11.0:
+js-yaml@^3.11.0, js-yaml@^3.9.1:
version "3.12.0"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1"
dependencies:
@@ -4734,9 +4813,9 @@ mongoose-legacy-pluralize@1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz#3ba9f91fa507b5186d399fb40854bff18fb563e4"
-mongoose@5.2.8:
- version "5.2.8"
- resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-5.2.8.tgz#dd74ce0c4df803cb816c37ee1228d6663e2c2254"
+mongoose@5.2.6:
+ version "5.2.6"
+ resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-5.2.6.tgz#de75870b97330aeca9b6f2e3b67a7a6b13973b0f"
dependencies:
async "2.6.1"
bson "~1.0.5"
@@ -4746,22 +4825,22 @@ mongoose@5.2.8:
mongodb-core "3.1.0"
mongoose-legacy-pluralize "1.0.2"
mpath "0.4.1"
- mquery "3.1.2"
+ mquery "3.1.1"
ms "2.0.0"
regexp-clone "0.0.1"
- safe-buffer "5.1.2"
sliced "1.0.1"
mpath@0.4.1:
version "0.4.1"
- resolved "https://registry.yarnpkg.com/mpath/-/mpath-0.4.1.tgz#ed10388430380bf7bbb5be1391e5d6969cb08e89"
+ resolved "http://registry.npmjs.org/mpath/-/mpath-0.4.1.tgz#ed10388430380bf7bbb5be1391e5d6969cb08e89"
-mquery@3.1.2:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/mquery/-/mquery-3.1.2.tgz#46c2ea6d7a08c9b9e0716022fb2990708ddba9ff"
+mquery@3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/mquery/-/mquery-3.1.1.tgz#1c00eb206f2cabc6649789257eae08128e8dc3c3"
dependencies:
bluebird "3.5.1"
debug "3.1.0"
+ eslint "4.14.0"
regexp-clone "0.0.1"
sliced "1.0.1"
@@ -6196,7 +6275,7 @@ readable-stream@1.1.x:
isarray "0.0.1"
string_decoder "~0.10.x"
-readable-stream@2, readable-stream@^2.3.5:
+readable-stream@2, readable-stream@^2.2.2, readable-stream@^2.3.5:
version "2.3.6"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
dependencies:
@@ -6575,7 +6654,7 @@ safe-buffer@5.1.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, s
version "5.1.1"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
-safe-buffer@5.1.2, safe-buffer@^5.1.2:
+safe-buffer@^5.1.2:
version "5.1.2"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
@@ -7494,7 +7573,7 @@ symbol-observable@1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4"
-table@^4.0.3:
+table@^4.0.1, table@^4.0.3:
version "4.0.3"
resolved "https://registry.yarnpkg.com/table/-/table-4.0.3.tgz#00b5e2b602f1794b9acaf9ca908a76386a7813bc"
dependencies:
@@ -7559,7 +7638,7 @@ tempfile@^2.0.0:
temp-dir "^1.0.0"
uuid "^3.0.1"
-text-table@^0.2.0:
+text-table@^0.2.0, text-table@~0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
@@ -7742,6 +7821,10 @@ typechecker@~2.0.1:
version "2.0.8"
resolved "https://registry.yarnpkg.com/typechecker/-/typechecker-2.0.8.tgz#e83da84bb64c584ccb345838576c40b0337db82e"
+typedarray@^0.0.6:
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
+
uc.micro@^1.0.1:
version "1.0.5"
resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.5.tgz#0c65f15f815aa08b560a61ce8b4db7ffc3f45376"