@panneau/medias 3.0.212 → 3.0.214
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/es/index.js +55 -29
- package/lib/index.js +55 -29
- package/package.json +2 -2
package/es/index.js
CHANGED
@@ -384,6 +384,7 @@ var propTypes$7 = {
|
|
384
384
|
onSave: PropTypes.func,
|
385
385
|
onDelete: PropTypes.func,
|
386
386
|
onClose: PropTypes.func,
|
387
|
+
withDelete: PropTypes.bool,
|
387
388
|
withTrash: PropTypes.bool,
|
388
389
|
className: PropTypes.string,
|
389
390
|
children: PropTypes.node
|
@@ -395,6 +396,7 @@ var defaultProps$7 = {
|
|
395
396
|
onSave: null,
|
396
397
|
onDelete: null,
|
397
398
|
onClose: null,
|
399
|
+
withDelete: false,
|
398
400
|
withTrash: false,
|
399
401
|
className: null,
|
400
402
|
children: null
|
@@ -406,6 +408,7 @@ function MediaForm(_ref) {
|
|
406
408
|
onSave = _ref.onSave,
|
407
409
|
onDelete = _ref.onDelete,
|
408
410
|
onClose = _ref.onClose,
|
411
|
+
withDelete = _ref.withDelete,
|
409
412
|
withTrash = _ref.withTrash,
|
410
413
|
className = _ref.className,
|
411
414
|
children = _ref.children;
|
@@ -513,7 +516,7 @@ function MediaForm(_ref) {
|
|
513
516
|
className: "d-inline text-truncate mb-0"
|
514
517
|
}, name), /*#__PURE__*/React.createElement("span", {
|
515
518
|
className: "mx-2"
|
516
|
-
}, type)), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Button, {
|
519
|
+
}, type)), /*#__PURE__*/React.createElement("div", null, withDelete ? /*#__PURE__*/React.createElement(Button, {
|
517
520
|
className: "me-2 mb-1 mt-1",
|
518
521
|
theme: "danger",
|
519
522
|
icon: withTrash && deletedAt !== null ? 'trash-fill' : 'trash',
|
@@ -532,7 +535,7 @@ function MediaForm(_ref) {
|
|
532
535
|
"type": 0,
|
533
536
|
"value": "Delete"
|
534
537
|
}]
|
535
|
-
})), onSave !== null ? /*#__PURE__*/React.createElement(Button, {
|
538
|
+
})) : null, onSave !== null ? /*#__PURE__*/React.createElement(Button, {
|
536
539
|
className: "mb-1 mt-1",
|
537
540
|
theme: "primary",
|
538
541
|
icon: changed ? 'check' : 'check',
|
@@ -729,7 +732,7 @@ var defaultColumns = [{
|
|
729
732
|
"value": "Actions"
|
730
733
|
}]
|
731
734
|
}),
|
732
|
-
actions: ['edit'
|
735
|
+
actions: ['edit']
|
733
736
|
// component: ItemActions,
|
734
737
|
// label: 'Edit',
|
735
738
|
// url: '/edit/1',
|
@@ -841,6 +844,7 @@ var propTypes$5 = {
|
|
841
844
|
onSelectionChange: PropTypes.func,
|
842
845
|
multipleSelection: PropTypes.bool,
|
843
846
|
uppyConfig: PropTypes.shape({}),
|
847
|
+
withDelete: PropTypes.bool,
|
844
848
|
withTrash: PropTypes.bool,
|
845
849
|
withStickySelection: PropTypes.bool,
|
846
850
|
withoutUpload: PropTypes.bool,
|
@@ -879,6 +883,7 @@ var defaultProps$5 = {
|
|
879
883
|
onSelectionChange: null,
|
880
884
|
multipleSelection: false,
|
881
885
|
uppyConfig: null,
|
886
|
+
withDelete: false,
|
882
887
|
withTrash: false,
|
883
888
|
withStickySelection: false,
|
884
889
|
withoutUpload: false,
|
@@ -907,6 +912,7 @@ function MediasBrowser(_ref) {
|
|
907
912
|
onSelectionChange = _ref.onSelectionChange,
|
908
913
|
multipleSelection = _ref.multipleSelection,
|
909
914
|
uppyConfig = _ref.uppyConfig,
|
915
|
+
withDelete = _ref.withDelete,
|
910
916
|
withTrash = _ref.withTrash,
|
911
917
|
withStickySelection = _ref.withStickySelection,
|
912
918
|
withoutUpload = _ref.withoutUpload,
|
@@ -1030,8 +1036,28 @@ function MediasBrowser(_ref) {
|
|
1030
1036
|
}
|
1031
1037
|
}, [reload]);
|
1032
1038
|
var onTrashMedia = useCallback(function (id) {
|
1033
|
-
return !showTrashed && withTrash ? mediaTrash(id).then(
|
1034
|
-
|
1039
|
+
return !showTrashed && withTrash ? mediaTrash(id).then(function () {
|
1040
|
+
if (!multipleSelection) {
|
1041
|
+
var _ref4 = selectedItems || {},
|
1042
|
+
_ref4$id = _ref4.id,
|
1043
|
+
selectedId = _ref4$id === void 0 ? null : _ref4$id;
|
1044
|
+
if (selectedId !== null && selectedId === id) {
|
1045
|
+
onSelectionChange(null);
|
1046
|
+
}
|
1047
|
+
}
|
1048
|
+
// Todo remove from mult selection
|
1049
|
+
}).then(reload) : mediaDelete(id).then(function () {
|
1050
|
+
if (!multipleSelection) {
|
1051
|
+
var _ref5 = selectedItems || {},
|
1052
|
+
_ref5$id = _ref5.id,
|
1053
|
+
selectedId = _ref5$id === void 0 ? null : _ref5$id;
|
1054
|
+
if (selectedId !== null && selectedId === id) {
|
1055
|
+
onSelectionChange(null);
|
1056
|
+
}
|
1057
|
+
}
|
1058
|
+
// Todo remove from selection
|
1059
|
+
}).then(reload);
|
1060
|
+
}, [showTrashed, withTrash, mediaTrash, mediaDelete, reload, selectedItems, multipleSelection, onSelectionChange]);
|
1035
1061
|
var _useState7 = useState(null),
|
1036
1062
|
_useState8 = _slicedToArray(_useState7, 2),
|
1037
1063
|
uploadedMedias = _useState8[0],
|
@@ -1046,10 +1072,10 @@ function MediasBrowser(_ref) {
|
|
1046
1072
|
});
|
1047
1073
|
setUploadedMedias(uploadedNewMedias);
|
1048
1074
|
if (onSelectionChange !== null) {
|
1049
|
-
var
|
1050
|
-
|
1051
|
-
|
1052
|
-
firstMedia =
|
1075
|
+
var _ref6 = newMedias || [],
|
1076
|
+
_ref7 = _slicedToArray(_ref6, 1),
|
1077
|
+
_ref7$ = _ref7[0],
|
1078
|
+
firstMedia = _ref7$ === void 0 ? null : _ref7$;
|
1053
1079
|
onSelectionChange(multipleSelection && isArray(newMedias) ? newMedias : firstMedia);
|
1054
1080
|
onQueryReset();
|
1055
1081
|
reload();
|
@@ -1102,9 +1128,9 @@ function MediasBrowser(_ref) {
|
|
1102
1128
|
}]) : filters;
|
1103
1129
|
if (types !== null && partialFilters !== null) {
|
1104
1130
|
return (partialFilters || []).map(function (filter) {
|
1105
|
-
var
|
1106
|
-
|
1107
|
-
id =
|
1131
|
+
var _ref8 = filter || {},
|
1132
|
+
_ref8$id = _ref8.id,
|
1133
|
+
id = _ref8$id === void 0 ? null : _ref8$id;
|
1108
1134
|
return id === 'types' ? _objectSpread(_objectSpread({}, filter), {}, {
|
1109
1135
|
disabled: true
|
1110
1136
|
}) : filter;
|
@@ -1114,9 +1140,9 @@ function MediasBrowser(_ref) {
|
|
1114
1140
|
}, [filters, types, withTrash, showTrashed, onClickTrash]);
|
1115
1141
|
var finalColumns = useMemo(function () {
|
1116
1142
|
return withTrash && showTrashed ? (columns || []).map(function (column) {
|
1117
|
-
var
|
1118
|
-
|
1119
|
-
columnId =
|
1143
|
+
var _ref9 = column || {},
|
1144
|
+
_ref9$id = _ref9.id,
|
1145
|
+
columnId = _ref9$id === void 0 ? null : _ref9$id;
|
1120
1146
|
if (columnId === 'created_at') {
|
1121
1147
|
return _objectSpread(_objectSpread({}, column), {}, {
|
1122
1148
|
path: 'deleted_at',
|
@@ -1130,9 +1156,9 @@ function MediasBrowser(_ref) {
|
|
1130
1156
|
});
|
1131
1157
|
}
|
1132
1158
|
if (columnId === 'actions') {
|
1133
|
-
var
|
1134
|
-
|
1135
|
-
actions =
|
1159
|
+
var _ref10 = column || {},
|
1160
|
+
_ref10$actions = _ref10.actions,
|
1161
|
+
actions = _ref10$actions === void 0 ? [] : _ref10$actions;
|
1136
1162
|
return _objectSpread(_objectSpread({}, column), {}, {
|
1137
1163
|
actions: (actions || []).reduce(function (acc, action) {
|
1138
1164
|
if (action === 'delete') {
|
@@ -1167,9 +1193,9 @@ function MediasBrowser(_ref) {
|
|
1167
1193
|
var _item$id = item.id,
|
1168
1194
|
itemId = _item$id === void 0 ? null : _item$id;
|
1169
1195
|
return (allItems || []).find(function () {
|
1170
|
-
var
|
1171
|
-
|
1172
|
-
otherId =
|
1196
|
+
var _ref11 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
1197
|
+
_ref11$id = _ref11.id,
|
1198
|
+
otherId = _ref11$id === void 0 ? null : _ref11$id;
|
1173
1199
|
return otherId === itemId;
|
1174
1200
|
}) || item || null;
|
1175
1201
|
}).filter(function (it) {
|
@@ -1195,6 +1221,7 @@ function MediasBrowser(_ref) {
|
|
1195
1221
|
onSave: onSaveMedia,
|
1196
1222
|
onClose: onCloseMedia,
|
1197
1223
|
onDelete: onDeleteMedia,
|
1224
|
+
withDelete: withDelete,
|
1198
1225
|
withTrash: withTrash
|
1199
1226
|
}, formChildren) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
1200
1227
|
className: classNames(['d-flex', 'justify-content-between'])
|
@@ -1277,19 +1304,18 @@ function MediasBrowser(_ref) {
|
|
1277
1304
|
,
|
1278
1305
|
actionsProps: {
|
1279
1306
|
getDeletePropsFromItem: function getDeletePropsFromItem() {
|
1280
|
-
var
|
1281
|
-
|
1282
|
-
id =
|
1283
|
-
return
|
1307
|
+
var _ref12 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
1308
|
+
_ref12$id = _ref12.id,
|
1309
|
+
id = _ref12$id === void 0 ? null : _ref12$id;
|
1310
|
+
return {
|
1284
1311
|
href: null,
|
1285
|
-
withConfirmation:
|
1312
|
+
withConfirmation: false,
|
1286
1313
|
disabled: trashing || deleting,
|
1287
|
-
icon: showTrashed ? 'trash-fill' : 'trash'
|
1288
|
-
}, withTrash ? {
|
1314
|
+
icon: showTrashed ? 'trash-fill' : 'trash',
|
1289
1315
|
onClick: function onClick() {
|
1290
1316
|
return onTrashMedia(id);
|
1291
1317
|
}
|
1292
|
-
}
|
1318
|
+
};
|
1293
1319
|
},
|
1294
1320
|
getEditPropsFromItem: function getEditPropsFromItem(it) {
|
1295
1321
|
return {
|
package/lib/index.js
CHANGED
@@ -386,6 +386,7 @@ var propTypes$7 = {
|
|
386
386
|
onSave: PropTypes.func,
|
387
387
|
onDelete: PropTypes.func,
|
388
388
|
onClose: PropTypes.func,
|
389
|
+
withDelete: PropTypes.bool,
|
389
390
|
withTrash: PropTypes.bool,
|
390
391
|
className: PropTypes.string,
|
391
392
|
children: PropTypes.node
|
@@ -397,6 +398,7 @@ var defaultProps$7 = {
|
|
397
398
|
onSave: null,
|
398
399
|
onDelete: null,
|
399
400
|
onClose: null,
|
401
|
+
withDelete: false,
|
400
402
|
withTrash: false,
|
401
403
|
className: null,
|
402
404
|
children: null
|
@@ -408,6 +410,7 @@ function MediaForm(_ref) {
|
|
408
410
|
onSave = _ref.onSave,
|
409
411
|
onDelete = _ref.onDelete,
|
410
412
|
onClose = _ref.onClose,
|
413
|
+
withDelete = _ref.withDelete,
|
411
414
|
withTrash = _ref.withTrash,
|
412
415
|
className = _ref.className,
|
413
416
|
children = _ref.children;
|
@@ -515,7 +518,7 @@ function MediaForm(_ref) {
|
|
515
518
|
className: "d-inline text-truncate mb-0"
|
516
519
|
}, name), /*#__PURE__*/React.createElement("span", {
|
517
520
|
className: "mx-2"
|
518
|
-
}, type)), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Button, {
|
521
|
+
}, type)), /*#__PURE__*/React.createElement("div", null, withDelete ? /*#__PURE__*/React.createElement(Button, {
|
519
522
|
className: "me-2 mb-1 mt-1",
|
520
523
|
theme: "danger",
|
521
524
|
icon: withTrash && deletedAt !== null ? 'trash-fill' : 'trash',
|
@@ -534,7 +537,7 @@ function MediaForm(_ref) {
|
|
534
537
|
"type": 0,
|
535
538
|
"value": "Delete"
|
536
539
|
}]
|
537
|
-
})), onSave !== null ? /*#__PURE__*/React.createElement(Button, {
|
540
|
+
})) : null, onSave !== null ? /*#__PURE__*/React.createElement(Button, {
|
538
541
|
className: "mb-1 mt-1",
|
539
542
|
theme: "primary",
|
540
543
|
icon: changed ? 'check' : 'check',
|
@@ -731,7 +734,7 @@ var defaultColumns = [{
|
|
731
734
|
"value": "Actions"
|
732
735
|
}]
|
733
736
|
}),
|
734
|
-
actions: ['edit'
|
737
|
+
actions: ['edit']
|
735
738
|
// component: ItemActions,
|
736
739
|
// label: 'Edit',
|
737
740
|
// url: '/edit/1',
|
@@ -843,6 +846,7 @@ var propTypes$5 = {
|
|
843
846
|
onSelectionChange: PropTypes.func,
|
844
847
|
multipleSelection: PropTypes.bool,
|
845
848
|
uppyConfig: PropTypes.shape({}),
|
849
|
+
withDelete: PropTypes.bool,
|
846
850
|
withTrash: PropTypes.bool,
|
847
851
|
withStickySelection: PropTypes.bool,
|
848
852
|
withoutUpload: PropTypes.bool,
|
@@ -881,6 +885,7 @@ var defaultProps$5 = {
|
|
881
885
|
onSelectionChange: null,
|
882
886
|
multipleSelection: false,
|
883
887
|
uppyConfig: null,
|
888
|
+
withDelete: false,
|
884
889
|
withTrash: false,
|
885
890
|
withStickySelection: false,
|
886
891
|
withoutUpload: false,
|
@@ -909,6 +914,7 @@ function MediasBrowser(_ref) {
|
|
909
914
|
onSelectionChange = _ref.onSelectionChange,
|
910
915
|
multipleSelection = _ref.multipleSelection,
|
911
916
|
uppyConfig = _ref.uppyConfig,
|
917
|
+
withDelete = _ref.withDelete,
|
912
918
|
withTrash = _ref.withTrash,
|
913
919
|
withStickySelection = _ref.withStickySelection,
|
914
920
|
withoutUpload = _ref.withoutUpload,
|
@@ -1032,8 +1038,28 @@ function MediasBrowser(_ref) {
|
|
1032
1038
|
}
|
1033
1039
|
}, [reload]);
|
1034
1040
|
var onTrashMedia = React.useCallback(function (id) {
|
1035
|
-
return !showTrashed && withTrash ? mediaTrash(id).then(
|
1036
|
-
|
1041
|
+
return !showTrashed && withTrash ? mediaTrash(id).then(function () {
|
1042
|
+
if (!multipleSelection) {
|
1043
|
+
var _ref4 = selectedItems || {},
|
1044
|
+
_ref4$id = _ref4.id,
|
1045
|
+
selectedId = _ref4$id === void 0 ? null : _ref4$id;
|
1046
|
+
if (selectedId !== null && selectedId === id) {
|
1047
|
+
onSelectionChange(null);
|
1048
|
+
}
|
1049
|
+
}
|
1050
|
+
// Todo remove from mult selection
|
1051
|
+
}).then(reload) : mediaDelete(id).then(function () {
|
1052
|
+
if (!multipleSelection) {
|
1053
|
+
var _ref5 = selectedItems || {},
|
1054
|
+
_ref5$id = _ref5.id,
|
1055
|
+
selectedId = _ref5$id === void 0 ? null : _ref5$id;
|
1056
|
+
if (selectedId !== null && selectedId === id) {
|
1057
|
+
onSelectionChange(null);
|
1058
|
+
}
|
1059
|
+
}
|
1060
|
+
// Todo remove from selection
|
1061
|
+
}).then(reload);
|
1062
|
+
}, [showTrashed, withTrash, mediaTrash, mediaDelete, reload, selectedItems, multipleSelection, onSelectionChange]);
|
1037
1063
|
var _useState7 = React.useState(null),
|
1038
1064
|
_useState8 = _slicedToArray(_useState7, 2),
|
1039
1065
|
uploadedMedias = _useState8[0],
|
@@ -1048,10 +1074,10 @@ function MediasBrowser(_ref) {
|
|
1048
1074
|
});
|
1049
1075
|
setUploadedMedias(uploadedNewMedias);
|
1050
1076
|
if (onSelectionChange !== null) {
|
1051
|
-
var
|
1052
|
-
|
1053
|
-
|
1054
|
-
firstMedia =
|
1077
|
+
var _ref6 = newMedias || [],
|
1078
|
+
_ref7 = _slicedToArray(_ref6, 1),
|
1079
|
+
_ref7$ = _ref7[0],
|
1080
|
+
firstMedia = _ref7$ === void 0 ? null : _ref7$;
|
1055
1081
|
onSelectionChange(multipleSelection && isArray(newMedias) ? newMedias : firstMedia);
|
1056
1082
|
onQueryReset();
|
1057
1083
|
reload();
|
@@ -1104,9 +1130,9 @@ function MediasBrowser(_ref) {
|
|
1104
1130
|
}]) : filters;
|
1105
1131
|
if (types !== null && partialFilters !== null) {
|
1106
1132
|
return (partialFilters || []).map(function (filter) {
|
1107
|
-
var
|
1108
|
-
|
1109
|
-
id =
|
1133
|
+
var _ref8 = filter || {},
|
1134
|
+
_ref8$id = _ref8.id,
|
1135
|
+
id = _ref8$id === void 0 ? null : _ref8$id;
|
1110
1136
|
return id === 'types' ? _objectSpread(_objectSpread({}, filter), {}, {
|
1111
1137
|
disabled: true
|
1112
1138
|
}) : filter;
|
@@ -1116,9 +1142,9 @@ function MediasBrowser(_ref) {
|
|
1116
1142
|
}, [filters, types, withTrash, showTrashed, onClickTrash]);
|
1117
1143
|
var finalColumns = React.useMemo(function () {
|
1118
1144
|
return withTrash && showTrashed ? (columns || []).map(function (column) {
|
1119
|
-
var
|
1120
|
-
|
1121
|
-
columnId =
|
1145
|
+
var _ref9 = column || {},
|
1146
|
+
_ref9$id = _ref9.id,
|
1147
|
+
columnId = _ref9$id === void 0 ? null : _ref9$id;
|
1122
1148
|
if (columnId === 'created_at') {
|
1123
1149
|
return _objectSpread(_objectSpread({}, column), {}, {
|
1124
1150
|
path: 'deleted_at',
|
@@ -1132,9 +1158,9 @@ function MediasBrowser(_ref) {
|
|
1132
1158
|
});
|
1133
1159
|
}
|
1134
1160
|
if (columnId === 'actions') {
|
1135
|
-
var
|
1136
|
-
|
1137
|
-
actions =
|
1161
|
+
var _ref10 = column || {},
|
1162
|
+
_ref10$actions = _ref10.actions,
|
1163
|
+
actions = _ref10$actions === void 0 ? [] : _ref10$actions;
|
1138
1164
|
return _objectSpread(_objectSpread({}, column), {}, {
|
1139
1165
|
actions: (actions || []).reduce(function (acc, action) {
|
1140
1166
|
if (action === 'delete') {
|
@@ -1169,9 +1195,9 @@ function MediasBrowser(_ref) {
|
|
1169
1195
|
var _item$id = item.id,
|
1170
1196
|
itemId = _item$id === void 0 ? null : _item$id;
|
1171
1197
|
return (allItems || []).find(function () {
|
1172
|
-
var
|
1173
|
-
|
1174
|
-
otherId =
|
1198
|
+
var _ref11 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
1199
|
+
_ref11$id = _ref11.id,
|
1200
|
+
otherId = _ref11$id === void 0 ? null : _ref11$id;
|
1175
1201
|
return otherId === itemId;
|
1176
1202
|
}) || item || null;
|
1177
1203
|
}).filter(function (it) {
|
@@ -1197,6 +1223,7 @@ function MediasBrowser(_ref) {
|
|
1197
1223
|
onSave: onSaveMedia,
|
1198
1224
|
onClose: onCloseMedia,
|
1199
1225
|
onDelete: onDeleteMedia,
|
1226
|
+
withDelete: withDelete,
|
1200
1227
|
withTrash: withTrash
|
1201
1228
|
}, formChildren) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
1202
1229
|
className: classNames(['d-flex', 'justify-content-between'])
|
@@ -1279,19 +1306,18 @@ function MediasBrowser(_ref) {
|
|
1279
1306
|
,
|
1280
1307
|
actionsProps: {
|
1281
1308
|
getDeletePropsFromItem: function getDeletePropsFromItem() {
|
1282
|
-
var
|
1283
|
-
|
1284
|
-
id =
|
1285
|
-
return
|
1309
|
+
var _ref12 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
1310
|
+
_ref12$id = _ref12.id,
|
1311
|
+
id = _ref12$id === void 0 ? null : _ref12$id;
|
1312
|
+
return {
|
1286
1313
|
href: null,
|
1287
|
-
withConfirmation:
|
1314
|
+
withConfirmation: false,
|
1288
1315
|
disabled: trashing || deleting,
|
1289
|
-
icon: showTrashed ? 'trash-fill' : 'trash'
|
1290
|
-
}, withTrash ? {
|
1316
|
+
icon: showTrashed ? 'trash-fill' : 'trash',
|
1291
1317
|
onClick: function onClick() {
|
1292
1318
|
return onTrashMedia(id);
|
1293
1319
|
}
|
1294
|
-
}
|
1320
|
+
};
|
1295
1321
|
},
|
1296
1322
|
getEditPropsFromItem: function getEditPropsFromItem(it) {
|
1297
1323
|
return {
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@panneau/medias",
|
3
|
-
"version": "3.0.
|
3
|
+
"version": "3.0.214",
|
4
4
|
"description": "",
|
5
5
|
"keywords": [
|
6
6
|
"javascript"
|
@@ -69,5 +69,5 @@
|
|
69
69
|
"publishConfig": {
|
70
70
|
"access": "public"
|
71
71
|
},
|
72
|
-
"gitHead": "
|
72
|
+
"gitHead": "21739f0646ff12bf3fe03a70d69a4604d31e1e49"
|
73
73
|
}
|